From d6c4533944a42f5d9b6c648380afe0675da7c2fd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Sun, 21 May 2023 16:00:13 +0000 Subject: [PATCH 01/31] Layered font loading. --- .github/workflows/static.yml | 47 + .gitignore | 4 + CREDITS.md | 107 + LICENSE | 165 + README.md | 49 + conf/denoDeps.txt | 4 + conf/domain.txt | 1 + conf/sitemap.txt | 9 + data/bank/en.tsv | 60 + data/bank/gm.tsv | 129 + data/bank/gm2.tsv | 288 + data/bank/gmega.tsv | 169 + data/bank/gs.tsv | 1485 + data/bank/kross.tsv | 36 + data/bank/kross2_raw.tsv | 1153 + data/bank/ns5r.tsv | 1052 + data/bank/plg-100sg.tsv | 73 + data/bank/plg-150an.tsv | 237 + data/bank/plg-150dr.tsv | 161 + data/bank/plg-150dx.tsv | 913 + data/bank/plg-150pf.tsv | 204 + data/bank/plg-150vl.tsv | 393 + data/bank/s90es.tsv | 876 + data/bank/sg.tsv | 30 + data/bank/xg.tsv | 1242 + data/bitmaps/korg/element.tsv | 16 + data/bitmaps/korg/font.tsv | 103 + data/bitmaps/xg/animation.tsv | 49 + data/bitmaps/xg/font.tsv | 581 + data/bitmaps/xg/qyCh35.tsv | 11 + data/bitmaps/xg/qyCh55.tsv | 20 + data/bitmaps/xg/qyRsrc.tsv | 41 + data/bitmaps/xg/qySqr.tsv | 16 + data/bitmaps/xg/system.tsv | 36 + data/bitmaps/xg/voices.tsv | 248 + deno/esbuild/mod.js | 104399 +++++++++++++++ deno/std/http/file_server.js | 17169 +++ dist/README.md | 12 + dist/basic.mjs | 141 + dist/bridge.mjs | 1 + dist/cambiare.mjs | 156 + dist/state.mjs | 156 + dist/state_skim.mjs | 151 + dist/xp_basic.mjs | 156 + dist/xp_state.mjs | 156 + docs/README.md | 26 + docs/conf.json | 6 + docs/impl/efx.md | 57 + docs/impl/pn.md | 2 + docs/index.htm | 1 + docs/index.js | 1 + docs/parchment.css | 1 + docs/pico.css | 4 + docs/state/README.md | 35 + docs/support/compress.md | 20 + docs/support/implementation.md | 487 + docs/support/sysex.md | 73 + docs/support/target.md | 103 + docs/worker.js | 131 + ghp/CREDITS.md | 1 + ghp/README.md | 1 + ghp/dist | 1 + ghp/docs | 1 + ghp/index.htm | 1 + ghp/test | 1 + index.htm | 24 + .../browser_fs_access.min.js | 1 + libs/lightfelt@ltgcgo/ext/binMatch.js | 113 + libs/lightfelt@ltgcgo/ext/customEvents.js | 44 + libs/lightfelt@ltgcgo/ext/timedEvents.js | 187 + libs/lightfelt@ltgcgo/main/blobPlay.js | 8 + libs/lightfelt@ltgcgo/main/cssClass.js | 8 + libs/lightfelt@ltgcgo/main/quickPath.js | 13 + libs/midi-parser@colxi/main.min.js | 1 + libs/snowy@ltgcgo/bc.js | 1 + libs/snowy@ltgcgo/snowy.js | 1 + libs/water.css@kognise/water.min.css | 1 + sh/build.sh | 33 + sh/commit.sh | 3 + sh/denoServe | 4 + sh/denoTest.sh | 18 + sh/esbuild | 4 + sh/live.sh | 33 + sh/push.sh | 4 + sh/sitemap.sh | 8 + sh/srcMap.sh | 7 + sh/updateDeno.sh | 20 + sh/web.sh | 12 + shx | 20 + src/basic/index.mjs | 261 + src/basic/mxReader.js | 164 + src/basic/sheetLoad.js | 45 + src/basic/transform.js | 109 + src/bridge/index.mjs | 144 + src/cambiare/index.mjs | 156 + src/cambiare_wa/index.js | 304 + src/compat/buildOpt.txt | 1 + src/compat/inject.js | 81 + src/demoMw/index.js | 129 + src/demoTui/index.js | 242 + src/disp/colour.js | 46 + src/disp/common.js | 20 + src/disp/disp_mu.mjs | 434 + src/disp/disp_n5.mjs | 423 + src/disp/disp_psr.mjs | 469 + src/disp/disp_qy.mjs | 517 + src/disp/disp_sc.mjs | 327 + src/disp/disp_tui.mjs | 138 + src/disp/texted.js | 36 + src/fakeMu/index.js | 571 + src/fakeNs5r/index.js | 238 + src/fakePsr/index.js | 754 + src/fakeQy/index.js | 260 + src/fakeSc/index.js | 258 + src/state/.prefix.js | 1 + src/state/bankDecoder.js | 127 + src/state/bankReader.js | 534 + src/state/decoders.mjs | 22 + src/state/emitGlobal.js | 82 + src/state/gsValues.js | 152 + src/state/index.mjs | 3899 + src/state/index.old.mjs | 1719 + src/state/utils.js | 77 + src/state/xgValues.js | 315 + src/state_skim/index.mjs | 1411 + src/xp_basic/buildOpt.txt | 1 + src/xp_basic/index.mjs | 1 + src/xp_basic/inject.js | 1 + src/xp_demoMw/buildOpt.txt | 1 + src/xp_demoMw/index.js | 1 + src/xp_demoMw/inject.js | 1 + src/xp_demoTui/buildOpt.txt | 1 + src/xp_demoTui/index.js | 1 + src/xp_demoTui/inject.js | 1 + src/xp_fakeMu/buildOpt.txt | 1 + src/xp_fakeMu/index.js | 1 + src/xp_fakeMu/inject.js | 1 + src/xp_fakeNs5r/buildOpt.txt | 1 + src/xp_fakeNs5r/index.js | 1 + src/xp_fakeNs5r/inject.js | 1 + src/xp_fakePsr/buildOpt.txt | 1 + src/xp_fakePsr/index.js | 1 + src/xp_fakePsr/inject.js | 1 + src/xp_fakeQy/buildOpt.txt | 1 + src/xp_fakeQy/index.js | 1 + src/xp_fakeQy/inject.js | 1 + src/xp_fakeSc/buildOpt.txt | 1 + src/xp_fakeSc/index.js | 1 + src/xp_fakeSc/inject.js | 1 + src/xp_state/buildOpt.txt | 1 + src/xp_state/index.mjs | 1 + src/xp_state/inject.js | 1 + test/cambiare.htm | 43 + test/css/fonts.css | 18 + test/css/tui.css | 62 + test/css/water.min.css | 1 + test/data | 1 + test/fakeMu.htm | 51 + test/fakeNs5r.htm | 51 + test/fakePsr.htm | 64 + test/fakeQy.htm | 51 + test/fakeSc.htm | 51 + test/font/NotoSansMono-VF.woff2 | Bin 0 -> 572476 bytes test/font/arial.woff2 | Bin 0 -> 413420 bytes test/font/arialbd.woff2 | Bin 0 -> 393640 bytes test/img/previewMu.webp | Bin 0 -> 6878 bytes test/img/previewNs5r.webp | Bin 0 -> 3084 bytes test/img/previewPsr.webp | Bin 0 -> 17636 bytes test/img/previewQy.webp | Bin 0 -> 2494 bytes test/img/previewSc.webp | Bin 0 -> 5096 bytes test/index.htm | 55 + test/js/basic.mjs | 1 + test/js/bridge.mjs | 1 + test/js/cambiare.mjs | 1 + test/js/cambiare_wa.js | 1 + test/js/demoMw.js | 1 + test/js/demoTui.js | 1 + test/js/fakeMu.js | 1 + test/js/fakeNs5r.js | 1 + test/js/fakePsr.js | 1 + test/js/fakeQy.js | 1 + test/js/fakeSc.js | 1 + test/js/snowy.js | 1 + test/js/state.mjs | 1 + test/js/state_skim.mjs | 1 + test/js/xp_basic.mjs | 1 + test/js/xp_demoMw.js | 1 + test/js/xp_demoTui.js | 1 + test/js/xp_fakeMu.js | 1 + test/js/xp_fakeNs5r.js | 1 + test/js/xp_fakePsr.js | 1 + test/js/xp_fakeQy.js | 1 + test/js/xp_fakeSc.js | 1 + test/js/xp_state.mjs | 1 + test/middleware.htm | 92 + test/template.htm | 9 + test/tui.htm | 47 + test/winxp.htm | 56 + test/xp_fakeMu.htm | 99 + test/xp_fakeNs5r.htm | 99 + test/xp_fakePsr.htm | 112 + test/xp_fakeQy.htm | 99 + test/xp_fakeSc.htm | 99 + test/xp_middleware.htm | 93 + test/xp_tui.htm | 95 + utils/korg/kross2.pcg.js | 109 + utils/korg/ns5r.prg.js | 58 + utils/korg/x5d.prg.js | 52 + utils/others/altDescramble.js | 11 + utils/others/draftEfxId.tsv | 246 + utils/yamaha/data | 1 + utils/yamaha/epromEmu.js | 27 + utils/yamaha/s7eReader.js | 121 + utils/yamaha/xgSyxAddr.js | 65 + utils/yamaha/ydlSyx.js | 107 + 215 files changed, 150687 insertions(+) create mode 100644 .github/workflows/static.yml create mode 100644 .gitignore create mode 100644 CREDITS.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 conf/denoDeps.txt create mode 100644 conf/domain.txt create mode 100644 conf/sitemap.txt create mode 100644 data/bank/en.tsv create mode 100644 data/bank/gm.tsv create mode 100644 data/bank/gm2.tsv create mode 100644 data/bank/gmega.tsv create mode 100644 data/bank/gs.tsv create mode 100644 data/bank/kross.tsv create mode 100644 data/bank/kross2_raw.tsv create mode 100644 data/bank/ns5r.tsv create mode 100644 data/bank/plg-100sg.tsv create mode 100644 data/bank/plg-150an.tsv create mode 100644 data/bank/plg-150dr.tsv create mode 100644 data/bank/plg-150dx.tsv create mode 100644 data/bank/plg-150pf.tsv create mode 100644 data/bank/plg-150vl.tsv create mode 100644 data/bank/s90es.tsv create mode 100644 data/bank/sg.tsv create mode 100644 data/bank/xg.tsv create mode 100644 data/bitmaps/korg/element.tsv create mode 100644 data/bitmaps/korg/font.tsv create mode 100644 data/bitmaps/xg/animation.tsv create mode 100644 data/bitmaps/xg/font.tsv create mode 100644 data/bitmaps/xg/qyCh35.tsv create mode 100644 data/bitmaps/xg/qyCh55.tsv create mode 100644 data/bitmaps/xg/qyRsrc.tsv create mode 100644 data/bitmaps/xg/qySqr.tsv create mode 100644 data/bitmaps/xg/system.tsv create mode 100644 data/bitmaps/xg/voices.tsv create mode 100644 deno/esbuild/mod.js create mode 100644 deno/std/http/file_server.js create mode 100644 dist/README.md create mode 100644 dist/basic.mjs create mode 100644 dist/bridge.mjs create mode 100644 dist/cambiare.mjs create mode 100644 dist/state.mjs create mode 100644 dist/state_skim.mjs create mode 100644 dist/xp_basic.mjs create mode 100644 dist/xp_state.mjs create mode 100644 docs/README.md create mode 100644 docs/conf.json create mode 100644 docs/impl/efx.md create mode 100644 docs/impl/pn.md create mode 100644 docs/index.htm create mode 100644 docs/index.js create mode 100644 docs/parchment.css create mode 100644 docs/pico.css create mode 100644 docs/state/README.md create mode 100644 docs/support/compress.md create mode 100644 docs/support/implementation.md create mode 100644 docs/support/sysex.md create mode 100644 docs/support/target.md create mode 100644 docs/worker.js create mode 120000 ghp/CREDITS.md create mode 120000 ghp/README.md create mode 120000 ghp/dist create mode 120000 ghp/docs create mode 120000 ghp/index.htm create mode 120000 ghp/test create mode 100644 index.htm create mode 100644 libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js create mode 100644 libs/lightfelt@ltgcgo/ext/binMatch.js create mode 100644 libs/lightfelt@ltgcgo/ext/customEvents.js create mode 100644 libs/lightfelt@ltgcgo/ext/timedEvents.js create mode 100644 libs/lightfelt@ltgcgo/main/blobPlay.js create mode 100644 libs/lightfelt@ltgcgo/main/cssClass.js create mode 100644 libs/lightfelt@ltgcgo/main/quickPath.js create mode 100644 libs/midi-parser@colxi/main.min.js create mode 100644 libs/snowy@ltgcgo/bc.js create mode 100644 libs/snowy@ltgcgo/snowy.js create mode 100644 libs/water.css@kognise/water.min.css create mode 100644 sh/build.sh create mode 100644 sh/commit.sh create mode 100755 sh/denoServe create mode 100644 sh/denoTest.sh create mode 100755 sh/esbuild create mode 100644 sh/live.sh create mode 100644 sh/push.sh create mode 100644 sh/sitemap.sh create mode 100644 sh/srcMap.sh create mode 100644 sh/updateDeno.sh create mode 100644 sh/web.sh create mode 100755 shx create mode 100644 src/basic/index.mjs create mode 100644 src/basic/mxReader.js create mode 100644 src/basic/sheetLoad.js create mode 100644 src/basic/transform.js create mode 100644 src/bridge/index.mjs create mode 100644 src/cambiare/index.mjs create mode 100644 src/cambiare_wa/index.js create mode 100644 src/compat/buildOpt.txt create mode 100644 src/compat/inject.js create mode 100644 src/demoMw/index.js create mode 100644 src/demoTui/index.js create mode 100644 src/disp/colour.js create mode 100644 src/disp/common.js create mode 100644 src/disp/disp_mu.mjs create mode 100644 src/disp/disp_n5.mjs create mode 100644 src/disp/disp_psr.mjs create mode 100644 src/disp/disp_qy.mjs create mode 100644 src/disp/disp_sc.mjs create mode 100644 src/disp/disp_tui.mjs create mode 100644 src/disp/texted.js create mode 100644 src/fakeMu/index.js create mode 100644 src/fakeNs5r/index.js create mode 100644 src/fakePsr/index.js create mode 100644 src/fakeQy/index.js create mode 100644 src/fakeSc/index.js create mode 100644 src/state/.prefix.js create mode 100644 src/state/bankDecoder.js create mode 100644 src/state/bankReader.js create mode 100644 src/state/decoders.mjs create mode 100644 src/state/emitGlobal.js create mode 100644 src/state/gsValues.js create mode 100644 src/state/index.mjs create mode 100644 src/state/index.old.mjs create mode 100644 src/state/utils.js create mode 100644 src/state/xgValues.js create mode 100644 src/state_skim/index.mjs create mode 120000 src/xp_basic/buildOpt.txt create mode 120000 src/xp_basic/index.mjs create mode 120000 src/xp_basic/inject.js create mode 120000 src/xp_demoMw/buildOpt.txt create mode 120000 src/xp_demoMw/index.js create mode 120000 src/xp_demoMw/inject.js create mode 120000 src/xp_demoTui/buildOpt.txt create mode 120000 src/xp_demoTui/index.js create mode 120000 src/xp_demoTui/inject.js create mode 120000 src/xp_fakeMu/buildOpt.txt create mode 120000 src/xp_fakeMu/index.js create mode 120000 src/xp_fakeMu/inject.js create mode 120000 src/xp_fakeNs5r/buildOpt.txt create mode 120000 src/xp_fakeNs5r/index.js create mode 120000 src/xp_fakeNs5r/inject.js create mode 120000 src/xp_fakePsr/buildOpt.txt create mode 120000 src/xp_fakePsr/index.js create mode 120000 src/xp_fakePsr/inject.js create mode 120000 src/xp_fakeQy/buildOpt.txt create mode 120000 src/xp_fakeQy/index.js create mode 120000 src/xp_fakeQy/inject.js create mode 120000 src/xp_fakeSc/buildOpt.txt create mode 120000 src/xp_fakeSc/index.js create mode 120000 src/xp_fakeSc/inject.js create mode 120000 src/xp_state/buildOpt.txt create mode 120000 src/xp_state/index.mjs create mode 120000 src/xp_state/inject.js create mode 100644 test/cambiare.htm create mode 100644 test/css/fonts.css create mode 100644 test/css/tui.css create mode 120000 test/css/water.min.css create mode 120000 test/data create mode 100644 test/fakeMu.htm create mode 100644 test/fakeNs5r.htm create mode 100644 test/fakePsr.htm create mode 100644 test/fakeQy.htm create mode 100644 test/fakeSc.htm create mode 100644 test/font/NotoSansMono-VF.woff2 create mode 100644 test/font/arial.woff2 create mode 100644 test/font/arialbd.woff2 create mode 100644 test/img/previewMu.webp create mode 100644 test/img/previewNs5r.webp create mode 100644 test/img/previewPsr.webp create mode 100644 test/img/previewQy.webp create mode 100644 test/img/previewSc.webp create mode 100644 test/index.htm create mode 120000 test/js/basic.mjs create mode 120000 test/js/bridge.mjs create mode 120000 test/js/cambiare.mjs create mode 120000 test/js/cambiare_wa.js create mode 120000 test/js/demoMw.js create mode 120000 test/js/demoTui.js create mode 120000 test/js/fakeMu.js create mode 120000 test/js/fakeNs5r.js create mode 120000 test/js/fakePsr.js create mode 120000 test/js/fakeQy.js create mode 120000 test/js/fakeSc.js create mode 120000 test/js/snowy.js create mode 120000 test/js/state.mjs create mode 120000 test/js/state_skim.mjs create mode 120000 test/js/xp_basic.mjs create mode 120000 test/js/xp_demoMw.js create mode 120000 test/js/xp_demoTui.js create mode 120000 test/js/xp_fakeMu.js create mode 120000 test/js/xp_fakeNs5r.js create mode 120000 test/js/xp_fakePsr.js create mode 120000 test/js/xp_fakeQy.js create mode 120000 test/js/xp_fakeSc.js create mode 120000 test/js/xp_state.mjs create mode 100644 test/middleware.htm create mode 100644 test/template.htm create mode 100644 test/tui.htm create mode 100644 test/winxp.htm create mode 100644 test/xp_fakeMu.htm create mode 100644 test/xp_fakeNs5r.htm create mode 100644 test/xp_fakePsr.htm create mode 100644 test/xp_fakeQy.htm create mode 100644 test/xp_fakeSc.htm create mode 100644 test/xp_middleware.htm create mode 100644 test/xp_tui.htm create mode 100644 utils/korg/kross2.pcg.js create mode 100644 utils/korg/ns5r.prg.js create mode 100644 utils/korg/x5d.prg.js create mode 100644 utils/others/altDescramble.js create mode 100644 utils/others/draftEfxId.tsv create mode 120000 utils/yamaha/data create mode 100644 utils/yamaha/epromEmu.js create mode 100644 utils/yamaha/s7eReader.js create mode 100644 utils/yamaha/xgSyxAddr.js create mode 100644 utils/yamaha/ydlSyx.js diff --git a/.github/workflows/static.yml b/.github/workflows/static.yml new file mode 100644 index 00000000..eb6e4c08 --- /dev/null +++ b/.github/workflows/static.yml @@ -0,0 +1,47 @@ +# Simple workflow for deploying static content to GitHub Pages +name: Build and deploy to GitHub Pages + +on: + # Runs on pushes targeting the default branch + push: + branches: ["main"] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow one concurrent deployment +concurrency: + group: "pages" + cancel-in-progress: true + +jobs: + # Single deploy job since we're just deploying + deploy: + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Pages + uses: actions/configure-pages@v3 + - name: Setup Deno + uses: denoland/setup-deno@v1.1.1 + - name: Build Octavia files + run: "./shx build" + - name: Generate simple sitemap + run: "./shx sitemap" + - name: Upload bundled artifact + uses: actions/upload-pages-artifact@v1 + with: + path: 'ghp' + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v1 diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..0944ae62 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.map +*.swp +dist/*.js +ghp/sitemap.xml \ No newline at end of file diff --git a/CREDITS.md b/CREDITS.md new file mode 100644 index 00000000..4610f38f --- /dev/null +++ b/CREDITS.md @@ -0,0 +1,107 @@ +## Project Credits +Octavia will never become a reality without help from the following people. + +### Software Testers +* **AWE_asikwus** +* **dj.tuBIG/MaliceX** +* **Eastern_Digital** +* **GFHK-SDGM** +* **JayB** +* **MIDIMan** +* **MJG0117** +* **now_its_dark** +* **ValleyBell** +* **VideoJames** + +### Contributors +#### Code base +* **GFHK-SDGM** for the fake PSR screen. + +#### Implementation +* **JayB** +* **MJG0117** +* **AWE_asikwus** + +### Reference providers +* **JayB** (YAMAHA QY70, YAMAHA QY100, KORG NS5R, KORG X5DR) +* **DearHoney** (KORG 01/W, KORG 05R/W, KORG AG-10, KORG NS5R, KORG X5D, Roland SC-155, Roland SC-55 mk. II, Roland SC-88 Pro, YAMAHA MU100, YAMAHA MU1000) +* **DistWave** (YAMAHA MU80) +* ~~**Ham Seung-woo** (YAMAHA MU90)~~ +* **NiceChord** (YAMAHA MU80, Roland SC-55 mk. II) +* **now_its_dark** (MU2000) +* **Lupinzar** _DarkWolf, garoux.net_ (YAMAHA MU80, Roland SC-55 mk. II) +* **ValleyBell** (SC-88 VL) + +### Hardware Testers +* **JayB** (YAMAHA QY70, YAMAHA QY100, KORG NS5R, KORG X5DR) + +### Demo providers +* **DearHoney** +* **JayB** + +### Miscellaneous +* **Eastern_Digital** for suggesting a better cross-platform MIDI support. Without them, Octavia would've never been born. +* **GFHK-SDGM** for helping collecting bitmaps. +* **Ham Seung-woo** for providing videos with MegaMID (inspiration of Octavia's default GUI, and the upcoming Cambiare). +* **MIDIMan** for checking bitmaps against YAMAHA MU2000. +* **ValleyBell** for providing base map of PLG-150AN and PLG-150DX. +* ~~**Werner Ogrodnik** for [Studio For All](http://studio4all.de/htmle/frameset090.html).~~ +* **youngmonkey** for [MT-32 SysEx map](https://www.youngmonkey.ca/nose/audio_tech/synth/Roland-MT32.html). +* **アルゴ算法堂** for providing AKAI SG01k voice map. + +## Demo Credits +Octavia will now dynamically load additional demos if available. [See the credits here](https://github.com/ltgcgo/midi-demo-data/blob/main/collection/octavia/list.tsv)! + +| ID | Author | Title | Standard | Audio On | Audio By | Extra | +| -- | -------- | ------ | ----- | -------- | -------- | ----- | +| A | JayB | KANDI8 | XG | QY100 | JayB | | +| B | JayB | Straight to the Horizon | XG | QY100 | JayB | | +| C | Stephen Kay | Around the World | X5D | X5DR | DearHoney | | +| D | 堀越昭宏 | 2000 Fever | NS5R | NS5R | DearHoney | | +| E | John Lehmkuhl | MissionMan | NS5R | NS5R | DearHoney | | +| F | Sam Sketty | Ambient | XG | MU80 | NiceChord | | +| G | David J. Reading | Galactic Invasion | XG | S-YXG50 WDM | Lumière Élevé | | +| H | Sam Sketty | Low Down | XG | MU90 | DistWave | | +| I | John Campbell | Star Games | GS (SC-55) | SC-88 Pro | DearHoney | | +| J | David Yackley | One Stop | GM | FluidSynth, ColomboGMGS2 | Lumière Élevé | | +| K | 大田川恭子 (Team-khy) | Orchestra | GS | SC-88 Pro | DearHoney | | +| L | 大田川恭子 | Midnight Chaser | GS | SC-88 | Recorded by DearHoney | | +| M | Michael Z. Land | Monkey Island 2: LeChuck's Revenge: Introduction | MT-32 | MUNT | Lumière Élevé | | +| N | Idecs Music Software | Japanese | GS | SC-88 Pro | DearHoney | | +| O | Adrian Scott | Leya's Song | GS | SC-55 | DearHoney | | +| P | 久光浩 | 韋駄天 | GS | SC-88 | DearHoney | +| Q | David J. Reading | Cybergate | XG | QY70 | JayB | | +| R | KORG | Mad Robot | 05R/W | 05R/W | DearHoney | | +| S | KORG | Clasitario | AG-10 | AG-10 | DearHoney | | +| T | David J. Reading | Greg's Mantra | XG | QY70 | JayB | | +| U | KORG | The Far East | KROSS 2 | KROSS 2 | PianoManChuck | | +| V | KAWAI | 君がいるだけで | GMega | GMega | DearHoney | Might be replaced due to copyright concerns | +| W | KAWAI | Do-Re-Mi | GMega | GMega | DearHoney | Might be replaced due to copyright concerns | +| X | 松任谷由実, Yamaha | 春よ、来い | XG | MU2000, PLG-100SG | superdeadite | | +| Y | Unknown | VLjazzy | XG | MU1000, PLG-150VL | DearHoney | | +| Z | 大平勇 | A Phoenix to the 21st Century (Part A, Music Factory) | XG | MU1000 | DearHoney | | +| 0 | 大平勇 | A Phoenix to the 21st Century (Part B, Invitation) | XG | MU1000 | DearHoney | | +| 1 | Yamaha | Ninety Hipty | XG | MU90 | BEXY'S PC | ROM: JayB
Analyze: JayB & Lumière Élevé
Dump: Lumière Élevé
Fix: JayB
Software: ValleyBell | +| 2 | Clint Bajakian, Peter McConnel, Michael Z. Land | Day of the Tentacle: Introduction | MT-32 | MUNT | Lumière Élevé | | +| 3 | Idecs Music Software | The PF Theatre | XG | MU1000, PLG-150PF | DearHoney | | +| 4 | Idecs Music Software | The Secret Place | GS | SC-8850 | Romantique Tp | | +| 5 | 久光浩, 本郷久恵 | Space Flight | GS | SC-8850 | Romantique Tp | | +| 6 | 森尾隆 | Is It Really Love? | XG | MU2000 | KR. Palto47 | | +| 7 | JayB | Corgi | X5D & NS5R | X5DR & NS5R | JayB | | +| 8 | Yamaha | Out of the Muse | XG | MU80 | kora kuma | Dump: Lumière Élevé
Fix: JayB
Software: ValleyBell | +| 9 | Yamaha | It's an AmaZing MU World!! | XG | MU100 | DearHoney | Dump: Lumière Élevé
Fix: JayB
Software: ValleyBell | +| Α | Yamaha | The Musithm | XG | MU50 | Pixel Refresh | Dump: Lumière Élevé
Fix: JayB
Software: ValleyBell | +| Β | Clint Bajakian, Peter McConnel, Michael Z. Land | Day of the Tentacle: Epilogue | MT-32 | MUNT | Lumière Élevé | | +| Γ | 長栄克巳 | EP Ballade | XG | MU2000, PLG-150DX | AlcanTAK | | +| Δ | 向谷実 | The Soul of DX | XG | MU100, PLG-150DX | atamaitai kurakura | | +| Ε | Paul Lawley, Graham Lee, 小川恭範 | MU128 Demo | XG | MU128 | yanorei32 | Dump: Lumière Élevé
Fix: JayB
Software: ValleyBell | +| Ζ | 森尾隆 | Old Techno | XG | PLG-150AN | MasterJace | | +| Η | 森尾隆 | Rhythm&Blues | XG | PLG-150AN | MasterJace | | +| Θ | TôBach | MIDI Massacre | GS | Microsoft GS Wavetable | TôBach | | +| Ι | JayB | Dream of Light | XG | QY100 | JayB | _The original song is unfinished_ | +| Κ | Sam Sketty | Smokin' | XG | MU80 | DarkWolf | | +| Λ | Sam Sketty | Cop Out | XG | MU80 | DistWave | | +| Μ | Music Brains | Wah Guitar Demo | GS | SC-88 Pro | DearHoney | | +| Ν | Yamaha | QY70 Demo No. 3 | XG | QY70 | JayB | | +| Ξ | Yamaha | R&B/Pop | XG | QY100 | JayB | Official QY100 demo | +| Ο | 久石譲, POODLE Straight | 空から降ってきた少女 | GS | SC-88 VL | ValleyBell | Made for SC-55 mk. II | \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 00000000..0a041280 --- /dev/null +++ b/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + You may place library facilities that are a work based on the +Library side by side in a single library together with other library +facilities that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU Lesser General Public License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the +Library as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/README.md b/README.md new file mode 100644 index 00000000..d03a118b --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# Octavia +🎻 Event-driven multi-standard MIDI state-tracking library. Working with MIDI should be simple, while faithful and professional. + +Made with ❤️ by Lightingale Community. + +[![Maintainability](https://api.codeclimate.com/v1/badges/fa5aeaf4ba4c9b2d50e2/maintainability)](https://codeclimate.com/github/ltgcgo/octavia/maintainability) + +## Why Octavia over others? +* Free, libre and open-source, under GNU LGPL v3.0. +* Behaves like a real MIDI module, doing most of the heavy-lifting for you. +* Developed with Firefox and an open Web in mind. +* [Less than 20 kilobytes when compressed](docs/support/compress.md). +* Supports 8 ports, 128 channels, 512-voice polyphony maximum. More than you'll ever need. +* Built-in support of several standards, multiple plug-in cards, and tons of devices. +* Tells when MIDI programming errors are spotted, reducing chances of faulty programming. +* Available in JS (browser and Deno) and Rust (not yet). +* No modification required to run in Tor Browser, Bromite and LibreWolf. +* Wide support of bank mapping and bitmaps via [`midi-db`](https://github.com/ltgcgo/midi-db). + +## Support +Octavia offers support to a wide range of targets, most of them being either GM-compliant or having strong historical importance. Read the [support page](docs/support/target.md) for more information. + +To have a general idea of how MIDI is implemented, refer to the [MIDI Implementation Chart](docs/support/implementation.md) and [Supported SysEx instructions](docs/support/sysex.md). + +## Dev talks +We're now hosting a new place to handle development talks! If you don't have a GitHub account, or just prefer to report bugs or give suggestions in a more casual way, feel free to chat with us with links below! + +* Fediverse (Mastodon): [@lightingale@fosstodon.org](https://fosstodon.org/@lightingale) +* Telegram channel: [@ltgc_t](https://t.me/s/ltgc_t) +* Telegram group chat: [Click to join](https://t.me/+0I30mcOPTSQ0ZGIx) + +## Credits +Please read [CREDITS.md](CREDITS.md). + +## API & more +Please read the [documentation](docs/README.md). + +## Examples +Please check out the `/examples/` directory. + +## Contribute +You can help with Octavia's development, by doing any of the following, or more... +* Test Octavia, whether under production environment or not. +* Write anything utilizing Octavia's API. +* Report any bugs you find. +* Submit feature requests. +* Participate in programming (read the docs for further info). +* Reward the developers some donation. +* Spread the word about Octavia. \ No newline at end of file diff --git a/conf/denoDeps.txt b/conf/denoDeps.txt new file mode 100644 index 00000000..9ac901ee --- /dev/null +++ b/conf/denoDeps.txt @@ -0,0 +1,4 @@ +dir esbuild +esbuild/mod.js https://deno.land/x/esbuild/mod.js +dir std/http +std/http/file_server.js https://deno.land/std/http/file_server.ts diff --git a/conf/domain.txt b/conf/domain.txt new file mode 100644 index 00000000..8c96e7f8 --- /dev/null +++ b/conf/domain.txt @@ -0,0 +1 @@ +https://gh.ltgc.cc/octavia \ No newline at end of file diff --git a/conf/sitemap.txt b/conf/sitemap.txt new file mode 100644 index 00000000..b067ad29 --- /dev/null +++ b/conf/sitemap.txt @@ -0,0 +1,9 @@ +/index.htm +/test/index.htm +/test/tui.htm +/test/fakeMu.htm +/test/fakeSc.htm +/test/fakeNs5r.htm +/test/fakeQy.htm +/test/fakePsr.htm +/test/cambiare.htm diff --git a/data/bank/en.tsv b/data/bank/en.tsv new file mode 100644 index 00000000..042bbf39 --- /dev/null +++ b/data/bank/en.tsv @@ -0,0 +1,60 @@ +InstName DispName +60sElPno 60's Electric Piano +Balafone ~cp +BritPno Bright Piano +BrtPnoK Bright Piano K +Carillon ~cp +Celesta ~cp +Chor.EP1 Chorus Electric Piano 1 +Chor.EP2 Chorus Electric Piano 2 +ChrchBel Church Bell +Cimbalom ~cp +ClaviWah Clavichord Wah +ClvchrdK Clavichord K +Clvichrd Clavichord +Det.CP80 Detuned Yamaha CP-80 +Dream Dream +Dulcimer ~cp +Dulcmer2 Dulcimer 2 +DX Analg DX Analog +DX Hard ~cp +DX Kt EP DX Koto Electric Piano +DX Legnd DX Legend +DX Phase ~cp +EGndPnoK Electric Grand Piano K +EGrndPno Electric Grand Piano +ElPiano1 Electric Piano 1 +ElPiano2 Electric Piano 2 +EPiano1K Electric Piano 1 K +EPiano2K Electric Piano 2 K +Glocken ~cp +GrandPno Acoustic Grand Piano +GrndPnoK Acoustic Grand Piano K +HardEPno Hard Electric Piano +HardVibe Hard Vibraphone +HnkyTonk Honky Tonk +HnkyTnkK Honky Tonk K +HpschrdK Harpsichord K +Hpschrd2 Harpsichord 2 +Hpschrd3 Harpsichord 3 +Hrpschrd Harpsichord +LayerCP1 Yamaha Concert Piano 1 +LayerCP2 Yamaha Concert Piano 2 +Log Drum ~cp +Marimba ~cp +MarimbaK Marimba K +MelloEP1 Mellow Electric Piano +MelloGrP Mellow Grand Piano +MusicBox Music Box +Orgel Pipe Organ +PianoStr Piano Strings +PlsClavi Pulse Clavichord +PrcClavi Pierce Clavichord +Santur ~cp +SMarimba Sine Marimba +TubulBel Tubular Bells +Vibes Vibraphone +VibesK Vibraphone K +VX EPno1 VX Electric Piano 1 +VX EPno2 VX Electric Piano 2 +Xylophon Xylophone diff --git a/data/bank/gm.tsv b/data/bank/gm.tsv new file mode 100644 index 00000000..08a79482 --- /dev/null +++ b/data/bank/gm.tsv @@ -0,0 +1,129 @@ +MSB PRG LSB NME +000 000 000 GrandPno +000 001 000 BritePno +000 002 000 EGrndPno +000 003 000 HnkyTonk +000 004 000 ElPiano1 +000 005 000 ElPiano2 +000 006 000 Hrpschrd +000 007 000 Clvichrd +000 008 000 Celesta +000 009 000 Glocken +000 010 000 MusicBox +000 011 000 Vibrafon +000 012 000 Marimba +000 013 000 Xylophon +000 014 000 TubulBel +000 015 000 Dulcimer +000 016 000 DrawOrgn +000 017 000 PercOrgn +000 018 000 RockOrgn +000 019 000 ChrchOrg +000 020 000 ReedOrgn +000 021 000 Acordion +000 022 000 Harmnica +000 023 000 TangoAcd +000 024 000 NylonGtr +000 025 000 SteelGtr +000 026 000 Jazz Gtr +000 027 000 CleanGtr +000 028 000 MutedGtr +000 029 000 OvrDrvGt +000 030 000 Dist.Gtr +000 031 000 GtrHarmo +000 032 000 Aco.Bass +000 033 000 FngrBass +000 034 000 PickBass +000 035 000 Fretless +000 036 000 SlpBass1 +000 037 000 SlpBass2 +000 038 000 SynBass1 +000 039 000 SynBass2 +000 040 000 Violin +000 041 000 Viola +000 042 000 Cello +000 043 000 Contrbas +000 044 000 Trem.Str +000 045 000 Pizz.Str +000 046 000 Harp +000 047 000 Timpani +000 048 000 Strings1 +000 049 000 Strings2 +000 050 000 Syn.Str1 +000 051 000 Syn.Str2 +000 052 000 ChoirAah +000 053 000 VoiceOoh +000 054 000 SynVoice +000 055 000 Orch.Hit +000 056 000 Trumpet +000 057 000 Trombone +000 058 000 Tuba +000 059 000 MutedTrp +000 060 000 FrchHorn +000 061 000 BrasSect +000 062 000 SynBras1 +000 063 000 SynBras2 +000 064 000 SprnoSax +000 065 000 Alto Sax +000 066 000 TenorSax +000 067 000 Bari.Sax +000 068 000 Oboe +000 069 000 Eng.Horn +000 070 000 Bassoon +000 071 000 Clarinet +000 072 000 Piccolo +000 073 000 Flute +000 074 000 Recorder +000 075 000 PanFlute +000 076 000 BotlBlow +000 077 000 Shakhchi +000 078 000 Whistle +000 079 000 Ocarina +000 080 000 SquareLd +000 081 000 Saw Lead +000 082 000 CaliopLd +000 083 000 Chiff Ld +000 084 000 CharanLd +000 085 000 Voice Ld +000 086 000 Fifth Ld +000 087 000 Bass&Ld +000 088 000 NewAgePd +000 089 000 Warm Pad +000 090 000 PolySyPd +000 091 000 ChoirPad +000 092 000 BowedPad +000 093 000 MetalPad +000 094 000 Halo Pad +000 095 000 SweepPad +000 096 000 Ice Rain +000 097 000 SoundTrk +000 098 000 Crystal +000 099 000 Atmosphr +000 100 000 Bright +000 101 000 Goblins +000 102 000 Echoes +000 103 000 Sci-Fi +000 104 000 Sitar +000 105 000 Banjo +000 106 000 Shamisen +000 107 000 Koto +000 108 000 Kalimba +000 109 000 Bagpipe +000 110 000 Fiddle +000 111 000 Shanai +000 112 000 TnklBell +000 113 000 Agogo +000 114 000 SteelDrm +000 115 000 Woodblok +000 116 000 Taiko +000 117 000 MelodTom +000 118 000 Syn Drum +000 119 000 RevCymbl +000 120 000 FretNoiz +000 121 000 BrthNoiz +000 122 000 Seashore +000 123 000 Tweet +000 124 000 Telphone +000 125 000 Helicptr +000 126 000 Applause +000 127 000 Gunshot \ No newline at end of file diff --git a/data/bank/gm2.tsv b/data/bank/gm2.tsv new file mode 100644 index 00000000..b252971c --- /dev/null +++ b/data/bank/gm2.tsv @@ -0,0 +1,288 @@ +MSB PRG LSB NME +120 000 000 Standard +120 001 000 Standrd2 +120 002 000 Standrd3 +120 008 000 Room Kit +120 009 000 HipHopKt +120 010 000 JungleKt +120 011 000 TechnoKt +120 016 000 PowerKit +120 024 000 Electro +120 025 000 AnalogKt +120 026 000 DanceKit +120 032 000 Jazz Kit +120 040 000 BrushKit +120 048 000 Orch.Kit +120 049 000 EthnicKt +120 050 000 KikSnare +120 052 000 AsianKit +120 053 000 CymbalKt +120 056 000 SFX Kit +120 057 000 RyFX Kit +120 058 000 RyFX2 Kt +120 127 000 MT-32 Kt +121 000 000 GrandPno +121 000 001 GrndPnoK +121 000 002 MelloGrP +121 001 000 BritePno +121 001 001 BritPnoK +121 002 000 EGrndPno +121 002 001 EGndPnoK +121 003 000 HnkyTonk +121 003 001 HnkyTnkK +121 004 000 El.Piano +121 004 001 ChorusEP +121 004 002 VX E.Pno +121 004 003 60sElPno +121 005 000 ElPiano2 +121 005 001 Chor.EP2 +121 005 002 VX EPno2 +121 005 003 DX Legnd +121 005 004 DX Phase +121 006 000 Hrpschrd +121 006 001 Hpschrd3 +121 006 002 HpschrdK +121 006 003 Hpschrd2 +121 007 000 Clvichrd +121 007 001 PlsClavi +121 008 000 Celesta +121 009 000 Glocken +121 010 000 MusicBox +121 011 000 Vibrafon +121 011 001 VibrafnK +121 012 000 Marimba +121 011 001 MarimbaK +121 013 000 Xylophon +121 014 000 TubulBel +121 014 001 ChrchBel +121 014 002 Carillon +121 015 000 Dulcimer +121 016 000 DrawOrgn +121 016 001 DetDrwOr +121 016 002 60sDrOrg +121 016 003 DrawOrg2 +121 017 000 PercOrgn +121 017 001 DetPrcOr +121 017 002 PercOrg2 +121 018 000 RockOrgn +121 019 000 ChrchOrg +121 019 001 ChurOrg2 +121 019 002 ChurOrg3 +121 020 000 ReedOrgn +121 020 001 Puff Org +121 021 000 Acordion +121 021 001 AccordIt +121 022 000 Harmnica +121 023 000 TangoAcd +121 024 000 NylonGtr +121 024 001 Ukulele +121 024 002 NylonGt3 +121 024 003 NylonGt2 +121 025 000 SteelGtr +121 025 001 12StrGtr +121 025 002 Mandolin +121 025 003 Stl&Body +121 026 000 Jazz Gtr +121 026 001 PdlSteel +121 027 000 CleanGtr +121 027 001 ChorusGt +121 027 002 MidT.Gtr +121 028 000 MutedGtr +121 028 001 Funk Gtr +121 028 002 FunkGtr2 +121 028 003 Jazz Man +121 029 000 OvrDrvGt +121 029 001 Gt.Pinch +121 030 000 Dist.Gtr +121 030 001 FeedbkGt +121 030 002 DstRthmG +121 031 000 GtrHarmo +121 031 001 GtFeedbk +121 032 000 Aco.Bass +121 033 000 FngrBass +121 033 001 FngrSlap +121 034 000 PickBass +121 035 000 Fretless +121 036 000 Slp.Bass +121 037 000 SlpBass2 +121 038 000 Syn.Bass +121 038 001 SynBs1Dk +121 038 002 AcidBass +121 038 003 Clv.Bass +121 038 004 Hammer +121 039 000 SynBass2 +121 039 001 DX Bass +121 039 002 RubberBa +121 039 003 AtkPulse +121 040 000 Violin +121 040 001 SlwVioln +121 041 000 Viola +121 042 000 Cello +121 043 000 Contrbas +121 044 000 Trem.Str +121 045 000 Pizz.Str +121 046 000 Harp +121 046 001 YangChin +121 047 000 Timpani +121 048 000 Strings +121 048 001 OrcheStr +121 048 002 60sStrng +121 049 000 Strings2 +121 050 000 Syn. Str +121 050 001 Syn.Str3 +121 051 000 Syn.Str2 +121 052 000 ChoirAah +121 052 001 ChoirAh2 +121 053 000 VoiceOoh +121 053 001 VoiceHum +121 054 000 SynVoice +121 054 001 AnalVoix +121 055 000 Orch.Hit +121 055 001 BassHit+ +121 055 002 6th Hit +121 055 003 Euro Hit +121 056 000 Trumpet +121 056 001 SoftDTrp +121 057 000 Trombone +121 057 001 Trombon2 +121 057 002 BrtTromb +121 058 000 Tuba +121 059 000 MutedTrp +121 059 001 MuteTrp2 +121 060 000 FrchHorn +121 060 001 FrHorn 2 +121 061 000 BrasSect +121 061 001 BrsSect2 +121 062 000 SynBrass +121 062 001 SynBras3 +121 062 002 Anal.Brs +121 062 003 JumpBras +121 063 000 SynBras2 +121 063 001 SynBras4 +121 063 002 AnalBrs2 +121 064 000 SprnoSax +121 065 000 Alto Sax +121 066 000 TenorSax +121 067 000 Bari.Sax +121 068 000 Oboe +121 069 000 Eng.Horn +121 070 000 Bassoon +121 071 000 Clarinet +121 072 000 Piccolo +121 073 000 Flute +121 074 000 Recorder +121 075 000 PanFlute +121 076 000 BotlBlow +121 077 000 Shakhchi +121 078 000 Whistle +121 079 000 Ocarina +121 080 000 SquareLd +121 080 001 SqrLead2 +121 080 002 SineLead +121 081 000 Saw Lead +121 081 001 SawLead2 +121 081 002 Dr. Lead +121 081 003 DoublSaw +121 081 004 SeqAnal. +121 082 000 CaliopLd +121 083 000 Chiff Ld +121 084 000 CharanLd +121 084 001 WireLead +121 085 000 Voice Ld +121 086 000 Fifth Ld +121 087 000 Bass&Ld +121 087 001 SftWhirl +121 088 000 NewAgePd +121 089 000 Warm Pad +121 089 001 Sine Pad +121 090 000 PolySyPd +121 091 000 ChoirPad +121 091 001 Itopia +121 092 000 BowGlass +121 093 000 MetalPad +121 094 000 Halo Pad +121 095 000 SweepPad +121 096 000 Ice Rain +121 097 000 SoundTrk +121 098 000 Crystal +121 098 001 SynMalet +121 099 000 Atmosphr +121 100 000 Bright +121 101 000 Goblins +121 102 000 Echoes +121 102 001 EchoBell +121 102 002 Echo Pan +121 103 000 Sci-Fi +121 104 000 Sitar +121 104 001 Sitar 2 +121 105 000 Banjo +121 106 000 Shamisen +121 107 000 Koto +121 107 001 TaishoKn +121 108 000 Kalimba +121 109 000 Bagpipe +121 110 000 Fiddle +121 111 000 Shanai +121 112 000 TnklBell +121 113 000 Agogo +121 114 000 SteelDrm +121 115 000 Woodblok +121 115 001 Castanet +121 116 000 Taiko +121 116 001 Gr.Cassa +121 117 000 MelodTom +121 117 001 Mel Tom2 +121 118 000 Syn Drum +121 118 001 Anal.Tom +121 118 002 ElecPerc +121 119 000 RevCymbl +121 120 000 FretNoiz +121 120 001 CutNoise +121 120 002 Str Slap +121 120 003 CutNoiz2 +121 120 004 DstCutNz +121 120 005 B.Slide +121 120 006 P.Scrape +121 121 000 BrthNoiz +121 121 001 Fl.KClik +121 122 000 Seashore +121 122 001 Shower +121 122 002 Thunder +121 122 003 Wind +121 122 004 Stream +121 122 005 Bubble +121 123 000 Tweet +121 123 001 Dog Woof +121 123 002 HorseGlp +121 123 003 BirdTwit +121 123 004 Kitty +121 123 005 Growl +121 124 000 Telphone +121 124 001 PhonCall +121 124 002 DoorSqek +121 124 003 DoorSlam +121 124 004 ScratchC +121 124 005 WindChim +121 124 007 Scratch2 +121 125 000 Helicptr +121 125 001 CarStart +121 125 002 CarTyreS +121 125 003 Car Pass +121 125 004 CarCrash +121 125 005 Siren +121 125 006 Train +121 125 007 JetPlane +121 125 008 Starship +121 125 009 Burst +121 125 016 Coaster +121 126 000 Applause +121 126 001 LaughVox +121 126 002 ScreamVx +121 126 003 Punch +121 126 004 Heart +121 126 005 Footstep +121 126 006 Applauz2 +121 127 000 Gunshot +121 127 001 MchinGun +121 127 002 LaserGun +121 127 003 Xplosion \ No newline at end of file diff --git a/data/bank/gmega.tsv b/data/bank/gmega.tsv new file mode 100644 index 00000000..865d0d7a --- /dev/null +++ b/data/bank/gmega.tsv @@ -0,0 +1,169 @@ +MSB LSB PRG NME +122 000 000 Standard +122 000 001 Room Kit +122 000 002 PowerKit +122 000 003 Electro +122 000 004 BOB Kit +122 000 005 Jazz Kit +122 000 006 Orch.Kit +122 004 000 SP Kit +000 004 000 GrandPno +000 004 001 BritePno +000 004 002 GrndPno2 +000 004 003 EGrndPno +000 004 004 El.Piano +000 004 005 EGndPno2 +000 004 006 ElPiano2 +000 004 007 HnkyTonk +000 004 008 RockOrgn +000 004 009 DrawOrgn +000 004 010 PercOrgn +000 004 011 ElecOrgn +000 004 012 PipeOrgn +000 004 013 PipeOrg2 +000 004 014 PipeOrg3 +000 004 015 Acordion +000 004 016 Hrpschrd +000 004 017 Hpschrd2 +000 004 018 Hpschrd3 +000 004 019 Clvichrd +000 004 020 Clavi. 2 +000 004 021 Clavi. 2 +000 004 022 Celesta +000 004 023 Celesta2 +000 004 024 SynBrass +000 004 025 SynBras2 +000 004 026 OvrDrvGt +000 004 027 Dist.Gtr +000 004 028 Syn.Bass +000 004 029 SynBass2 +000 004 030 SynBass3 +000 004 031 SynBass4 +000 004 032 NewAgePd +000 004 033 Warm Pad +000 004 034 ChoirPad +000 004 035 BowedPad +000 004 036 SoundTrk +000 004 037 Atmosphr +000 004 038 Syn.Warm +000 004 039 SynVoice +000 004 040 EchoBell +000 004 041 Rain +000 004 042 Syn.Wind +000 004 043 Echoes +000 004 044 Syn.Solo +000 004 045 ReedOrgn +000 004 046 Syn.Bell +000 004 047 SquareLd +000 004 048 Strings1 +000 004 049 Strings2 +000 004 050 Syn. Str +000 004 051 Pizz.Str +000 004 052 Violin +000 004 053 Viola +000 004 054 Cello +000 004 055 Cello 2 +000 004 056 Contraba +000 004 057 Harp +000 004 058 Harp 2 +000 004 059 NylonGtr +000 004 060 SteelGtr +000 004 061 Elec.Gtr +000 004 062 ElecGtr2 +000 004 063 Sitar +000 004 064 WoodBass +000 004 065 WoodBas2 +000 004 066 FngrBass +000 004 067 PickBass +000 004 068 SlapBass +000 004 069 SlpBass2 +000 004 070 Fretless +000 004 071 Fretles2 +000 004 072 Flute +000 004 073 Flute 2 +000 004 074 Piccolo +000 004 075 Piccolo2 +000 004 076 Recorder +000 004 077 PanFlute +000 004 078 SprnoSax +000 004 079 Alto Sax +000 004 080 TenorSax +000 004 081 Bari.Sax +000 004 082 Clarinet +000 004 083 Clrinet2 +000 004 084 Oboe +000 004 085 SawBrass +000 004 086 Bassoon +000 004 087 Harmnica +000 004 088 Trumpet +000 004 089 Trumpet2 +000 004 090 Trombone +000 004 091 Trombon2 +000 004 092 FrchHorn +000 004 093 FrHorn 2 +000 004 094 Tuba +000 004 095 BrasSect +000 004 096 BrasSec2 +000 004 097 Vibrafon +000 004 098 Vibrfon2 +000 004 099 Mallet +000 004 100 WindBell +000 004 101 Glocken +000 004 102 TubulBel +000 004 103 Xylophon +000 004 104 Marimba +000 004 105 Koto +000 004 106 Shamisen +000 004 107 Shakhchi +000 004 108 Whistle +000 004 109 Whistle2 +000 004 110 BotlBlow +000 004 111 Chiff Ld +000 004 112 Timpani +000 004 113 MelodTom +000 004 114 Dp Snare +000 004 115 Syn.Drum +000 004 116 SynDrum2 +000 004 117 Taiko +000 004 118 TaikoRim +000 004 119 Cymbal +000 004 120 Castanet +000 004 121 Triangle +000 004 122 Orch.Hit +000 004 123 NewSynth +000 004 124 NewSyn.2 +000 004 125 NewSyn.3 +000 004 126 NewSyn.4 +000 004 127 NewSyn.5 +000 007 028 Atk Strs +000 007 029 ProgLead +000 007 030 Funk SE +000 007 031 FunkSE d +000 007 032 Saw Pad +000 007 033 SquarePd +000 007 034 12StrGtr +000 007 035 House Ba +000 007 036 EP&Bass +000 007 037 Bass&Ld2 +000 007 038 83 Organ +000 007 039 83Organ2 +000 007 040 SexyVoix +000 007 041 ProgLd 2 +000 007 042 Syn.Pizz +000 007 043 PchBD&SD +000 007 044 RolDrSet +000 007 045 DstGtSet +000 007 046 DreamPad +000 007 047 GtFeedbk +000 007 048 ChorusGt +000 007 049 BaroqStr +000 007 050 HyprSnic +000 007 051 WowSyn +000 007 052 AttackBa +000 007 053 BrassPad +000 007 054 DeepPad +000 007 055 MariVibr +000 007 056 MegaBeat +000 007 057 Harmo. 2 +000 007 058 WowSyn2 +000 007 059 Pno&W Ba \ No newline at end of file diff --git a/data/bank/gs.tsv b/data/bank/gs.tsv new file mode 100644 index 00000000..cb99603e --- /dev/null +++ b/data/bank/gs.tsv @@ -0,0 +1,1485 @@ +LSB PRG MSB NME +000 000 000 GrandPno +004 000 001 Uprt.Pno +004 000 002 Mild Pno +000 000 008 Piano 1w +004 000 008 UprtP. w +004 000 009 MildP. w +000 000 016 Piano 1d +003 000 016 EuropePf +003 000 024 PianoStr +004 000 025 Pno+Str2 +004 000 026 DreamPno +004 000 027 DreamP.2 +000 001 000 BritePno +004 001 001 PopPiano +004 001 002 Rock Pno +000 001 008 Piano 2w +004 001 008 PopPno w +004 001 009 RockP. w +003 001 016 DancePno +000 002 000 EGrndPno +000 002 001 EGRhode1 +000 002 002 EGRhode2 +000 002 008 Piano 3w +000 003 000 HnkyTonk +000 003 008 HnkyTk w +002 003 008 Old Uprt +003 003 008 HnkyTnk2 +000 004 000 ElPiano1 +000 004 008 Det.EP 1 +002 004 008 StSoftEP +003 004 009 ChorusEP +003 004 010 SilntRho +000 004 016 EPiano1v +002 004 016 FM+SA EP +003 004 017 Dst.EPno +000 004 024 60sElPno +003 004 024 Wurly +002 004 025 HrdRhode +002 004 026 MelRhode +000 005 000 ElPiano2 +004 005 001 ElPiano3 +000 005 008 Det.EP 2 +004 005 009 Det.EP 3 +004 005 010 DXLegend +000 005 016 ElPno 2v +002 005 016 St.FM EP +002 005 024 HardFMEP +004 005 032 DX Phase +000 006 000 Hrpschrd +003 006 001 Hpschrd2 +004 006 002 Hpschrd3 +000 006 008 CplHapsi +000 006 016 Harpsi.w +000 006 024 Harpsi.o +003 006 032 SynHapsi +000 007 000 Clvichrd +004 007 001 Clvchrd2 +004 007 002 AtkClavi +004 007 003 AtkClv.2 +003 007 008 Comp Clv +003 007 016 Reso Clv +004 007 017 PhaseClv +003 007 024 Clavi. o +003 007 032 AnaClavi +003 007 033 JP8 Clv1 +003 007 035 JP8 Clv2 +004 007 036 SyRngClv +004 007 037 SyDstClv +004 007 038 JP8k Clv +004 007 039 PulseClv +000 008 000 Celesta +003 008 001 PopCelst +000 009 000 Glocken +000 010 000 MusicBox +004 010 001 MusicBx2 +004 010 008 St.MusBx +000 011 000 Vibrafon +002 011 001 HardVibr +003 011 001 Pop Vibr +000 011 008 Vib. w +003 011 008 Vibra. w +000 011 009 Vibrafns +000 012 000 Marimba +000 012 008 Marmba w +002 012 016 Barafon +002 012 017 Barafon2 +002 012 024 Log Drum +000 013 000 Xylophon +004 013 008 Xylofn.w +000 014 000 TubulBel +000 014 008 ChrchBel +000 014 009 Carillon +004 014 010 ChchBel2 +004 014 016 TubBel w +000 015 000 Santur +002 015 001 Santur 2 +004 015 002 Santur 3 +002 015 008 Cimbalom +003 015 016 Zither +003 015 017 Zither 2 +003 015 024 Dulcimer +000 016 000 DrawOrgn +002 016 001 Organ101 +004 016 002 FullOrgn +004 016 003 FullOrg2 +004 016 004 FullOrg3 +004 016 005 FullOrg4 +004 016 006 FullOrg5 +004 016 007 FullOrg6 +000 016 008 DetDrwOr +003 016 008 TremDrOr +002 016 009 Organ109 +003 016 009 Organ. o +004 016 010 FullOrg7 +004 016 011 FullOrg8 +004 016 012 FullOrg9 +000 016 016 60sDrOrg +002 016 017 60sDrOr2 +002 016 018 60sDrOr3 +003 016 019 FarfOrgn +002 016 024 CheezOrg +003 016 025 D-50 Org +003 016 026 JUNO Org +003 016 027 HybridOr +003 016 028 VS Organ +003 016 029 EChrchOr +004 016 030 JX-8P Or +004 016 031 FM Organ +000 016 032 DrawOrg2 +003 016 032 70sDrOrg +002 016 033 EvenBar +002 016 040 Organ Ba +003 016 048 5thOrgan +000 017 000 PercOrgn +002 017 001 Organ201 +003 017 001 JazzOrgn +003 017 002 EOrg16+2 +004 017 003 JazzOrg2 +004 017 004 JazzOrg3 +004 017 005 JazzOrg4 +004 017 006 JazzOrg5 +004 017 007 JazzOrg6 +000 017 008 DetPrcOr +003 017 008 ChorusOr +003 017 009 OctaveOr +000 017 032 PercOrg2 +003 017 032 PercOrg3 +004 017 033 PercOrg4 +004 017 034 PercOrg5 +004 017 035 PercOrg6 +000 018 000 RockOrgn +002 018 008 RotaryOr +002 018 016 SlwRotar +003 018 017 RockOrg2 +003 018 018 RockOrg3 +002 018 024 FstRotar +000 019 000 ChrchOrg +000 019 008 ChurOrg2 +000 019 016 ChurOrg3 +002 019 024 OrgFlute +002 019 032 TrmOrgFl +003 019 033 ThtreOrg +000 020 000 ReedOrgn +003 020 008 WindOrgn +004 020 016 PuffOrgn +000 021 000 Acordion +000 021 008 AccordIt +003 021 009 DstAcord +003 021 016 ChoAcord +003 021 024 HrdAcord +003 021 025 SftAcord +000 022 000 Harmnica +002 022 001 Harmo. 2 +004 022 008 BscBHrmo +004 022 009 SplBHrmo +000 023 000 TangoAcd +003 023 008 TngoAcd2 +003 023 016 Bndoneon +000 024 000 NylonGtr +000 024 008 Ukulele +000 024 016 NylonGt3 +002 024 024 VelGtHrm +000 024 032 NylonGt2 +002 024 040 LequintG +000 025 000 SteelGtr +000 025 008 12StrGtr +002 025 009 Nyln&Stl +004 025 010 AtkSteel +000 025 016 Mandolin +003 025 017 Mandoln2 +003 025 018 MandoTrm +002 025 032 SteelGt2 +004 025 033 Stl&Body +000 026 000 Jazz Gtr +000 026 001 MellowGt +000 026 008 HawaiiGt +002 026 008 PedalStl +000 027 000 CleanGtr +003 027 001 ClnHalfG +003 027 002 OpnHrdGt +003 027 003 OpnHrdG2 +003 027 004 JC ClnGt +004 027 005 AtkClnGt +000 027 008 ChorusGt +003 027 009 JC ChoGt +003 027 016 TCFrntPk +003 027 017 TCRearPk +003 027 018 TC Clean +003 027 019 TC Cln 2 +004 027 020 LPRearPk +004 027 021 LPRearP2 +004 027 022 LPRearAt +004 027 023 MidT.Gtr +004 027 024 ChngRuan +004 027 025 ChgRuan2 +000 028 000 MutedGtr +002 028 001 Mu.DstGt +003 028 002 TCMuteGt +000 028 008 Funk Gtr +002 028 008 Funk Pop +000 028 016 FunkGtr2 +004 028 024 Jazz Man +000 029 000 OvrDrvGt +003 029 001 OvrDrGt2 +003 029 002 OvrDrGt3 +003 029 003 MoDrvGtr +004 029 004 Gt.Pinch +004 029 005 AtkDrvGt +003 029 008 LPOvrDrv +003 029 009 LPOvrDr2 +004 029 010 LP HfDrv +004 029 011 LPHfDrv2 +004 029 012 LPChorus +000 030 000 Dist.Gtr +002 030 001 DistGtr2 +002 030 002 DazedGtr +003 030 003 DistGtr3 +003 030 004 FstDstGt +004 030 005 AtkDstGt +000 030 008 FeedbkGt +002 030 009 FeedbkG2 +002 030 016 PowerGtr +002 030 017 PowerGt2 +002 030 018 5thDist. +002 030 024 RockRthm +002 030 025 RckRthm2 +004 030 026 DsRthmGt +000 031 000 GtrHarmo +000 031 008 GtFeedbk +003 031 009 GtrFdbk2 +002 031 016 AcGtrHmo +003 031 024 ElBaHrmo +000 032 000 Aco.Bass +003 032 001 Rokabily +003 032 008 WildAcBa +004 032 009 AtkAcoBa +003 032 016 Bass+OHH +000 033 000 FngrBass +002 033 001 FngrBas2 +002 033 002 Jazzy Ba +003 033 003 JazzyBa2 +003 033 004 RockBass +004 033 005 HeartBas +004 033 006 AtkFngr. +004 033 007 FngrSlap +003 033 008 ChorJzBa +003 033 016 F.Ba/Hrm +000 034 000 PickBass +003 034 001 PickBas2 +003 034 002 PickBas3 +003 034 003 PickBas4 +004 034 004 DblPikBa +002 034 008 M.PkBass +003 034 016 PkBa/Hrm +000 035 000 Fretless +002 035 001 Fretles2 +002 035 002 Fretles3 +002 035 003 Fretles4 +002 035 004 SynFretl +002 035 005 SmthFrtl +003 035 008 WoodFrtl +000 036 000 SlpBass1 +003 036 001 Pop Slap +002 036 008 ResoSlap +003 036 009 UnisnSlp +000 037 000 SlpBass2 +004 037 001 SlpBass3 +003 037 008 FM Slap +000 038 000 SynBass1 +000 038 001 SynBa101 +003 038 002 CS Bass +003 038 003 JP-4 Ba +003 038 004 JP-8 Ba +003 038 005 P5 Bass +003 038 006 JPMG Ba +000 038 008 SynBass3 +002 038 008 AcidBass +002 038 009 TB303 Ba +002 038 010 TechnoBa +003 038 011 TB303Ba2 +003 038 012 TB303Kik +003 038 013 TB303Saw +003 038 014 Rubbr303 +003 038 015 Reso 303 +002 038 016 ResoSHBa +003 038 017 303SqrBa +003 038 018 303DstBa +004 038 019 Clavi.Ba +004 038 020 HammerBa +004 038 021 JungleBa +004 038 022 SquareBa +004 038 023 Sqr.Ba.2 +003 038 024 ArpgioBa +004 038 032 HitSawBa +004 038 033 RingBass +004 038 034 AtkSinBa +004 038 035 OBSineBa +004 038 036 Aux Bass +004 038 040 303SqDst +004 038 041 303SqDs2 +004 038 042 303SqDs3 +004 038 043 303SqrRv +004 038 044 TeeBee +000 039 000 SynBass2 +002 039 001 SynBa201 +002 039 002 ModulrBs +002 039 003 Seq.Bass +003 039 004 MG Bass +003 039 005 MGOctBas +003 039 006 MGOctBa2 +003 039 007 MGBlipBa +000 039 008 SynBass4 +002 039 008 BeefFMBa +002 039 009 X WireBa +003 039 009 Dly Bass +003 039 010 X WireBa +003 039 011 WreStrBa +003 039 012 BlipBass +003 039 013 RubbrBa2 +004 039 014 SynBelBa +004 039 015 Odd Bass +000 039 016 RubberBa +002 039 017 SH101Ba1 +002 039 018 SH101Ba2 +002 039 019 SmoothBa +003 039 020 SH101Ba3 +003 039 021 Spike Ba +003 039 022 House Ba +003 039 023 KG Bass +003 039 024 SyncBass +003 039 025 MG5th Ba +003 039 026 RandomBa +003 039 027 WowMG Ba +003 039 028 BubbleBa +004 039 029 AtkPulse +004 039 030 SyncBas2 +004 039 031 PulseMix +004 039 032 MGDistBa +004 039 033 SeqBass2 +004 039 034 3rd Bass +004 039 035 MGOctBas +004 039 036 SlwEnvBa +004 039 037 MildBass +004 039 038 DstEnvBa +004 039 039 MGLiteBa +004 039 040 DstSynBa +004 039 041 RiseBass +004 039 042 CyberBas +000 040 000 Violin +003 040 001 ViolnAtk +000 040 008 SlwVioln +000 041 000 Viola +003 041 001 ViolaAtk +000 042 000 Cello +003 042 001 CelloAtk +000 043 000 Contrbas +000 044 000 Trem.Str +004 044 002 TrmStrSt +002 044 008 SlwTrStr +002 044 009 Susp.Str +004 044 010 SuspStr2 +000 045 000 Pizz.Str +003 045 001 VcCbPizz +003 045 002 ChmbrPiz +003 045 003 St. Pizz +003 045 008 SoloPizz +003 045 016 SoloSpic +004 045 017 StrsSpic +000 046 000 Harp +004 046 001 Harp&Str +004 046 002 Harp St. +004 046 008 UileanHp +003 046 016 Syn.Harp +004 046 024 YangChin +004 046 025 YangQin2 +004 046 026 SynYanQn +000 047 000 Timpani +000 048 000 Strings1 +002 048 001 Slow Str +003 048 001 BriteStr +003 048 002 ChmbrStr +003 048 003 CellSect +004 048 004 Brt.Str2 +004 048 005 Brt.Str3 +004 048 006 Quad Str +004 048 007 Mild Str +000 048 008 Orch.Str +002 048 009 OrchStr2 +002 048 010 TremOrch +002 048 011 ChoirStr +003 048 012 Str&FrHr +004 048 013 Str+Flut +004 048 014 ChoirS.2 +004 048 015 ChoirS.3 +002 048 016 StStrngs +004 048 017 St.Strs2 +004 048 018 St.Strs3 +004 048 019 OrchStr3 +004 048 020 OrchStr4 +002 048 024 Velo.Str +003 048 032 OctavStr +003 048 033 OctStr.2 +004 048 034 ContraSc +004 048 040 60s Strs +000 049 000 Strings2 +002 049 001 SlowStr2 +004 049 002 SlowStr3 +002 049 008 LegatoSt +002 049 009 Warm Str +002 049 010 StSlwStr +004 049 011 StSlStr2 +004 049 012 StStr+Ch +004 049 013 StStrCh2 +000 050 000 Syn.Str1 +002 050 001 OB Str. +003 050 002 StackStr +003 050 003 JP Str. +004 050 004 Chor.Str +000 050 008 Syn.Str3 +003 050 009 Syn.Str4 +004 050 010 Syn.Str6 +004 050 011 Syn.Str7 +004 050 012 LoFi Str +003 050 016 High Str +003 050 017 HybrdStr +003 050 024 Tron Str +003 050 025 NoizyStr +000 051 000 Syn.Str2 +003 051 001 Syn.Str5 +003 051 002 JUNO Str +004 051 003 FiltOrch +004 051 004 JPSawStr +004 051 005 HybrStr2 +004 051 006 Dist.Str +004 051 007 JUNOFull +003 051 008 Air Str. +004 051 009 AtkSyStr +004 051 010 StraiStr +000 052 000 ChoirAah +002 052 008 St.Choir +002 052 009 MelChoir +003 052 010 ChurchCh +004 052 011 BoyChoir +004 052 012 BoysCh.2 +004 052 013 StBoyCh. +004 052 014 Rich Ch. +003 052 016 ChoirHah +003 052 024 ChoirLah +002 052 032 ChoirAh2 +003 052 033 MaleC.Ah +000 053 000 VoiceOoh +004 053 001 Chor.Ooh +004 053 002 VoiceOh2 +004 053 003 ChorOoh2 +004 053 004 OohsMaj7 +004 053 005 OohsSus4 +004 053 006 JazzScat +003 053 008 VoiceDah +004 053 009 JazzyDah +004 053 010 JazzyBah +004 053 011 JazzyDow +004 053 012 JazzThum +004 053 016 Fem. Lah +004 053 017 FemChoLa +004 053 018 Fem. Luh +004 053 019 FemChoLu +004 053 020 Fem. Lan +004 053 021 FemChLan +004 053 022 Fem. Aah +004 053 023 Fem. Uuh +004 053 024 F.La&Lan +004 053 032 Mal. Wah +004 053 033 MalChoWa +004 053 034 Mal. Woh +004 053 035 MalChoWo +004 053 036 Mal. Aah +004 053 037 Mal. Ooh +004 053 040 Humming +000 054 000 SynVoice +004 054 001 Syn Vox +004 054 002 SynVox 2 +002 054 008 SyVoice2 +003 054 009 SlntNght +004 054 010 SyVoice3 +003 054 016 VP330 +003 054 017 VnlChoir +004 054 018 JX8P Vox +004 054 019 AnalVoix +000 055 000 Orch.Hit +004 055 001 Bass Hit +004 055 002 6th Hit +004 055 003 Euro Hit +002 055 008 ImpactHt +002 055 009 PhillyHt +002 055 010 DoublHit +003 055 011 Perc.Hit +003 055 012 ShockWav +004 055 013 BounceHt +004 055 014 DrillHit +004 055 015 ThrillHt +002 055 016 LoFiRave +003 055 017 TechnoHt +003 055 018 Dist.Hit +003 055 019 Bam Hit +003 055 020 Bit Hit +003 055 021 Bim Hit +003 055 022 Tkng Hit +003 055 023 Rave Hit +003 055 024 Str. Hit +003 055 025 StackHit +004 055 026 Indus.Ht +004 055 027 Clap Hit +000 056 000 Trumpet +002 056 001 Trumpet2 +003 056 002 Trumpet3 +004 056 003 Dark Trp +004 056 004 Trp&Noiz +002 056 008 FlugelHr +003 056 016 4th Trp +002 056 024 BriteTrp +002 056 025 Warm Trp +004 056 026 WarmTrp2 +004 056 027 Twin Trp +003 056 032 Syn Trp +000 057 000 Trombone +000 057 001 Trombon2 +003 057 002 Twinbone +004 057 003 Trom&Tba +004 057 004 BrtTromb +003 057 008 BassTrom +004 057 016 Eufonium +000 058 000 Tuba +002 058 001 Tuba 2 +004 058 004 Tuba+Hrn +000 059 000 MutedTrp +004 059 001 CMuteTrp +004 059 002 MuteTrp2 +004 059 003 MuteTrp3 +003 059 008 MutedHrn +000 060 000 FrchHorn +000 060 001 FrHorn 2 +003 060 002 Hrn+Orch +003 060 003 WideFrHr +002 060 008 FrHrSolo +003 060 008 SlwFrHrn +003 060 009 DualFrHr +002 060 016 HornOrch +003 060 016 Syn.Horn +003 060 024 RipFrHrn +000 061 000 BrasSect +003 061 001 Brass ff +003 061 002 BoneSect +004 061 003 StBrs ff +004 061 004 QuadBras +004 061 005 QuadBrs2 +000 061 008 BrsSect2 +003 061 009 BrsSect3 +003 061 010 SforzBrs +004 061 012 SfzBras2 +004 061 014 PopBrass +002 061 016 BrasFall +003 061 017 Trp Fall +003 061 024 OctBrass +003 061 025 Brs+Reed +004 061 026 Fat+Reed +004 061 032 OrchBras +004 061 033 OrchBrs2 +004 061 035 StPopBrs +004 061 036 StOrchBr +004 061 037 StOrBrs2 +004 061 038 StOrBrs3 +000 062 000 SynBras1 +002 062 001 PolyBras +003 062 001 JUNO Brs +003 062 002 StackBrs +003 062 003 SH-5 Brs +003 062 004 MKS Bras +004 062 005 JumpBras +000 062 008 SynBras3 +003 062 008 ProBrass +002 062 009 QuackBrs +003 062 009 P5 Brass +004 062 010 OrchSyBr +000 062 016 Anal.Brs +002 062 016 Octa.Brs +003 062 016 OctSynBr +003 062 017 HybridBr +004 062 018 OctSyBr2 +004 062 019 BPF Bras +000 063 000 SynBras2 +002 063 001 SoftBras +003 063 002 WarmBras +004 063 003 SynBras3 +004 063 004 SyncBras +004 063 005 FatSncBr +004 063 006 DeepSyBr +000 063 008 SynBras4 +003 063 008 SynSfzBr +003 063 009 OB Brass +003 063 010 RezBrass +004 063 011 DstSqrBr +004 063 012 JP8kSwBr +000 063 016 Ana.Brs2 +002 063 016 VeloBras +002 063 017 VeloBrs2 +003 063 017 TransBrs +000 064 000 SprnoSax +001 064 008 ExpSprno +000 065 000 Alto Sax +002 065 008 HyprAlto +003 065 008 Exp.Alto +003 065 009 Grow Sax +003 065 016 Alto+Trp +004 065 017 Sax Sect +000 066 000 TenorSax +003 066 001 TenrSax2 +002 066 008 BrthTnSx +003 066 009 St.TnrSx +000 067 000 Bari.Sax +003 067 001 BariSax2 +004 067 008 Bari&Tnr +000 068 000 Oboe +003 068 008 Exp.Oboe +003 068 016 Mul.Reed +000 069 000 Eng.Horn +000 070 000 Bassoon +000 071 000 Clarinet +002 071 008 BsClari. +003 071 016 MultiWnd +004 071 017 QuadWind +000 072 000 Piccolo +003 072 001 Piccolo2 +003 072 008 Nay +003 072 009 NayTrem. +003 072 016 Di Zi +000 073 000 Flute +003 073 001 Flute 2 +003 073 002 ExpFlute +003 073 003 TrvFlute +003 073 008 FluteVln +004 073 009 PipeReed +003 073 016 TrnFlute +004 073 017 IndiaFlu +000 074 000 Recorder +000 075 000 PanFlute +002 075 008 Kawala +003 075 016 Zampona +003 075 017 ZmpnaAtk +004 075 024 TinWhist +004 075 025 TinWhsNm +004 075 026 TinWhsOr +000 076 000 BotlBlow +000 077 000 Shakhchi +003 077 001 Di Zi 2 +000 078 000 Whistle +003 078 001 Whistle2 +000 079 000 Ocarina +000 080 000 SquareLd +000 080 001 SquareWv +003 080 001 MGSquare +002 080 002 HolwMini +002 080 003 MellowFM +002 080 004 CC Solo +002 080 005 Shmoog +002 080 006 LMSquare +004 080 007 JP8k TWM +000 080 008 SineWave +003 080 008 2600Sine +003 080 009 SineLead +003 080 010 KG Lead +004 080 011 TwinSine +003 080 016 P5Square +003 080 017 OBSquare +003 080 018 JP-8 Sqr +004 080 019 DsSquare +004 080 020 303SqrDs +004 080 021 303SqDs2 +004 080 022 303MixSq +004 080 023 2Sqr&Saw +003 080 024 Pulse Ld +003 080 025 JP8Pulse +003 080 026 JP8Puls2 +003 080 027 MGRezPls +004 080 028 JP8Puls3 +004 080 029 260 Ring +004 080 030 303DstLd +004 080 031 JP8kDsLd +004 080 032 HipHopSi +004 080 033 HipHopSq +004 080 034 HipHopPu +004 080 035 FluxPuls +000 081 000 Saw Lead +000 081 001 Saw Wave +003 081 001 OB2 Saw +002 081 002 PulseSaw +002 081 003 FelineGR +002 081 004 Big Lead +002 081 005 VeloLead +002 081 006 GR-300 +002 081 007 LA Saw +000 081 008 Dr. Lead +003 081 009 ThickSaw +004 081 010 JP8k Saw +003 081 011 D-50 Fat +004 081 012 OBDblSaw +004 081 013 JPDblSaw +004 081 014 ThickSw2 +004 081 015 SuperSaw +002 081 016 WaspySyn +003 081 017 PM Lead +003 081 018 CS SawLd +003 081 024 MG Saw +003 081 025 MG Saw 2 +003 081 026 OB Saw +003 081 027 OB Saw 2 +003 081 028 D-50 Saw +003 081 029 SH101Saw +003 081 030 CS Saw +003 081 031 MG SawLd +003 081 032 OB SawLd +003 081 033 P5 SawLd +003 081 034 MGUnison +003 081 035 OctSawLd +004 081 036 NtrlLead +003 081 040 SeqAnal. +003 081 041 SeqAna.2 +003 081 042 Reso Saw +003 081 043 CheezSaw +003 081 044 ChzSaw 2 +003 081 045 Rthm Saw +004 081 046 SeqAna.3 +004 081 047 TeknoSaw +000 082 000 CaliopLd +002 082 001 VentLead +002 082 002 Pure Pan +000 083 000 Chiff Ld +003 083 001 TB Lead +004 083 002 HybridLd +004 083 003 UnisnSqr +004 083 004 FtSoloLd +004 083 005 Force.Ld +004 083 006 OctUnisn +004 083 007 UnisnSaw +003 083 008 Mad Lead +004 083 009 Crowd.Ld +004 083 010 DblSqrLd +000 084 000 CharanLd +004 084 001 WireLead +004 084 002 FBCharan +004 084 003 FatGR Ld +004 084 004 Windy GR +004 084 005 MellowGR +004 084 006 GR&Pulse +002 084 008 DistLead +003 084 009 Acid Gtr +003 084 010 AcidGtr2 +004 084 011 DanceDGt +004 084 012 DanceDG2 +003 084 016 P5Snc.Ld +003 084 017 FatSncLd +003 084 018 RockLead +003 084 019 5thDcySn +003 084 020 DirtySnc +004 084 021 DualSync +004 084 022 LA Brass +003 084 024 JUNOSbOs +004 084 025 2600SbOs +004 084 026 JP8kFdOs +000 085 000 Voice Ld +004 085 001 VoiceLd2 +003 085 008 Vox Lead +003 085 009 LFO Vox +004 085 010 VoxLead2 +000 086 000 Fifth Ld +002 086 001 Big Five +003 086 002 5th Lead +003 086 003 5thAnClv +004 086 004 5thPulse +004 086 005 JP5thSaw +004 086 006 JP8k 5FB +003 086 008 4th Lead +000 087 000 Bass&Ld +002 087 001 Big&Raw +002 087 002 Fat&Prky +003 087 003 JUNORave +003 087 004 JP8BaLd1 +003 087 005 JBPBaLd2 +003 087 006 SH-5BaLd +004 087 007 Delay.Ld +000 088 000 NewAgePd +002 088 001 Fantasy +003 088 002 Fantasy2 +003 088 003 BelHeavn +004 088 004 Fantasy3 +004 088 005 Fantasy4 +004 088 006 After D! +004 088 007 260HrmPd +000 089 000 Warm Pad +002 089 001 ThickPad +003 089 001 ThickMtx +002 089 002 Horn Pad +002 089 003 RotarStr +002 089 004 Soft Pad +003 089 004 OBSoftPd +004 089 005 Sine Pad +004 089 006 OBSftPd2 +003 089 008 OctavePd +003 089 009 StackPad +004 089 010 HumanPad +004 089 011 SyncBrPd +004 089 012 OctPWMPd +004 089 013 JPSoftPd +000 090 000 PolySyPd +002 090 001 80sPlySy +003 090 002 PlySyPd2 +003 090 003 PolyKing +004 090 004 SuprPoly +003 090 008 PwrStack +003 090 009 OctStack +003 090 010 RezStack +003 090 011 TekStack +004 090 012 PulseStk +004 090 013 TwnOctRv +004 090 014 Oct.Rave +004 090 015 HappySyn +004 090 016 FwdSweep +004 090 017 RevSweep +004 090 024 MinorRav +000 091 000 ChoirPad +002 091 001 Heaven +003 091 002 SCHeaven +004 091 003 Itopia +004 091 004 WaterSpa +004 091 005 Cold Spa +004 091 006 NzPeaker +004 091 007 BambooHt +003 091 008 CosmicVx +003 091 009 Auh Vox +003 091 010 Auh Auh +003 091 011 Vocorder +004 091 012 Holy Vox +000 092 000 BowedPad +003 092 001 SftBelPd +003 092 002 JP8SqrPd +003 092 003 7thBelPd +004 092 004 SteelGls +004 092 005 BotlStak +000 093 000 MetalPad +002 093 001 Tine Pad +002 092 002 PannerPd +004 092 003 SteelPad +004 092 004 Spe.Rave +004 092 005 MetalPd2 +000 094 000 Halo Pad +003 094 001 VoicePad +003 094 002 VoxSweep +003 094 008 HorrorPd +004 094 009 SynVoxPd +004 094 010 SynVxPd2 +004 094 011 BrthRise +004 094 012 TearsVox +000 095 000 SweepPad +002 095 001 PolarPad +004 095 002 Ambi.BPF +004 095 003 Sync Pad +004 095 004 Warriors +002 095 008 Converge +002 095 009 Shwimmer +002 095 010 Celstial +003 095 011 BagSweep +004 095 012 Swp.Pipe +004 095 013 SwpStack +004 095 014 Deep Swp +004 095 015 StrayPad +000 096 000 Rain +000 096 001 HrmoRain +000 096 002 AfrcWind +003 096 003 AnklngPd +003 096 004 RattlePd +000 096 008 ClaviPad +000 097 000 SoundTrk +000 097 001 Ancestrl +000 097 002 Prologue +003 097 003 Prolog 2 +003 097 004 Hols Str +000 097 008 Rave +000 098 000 Crystal +000 098 001 SynMalet +000 098 002 SftCryst +000 098 003 RndGlock +000 098 004 LoudGlok +000 098 005 GlockChi +000 098 006 ClearBel +000 098 007 XmasBell +000 098 008 VibraBel +000 098 009 DigiBell +003 098 010 MusicBel +003 098 011 Anal.Bel +000 098 016 ChorlBel +000 098 017 AirBells +000 098 018 BellHarp +000 098 019 Gamelmba +003 098 020 JUNO Bel +000 099 000 Atmosphr +000 099 001 WarmAtms +000 099 002 NylnHarp +000 099 003 Harp Vox +000 099 004 Holw.Rlz +000 099 005 NlnRhode +000 099 006 Ambient +003 099 007 Invisibl +003 099 008 PulseKey +003 099 009 NoisePno +000 100 000 Bright +003 100 001 ShneStar +003 100 002 OB Stab +003 100 008 Org Bell +000 101 000 Goblins +000 101 001 GobSynth +000 101 002 50sSciFi +003 101 003 Abduct +003 101 004 Auhbient +003 101 005 LFO Pad +003 101 006 RandmStr +003 101 007 RandomPd +003 101 008 Low Bird +003 101 009 FallDown +003 101 010 LFO Rave +003 101 011 LFO Horr +003 101 012 LFO Tech +003 101 013 Altrnate +003 101 014 UFO FX +003 101 015 GarglMan +003 101 016 Sweep FX +000 102 000 Echoes +000 102 001 EchoBell +000 102 002 Echo Pan +000 102 003 EchoPan2 +000 102 004 Big Pan +000 102 005 Reso Pan +000 102 006 WaterPno +003 102 008 Pan Seq. +003 102 009 Aqua +000 103 000 Sci-Fi +000 103 001 Sci-Fi 2 +003 103 008 DreamPad +003 103 016 NewCntry +003 103 017 7thAtmos +003 103 018 GalaxyWy +000 104 000 Sitar +000 104 001 Sitar 2 +002 104 002 DetSitar +003 104 003 Sitar 3 +004 104 004 SitarDrn +004 104 005 Sitar 4 +002 104 008 Tambra +002 104 016 Tamboura +000 105 000 Banjo +002 105 001 MuteBnjo +002 105 008 Rabab +003 105 009 San Xian +002 105 016 Gopichnt +002 105 024 Oud +003 105 028 Oud&Str +003 105 032 Pi Pa +000 106 000 Shamisen +002 106 001 Tsugaru +003 106 008 SynShami +000 107 000 Koto +003 107 001 Gu Zheng +000 107 008 Taisho +002 107 016 Kanoon +003 107 019 Kann&Chr +003 107 024 Oct Harp +000 108 000 Kalimba +003 108 008 Sanza +004 108 009 Bodhran +004 108 010 MuteBodh +000 109 000 Bagpipe +003 109 008 Didgrdoo +004 109 009 UillPipe +004 109 010 UillPpNm +004 109 011 UillPpOr +000 110 000 Fiddle +003 110 008 Er Hu +003 110 009 Gao Hu +000 111 000 Shanai +002 111 001 Shanai 2 +002 111 008 Pungi +002 111 016 Hichriki +003 111 024 Mizmar +003 111 032 Suona +003 111 033 Suona 2 +000 112 000 TnklBell +002 112 008 Bonang +002 112 009 Gender +002 112 010 GmlnGong +002 112 011 StGameln +003 112 012 Jang-Gu +004 112 013 Jegogan +004 112 014 Jublag +004 112 015 Pemade +002 112 016 RAMACymb +004 112 017 Kajar +004 112 018 Kelontuk +004 112 019 KelntkMt +004 112 020 KelntkSd +004 112 021 KopyakOp +004 112 022 KopyakMt +004 112 023 CengCeng +004 112 024 Reyoung +004 112 025 Kempur +004 112 032 JnglCrsh +004 112 040 JgCrsh!! +004 112 041 RideCym! +004 112 042 RideBel! +000 113 000 Agogo +002 113 008 Atargane +003 113 016 Tmbourin +000 114 000 SteelDrm +003 114 001 IslndMlt +000 115 000 Woodblok +000 115 008 Cascanet +003 115 016 Angklung +003 115 017 AngkRthm +003 115 024 FngrSnap +003 115 032 909 Clap +004 115 040 HandClp! +000 116 000 Taiko +003 116 001 SmallTko +000 116 008 ConcrtBD +004 116 009 Con.BDMt +003 116 016 JungleBD +003 116 017 TechnoBD +003 116 018 Bounce +004 116 024 KendnWad +004 116 025 Bebarngn +004 116 026 Pelegngn +004 116 027 Dholak +004 116 028 Dholak 2 +004 116 033 JnglBaDr +004 116 040 Kick1 !! +004 116 041 Kick2 !! +004 116 042 Kick3 !! +004 116 043 Kick4 !! +000 117 000 MelodTom +002 117 001 Real Tom +004 117 002 RealTom2 +004 117 003 Jazz Tom +004 117 004 BrushTom +000 117 008 MeloTom2 +002 117 009 Rock Tom +003 117 016 Rash SD +003 117 017 House SD +003 117 018 JungleSD +003 117 019 909 SD +004 117 024 JnglSnDr +004 117 040 Snare1!! +004 117 041 Snare2!! +004 117 042 Snare3!! +004 117 043 Snare4!! +004 117 044 Snare5!! +000 118 000 Syn Drum +000 118 008 808 Tom +000 118 009 ElecPerc +003 118 010 SinePerc +003 118 011 606 Tom +003 118 012 909 Tom +004 118 013 606DsTom +000 119 000 RevCymbl +002 119 001 RvCymbl2 +003 119 002 RvCymbl3 +004 119 003 RvCymbl4 +002 119 008 RevSnare +002 119 009 RvSnare2 +002 119 016 Rev Kick +002 119 017 RevConBD +002 119 024 Rev.Tom +002 119 025 Rev.Tom2 +004 119 026 Rev.Tom3 +004 119 027 Rev.Tom4 +004 119 040 RvSnr1!! +004 119 041 RvSnr2!! +004 119 042 RvSnr3!! +004 119 043 RvBDr1!! +004 119 044 RvBDr2!! +004 119 045 RvBDr3!! +004 119 046 RvClap!! +000 120 000 FretNoiz +000 120 001 CutNoise +000 120 002 Str.Slap +002 120 003 CutNoiz2 +002 120 004 DstCutNz +002 120 005 B.Slide +002 120 006 P.Scrape +003 120 008 Gtr.Fx!! +003 120 009 BartkPiz +003 120 010 Gtr.Slap +003 120 011 ChrdStrk +003 120 012 BiwaStrk +003 120 013 BiwaTrem +004 120 016 AcBaNz!! +004 120 017 DsGtNz!! +004 120 018 ElGtNz!! +004 120 019 ElGtNz!2 +004 120 020 GtStrk!! +004 120 021 GtSlide! +004 120 022 AcBaMute +004 120 023 AcBaTch. +004 120 024 AcBaAtk. +004 120 025 TCUpNoiz +004 120 026 TCDownMt +004 120 027 TC Up Mt +004 120 028 TCDownNz +004 120 029 DsGtUpNz +004 120 030 DsGtDown +004 120 031 DsGtDwn2 +004 120 032 DsGtMute +004 120 034 Gtr.Strk +004 120 035 StlGtrSl +004 120 036 StlGtSl2 +004 120 037 StlGtSl3 +004 120 038 StlGtSl4 +004 120 039 Gtr.Strk +004 120 040 GtrStrk2 +004 120 041 GtrStrk3 +004 120 042 GtrStrk4 +000 121 000 BrthNoiz +000 121 001 Fl.KClik +004 121 002 BrthNz!! +004 121 003 Fl. Brth +004 121 004 Fl.Brth2 +004 121 005 Fl.Brth3 +004 121 006 VoxBrth. +004 121 007 VoxBrth2 +004 121 008 TrombnNz +004 121 009 TrumptNz +000 122 000 Seashore +000 122 001 Shower +000 122 002 Thunder +000 122 003 Wind +000 122 004 Stream +000 122 005 Bubble +003 122 006 Wind 2 +004 122 007 Cricket +003 122 016 PinkNoiz +003 122 017 White Nz +000 123 000 Tweet +000 123 001 Dog Woof +000 123 002 HorseGlp +000 123 003 BirdTwit +002 123 004 Kitty +002 123 005 Growl +004 123 006 Growl 2 +004 123 007 FancyAni +004 123 008 Seal +000 124 000 Telphone +000 124 001 PhonCall +000 124 002 DoorSqek +000 124 003 DoorSlam +000 124 004 ScratchC +000 124 005 WindChim +002 124 007 Scratch2 +003 124 008 ScrachKy +003 124 009 TapeRwnd +003 124 010 PhonNoiz +003 124 011 MC500 Bp +004 124 012 Scratch3 +004 124 013 Scratch4 +004 124 014 Scratch5 +004 124 015 Scratch6 +004 124 016 Scratch7 +000 125 000 Helicptr +000 125 001 CarStart +000 125 002 CarTyreS +000 125 003 Car Pass +000 125 004 CarCrash +000 125 005 Siren +000 125 006 Train +000 125 007 JetPlane +000 125 008 Starship +000 125 009 Burst +003 125 010 Calclate +003 125 011 PercBang +004 125 012 Burner +004 125 013 Glas&Glm +004 125 014 Ice Ring +004 125 015 OverBlow +004 125 016 CrakBotl +004 125 017 PourBotl +004 125 018 Soda +004 125 019 CD Tray +004 125 020 AudioSwi +004 125 021 Key Type +004 125 022 TrainHrn +004 125 023 TrainPas +004 125 024 CarStar2 +004 125 025 Car Horn +004 125 026 Boeeeeen +004 125 027 RailCros +004 125 028 Compress +004 125 029 SwordBom +004 125 030 SwordCrs +004 125 031 Stab +004 125 032 Stab 2 +000 125 016 Coaster +000 126 000 Applause +000 126 001 LaughVox +000 126 002 ScreamVx +000 126 003 Punch +000 126 004 Heart +000 126 005 Footstep +002 126 006 Applauz2 +003 126 007 SmalClub +003 126 008 ApplzWav +004 126 009 BabyLaf. +003 126 016 Voice 1 +003 126 017 Voice 2 +003 126 018 Voice 3 +003 126 019 VoiceTah +003 126 020 VoiceWey +003 126 022 Vx Kikit +003 126 023 VxComeOn +003 126 024 Voice Ow +003 126 025 VoiceWoo +003 126 026 VoiceHie +000 127 000 Gunshot +000 127 001 MchinGun +000 127 002 LaserGun +000 127 003 Xplosion +003 127 004 Eruption +003 127 005 Big Shot +004 127 006 Xploshn2 +126 000 000 BritePno +126 001 000 BritePno +126 002 000 BritePno +126 003 000 HnkyTonk +126 004 000 GrandPno +126 005 000 BritePno +126 006 000 BritePno +126 007 000 El.Piano +126 008 000 Det.EP 1 +126 009 000 ElPiano2 +126 010 000 SteelGtr +126 011 000 SteelGtr +126 012 000 12StrGtr +126 013 000 Funk Gtr +126 014 000 MutedGtr +126 015 000 SlapBass +126 016 000 SlapBass +126 017 000 SlapBass +126 018 000 SlapBass +126 019 000 SlapBa 2 +126 020 000 SlapBa 2 +126 021 000 SlapBa 2 +126 022 000 SlapBa 2 +126 023 000 FngrBass +126 024 000 FngrBass +126 025 000 PickBass +126 026 000 PickBass +126 027 000 Fretless +126 028 000 AcouBass +126 029 000 ChoirAah +126 030 000 ChoirAah +126 031 000 ChoirAah +126 032 000 ChoirAah +126 033 000 Slow Str +126 034 000 Strings +126 035 000 Syn.Str3 +126 036 000 Syn.Str3 +126 037 000 DrawOrgn +126 038 000 DrawOrgn +126 039 000 DrawOrgn +126 040 000 PercOrgn +126 041 000 DrawOrgn +126 042 000 DrawOrgn +126 043 000 PercOrgn +126 044 000 PercOrgn +126 045 000 PercOrgn +126 046 000 Trumpet +126 047 000 Trumpet +126 048 000 Trombone +126 049 000 Trombone +126 050 000 Trombone +126 051 000 Trombone +126 052 000 Trombone +126 053 000 Trombone +126 054 000 Alto Sax +126 055 000 TenorSax +126 056 000 Bari.Sax +126 057 000 Alto Sax +126 058 000 BrasSect +126 059 000 BrasSect +126 060 000 SynBrass +126 061 000 SynBrass +126 062 000 BrasSect +126 063 000 Orch.Hit +127 000 000 GrandPno +127 001 000 BritePno +127 002 000 MelloGrP +127 003 000 El.Piano +127 004 000 ElPiano2 +127 005 000 ElPiano3 +127 006 000 ElPiano4 +127 007 000 HnkyTonk +127 008 000 ElecOrgn +127 009 000 ElecOrg2 +127 010 000 ElecOrg3 +127 011 000 ElecOrg4 +127 012 000 PipeOrgn +127 013 000 PipeOrg2 +127 014 000 PipeOrg3 +127 015 000 Acordion +127 016 000 Hrpschrd +127 017 000 Hpschrd2 +127 018 000 Hpschrd3 +127 019 000 Clvichrd +127 020 000 Clavi. 2 +127 021 000 Clavi. 3 +127 022 000 Celesta +127 023 000 Celesta2 +127 024 000 SynBrass +127 025 000 SynBras2 +127 026 000 SynBras3 +127 027 000 SynBras4 +127 028 000 Syn.Bass +127 029 000 SynBass2 +127 030 000 SynBass3 +127 031 000 SynBass4 +127 032 000 Fantasy +127 033 000 HarmoPan +127 034 000 Chorale +127 035 000 Glasses +127 036 000 SoundTrk +127 037 000 Atmosphr +127 038 000 WarmBell +127 039 000 FunnyVox +127 040 000 EchoBell +127 041 000 Ice Rain +127 042 000 Oboe2001 +127 043 000 Echo Pan +127 044 000 Dr. Solo +127 045 000 Sch.Daze +127 046 000 Belsingr +127 047 000 Sqr.Lead +127 048 000 Str Sect +127 049 000 StrSect2 +127 050 000 StrSect3 +127 051 000 Pizz.Str +127 052 000 Violin +127 053 000 Violin 2 +127 054 000 Cello +127 055 000 Cello 2 +127 056 000 Contrbas +127 057 000 Harp +127 058 000 Harp 2 +127 059 000 Guitar +127 060 000 Guitar 2 +127 061 000 Elec.Gtr +127 062 000 ElecGtr2 +127 063 000 Sitar +127 064 000 AcouBass +127 065 000 AcouBas2 +127 066 000 ElecBass +127 067 000 ElecBas2 +127 068 000 SlapBass +127 069 000 SlpBass2 +127 070 000 Fretless +127 071 000 Fretles2 +127 072 000 Flute +127 073 000 Flute 2 +127 074 000 Piccolo +127 075 000 Piccolo2 +127 076 000 Recorder +127 077 000 Pan Pipe +127 078 000 SprnoSax +127 079 000 Alto Sax +127 080 000 TenorSax +127 081 000 Bari.Sax +127 082 000 Clarinet +127 083 000 Clrinet2 +127 084 000 Oboe +127 085 000 Eng.Horn +127 086 000 Bassoon +127 087 000 Hrmonica +127 088 000 Trumpet +127 089 000 Trumpet2 +127 090 000 Trombone +127 091 000 Trombon2 +127 092 000 FrchHorn +127 093 000 FrHorn 2 +127 094 000 Tuba +127 095 000 BrasSect +127 096 000 BrasSec2 +127 097 000 Vibrafon +127 098 000 Vibrfon2 +127 099 000 SynMalet +127 100 000 Windbell +127 101 000 Glocken +127 102 000 TubulBel +127 103 000 Xylophon +127 104 000 Marimba +127 105 000 Koto +127 106 000 Sho +127 107 000 Shakhchi +127 108 000 Whistle +127 109 000 Whistle2 +127 110 000 BotlBlow +127 111 000 BrthPipe +127 112 000 Timpani +127 113 000 MelodTom +127 114 000 Dp Snare +127 115 000 ElecPerc +127 116 000 El.Perc2 +127 117 000 Taiko +127 118 000 TaikoRim +127 119 000 Cymbal +127 120 000 Cascanet +127 121 000 Triangle +127 122 000 Orch.Hit +127 123 000 Telephon +127 124 000 Tweet +127 125 000 1NoteJam +127 126 000 WaterBel +127 127 000 JnglTune +000 000 120 Standard +002 001 120 Standrd2 +003 002 120 Standrd3 +004 002 120 StdrdL/R +000 008 120 Room Kit +003 009 120 HipHopKt +003 010 120 JungleKt +003 011 120 TechnoKt +004 012 120 Room L/R +004 013 120 HouseKit +000 016 120 PowerKit +000 024 120 Electro +000 025 120 AnalogKt +002 026 120 DanceKit +003 027 120 CR-78 Kt +003 028 120 TR-606Kt +003 029 120 TR-707Kt +003 030 120 Anal.Kt2 +000 032 120 Jazz Kit +004 033 120 Jazz L/R +000 040 120 BrushKit +004 041 120 BrushKt2 +004 042 120 Brush2LR +000 048 120 Orch.Kit +002 049 120 EthnicKt +002 050 120 KikSnare +004 051 120 KkSnare2 +003 052 120 AsianKit +003 053 120 CymbalKt +004 054 120 GamelnKt +004 055 120 GamlnKt2 +000 056 120 SFX Kit +002 057 120 RyFX Kit +003 058 120 RyFX2 Kt +004 059 120 RyFX3 Kt +004 060 120 SFX Kt 2 +004 061 120 VoiceKit +004 062 120 CymblKt2 +000 127 120 MT-32 Kt \ No newline at end of file diff --git a/data/bank/kross.tsv b/data/bank/kross.tsv new file mode 100644 index 00000000..69c32187 --- /dev/null +++ b/data/bank/kross.tsv @@ -0,0 +1,36 @@ +MSB LSB PRG NME +063 000 000 GrandPno +063 000 064 EPRBSW12 +063 000 087 EPDynoEC +063 001 000 BrtClvBD +063 001 006 DstClvBD +063 001 029 LuvSngOr +063 001 049 RkPercOr +063 002 000 Angklung +063 002 001 StStrngs +063 002 055 Cathedrl +063 003 000 HdAltoSx +063 003 009 MemoryLd +063 003 025 RudeLead +063 004 000 BadDream +063 004 011 MirrorPd +063 004 019 ShmSpkPd +063 004 025 PalwanPd +063 004 027 SwirlPad +063 004 035 UVibePad +063 004 040 LocoMtiv +063 004 088 PsycoGtr +063 004 099 EFngrBa2 +063 004 101 EFngrBa4 +063 004 117 KikBaDcy +063 005 000 Saw Bass +063 005 035 RockKit2 +063 005 044 JazHopKt +063 005 059 TropicKt +063 005 072 BD&SDCl1 +063 005 089 TrpclMlt +063 005 105 Gaisya +063 005 106 Tsugaru +063 005 107 ShkMondo +063 005 108 KtoFuryu +063 005 109 MiyabiHt \ No newline at end of file diff --git a/data/bank/kross2_raw.tsv b/data/bank/kross2_raw.tsv new file mode 100644 index 00000000..04256d3f --- /dev/null +++ b/data/bank/kross2_raw.tsv @@ -0,0 +1,1153 @@ +MSB PRG LSB NME +063 000 000 Kross Grand Piano 1 +063 000 001 Kross Grand Piano 2 +063 000 002 Stereo Grand Piano +063 000 003 Bright Grand Piano 1 +063 000 004 Bright Grand Piano 2 +063 000 005 Rock Grand Piano +063 000 006 Stage Grand Piano 1 +063 000 007 Stage Grand Piano 2 +063 000 008 Vivid Grand Piano +063 000 009 Warm Grand Piano +063 000 010 Dark Grand Piano +063 000 011 Pop Grand Piano +063 000 012 Reverb Grand Piano +063 000 013 Stereo A.Piano +063 000 014 Bright A.Piano +063 000 015 Chorus A.Piano +063 000 016 Upright Piano 1 +063 000 017 Upright Piano 2 +063 000 018 Upright Piano 3 +063 000 019 Bar Room Piano +063 000 020 Monaural A.Piano +063 000 021 Bright Mono Piano +063 000 022 Dark Mono Piano +063 000 023 Bright Mono Grand +063 000 024 Dark Mono Grand +063 000 025 Comp Mono Grand +063 000 026 Hammer Mono Piano +063 000 027 Detuned Piano +063 000 028 Honkey Tonky +063 000 029 Old Story Grand +063 000 030 Very Old Grand +063 000 031 Fortepiano +063 000 032 SG-1D Piano 1 +063 000 033 SG-1D Piano 2 +063 000 034 M1 Piano +063 000 035 Electric Grand 1 +063 000 036 Electric Grand 2 +063 000 037 Chorus E.Grand 1 +063 000 038 Chorus E.Grand 2 +063 000 039 Dual Piano +063 000 040 Chillout Piano +063 000 041 Sad Piano +063 000 042 Damper Piano +063 000 043 Piano Dub Wheel +063 000 044 Lo FS Piano Wheel +063 000 045 Piano + FM E.Piano +063 000 046 Alone Piano +063 000 047 Piano+Dyno E.Piano +063 000 048 Romance Piano +063 000 049 Sparkling Piano +063 000 050 A.Piano + Strings +063 000 051 A.Piano+Orch Pad 1 +063 000 052 A.Piano+Orch Pad 2 +063 000 053 Grand Piano+Strings +063 000 054 Grand Pf+Orch Pad1 +063 000 055 Grand Pf+Orch Pad2 +063 000 056 Grand Pf+Small Str. +063 000 057 Grand Pf+Str.Pad 1 +063 000 058 Grand Pf+Str.Pad 2 +063 000 059 A.Piano + Synth Pad +063 000 060 90's Piano +063 000 061 Celesta +063 000 062 Toy Piano +063 000 063 Romance ToyPiano +063 000 064 E.P.Suit R&B SW1/2 +063 000 065 E.P.Suit R&B Phaser +063 000 066 E.P.Suit Preamp +063 000 067 E.P.Suit Dist. SW2 +063 000 068 E.P.Suit Dist&Phaser +063 000 069 E.P.Suit 1984 +063 000 070 E.P.Suit Classic Bell +063 000 071 E.P.Suit Mark I Line +063 000 072 E.P.Suit Mark I Silver +063 000 073 E.P.Suit Tremolo +063 000 074 E.P.Suit Cho&U-Vibe +063 000 075 EP Suit U-Vibe&Echo +063 000 076 E.P.Suit BiPhase MW +063 000 077 E.P.Suit Phaser 1 +063 000 078 E.P.Suit Phaser 2 +063 000 079 E.P.Suit Preamp&Wah +063 000 080 E.P.Suit WahWah +063 000 081 E.P.Suit BPM Delay +063 000 082 E.P.Suit Mark V +063 000 083 E.P.Suit Hard +063 000 084 E.P.Dyno Studio +063 000 085 E.P.Dyno EQ/Chorus +063 000 086 E.P.Dyno Chorus +063 000 087 EP Dyno Exciter/Cho +063 000 088 E.P.Reed Wah Wheel +063 000 089 E.P.Reed Mellow +063 000 090 E.P.Reed Tremolo +063 000 091 E.P.Reed Overdrive +063 000 092 E.P.Reed Rockin' +063 000 093 E.P.Reed Chorus +063 000 094 E.P.Reed Phaser +063 000 095 SuitPure E.P.+Pad +063 000 096 SuitBright E.P.+Pad 1 +063 000 097 SuitBright E.P.+Pad 2 +063 000 098 SuitHard+FM E.Piano +063 000 099 FM E.Piano Deluxe 1 +063 000 100 FM E.Piano Deluxe 2 +063 000 101 FM E.Piano Classic 1 +063 000 102 FM E.Piano Classic 2 +063 000 103 FM E.Piano Classic 3 +063 000 104 FM E.Piano + Strings +063 000 105 FM E.P. + E.P.Pad 1 +063 000 106 FM E.P. + E.P.Pad 2 +063 000 107 FM E.Piano+Syn Pad +063 000 108 FM Suitcase E.P. +063 000 109 Chorus FM+Suit E.P. +063 000 110 FM E.P. + Dyno E.P. +063 000 111 Pad E.Piano 1 +063 000 112 Pad E.Piano 2 +063 000 113 Pad E.Piano 3 +063 000 114 Hybrid Phaser E.P. +063 000 115 E.P.Pad + Synth +063 000 116 Super Grand +063 000 117 Phantom E.Piano +063 000 118 Tablet E.Piano SW2 +063 000 119 Tablet E.Harpsi SW2 +063 000 120 Clavi AC Bright +063 000 121 Clavi AC Mellow +063 000 122 Clavi AC Distortion +063 000 123 Clavi AC Velo Wah +063 000 124 Clavi AD Bright +063 000 125 Clavi AD Mellow +063 000 126 Clavi AD Distortion +063 000 127 Clavi AD Velo Wah +063 001 000 Clavi BC Bright +063 001 001 Clavi BC Mellow +063 001 002 Clavi BC Distortion +063 001 003 Clavi BC Velo Wah +063 001 004 Clavi BD Bright +063 001 005 Clavi BD Mellow +063 001 006 Clavi BD Distortion +063 001 007 Clavi BD Velo Wah +063 001 008 Clavi Touch Wah +063 001 009 Higher Ground Clavi +063 001 010 Superstition Clavi +063 001 011 Kid Charlmagne Clavi +063 001 012 Trampled Under Clavi +063 001 013 Clavi Phaser SW1 +063 001 014 WS Clavi VeloSwitch +063 001 015 Pure Clavichord +063 001 016 Harpsicord Single +063 001 017 Harpsicord Double 1 +063 001 018 Harpsicord Double 2 +063 001 019 E.Organ Jazz Perc.1 +063 001 020 E.Organ Jazz Perc.2 +063 001 021 E.Organ Jazz Perc.3 +063 001 022 E.Organ CX3 Perc. +063 001 023 E.Organ Mondo Perc. +063 001 024 E.Organ 88 Perc. +063 001 025 E.Organ Entertainer +063 001 026 E.Organ 888 +063 001 027 E.Organ Warm OD +063 001 028 E.Organ Bossa +063 001 029 E.Organ Love Songs +063 001 030 E.Organ Gospel +063 001 031 E.Organ Comp. +063 001 032 E.Org Drawbars 1 MW +063 001 033 E.Org Drawbars 2 MW +063 001 034 E.Organ Manual Comp. +063 001 035 E.Org Vibrato/Chorus +063 001 036 E.Organ 800000048 +063 001 037 E.Organ 880000048 +063 001 038 E.Organ WarmGospel +063 001 039 E.Organ Tremolo +063 001 040 E.Organ Full->Soft +063 001 041 E.Organ BX3 Full +063 001 042 E.Organ Rock Full +063 001 043 E.Organ Vintage +063 001 044 E.Organ Church +063 001 045 E.Organ Ballad +063 001 046 E.Organ Blues/Slow +063 001 047 E.Organ Blues/Fast +063 001 048 E.Organ Rock OD +063 001 049 E.Organ Rock Prec. +063 001 050 E.Organ Master Rock +063 001 051 E.Organ Gospel Perc. +063 001 052 M1 Organ +063 001 053 E.Organ Vox Full +063 001 054 E.Organ VoxTabs SW2 +063 001 055 E.Organ 60's Sound +063 001 056 E.Organ FarPro 1 +063 001 057 E.Organ FarPro 2 +063 001 058 E.Organ Combo +063 001 059 FollowYou/Me Organ +063 001 060 SineWheel Organ +063 001 061 VS Church Organ +063 001 062 DWGS Pop Organ +063 001 063 DWGS Church Organ +063 001 064 SineWheel 16' +063 001 065 SineWheel 5+1/3' +063 001 066 SineWheel 8' +063 001 067 SineWheel 4' +063 001 068 SineWheel 2+2/3' +063 001 069 SineWheel 2' +063 001 070 SineWheel 1+3/5' +063 001 071 SineWheel 1+1/3' +063 001 072 SineWheel 1'/Perc. +063 001 073 Pipe Organ Medium +063 001 074 Pipe Organ Full 1 +063 001 075 Pipe Organ Full 2 +063 001 076 Pipe Organ Mixture +063 001 077 Pipe Organ Positive +063 001 078 Pipe Positive/Mixture +063 001 079 Pipe Organ Reed +063 001 080 Street Organ +063 001 081 Accordion 8'+8' +063 001 082 Accordion 8'+4' +063 001 083 Accordion Stylish 1 +063 001 084 Accordion Stylish 2 +063 001 085 Musette + Principal +063 001 086 Bandoneon +063 001 087 Fisa 1 +063 001 088 Fisa 2 +063 001 089 Fisa 3 +063 001 090 Pump/Reed Organ +063 001 091 Key Flute +063 001 092 Ensemble Bells +063 001 093 Puffle Bells +063 001 094 Breathy Bells +063 001 095 Heaven Bells +063 001 096 Soft Ensemble Bells +063 001 097 DWGS Bells 1 +063 001 098 DWGS Bells 2 +063 001 099 Tinkle Bells +063 001 100 Magic Bells +063 001 101 Lo FS Bells +063 001 102 Delayed Bells +063 001 103 Pure Satin Bells +063 001 104 FM Metal Bells +063 001 105 FM Glass Bells 1 +063 001 106 FM Glass Bells 2 +063 001 107 FM Tubular Bells +063 001 108 FM Bells +063 001 109 Krystal Bells +063 001 110 Cathedral Bells +063 001 111 Tubular Bells +063 001 112 Toy Hand Bells +063 001 113 Music Box +063 001 114 Plated Bells +063 001 115 Glockenspiel +063 001 116 Vibraphone +063 001 117 Steel Tongue Drum +063 001 118 Steel Drum +063 001 119 Gamelan +063 001 120 Sarna Bell +063 001 121 Kalimba +063 001 122 Xylophone +063 001 123 Marimba +063 001 124 MondoRimba +063 001 125 Skull Mallets +063 001 126 Tribal Mallets +063 001 127 Log Drum +063 002 000 Angklung +063 002 001 Stereo Strings 1 +063 002 002 Stereo Strings 2 +063 002 003 Lush Strings 1 +063 002 004 Lush Strings 2 +063 002 005 Bright Strings +063 002 006 Arco Stereo Strings +063 002 007 Legato Strings 1 +063 002 008 Legato Strings 2 +063 002 009 Symphonic Strings +063 002 010 Slow Strings +063 002 011 Platinum Strings +063 002 012 Camera Strings +063 002 013 Few Bows Strings +063 002 014 Intimate Strings +063 002 015 Arco Pop Strings +063 002 016 Pop Strings +063 002 017 Octave Strings +063 002 018 Maestoso Strings +063 002 019 Pizz Ensemble SW2 +063 002 020 Pizz/Str.Quartet SW1 +063 002 021 Str.Quartet/Pizz SW1 +063 002 022 Violin 1 SW1 +063 002 023 Violin 2 SW1 +063 002 024 Viola 1 SW1 +063 002 025 Viola 2 SW1 +063 002 026 Cello 1 SW1 +063 002 027 Cello 2 SW1 +063 002 028 Contrabass 1 SW1 +063 002 029 Contrabass 2 SW1 +063 002 030 New Age Strings +063 002 031 Synth String Pad +063 002 032 Pure Analog Pad +063 002 033 Super Analog Pad +063 002 034 Analog Strings +063 002 035 Ana-2-Real Strings +063 002 036 Hybrid String Pad +063 002 037 Progressive Ana Str. +063 002 038 Mello MK II Strings +063 002 039 Mello 400S Strings +063 002 040 C-Berlin Strings 1 +063 002 041 C-Berlin Strings 2 +063 002 042 Tape Str.Oct.Mixed +063 002 043 Tape Strings Dual +063 002 044 Tronical Strings +063 002 045 Aaah Voices Stereo +063 002 046 Aah Voises Dynamic +063 002 047 Oooh Voices Stereo +063 002 048 Ooh L&R Airy Voices +063 002 049 Ooh Voices Light +063 002 050 Light Choir +063 002 051 Choir Of Angels +063 002 052 Classical Choir +063 002 053 Backing Vocals +063 002 054 Twilight Choir +063 002 055 Cathedral Choir +063 002 056 Splash Choir +063 002 057 Soundtrack Choir +063 002 058 Mixed Registers +063 002 059 Professional Choir +063 002 060 Morphing Voices +063 002 061 Infinite Choir +063 002 062 Take Voice +063 002 063 V.Switch Vocals +063 002 064 Mello Style Choir +063 002 065 Mello 8Voice Choir +063 002 066 Mello Classic Choir +063 002 067 Mello Stereo Choir +063 002 068 Vocoder Machine 1 +063 002 069 Vocoder Machine 2 +063 002 070 Vocoder Ah +063 002 071 Fresh Vox +063 002 072 Full Vox +063 002 073 Arctic Voices +063 002 074 Tranquil SW2 +063 002 075 Voice Doo +063 002 076 Voxology +063 002 077 Velo Voxster +063 002 078 Open Brass +063 002 079 Sharp Brass +063 002 080 Tight Brass +063 002 081 Big Brass +063 002 082 Session Brass +063 002 083 Expressive Brass +063 002 084 Brass Section +063 002 085 Trumpets X-fade +063 002 086 Warm Brass +063 002 087 Film Brass +063 002 088 Sforzando Brass +063 002 089 Octave Brass 1 +063 002 090 Octave Brass 2 +063 002 091 Trombone Ensemble +063 002 092 Tp/Tb Muted +063 002 093 Tp/Tb Muted Oct +063 002 094 French Horn Ens +063 002 095 Horns & Ensemble +063 002 096 Brass Ens & Tubas +063 002 097 Orchestral Brass +063 002 098 Sforzando Orchestra +063 002 099 T.O.P Section +063 002 100 Brass & Reed +063 002 101 Brass&Saxophones +063 002 102 Brass&Octave Sax +063 002 103 Trumpets Dynamic +063 002 104 Trumpets Octave +063 002 105 Trombones 4-Way +063 002 106 Trumpet Sensitive +063 002 107 Trumpet Overblown +063 002 108 Trumpet Muted +063 002 109 Flugelhorn +063 002 110 Trombone +063 002 111 Trombone Muted +063 002 112 French Horn +063 002 113 Tuba +063 002 114 Flute Vibrato +063 002 115 Silver Flute +063 002 116 Attack Flute +063 002 117 Voice Flute +063 002 118 Piccolo Flute +063 002 119 Mello MK II Flutes +063 002 120 Clarinet +063 002 121 Double Reed Family +063 002 122 Oboe +063 002 123 English Horn +063 002 124 Bassoon +063 002 125 Sax Ensemble +063 002 126 Soprano Sax +063 002 127 Alto Sax Soft +063 003 000 Alto Sax Hard +063 003 001 Tenor Sax Soft +063 003 002 Tenor Sax Hard +063 003 003 Baritone Sax +063 003 004 Harmonica +063 003 005 Recorder +063 003 006 Shakuhachi +063 003 007 ZEN Priest Split +063 003 008 Spit Bottle +063 003 009 Memory Lead SW2 +063 003 010 DW8000 Lead 1 +063 003 011 Espress Lead +063 003 012 Sweet MG Lead +063 003 013 Fat Saw Lead +063 003 014 Glide Lead +063 003 015 PWM Lead +063 003 016 DW8000 Lead 2 +063 003 017 Lucky Man Lead +063 003 018 Old Square Lead SW1 +063 003 019 Bright Square Lead +063 003 020 Unison Square Lead +063 003 021 Simple Square Lead +063 003 022 Simple Pulse Lead +063 003 023 Sine Lead +063 003 024 InfinityLead MW&SW +063 003 025 Rude Lead +063 003 026 Wailing Lead +063 003 027 Cold Water Lead +063 003 028 BIG Lead +063 003 029 Rapper's D'light Lead +063 003 030 The Executor Lead +063 003 031 Anthem Lead +063 003 032 Bigroom Lead +063 003 033 Unison Saw Lead +063 003 034 Dist EDM Lead +063 003 035 EDM Voice Lead +063 003 036 Progressive Lead +063 003 037 Hip Hop Lead +063 003 038 Deep Soul Lead SW2 +063 003 039 Simple 5th Saw Lead +063 003 040 Vintage Lead +063 003 041 Cheap Lead Wheel +063 003 042 Reso Lead +063 003 043 Operator Lead +063 003 044 Tom Sawyer Bs/Lead +063 003 045 Bass & Lead Boys +063 003 046 Fat Sync Lead +063 003 047 MS2K FastSync Lead +063 003 048 Deep 5th EDM Lead +063 003 049 Eletrik Piano Lead +063 003 050 Tropical Lead 1 +063 003 051 Tropical Lead 2 +063 003 052 Noisy Stabber Neo +063 003 053 Unison Power Synth +063 003 054 Bold Anthem Synth +063 003 055 Transer Synth +063 003 056 Anthem Trans MW +063 003 057 Fast Unison Synth +063 003 058 Leader of Trance +063 003 059 Velo Twang +063 003 060 Rat Chords +063 003 061 Bold Octaves +063 003 062 Power Pad +063 003 063 Velo Power Pad +063 003 064 Unison Pad +063 003 065 Old Poly Synth 1 +063 003 066 Old Poly Synth 2 +063 003 067 Saw Ensemble Synth +063 003 068 Chip Tune Synth +063 003 069 Disco Synth Pad +063 003 070 Jump SynBrass +063 003 071 Final SynBrass +063 003 072 Synth Fanfare +063 003 073 Saw Synth Brass +063 003 074 HyperComped Chords +063 003 075 Gargle Synth +063 003 076 Olive Anthem Chords +063 003 077 Sugar Smash Pad +063 003 078 Cannon Poly Synth +063 003 079 Cannon Synth E.P. +063 003 080 Ripper Anthem Synth +063 003 081 Different Ways Poly +063 003 082 Huge Planet Syn SW1 +063 003 083 Vintage Saw Synth +063 003 084 Detuned Poly Synth +063 003 085 Later Progressive Ld +063 003 086 Follow You Lead +063 003 087 Tricky MODDetune Ld +063 003 088 Oxygen Lead +063 003 089 80's Square Poly +063 003 090 Gliding Square Lead +063 003 091 Pop Synth Pad +063 003 092 Future Pad +063 003 093 Rezbo Pad +063 003 094 CheapCool 80's Poly +063 003 095 Shynth Ex Clavi +063 003 096 Mean Rez Clavi +063 003 097 EDM Chordplay 1 +063 003 098 EDM Chordplay 2 +063 003 099 Futur Chordal +063 003 100 Fuzz Felt +063 003 101 Pro Sync +063 003 102 EP Annihilation SW2 +063 003 103 Sine Pad +063 003 104 Swirl Sine Pad +063 003 105 Synth Filter Pad +063 003 106 Search Pad +063 003 107 Dark Brass Pad +063 003 108 Sine On Pad +063 003 109 Prayer Pad +063 003 110 Tinklin Pad +063 003 111 Squ Voice Pad +063 003 112 Square Pad SW1 +063 003 113 5th Pad SW1/2 +063 003 114 String Res Pad +063 003 115 Flashy AnaHarpy +063 003 116 Angelic Choir +063 003 117 The Pad +063 003 118 The E.P.Pads +063 003 119 Attacky Pad +063 003 120 Poppin' Pad +063 003 121 Africa Brass +063 003 122 80 Pad SW2/PW/MW +063 003 123 Soft SynBrass +063 003 124 Progressive SynBrs +063 003 125 Matrix Crispy +063 003 126 Chronologie +063 003 127 Aero Pad +063 004 000 Bad Dream Waltzer +063 004 001 Alexa Pad +063 004 002 Solaris Pad +063 004 003 The X Pad +063 004 004 Swish Pad +063 004 005 Sweet Pad +063 004 006 Givin' Pop +063 004 007 Cosmic Synth +063 004 008 Syn Sweeper +063 004 009 Fine HPF Sweep +063 004 010 Rez Down +063 004 011 Mirrored +063 004 012 Wave Pad +063 004 013 Meditator +063 004 014 Chant +063 004 015 1984 Split +063 004 016 Surprising Pad +063 004 017 Pods in the Pad +063 004 018 Dolphin Pad +063 004 019 Shimmer Sparkle Pad +063 004 020 Steelish Pad +063 004 021 Widescreen Pad +063 004 022 Flying +063 004 023 Aqua Phonics +063 004 024 Flare Pad +063 004 025 Palawan Pad +063 004 026 Moon Cycles +063 004 027 Swirl Pad +063 004 028 New Voyage +063 004 029 Great Wall +063 004 030 Off Beat Dark Pad +063 004 031 Off Beat Bright Pad +063 004 032 Pump Pad +063 004 033 ClayPot-VoxTriplets +063 004 034 Chilly Pulsar Love +063 004 035 U-Vibe Pad +063 004 036 Butterfly Pad +063 004 037 Vox Pulse +063 004 038 BPM Flashlight Pad +063 004 039 eMoTiOn +063 004 040 Loco Motiv +063 004 041 Atmospheric Pulse +063 004 042 Rhythm Lead +063 004 043 LFO 5th Wave +063 004 044 ToneWheel Motion +063 004 045 Minimal Seq +063 004 046 8BIT Land +063 004 047 Dancing Voice +063 004 048 Spectral Wave Dance +063 004 049 Kross Wave Motion +063 004 050 Wave Sequencer +063 004 051 Bell Wave Seq +063 004 052 Pad & Bell Wave Seq +063 004 053 LFO Run Pad SW1 +063 004 054 Nylon Guitar 1 +063 004 055 Nylon Guitar 2 +063 004 056 Flamenco Guitar +063 004 057 Nylon Gtr.Studio +063 004 058 Nylon Guitar&Strings +063 004 059 A.Guitar Large Body +063 004 060 A.Guitar+Noise SW1 +063 004 061 A.Gtr.Dynamic Pick +063 004 062 A.Guitar Finger +063 004 063 Sitar Guitar +063 004 064 Acoustish +063 004 065 A.Guitar 12 String +063 004 066 E.Guitar+Twin +063 004 067 E.Guitar Dynamic 1 +063 004 068 E.Guitar Dynamic 2 +063 004 069 E.Guitar Funky +063 004 070 E.Guitar Delay +063 004 071 E.Guitar Crunch +063 004 072 E.Guitar Chorus +063 004 073 E.Guitar VolumeSwell +063 004 074 E.Guitar Tremolo +063 004 075 E.Guitar Semi Dist. +063 004 076 E.Guitar Rotary FX +063 004 077 E.Gtr.Tweed Phaser +063 004 078 E.Guitar U-Vibe +063 004 079 E.Guitar Auto Wah +063 004 080 E.Gtr.Screaming Tube +063 004 081 E.Guitar Filthy +063 004 082 E.Guitar Mute Dist. +063 004 083 E.Guitar Wet Dist. +063 004 084 E.Guitar PowerChord +063 004 085 E.Gtuitar Vox Wah +063 004 086 E.Guitar Jazz +063 004 087 E.Guitar Pedal Steel +063 004 088 Psyco Guitar +063 004 089 Electronica Guitar +063 004 090 Ukulele +063 004 091 Banjo +063 004 092 Mandolin +063 004 093 Santur +063 004 094 Sitar & Tambura +063 004 095 Koto Velo.Bend +063 004 096 Harp 1 +063 004 097 Harp 2 +063 004 098 E.Bass Finger 1 +063 004 099 E.Bass Finger 2 +063 004 100 E.Bass Finger 3 +063 004 101 E.Bass Finger 4 +063 004 102 E.Bass Pick 1 +063 004 103 E.Bass Pick 2 +063 004 104 E.Bass Pick 3 +063 004 105 E.Bass Pick 4 +063 004 106 E.Bass Pick Bed +063 004 107 E.Bass Saturated +063 004 108 E.Bass Thumb 1 +063 004 109 E.Bass Thumb 2 +063 004 110 E.Bass Fretless 1 +063 004 111 E.Bass Fretless 2 +063 004 112 E.Bass Fretless Oct +063 004 113 Acoustic Bass1 SW2 +063 004 114 Acoustic Bass2 SW2 +063 004 115 Acoustic Bass3 SW2 +063 004 116 Acoustic Bass Old +063 004 117 Kick Bass/Decay +063 004 118 Decayed Bass +063 004 119 THAT SubBass Kick +063 004 120 Kick Bass/Gate +063 004 121 Deep KIK SubSynth +063 004 122 Sine Bass SW1 +063 004 123 Deep Triangle Bass +063 004 124 Dark R&B Bass +063 004 125 Digi Bass +063 004 126 Boost Synth Bass +063 004 127 Tight Bass SW2 +063 005 000 Saw Bass +063 005 001 800DV Saw Bass +063 005 002 Solid Bass +063 005 003 Octave Bass +063 005 004 Analog Funk Bass +063 005 005 Octave MG Bass +063 005 006 Greasy Synth Bass +063 005 007 VeloBark Bass +063 005 008 Acid Syn Bass +063 005 009 Square Bass +063 005 010 Popin' Squ Bass +063 005 011 800DV Square Bass +063 005 012 Growler Bass +063 005 013 Euro 8va Seq Bass +063 005 014 Hard Square Bass +063 005 015 Detuned Euro Bass +063 005 016 Vintage 80's Bass +063 005 017 Snappy 5ths Bass +063 005 018 Dub Tempest Bs +063 005 019 Dub PsyClone Bs +063 005 020 Ducking Bass +063 005 021 DS Hold Bass SW2 +063 005 022 Bs Pulse Mod Wheel +063 005 023 Wobble Nation Bass +063 005 024 Bs Pulse Triplet MW +063 005 025 Nasty Bass +063 005 026 Widow Bass +063 005 027 Octa Quak Bass +063 005 028 Ruff'Blade Bass +063 005 029 Hard Synth Bass +063 005 030 Hard Sync Bass +063 005 031 Organ Bass +063 005 032 Housey Bass +063 005 033 Rock Kit 1 +063 005 034 Rock Kit 1 Mono +063 005 035 Rock Kit 2 +063 005 036 Jazz Kit +063 005 037 Jazz Kit Mono +063 005 038 Jazz/Brush Kit +063 005 039 Wild Kit +063 005 040 Power Kit 1 +063 005 041 Power Kit 2 +063 005 042 Basic Kit 1 +063 005 043 Basic Kit 2 +063 005 044 Jazzy Hop Kit +063 005 045 Urban Hip Hop Kit +063 005 046 Hip Hop Kit 1 +063 005 047 Hip Hop Kit 2 +063 005 048 Trapper Kit +063 005 049 Electronic R&B Kit +063 005 050 Nu R&B Kit +063 005 051 R&B Kit +063 005 052 Breakbeat Kit +063 005 053 Drum'n'Bass Kit +063 005 054 Breaks Kit +063 005 055 Bigroom Kit +063 005 056 Nu EDM Kit +063 005 057 Dubstep Kit +063 005 058 Moombahton Kit +063 005 059 Tropical Kit +063 005 060 Trance Kit +063 005 061 House Kit +063 005 062 Tekno Klub Kit +063 005 063 Minimal Kit +063 005 064 Nica/Glitch Kit +063 005 065 Analog Kit +063 005 066 Mad Analog Kit +063 005 067 Tricki Kit +063 005 068 Human Beat Box Kit +063 005 069 Percussion Kit +063 005 070 Orch&Ethno Kit +063 005 071 Nippon Kit +063 005 072 BD&SD Catalog 1 +063 005 073 BD&SD Catalog 2 +063 005 074 Cymbal Catalog +063 005 075 Saw Pizz +063 005 076 Short Square Arp +063 005 077 Bit Chip SW1/2 +063 005 078 ChipTriangle SW/MW +063 005 079 ChipSquare SW/MW +063 005 080 ChipPulse 1 SW/MW +063 005 081 ChipPulse 2 SW/MW +063 005 082 Analog Bell/Harp +063 005 083 Square/Pulse Syn +063 005 084 Comp E.P. SW1/2 +063 005 085 Organ Perc.Shot +063 005 086 Synth Mallets 5th +063 005 087 Metallic Hitter +063 005 088 Tropical Pizz +063 005 089 Tropical Mallet +063 005 090 Horn Chord Hits +063 005 091 Disco Strings Hit +063 005 092 Chord Set 1 SW2 +063 005 093 Chord Set 2 SW1 +063 005 094 HipHop Hits +063 005 095 Trapper Hit +063 005 096 Pizz Hit +063 005 097 Power Band Hit +063 005 098 Impact Band Hit +063 005 099 Drama Hit Wheel +063 005 100 Monster Hit Wheel +063 005 101 Chipper Hit +063 005 102 Helium Voice +063 005 103 Yahi Voice +063 005 104 Nippon Set (C#2-A5) +063 005 105 Shamisen Gaisya +063 005 106 Soul of Tsugaru +063 005 107 Shakuhachi Mondou +063 005 108 KOTO Furyu +063 005 109 Miyabi Hit (E3,D6,D7) +063 005 110 Ring Mod Riser +063 005 111 Siren SFX Wheel +063 005 112 Monster +063 005 113 Crypt-on +063 005 114 Stereo Flange Sweep +063 005 115 Sonic Blast +063 005 116 Soundscapes +063 005 117 Steam Sweeps +063 005 118 Android +063 005 119 New North Wind +063 005 120 Outside Elements +063 005 121 Lore of the Jungle +063 005 122 Mega Drum Hit +063 005 123 Gong +063 005 124 Vocoder Vel Choir +063 005 125 SqrSaw Vocoder +063 005 126 Mic & Reverb +063 005 127 Mic & Doubled +063 010 000 Piano&Strings 1 +063 010 001 EDM Piano +063 010 002 #Alone#R'n'B ?? +063 010 003 Piano&Choir +063 010 004 For the 2nd Time... +063 010 005 Soundtrack Piano +063 010 006 Piano&Strings 2 +063 010 007 Starlight +063 010 008 Dub Chillstep SW1/2 +063 010 009 Famous Piano +063 010 010 Piano Balladeer +063 010 011 Epic Layered Piano +063 010 012 Romance Piano +063 010 013 80's Layererd +063 010 014 Layered E.Grand +063 010 015 Bellissima +063 010 016 Toy GrandPiano SW2 +063 010 017 Natural Mix +063 010 018 Apologized Keys +063 010 019 Ambi VIBE Piano +063 010 020 Chariots +063 010 021 Modern Piano Player +063 010 022 Piano Pad +063 010 023 Heaven Pad +063 010 024 Deeper Piano Pad +063 010 025 Piano & Vox +063 010 026 Piano E.Stomp +063 010 027 Synthy Shuffle +063 010 028 Conquest Earth +063 010 029 Piano & ResoPad +063 010 030 Metalic Hop +063 010 031 Don't Wanna +063 010 032 Piano Trio +063 010 033 The First Time... +063 010 034 Fanatical GRAND +063 010 035 Western Bar SW1/2 +063 010 036 Dance Dance SW2 +063 010 037 Hip On da Beat +063 010 038 Riders Storm +063 010 039 Chillhouse E.P.1 +063 010 040 Adam's E.Piano MW +063 010 041 1/4 Rock E.P. +063 010 042 Reed E.P.Session +063 010 043 Tea Time E.P. +063 010 044 Reggae Pub +063 010 045 Bell Tine E.Piano +063 010 046 Bell Tine E.P. +063 010 047 Super E.Piano +063 010 048 Reed E.P.Time +063 010 049 Chillhouse E.P.2 +063 010 050 Rotary Keys +063 010 051 E.Piano&Strings +063 010 052 Suit E.P.& Pad +063 010 053 Double E.P.& Pad +063 010 054 Gentle E.P.Pad +063 010 055 High Key E.Piano +063 010 056 E.P. Mallets +063 010 057 E-Peez +063 010 058 E. P. Bella +063 010 059 Dusty E.P.Pad +063 010 060 Velo-Tinkle E.P. +063 010 061 Tiney E.Piano +063 010 062 Nylon E.P. +063 010 063 Steely Keys +063 010 064 DS8 Celeste +063 010 065 E.P.& Passing Pad +063 010 066 Wah Clavi Jam SW1 +063 010 067 Funk Clavi Jam +063 010 068 Bass/Clavi Mix +063 010 069 Cuttin' Clavi +063 010 070 The Mondo Nine +063 010 071 Brit Rock Groove +063 010 072 Easy Livin'' Split +063 010 073 Blues Rock Organ +063 010 074 It's Your Turn! +063 010 075 Retro Jz Organ Split +063 010 076 Organ Split Quartet +063 010 077 Je t'aime Organ +063 010 078 Perc.Organ +063 010 079 Forever...Legend +063 010 080 Swimming Drawbars +063 010 081 TUBE DRIVE SCREAM +063 010 082 Rock Organ +063 010 083 Ballade of Pale +063 010 084 Gospel Organ +063 010 085 VOX on Fire +063 010 086 Hymn for Him +063 010 087 Horror Organ/Choir +063 010 088 Pipe Organ 1 +063 010 089 Pipe Organ 2 +063 010 090 Holy Pipes +063 010 091 Danza Club Split +063 010 092 Heaven Toy Pad +063 010 093 Time For Bed +063 010 094 Childs Play +063 010 095 Tinkle Bell Pad +063 010 096 Airy Bell +063 010 097 White Bells +063 010 098 Bellorganic +063 010 099 Enchanted Bell +063 010 100 Horologe Shop +063 010 101 Legend Bells +063 010 102 Tine&Bells +063 010 103 Royal Bells +063 010 104 Izza Bell +063 010 105 Sunset Bellish +063 010 106 Gamelan Ensemble +063 010 107 Ice on the Pond +063 010 108 Pad & Log Drums +063 010 109 Mallet Dance +063 010 110 Velo Log Chiffs +063 010 111 Epic Strings +063 010 112 Cinema Strings +063 010 113 Section Strings +063 010 114 Large String Ens +063 010 115 Dynamic Strings +063 010 116 Strings & Strings +063 010 117 Octave Strings +063 010 118 Smooth Strings +063 010 119 New Set of Strings +063 010 120 Chiff Strings +063 010 121 Into Battle +063 010 122 Camera Strings +063 010 123 Small String Ens +063 010 124 Medium String Ens +063 010 125 Strings&Violin Split +063 010 126 Golden Strings +063 010 127 Silky Strings +063 011 000 Fawlty Quartet SW1 +063 011 001 The Orchestra +063 011 002 Dyno Orchestra +063 011 003 Parade Orchestra +063 011 004 Piano & Dyno Orch +063 011 005 Orchestra mp +063 011 006 New Strings & Horns +063 011 007 Strings&Woodwinds +063 011 008 Rhythm & Bows +063 011 009 Avant Chamber +063 011 010 Orchestrator +063 011 011 Chamber Ensemble +063 011 012 Deep Island +063 011 013 Spirited Harp +063 011 014 Infinity +063 011 015 Softly Sings +063 011 016 Room Of Trons +063 011 017 Velocity Voices +063 011 018 Heavenly Voices +063 011 019 Orbiting Voice Pad +063 011 020 Pro Brass Ensemble +063 011 021 Epic Brass +063 011 022 Shining Trumpets! +063 011 023 Orchestral Brasses +063 011 024 Brass Family +063 011 025 French Horn Ens +063 011 026 Chicago Hybrid Brass +063 011 027 007 Dyn Brass +063 011 028 Velo Sax/Brass +063 011 029 Horn Section +063 011 030 Sax & Brass +063 011 031 Funky Brass Section +063 011 032 TS+TP+TB Trio +063 011 033 Muted Section +063 011 034 Soft Sax Family +063 011 035 Hard Sax Family +063 011 036 Wind Ensemble +063 011 037 Orchestral Winds +063 011 038 Series of 5th Winds +063 011 039 All Clarinets +063 011 040 Heavy Duty Unison +063 011 041 Unisaws +063 011 042 MegaBell Anthem Pad +063 011 043 6 Operators Brass +063 011 044 Killer Saw Synth +063 011 045 Buzz-A-Log +063 011 046 RAW Anthem Synth +063 011 047 Big Analogue +063 011 048 Let's Talk SW2 +063 011 049 DuB Fill +063 011 050 Big Analog +063 011 051 Key Flute Dub +063 011 052 Mellow Tron Split +063 011 053 Bossa Flute +063 011 054 Fusion Split +063 011 055 Princess +063 011 056 Dry Dreams +063 011 057 French Horn Solo +063 011 058 Sweet Blues +063 011 059 The Oboe Song +063 011 060 20th Chamber +063 011 061 Dandy Guitar +063 011 062 Mod Wheel Wah Gtr +063 011 063 Pad & Dist.Guitar +063 011 064 Fretless Bass Solo +063 011 065 BassBell Player +063 011 066 Enigmatic Cello +063 011 067 Piccolo&Xylo Split +063 011 068 Strings&T.Sax Split +063 011 069 Organ & Brass +063 011 070 E.Piano & Organ +063 011 071 R'n'B Rain +063 011 072 Disco Time !! +063 011 073 Disco Nation +063 011 074 L<->R FInger EDM +063 011 075 Splitlet Waves +063 011 076 ProgressiveSplit SW1 +063 011 077 Chillin Pad & Lead +063 011 078 Tough Sync Split +063 011 079 Chill in Deep +063 011 080 PanaTonic Split +063 011 081 EWI Split +063 011 082 Stylo Lead +063 011 083 We Love DW8000 +063 011 084 Reso Trip Breaks +063 011 085 Tom-Saw-Ear +063 011 086 Street Smarts +063 011 087 Pad Leader +063 011 088 Lead'n Lady +063 011 089 It's the Final... +063 011 090 Total Eclipse +063 011 091 Moose +063 011 092 Wobble Boost +063 011 093 Euro Club +063 011 094 L/C/R Synth +063 011 095 Pulsator Split +063 011 096 Gated Community +063 011 097 Charge the Future +063 011 098 Live Rocker +063 011 099 Enjoy the Science +063 011 100 Happy Step Split +063 011 101 Piano & Solo-5th Ld +063 011 102 Party People SW1/2 +063 011 103 Liquid Pad +063 011 104 Peace of Mind +063 011 105 Common Man SW2 +063 011 106 PsychDelian +063 011 107 Unrequited Love +063 011 108 After The Ice Storm +063 011 109 Surf Voice Pad +063 011 110 FM Pirates Joke +063 011 111 Glory Pad +063 011 112 Sleepless Sun SW1 +063 011 113 Majesty Pad +063 011 114 In The U-Vibe +063 011 115 Multi Connection +063 011 116 New Landscape +063 011 117 Hallo Yello +063 011 118 Dream Pad +063 011 119 WAR +063 011 120 BIG Pad +063 011 121 Follower Pad +063 011 122 New Age +063 011 123 Cosmic Voice SW1 +063 011 124 Portamento Pad +063 011 125 Sunset Pad +063 011 126 Winter Pad +063 011 127 Footage Pad +063 012 000 Operation +063 012 001 The Soft Morning +063 012 002 Warm Fire Pad +063 012 003 Calm Pad +063 012 004 Loose Particle +063 012 005 Simple Pad +063 012 006 Glisten Pad +063 012 007 WAVE Dancing +063 012 008 Infected WAVE +063 012 009 Quiet WAVE +063 012 010 Rhythm Pad +063 012 011 Elve's Passage +063 012 012 Rain Gate +063 012 013 Reed Rhythm +063 012 014 Angel's Ladder +063 012 015 Huge Pad SW1/2 +063 012 016 Tempo Pad +063 012 017 Kids From Space +063 012 018 Echopolis +063 012 019 Cool +063 012 020 Granularized +063 012 021 The Circle of 5ths +063 012 022 Modular Obsession +063 012 023 Operators +063 012 024 VeloMorph BellPad +063 012 025 Shrimpaddles +063 012 026 Shandygaff +063 012 027 Wrecked in Time +063 012 028 Planet Pad +063 012 029 Analog Band +063 012 030 Strike in Motion +063 012 031 Reverse of Medal +063 012 032 Running Sled +063 012 033 S&H Atmospad +063 012 034 Guitar & Zen Voices +063 012 035 New Guitar & Pad +063 012 036 A.Guitar & Pad 1 +063 012 037 A.Guitar & Pad 2 +063 012 038 Guitar Sings +063 012 039 Christmas +063 012 040 Guitarz +063 012 041 Forest Guitar +063 012 042 12 String Electric +063 012 043 Super Guitar +063 012 044 Wide Guitars +063 012 045 Chime Gtr.Pad +063 012 046 Autumn Guitar +063 012 047 Fractal Guitar +063 012 048 Dance Rock Synth +063 012 049 Dream Lines +063 012 050 Rocking! +063 012 051 Killer Guitar +063 012 052 NIPPON Sunrise +063 012 053 Koto World SW2 +063 012 054 Ethno World +063 012 055 Jungle Mystery +063 012 056 Mother Earth +063 012 057 Ethno Ocean +063 012 058 Night in Rio +063 012 059 Land of Rising Sun +063 012 060 Bass & Piano +063 012 061 New Bass & Piano +063 012 062 Ballad Bs & Pf SW2 +063 012 063 Swing Boutique +063 012 064 Time to WORK IT +063 012 065 Dream Trance Legend +063 012 066 Bass & Piano Pad +063 012 067 Radio +063 012 068 Happy Split +063 012 069 Hip Trip +063 012 070 Bass & E.P. +063 012 071 Lover's Nite +063 012 072 Bass & Wurly +063 012 073 OD Bass & E.P. +063 012 074 Run Town +063 012 075 Warm Bass & E.P. +063 012 076 Slow Crawl +063 012 077 Velo-Drawbar Split +063 012 078 Organ Beats +063 012 079 Organized House +063 012 080 Erectro Party part 1 +063 012 081 Erectro Party part 2 +063 012 082 Simple EDM SW1/2 +063 012 083 X-Limit +063 012 084 Ninjya Trap +063 012 085 Sakura Blizzard +063 012 086 Pulsing Split +063 012 087 Happy Rain +063 012 088 Ac.Bass & A.Sax +063 012 089 Abstract in Hop +063 012 090 Lonely Moon +063 012 091 Holding Heart +063 012 092 Looking for Clues +063 012 093 Chemicals SW1/2 +063 012 094 Jazz Bass & Guitar +063 012 095 Jazzy Guitar +063 012 096 Ambi Acoustik Split +063 012 097 Guitar Brothers +063 012 098 Marooned +063 012 099 Black Eye Please +063 012 100 Bass & Vibe +063 012 101 Triple Tech +063 012 102 Magic Split +063 012 103 VIP Room +063 012 104 Spit Split +063 012 105 Akronite Split +063 012 106 Tribal Konfrence SW +063 012 107 DnB Anthem +063 012 108 The Beast Split SW2 +063 012 109 Soft Razor +063 012 110 80's Pop Split +063 012 111 Club Nite Forever +063 012 112 Hypno Groove +063 012 113 Electro Bass Arp +063 012 114 Datsjustugly +063 012 115 EDM Ghost Arp +063 012 116 Wobble Wobble +063 012 117 Wobble Working +063 012 118 Dubby the Tyrant +063 012 119 Noisy Factory +063 012 120 GlitchStep Split +063 012 121 Vocoder Delay MW +063 012 122 PitchMod Voice FX +063 012 123 Hyperspace +063 012 124 Invasion +063 012 125 Space Ship +063 012 126 Horror Film +063 012 127 Asian Dreamscape \ No newline at end of file diff --git a/data/bank/ns5r.tsv b/data/bank/ns5r.tsv new file mode 100644 index 00000000..c6c9e4ba --- /dev/null +++ b/data/bank/ns5r.tsv @@ -0,0 +1,1052 @@ +MSB PRG LSB NME +000 000 000 GrandPno +000 001 000 BritePno +000 002 000 EGrndPno +000 003 000 HnkyTonk +000 004 000 ElPiano1 +000 005 000 ElPiano2 +000 006 000 Hrpschrd +000 007 000 Clvichrd +000 008 000 Celesta +000 009 000 Glocken +000 010 000 MusicBox +000 011 000 Vibrafon +000 012 000 Marimba +000 013 000 Xylophon +000 014 000 TubulBel +000 015 000 Dulcimer +000 016 000 DrawOrgn +000 017 000 PercOrgn +000 018 000 RockOrgn +000 019 000 ChrchOrg +000 020 000 ReedOrgn +000 021 000 Acordion +000 022 000 Harmnica +000 023 000 TangoAcd +000 024 000 NylonGtr +000 025 000 SteelGtr +000 026 000 Jazz Gtr +000 027 000 CleanGtr +000 028 000 MutedGtr +000 029 000 OvrDrvGt +000 030 000 Dist.Gtr +000 031 000 GtrHarmo +000 032 000 Aco.Bass +000 033 000 FngrBass +000 034 000 PickBass +000 035 000 Fretless +000 036 000 SlpBass1 +000 037 000 SlpBass2 +000 038 000 SynBass1 +000 039 000 SynBass2 +000 040 000 Violin +000 041 000 Viola +000 042 000 Cello +000 043 000 Contrbas +000 044 000 Trem.Str +000 045 000 Pizz.Str +000 046 000 Harp +000 047 000 Timpani +000 048 000 Strings1 +000 049 000 Strings2 +000 050 000 Syn.Str1 +000 051 000 Syn.Str2 +000 052 000 ChoirAah +000 053 000 VoiceOoh +000 054 000 SynVoice +000 055 000 Orch.Hit +000 056 000 Trumpet +000 057 000 Trombone +000 058 000 Tuba +000 059 000 MutedTrp +000 060 000 FrchHorn +000 061 000 BrasSect +000 062 000 SynBras1 +000 063 000 SynBras2 +000 064 000 SprnoSax +000 065 000 Alto Sax +000 066 000 TenorSax +000 067 000 Bari.Sax +000 068 000 Oboe +000 069 000 Eng.Horn +000 070 000 Bassoon +000 071 000 Clarinet +000 072 000 Piccolo +000 073 000 Flute +000 074 000 Recorder +000 075 000 PanFlute +000 076 000 BotlBlow +000 077 000 Shakhchi +000 078 000 Whistle +000 079 000 Ocarina +000 080 000 SquareLd +000 081 000 Saw Lead +000 082 000 CaliopLd +000 083 000 Chiff Ld +000 084 000 CharanLd +000 085 000 Voice Ld +000 086 000 Fifth Ld +000 087 000 Bass&Ld +000 088 000 NewAgePd +000 089 000 Warm Pad +000 090 000 PolySyPd +000 091 000 ChoirPad +000 092 000 BowedPad +000 093 000 MetalPad +000 094 000 Halo Pad +000 095 000 SweepPad +000 096 000 Ice Rain +000 097 000 SoundTrk +000 098 000 Crystal +000 099 000 Atmosphr +000 100 000 Bright +000 101 000 Goblins +000 102 000 Echoes +000 103 000 Sci-Fi +000 104 000 Sitar +000 105 000 Banjo +000 106 000 Shamisen +000 107 000 Koto +000 108 000 Kalimba +000 109 000 Bagpipe +000 110 000 Fiddle +000 111 000 Shanai +000 112 000 TnklBell +000 113 000 Agogo +000 114 000 SteelDrm +000 115 000 Woodblok +000 116 000 Taiko +000 117 000 MelodTom +000 118 000 Syn Drum +000 119 000 RevCymbl +000 120 000 FretNoiz +000 121 000 BrthNoiz +000 122 000 Seashore +000 123 000 Tweet +000 124 000 Telphone +000 125 000 Helicptr +000 126 000 Applause +000 127 000 Gunshot +056 000 000 Piano +056 001 000 BritePno +056 002 000 HammrPno +056 003 000 HnkyTonk +056 004 000 New Tine +056 005 000 Digi.Pno +056 006 000 Hrpschrd +056 007 000 Clvichrd +056 008 000 Celesta +056 009 000 Glocken +056 010 000 MusicBox +056 011 000 Vibrafon +056 012 000 Marimba +056 013 000 Xylophon +056 014 000 Tubular +056 015 000 Santur +056 016 000 FullOrgn +056 017 000 PercOrgn +056 018 000 BX3 Orgn +056 019 000 ChrchPpe +056 020 000 Positive +056 021 000 Musette +056 022 000 Harmnica +056 023 000 Tango +056 024 000 ClassGtr +056 025 000 Acou.Gtr +056 026 000 Jazz Gtr +056 027 000 CleanGtr +056 028 000 MutedGtr +056 029 000 OvrDrvGt +056 030 000 Dist.Gtr +056 031 000 GtrHarmo +056 032 000 Jazzy Ba +056 033 000 DeepBass +056 034 000 PickBass +056 035 000 Fretless +056 036 000 SlpBass1 +056 037 000 SlpBass2 +056 038 000 SynBass1 +056 039 000 SynBass2 +056 040 000 Violin +056 041 000 Viola +056 042 000 Cello +056 043 000 Contrbas +056 044 000 Trem.Str +056 045 000 Pizzcato +056 046 000 Harp +056 047 000 Timpani +056 048 000 Marcato +056 049 000 Slow Str +056 050 000 Anal.Pad +056 051 000 Syn. Str +056 052 000 Choir +056 053 000 VoiceDoo +056 054 000 SynVoice +056 055 000 Orch.Hit +056 056 000 Trumpet +056 057 000 Trombone +056 058 000 Tuba +056 059 000 MutedTrp +056 060 000 FrchHorn +056 061 000 BrasSect +056 062 000 SynBrass +056 063 000 SynBras2 +056 064 000 SprnoSax +056 065 000 Alto Sax +056 066 000 TenorSax +056 067 000 Bari Sax +056 068 000 Swt Oboe +056 069 000 Eng.Horn +056 070 000 BasnOboe +056 071 000 Clarinet +056 072 000 Piccolo +056 073 000 Flute +056 074 000 Recorder +056 075 000 PanFlute +056 076 000 BotlBlow +056 077 000 Shakhchi +056 078 000 Whistle +056 079 000 Ocarina +056 080 000 SquareLd +056 081 000 Saw Lead +056 082 000 CaliopLd +056 083 000 Chiff Ld +056 084 000 CharanLd +056 085 000 AirChor. +056 086 000 Rezzo4th +056 087 000 Bass&Ld +056 088 000 Fantasia +056 089 000 Warm Pad +056 090 000 PolySyPd +056 091 000 GhostPad +056 092 000 BowGlass +056 093 000 MetalPad +056 094 000 Halo Pad +056 095 000 SweepPad +056 096 000 Ice Rain +056 097 000 SoundTrk +056 098 000 Crystal +056 099 000 Atmosphr +056 100 000 Bright +056 101 000 Goblins +056 102 000 Echoes +056 103 000 Sci-Fi +056 104 000 Sitar +056 105 000 Banjo +056 106 000 Shamisen +056 107 000 Koto +056 108 000 Kalimba +056 109 000 Scotland +056 110 000 Fiddle +056 111 000 Shanai +056 112 000 MetalBel +056 113 000 Agogo +056 114 000 SteelDrm +056 115 000 Woodblok +056 116 000 Taiko +056 117 000 Acou.Tom +056 118 000 SynthTom +056 119 000 RevCymbl +056 120 000 FretNoiz +056 121 000 NoizChif +056 122 000 Seashore +056 123 000 Birds +056 124 000 Telphone +056 125 000 Helicptr +056 126 000 Stadium! +056 127 000 Gunshot +061 000 000 Standard +061 001 000 Standrd2 +061 008 000 Room Kit +061 016 000 PowerKit +061 024 000 Electro +061 025 000 AnalogKt +061 026 000 DanceKit +061 032 000 Jazz Kit +061 040 000 BrushKit +061 048 000 Orch.Kit +061 049 000 EthnicKt +061 050 000 KikSnare +061 056 000 SFX Kit +061 127 000 MT-32 Kt +062 000 000 GM Kit +062 016 000 PowerKit +062 024 000 DanceKit +062 025 000 AnalogKt +062 026 000 DanceKit +062 032 000 Jazz Kit +062 040 000 BrushKit +062 048 000 Orch.Kit +062 056 000 GM Kit +062 064 000 Perc Kit +062 072 000 User Kit +062 073 000 UserKit2 +062 074 000 GM Kit +081 000 000 Sunrise +081 001 000 Piano16' +081 002 000 AltoBrth +081 003 000 TinyDncr +081 004 000 SpruceGt +081 005 000 VibrBell +081 006 000 CrFadeBa +081 007 000 Strings +081 008 000 PowerSyn +081 009 000 TotalKit +081 010 000 MchinAge +081 011 000 Hot Keys +081 012 000 BrasBand +081 013 000 MaxiTine +081 014 000 Pwr Rock +081 015 000 TablTalk +081 016 000 FngrBass +081 017 000 Lite Vox +081 018 000 ColorPad +081 019 000 Festival +081 020 000 GlideSwp +081 021 000 LastTngo +081 022 000 MagicFlu +081 023 000 Operator +081 024 000 ElectrGt +081 025 000 Gamelan +081 026 000 Zap Bass +081 027 000 Digi.Air +081 028 000 Analgist +081 029 000 MndoTrem +081 030 000 SpaceWng +081 031 000 GospelOr +081 032 000 Trumpet +081 033 000 FreshAir +081 034 000 RockMute +081 035 000 Dustette +081 036 000 PickBass +081 037 000 ChambrEn +081 038 000 Wire Pad +081 039 000 Industry +081 040 000 Neutron +081 041 000 PnoHaven +081 042 000 ShkuBend +081 043 000 BowenWav +081 044 000 Funk Gtr +081 045 000 SplitBel +081 046 000 Slap It +081 047 000 Anal.Pad +081 048 000 Residue +081 049 000 OrchPerc +081 050 000 DreamWld +081 051 000 HrpsiFnk +081 052 000 FlugelHr +081 053 000 Elec.Tap +081 054 000 Harmonic +081 055 000 Africana +081 056 000 TechnoBa +081 057 000 Airways +081 058 000 Busy Boy +081 059 000 Heart +081 060 000 Spectrum +081 061 000 FullPipe +081 062 000 Woodwind +081 063 000 Whirly +081 064 000 Lead Gtr +081 065 000 Isabelle +081 066 000 FatFrett +081 067 000 PoppinPd +081 068 000 SoftHorn +081 069 000 Prod.Kit +081 070 000 In Trees +081 071 000 SantaClv +081 072 000 SforzBrs +081 073 000 Tine Pad +081 074 000 PdlSteel +081 075 000 Log Drum +081 076 000 House Ba +081 077 000 Ambi.Vox +081 078 000 MonoLead +081 079 000 Hackbret +081 080 000 Halifax +081 081 000 DrawOrgn +081 082 000 Fanfare +081 083 000 HardTine +081 084 000 DrGuitar +081 085 000 EtherBel +081 086 000 BassHrmo +081 087 000 Air Vox +081 088 000 Drum Hit +081 089 000 50sSciFi +081 090 000 SteamCld +081 091 000 Bouzouki +081 092 000 BrightBa +081 093 000 DWGS EP +081 094 000 JoyStick +081 095 000 WavCycle +081 096 000 Rap Bass +081 097 000 VoiceOoh +081 098 000 Bright +081 099 000 HarpPlck +081 100 000 Elastic +081 101 000 ExprssPF +081 102 000 PerkySax +081 103 000 CrFadeEP +081 104 000 NylonGtr +081 105 000 JewelBox +081 106 000 WoodnYou +081 107 000 SymphoBr +081 108 000 LeadStab +081 109 000 SpacePet +081 110 000 VS Organ +081 111 000 StBraSec +081 112 000 Methn.EP +081 113 000 ShmiMlet +081 114 000 IceFlake +081 115 000 Chester +081 116 000 RthmJunk +081 117 000 BelShwer +081 118 000 Fisa 8' +081 119 000 TmbFlute +081 120 000 Strummer +081 121 000 Sweep Ba +081 122 000 PanMllet +081 123 000 SteamBrs +081 124 000 PrieDawn +081 125 000 RotaryOr +081 126 000 Horn Ens +081 127 000 SuprTine +082 000 000 PpeDream +082 001 000 X Piano +082 002 000 Big Strs +082 003 000 AsiaJung +082 004 000 RockOn!! +082 005 000 GlockBel +082 006 000 FatRezBa +082 007 000 BreathVx +082 008 000 Xanalog +082 009 000 KrazyKit +082 010 000 Transfms +082 011 000 Killer B +082 012 000 PopBrass +082 013 000 HarpGlis +082 014 000 BrtSteel +082 015 000 PingMlet +082 016 000 Upright +082 017 000 VelFlute +082 018 000 LA Synth +082 019 000 ComboKit +082 020 000 WavSweep +082 021 000 FunkRoad +082 022 000 Anal.Str +082 023 000 EuroPipe +082 024 000 Stratify +082 025 000 CrystIce +082 026 000 Dance Ba +082 027 000 Ghost +082 028 000 FatFiltr +082 029 000 DownLoKt +082 030 000 Sputnik +082 031 000 SuprPerc +082 032 000 BrsSwell +082 033 000 Lore +082 034 000 FollowMe +082 035 000 Log&Bell +082 036 000 90s Bass +082 037 000 FreshWav +082 038 000 MIDI Grd +082 039 000 Mr. Gong +082 040 000 LandnPad +082 041 000 M1 Piano +082 042 000 Dyno Str +082 043 000 Tamboura +082 044 000 Chrunchr +082 045 000 StarFire +082 046 000 SynBass3 +082 047 000 Woodwind +082 048 000 RezWaves +082 049 000 Manimals +082 050 000 Vortex +082 051 000 ClickOrg +082 052 000 St. Horn +082 053 000 MletLoop +082 054 000 Flamenco +082 055 000 MtlGhost +082 056 000 VeloPick +082 057 000 Ooze +082 058 000 Dr. Tapp +082 059 000 Loop SFX +082 060 000 TimeClks +082 061 000 Class EP +082 062 000 CelloEns +082 063 000 Godfathr +082 064 000 Funk Gtr +082 065 000 Gamelan +082 066 000 ChromeBa +082 067 000 Shakhchi +082 068 000 Spl.Sync +082 069 000 NatureKt +082 070 000 SyTronic +082 071 000 SuprBX-3 +082 072 000 TrumpEns +082 073 000 Jaw Harp +082 074 000 RockChga +082 075 000 Ice Man +082 076 000 VeloSlap +082 077 000 Flutter +082 078 000 SwellPad +082 079 000 Natives! +082 080 000 Quarks +082 081 000 DynoTine +082 082 000 VelFlugl +082 083 000 PolkaBox +082 084 000 FeedbkGt +082 085 000 SwissBox +082 086 000 Big Mini +082 087 000 Arbesque +082 088 000 SynBrass +082 089 000 DrillMe! +082 090 000 Univrs.X +082 091 000 BigOrgan +082 092 000 EthncVln +082 093 000 Sitar +082 094 000 GreekGtr +082 095 000 MIDI Bel +082 096 000 Stick Ba +082 097 000 Soprano +082 098 000 Solo Syn +082 099 000 Jet Star +082 100 000 ChunkaPk +082 101 000 ArcoAttk +082 102 000 HighWire +082 103 000 Stab Pad +082 104 000 Cicada +082 105 000 Pno&Str +082 106 000 Traverso +082 107 000 SpectrEP +082 108 000 Mr.Clean +082 109 000 Fat Slap +082 110 000 Choir LR +082 111 000 CmpThing +082 112 000 TunedDrm +082 113 000 TibetBel +082 114 000 Dbl Stop +082 115 000 WarmTrom +082 116 000 HolwBody +082 117 000 HdBamboo +082 118 000 TechBass +082 119 000 Cmposure +082 120 000 BrsSynth +082 121 000 EchoTbla +082 122 000 DrawOrgn +082 123 000 SwtReeds +082 124 000 MalletEP +082 125 000 Elec.Arc +082 126 000 VS Bells +082 127 000 SFX Kit +083 000 000 HyprWave +083 001 000 N264 Pno +083 002 000 UltraRez +083 003 000 MusiLoop +083 004 000 MnstrWah +083 005 000 NStrings +083 006 000 NuFrtles +083 007 000 RockStdy +083 008 000 TotalSyn +083 009 000 Zulu Kit +083 010 000 RavelPad +083 011 000 PnoMagic +083 012 000 Arpggiat +083 013 000 VuduSong +083 014 000 MinOD Ld +083 015 000 SlwSnset +083 016 000 SuperRnd +083 017 000 VoiceAah +083 018 000 DanceRmx +083 019 000 CbrTrash +083 020 000 Runaway +083 021 000 MutrnClv +083 022 000 Dbl Mini +083 023 000 ClkWorks +083 024 000 Rik&aPik +083 025 000 Fragment +083 026 000 DynoBass +083 027 000 JazzyOrg +083 028 000 Ana.Sync +083 029 000 PowrPlay +083 030 000 TknoSync +083 031 000 TXPnoTap +083 032 000 Stick2It +083 033 000 WiteNoiz +083 034 000 R&R Gtr +083 035 000 Antartca +083 036 000 ThumbSlp +083 037 000 Velo B +083 038 000 Alaska +083 039 000 LazerTom +083 040 000 InThePad +083 041 000 Ster.Clv +083 042 000 Sqr.Bass +083 043 000 DreamBel +083 044 000 MetlKing +083 045 000 Undrscor +083 046 000 BigBottm +083 047 000 SmalOrch +083 048 000 Film Cue +083 049 000 CyberHit +083 050 000 Wavetbl +083 051 000 DynoRoad +083 052 000 Chro.Rez +083 053 000 Sunrise +083 054 000 Guitrist +083 055 000 Velo Vox +083 056 000 Clean Ba +083 057 000 Class B +083 058 000 SuprStab +083 059 000 ModernKt +083 060 000 ModMatrx +083 061 000 El.Piano +083 062 000 LowEndBa +083 063 000 JakSlide +083 064 000 Mandolin +083 065 000 Padnomic +083 066 000 RockBass +083 067 000 VocalChr +083 068 000 GhostStb +083 069 000 ThndrTom +083 070 000 Labyrnth +083 071 000 Wire Clv +083 072 000 LoEndRez +083 073 000 Waterfon +083 074 000 Elec. 12 +083 075 000 AirFntsy +083 076 000 Thmb&Slp +083 077 000 GreenEye +083 078 000 PwrLayer +083 079 000 GiantDrm +083 080 000 WavWorld +083 081 000 SyVoxKey +083 082 000 Cyber Ba +083 083 000 Heaven +083 084 000 LightPiz +083 085 000 Syn Fife +083 086 000 Super Ba +083 087 000 VoxVoice +083 088 000 SnNoEvil +083 089 000 MarkTree +083 090 000 7th Wave +083 091 000 DW-8000 +083 092 000 VibraHrp +083 093 000 Toy Bell +083 094 000 M1TnrSax +083 095 000 Sandman +083 096 000 DeepHous +083 097 000 BX3Mdium +083 098 000 Mega Syn +083 099 000 OldKlmba +083 100 000 Dr.Octav +083 101 000 Pitzpan +083 102 000 Leeeed +083 103 000 WndStorm +083 104 000 WarPipes +083 105 000 12StrGtr +083 106 000 Afri.Jam +083 107 000 HouseBa2 +083 108 000 SynBras4 +083 109 000 Sitar +083 110 000 Fly Toys +083 111 000 TneWheel +083 112 000 BasnOboe +083 113 000 Emalisha +083 114 000 PercOrgn +083 115 000 SolarBel +083 116 000 FunkBass +083 117 000 Heavenly +083 118 000 Soft Pad +083 119 000 LstDream +083 120 000 OrgTouch +083 121 000 MutedEns +083 122 000 SiestaEP +083 123 000 Funk Gtr +083 124 000 Ice Bell +083 125 000 Thumb Ba +083 126 000 VelSweep +083 127 000 SFX Kt 2 +089 000 000 StarBrst +089 001 000 LayerPno +089 002 000 SynthFat +089 003 000 Satelite +089 004 000 Mr. Tone +089 005 000 Calcutta +089 006 000 FnkSpice +089 007 000 LayerStr +089 008 000 SaxHeavn +089 009 000 Celbrate +089 010 000 1st Snow +089 011 000 Bass&Pno +089 012 000 FullBras +089 013 000 SingToMe +089 014 000 MrChorus +089 015 000 Javanese +089 016 000 LilBitO’ +089 017 000 Phlarmny +089 018 000 HalfMoon +089 019 000 HereComz +089 020 000 Rzlution +089 021 000 Gospel +089 022 000 New Rave +089 023 000 FluttrPd +089 024 000 Shoe Str +089 025 000 Tethnic +089 026 000 FullPipe +089 027 000 Overture +089 028 000 Lead&Pad +089 029 000 Dulcimer +089 030 000 Storm'93 +089 031 000 StakMidi +089 032 000 SmokyHrn +089 033 000 VelVxBel +089 034 000 Slap&Pop +089 035 000 Bass&Vbr +089 036 000 SuprPerc +089 037 000 Pizz&Bow +089 038 000 Aquarium +089 039 000 HousePty +089 040 000 BellCome +089 041 000 EP & Str +089 042 000 LatinBnd +089 043 000 HumnBeam +089 044 000 12Stereo +089 045 000 Instanbl +089 046 000 BusySplt +089 047 000 Orchestr +089 048 000 CymbLife +089 049 000 SpacePrt +089 050 000 BeachWlk +089 051 000 Dyno Pno +089 052 000 Cntrfold +089 053 000 In Light +089 054 000 VelChord +089 055 000 SugarBel +089 056 000 BluesHrp +089 057 000 Grndioso +089 058 000 OsakaJaz +089 059 000 MstrFisa +089 060 000 Autumn +089 061 000 ElPno&Ba +089 062 000 MstrFunk +089 063 000 VeloVoix +089 064 000 Split Ba +089 065 000 EthnoGeo +089 066 000 Rf&Ready +089 067 000 Madrigal +089 068 000 ChiffSpl +089 069 000 Dagobar +089 070 000 ChildSng +089 071 000 Pontette +089 072 000 Go Sweep +089 073 000 SilkRoad +089 074 000 Nashvill +089 075 000 Bolshoi +089 076 000 WaspStin +089 077 000 Anal.Str +089 078 000 ChrisTal +089 079 000 RaveHits +089 080 000 Sun’Tron +089 081 000 SamAntic +089 082 000 SwtMutes +089 083 000 Nebulae +089 084 000 Dole Bee +089 085 000 Sphinx +089 086 000 DeepOrgn +089 087 000 Str. Atk +089 088 000 Lass&Tim +089 089 000 DeadStar +089 090 000 FreeTime +089 091 000 PnoSings +089 092 000 Big Idea +089 093 000 Safari +089 094 000 Gtr&Pad +089 095 000 ChinaBel +089 096 000 Sky Cat +089 097 000 Harp Str +089 098 000 NightTap +089 099 000 Slammin’ +089 100 000 SeaHorse +089 101 000 Pwr Comp +089 102 000 MidiWind +089 103 000 ProxMidi +089 104 000 Oh-La-La +089 105 000 IndianOr +089 106 000 DoublBow +089 107 000 Backyard +089 108 000 Cnt.OnMe +089 109 000 Trp.Bras +089 110 000 Acapela +089 111 000 AndyPlay +089 112 000 FairyBel +089 113 000 Leti +089 114 000 Canyon +089 115 000 StealDrm +089 116 000 Rite&Lft +089 117 000 TwoInOne +089 118 000 ODriveLd +089 119 000 Red Sun +089 120 000 Ethnetic +089 121 000 Wedding +089 122 000 Concerto +089 123 000 LegatoRd +089 124 000 Bavaria +089 125 000 RainChme +089 126 000 VxGamlan +089 127 000 DynamoBa +090 000 000 SolarFlr +090 001 000 St. Keys +090 002 000 XStrings +090 003 000 Ana.King +090 004 000 CrnkItUp +090 005 000 HeadHntr +090 006 000 RockOrgn +090 007 000 X Brass +090 008 000 Singers +090 009 000 WildDrum +090 010 000 +090 011 000 Super EP +090 012 000 WindOrch +090 013 000 MaxiStab +090 014 000 12String +090 015 000 +090 016 000 Chor.Clv +090 017 000 Bass/Hrn +090 018 000 IceBells +090 019 000 WildSplt +090 020 000 Warrior +090 021 000 FatPiano +090 022 000 Sonata +090 023 000 LayerSyn +090 024 000 Wave Gtr +090 025 000 EthnOrch +090 026 000 Cathedrl +090 027 000 BrsSwell +090 028 000 JavaBell +090 029 000 PhntmSax +090 030 000 Anci.Sun +090 031 000 VeloRoad +090 032 000 Symphny +090 033 000 NeuroFnk +090 034 000 Slappin' +090 035 000 EastAfrc +090 036 000 UltrPerc +090 037 000 Sax Men +090 038 000 LunarBel +090 039 000 +090 040 000 +090 041 000 Rock Pno +090 042 000 ChmbrOrc +090 043 000 MultiRez +090 044 000 ChorusGt +090 045 000 ZenGardn +090 046 000 Acordion +090 047 000 MutedHrn +090 048 000 PizzoSyn +090 049 000 Rap T.K. +090 050 000 Megatron +090 051 000 BsEP&Str +090 052 000 Fanfare +090 053 000 BigSwell +090 054 000 StkSplit +090 055 000 IndiaJam +090 056 000 Hpsichrd +090 057 000 Bass/Brs +090 058 000 MoonSton +090 059 000 Torqmada +090 060 000 Crosfade +090 061 000 SuperKey +090 062 000 WoodWind +090 063 000 OctaveLd +090 064 000 Mlaguena +090 065 000 RythmPpe +090 066 000 F.Manual +090 067 000 Bows/Trp +090 068 000 Airiana +090 069 000 SpaceZon +090 070 000 NewWorld +090 071 000 Digi Pno +090 072 000 Full Str +090 073 000 RezzoFnk +090 074 000 Gtr. Man +090 075 000 WarmKoto +090 076 000 RockShow +090 077 000 Big Band +090 078 000 Vox Bell +090 079 000 Men@Work +090 080 000 Galaxia +090 081 000 Bass/Pno +090 082 000 Str/Oboe +090 083 000 RezSplit +090 084 000 Old West +090 085 000 LostTrbe +090 086 000 DualMan. +090 087 000 Trp&Bone +090 088 000 Belendre +090 089 000 StarLens +090 090 000 Abyss +090 091 000 Pno&Str +090 092 000 ChmbrStr +090 093 000 HardSync +090 094 000 Gt/Flute +090 095 000 RnForest +090 096 000 PipeOrgn +090 097 000 HotSalsa +090 098 000 Prism +090 099 000 Dentist +090 100 000 VbRation +090 101 000 SplitOrg +090 102 000 PizzAPie +090 103 000 TeknoPre +090 104 000 WitchHnt +090 105 000 BladeRun +090 106 000 PianoPad +090 107 000 MillTime +090 108 000 Wood Vox +090 109 000 FolkPiks +090 110 000 Stin&Wnd +090 111 000 Delicato +090 112 000 Sophism +090 113 000 PwdrSnow +090 114 000 TinyTiny +090 115 000 Emmalog +090 116 000 DreamPno +090 117 000 RockShow +090 118 000 Big Strs +090 119 000 CoolDuet +090 120 000 Mazurca +090 121 000 Polenesk +090 122 000 Bass&EP +090 123 000 Bad Scrm +090 124 000 AlienSng +090 125 000 Milagro +090 126 000 Fusion +090 127 000 WoodSect +091 000 000 1stLight +091 001 000 GrindinB +091 002 000 ShanriLa +091 003 000 MstWorld +091 004 000 World Ba +091 005 000 MxImpact +091 006 000 Rave Vox +091 007 000 OrchDiv. +091 008 000 LifeSong +091 009 000 DanceTrk +091 010 000 In Maze +091 011 000 PowerKey +091 012 000 HornStab +091 013 000 Goldmine +091 014 000 MayaDans +091 015 000 Meltronc +091 016 000 HouseMix +091 017 000 Or.Split +091 018 000 Morocco +091 019 000 Didjrido +091 020 000 XYJoystk +091 021 000 SuperJaz +091 022 000 OBAnalog +091 023 000 Str. Cue +091 024 000 RhythmGt +091 025 000 East Sun +091 026 000 GiantSpl +091 027 000 Allegro +091 028 000 PolyChrd +091 029 000 PwrHouse +091 030 000 LFO City +091 031 000 MIDIEPPd +091 032 000 Sqr. Rez +091 033 000 SkyCatLd +091 034 000 FadeAway +091 035 000 9 Incher +091 036 000 FazeTwin +091 037 000 VeloPizz +091 038 000 Gamelan +091 039 000 UndrWrld +091 040 000 Vaporizr +091 041 000 BigDraw. +091 042 000 Sax Band +091 043 000 BoyChoir +091 044 000 HeartBrk +091 045 000 Wet Land +091 046 000 SkiHouse +091 047 000 NgtMusic +091 048 000 NevrLand +091 049 000 DJToolBx +091 050 000 QuarkSpk +091 051 000 M1 LyrEP +091 052 000 PwrStack +091 053 000 Hit Dust +091 054 000 Pwr Band +091 055 000 WavJammr +091 056 000 GreenRav +091 057 000 Nutcrakr +091 058 000 NgtTrain +091 059 000 WormHole +091 060 000 VirtSplt +091 061 000 StaxOrgn +091 062 000 AnnaSplt +091 063 000 Arco Str +091 064 000 SlapStik +091 065 000 Botswana +091 066 000 AsidcSpl +091 067 000 DelayHit +091 068 000 SirRobin +091 069 000 EthScape +091 070 000 Gyroscop +091 071 000 WhirlPad +091 072 000 RezoComp +091 073 000 Voix2Men +091 074 000 FretNot! +091 075 000 RagaTrns +091 076 000 XVxSplit +091 077 000 Serenade +091 078 000 JazzDuet +091 079 000 AlienPrb +091 080 000 Alienesq +091 081 000 Legend +091 082 000 RealHorn +091 083 000 EtrnLayr +091 084 000 In Arena +091 085 000 N:Wv:Seq +091 086 000 Euroman +091 087 000 OrchWind +091 088 000 PacifiSp +091 089 000 Big Bang +091 090 000 UniVerse +091 091 000 OD Organ +091 092 000 SyncHome +091 093 000 AngelChr +091 094 000 PrgSplit +091 095 000 Trinidad +091 096 000 EnoseHrn +091 097 000 Ensemble +091 098 000 There&Bk +091 099 000 SeaStorm +091 100 000 TypeA Ln +091 101 000 BgForest +091 102 000 Appear +091 103 000 Emmabama +091 104 000 Sweeper +091 105 000 Dreaming +091 106 000 FatPluck +091 107 000 12TonBel +091 108 000 Have Fun +091 109 000 Bow&Bras +091 110 000 EchoSuit +091 111 000 Perclatr +091 112 000 Vectorin +091 113 000 Hard&Swt +091 114 000 Trombhrn +091 115 000 Synmonic +091 116 000 Mixture +091 117 000 Finale +091 118 000 AfrcMood +091 119 000 Encountr +091 120 000 LayrCake +091 121 000 Puffalog +091 122 000 Pd+Alpha +091 123 000 BrkADish +091 124 000 Randmizr +091 125 000 HrnMelod +091 126 000 AcidTool +091 127 000 TimeTunl diff --git a/data/bank/plg-100sg.tsv b/data/bank/plg-100sg.tsv new file mode 100644 index 00000000..9df17faf --- /dev/null +++ b/data/bank/plg-100sg.tsv @@ -0,0 +1,73 @@ +MSB LSB PRG NME +098 000 000 M-Male +098 000 001 M-ASoft +098 000 002 M-AHusky +098 000 003 M-Enka +098 000 004 M-Opera +098 000 005 M-Classc +098 000 006 M-Antiq +098 000 007 M-DamiVo +098 000 008 M-MidAge +098 000 009 M-Heavy +098 000 010 M-YngMan +098 000 011 M-YSoft +098 000 012 M-YHusky +098 000 013 M-AGO +098 000 014 M-Idol +098 000 015 M-Honest +098 000 020 F-NMusic +098 000 021 F-Weak +098 000 022 F-Modrat +098 000 023 F-Enka +098 000 024 F-Opera +098 000 025 F-Coquet +098 000 026 F-Antiq +098 000 027 F-Nose +098 000 028 F-Chobo +098 000 030 F-Pops +098 000 031 F-Soft +098 000 032 F-Boyish +098 000 033 F-Buriko +098 000 034 F-Bright +098 000 035 F-Teens +098 000 036 F-Honest +098 000 040 Boy +098 000 041 Girl +098 000 042 Baby +098 000 043 NoseKid +098 000 044 Comical +098 000 050 GoatSG +098 000 051 FrogSG +098 000 052 CrowSG +098 000 053 CowSG +098 000 054 Mosquito +098 000 060 Mercury +098 000 061 Venus +098 000 062 Mars +098 000 063 Jupiter +098 000 064 Saturn +098 000 070 Mirai +098 000 071 AM.Radio +098 000 072 HAL100 +098 000 073 TinyUFO +098 000 074 SpSiren +098 000 075 LowFi +098 000 076 Kororo +098 000 077 CrzyRobo +098 000 078 OpenRobo +098 000 079 Tremolo +098 000 080 VTrumpet +098 000 081 VOrgan +098 000 082 VSynBass +098 000 083 VSynth1 +098 000 084 VSynth2 +098 000 090 WindSG +098 000 091 Waterfal +098 000 092 StormSG +098 000 093 SeaSG +098 000 094 WaterEFX +098 000 100 CrySG +098 000 101 Dosukoi +098 000 102 Onchi +098 000 103 Unison1 +098 000 104 Unison2 \ No newline at end of file diff --git a/data/bank/plg-150an.tsv b/data/bank/plg-150an.tsv new file mode 100644 index 00000000..4ec7583d --- /dev/null +++ b/data/bank/plg-150an.tsv @@ -0,0 +1,237 @@ +MSB PRG LSB NME +100 38 0 ANSynBas +100 38 64 RealMini +100 38 65 Chamleon +100 38 66 Cream +100 38 67 Maxx +100 38 68 2001 +100 38 69 BlapMoth +100 38 70 Ruff +100 38 71 BiggMac +100 38 72 Prphtic1 +100 38 73 Prphtic2 +100 38 74 Wonder +100 38 75 Slum +100 38 96 X-Bass +100 39 0 FootBase +100 39 64 Mini Low +100 39 65 DuckBass +100 39 66 10thTone +100 39 67 DuckBas2 +100 39 68 Cracker +100 39 69 Monty +100 39 70 BirdWrld +100 39 71 Woodbass +100 39 72 RubbaBas +100 39 73 Smooth +100 39 74 Smoovey +100 39 75 Zed Bass +100 39 76 Oizo +100 39 96 Dog Bass +100 39 97 Squeaky +100 39 98 Insomnia +100 39 99 Stranger +100 39 100 Hardstep +100 39 101 Behind +100 39 102 Rydeen +100 39 103 Knives +100 39 104 Knives 2 +100 39 105 Mg Wood +100 39 106 Mg Frtls +100 39 107 Logic +100 50 0 Analog +100 50 64 So-Lina +100 50 65 Choclate +100 50 66 Stringer +100 51 0 Lush +100 51 64 Bonn +100 51 65 PWMStrng +100 51 66 MultiSaw +100 51 67 AnaStrng +100 51 68 StrngPad +100 51 96 Hi Wedge +100 54 0 MaMa +100 54 96 MgVoice +100 62 0 Fatty +100 62 64 MajorBrs +100 62 65 Bronze +100 62 66 HardBrss +100 62 96 ObDetune +100 62 97 ProBrass +100 63 0 ANSoftBr +100 63 64 CS80Bras +100 63 65 ToToHorn +100 63 66 SlowBras +100 80 0 Stevie +100 80 64 Pulsate +100 80 65 Silence +100 80 66 Maise +100 80 67 KnivesLd +100 80 68 Pulser +100 80 69 Sliver +100 80 70 Lucky +100 80 71 ANPopcrn +100 80 96 X-mod +100 80 97 MgSoloLd +100 80 98 Mg Cat +100 81 0 Caner +100 81 64 ANSyncHd +100 81 65 Chick +100 81 66 Susy +100 81 67 EarthLd +100 81 68 P-5 Saw +100 81 69 Rock It +100 81 70 Faaaat +100 81 71 DirtySaw +100 81 72 Rhubarb +100 81 73 J.Hammer +100 81 74 X-mod 2 +100 81 75 PitchMan +100 81 76 EarthLd2 +100 81 96 Cosmic +100 81 97 Q Lead +100 81 98 MiniTech +100 82 0 ANCaliop +100 82 96 AsianTek +100 83 0 AN Chiff +100 83 64 Pastel +100 83 96 Chromes +100 84 0 ANSyncLd +100 84 64 Billy +100 84 65 Dre-full +100 84 66 Funky +100 84 96 DistOdsy +100 85 0 AN VoxLd +100 85 96 MgVoice2 +100 86 0 Lipstick +100 86 64 Abacab +100 86 96 5th Ring +100 87 0 Squeamer +100 87 64 Mr.Hook +100 87 65 SupaSync +100 89 0 Magic +100 89 64 Contnent +100 89 65 Yellow +100 89 66 5th Pad +100 89 67 Kelp +100 89 96 Loom +100 90 0 SyncBrPd +100 90 96 ProAtck2 +100 90 97 Pro Sync +100 91 0 Soar +100 92 0 AN Bowed +100 92 96 AN Dawn +100 93 0 Sync Eko +100 93 64 Sharpsyn +100 93 65 SyncEko2 +100 94 0 Vangelzm +100 94 96 Mars +100 94 97 WaterPad +100 95 0 PWMSweep +100 95 64 HighSwep +100 95 65 SyncSwep +100 95 66 Mountain +100 95 96 Laos +100 97 0 AN Track +100 97 96 BPF Pad +100 98 0 X Bells +100 98 64 ResoBell +100 98 65 Triangle +100 98 66 XmodBell +100 99 0 Saphire +100 99 96 ProAtack +100 99 97 Behind 2 +100 99 98 HarmoSq +100 99 99 HarmoSq2 +100 100 0 SepaWays +100 101 0 DeepBlue +100 101 96 Ice Pad +100 101 97 Jah +100 101 98 Polaris +100 101 99 CyberBag +100 101 100 SeqWater +100 102 0 Microdot +100 102 64 Snowball +100 102 96 Syncrome +100 102 97 RhthmCty +100 102 98 Jack +100 103 0 Slalom +100 103 64 SyncSitr +100 103 96 Fire +100 103 97 Dragnfly +100 103 98 Unstable +100 103 99 DownUndr +100 103 100 Indosync +100 103 101 Nz Power +100 112 0 ANBeltre +100 112 96 EthTeck +100 114 0 Woob +100 114 96 ANCowbel +100 116 0 TriblTom +100 116 96 AN Snare +100 116 97 AnaDrum +100 118 0 SynthTom +100 118 64 ULTSound +100 118 65 AN Toms +100 118 66 Tranix +100 118 96 Rimshot +100 118 97 XstikSnr +100 118 98 EthnoTom +100 118 99 SynShake +100 119 0 AN HiHat +100 125 0 ANHlcptr +100 125 64 Siren +100 125 65 RadioNz +100 125 66 Fumble +100 125 67 Invade +100 125 68 FreeEdge +100 125 69 Touch +100 125 70 Chemical +100 125 71 AnalgAge +100 125 72 Chemicl2 +100 125 73 PropProp +100 125 74 WelcomBk +100 125 75 PlyChord +100 125 76 AN Cave +100 125 77 Invade 2 +100 125 78 FM Waves +100 125 79 Moment +100 125 80 Contact +100 125 81 XScreech +100 126 0 Hardcore +100 126 64 Kangaroo +100 126 65 AcidSeq1 +100 126 66 AcidSeq2 +100 126 67 Harmsync +100 126 68 KickLine +100 126 69 Free Cut +100 126 70 ElecGrov +100 126 71 ANSeqBas +100 126 72 Cool man +100 126 73 Uni Bass +100 126 74 Hrmsync2 +100 126 75 Killer +100 126 76 CybrClck +100 126 77 Earth +100 126 78 FreeRthm +100 126 79 Quarks +100 126 80 OldOkt +100 127 0 BPF Step +100 127 64 Poptart +100 127 65 Virtual +100 127 66 Cactus +100 127 67 Omega +100 127 68 Seismic +100 127 69 JarreSQ +100 127 70 TechPlck +100 127 71 Krftwrks +100 127 72 Filtrflw +100 127 73 Dist5th +100 127 74 HardNoiz +100 127 75 Lightstk +100 127 76 Lotus +100 127 77 Xalimba +100 127 78 Fat Run +100 127 79 Power +100 127 80 Metallic +100 127 81 Zebedee diff --git a/data/bank/plg-150dr.tsv b/data/bank/plg-150dr.tsv new file mode 100644 index 00000000..a5be98ee --- /dev/null +++ b/data/bank/plg-150dr.tsv @@ -0,0 +1,161 @@ +MSB LSB PRG NME +079 000 000 LiveRm A +079 000 001 LiveRm B +079 000 002 PowrdStd +079 000 003 DryStand +079 000 004 RockSt1 +079 000 005 RockSt2 +079 000 006 DryKit A +079 000 007 DryKit B +079 000 008 SmlRoom1 +079 000 009 SmlRoom2 +079 000 010 HeavyKit +079 000 011 RingSnrs +079 000 012 Rocky +079 000 013 Trashed1 +079 000 014 Trashed2 +079 000 015 Trashed3 +079 000 016 Weirdo +079 000 017 DarkBrk +079 000 018 BriteBrk +079 000 019 RockBrk +079 000 020 DirtyTek +079 000 021 Ethnic +079 000 022 DigiLofi +079 000 023 NoizElec +079 000 024 BreakAmb +079 000 025 Electron +079 000 026 EthncAmb +079 000 027 Flanger +079 000 028 Phaser1 +079 000 029 Phaser2 +079 000 030 AM/PM +079 000 031 AutoPan +079 000 032 Drone +079 000 033 SnareKit +079 000 034 Cym Amb +079 000 035 KitA/Ht1 +079 000 036 KitB/ht1 +079 000 037 KitA/Ht2 +079 000 038 KitB/Ht2 +079 000 039 Spread1 +079 000 040 Spread2 +079 000 041 Spread3 +079 000 042 Spread4 +079 000 043 KicksPC +079 000 044 SnaresPC +079 000 045 TomsPC +079 000 046 HatsPC +079 000 047 Cymbals +079 000 048 AC-PlgPC +079 000 049 Br-PlgPC +079 000 050 ABAA/Prc +079 000 051 AABA/Prc +079 000 052 AAAB/Prc +079 000 053 ABBA/Prc +079 000 054 AABB/Prc +079 000 055 ABAB/Prc +079 000 056 ABBB/Prc +079 000 057 BABB/Prc +079 000 058 BBAB/Prc +079 000 059 BBBA/Prc +079 000 060 BAAB/Prc +079 000 061 BBAA/Prc +079 000 062 BABA/Prc +079 000 063 BAAA/Prc +079 000 064 AAAA/Kk +079 000 065 ABAA/Sn1 +079 000 066 AABA/Sn2 +079 000 067 AAAB/Tom +079 000 068 ABBA/Hat +079 000 069 AABB/Cym +079 000 070 ABAB/Sn1 +079 000 071 ABBB/Sn2 +079 000 072 BBBB/Kk +079 000 073 BABB/Sn1 +079 000 074 BBAB/Sn2 +079 000 075 BBBA/Tom +079 000 076 BAAB/Hat +079 000 077 BBAA/Cym +079 000 078 BABA/Sn1 +079 000 079 BAAA/Sn2 +079 001 000 AfroCubn +079 001 001 BrazilKt +079 001 002 MotifLtn +079 001 003 GM Perc +079 001 004 AfrCbn61 +079 001 005 BruzKt61 +079 001 006 AC-PlgDR +079 001 007 Br-PlgDR +079 001 008 Lt-PlgDR +079 001 009 GMLtnDrm +079 001 010 Live Pop +079 001 011 Kick&Snr +079 001 012 AfCbHand +079 001 013 BrzlHnd1 +079 001 014 BrzlHnd2 +079 001 015 BellsKit +079 001 016 Shakers +079 001 017 SkinsKit +079 001 018 Sticks 1 +079 001 019 Sticks 2 +079 001 020 DlyAfrCb +079 001 021 DlyBrazl +079 001 022 DlyGMPrc +079 001 023 DlyGMLtn +079 001 024 NzDAfrCb +079 001 025 NzDBrazl +079 001 026 OdAfrCbn +079 001 027 OdBrazil +079 001 028 OdGMLatn +079 001 029 OdKk&Snr +079 001 030 Dst1AfCb +079 001 031 Dst1Brzl +079 001 032 Dst1GMLt +079 001 033 Dst1Kk&S +079 001 034 Dst2AfCb +079 001 035 Dst2Brzl +079 001 036 Dst2GMLt +079 001 037 Dst2Kk&S +079 001 038 FlgAfrCb +079 001 039 FlgBrazl +079 001 040 FlgShkrs +079 001 041 PhsShkrs +079 001 042 Rz1Skins +079 001 043 Rz1Sick +079 001 044 Rz2Kk&Sn +079 001 045 Rz2Stick +079 001 046 Md1AfrCb +079 001 047 Md1Brazl +079 001 048 Md2AfrCb +079 001 049 Md2Brazl +079 001 050 Md3Bells +079 001 051 Md3Shkrs +079 001 052 Md4BrHd1 +079 001 053 Md4BrHd2 +079 001 054 Md5BrHd1 +079 001 055 Md5BrHd2 +079 001 056 PchBells +079 001 057 PchShkrs +079 001 058 PchSkins +079 001 059 PchStick +079 001 060 RevAfrCb +079 001 061 RvBrazil +079 001 062 RevMotif +079 001 063 RvGMPerc +079 001 064 RvAfCb61 +079 001 065 RvBrzl61 +079 001 066 RvACPgDR +079 001 067 RvBrPgDR +079 001 068 RvLtPgDR +079 001 069 RevGMLtn +079 001 070 RevLvPop +079 001 071 RevKk&Sn +079 001 072 RevACHnd +079 001 073 RevBrHd1 +079 001 074 RevBrHd2 +079 001 075 RevBells +079 001 076 RevShkrs +079 001 077 RevSkins +079 001 078 RvStick1 +079 001 079 RvStick2 diff --git a/data/bank/plg-150dx.tsv b/data/bank/plg-150dx.tsv new file mode 100644 index 00000000..6342e10f --- /dev/null +++ b/data/bank/plg-150dx.tsv @@ -0,0 +1,913 @@ +MSB PRG LSB NME +067 000 000 Turn Tbl +067 016 000 DX-Clave +067 017 000 SideStck +067 018 000 Snapie +067 019 000 Deep Snr +067 020 000 SumohDrm +067 032 000 DX-Wave +067 033 000 Image 3 +067 048 000 DX-Piyo1 +067 049 000 DX-Inct1 +067 050 000 DX-Grwl1 +067 051 000 DX-Grwl2 +067 052 000 Help me! +067 053 000 DX-Wolf +067 054 000 JnglBell +067 055 000 DX-Inct2 +067 064 000 DX-Ring1 +067 065 000 DX-TlCal +067 066 000 DX-TlBsy +067 067 000 DX-TlTne +067 068 000 DX-Ring2 +067 069 000 DX-BigBn +067 070 000 IronEch1 +067 071 000 IronEch2 +067 072 000 DX-RvCy1 +067 073 000 DX-RvCy2 +067 080 000 DX-Hlcpt +067 081 000 DX-Train +067 082 000 Take Off +067 083 000 Mobile 1 +067 084 000 MotrCycl +067 085 000 DX-Ship +067 086 000 Closing +067 087 000 Scrchers +067 088 000 MM-Fall +067 089 000 DX-Flght +067 090 000 MobyDick +067 091 000 OutLimit +067 096 000 Paranoir +067 097 000 CaGhstLn +067 098 000 MM-Shk 2 +067 099 000 Image 1 +067 100 000 Image 2 +067 101 000 Tenjiku +067 102 000 Metal +067 103 000 Flxatone +067 104 000 Spoon +067 112 000 WhikShot +067 113 000 PercShot +067 114 000 Crasher +067 115 000 Laser 1 +067 116 000 Laser 2 +067 117 000 Laser 3 +067 118 000 Stopper +067 119 000 Wallop 1 +067 120 000 Wallop 2 +067 121 000 StreetSD +067 122 000 ManEater +067 123 000 SmbaWhsl +067 124 000 Refs Wsl +067 125 000 Triangl1 +067 126 000 Triangl2 +067 127 000 SlighBel +099 000 000 FrtePno1 +099 000 064 FrtePno2 +099 000 065 MM-Pno 1 +099 000 066 Digi Pno +099 000 096 MM-Pno 2 +099 000 097 Dark Pno +099 000 098 Pno+Flt +099 001 000 BritPno1 +099 001 064 BritPno2 +099 001 065 BritPno3 +099 001 066 5th Pno1 +099 001 096 PowerPno +099 001 097 5th Pno2 +099 002 000 DXCP-70 +099 002 064 El.Gnd 1 +099 002 065 El.Gnd 2 +099 002 066 El.Gnd 3 +099 002 067 MM-EGnd1 +099 002 068 MM-EGnd2 +099 002 069 DigiPoly +099 002 070 Mark III +099 002 071 RatioDob +099 002 096 El.Gnd 4 +099 003 000 DX-Rgtim +099 003 064 ToyPno 1 +099 003 065 ToyPno 2 +099 003 066 ToyPno 3 +099 003 067 ToyPno 4 +099 003 068 PrprdPno +099 003 069 Bell Pno +099 003 070 Andrian +099 003 071 SftEPno1 +099 003 072 SftEPno2 +099 003 073 GlockPno +099 004 000 DX-Road1 +099 004 064 BigWurlt +099 004 065 WurliEP1 +099 004 066 EP 1980 +099 004 067 DX-Road2 +099 004 068 DX-Road3 +099 004 069 Old Jazz +099 004 070 Knock EP +099 004 071 EP 1970 +099 004 072 DX-Road4 +099 004 073 PrcEPno1 +099 004 074 ModEPno1 +099 004 096 Soft EP1 +099 004 097 Hard EP1 +099 004 098 Hard EP2 +099 004 099 Hard EP3 +099 004 100 Hard EP4 +099 004 101 CosaRosa +099 004 102 EP 1985 +099 004 103 Det.EP 1 +099 004 104 Det.EP 2 +099 004 105 Det.EP 3 +099 005 000 E.Pno 1 +099 005 064 ClrE.Pno +099 005 065 E.Pno 2 +099 005 066 Urban +099 005 067 E.Pno 3 +099 005 068 Vics EP +099 005 069 E.Pno 4 +099 005 070 E.Pno 5 +099 005 071 FulTine1 +099 005 072 Duke EP +099 005 073 E.Pno 6 +099 005 074 E.Pno 7 +099 005 075 FulTine2 +099 005 076 E.Pno 8 +099 005 077 E.Pno 9 +099 005 078 E.Pno10 +099 005 096 DynoRoad +099 005 097 Prds Pno +099 005 098 Brit EP +099 005 099 Det.EP 4 +099 005 100 Det.EP 5 +099 005 101 Det.EP 6 +099 005 102 Det.EP 7 +099 005 103 Det.EP 8 +099 005 104 Det.EP 9 +099 005 105 Det.EP10 +099 006 000 Harpsi 1 +099 006 064 Cembalim +099 006 065 AD1600s1 +099 006 066 AD1600s2 +099 006 067 Harpsi 2 +099 006 068 Harpsi 3 +099 006 069 Harpsi 4 +099 006 070 Caffeine +099 006 071 HarpsiWr +099 006 072 Harpsi 5 +099 006 096 Harpsi 6 +099 006 097 Harpsi 7 +099 006 098 Harpsi 8 +099 006 099 Harpsi 9 +099 006 100 AD1900s1 +099 007 000 MM-Clav1 +099 007 064 MM-Clav2 +099 007 065 SkltnClv +099 007 066 ClavStf1 +099 007 067 Revinett +099 007 068 Clavecn1 +099 007 069 E.P/Clav +099 007 070 DX-Clv 1 +099 007 071 ClavComp +099 007 072 DX-Clv 2 +099 007 073 DX-Clv 3 +099 007 074 ClavExcl +099 007 075 BritClv1 +099 007 076 BritClv2 +099 007 077 DX-Clv 4 +099 007 078 DX-Clv 5 +099 007 096 MM-Clav3 +099 007 097 DX-Clv 6 +099 007 098 DX-Clv 7 +099 007 099 MuteClav +099 007 100 ChrsClav +099 007 101 BasoClav +099 007 102 Det.Clav +099 008 000 Celesta1 +099 008 064 Celesta2 +099 008 065 Celesta3 +099 008 096 Celesta4 +099 008 097 Hallowen +099 008 098 MM-Clsta +099 009 000 Glocken1 +099 009 064 Glocken2 +099 009 065 Glocken3 +099 009 066 Glocken4 +099 009 096 Glocken5 +099 009 097 Glocken6 +099 009 098 Bali +099 009 099 WrapRund +099 009 100 HamerGlk +099 009 101 PppThing +099 009 102 Syn.Glok +099 009 103 PercGlok +099 010 000 MusicBx1 +099 010 096 MusicBx2 +099 010 097 MusicBx3 +099 010 098 MusicBx4 +099 010 099 MusicBx5 +099 010 100 MusicBx6 +099 010 101 MusicBx7 +099 010 102 MusicBx8 +099 011 000 DX-Vibe1 +099 011 064 MM-Vibe1 +099 011 065 DX-Vibe2 +099 011 066 DX-Vibe3 +099 011 067 DX-Vibe4 +099 011 068 BellVibe +099 011 069 LFO Vibe +099 011 070 Vibetron +099 011 096 MM-Vibe2 +099 012 000 DX-Mrmb1 +099 012 064 BritMrmb +099 012 065 DX-Mrmb2 +099 012 066 DX-Mrmb3 +099 012 067 MtalMrmb +099 012 096 DX-Mrmb4 +099 012 097 DX-Mrmb5 +099 012 098 DX-Mrmb6 +099 012 099 DX-Mrmb7 +099 012 100 EchoMlt1 +099 012 101 EchoMlt2 +099 012 102 EchoMlt3 +099 012 103 MelwMrmb +099 012 104 Gtrimba +099 012 105 SynDecay +099 013 000 DX-Xylo1 +099 013 064 DX-Xylo2 +099 013 096 DX-Xylo3 +099 013 097 DX-Xylo4 +099 013 098 DX-Xylo5 +099 013 099 DX-Xylo6 +099 013 100 DigiXylo +099 014 000 Carillon +099 014 064 DX-Bel 1 +099 014 065 MM-Bell +099 014 066 MiniBell +099 014 067 DX-Bel 2 +099 014 068 DX-Bel 3 +099 014 069 DX-Bel 4 +099 014 070 DX-Bel 5 +099 014 071 DX-Bel 6 +099 014 072 TmplBel1 +099 014 073 TmplBel2 +099 014 074 TmplBel3 +099 014 096 DX-Bel 7 +099 014 097 DX-Bel 8 +099 014 098 DX-Bel 9 +099 014 099 DX-Bel10 +099 014 100 DX-Bel11 +099 014 101 DX-Bel12 +099 014 102 TmplBel4 +099 014 103 TmplBel5 +099 014 104 BlowBell +099 014 105 SoftBell +099 014 106 DumBells +099 014 107 Crystal +099 014 108 MeloBell +099 014 109 Det.Bell +099 015 000 DX-Dlcm1 +099 015 096 SilkRoad +099 015 097 Frzntime +099 015 098 DX-Dlcm2 +099 016 000 FullOrgn +099 016 064 DrwOrg 1 +099 016 065 DrwOrg 2 +099 016 066 DrwOrg 3 +099 016 067 JazOrg 1 +099 016 068 Farf Out +099 016 069 DrwOrg 4 +099 016 070 DrwOrg 5 +099 016 071 DrwOrg 6 +099 016 072 DrwOrg 7 +099 016 073 DrwOrg 8 +099 016 074 DrwOrg 9 +099 016 075 DrwOrg10 +099 016 076 DrwOrg11 +099 016 077 DrwOrg12 +099 016 096 DrwOrg13 +099 016 097 DrwOrg14 +099 016 098 DrwOrg15 +099 016 099 Grinder +099 016 100 DrwOrg16 +099 016 101 DrwOrg17 +099 016 102 DrwOrg18 +099 017 000 PrcOrg 1 +099 017 064 PrcOrg 2 +099 017 065 PrcOrg 3 +099 017 066 DxJazOr1 +099 017 067 PrcOrg 4 +099 017 068 PrcOrg 5 +099 017 069 PrcOrg 6 +099 017 070 PrcOrg 7 +099 017 071 PrcOrg 8 +099 017 072 PrcOrg 9 +099 017 073 PrcOrg10 +099 017 074 PrcOrg11 +099 017 075 PrcOrg12 +099 017 076 PrcOrg13 +099 017 077 PrcOrg14 +099 017 078 SynOrg 1 +099 017 096 PrcOrg15 +099 017 097 PrcOrg16 +099 017 098 PrcOrg17 +099 018 000 RckOrg 1 +099 018 064 RckOrg 2 +099 018 065 RckOrg 3 +099 018 066 RckOrg 4 +099 018 067 RckOrg 5 +099 018 068 RckOrg 6 +099 018 069 RckOrg 7 +099 018 070 RckOrg 8 +099 018 071 RckOrg 9 +099 018 072 RckOrg10 +099 018 073 RckOrg11 +099 018 074 RckOrg12 +099 018 075 SynOrg 2 +099 018 096 RckOrg13 +099 018 097 RckOrg14 +099 018 098 RckOrg15 +099 019 000 DXChrch1 +099 019 064 PipeOrg1 +099 019 065 PipeOrg2 +099 019 066 DXChrch2 +099 019 067 PipeOrg3 +099 019 068 PipeOrg4 +099 019 069 PipeOrg5 +099 019 096 PipeOrg6 +099 019 097 PipeOrg7 +099 019 098 PipeOrg8 +099 019 099 BritOrgn +099 019 100 TamePipe +099 020 000 PufOrgn1 +099 020 064 SoftRdOr +099 020 065 PufOrgn2 +099 020 066 StretOrg +099 020 096 LateDown +099 020 097 X-ReedOg +099 021 000 DX-Acrd1 +099 021 064 DX-Acrd2 +099 021 065 DX-Acrd3 +099 021 066 DX-Acrd4 +099 021 067 DX-Acrd5 +099 021 096 DX-Acrd6 +099 022 000 DX-Hmnc1 +099 022 064 DX-Hmnc2 +099 022 065 BuzzHarp +099 022 066 FM-Hmnc1 +099 022 067 FM-Hmnc2 +099 022 096 DX-Hmnc3 +099 022 097 DX-Hmnc4 +099 023 000 DX-TngAc +099 024 000 DX-AcGt1 +099 024 064 DX-AcGt2 +099 024 065 DX-AcGt3 +099 024 066 DX-AcGt4 +099 024 067 Lute Gtr +099 024 068 DX-AcGt5 +099 024 069 Mrmb Gtr +099 025 000 DX-PkGt1 +099 025 064 DX-PkGt2 +099 025 065 DX-PkGt3 +099 025 066 DX-PkGt4 +099 025 067 DX-PkGt5 +099 025 068 DX-PkGt6 +099 025 069 DX-PkGt7 +099 025 070 Tite Gtr +099 025 071 Gtr Box +099 025 072 LongNail +099 025 073 Firenze +099 025 074 Folknik +099 025 075 RytmPluk +099 025 096 DX-PkGt8 +099 025 097 Stlypika +099 025 098 DetClGt1 +099 025 099 DetClGt2 +099 026 000 DX-JzGt1 +099 026 064 DX-JzGt2 +099 026 065 DX-JzGt3 +099 026 066 DX-JzGt4 +099 026 096 DX-JzGt5 +099 027 000 DX-ClGt1 +099 027 064 DX-ClGt2 +099 027 065 DX-ClGt3 +099 027 066 DX-ClGt4 +099 027 067 DX-ClGt5 +099 027 068 DX-ClGt6 +099 027 069 DX-ClGt7 +099 027 070 DX-ClGt8 +099 027 096 DX-ClGt9 +099 027 097 DXClGt10 +099 027 098 DXClGt11 +099 028 000 DX-MtGt1 +099 028 064 DX-MtGt2 +099 028 065 DX-MtGt3 +099 028 066 DX-MtGt4 +099 028 067 HevyGage +099 029 000 DX-ODGt +099 030 000 Fuzz Gtr +099 030 064 DX-DsGt1 +099 030 065 DX-DsGt2 +099 030 066 DX-DsGt3 +099 030 067 DX-DsGt4 +099 030 068 DX-DsGt5 +099 030 096 DetDsGt1 +099 030 097 DetDsGt2 +099 032 000 DX-WdBa1 +099 032 064 DX-WdBa2 +099 032 065 DX-WdBa3 +099 032 066 SmohBass +099 032 067 After 88 +099 032 068 DX-WdBa4 +099 032 069 DX-WdBa5 +099 032 096 DX-WdBa6 +099 032 097 DX-WdBa7 +099 032 098 BogiBass +099 032 099 BassLgnd +099 033 000 DX-FgBa1 +099 033 064 DX-FgBa2 +099 033 065 HarmBass +099 033 066 NstyBass +099 033 067 FustBass +099 033 068 ClavBass +099 033 069 DX-FgBa3 +099 033 070 Inorganc +099 033 096 SkwkBass +099 033 097 DX-FgBa4 +099 033 098 FngaPcka +099 033 099 HardFngr +099 034 000 DX-PkBa1 +099 034 064 PickPluk +099 034 065 ChifBass +099 034 066 Plktrmbs +099 034 067 Owl Bass +099 034 068 MtalBass +099 034 069 WireBass +099 034 096 DX-PkBa2 +099 034 097 DX-PkBa3 +099 034 098 DX-PkBa4 +099 034 099 CompedEB +099 034 100 BassMgic +099 034 101 DetPkBa1 +099 034 102 DetPkBa2 +099 035 000 FrtlsBa1 +099 035 064 FrtlsBa2 +099 035 065 FrtlsBa3 +099 035 066 FrtlsBa4 +099 035 067 FrtlsBa5 +099 035 096 DetFlBa1 +099 036 000 RundWund +099 036 064 SlapStrg +099 036 065 LiteSlap +099 036 066 ImpctBas +099 036 067 Afresh +099 036 096 WireStrg +099 037 000 DigiBas1 +099 037 064 SuprBas1 +099 037 065 DrhtBass +099 037 066 Brainacs +099 037 067 DigiBas2 +099 037 096 SuprBas2 +099 038 000 DX-SyBa1 +099 038 064 DX-SyBa2 +099 038 065 DX-SyBa3 +099 038 066 Cutmandu +099 038 067 DX-SyBa4 +099 038 068 BassNovo +099 038 069 DX-SyBa5 +099 038 070 DX-SyBa6 +099 038 071 DX-SyBa7 +099 038 072 DX-SyBa8 +099 038 096 DX-SyBa9 +099 038 097 BassRsWp +099 038 098 DetSyBa1 +099 039 000 DX-Bass1 +099 039 064 Remark +099 039 065 DX-Bass2 +099 039 066 DX-Bass3 +099 039 067 Hop Bass +099 039 068 Excite +099 039 069 DX-Bass4 +099 039 096 DX-Bass5 +099 039 097 DX-Bass6 +099 039 098 DiscBass +099 039 099 PercBass +099 039 100 EzAction +099 039 101 DetDXBa1 +099 040 000 DX-Vln 1 +099 040 064 DX-Vln 2 +099 040 065 DX-Vln 3 +099 040 096 DX-Vln 4 +099 040 097 Det.Vln1 +099 041 000 DX-Vla 1 +099 041 064 DX-Vla 2 +099 041 096 DX-Vla 3 +099 042 000 DX-Celo1 +099 042 064 Rosin +099 042 065 DX-Celo2 +099 042 066 DX-Celo3 +099 042 096 DX-Celo4 +099 045 000 DX-Pizz1 +099 045 064 Pizz Str +099 046 000 LuteHarp +099 046 064 Syn Harp +099 046 065 OrchHarp +099 046 066 Harp+Flt +099 046 096 DX-Harp1 +099 046 097 DX-Harp2 +099 046 098 DX-Harp3 +099 046 099 Apollon +099 046 100 HarpStrm +099 046 101 CmbaHarp +099 047 000 DX-Tmpni +099 048 000 Mid Str1 +099 048 064 Mid Str2 +099 048 065 Brit Str +099 048 066 DX-Str 1 +099 048 067 DX-Str 2 +099 048 068 DX-Str 3 +099 048 069 DX-Str 4 +099 048 070 DX-Str 5 +099 048 071 DX-Str 6 +099 048 072 DX-Str 7 +099 048 073 DX-Str 8 +099 048 096 DX-Str 9 +099 049 000 WarmStr1 +099 049 064 Low Str1 +099 049 065 Low Str2 +099 049 066 DX-Str10 +099 049 067 DX-Str11 +099 049 068 DX-Str12 +099 049 069 DX-Str13 +099 049 096 WarmStr2 +099 050 000 DX-SySt1 +099 050 064 Anna Str +099 050 065 SmalSect +099 050 066 Michelle +099 050 067 DX-SySt2 +099 050 068 DX-SySt3 +099 050 069 DX-SySt4 +099 050 070 DX-AnSt1 +099 050 071 DX-AnSt2 +099 050 072 AgtateMs +099 050 073 SolinePf +099 050 074 Soft Bow +099 050 075 GntlMind +099 050 076 Gypsy +099 050 096 DX-SySt5 +099 050 097 Violtron +099 050 098 General +099 050 099 OchChime +099 050 100 EP + Str +099 050 101 Det.Str1 +099 050 102 Str&Brs +099 051 000 DX-SySt6 +099 051 064 DX-SySt7 +099 051 065 DX-AnSt3 +099 051 066 MM-Str 1 +099 051 067 WarmStr3 +099 051 068 WarmStr4 +099 051 069 HalOrch1 +099 051 070 HalOrch2 +099 051 071 Maxi Str +099 051 072 SilkHall +099 051 073 Aftrnoon +099 051 074 ST.Machn +099 051 075 MoterDrv +099 051 096 Det.Str2 +099 051 097 Det.Str3 +099 051 098 Det.Str4 +099 051 099 Det.Str5 +099 052 000 DX-Cho 1 +099 052 064 DX-Cho 2 +099 052 065 DX-Cho 3 +099 052 066 DX-Cho 4 +099 052 067 DX-Cho 5 +099 052 096 DX-Vce 1 +099 052 097 DX-Vce 2 +099 054 000 DX-Cho 6 +099 054 064 DX-Cho 7 +099 054 065 DX-Cho 8 +099 054 066 MM-Vce 1 +099 054 067 MM-Vce 2 +099 054 068 MM-Vce 3 +099 054 069 Dbvoxfem +099 054 070 Lady Vox +099 054 071 SpaceVox +099 054 072 Syn Vox +099 054 096 MM-Vce 4 +099 056 000 DX-Trpt1 +099 056 064 DX-Trpt2 +099 056 065 DX-Trpt3 +099 056 066 DX-Trpt4 +099 056 067 SlvTrmpt +099 056 096 Solo Tp +099 057 000 DX-Trb 1 +099 057 064 DX-Trb 2 +099 057 065 Mute Trb +099 057 096 DX-Trb 3 +099 058 000 DX-Tuba1 +099 058 064 DX-Tuba2 +099 060 000 DX-Horn +099 060 064 MelwHrn1 +099 060 065 MelwHrn2 +099 060 066 MletHorn +099 060 067 BlnchHrn +099 060 068 AlpsHorn +099 060 069 VibraHrn +099 060 096 SimplHrn +099 061 000 DX-BrSc1 +099 061 064 DX-BrSc2 +099 061 065 5th Brss +099 061 066 TightBr1 +099 061 067 TightBr2 +099 061 068 BlowBrss +099 061 069 BrssSect +099 061 070 WarmBrss +099 061 071 Horn Ens +099 061 072 Fanfare +099 061 096 HardBrss +099 062 000 CS80-Br1 +099 062 064 CS80-Br2 +099 062 065 DX-SBr 1 +099 062 066 DX-SBr 2 +099 062 067 DX-SBr 3 +099 062 068 DX-SBr 4 +099 062 069 DX-SBr 5 +099 062 070 DX-SBr 6 +099 062 071 MM-Brss1 +099 062 072 MM-Brss2 +099 062 073 MM-Brss3 +099 062 074 Funkrhyt +099 062 075 PowerDrv +099 062 076 RahlBrss +099 062 077 UltraDrv +099 062 078 Ana Poly +099 062 079 Court +099 062 080 Juice +099 062 096 AnaFatBr +099 062 097 AnalogBr +099 062 098 DX-FatBr +099 062 099 SyPdBrss +099 062 100 LyerBrs1 +099 062 101 LyerBrs2 +099 063 000 ChorsBrs +099 063 064 SyntiBrs +099 063 065 DX-SBr 7 +099 063 066 SamplBrs +099 063 067 SinglBrs +099 063 068 ThickBrs +099 063 069 XyloBrss +099 063 070 OrchBrss +099 063 071 Ensemble +099 063 072 Kingdom +099 063 096 SynHorns +099 063 097 EP+Brs 1 +099 063 098 EP+Brs 2 +099 064 000 SprnoSax +099 065 000 Alto Sax +099 065 096 DX-ASax1 +099 065 097 DX-ASax2 +099 066 000 TenorSax +099 066 064 DX-Tsax +099 068 000 Oboe 1 +099 068 064 Oboe 2 +099 068 065 Oboe 3 +099 069 000 Eng.Horn +099 070 000 Bassoon +099 071 000 VbrtClar +099 071 064 SlowClar +099 071 065 DX-Clar1 +099 071 066 DX-Clar2 +099 071 096 DX-Clar3 +099 072 000 Piccolo1 +099 072 064 Piccolo2 +099 073 000 DX-Flt 1 +099 073 064 DX-Flt 2 +099 073 065 DX-Flt 3 +099 073 066 DX-Flt 4 +099 073 067 DX-Flt 5 +099 073 068 DX-Flt 6 +099 073 069 DX-Flt 7 +099 073 070 MtalFlut +099 073 071 AirBlowr +099 073 096 Song Flt +099 074 000 Recordr1 +099 074 064 Recordr2 +099 074 065 Recordr3 +099 075 000 DX-PnFl1 +099 075 064 Forest99 +099 075 065 Harvest +099 075 096 DX-PnFl2 +099 076 000 Fuhppps! +099 076 064 DX-Botle +099 076 065 Quena +099 078 000 Whistle1 +099 078 096 Sukiyaki +099 078 097 Whistle2 +099 078 098 Whistle3 +099 078 099 Csmwhist +099 079 000 DX-Ocrn1 +099 079 064 DX-Ocrn2 +099 079 065 DX-Ocrn3 +099 080 000 DX-Squar +099 080 064 DX-SLd 1 +099 080 065 DX-SLd 2 +099 080 066 LyleLead +099 080 067 DX-SLd 3 +099 080 068 DX-SLd 4 +099 080 069 DX-SLd 5 +099 080 070 DX-SLd 6 +099 080 096 DX-SLd 7 +099 080 097 DX-SLd 8 +099 080 098 DX-SLd 9 +099 081 000 DXSyLd 1 +099 081 064 DXSyLd 2 +099 081 065 DXSyLd 3 +099 081 066 Super DX +099 081 067 DXSyLd 4 +099 081 068 DXSyLd 5 +099 081 069 DXSyLd 6 +099 081 070 DXSyLd 7 +099 081 071 Vibratrn +099 081 072 DXSyLd 8 +099 081 073 Winwood +099 081 096 ReedLead +099 081 097 ArrowxMs +099 081 098 Att.Lead +099 081 099 DXSyLd 9 +099 082 000 CaliopL1 +099 082 064 CaliopL2 +099 082 065 PuffPipe +099 082 066 CaliopL3 +099 083 000 BrsLead1 +099 083 064 DX-WahLd +099 083 065 BrsLead2 +099 083 066 BrsLead3 +099 083 067 DXAtkLd +099 083 096 DX-BrLd1 +099 083 097 DX-SwLd1 +099 083 098 DX-SwLd2 +099 083 099 DX-SwLd3 +099 083 100 SoftLd 1 +099 084 000 Au Campo +099 084 064 LeadPhon +099 084 065 SweepLd +099 084 066 LdSbHarm +099 085 000 DX-VceLd +099 085 064 Giovanni +099 085 065 SnglLine +099 086 000 Fifths 1 +099 086 064 Fifths 2 +099 087 000 LeadLine +099 087 064 BassLead +099 087 065 EadgbeLd +099 087 066 DX-Ba+Ld +099 087 067 FrtlsLd +099 088 000 HyperSqr +099 088 064 Cho+Mrmb +099 088 065 IceHeven +099 088 066 MM-Prety +099 088 067 TngVoice +099 088 068 Str Tine +099 088 096 MpndgDom +099 088 097 EP Pad +099 089 000 Film Pad +099 089 064 DX-SawPd +099 089 065 ElecComb +099 089 066 Fl.Cloud +099 089 067 Floating +099 089 068 BrsyWarm +099 089 069 WhstlPad +099 090 000 BritePad +099 090 064 SyBr Pd1 +099 090 065 SyBr Pd2 +099 090 066 SyBr Pd3 +099 090 067 SyBr Pd4 +099 090 068 SyBr Pd5 +099 090 069 SyBr Pd6 +099 090 070 SyBr Pd7 +099 090 071 ClaviPad +099 090 072 Dspo Pad +099 090 073 FnerThng +099 090 074 MnstrPad +099 090 075 WhaserPd +099 090 076 BackSuir +099 090 077 PsrSweep +099 091 000 DX-ChPd1 +099 091 064 Anna Pad +099 091 065 Whisper1 +099 091 096 Cho Elms +099 091 097 DX-ChPd2 +099 091 098 AngelEvo +099 091 099 DX-ChPd3 +099 091 100 DX-ChPd4 +099 092 000 BowPad 1 +099 092 064 BowPad 2 +099 092 065 BowPad 3 +099 092 066 Ethereal +099 092 067 Glassy +099 092 068 GlssHarp +099 092 069 Ice Glxy +099 092 070 SpceTrip +099 092 096 Dstrcted +099 093 000 DX-MtPd1 +099 093 064 InitEnsm +099 093 065 MtlSweep +099 093 066 Gior Pad +099 093 096 Mystrian +099 093 097 DX-MtPd2 +099 094 000 GrngePad +099 094 064 StacHevn +099 095 000 SweepPd1 +099 095 064 Evlution +099 095 065 Phasers +099 095 066 FM-Grwth +099 097 000 FluvPush +099 097 096 BirdView +099 097 097 Sanctus +099 097 098 Glastine +099 098 000 MtalGlkn +099 098 064 BellPluk +099 098 065 MtalDlcm +099 098 066 MetalBox +099 098 096 ChiLight +099 099 000 PrdsGlok +099 099 064 Brassy +099 099 065 Electric +099 099 066 DX-Atms1 +099 099 067 DX-Atms2 +099 099 096 DX-HpSt1 +099 099 097 IceRvEco +099 099 098 DX-HpSt2 +099 100 000 DX-Brit1 +099 100 064 DX-Brit2 +099 100 065 SynBrite +099 100 096 BellStr1 +099 100 097 BellStr2 +099 101 000 Fmilters +099 101 096 DX-BL+Ch +099 102 000 WaterLog +099 102 096 Fntasynt +099 102 097 RprtRise +099 102 098 Aura +099 102 099 MM-Shk 1 +099 102 100 New Elms +099 102 101 Chi-S&H1 +099 102 102 DX-Echo1 +099 103 000 DX-ScFi1 +099 103 064 DX-ScFi2 +099 103 065 Baroque +099 103 066 DX-ScFi3 +099 103 067 DX-Stars +099 104 000 DX-Sitr1 +099 104 064 DX-Sitr2 +099 104 065 JuceHarp +099 104 066 Xanu +099 104 067 EthrFour +099 104 096 Zimbalon +099 104 097 Xango +099 104 098 India +099 104 099 Pilgrim +099 104 100 Kinzoku1 +099 104 101 Kinzoku2 +099 105 000 DX-Banjo +099 106 000 Shamisn1 +099 106 064 Shamisn2 +099 106 065 Shamisn3 +099 107 000 DX-Koto +099 107 064 Koto+Flt +099 108 000 DX-Klmb1 +099 108 064 DX-Klmb2 +099 108 065 DX-Klmb3 +099 108 096 DX-Klmb4 +099 109 000 DX-BgPip +099 110 000 DX-Fidle +099 111 000 ScchTone +099 112 000 HandBel1 +099 112 064 HandBel2 +099 112 065 TrcrBell +099 112 096 Twincle +099 113 000 DX-Aggo1 +099 113 064 DX-Aggo2 +099 113 096 Cowbell +099 114 000 StlDrum1 +099 114 064 StlDrum2 +099 114 065 Jamaica +099 114 066 SteelCan +099 114 096 DX-StDr1 +099 114 097 DX-StDr2 +099 114 098 DX-StCn1 +099 114 099 Glaeser +099 114 100 LigtYear +099 115 000 Block +099 115 096 Log Drum +099 116 000 Janpany +099 116 064 SoftHead +099 116 096 CongaDrm +099 116 097 DX-Perc1 +099 116 098 Nou +099 116 099 DX-Bongo +099 118 000 MM-SDr 1 +099 118 064 MM-SDr 2 +099 118 065 Tom Herz +099 118 096 DX-MtSnr diff --git a/data/bank/plg-150pf.tsv b/data/bank/plg-150pf.tsv new file mode 100644 index 00000000..c1e3d2be --- /dev/null +++ b/data/bank/plg-150pf.tsv @@ -0,0 +1,204 @@ +MSB PRG LSB NME +032 000 005 CFGrand +032 001 005 CFBrite +032 002 005 CFLove +032 003 005 CFRock +032 004 005 CFGrnd2 +032 005 005 CFRk&Rl +032 006 005 CFDark +032 007 005 CFGrnd3 +032 008 005 CFTack1 +032 009 005 CFMono +032 010 005 CFRckMn +032 011 005 CFLovMn +032 012 005 OldBlue +032 013 005 1968Pno +032 014 005 CFOct1 +032 015 005 CFOct2 +032 016 005 CFTack2 +032 017 005 CFHonky +032 018 005 CFHouse +032 019 005 BndPass +032 020 005 Squishy +032 021 005 1960s +032 022 005 Dulcim +032 023 005 Reverse +032 024 005 Engulf +032 025 005 Cyclin +032 026 005 Harmony +032 027 005 Haunted +032 028 005 Drops +032 029 005 S&H Pno +032 030 005 CQuence +032 031 005 InScape +032 032 005 CFGrand* +032 033 005 CFBrite* +032 034 005 CFLove* +032 035 005 CFRock* +032 036 005 CFGrnd2* +032 037 005 CFRk&Rl* +032 038 005 CFDark* +032 039 005 CFGrnd3* +032 040 005 CFTack1* +032 041 005 CFMono* +032 042 005 CFRckMn* +032 043 005 CFLovMn* +032 044 005 OldBlue* +032 045 005 1968Pno* +032 046 005 CFOct1* +032 047 005 CFOct2* +032 048 005 CFTack2* +032 049 005 CFHonky* +032 050 005 CFHouse* +032 051 005 BndPass* +032 052 005 Squishy* +032 053 005 1960s* +032 054 005 Dulcim* +032 055 005 Reverse* +032 056 005 Engulf* +032 057 005 Cyclin* +032 058 005 Harmony* +032 059 005 Haunted* +032 060 005 Drops* +032 061 005 S&H Pno* +032 062 005 CQuence* +032 063 005 InScape* +096 000 000 GrdPnoSt +096 000 064 GrdPnoMn +096 000 065 BriteGrd +096 000 066 60'sGrnd +096 000 067 RchGrdSt +096 000 068 RchGrdMn +096 000 069 60'sJazz +096 000 070 TghtGdSt +096 000 071 TghtGdMn +096 000 072 PowerGrd +096 000 073 MildGrnd +096 000 074 Timeworn +096 000 075 ChorusMn +096 000 076 Doom Pno +096 000 077 PhonoPno +096 000 078 Room Pno +096 000 079 AmbiGrnd +096 000 080 FlngrGrd +096 000 081 CelesGrd +096 000 082 DoublPno +096 000 083 Montuno +096 000 084 GrndDyno +096 000 085 DavidPno +096 000 086 RhodyGrd +096 000 087 Perc.Pno +096 000 088 Grand DX +096 000 089 GrandDX2 +096 000 090 BobPiano +096 000 091 PianoStr +096 000 092 PnoStPad +096 000 093 SynStrPf +096 000 094 PianoPad +096 000 095 OctPf+Pd +096 000 096 Pf+Choir +096 000 097 ModPd Pf +096 000 098 Pia-Tron +096 000 099 SitaryPf +096 000 100 StGrdPSt +096 000 101 StGrdPMn +096 000 102 StRichSt +096 000 103 StRichMn +096 000 104 StTghtSt +096 000 105 StTghtMn +096 000 106 CF Grand +096 001 000 BrghtPno +096 001 064 Digital +096 001 065 ChorDigi +096 001 066 Grnd+EP +096 001 067 DigiGrnd +096 001 068 Grnd/wDX +096 001 069 ChoDgPno +096 001 070 GlassPno +096 001 071 DigiTine +096 001 072 SawDigi1 +096 001 073 SawDigi2 +096 001 106 CFBrite +096 002 000 CP Piano +096 002 064 CP-Symph +096 002 065 Treme.CP +096 002 066 BrightCP +096 002 067 Digi.CP1 +096 002 068 Jino CP +096 002 069 Digi.CP2 +096 002 070 Petit CP +096 003 000 Hnkytnk1 +096 003 064 Hnkytnk2 +096 003 065 Hnkytnk3 +096 003 066 FMHnktnk +096 003 106 CFHonky +096 004 000 Tea +096 004 064 Deodar +096 004 065 70's EP +096 004 066 80's EP +096 004 067 Crisp EP +096 004 068 Sweetnes +096 004 069 Freeway +096 004 070 Treme.70 +096 004 071 Remark +096 004 072 Sample +096 004 073 Mid 70's +096 004 074 Celest80 +096 004 075 At Once +096 004 076 TremDyno +096 004 077 TremWurl +096 004 078 Phase 70 +096 004 079 DlydDyno +096 004 080 FlngDyno +096 004 081 Distor70 +096 004 082 Dyno 81 +096 004 083 Tonight +096 004 084 Dyno 83 +096 004 085 Dbl 70's +096 004 086 Digi-Rho +096 004 087 Choir EP +096 004 088 Paddy EP +096 004 089 VoxPd EP +096 004 090 VibratEP +096 004 091 60's EP +096 004 092 Trump +096 004 093 DonnyWrl +096 004 094 WurliAmp +096 004 095 Dg.Wurli +096 005 000 FullTine +096 005 064 DX EP2 +096 005 065 DX 1980 +096 005 066 DX 1990 +096 005 067 MellowDX +096 005 068 ChorTine +096 005 069 ChorsEP2 +096 005 070 Chor1980 +096 005 071 Chor1990 +096 005 072 DarkDXEP +096 005 073 FTBallad +096 005 074 SymphEP2 +096 005 075 Chor1982 +096 005 076 90Ballad +096 005 077 816 +096 005 078 DXEP+Pad +096 005 079 DXSynStr +096 005 080 DXEP+Cho +096 005 081 Balmy DX +096 005 082 GlassyEP +096 005 083 FM Piano +096 005 084 ChorFMP1 +096 006 000 Harpsi.1 +096 006 064 Harpsi.2 +096 006 065 Harpsi.3 +096 006 066 Harpsi.4 +096 006 067 RichHpsi +096 006 068 ShrpHpsi +096 007 000 Clavic.1 +096 007 064 Clavic.2 +096 007 065 MutedClv +096 007 066 PhaseClv +096 007 067 PhseClv2 +096 007 068 WahClavi +096 007 069 DigitClv +096 007 070 ChoDgClv +096 007 071 PhsDgClv \ No newline at end of file diff --git a/data/bank/plg-150vl.tsv b/data/bank/plg-150vl.tsv new file mode 100644 index 00000000..cb6732cc --- /dev/null +++ b/data/bank/plg-150vl.tsv @@ -0,0 +1,393 @@ +MSB PRG LSB NME +033 000 005 Mad Tube +033 001 005 VintLead +033 002 005 SpaceZoo +033 003 005 Gtr Hero +033 004 005 StoneHng +033 005 005 Whizzer +033 006 005 SimpleBa +033 007 005 ClavBass +033 008 005 SuperBas +033 009 005 New Slap +033 010 005 RockPigs +033 011 005 Igneous +033 012 005 50/50 +033 013 005 Cybastrg +033 014 005 Wynth +033 015 005 Buzz Saw +033 016 005 Zub Zub +033 017 005 Blue +033 018 005 OsciLead +033 019 005 SqrLead! +033 020 005 Bigger +033 021 005 AnaSquid +033 022 005 SharpSyn +033 023 005 Ana.Wave +033 024 005 Ana.Wurl +033 025 005 Babalog +033 026 005 FngrBas! +033 027 005 UprghtBa +033 028 005 Fnground +033 029 005 Birdland +033 030 005 FlageoBa +033 031 005 DampBass +033 032 005 Fretles! +033 033 005 Fretls!2 +033 034 005 ThumBass +033 035 005 RockBass +033 036 005 SmooBass +033 037 005 WarmBass +033 038 005 YamaBass +033 039 005 Box Bass +033 040 005 Bass Cab +033 041 005 FruitBas +033 042 005 AcidBas! +033 043 005 SqrBass! +033 044 005 PlsClav! +033 045 005 MogueBas +033 046 005 BoppaBas +033 047 005 BuzzerBa +033 048 005 MuteHrBa +033 049 005 Tek.Bass +033 050 005 TranzBas +033 051 005 Chamlion +033 052 005 Para.Syn +033 053 005 SteamBas +033 054 005 Boo Bass +033 055 005 WhelkBas +033 056 005 AttakSyn +033 057 005 Q. Klav +033 058 005 Sitar! +033 059 005 India +033 060 005 YamSteel +033 061 005 Stung St +033 062 005 Mu +033 063 005 Waterfon +033 064 005 DinoPerc +033 065 005 Formula +033 066 005 Jurassic +033 067 005 Devil +033 068 005 SpcHorse +033 069 005 Jason +033 070 005 Suedhead +033 071 005 EspaGtr! +033 072 005 JazzGtr! +033 073 005 JazzyGtr +033 074 005 L7 Pluck +033 075 005 WetPluck +033 076 005 Comp.Gtr +033 077 005 FunkyGtr +033 078 005 Thin Gtr +033 079 005 Carlos +033 080 005 Destiny +033 081 005 Gonzo +033 082 005 Grunge +033 083 005 Ossyncro +033 084 005 Talk Box +033 085 005 SyncLead +033 086 005 Old Mini +033 087 005 Fat Mini +033 088 005 Parlopho +033 089 005 SimpleSy +033 090 005 Choronic +033 091 005 SlitMinu +033 092 005 SynHarmo +033 093 005 Flaggoot +033 094 005 Syn.Skex +033 095 005 Reso.Sqr +033 096 005 Wurli Ld +033 097 005 FlatLea +033 098 005 PhilTur +033 099 005 ChalPuls +033 100 005 Pluck Ld +033 101 005 Brassyn +033 102 005 AcoSynLd +033 103 005 Moby +033 104 005 Digitrn +033 105 005 LyricOff +033 106 005 Rezzawi +033 107 005 Macro +033 108 005 Claribo +033 109 005 Binafone +033 110 005 MokoPipe +033 111 005 Alibaba +033 112 005 Persinet +033 113 005 PicoPipe +033 114 005 Gertrude +033 115 005 Xynth +033 116 005 Duality +033 117 005 AltKwek +033 118 005 Softblow +033 119 005 AlbaPipe +033 120 005 Electrum +033 121 005 Edgeopho +033 122 005 ClvBass! +033 123 005 WX Clari +033 124 005 WX Oboe +033 125 005 WX JzGtr +033 126 005 Shakuha! +033 127 005 LipClari +033 000 006 Vento +033 001 006 Floboe +033 002 006 Sintax +033 003 006 Eastern +033 004 006 Trumpet! +033 006 006 SprnoSx! +033 006 006 LiteAlto +033 007 006 Trombon! +033 008 006 BtlFlute +033 009 006 Air Sax +033 010 006 TenorSx! +033 011 006 Coca +033 012 006 JetLpBow +033 013 006 Viol Inn +033 014 006 MuteCone +033 015 006 BrethBow +033 016 006 Trumpt!2 +033 017 006 FluglHr! +033 018 006 Cornet +033 019 006 Jazz Trp +033 020 006 JazzTrp2 +033 021 006 Flumpet +033 022 006 WXTrumpt +033 023 006 MuteTrp! +033 024 006 MuteTp!2 +033 025 006 MelTrmbn +033 026 006 NerzoBrs +033 027 006 FrchHrn! +033 028 006 FrHorn!2 +033 029 006 Nu Horne +033 030 006 WX Horn +033 031 006 Tuba! +033 032 006 NuViolin +033 033 006 C Violin +033 034 006 BrtVioln +033 035 006 MutedVln +033 036 006 BrtViola +033 037 006 Vla Outt +033 038 006 Cello! +033 039 006 Eleanor +033 040 006 Nu Cello +033 041 006 Contrair +033 042 006 DoublBow +033 043 006 Piccolo! +033 044 006 Picolo!2 +033 045 006 BowPicol +033 046 006 C Flute +033 047 006 C Flute2 +033 048 006 JazFlute +033 049 006 OakFlute +033 050 006 BtlFlut2 +033 051 006 Rzde.Flt +033 052 006 Flutuen +033 053 006 Nz Flute +033 054 006 WX Shaku +033 055 006 Pan Pipe +033 056 006 PanPicol +033 057 006 Bamboo +033 058 006 Andean +033 059 006 Flurinet +033 060 006 SoftReed +033 061 006 Flurmod +033 062 006 Jhopali +033 063 006 Baroquen +033 064 006 SquealAT +033 065 006 NuSoprSx +033 066 006 CvSoprSx +033 067 006 SoprPipe +033 068 006 LiteSopr +033 069 006 AnaSprno +033 070 006 NuAltoSx +033 071 006 SweetAlt +033 072 006 AltoSax! +033 073 006 HarpAlto +033 074 006 HarpAlt2 +033 075 006 GlassAlt +033 076 006 Acid Sax +033 077 006 Wack Sax +033 078 006 NuTenrSx +033 079 006 MildTenr +033 080 006 Jazz Sax +033 081 006 TenorSub +033 082 006 BellMike +033 083 006 GlassTnr +033 084 006 FunkyTnr +033 085 006 OldTenor +033 086 006 BrtTenor +033 087 006 BariSax! +033 088 006 VoxoSaxo +033 089 006 Oboe! +033 090 006 Oboe!2 +033 091 006 Noboe +033 092 006 OboeWhi. +033 093 006 DblReedy +033 094 006 TripleRd +033 095 006 EngHorn! +033 096 006 Loboe +033 097 006 Bassoon! +033 098 006 Clrinet! +033 099 006 LitePipe +033 100 006 HyperCla +033 101 006 Clrinet2 +033 102 006 IslePipe +033 103 006 Chanter +033 104 006 ThaiReed +033 105 006 Recordr! +033 106 006 Claricrd +033 107 006 SoftPipe +033 108 006 BowedSaw +033 109 006 Ocarina! +033 110 006 Lonely +033 111 006 Ophelia +033 112 006 Maysbe?! +033 113 006 MizuHorn +033 114 006 Pico Str +033 115 006 Sylophon +033 116 006 Bowed Ld +033 117 006 Squeeze +033 118 006 MouthKey +033 119 006 AmpdHarp +033 120 006 CromHarp +033 121 006 WahUpHrp +033 122 006 YamaBotl +033 123 006 Blowsoo +033 124 006 Brappo +033 125 006 CrumBon +033 126 006 Klarina +033 127 006 ReedWin +097 021 112 Squeeze +097 022 112 MouthKey +097 022 113 AmpdHarp +097 022 114 CromHarp +097 024 112 EspaGtr! +097 026 112 JazzGtr! +097 026 113 Carlos +097 026 114 Destiny +097 027 112 L7 Pluck +097 027 113 WetPluck +097 032 112 UprghtBa +097 033 112 Fnground +097 033 113 Birdland +097 034 112 FlageoBa +097 034 113 DampBass +097 035 112 Fretles! +097 035 113 Fretls!2 +097 036 112 New Slap +097 036 113 ThumBass +097 038 112 AcidBas! +097 038 113 SqrBass! +097 039 112 PlsClav! +097 039 113 MogueBas +097 040 112 NuViolin +097 040 113 Viol Inn +097 040 114 C Violin +097 040 115 BrtVioln +097 040 116 MutedVln +097 041 112 BrtViola +097 041 113 Vla Outt +097 042 112 Cello! +097 042 113 Eleanor +097 042 114 Nu Cello +097 043 112 Contrair +097 043 113 DoublBow +097 056 112 Trumpet! +097 056 113 Trumpt!2 +097 056 114 FluglHr! +097 056 115 Cornet +097 057 112 Trombon! +097 057 113 MelTrmbn +097 058 112 Tuba! +097 059 112 MuteTrp! +097 059 113 MuteTp!2 +097 060 112 FrchHrn! +097 060 113 FrHorn!2 +097 064 112 SprnoSx! +097 064 113 CvSoprSx +097 064 114 SoprPipe +097 064 115 LiteSopr +097 065 112 AltoSax! +097 065 113 SweetAlt +097 065 114 LiteAlto +097 065 115 HarpAlto +097 065 116 HarpAlt2 +097 065 117 GlassAlt +097 066 112 TenorSx! +097 066 113 MildTenr +097 066 114 Jazz Sax +097 066 115 TenorSub +097 066 116 BellMike +097 066 117 GlassTnr +097 066 118 FunkyTnr +097 066 119 OldTenor +097 067 112 BariSax! +097 067 113 VoxoSaxo +097 068 112 Oboe! +097 068 113 Oboe!2 +097 068 114 DblReedy +097 068 115 TripleRd +097 069 112 EngHorn! +097 069 113 Loboe +097 070 112 Bassoon! +097 070 113 Flurinet +097 071 112 Clrinet! +097 071 113 LitePipe +097 071 114 HyperCla +097 072 112 Piccolo! +097 072 113 Picolo!2 +097 072 114 BowPicol +097 073 112 C Flute +097 073 113 C Flute2 +097 073 114 JazFlute +097 073 115 OakFlute +097 074 112 Recordr! +097 074 113 Claricrd +097 074 114 SoftPipe +097 075 112 Pan Pipe +097 075 113 PanPicol +097 076 112 YamaBotl +097 076 113 Bamboo +097 076 114 Andean +097 076 115 BtlFlute +097 076 116 BtlFlut2 +097 077 112 Shakuha! +097 078 112 BowedSaw +097 079 112 Ocarina! +097 080 112 50/50 +097 080 113 ChalPuls +097 080 114 Pluck Ld +097 081 112 Brassyn +097 081 113 AcoSynLd +097 081 114 VintLead +097 082 112 Maysbe?! +097 082 113 Air Sax +097 082 114 Baroquen +097 082 115 LipClari +097 083 112 Grunge +097 083 113 Ossyncro +097 083 114 Talk Box +097 084 112 MizuHorn +097 084 113 Floboe +097 085 112 SoftReed +097 085 113 BrethBow +097 087 112 Chamlion +097 087 113 OldMini +097 096 112 Mad Tube +097 097 112 StoneHng +097 098 112 Mu +097 099 112 Moby +097 100 112 Igenous +097 101 112 SquealAT +097 104 112 Sitar! +097 104 113 India +097 109 112 Chanter +097 109 113 ThaiReed +097 110 112 JetLpBow +097 114 112 YamSteel +097 120 112 Jurassic +097 121 112 Formula +097 122 112 Waterfon +097 123 112 Devil +097 124 112 SpcHorse +097 125 112 DinoPerc +097 126 112 SpaceZoo +097 127 112 Jason \ No newline at end of file diff --git a/data/bank/s90es.tsv b/data/bank/s90es.tsv new file mode 100644 index 00000000..0bf30e20 --- /dev/null +++ b/data/bank/s90es.tsv @@ -0,0 +1,876 @@ +MSB LSB PRG NME +063 017 000 NaturalS +063 017 001 ElegantS +063 017 002 Bright S +063 017 003 Dark S +063 017 004 Intimate +063 017 005 Mono S +063 017 006 FulGrand +063 017 007 Tacky +063 017 008 Ragtime +063 017 009 Agresive +063 017 010 HousePno +063 017 011 OldBlues +063 017 012 1968 +063 017 013 MonoComp +063 017 014 78rpmPno +063 017 015 BaladKey +063 017 016 80sLayer +063 017 017 BladStak +063 017 018 Pno Back +063 017 019 Pno&Str +063 017 020 Pno&Ooh +063 017 021 Digi.Grd +063 017 022 HardCP80 +063 017 023 CP80&EP +063 017 024 YamaEP’s +063 017 025 DynoStrt +063 017 026 ChrsDyno +063 017 027 ChrsHard +063 017 028 80th Bst +063 017 029 R&B Soft +063 017 030 Neo Soul +063 017 031 HrdVintg +063 017 032 PhaseVin +063 017 033 1983 +063 017 034 SoftCase +063 017 035 Early70s +063 017 036 Vintg’74 +063 017 037 Sweet +063 017 038 VintgFas +063 017 039 Max Tine +063 017 040 EarlyFsn +063 017 041 VintgCas +063 017 042 Contempo +063 017 043 Mr.Klank +063 017 044 E.PnoPad +063 017 045 BelChors +063 017 046 FM E.Pno +063 017 047 BalladEP +063 017 048 SparkTne +063 017 049 TX802 +063 017 050 Bell DX +063 017 051 Dark DX +063 017 052 BeautyDX +063 017 053 GS Tines +063 017 054 Anal.Pno +063 017 055 AhrAml +063 017 056 Tine EP +063 017 057 Anal.EP +063 017 058 WurlTrem +063 017 059 WurliAmp +063 017 060 Wurlix +063 017 061 VintgClv +063 017 062 SuperClv +063 017 063 St.Clavi +063 017 064 HollwClv +063 017 065 NuPhasin +063 017 066 PulseClv +063 017 067 TouchClv +063 017 068 Marimbl1 +063 017 069 Marimbl2 +063 017 070 Kalimbel +063 017 071 Tibetan +063 017 072 Gamelan +063 017 073 HandBell +063 017 074 VbrBowMW +063 017 075 MetlFish +063 017 076 BazrBels +063 017 077 MstcBowl +063 017 078 Twinkle +063 017 079 StickBel +063 017 080 IceBells +063 017 081 ChorsBel +063 017 082 Bell Ice +063 017 083 StackBel +063 017 084 BelChiff +063 017 085 NiceBell +063 017 086 NoisyBel +063 017 087 SakoBell +063 017 088 J-Pop +063 017 089 SynStlDr +063 017 090 ToyPiano +063 017 091 WoodBell +063 017 092 IslndBel +063 017 093 Log&Drum +063 017 094 TmpBlGlk +063 017 095 VelOrPrc +063 017 096 Petit +063 017 097 Imprompt +063 017 098 Mixture +063 017 099 St. Paul +063 017 100 FlutyPpe +063 017 101 St.Peter +063 017 102 Clean +063 017 103 ReedSplt +063 017 104 Tradi +063 017 105 Sunday +063 017 106 BrthPipe +063 017 107 ReedPipe +063 017 108 Medieval +063 017 109 Prelude +063 017 110 OohPipes +063 017 111 GreenTea +063 017 112 BassWalk +063 017 113 Amped +063 017 114 VintageC +063 017 115 Dave’s B +063 017 116 2nd Perc +063 017 117 1685&13 +063 017 118 Jazzy 1 +063 017 119 Jazzy 2 +063 017 120 Glassy +063 017 121 Slow Jam +063 017 122 Greasy +063 017 123 Swishie +063 017 124 Ful/Cvib +063 017 125 Mellow +063 017 126 Nu Shade +063 017 127 Cool Cat +063 018 000 Flutey +063 018 001 LeftMnl. +063 018 002 DrawCtrl +063 018 003 GospSplt +063 018 004 Soulemn +063 018 005 Fully +063 018 006 Progress +063 018 007 Crunchy +063 018 008 Rocky +063 018 009 DistFull +063 018 010 EarlyBrd +063 018 011 AnaDrwOr +063 018 012 Tiny +063 018 013 Paddy +063 018 014 MellowOr +063 018 015 RezDrwOr +063 018 016 OrganPad +063 018 017 Panther +063 018 018 SawCombo +063 018 019 1967Keys +063 018 020 YD-45C +063 018 021 Compact +063 018 022 Esp.Gtr +063 018 023 Nyln+Hrm +063 018 024 SimpStlG +063 018 025 StlCmprG +063 018 026 MuteSliG +063 018 027 Ac&HrmGt +063 018 028 StlSwtch +063 018 029 MegaStlG +063 018 030 2StlStrs +063 018 031 12StrGtr +063 018 032 12StrGMn +063 018 033 Mega12St +063 018 034 El 12Str +063 018 035 Strnge12 +063 018 036 Clean&Ac +063 018 037 JazzyPik +063 018 038 JazGtMel +063 018 039 VeloJazz +063 018 040 2CoilAm1 +063 018 041 2CoilAm2 +063 018 042 60sCln1 +063 018 043 60sCln2 +063 018 044 ClnSlapG +063 018 045 DistantG +063 018 046 SomeHair +063 018 047 Mid.Trem +063 018 048 CmpDream +063 018 049 Roto Gtr +063 018 050 AltRockr +063 018 051 Spanky +063 018 052 VinStrum +063 018 053 1CoilChr +063 018 054 Vin.Trem +063 018 055 HitItHrd +063 018 056 PaddyCln +063 018 057 Policia +063 018 058 Rokabily +063 018 059 Rotator +063 018 060 Baby Gtr +063 018 061 TouchWah +063 018 062 Mega Cln +063 018 063 OvrDrivn +063 018 064 TexBoogy +063 018 065 Dyna.Amp +063 018 066 DriveGtr +063 018 067 SnekFngr +063 018 068 Feedbker +063 018 069 KilrWhmy +063 018 070 Vuduman +063 018 071 CrunchyG +063 018 072 SmallAmp +063 018 073 LatnLuvr +063 018 074 StillBlu +063 018 075 59 Combo +063 018 076 BlueLead +063 018 077 Chugga +063 018 078 MetlMute +063 018 079 OvrDaTop +063 018 080 Beater +063 018 081 MegaOvDv +063 018 082 MegaDstG +063 018 083 UprghtBs +063 018 084 GroovinB +063 018 085 VelGrowl +063 018 086 MegaAcBs +063 018 087 FngrPkBs +063 018 088 PrecFW +063 018 089 RndWound +063 018 090 ActivePk +063 018 091 FretBuzz +063 018 092 3SixtyBa +063 018 093 S-VeeTee +063 018 094 GnarlyBa +063 018 095 ReggaeBa +063 018 096 BaCement +063 018 097 MidRFngr +063 018 098 HybrdBs1 +063 018 099 HybrdBs2 +063 018 100 PrecAmpd +063 018 101 FngBsAmp +063 018 102 PkBsFgDs +063 018 103 FuzzBass +063 018 104 MegaFgHm +063 018 105 VeloBass +063 018 106 SlpSwtch +063 018 107 MegaFngr +063 018 108 MegaSlap +063 018 109 Chilli +063 018 110 PickOpen +063 018 111 PickPull +063 018 112 PkMuteDr +063 018 113 NewPikBs +063 018 114 MegaPkBs +063 018 115 FrtlsDry +063 018 116 FrtlSolo +063 018 117 MegaFrtl +063 018 118 Violin 1 +063 018 119 Violin 2 +063 018 120 Fiddler +063 018 121 Viola 1 +063 018 122 Viola 2 +063 018 123 Cello 1 +063 018 124 Cello 2 +063 018 125 Solo 1 +063 018 126 Solo 2 +063 018 127 SolSpict +063 019 000 Contraba +063 019 001 2Violins +063 019 002 2 Violas +063 019 003 2 Cellos +063 019 004 Cel.Duet +063 019 005 2 Solos +063 019 006 CelloEns +063 019 007 ViolaEns +063 019 008 ViolnEns +063 019 009 CtrbSect +063 019 010 SmolSec1 +063 019 011 SmolSec2 +063 019 012 MediumEn +063 019 013 ViolnMix +063 019 014 SpicLine +063 019 015 Hard Bow +063 019 016 BkGround +063 019 017 Hophead +063 019 018 Hole Str +063 019 019 Ens Mix +063 019 020 Hard Ens +063 019 021 Velo Str +063 019 022 Big Strs +063 019 023 Lush +063 019 024 MutedSec +063 019 025 BigSymph +063 019 026 38veLush +063 019 027 38veHard +063 019 028 BeautyHp +063 019 029 Ste.Harp +063 019 030 Pizz.Ens +063 019 031 PizzSect +063 019 032 Oct.Pizz +063 019 033 Orch.Pl +063 019 034 PWM Strs +063 019 035 LightPad +063 019 036 NoblePad +063 019 037 Romantic +063 019 038 Stringy +063 019 039 MournStr +063 019 040 JP Strs +063 019 041 3OscVntg +063 019 042 SuperStr +063 019 043 VP Soft +063 019 044 PWMSimpl +063 019 045 DblChors +063 019 046 Old Str +063 019 047 PhaseStr +063 019 048 Oct Str +063 019 049 3 Octave +063 019 050 SS-40 +063 019 051 Tape Str +063 019 052 Trp Love +063 019 053 PiccoTrp +063 019 054 Dyno.Trp +063 019 055 SftJazTp +063 019 056 BaroqTrp +063 019 057 PhsMuted +063 019 058 Legend +063 019 059 2 Trmpts +063 019 060 Fluegel +063 019 061 JazyFlgl +063 019 062 Trombone +063 019 063 BlownBon +063 019 064 BoneSect +063 019 065 FrchHorn +063 019 066 FrHrSect +063 019 067 BigFrHrn +063 019 068 FilmHorn +063 019 069 Symphnc +063 019 070 SymphoBr +063 019 071 SymphBrs +063 019 072 SlowAttk +063 019 073 SftVelBr +063 019 074 Soft Brs +063 019 075 Velo Brs +063 019 076 SmlBrSec +063 019 077 Fanfare +063 019 078 BigBrite +063 019 079 PowerSec +063 019 080 VeloFall +063 019 081 StbDance +063 019 082 MonoSect +063 019 083 SforzBrs +063 019 084 BigBand1 +063 019 085 BigBand2 +063 019 086 SxBigBnd +063 019 087 HybridBr +063 019 088 HybrdSec +063 019 089 VelSynBr +063 019 090 CS-90 +063 019 091 FM Brass +063 019 092 Thinth +063 019 093 QuietBrs +063 019 094 Big Syn +063 019 095 ObStuff +063 019 096 OberBras +063 019 097 OberHrns +063 019 098 Ob Soft +063 019 099 T Brass +063 019 100 BigSqish +063 019 101 Slow PWM +063 019 102 Soft 5th +063 019 103 Timeless +063 019 104 After’84 +063 019 105 Prophy +063 019 106 Kustom +063 019 107 SoprnoSx +063 019 108 SprnoSft +063 019 109 Alto Vib +063 019 110 VeloAlto +063 019 111 TenrSoft +063 019 112 Tenor Sx +063 019 113 Hip Bari +063 019 114 4 Bros +063 019 115 Swt Oboe +063 019 116 SmthOboe +063 019 117 BassnVib +063 019 118 Clarinet +063 019 119 WW Trio +063 019 120 DblRdQrt +063 019 121 C Flute +063 019 122 SwtFlute +063 019 123 IrishPpe +063 019 124 BluzDist +063 019 125 Campfire +063 019 126 TootsHrp +063 019 127 WoodyHrp +063 020 000 Santur +063 020 001 Baglama +063 020 002 Kotoun +063 020 003 Kanun +063 020 004 Bazouk +063 020 005 Bouzuki +063 020 006 Oud +063 020 007 IndiaFli +063 020 008 WhereAmI +063 020 009 Sakura +063 020 010 Nomad +063 020 011 Ney +063 020 012 Kawala +063 020 013 Shukran +063 020 014 Zurna +063 020 015 Pungi +063 020 016 Shehnai +063 020 017 Digidoo +063 020 018 Gagaku +063 020 019 Kodo +063 020 020 Djerimbe +063 020 021 Mbira +063 020 022 Tabla +063 020 023 Tabla 2 +063 020 024 TblaZone +063 020 025 Udu +063 020 026 Djembe +063 020 027 Dhol +063 020 028 Kemence +063 020 029 KemenWet +063 020 030 Kokyu +063 020 031 Yayli +063 020 032 ChrchOoh +063 020 033 BriteHah +063 020 034 Ooh-Aah +063 020 035 PeaceVox +063 020 036 GlsChoir +063 020 037 AquaStop +063 020 038 Talk Box +063 020 039 Paradies +063 020 040 Westerly +063 020 041 TibetEns +063 020 042 Pan Sphr +063 020 043 Atlantis +063 020 044 AnalogT +063 020 045 MelAnal. +063 020 046 Square +063 020 047 PWM Soft +063 020 048 TheSynth +063 020 049 BrsMover +063 020 050 DrkLight +063 020 051 FatEight +063 020 052 SmthBlue +063 020 053 FazerPad +063 020 054 FrozenVx +063 020 055 Eclipse +063 020 056 Arclight +063 020 057 SilvLake +063 020 058 FrozenPd +063 020 059 Shine On +063 020 060 Whisperr +063 020 061 Mini 3 +063 020 062 VintgSaw +063 020 063 BriteSaw +063 020 064 DuckLead +063 020 065 Feeling +063 020 066 Crying +063 020 067 ThinkSnc +063 020 068 Lucky +063 020 069 PlsWound +063 020 070 PWM Lead +063 020 071 RapLead1 +063 020 072 RapLead2 +063 020 073 Soft RnB +063 020 074 SingleLn +063 020 075 IndaNite +063 020 076 SimpleBa +063 020 077 Fat Sine +063 020 078 OneVoice +063 020 079 Fundmntl +063 020 080 BalladBa +063 020 081 SimplRez +063 020 082 Unison +063 020 083 MoonBass +063 020 084 Sweeper +063 020 085 Boogie 1 +063 020 086 Sweeper +063 020 087 Boogie 2 +063 020 088 Clickie +063 020 089 KickBass +063 020 090 MiniClas +063 020 091 Wazzo +063 020 092 Lazerzz +063 020 093 The Gate +063 020 094 Insanity +063 020 095 NeverRpt +063 020 096 StoneArp +063 020 097 HellFire +063 020 098 Omniflow +063 020 099 Flutter +063 020 100 Chromsme +063 020 101 Cwncarn +063 020 102 Alioth +063 020 103 ChinaBrd +063 020 104 Missing +063 020 105 Glacy +063 020 106 OrchHits +063 020 107 80’s Hit +063 020 108 Chaser +063 020 109 CsmcRain +063 020 110 Mckinley +063 020 111 GlasTube +063 020 112 QwikPnch +063 020 113 BigComp +063 020 114 NoizRezz +063 020 115 Wobbly +063 020 116 Str.Bell +063 020 117 Nightfal +063 020 118 Antares +063 020 119 AiryNyln +063 020 120 GX1 +063 020 121 PWM Perc +063 020 122 Ore-Tech +063 020 123 PluckBel +063 020 124 Vanilla +063 020 125 Seraphim +063 020 126 NoiseBas +063 020 127 LostRing +063 021 000 Unplgged +063 021 001 Folk Gtr +063 021 002 Str12Str +063 021 003 ThinPick +063 021 004 ThikStrm +063 021 005 LazyChor +063 021 006 LatinJam +063 021 007 Slippery +063 021 008 NylonArp +063 021 009 Wakawaka +063 021 010 TouchFnk +063 021 011 FunkStar +063 021 012 CleanFnk +063 021 013 RiffRock +063 021 014 DistLick +063 021 015 VintgAmp +063 021 016 RokBakin +063 021 017 Wah Lead +063 021 018 OvrTopAr +063 021 019 1stJazBa +063 021 020 GroovArp +063 021 021 FunkFngr +063 021 022 Bsmn12/8 +063 021 023 Slapper +063 021 024 NoFrettn +063 021 025 PickedBa +063 021 026 BuzzyPik +063 021 027 MellowBa +063 021 028 FngrComp +063 021 029 Salsalic +063 021 030 Montuno +063 021 031 MuteyArp +063 021 032 1FngrRok +063 021 033 ClubBakn +063 021 034 VintgArp +063 021 035 ArpClavi +063 021 036 HouseOrg +063 021 037 BaliBell +063 021 038 BellShop +063 021 039 Str Part +063 021 040 TheSneak +063 021 041 Pizz.Arp +063 021 042 Harp Arp +063 021 043 HevnSent +063 021 044 Qut.Orch +063 021 045 FunkBros +063 021 046 Fall Arp +063 021 047 VelFlute +063 021 048 OrcDrumr +063 021 049 BaglmArp +063 021 050 Karbala1 +063 021 051 Karbala2 +063 021 052 Ney Arp +063 021 053 Sunny +063 021 054 Afro +063 021 055 Ethnolgy +063 021 056 FnkDelhi +063 021 057 FX Jam +063 021 058 Rap Top +063 021 059 MouthSht +063 021 060 R&B Solo +063 021 061 Kick Off +063 021 062 Embassy +063 021 063 Mocha +063 021 064 Safari +063 021 065 PunchSaw +063 021 066 MrGroovy +063 021 067 StarDrop +063 021 068 SyncArp1 +063 021 069 Madhouse +063 021 070 CompinPd +063 021 071 80’s Ens +063 021 072 Tribal +063 021 073 SyncArp2 +063 021 074 Orongo +063 021 075 Chinese +063 021 076 Neptune +063 021 077 Magician +063 021 078 BasicArp +063 021 079 Soundwrk +063 021 080 4Bertje +063 021 081 AN Arp +063 021 082 Particle +063 021 083 FuzzMorf +063 021 084 LighTek +063 021 085 CremCafe +063 021 086 Tangerin +063 021 087 Chocolat +063 021 088 Sushima +063 021 089 Metaloop +063 021 090 Teknokrt +063 021 091 Hi2Lo MW +063 021 092 Engineer +063 021 093 GhnaRain +063 021 094 Seq. Pad +063 021 095 Creamy +063 021 096 Waterprf +063 021 097 RingBell +063 021 098 SpctrArp +063 021 099 Hunter +063 021 100 Himalaya +063 021 101 Bass&Pad +063 021 102 MultiMod +063 021 103 Surprise +063 021 104 QuoVadis +063 021 105 MetalArp +063 021 106 DreamOfU +063 021 107 Transmit +063 021 108 Zynitas +063 021 109 Pistchio +063 021 110 X-Wave +063 021 111 Cherry +063 021 112 ElecDrum +063 021 113 SimpSize +063 021 114 Str8ter +063 021 115 BologPls +063 021 116 Strawbry +063 021 117 NeonSoda +063 021 118 Magnetic +063 021 119 ElcMusic +063 021 120 ChillOut +063 021 121 InMyHead +063 021 122 Racer +063 021 123 Jitter +063 021 124 Sand ES +063 021 125 VSE Seq +063 021 126 Dawn +063 021 127 LxAetrna +063 022 000 NaturalS +063 022 001 ChorDyno +063 022 002 SuperClv +063 022 003 St. Paul +063 022 004 Slippery +063 022 005 1stJazBa +063 022 006 Violin 2 +063 022 007 SftJazTp +063 022 008 BaglmArp +063 022 009 Salsalic +063 022 010 SprnoSft +063 022 011 Mini 3 +063 022 012 ChrchOoh +063 022 013 Cwncarn +063 022 014 Lazerzz +063 022 015 Mocha +063 022 016 ElegantS +063 022 017 R&B Soft +063 022 018 NuPhasin +063 022 019 Sunday +063 022 020 Nyln+Hrm +063 022 021 GroovArp +063 022 022 SolSpict +063 022 023 Trombone +063 022 024 Santur +063 022 025 1FngrRok +063 022 026 Alto Vib +063 022 027 VintgSaw +063 022 028 Talk Box +063 022 029 HellFire +063 022 030 Racer +063 022 031 80’s Ens +063 022 032 Bright S +063 022 033 Vintg’74 +063 022 034 TouchClv +063 022 035 ReedPipe +063 022 036 ThinPick +063 022 037 FunkFngr +063 022 038 SmolSec1 +063 022 039 FrHrSect +063 022 040 Karbala1 +063 022 041 TheSneak +063 022 042 TenrSoft +063 022 043 ThinkSnc +063 022 044 Paradies +063 022 045 Alioth +063 022 046 The Gate +063 022 047 Engineer +063 022 048 FulGrand +063 022 049 Sweet +063 022 050 Twinkle +063 022 051 Amped +063 022 052 JazGtMel +063 022 053 Slapper +063 022 054 MediumEn +063 022 055 SymphoBr +063 022 056 Baglama +063 022 057 HevnSent +063 022 058 Hip Bari +063 022 059 PlsWound +063 022 060 Analog +063 022 061 Glacy +063 022 062 Insanity +063 022 063 Bass&Pad +063 022 064 Tacky +063 022 065 E.PnoPad +063 022 066 StackBel +063 022 067 VintageC +063 022 068 Wakawaka +063 022 069 Fat Sine +063 022 070 BigSymph +063 022 071 PowerSec +063 022 072 Karbala2 +063 022 073 Qut.Orch +063 022 074 SwtFlute +063 022 075 RapLead1 +063 022 076 FatEight +063 022 077 CsmcRain +063 022 078 NeverRpt +063 022 079 SimpSize +063 022 080 1968 +063 022 081 Bell DX +063 022 082 NoizRezz +063 022 083 Cool Cat +063 022 084 2CoilAm1 +063 022 085 SimplRez +063 022 086 BeautyHp +063 022 087 VeloFall +063 022 088 Kanun +063 022 089 FunkBros +063 022 090 Swt Oboe +063 022 091 Soft RnB +063 022 092 FazerPad +063 022 093 Mckinley +063 022 094 StoneArp +063 022 095 BologPls +063 022 096 80sLayer +063 022 097 AnalogEP +063 022 098 GX1 +063 022 099 DistFull +063 022 100 DistLick +063 022 101 Boogie 1 +063 022 102 PizzSect +063 022 103 BigBand2 +063 022 104 Ney Arp +063 022 105 VelFlute +063 022 106 BassnVib +063 022 107 IndaNite +063 022 108 SilvLake +063 022 109 GlasTube +063 022 110 InMyHead +063 022 111 ElecDrum +063 022 112 Pno&Str +063 022 113 WurliAmp +063 022 114 PluckBel +063 022 115 Compact +063 022 116 OvrDaTop +063 022 117 KickBass +063 022 118 VP Soft +063 022 119 HybridBr +063 022 120 Shukran +063 022 121 OrcDrumr +063 022 122 IrishPpe +063 022 123 R&B Solo +063 022 124 Whisperr +063 022 125 Magnetic +063 022 126 Sand ES +063 022 127 Dawn +063 023 000 HyperStd +063 023 001 DryStdKt +063 023 002 New Rock +063 023 003 RockStK1 +063 023 004 RockStK2 +063 023 005 RkMono1 +063 023 006 RkMono2 +063 023 007 HipHpKt1 +063 023 008 HipHpKt2 +063 023 009 HipHpKt3 +063 023 010 HipHpKt4 +063 023 011 HipHpKt5 +063 023 012 HipHpKt6 +063 023 013 HpStkKt1 +063 023 014 HpStkKt2 +063 023 015 HpStkKt3 +063 023 016 HpStkKt4 +063 023 017 T9HpKt1 +063 023 018 T9HpKt2 +063 023 019 R&B Kit1 +063 023 020 R&B Kit2 +063 023 021 R&B Kit3 +063 023 022 AnalogT9 +063 023 023 AnalogT8 +063 023 024 TechnoKt +063 023 025 HouseKt1 +063 023 026 HouseKt2 +063 023 027 Big Kit +063 023 028 BreakKit +063 023 029 Drm&Bass +063 023 030 Acid Kit +063 023 031 JungleKt +063 023 032 Electric +063 023 033 HoomanKt +063 023 034 Hard Kt +063 023 035 Dist.Kit +063 023 036 Ambient +063 023 037 Jazz Kit +063 023 038 Orch.Kit +063 023 039 GarageKt +063 023 040 AllRndKt +063 023 041 RokMulti +063 023 042 HipMulti +063 023 043 Perc Kit +063 023 044 LatnPerc +063 023 045 Gtr/BsFx +063 023 046 WackoKit +063 023 047 WoodBits +063 023 048 MetalBit +063 023 049 HandsKit +063 023 050 ScrtchKt +063 023 051 AcsSnare +063 023 052 StSnares +063 023 053 AllKicks +063 023 054 DanceKik +063 023 055 EzSnares +063 023 056 CubanKit +063 023 057 SynPopKt +063 023 058 ArabMxKt +063 023 059 BlyDance +063 023 060 DanceSnr +063 023 061 Spec.SFX +063 023 062 SynthSFX +063 023 063 SFX Kit +063 024 000 UserKit1 +063 024 001 UserKit2 +063 024 002 UserKit3 +063 024 003 UserKit4 +063 024 004 UserKit5 +063 024 005 UserKit6 +063 024 006 UserKit7 +063 024 007 UserKit8 +063 024 008 UserKit9 +063 024 009 UserKt10 +063 024 010 UserKt11 +063 024 011 UserKt12 +063 024 012 UserKt13 +063 024 013 UserKt14 +063 024 014 UserKt15 +063 024 015 UserKt16 +063 024 016 UserKt17 +063 024 017 UserKt18 +063 024 018 UserKt19 +063 024 019 UserKt20 +063 024 020 UserKt21 +063 024 021 UserKt22 +063 024 022 UserKt23 +063 024 023 UserKt24 +063 024 024 UserKt25 +063 024 025 UserKt26 +063 024 026 UserKt27 +063 024 027 UserKt28 +063 024 028 UserKt29 +063 024 029 UserKt30 +063 024 030 UserKt31 +063 024 031 UserKt32 +063 031 061 BackPdMW +063 031 098 Whisperr +063 032 014 BobbyBas +063 032 020 SinglOsc +063 032 068 HellFire +063 032 122 PWM Perc +063 033 002 British +063 033 003 Wave Pan +063 033 027 TrncMelo +063 033 040 TranceBa +063 033 107 PolyTrnc \ No newline at end of file diff --git a/data/bank/sg.tsv b/data/bank/sg.tsv new file mode 100644 index 00000000..7fa6eab7 --- /dev/null +++ b/data/bank/sg.tsv @@ -0,0 +1,30 @@ +LSB PRG MSB NME +005 004 008 Det.EP 1 +005 005 008 Det.EP 2 +005 006 008 CplHapsi +005 014 008 ChrchBel +005 016 008 DetDrwOr +005 017 008 DetPrcOr +005 019 008 ChurOrg2 +005 021 008 AccordIt +005 024 008 Ukulele +005 025 008 12StrGtr +005 025 016 Mandolin +005 026 008 HawaiiGt +005 027 008 ChorusGt +005 028 008 Funk Gtr +005 030 008 FeedbkGt +005 031 008 GtFeedbk +005 038 008 SynBass3 +005 039 008 SynBass4 +005 048 008 Orch.Str +005 050 008 Syn.Str3 +005 061 008 BrsSect2 +005 062 008 SynBras3 +005 063 008 SynBras4 +005 080 008 SineLead +005 107 008 Taisho +005 115 008 Cascanet +005 116 008 ConcrtBD +005 117 008 MeloTom2 +005 118 008 SynthTom \ No newline at end of file diff --git a/data/bank/xg.tsv b/data/bank/xg.tsv new file mode 100644 index 00000000..84a96dc9 --- /dev/null +++ b/data/bank/xg.tsv @@ -0,0 +1,1242 @@ +MSB PRG LSB NME +000 000 000 GrandPno +000 000 001 GrndPnoK +000 000 018 MelloGrP +000 000 040 PianoStr +000 000 041 DreamPno +000 000 064 ConGrand +000 000 065 ConGrdK +000 000 066 DblConGr +000 000 067 MIDI Grd +000 000 068 MIDI Gr2 +000 000 069 OldAcPno +000 001 000 BritePno +000 001 001 BritPnoK +000 001 003 StBrtPno +000 001 020 RzBrtPno +000 001 032 DetBrPno +000 001 040 SynPdPno +000 001 064 BriConGr +000 001 065 BrConGrK +000 001 066 MIDI Gr3 +000 001 067 MIDI Gr4 +000 001 068 OldPiano +000 002 000 EGrndPno +000 002 001 EGndPnoK +000 002 032 Det.CP80 +000 002 035 Synth CP +000 002 040 Layer CP +000 002 041 LayerCP2 +000 003 000 HnkyTonk +000 003 001 HnkyTnkK +000 004 000 El.Piano +000 004 001 EPiano1K +000 004 018 MellowEP +000 004 032 ChorusEP +000 004 040 HardEPno +000 004 045 VX E.Pno +000 004 064 60sElPno +000 004 065 Old EP +000 004 066 Tribecca +000 004 067 Diploid +000 004 068 Flops +000 004 069 Soho +000 004 070 DetFlops +000 004 071 Diploid2 +000 004 072 Brooklyn +000 004 073 Diploid3 +000 004 074 PhunkyDX +000 004 075 Nasal DX +000 004 076 DetNslDX +000 004 077 Din +000 004 078 4 Way EP +000 004 079 Easy EP +000 004 080 Sine EP +000 004 081 Cheap EP +000 005 000 ElPiano2 +000 005 001 EPiano2K +000 005 012 ChorEPDc +000 005 032 Chor.EP2 +000 005 033 DX Hard +000 005 034 DXLegend +000 005 040 DX Phase +000 005 041 DXAnalog +000 005 042 DX Kt EP +000 005 045 VX EPno2 +000 005 048 ChorsEPK +000 005 052 DX Malet +000 005 064 Shirakwa +000 005 065 OldEPTyn +000 005 066 Flips +000 005 067 DetFlips +000 005 068 Flicks +000 005 069 DetFliks +000 005 070 BrightDX +000 005 071 DetBriDX +000 005 072 Kitayama +000 005 073 Turnpik +000 005 074 Turnpik2 +000 005 075 Cerritos +000 005 076 Sunset +000 005 077 Soft DX +000 005 078 Reso DX +000 005 079 PierceDX +000 005 080 ShiverDX +000 005 081 ShivrDX+ +000 005 082 RattleDX +000 005 083 RattlDX+ +000 005 084 TinkerDX +000 005 085 TinkrDX+ +000 006 000 Hrpschrd +000 006 001 HpschrdK +000 006 002 Hpschrd2 +000 006 003 Hpschrd3 +000 006 025 Hpschrd4 +000 006 032 HapsiDet +000 006 035 Hpschrd5 +000 006 040 ElecHpsi +000 006 064 SynHapsi +000 007 000 Clvichrd +000 007 001 ClvchrdK +000 007 027 ClaviWah +000 007 040 CosClavi +000 007 064 PulseClv +000 007 065 Perc Clv +000 007 066 ClrClavi +000 007 067 SweepClv +000 007 068 SynthClv +000 007 069 SupClavi +000 007 070 GtrClavi +000 007 071 HardyPlk +000 007 072 HrdyPlk+ +000 007 073 DblFMClv +000 007 074 RobotClv +000 008 000 Celesta +000 008 064 FM Celst +000 009 000 Glocken +000 010 000 MusicBox +000 010 064 Orgel +000 010 065 S. Orgel +000 011 000 Vibrafon +000 011 001 VibrafnK +000 011 045 HardVibr +000 012 000 Marimba +000 012 001 MarimbaK +000 012 064 SMarimba +000 012 096 Balafone +000 012 097 Balimba +000 012 098 Log Drum +000 013 000 Xylophon +000 014 000 TubulBel +000 014 096 ChrchBel +000 014 097 Carillon +000 015 000 Dulcimer +000 015 035 Dulcmer2 +000 015 096 Cimbalom +000 015 097 Santur +000 016 000 DrawOrgn +000 016 003 StDrawOr +000 016 032 DetDrwOr +000 016 033 60sDrOrg +000 016 034 60sDrOr2 +000 016 035 70sDrOrg +000 016 036 DrawOrg2 +000 016 037 60sDrOr3 +000 016 038 EvenBar +000 016 040 16+2”2/3 +000 016 064 Organ Ba +000 016 065 70sDrOr2 +000 016 066 CheezOrg +000 016 067 DrawOrg3 +000 016 068 StdiumOr +000 016 069 StdiumO2 +000 016 070 GospelOr +000 016 071 ClkGspOr +000 016 072 ChapelOr +000 016 073 DimChors +000 016 074 Dawn +000 016 075 MelloOrg +000 016 076 Fuzz Org +000 016 077 FM Organ +000 016 078 70sDrOr3 +000 016 079 Mood Org +000 017 000 PercOrgn +000 017 024 70sPcOrg +000 017 032 DetPrcOr +000 017 033 LightOrg +000 017 037 PercOrg2 +000 017 065 WarmJazz +000 017 066 ClickOrg +000 017 067 Grace +000 017 068 Cr.Grace +000 017 069 DimClick +000 017 070 Dusk +000 017 071 FM Click +000 017 072 Spoony +000 017 073 SupRotar +000 017 074 LoFiOrgn +000 017 075 BeepOrgn +000 017 076 Belief +000 017 077 Snap Org +000 018 000 RockOrgn +000 018 064 RotaryOr +000 018 065 SlwRotar +000 018 066 FstRotar +000 018 067 GlaRotar +000 019 000 ChrchOrg +000 019 032 ChurOrg3 +000 019 035 ChurOrg2 +000 019 040 NotreDam +000 019 064 OrgFlute +000 019 065 TrmOrgFl +000 020 000 ReedOrgn +000 020 032 DtReedOr +000 020 040 PuffOrgn +000 020 064 SyReedDk +000 021 000 Acordion +000 021 032 AccordIt +000 022 000 Harmnica +000 022 032 Harmo. 2 +000 023 000 TangoAcd +000 023 064 TngoAcd2 +000 023 065 TightAcd +000 023 066 DetT.Acd +000 024 000 NylonGtr +000 024 016 NylonGt2 +000 024 025 NylonGt3 +000 024 032 NylnGtDt +000 024 040 Wayside +000 024 043 VelGtHrm +000 024 064 Espa. Gt +000 024 065 HdEspaGt +000 024 066 MelEspGt +000 024 067 DecayEsG +000 024 096 Ukulele +000 025 000 SteelGtr +000 025 016 SteelGt2 +000 025 032 SteelGDt +000 025 035 12StrGtr +000 025 040 Nyln&Stl +000 025 041 Stl&Body +000 025 064 Nashvill +000 025 065 RezNashv +000 025 066 Nashv.12 +000 025 067 OldSampl +000 025 096 Mandolin +000 025 097 MndolnEn +000 026 000 Jazz Gtr +000 026 018 MelloGtr +000 026 032 Jazz Amp +000 026 040 Organ Gt +000 026 041 OctPlate +000 026 064 MidSJazz +000 026 065 BriSJazz +000 026 066 DetSJazz +000 026 067 RezSJazz +000 026 068 DX JazGt +000 026 069 DtDX JzG +000 026 070 PulseJaz +000 026 071 NekRough +000 026 072 MidRough +000 026 096 PdlSteel +000 027 000 CleanGtr +000 027 032 ChorusGt +000 027 033 ChorGtLt +000 027 064 CleanGt2 +000 027 065 MidT.Gtr +000 027 066 MidTGtSt +000 027 067 NasalGtr +000 027 068 StNaslGt +000 027 069 Mid Hamr +000 027 070 BridHamr +000 027 071 Dbl Hamr +000 027 072 St. Hamr +000 027 073 FMChoGtr +000 027 074 SoFMChGt +000 027 075 PeskyGtr +000 027 076 ClaviGtr +000 028 000 MutedGtr +000 028 040 Funk Gtr +000 028 041 MuteStrG +000 028 043 FunkGtr2 +000 028 045 Jazz Man +000 028 064 Wrench +000 028 065 Heavy Wr +000 028 066 DblWrnch +000 028 067 Tin +000 028 068 GrvyMtGt +000 028 096 Mu.DstGt +000 029 000 OvrDrvGt +000 029 032 OvdrGtDt +000 029 040 Parallel +000 029 043 Gt.Pinch +000 029 064 MidMnhtn +000 029 065 BriMnhtn +000 029 066 DetMnhtn +000 029 067 PwrMnhtn +000 030 000 Dist.Gtr +000 030 012 DstRthmG +000 030 024 DistGtr2 +000 030 035 DistGtr3 +000 030 036 PowerGt2 +000 030 037 PowerGtr +000 030 038 Dst.5ths +000 030 040 FeedbkGt +000 030 041 FeedbkG2 +000 030 042 TwinDist +000 030 043 RckRthm2 +000 030 045 RockRthm +000 030 064 Bite +000 030 065 ResoBite +000 030 066 Det.Bite +000 030 067 Bite + +000 030 068 Burnout +000 030 069 Bombay +000 030 070 SusBmbay +000 030 071 Jaipur +000 031 000 GtrHarmo +000 031 064 AcouHarm +000 031 065 GtFeedbk +000 031 066 GtrHrmo2 +000 031 067 Shimla +000 032 000 Aco.Bass +000 032 040 JazzRthm +000 032 041 PkAcouBa +000 032 043 Blink Ba +000 032 045 VXUprght +000 032 064 Boston +000 032 065 BrBoston +000 032 066 Coolth +000 032 067 BrCoolth +000 032 096 WalkSyBa +000 032 097 Dim&Cool +000 033 000 FngrBass +000 033 018 FingrDrk +000 033 027 FlangrBa +000 033 032 FngrBaDt +000 033 040 Ba&DstEG +000 033 043 FngrSlap +000 033 045 FngrBas2 +000 033 064 Jazzy Ba +000 033 065 Mod Bass +000 033 066 Chase +000 033 067 RezChase +000 033 068 BlueBass +000 033 069 JazzyBa2 +000 034 000 PickBass +000 034 006 PickBas2 +000 034 028 M.PkBass +000 034 040 PkBa&MGt +000 034 064 HardPick +000 034 065 RzHardPk +000 034 066 PickBa + +000 035 000 Fretless +000 035 032 Fretles2 +000 035 033 Fretles3 +000 035 034 Fretles4 +000 035 064 Pwr.Fret +000 035 065 RzPwrFrt +000 035 066 TalkinBa +000 035 067 NoizFret +000 035 096 SynFretl +000 035 097 SmthFrtl +000 036 000 Slp.Bass +000 036 021 CosmSlap +000 036 027 ResoSlap +000 036 032 PunchThm +000 036 064 Slapper +000 036 065 Thum&Slp +000 036 066 GlitzSlp +000 036 067 FM Slap +000 036 068 DetFMSlp +000 037 000 SlpBass2 +000 037 016 BrtSlpSp +000 037 022 Wah Slap +000 037 043 VeloSlap +000 038 000 Syn.Bass +000 038 018 SynBs1Dk +000 038 020 FastResB +000 038 021 TL66 +000 038 024 AcidBass +000 038 027 ResoBass +000 038 028 MPulseBa +000 038 029 SlwAttak +000 038 035 Clv.Bass +000 038 040 TechnoBa +000 038 041 KickBass +000 038 042 NEP +000 038 064 Orbiter +000 038 065 Sqr.Bass +000 038 066 RubberBa +000 038 067 Fish +000 038 068 HardReso +000 038 069 Wah Saw +000 038 070 Pluto +000 038 071 Pluto + +000 038 072 Stimuli +000 038 073 RunPulse +000 038 074 TkinPuls +000 038 075 Node +000 038 076 Stainer +000 038 077 StainAtk +000 038 078 SweepSqr +000 038 079 SwpSqr + +000 038 080 Stinks +000 038 081 RezStink +000 038 082 Reso Sqr +000 038 083 Dagger +000 038 084 Zinc +000 038 085 SweePWM +000 038 086 St.SwPWM +000 038 087 Slow Wah +000 038 088 Crook +000 038 089 FstFrtBa +000 038 090 Rubber30 +000 038 091 FstRezBa +000 038 092 MnplisBa +000 038 093 Miami Ba +000 038 094 RzTalkBx +000 038 096 Hammer +000 039 000 SynBass2 +000 039 006 MelloSBa +000 039 012 Seq.Bass +000 039 018 ClkSynBa +000 039 019 SynBs2Dk +000 039 022 Zealot +000 039 032 SmthSynB +000 039 040 ModulrBa +000 039 041 DX Bass +000 039 042 DX BaBri +000 039 064 X WireBa +000 039 065 AtkPulse +000 039 066 CS Light +000 039 067 MetlBass +000 039 068 F.OsciBa +000 039 069 Cubit +000 039 070 Cubit + +000 039 071 Keel +000 039 072 Pwr Keel +000 039 073 PlnPulse +000 039 074 PwrPulse +000 039 075 BrPwPuls +000 039 076 PowerSaw +000 039 077 SmoothBa +000 039 078 SynthAtk +000 040 000 Violin +000 040 008 SlwVioln +000 040 040 Unison +000 040 064 Cadenza +000 040 065 CadenzDk +000 040 066 ViolinSc +000 040 067 HdVlnSec +000 040 068 SlVlnSec +000 041 000 Viola +000 041 040 DblViola +000 041 064 Sonata +000 041 065 ViolaSec +000 041 066 HdVlaSec +000 041 067 SlVlaSec +000 042 000 Cello +000 042 064 CellSect +000 042 065 HdCelloS +000 042 066 SlCelloS +000 043 000 Contrbas +000 043 064 ContrSec +000 043 065 HdContrS +000 043 066 SlContrS +000 044 000 Trem.Str +000 044 008 SlwTrStr +000 044 040 Susp.Str +000 044 064 Fear +000 044 065 Det.Fear +000 044 066 Apoclyps +000 044 067 BrTrmStr +000 045 000 Pizz.Str +000 045 035 PizzOcta +000 045 040 Sleep +000 045 064 Collegno +000 046 000 Harp +000 046 040 YangChin +000 046 064 ElecHarp +000 046 096 VlinHarp +000 046 097 DtVliHrp +000 047 000 Timpani +000 047 043 Roll&Hit +000 048 000 Strings1 +000 048 003 StStrngs +000 048 008 Slow Str +000 048 014 SforzStr +000 048 024 Arco Str +000 048 035 60sStrng +000 048 040 OrcheStr +000 048 041 OrchStr2 +000 048 042 TremOrch +000 048 045 Velo.Str +000 048 052 Lento +000 048 064 SuperStr +000 048 065 StSupStr +000 048 066 Triste +000 048 067 Basso +000 048 068 Stacc.Hi +000 048 069 Stacc.Lo +000 048 070 Hall Str +000 048 071 Str&FrHr +000 048 072 SolidStr +000 048 073 SwellStr +000 048 074 Str+BrSc +000 048 075 3 OctStr +000 048 076 5PartStr +000 049 000 Strings2 +000 049 003 StSlwStr +000 049 008 LegatoSt +000 049 040 Warm Str +000 049 041 Kingdom +000 049 064 70s Str +000 049 065 Strings3 +000 050 000 Syn. Str +000 050 008 Memory +000 050 018 Zephyr +000 050 027 Reso Str +000 050 035 Syn.Str3 +000 050 039 Monarchy +000 050 040 GrandPad +000 050 041 SweepStr +000 050 042 SwpStrOc +000 050 064 Syn.Str4 +000 050 065 Syn.Str5 +000 050 066 Solitude +000 050 067 Fate +000 050 068 Thulium +000 050 069 Brook +000 050 070 St Brook +000 050 071 OldSyStr +000 051 000 Syn.Str2 +000 051 021 TradeWnd +000 051 039 WormHole +000 051 064 Hope +000 051 065 Virgo +000 051 066 Platinum +000 051 067 Octa.PWM +000 051 068 Taurus +000 051 069 Frost +000 051 070 Leo +000 051 071 SolPlexs +000 051 072 Sun Rise +000 052 000 ChoirAah +000 052 003 St.Choir +000 052 016 ChoirAh2 +000 052 032 MelChoir +000 052 039 Gasp +000 052 040 ChoirStr +000 052 041 Dead Sea +000 052 064 Str&C.Ah +000 052 065 MaleC.Ah +000 052 066 Scroll +000 052 067 Scroll + +000 052 068 StereoAh +000 052 069 Aah Mix +000 052 070 OrcheAah +000 053 000 VoiceOoh +000 053 064 VoiceDoo +000 053 065 Hmm +000 053 066 WhirlCho +000 053 067 StereoOh +000 053 096 VoiceHum +000 054 000 SynVoice +000 054 040 SynVoix2 +000 054 041 Choral +000 054 064 AnalVoix +000 054 065 Aspirate +000 054 066 DtAspirt +000 054 067 Facula +000 055 000 Orch.Hit +000 055 008 LoFi Hit +000 055 035 OrchHit2 +000 055 040 Throne +000 055 064 Impact +000 055 065 Brs Stab +000 055 066 DoublHit +000 055 067 BrsStb80 +000 055 068 Bass Hit +000 055 069 BassHit+ +000 055 070 6th Hit +000 055 071 6th Hit+ +000 055 072 Euro Hit +000 055 073 EuroHit+ +000 055 074 Blowout +000 055 075 Tricertp +000 056 000 Trumpet +000 056 016 Trumpet2 +000 056 017 BriteTrp +000 056 032 Warm Trp +000 056 064 Dark Trp +000 056 065 SoftDTrp +000 056 066 Soft Trp +000 056 067 Blow +000 056 068 Dbl Blow +000 056 069 4th Trp +000 056 070 SynthTrp +000 056 071 SweetTrp +000 056 072 MlSwtTrp +000 056 073 NormlTrp +000 056 074 Bril Trp +000 056 075 Fanfare +000 056 096 FlugelHr +000 056 097 Cornet +000 057 000 Trombone +000 057 018 Trombon2 +000 057 064 BrtTromb +000 057 065 MelloTrb +000 057 066 JJJ +000 057 067 BrilTrmb +000 057 068 HardTrmb +000 057 069 BrtBsTrb +000 057 070 HrdBsTrb +000 058 000 Tuba +000 058 016 Tuba 2 +000 058 064 HardTuba +000 058 065 SlowTuba +000 058 066 Eufonium +000 059 000 MutedTrp +000 059 040 Backyard +000 059 064 MuteTrp2 +000 059 065 BakStair +000 060 000 FrchHorn +000 060 006 FrHrSolo +000 060 032 FrHorn 2 +000 060 037 HornOrch +000 060 064 Syn.Horn +000 060 065 HrnOrch2 +000 060 066 BrtFrHrn +000 060 067 HardFrHr +000 061 000 BrasSect +000 061 003 StBrsSec +000 061 014 SforzBrs +000 061 018 MildBras +000 061 035 Tp&TbSec +000 061 036 TpTbSec2 +000 061 039 BrasFall +000 061 040 BrsSect2 +000 061 041 Hi Brass +000 061 042 MelloBrs +000 061 052 Bund +000 061 053 FakeHorn +000 061 054 FkHornOc +000 061 064 SuperBrs +000 061 065 CutBrass +000 061 066 BlownBrs +000 061 067 PwrSforz +000 061 068 BrtPwSfz +000 061 069 Alto&Trp +000 061 070 Tenor&Tp +000 061 071 BrasBros +000 061 072 VagueBro +000 061 073 BrsSect3 +000 061 074 SforzBr2 +000 061 075 OctBrass +000 061 076 Alps +000 061 077 SymphBrs +000 061 078 Phoenix +000 062 000 SynBrass +000 062 012 QuackBrs +000 062 020 RezSynBr +000 062 024 PolyBras +000 062 027 SynBras3 +000 062 029 AnlSforz +000 062 032 JumpBras +000 062 040 SyBrsSub +000 062 045 AnVelBrs +000 062 064 Anal.Brs +000 062 065 Syn Then +000 062 066 Sync Brs +000 062 067 StSyncBr +000 062 068 Anal.Hrn +000 062 069 Anal.Hr2 +000 062 070 OctAnaHr +000 062 071 PwSawBrs +000 063 000 SynBras2 +000 063 018 SoftBras +000 063 040 SynBras4 +000 063 041 ChoirBrs +000 063 042 Ana.Horn +000 063 045 AnVelBr2 +000 063 064 AnalBrs2 +000 063 065 Soft Cut +000 063 066 SoAnaHrn +000 064 000 SprnoSax +000 064 008 VgSoprSx +000 064 064 Meditate +000 064 065 RezMedit +000 065 000 Alto Sax +000 065 018 LgtAltSx +000 065 040 Sax Sect +000 065 043 HyprAlto +000 065 064 PwrAltSx +000 065 065 FakeAlto +000 065 066 FakeAlt+ +000 065 067 DFakeAlt +000 066 000 TenorSax +000 066 040 BrthTnSx +000 066 041 SoftTenr +000 066 064 TenrSax2 +000 066 065 SuperTnr +000 066 066 SuprTnr+ +000 066 067 SupTnrSt +000 066 068 Tenr&Alt +000 067 000 Bari.Sax +000 068 000 Oboe +000 068 065 HeinzUni +000 068 066 Exp.Oboe +000 069 000 Eng.Horn +000 070 000 Bassoon +000 071 000 Clarinet +000 071 040 Sy&Clari +000 071 096 BasClari +000 072 000 Piccolo +000 072 096 Bang Di +000 073 000 Flute +000 073 040 NeatBrth +000 073 064 Boehm +000 073 065 BthBoehm +000 073 066 Pastoral +000 073 067 Shepherd +000 073 096 Qu Di +000 074 000 Recorder +000 074 064 Piplith +000 074 065 Home +000 075 000 PanFlute +000 075 064 PanFlut2 +000 075 065 Meadow +000 075 096 Kawala +000 076 000 BotlBlow +000 076 064 BotlLgto +000 077 000 Shakhchi +000 078 000 Whistle +000 078 064 Reverie +000 079 000 Ocarina +000 079 064 Opalina +000 080 000 SquareLd +000 080 006 SqrLead2 +000 080 008 LMSquare +000 080 018 HollowSq +000 080 019 Shmoog +000 080 035 DblOsci. +000 080 064 MellowSq +000 080 065 SoloSine +000 080 066 SineLead +000 080 067 Pulse Ld +000 080 068 SyncLead +000 080 069 ForceOsc +000 080 070 Accent +000 080 071 Brick +000 080 072 Alum +000 080 073 Query +000 080 074 FMSlwSwp +000 080 075 SyncLdDb +000 080 076 Curse Ld +000 080 077 OctvBeep +000 080 078 SineLd 2 +000 080 079 SqrLead3 +000 080 080 SqrLead4 +000 081 000 Saw Lead +000 081 006 SawLead2 +000 081 008 ThickSaw +000 081 018 Dyna.Saw +000 081 019 Digi.Saw +000 081 020 Big Lead +000 081 024 HeavySyn +000 081 025 WaspySyn +000 081 026 MondoSyn +000 081 027 RezzySaw +000 081 032 DoublSaw +000 081 035 Toy Lead +000 081 036 Dim Saw +000 081 040 PulseSaw +000 081 041 Dr. Lead +000 081 045 VeloLead +000 081 064 Digger +000 081 065 Dunce +000 081 066 BrassSaw +000 081 067 SawRiver +000 081 068 BrasPDbl +000 081 069 SawTrmpt +000 081 070 Hue +000 081 071 Str8.Saw +000 081 072 Str8Puls +000 081 073 PWMania +000 081 074 ModulSaw +000 081 075 Toad +000 081 076 FatOctav +000 081 077 Overdose +000 081 078 PWMDecay +000 081 079 SawDecay +000 081 080 FatSawLd +000 081 081 DuckLead +000 081 082 BoostSaw +000 081 083 Mr. Saw +000 081 084 Thin Saw +000 081 085 MouthSaw +000 081 086 Dr.Lead2 +000 081 087 SawUnisn +000 081 088 OctSawLd +000 081 089 Seq.Saw1 +000 081 090 Seq.Saw2 +000 081 091 SimplSaw +000 081 096 SeqAnal. +000 082 000 CaliopLd +000 082 040 NoviceLd +000 082 064 VentSyn. +000 082 065 PureLead +000 082 066 ElecPrim +000 083 000 Chiff Ld +000 083 040 SaltLead +000 083 064 Rubby +000 083 065 HardSync +000 084 000 CharanLd +000 084 064 DistLead +000 084 065 WireLead +000 084 066 SynPluck +000 084 067 DaSyncLd +000 085 000 Voice Ld +000 085 024 SynthAah +000 085 064 Vox Lead +000 085 065 BrthLayr +000 085 066 Cypher 1 +000 085 067 Cypher 2 +000 085 068 Cypher 3 +000 085 069 SupCyphr +000 086 000 Fifth Ld +000 086 008 5thLdSft +000 086 035 Big Five +000 087 000 Bass&Ld +000 087 016 Big&Low +000 087 064 Fat&Prky +000 087 065 SftWhirl +000 087 066 Cant +000 087 067 Mogul +000 087 068 Distance +000 087 069 Sync B&L +000 087 070 BassLead +000 088 000 NewAgePd +000 088 064 Fantasy +000 088 065 Libra +000 088 066 Bell Pad +000 089 000 Warm Pad +000 089 016 ThickPad +000 089 017 Soft Pad +000 089 018 Sine Pad +000 089 040 Vishnu +000 089 064 Horn Pad +000 089 065 RotarStr +000 089 066 LightPad +000 090 000 PolySyPd +000 090 064 PolyPd80 +000 090 065 ClickPad +000 090 066 Anal.Pad +000 090 067 SquarePd +000 090 068 Snow Pad +000 090 069 Pixie +000 090 070 Pisces +000 090 071 Spiral +000 090 072 PlySyPd2 +000 090 073 PlySyPdK +000 091 000 ChoirPad +000 091 064 Heaven +000 091 065 Light Pd +000 091 066 Itopia +000 091 067 CC Pad +000 091 068 CosmicPd +000 091 069 Aah Pad +000 091 070 Ooh Pad +000 091 071 Ooh Aah +000 092 000 BowGlass +000 092 064 Glacier +000 092 065 GlassPad +000 092 066 SqrTwang +000 092 067 Sqr.Pad8 +000 093 000 MetalPad +000 093 064 Tine Pad +000 093 065 Pan Pad +000 093 066 Queever +000 094 000 Halo Pad +000 094 040 Tiu +000 094 064 Aries +000 094 065 ChorusPd +000 095 000 SweepPad +000 095 020 Shwimmer +000 095 027 Converge +000 095 064 PolarPad +000 095 065 Sweepy +000 095 066 Celstial +000 096 000 Rain +000 096 045 ClaviPad +000 096 064 HrmoRain +000 096 065 AfrcWind +000 096 066 Carib +000 097 000 SoundTrk +000 097 027 Prologue +000 097 064 Ancestrl +000 097 065 Rave +000 097 066 Fairy +000 097 067 Hermit +000 098 000 Crystal +000 098 012 SynDrCmp +000 098 014 Popcorn +000 098 018 TinyBell +000 098 035 RndGlock +000 098 040 GlokChim +000 098 041 ClearBel +000 098 042 ChorBell +000 098 064 SynMalet +000 098 065 SftCryst +000 098 066 LoudGlok +000 098 067 XmasBell +000 098 068 VibraBel +000 098 069 DigiBell +000 098 070 AirBells +000 098 071 BellHarp +000 098 072 Gamelmba +000 098 073 Bounce +000 098 074 Anal.Bel +000 099 000 Atmosphr +000 099 018 WarmAtms +000 099 019 HollwRls +000 099 040 NylonEP. +000 099 064 NylnHarp +000 099 065 Harp Vox +000 099 066 AtmosPad +000 099 067 Planet +000 099 068 Lyra +000 099 069 Akasaka +000 099 070 DigiBmda +000 099 071 CloudPad +000 099 072 PulseKey +000 099 073 NoisePno +000 100 000 Bright +000 100 064 FantaBel +000 100 065 ShinStar +000 100 066 Brt.Stab +000 100 096 Smokey +000 101 000 Goblins +000 101 064 GobSynth +000 101 065 Creeper +000 101 066 Ring Pad +000 101 067 Ritual +000 101 068 ToHeaven +000 101 069 MilkyWay +000 101 070 Night +000 101 071 Glisten +000 101 072 Puffy +000 101 073 Mimicry +000 101 074 Parasite +000 101 075 Cicada +000 101 076 Beacon +000 101 077 GblnTalk +000 101 078 Temple +000 101 096 BelChoir +000 101 097 Dharma +000 102 000 Echoes +000 102 008 Echoes 2 +000 102 014 Echo Pan +000 102 064 EchoBell +000 102 065 Big Pan +000 102 066 SynPiano +000 102 067 Creation +000 102 068 StarDust +000 102 069 Reso&Pan +000 102 070 Ana.Echo +000 103 000 Sci-Fi +000 103 064 Starz +000 104 000 Sitar +000 104 032 DetSitar +000 104 035 Sitar 2 +000 104 040 Bhuj +000 104 064 Syn.Raga +000 104 065 Odin +000 104 096 Tambra +000 104 097 Tamboura +000 105 000 Banjo +000 105 028 MuteBnjo +000 105 064 ElecBnjo +000 105 096 Rabab +000 105 097 Gopichnt +000 105 098 Oud +000 105 099 Pi Pa +000 106 000 Shamisen +000 106 096 Tsugaru +000 107 000 Koto +000 107 064 FM Koto +000 107 096 TaishoKn +000 107 097 Kanoon +000 107 098 Zheng +000 108 000 Kalimba +000 108 064 BigKlmba +000 109 000 Bagpipe +000 109 064 Thistle +000 109 096 Sheng +000 110 000 Fiddle +000 110 096 Er Hu +000 110 097 Ban Hu +000 110 098 Jing Hu +000 111 000 Shanai +000 111 064 Shanai 2 +000 111 096 Pungi +000 111 097 Hichriki +000 111 098 Suo Na +000 112 000 TnklBell +000 112 064 TiklBell +000 112 096 Bonang +000 112 097 Altair +000 112 098 Gamelan +000 112 099 S.Gameln +000 112 100 RamaCymb +000 112 101 AsianBel +000 113 000 Agogo +000 113 096 Atargane +000 114 000 SteelDrm +000 114 096 Tablas +000 114 097 GlasPerc +000 114 098 ThaiBell +000 115 000 Woodblok +000 115 096 Castanet +000 116 000 Taiko +000 116 096 Gr.Cassa +000 117 000 MelodTom +000 117 064 Mel Tom2 +000 117 065 Real Tom +000 117 066 Rock Tom +000 117 067 Tim'sSet +000 118 000 Syn Drum +000 118 064 Anal.Tom +000 118 065 ElecPerc +000 118 066 Syn.Perc +000 119 000 RevCymbl +000 119 064 RvCymbl2 +000 119 065 RvCymbl3 +000 119 096 RevSnare +000 119 097 RvSnare2 +000 119 098 Rev.Kick +000 119 099 RConBaDr +000 119 100 Rev. Tom +000 119 101 Rev.Tom2 +000 120 000 FretNoiz +000 121 000 BrthNoiz +000 122 000 Seashore +000 123 000 Tweet +000 124 000 Telphone +000 125 000 Helicptr +000 126 000 Applause +000 127 000 Gunshot +048 000 000 MtdClavi +048 000 008 Beeline +048 000 016 Rage +048 000 024 Fuss +048 000 048 Reflex 1 +048 000 056 Insanity +048 000 064 DstnFire +048 000 072 Lightnin +048 000 080 Zipzap +048 000 088 Escape +048 000 096 TinKettl +048 000 104 Satya +048 000 120 Voodoo +048 001 000 Orimba +048 001 008 BlineHrd +048 001 016 TnglCaos +048 001 024 VanAllen +048 001 048 Reflex 2 +048 001 056 Habakkuk +048 001 064 BlowNoiz +048 001 072 Oof +048 001 088 Zigzag +048 001 096 K/S Ana. +048 001 104 Monastry +048 002 008 Dwarf +048 002 016 Incontnc +048 002 024 Divinity +048 002 048 Prcesion +048 002 064 Fall +048 002 072 Lust +048 002 088 Scud +048 002 096 K/S Hum. +048 002 104 Vinaya +048 003 008 Byte +048 003 016 IncntClk +048 003 024 Paranoia +048 003 048 RndmWalk +048 003 064 Chaff +048 003 072 Lust St. +048 003 088 Hinayana +048 003 096 K/S Slap +048 003 104 Prana +048 004 008 Ping +048 004 016 CheapOsc +048 004 024 Vexation +048 004 048 RandmRun +048 004 072 SoftHit+ +048 004 088 Boot +048 004 096 Rvr/Crsh +048 004 104 Delight +048 005 008 NastyCut +048 005 016 CheapOc+ +048 005 024 CalcOrg1 +048 005 072 Cough + +048 005 088 Anathema +048 005 104 Puja +048 006 008 NstyCtSt +048 006 016 NstOrSpl +048 006 024 CalcOrg2 +048 006 072 Ruin +048 006 088 Germ 1 +048 006 104 Bent Tom +048 007 008 Xe +048 007 016 SprClick +048 007 024 CalcOrg3 +048 007 072 Ruin St. +048 007 088 Germ 2 +048 008 008 OrganHit +048 008 016 Boomout +048 008 024 ChoCalcO +048 008 072 Vein + +048 008 088 Malfnctn +048 009 008 OrgnHit+ +048 009 016 ChoirSpl +048 009 024 Sodium +048 009 072 Universe +048 010 008 Soft Hit +048 010 016 Veld +048 010 072 UnvrsSwp +048 011 008 Vein +048 011 016 VaporVox +048 011 072 Xe + +048 012 008 Packet +048 012 016 VoxShoot +048 012 072 Daze +048 013 008 Jolly +048 013 016 SemiacOr +048 013 072 Refusal +048 014 008 Jolly + +048 014 072 Refusal+ +048 015 008 Envy +048 015 072 Lie +048 016 008 EnvyShrt +048 016 072 Malice +048 017 008 Cough +048 017 072 Doubt +048 018 008 Remark +048 018 072 DoubtDbl +048 019 008 Potala +048 020 008 Fury +048 021 008 Glocken+ +064 000 000 CutNoise +064 001 000 CutNoiz2 +064 002 000 DstCutNz +064 003 000 Str Slap +064 004 000 B.Slide +064 005 000 P.Scrape +064 016 000 Fl.KClik +064 032 000 Shower +064 033 000 Thunder +064 034 000 Wind +064 035 000 Stream +064 036 000 Bubble +064 037 000 Feed +064 038 000 Cave +064 048 000 Dog Woof +064 049 000 HorseGlp +064 050 000 BirdTwit +064 051 000 Kitty +064 052 000 Growl +064 053 000 Haunted +064 054 000 Ghost +064 055 000 Maou +064 056 000 Insects +064 057 000 Bacteria +064 064 000 PhonCall +064 065 000 DoorSqek +064 066 000 DoorSlam +064 067 000 ScratchC +064 068 000 Scratch2 +064 069 000 WindChim +064 070 000 TeleFon2 +064 071 000 Scratch3 +064 072 000 Turntabl +064 080 000 CarStart +064 081 000 CarTyreS +064 082 000 Car Pass +064 083 000 CarCrash +064 084 000 Siren +064 085 000 Train +064 086 000 JetPlane +064 087 000 Starship +064 088 000 Burst +064 089 000 Coaster +064 090 000 Submarin +064 091 000 Connect +064 092 000 Mystery +064 093 000 Charging +064 096 000 LaughVox +064 097 000 ScreamVx +064 098 000 Punch +064 099 000 Heart +064 100 000 Footstep +064 101 000 Applauz2 +064 112 000 MchinGun +064 113 000 LaserGun +064 114 000 Xplosion +064 115 000 Firework +064 116 000 Fireball +126 000 000 SFX Kit +126 001 000 SFX Kt 2 +126 016 000 TechnoKt +126 017 000 TechnoHi +126 018 000 TechnoLo +126 032 000 SakuraKt +126 033 000 S. Latin +126 034 000 ChinaKit +126 040 000 AfroCuba +126 041 000 AfrCuba2 +126 042 000 BrazilKt +126 043 000 PopLatin +126 112 000 Voices 1 +126 113 000 Voices 2 +127 000 000 Standard +127 001 000 Standrd2 +127 002 000 Dry Kit +127 003 000 BrightKt +127 004 000 Skim Kit +127 005 000 Slim Kit +127 006 000 RogueKit +127 007 000 Hob Kit +127 008 000 Room Kit +127 009 000 DarkRoom +127 016 000 Rock Kit +127 017 000 RockKit2 +127 024 000 ElectrKt +127 025 000 AnalogKt +127 026 000 Anal.Kt2 +127 027 000 DanceKit +127 028 000 HipHopKt +127 029 000 JungleKt +127 030 000 ApogeeKt +127 031 000 PerigeKt +127 032 000 Jazz Kit +127 033 000 JazzKit2 +127 040 000 BrushKit +127 041 000 BrushKt2 +127 048 000 SymphnKt +127 056 000 Ntrl Kit +127 057 000 NtrlFunk +127 064 000 TrampKit +127 065 000 AmberKit +127 066 000 CoffinKt +127 080 000 Lv StdKt +127 081 000 LvFunkKt +127 082 000 Lv Brush +127 083 000 Std&Perc +127 084 000 FunkPerc +127 085 000 Brush&P. +127 112 000 R&B Kit +127 113 000 RockKit3 +127 000 127 MT-32 Kt +127 127 000 MT-32 Kt \ No newline at end of file diff --git a/data/bitmaps/korg/element.tsv b/data/bitmaps/korg/element.tsv new file mode 100644 index 00000000..ae2ab572 --- /dev/null +++ b/data/bitmaps/korg/element.tsv @@ -0,0 +1,16 @@ +BmapId Bitmap +PanBase 0010000f07c0183020084004400480028102800340074007200f183e0ffe07fc01f0 +Pan_0 0010000f07c0183020084004400480028102820344074807200f183e0ffe07fc01f0 +Pan_1 0010000f07c01830200840044004800283028c0350074007200f183e0ffe07fc01f0 +Pan_2 0010000f07c018302008400440048002bf02800340074007200f183e0ffe07fc01f0 +Pan_3 0010000f07c018302008400450048c028302800340074007200f183e0ffe07fc01f0 +Pan_4 0010000f07c0183020084804440482028102800340074007200f183e0ffe07fc01f0 +Pan_5 0010000f07c0183022084204420481028102800340074007200f183e0ffe07fc01f0 +Pan_6 0010000f07c0183021084104410481028102800340074007200f183e0ffe07fc01f0 +Pan_7 0010000f07c0183020884084408481028102800340074007200f183e0ffe07fc01f0 +Pan_8 0010000f07c0183020084024404480828102800340074007200f183e0ffe07fc01f0 +Pan_9 0010000f07c0183020084004401480628182800340074007200f183e0ffe07fc01f0 +Pan_10 0010000f07c01830200840044004800281fa800340074007200f183e0ffe07fc01f0 +Pan_11 0010000f07c0183020084004400480028182806340174007200f183e0ffe07fc01f0 +Pan_12 0010000f07c0183020084004400480028102808340474027200f183e0ffe07fc01f0 +PanRndm 0010000f07c0183023884ee45c749c7281e2838343874007238f183e0ffe07fc01f0 \ No newline at end of file diff --git a/data/bitmaps/korg/font.tsv b/data/bitmaps/korg/font.tsv new file mode 100644 index 00000000..7ed22292 --- /dev/null +++ b/data/bitmaps/korg/font.tsv @@ -0,0 +1,103 @@ +CdPt Bitmap +0020 0000000000 +0021 0000fa0000 +0022 00c000c000 +0023 28fe28fe28 +0024 2454fe5448 +0025 c4c8102646 +0026 6c92aa440a +0027 00a0c00000 +0028 0038448200 +0029 0082443800 +002a 28107c1028 +002b 10107c1010 +002c 000a0c0000 +002d 1010101010 +002e 0006060000 +002f 0408102040 +0030 7c8a92a27c +0031 0042fe0200 +0032 42868a9262 +0033 8482a2d28c +0034 182848fe08 +0035 e4a2a2a29c +0036 3c5292920c +0037 808e90a0c0 +0038 6c9292926c +0039 6092929478 +003a 006c6c0000 +003b 006a6c0000 +003c 0010284400 +003d 0028282800 +003e 0044281000 +003f 40808a9060 +0040 4c929e827e +0041 7e8888887e +0042 fe9292926c +0043 7c82828244 +0044 fe82824438 +0045 fe92929282 +0046 fe90909080 +0047 7c8292925e +0048 fe101010fe +0049 0082fe8200 +004a 040282fc80 +004b fe10284482 +004c fe02020202 +004d fe403040fe +004e fe201008fe +004f 7c8282827c +0050 fe90909060 +0051 7c828a847a +0052 fe90989462 +0053 629292928c +0054 8080fe8080 +0055 fc020202fc +0056 f8040204f8 +0057 fc021c02fc +0058 c6281028c6 +0059 e0100e10e0 +005a 868a92a2c2 +005b 00fe828200 +005c 4020100804 +005d 008282fe00 +005e 2040804020 +005f 0202020202 +0060 0000c0a000 +0061 042a2a2a1e +0062 fe1222221c +0063 1c22222204 +0064 1c222212fe +0065 1c2a2a2a18 +0066 107e908040 +0067 304a4a4a7c +0068 fe1020201e +0069 0022be0200 +006a 040222bc00 +006b fe08142200 +006c 0082fe0200 +006d 3e2018201e +006e 3e1020201e +006f 1c2222221c +0070 3e28282810 +0071 102828183e +0072 3e10202010 +0073 122a2a2a04 +0074 20fc220204 +0075 3c0202043e +0076 3804020438 +0077 3c020c023c +0078 2214081422 +0079 300a0a0a3c +007a 22262a3222 +007b 00106c8200 +007c 0000fe0000 +007d 00826c1000 +007e 1010543810 +007f 1038541010 +0080 00fe442810 +0081 00fe7c3810 +0082 fe0a12120c +0083 00f8283e00 +0084 6c6c106c6c +0085 fe14fe1418 \ No newline at end of file diff --git a/data/bitmaps/xg/animation.tsv b/data/bitmaps/xg/animation.tsv new file mode 100644 index 00000000..0f8f996c --- /dev/null +++ b/data/bitmaps/xg/animation.tsv @@ -0,0 +1,49 @@ +RsrcName Bitmap +mubasic_0 000400040044ffff0044ffff0844ffff084cffff08c0ffff080018003c001800 +mubasic_1 000400040004ffff0844ffff0844ffff084cffff0840ffff18c018c03c000000 +mubasic_2 000000040844ffff0844ffff0844ffff0844ffff18ccffff18c000003c000000 +mubasic_3 000000400040ffff0844ffff0844ffff0844ffff08c4ffff180c18003c000000 +mubasic_4 004000400040ffff0044ffff0844ffff08c4ffff0804ffff080c18003c001800 +mubasic_5 000000000044ffff0044ffff0044ffff0844ffff08ccffff080018003c003c00 +mubasic_6 000400040004ffff0044ffff0044ffff004cffff0840ffff08c008003c003c00 +mubasic_7 000600040044ffff0044ffff004cffff0840ffff08c0ffff080018003c003c00 +mubasic_8 004e00440044ffff004cffff0840ffff08c0ffff0800ffff080018003c001800 +mubasic_9 007f004c004cffff0840ffff08c0ffff0800ffff0800ffff180018003c000000 +mubasic_10 005e004c084cffff0840ffff0840ffff08c0ffff0800ffff180000003c000000 +mubasic_11 000e08440844ffff084cffff0840ffff0840ffff18c0ffff000000003c000000 +mubasic_12 080c08040804ffff0844ffff084cffff1840ffff0040ffff00c000003c000000 +mubasic_13 080408040804ffff0844ffff0844ffff184cffff0040ffff00c000c03c000000 +mubasic_14 000000000804ffff0844ffff0844ffff0844ffff184cffff00c000003c000000 +mubasic_15 000000000044ffff0844ffff0844ffff0844ffff08ccffff180018003c000000 +munativ_0 0000021003180318039c0294021002100210021002100e7016b01ef01ef00c60 +munativ_1 000004200630073806300420042004200420042004200c6014a01ce01ce00c60 +munativ_2 0000084018c018c01ce00c60084008400840084008400c600a500e700e700c60 +munativ_3 000010803180738052803180108010801080108010801ce01ad01ef01ef00c60 +munativ_4 0000318073807380d6801080108010801080108010801ce01ad01ef01ef00c60 +munativ_5 0000108031803180738052801080108010801080108018c014a01ce01ce018c0 +munativ_6 000008400c600c601ce018c00840084008400840084018c0294039c039c018c0 +munativ_7 000008400c600e700a500c600840084008400840084039c05ac07bc07bc03180 +munativ_8 000018c01ce01ce016b010801080108010801080108031805280738073803180 +munativ_9 000021006300630073803180210021002100210021003180294039c039c03180 +munativ_10 000021006300e700a50063002100210021002100210039c035a03de03de018c0 +munativ_11 00006300e700e700ad002100210021002100210021003180294039c039c03180 +munativ_12 0000108018c018c039c031801080108010801080108031805280738073803180 +munativ_13 0000108018c01ce014a018c0108010801080108010807380b580f780f7806300 +munativ_14 00000c600e700e700b5808400840084008400840084039c05ac07bc07bc03180 +munativ_15 00000420063007bc07380420042004200420042004201ce02d603de03de018c0 +munativ_16 0000021003180318039c0294021002100210021002100e7016b01ef01ef00c60 +munativ_17 000004200630073806300420042004200420042004200c6014a01ce01ce00c60 +munativ_18 0000084018c018c01ce00c60084008400840084008400c600a500e700e700c60 +munativ_19 000010803180738052803180108010801080108010801ce01ad01ef01ef00c60 +munativ_20 318073807380528094801080108010801080108018c014a01ce01ce00c600000 +munativ_21 000010803180f780738010801080108010801080108018c014a01ce01ce018c0 +munativ_22 000008800d800d801d801a800980088008800880088018c028a038e038e018c0 +munativ_23 0000108031803180398018c01080108010801080108018c014a01ce01ce018c0 +munativ_24 000008800d800d801d8018c00880088008800880088018c028a038e038e018c0 +munativ_25 0000108031803180398018c01080108010801080108018c014a01ce01ce018c0 +munativ_26 000008400c600c601ce018c00840084008400840084018c0294039c039c018c0 +munativ_27 04200630073805280630042004200420042004200c6014a01ce01ce018c00000 +munativ_28 00000420073807bc06b40420042004200420042004200c6014a01ce01ce00c60 +munativ_29 0210031803de039c02100210021002100210021006300a500e700e700c600000 +munativ_30 00000210039c03de031802100210021002100210021006300a500e700e700630 +munativ_31 00000210031803de039c0210021002100210021002100e7016b01ef01ef00c60 diff --git a/data/bitmaps/xg/font.tsv b/data/bitmaps/xg/font.tsv new file mode 100644 index 00000000..7f28cf8e --- /dev/null +++ b/data/bitmaps/xg/font.tsv @@ -0,0 +1,581 @@ +CdPt Bitmap +0020 0000000000 +0021 0000fa0000 +0022 00c000c000 +0023 28fe28fe28 +0024 2454fe5448 +0025 644810244c +0026 6c929a640a +0027 0000c00000 +0028 00007c8200 +0029 00827c0000 +002a 28107c1028 +002b 10107c1010 +002c 000a0c0000 +002d 1010101010 +002e 0006060000 +002f 000638c000 +0030 7c8a92a27c +0031 0042fe0200 +0032 42868a9262 +0033 448292926c +0034 182848fe08 +0035 e4a2a2a29c +0036 3c5292920c +0037 80808eb0c0 +0038 6c9292926c +0039 6092929478 +003a 006c6c0000 +003b 006a6c0000 +003c 0010284400 +003d 0028282800 +003e 0044281000 +003f 40808a9060 +0040 7c92aaaa78 +0041 7e9090907e +0042 fe9292926c +0043 7c82828244 +0044 fe8282827c +0045 fe92929282 +0046 fe90909080 +0047 7c8282925c +0048 fe101010fe +0049 0082fe8200 +004a 040282fc80 +004b fe10284482 +004c fe02020202 +004d fe403040fe +004e fe403804fe +004f 7c8282827c +0050 fe90909060 +0051 7c828a847a +0052 fe90989462 +0053 649292924c +0054 8080fe8080 +0055 fc020202fc +0056 f00c020cf0 +0057 fc027c02fc +0058 c6281028c6 +0059 c0300e30c0 +005a 868a92a2c2 +005b 0000fe8200 +005c 00c0380600 +005d 0082fe0000 +005e 0040804000 +005f 0202020202 +0060 0000804000 +0061 042a2a2a1e +0062 fe1222221c +0063 1c22222214 +0064 1c222212fe +0065 1c2a2a2a18 +0066 00107e9040 +0067 102a2a2a3c +0068 fe1020201e +0069 0022be0200 +006a 040222bc00 +006b 00fe081422 +006c 0082fe0200 +006d 3e203e201e +006e 3e1020201e +006f 1c2222221c +0070 3e28282810 +0071 102828283e +0072 3e10202010 +0073 102a2a2a04 +0074 20fc220204 +0075 3c0202043e +0076 300c020c30 +0077 3c020c023c +0078 2214081422 +0079 300a0a0a3c +007a 22262a3222 +007b 00106c8200 +007c 0000fe0000 +007d 00826c1000 +007e 1020100810 +007f 1038541010 +0080 00fe442810 +0081 00fe7c3810 +0082 fe0a12120c +0083 00f8283e00 +0084 6c6c106c6c +0085 fe14fe1418 +0086 fefe00fefe +0087 1010541010 +0088 102844fe00 +0089 10387cfe00 +008a 0606fe4020 +008b 0cfc80467e +008c 081c2a08f8 +008d 10207c2010 +008e 10087c0810 +008f 1010543810 +0090 0878fc7808 +0091 30783c7830 +0092 387c7c7c38 +0093 7c7c7c7c7c +0094 4438283844 +0095 2266ee6622 +0096 0000ee0000 +0097 88cceecc88 +0098 04127c9040 +0099 282c386828 +009a 0222528a02 +009b 028a522202 +009c 3c0c142440 +009d 7860504804 +009e 4024140c3c +009f 0448506078 +00a0 7c4454447c +00a1 0000be0000 +00a2 3844c64428 +00a3 127e929242 +00a4 287caa8244 +00a5 a8683e68a8 +00a6 24d252d24c +00a7 52aaaaaa94 +00a8 10aa6aaa04 +00a9 7cc6bad67c +00aa 10a8a87800 +00ab 1028542844 +00ac 101010101c +00ad 0010101000 +00ae 7c82aed27c +00af 8080808080 +00b0 e0a0e00000 +00b1 2222fa2222 +00b2 4898a84800 +00b3 5088a85000 +00b4 46ca52e242 +00b5 3e08040438 +00b6 60f0fe80fe +00b7 0000100000 +00b8 22a66ab222 +00b9 48f8080000 +00ba 6090906000 +00bb 4428542810 +00bc 1c223e2a22 +00bd 1c221c2a18 +00be 20900e9020 +00bf 0c12a20204 +00c0 9ea828281e +00c1 1e2828a89e +00c2 0e5494540e +00c3 5ea8a8689e +00c4 1ea828a81e +00c5 1e28a8281e +00c6 1e283e2a22 +00c7 7a84848448 +00c8 beaa2a2a22 +00c9 3e2a2aaaa2 +00ca beaa2aaaa2 +00cb 3eaa2aaa22 +00cc 80a23e2200 +00cd 00223ea280 +00ce 80a23ea280 +00cf 00a23ea200 +00d0 10fe92827c +00d1 be904844be +00d2 9ca222221c +00d3 1c2222a29c +00d4 9ca222a29c +00d5 5ca262629c +00d6 1ca222a21c +00d7 4428102844 +00d8 7c8e92e27c +00d9 bc8202023c +00da 3c020282bc +00db bc820282bc +00dc 3c8202823c +00dd 20104e9020 +00de fe28282810 +00df 7e8092926c +00e0 04aa6a2a1e +00e1 042a6aaa1e +00e2 84aa2aaa9e +00e3 44aaaa6a9e +00e4 04aa2aaa1e +00e5 042aaa2a1e +00e6 042a1e2a18 +00e7 3a44444428 +00e8 1caa6a2a18 +00e9 1c2a6aaa18 +00ea 9caa2aaa98 +00eb 1caa2aaa18 +00ec 00925e0200 +00ed 00125e8200 +00ee 00529e4200 +00ef 00a23e8200 +00f0 048aaa4abc +00f1 5e8890508e +00f2 0c9252120c +00f3 0c1252920c +00f4 0c5292520c +00f5 0c5252520c +00f6 0c5212520c +00f7 1010541010 +00f8 1c262a321c +00f9 3c8242043e +00fa 3c0242843e +00fb bc820284be +00fc 3c8202843e +00fd 300a4a8a3c +00fe 3e14141408 +00ff 308a0a8a3c +02c6 0040804000 +02c7 0080408000 +02c8 00c0000000 +02c9 0040404000 +02ca 0000408000 +02cb 0080400000 +02cc 0006000000 +02cd 0002020200 +02ce 0004020000 +02cf 0000020400 +0370 0000000000 +0371 0000000000 +0372 0000000000 +0373 0000000000 +0374 0000000000 +0375 0000000000 +0376 0000000000 +0377 0000000000 +0378 0000000000 +0379 0000000000 +037a 0000000000 +037b 0000000000 +037c 0000000000 +037d 0000000000 +037e 0000000000 +037f 1a2660a61a +0380 0000000000 +0381 0000000000 +0382 0000000000 +0383 0000000000 +0384 0000000000 +0385 0000000000 +0386 c0007e907e +0387 0000000000 +0388 c000fe9292 +0389 c000fe10fe +038a c00082fe82 +038b 0000000000 +038c c0007c827c +038d 0000000000 +038e c000f00ef0 +038f c07a86867a +0390 4000dc0240 +0391 7e9090907e +0392 fe9292926c +0393 fe80808080 +0394 0e32c2320e +0395 fe92929282 +0396 868a92a2c2 +0397 fe101010fe +0398 7c9292927c +0399 0082fe8200 +039a fe10284482 +039b 0e7080700e +039c fe403040fe +039d fe403804fe +039e 8292929282 +039f 7c8282827c +03a0 fe808080fe +03a1 fe90909060 +03a2 0000000000 +03a3 c6aa928282 +03a4 8080fe8080 +03a5 c0300e30c0 +03a6 3844fe4438 +03a7 c6281028c6 +03a8 7008fe0870 +03a9 7a8680867a +03aa 00a23ea200 +03ab 20900e9020 +03ac 0c12529c02 +03ad 142a6aa214 +03ae 1c08509608 +03af 00005c8200 +03b0 5c02c2124c +03b1 1c22223c02 +03b2 7e8092926c +03b3 20100e1020 +03b4 0c52a2120c +03b5 142a2a2214 +03b6 8090a8ca84 +03b7 3c10202618 +03b8 3c5252523c +03b9 00003c0200 +03ba 3e08142200 +03bb 8698601806 +03bc 3e08040438 +03bd 300c022418 +03be a854545442 +03bf 1c2222221c +03c0 2638203e24 +03c1 1e24242418 +03c2 1824242412 +03c3 1c22223c20 +03c4 00203c2200 +03c5 3c02022418 +03c6 08143e1408 +03c7 22241c1222 +03c8 18043e0418 +03c9 1c220c221c +03ca 00803c8200 +03cb 3c8202a418 +03cc 0c1252920c +03cd 1c0242920c +03ce 0c1244920c +0401 3eaa2aaa22 +0451 1caa2aaa18 +0490 7e404040c0 +0491 3e202020e0 +0404 7c92928244 +0454 1c2a2a2214 +0406 0082fe8200 +0456 0022be0200 +0407 00a23ea200 +0457 00a23e8200 +0410 7e9090907e +0411 fe9292928c +0412 fe9292926c +0413 fe80808080 +0414 067c84fc06 +0415 fe92929282 +0416 ee10fe10ee +0417 828292926c +0418 fe043840fe +0419 3e8448903e +041a fe10284482 +041b 02fc8080fe +041c fe403040fe +041d fe101010fe +041e 7c8282827c +041f fe808080fe +0420 fe90909060 +0421 7c82828244 +0422 8080fe8080 +0423 e0121212fc +0424 3844fe4438 +0425 c6281028c6 +0426 fc0404fc06 +0427 e0101010fe +0428 fe02fe02fe +0429 fc04fc04fe +042a 80fe12120c +042b fe120c00fe +042c fe1212120c +042d 448292927c +042e fe107c827c +042f 62949890fe +0430 042a2a2a1e +0431 7c92a2a29c +0432 3e2a2a2a14 +0433 003e202020 +0434 061c243c06 +0435 1c2a2a2a18 +0436 36083e0836 +0437 22222a2a14 +0438 3e0408103e +0439 0e4224480e +043a 3e08142200 +043b 023c20203e +043c 3e1008103e +043d 3e0808083e +043e 1c2222221c +043f 3e2020203e +0440 3e28282810 +0441 1c22222214 +0442 20203e2020 +0443 300a0a0a3c +0444 08143e1408 +0445 2214081422 +0446 3c04043c06 +0447 300808083e +0448 3e023e023e +0449 3c043c043e +044a 203e0a0a04 +044b 3e0a04003e +044c 3e0a0a0a04 +044d 14222a2a1c +044e 3e081c221c +044f 122a2c283e +05d0 2618080c32 +05d1 2222221e02 +05d2 2224180600 +05d3 2020203e20 +05d4 2e2020201e +05d5 00003e0000 +05d6 00203e2000 +05d7 3e2020201e +05d8 3c0222221c +05d9 0000300000 +05da 2020201c02 +05db 222222221c +05dc e020222438 +05dd 3e2222221e +05de 2e1020221e +05df 00203c0200 +05e0 0022221e00 +05e1 1c2222221c +05e2 320a0a0438 +05e3 382820201e +05e4 3a2a2a221c +05e5 2018060830 +05e6 22120a0a36 +05e7 2e20242830 +05e8 202020201e +05e9 3c0a32023c +05ea 223e20201e +3044 fc0202c038 +3053 8c82828282 +306e 7884f8827c +306f fc0246fc42 +307c 7c02d67cd2 +308a 7008028478 +30a4 08103ec000 +30a9 12141a3e10 +30b5 40f244f840 +30ba 4244c854e2 +30c8 fe00201000 +30d5 80828498e0 +30de 8088849ae0 +30eb 02fc00fe08 +30f3 8242240810 +3105 40c042427c +3106 42e4585864 +3107 fe808080fe +3108 fe82828282 +3109 42cc72427c +310a 262af22c26 +310b 8090b2d21c +310c 42cc72c27c +310d 1028d628c6 +310e 80b0d2929c +310f 06f8808080 +3110 fc040810fe +3111 1028448200 +3112 8080fe8080 +3113 fa0afe0afa +3114 28285e90a0 +3115 02bca0a0e0 +3116 fe82ba82fe +3117 80fe8088f8 +3118 5070d25458 +3119 0e34c41806 +311a 80403e4080 +311b 4c52724244 +311c 4c52f24244 +311d 40fc42fa40 +311e b2d4b8d29c +311f 106080700e +3120 365a921206 +3121 4264585864 +3122 b0d090b2dc +3123 709010121c +3124 424cf04e42 +3125 061ae20202 +3126 02fc00fe02 +3127 1010101010 +3128 02241818e4 +3129 fe020202fe +312a 82fc90929e +312b 82fc80fe82 +312c 067840c040 +312d bca0fea0bc +312e 242aba2224 +312f 809eb0d21e +3130 44ca46427c +3131 848afe80f8 +3132 f808142afe +3133 38c638c606 +3134 20fc424272 +3135 20fc424676 +3136 98a4c28488 +3137 98a4ca9488 +3138 c6281038d6 +3139 844a3e4888 +313a 1010385030 +313b c628142ac6 +313c fe80fe80fe +313d 82fcfefe82 +313e b6d6b8d29c +313f 365a921606 +3140 9e503e509e +3141 bebce2acbe +3142 44447c4444 +3143 040afe0808 +3144 180a0a0c00 +3145 1a0c0a0a0c +3146 203a2a2c00 +3147 021c101010 +3148 4c54545464 +3149 3010101010 +314a 1010381010 +314b 040a040a00 +314c 2254881422 +314d a2d48894a2 +314e d0381638d0 +314f 0ef000f00e +ffa1 202020203e +ffa2 20203e203e +ffa3 203e063806 +ffa4 3e02020202 +ffa5 3e02263826 +ffa6 3e02143a14 +ffa7 3e22222222 +ffa8 3e223e2222 +ffa9 2e2a2a2a3a +ffaa 2e2a3a203e +ffab 2e2a3e223e +ffac 2e2a3e0a3e +ffad 2e3a063806 +ffae 2e2a3e2a2a +ffaf 2e3a223e22 +ffb0 2e3a143a14 +ffb1 3e2222223e +ffb2 3e1212123e +ffb3 3e123e123e +ffb4 3e123e3806 +ffb5 0204380402 +ffb6 0638063806 +ffb7 1c2222221c +ffb8 2224382422 +ffb9 2638263826 +ffba 1214381412 +ffbb 282828283e +ffbc 3e2a2a2a2a +ffbd 223e223e22 +ffbe 141a3a1a14 +ffbf 0000000000 +ffc0 0000000000 +ffc1 0000000000 +ffc2 0000fe1000 +ffc3 00fe10fe00 +ffc4 0000fe2800 +ffc5 00fe28fe00 +ffc6 0010fe0000 +ffc7 0010fe00fe +ffc8 0000000000 +ffc9 0000000000 +ffca 0028fe0000 +ffcb 0028fe00fe +ffcc 0808380808 +ffcd 083808fe10 +ffce 083808fefe +ffcf 083808fe00 +ffd0 0000000000 +ffd1 0000000000 +ffd2 0838083808 +ffd3 10101c1010 +ffd4 101e1004fe +ffd5 101e14fefe +ffd6 101e10fe00 +ffd7 101c101c10 +ffd8 0000000000 +ffd9 0000000000 +ffda 1010101010 +ffdb 04040404fe +ffdc 0000fe0000 \ No newline at end of file diff --git a/data/bitmaps/xg/qyCh35.tsv b/data/bitmaps/xg/qyCh35.tsv new file mode 100644 index 00000000..7a2ef38f --- /dev/null +++ b/data/bitmaps/xg/qyCh35.tsv @@ -0,0 +1,11 @@ +CP Bitmap +30 f888f80000 +31 0000f80000 +32 b8a8e80000 +33 a8a8f80000 +34 e020f80000 +35 e8a8b80000 +36 f8a8b80000 +37 8080f80000 +38 f8a8f80000 +39 e8a8f80000 \ No newline at end of file diff --git a/data/bitmaps/xg/qyCh55.tsv b/data/bitmaps/xg/qyCh55.tsv new file mode 100644 index 00000000..95dfe67b --- /dev/null +++ b/data/bitmaps/xg/qyCh55.tsv @@ -0,0 +1,20 @@ +CP Bitmap +30 0000f80000 +31 b8a8a8a8e8 +32 a8a8a8a8f8 +33 e0202020f8 +34 e8a8a8a8b8 +35 f8a8a8a8b8 +36 80808080f8 +37 f8a8a8a8f8 +38 e8a8a8a8f8 +39 f800f888f8 +3a f8000000f8 +3b f800b8a8e8 +3c f800a8a8f8 +3d f800e020f8 +3e f800e8a8b8 +3f f800f8a8b8 +40 f8008080f8 +41 f800f8a8f8 +42 f800e8a8f8 \ No newline at end of file diff --git a/data/bitmaps/xg/qyRsrc.tsv b/data/bitmaps/xg/qyRsrc.tsv new file mode 100644 index 00000000..7e9540c5 --- /dev/null +++ b/data/bitmaps/xg/qyRsrc.tsv @@ -0,0 +1,41 @@ +BmapId Bitmap +ArrowL1 0003000785f660 +ArrowL2 0003000705f640 +ArrowR1 00030007337d02 +ArrowR2 00030007137d00 +CTabOff 000b000680300600c01802ffc0 +CTabOn 000b0006eeeeeeeeeeeeedee70 +PtCdTm 00190005e070705220903b91cbf088a5586772aa +MsVoice 0015000d882706c2402a21c1520108a0f000000000000000009339bca49125248f492444339b8e +ElPan 000e0005e32652de7ae12984a2 +ElVol 001c0005932251794a25b494a2557a4a255443399170 +ElMsPa 001a0005f991d8aa8e517ab91dcaa24452ab991c60 +Mod_Usr 0011000589ef45046273d105173c82 +Vtfj 005e000da5d197724cba4ce4074a2e069449492d428d4250092da41a5d25272ccbad6e4024aae06a44949290a894a50492aa0191dd924a5ca24e940c3228060000400002000010000000180001000009fffc580c0000600064000026223940100001800d9000009abbe50040000601b64000026a2395dd00001836d9000009abbe5004000066db640000262ef9401000019b6d9000008fffe580c00002 +ActPill 000700057dfffff7c0 +MixPill 00090008222eb7fc7fdeed8c7c +MixIcon 00170008ffffffe000565ffafcbff15f7febf2ffc564000fffffff +NorPill 002100083ffffffe3fffffffbffffffffffffffffffffffffffffffffdfffffffc7ffffffc +PanIcon 00090008bea0a030180a0efebe +TxtDisp 006e002100000000000000000000000000007fffffffffffffffffffffffff02000000000000000000000000021000000000000000000000000004400000000000000000000000001900000000000000000000000000640000000000000000000000000190000000000000000000000000064000000000000000000000000019000000000000000000000000006400000000000000000000000001900000000000000000000000000640000000000000000000000000190000000000000000000000000064000000000000000000000000019000000000000000000000000006400000000000000000000000001900000000000000000000000000640000000000000000000000000190000000000000000000000000064000000000000000000000000019000000000000000000000000006400000000000000000000000001900000000000000000000000000640000000000000000000000000190000000000000000000000000064000000000000000000000000019000000000000000000000000006400000000000000000000000001880000000000000000000000000e1ffffffffffffffffffffffffff03fffffffffffffffffffffffff80000000000000000000000000000 +VolSlid 00090003ffc07fe0 +Vox_0 000b0007f051162278e809012020 +Vox_1 000b000770115a0cc1183d141c80 +Vox_2 000b00077011022b4598a1141c80 +Vox_3 000b00077111220e4c8891125c30 +Vox_4 000b0007f009012738149e947c7e +Vox_5 000b00077111220e388091125c30 +Vox_6 000b0007f810020b799823047e82 +Vox_7 000b0007f009012b3994a0943c80 +Vox_8 000b0007f0310626f93a2324627e +Vox_9 000b0007f0910226784809012070 +Vox_a 000b000780300606c13823047e7e +Vox_b 000b0007f0310626f9382304607e +Vox_c 000b0007f8100208f8a80902a082 +Vox_d 000b0007f910220e788811027e30 +Vox_e 000b0007f0110227791821046070 +Vox_f 000b0007701102073910bf141c70 +Vox_sfx 000b00076212a212b7514529592a +Vox_dr 000b0007f009012b2594a0943c80 +Vox_ds1 000b0007b01306884359d433a2a7 +Vox_ds2 000b0007b013068a4319d43422a7 \ No newline at end of file diff --git a/data/bitmaps/xg/qySqr.tsv b/data/bitmaps/xg/qySqr.tsv new file mode 100644 index 00000000..f0da7f35 --- /dev/null +++ b/data/bitmaps/xg/qySqr.tsv @@ -0,0 +1,16 @@ +CP Bitmap +24 c4a490a4c4 +25 c4e4f0e4c4 +26 0e0e0efe00 +2d 1010101010 +30 fefe82fefe +31 000000fefe +32 9e9e92f2f2 +33 929292fefe +34 f0f010fefe +35 f2f2929e9e +36 fefe929e9e +37 808080fefe +38 fefe92fefe +39 f2f292fefe +3d 0028282828 \ No newline at end of file diff --git a/data/bitmaps/xg/system.tsv b/data/bitmaps/xg/system.tsv new file mode 100644 index 00000000..ae37debc --- /dev/null +++ b/data/bitmaps/xg/system.tsv @@ -0,0 +1,36 @@ +RsrcName Bitmap +boot_0 03e002e003e07c1f780f600371474001700760037c1f7a2f71476c9b62237ddf +boot_1 03e002e003e07c1ff80f600331479001c8078803441f622f7147709b78237fdf +boot_2 03e002e007e07a1f720f64034947480198078803441f622f7147709b78237fdf +boot_3 0000ffffe01faf55ef1fef55ef1faf55e01fffff0000db330950c97b0910c913 +cat_sfx 00000000038004400fe03ff87ffc7ffc2aa81ff0044003800000054009200000 +cat_smpl 00100034005036b224f836fa36f836f2007000340010618692496db6f3cfffff +ext_an 3fff249f3f9f64ff7fff6a556a55ea55e001ffff0000cc8b12c8deab1298d28b +ext_ap 3f807fc07ff0fffeffffffffffff94a98001ffff0000cc7b1248de7b1240d243 +ext_dr 00006064306e01e073c47ff47e3473e453e451ca0000ec670a50ea670a50ec57 +ext_dx ffff833c99999cc39e679e679cc39999833cffff0000de8b10d8dcab1088d08b +ext_pc 00001c3822443e7c3e7c3ffc3e7c1db81db809900000dc331248dc431048d033 +ext_pf 7ffc4ffe5ffe4ffe4ffe5ffc4ff85ff04f007c000000de7b1240de731040d043 +ext_sg fffff1f8e4f0c674c560c570cc7cec3cf0f8fffe0000e6770880eeb70290ece7 +ext_vl fffffff9fff1cfe100013015cfedfff5fff9ffff0000e94f0940ea470c40e877 +f_blank 0000108018c01ef01ce01080108010801080108010807380b580f780f7806300 +f_pause 0000108018c01ef01ce0108010b310b310b310b310b373b3b5b3f7b3f7b36333 +f_play 0000108018c01ef01ce0108010b010b810bc10be10bf73bfb5bef7bcf7b86330 +f_stop 0000108018c01ef01ce010801080109e109e109e109e739eb59ef79ef79e6300 +no_abm 0000108018c01ef01ce01080109e10bf10a110831086738cb58cf780f78c630c +no_vox 0000108018c01ef01ce0108010911091108a108a10847384b58af78af7916311 +perf_0 f008118c33c663c36563e7e3e7e7e3cef19ef25c7e7c7e7c3ff81ff80ff00ff0 +perf_1 0000f18813ce33c766a367e3e7e7e3cef19ef25c7e7c7e7c3ff81ff80ff00ff0 +shmktzw 0000000001080084000602660bbe1f1f2e1f5c1f60fe71fc7ff81fe000000000 +st_gm1 55545554000000007972550a550a554a554a554a554a557a000000007ffe7ffe +st_gm1o 55545554000000007972550a554a554a554a554a554a557a000000007ffe7ffe +st_gm2 0000aaa6aaafaaa90001cb23eba7e8aeeaaceaa8ebafabaf0000ffffffffffff +st_gm2o 5554555400000000797e552455245524552455245524557e000000007ffe7ffe +st_gs 0fce1f9c3838739ce7ce70e739ce1f9c0f38007000e001c0038007000e001c00 +st_gso 1f071f0e301c303860306038c3dcc3ce60c760c7318e319c1f381f7000e001c0 +st_korg 000000000000a4c6aaa9aaa8aaa8cacbaaa9aaa9aaa9aaa9a4a6000000000000 +st_mt32 c37fe77fbd08990881088108810800003c3c7e7e46461c0c1c1846307e7e3c7e +st_xg 00ff60ff60ff318131811b3f1b3f0e710e711b3d1b3d3181318160ff60ff00ff +sysex 000000000000000000000000000000000000007f004f005f004a005d004a007f +sysex_m 0000000000000000000000000000000000ff00ff00ff00ff00ff00ff00ff00ff +toolbox 000001c003e002203ff84224677250016fff77fd771d771d37fd1fff0ffe0000 \ No newline at end of file diff --git a/data/bitmaps/xg/voices.tsv b/data/bitmaps/xg/voices.tsv new file mode 100644 index 00000000..e09a724a --- /dev/null +++ b/data/bitmaps/xg/voices.tsv @@ -0,0 +1,248 @@ +RsrcName Bitmap +Aco.Bass 00000000300079007f04fe08800dfffefffffc0bfc01fc007400200000000000 +Acordion 7ffc40045554555455547ffc7ffe6aaa7ffe3ffe40003ffe40007ffe7aae3d5e +Alto Sax 3a007e00cd008f000e88078c070c071e039e03bf03ff01ff01fc00f800f00060 +Applause 818041e0207007b8061c01fe07ffe63f01ff07ff063f01ff03ff233e40fc80f8 +Bagpipe 0004000c001c04340c6018c81d982f342f6c4fdc47b047e047f043f063f061e0 +Banjo 0000000038007c007c00fe05fe00ffff9ffffffffe00fe057c007c0038000000 +Bassoon 00000200040008000800040003ff0377ffddffffffff00000000000000000000 +BotlBlow 000000000000000001fe023b05ffffffffffffff07ff03ff01fe000000000000 +BrthNoiz 01000380038013800b800380318003800900110006c00ee01ef01ff01ff01ff0 +Clarinet 000000000000000000010aa7755fdfffffff7f7f208700010000000000000000 +Celesta 7ffe6aaa7ffe7ffe54aa54aa4002ffffffff6aaa55566aaa55566aaabffdbffd +Clvichrd 7ffe7ffe555e555e401e7ffe7ffe200420042004200420043ffc200420042004 +DrawOrgn 07e007e07ffe7ffe7ffe7ffe54aa54aa40027ffe7ffe6a0a55566a4a55567ffe +EGrndPno 1e003f003f807fe07ffc7ffe7ffe7ffe7ffe7ffe7ffe54aa54aa40027ffe7ffe +ElPiano1 7ffe7ffe54aa54aa40027ffe7ffe4002400240024002400240027ffe7ffe4142 +ElPiano2 3ffc7ffe7ffe7ffe54aa54aa40027ffe7ffe6bd65dba6bd65dba6bd65dba7ffe +Eng.Horn 00000000000000000000000005513aafefff3fbf004100000000000000000000 +Flute 0000000000000000000000000550baafffffffff000000000000000000000000 +FrchHorn 4000408040c040604e705b78517c6ffe7afe6ef87af06fe031c03bc01f800f00 +FretNoiz 001000100a340a6cfffd2a1bffffaa06ffffff9f7e0f7c077c03380038003800 +Glocken db6cdb6cdb6cdb6cdb6cdb6cdb60db00d800d980c1ffc180c0000c000ffc0c00 +GrandPno fffcfffc9ffebffe9ffebffe9ffe9ffebffc9ffcbff89fc0bf009f00fe00fe00 +Gunshot 5f017fff19ff1fff39e03fe07f007500f500fe00f000f000f000f000f0006000 +Harmnica 0000000000003ffc6aac7ffe40024002600660064002400240023ffc00000000 +Harp 1e001e000f000f800da00ce00c700c100c900d100cb00d300c600c600cc00dc0 +Helicptr ffe0ffe0040104010fff17ff27f927e14f804f807f807f003e0012007f807f80 +Hrpschrd fffefffe9ffebffe9ffebffe9ff89fe0bfc09f80bf809f00bf009e00fe00fc00 +Ice Rain f7fff7ffebbdebbbed57dd6fdeffdeffbfffbfffaa55ea55ea55e001e0011ffe +Kalimba 0000000000007ffc4aa45ff44aa44aa44aa440047ffc7ffc7ffc000000000000 +Koto 0000000000002800ffffaa05ffffa285ffffa085ffffffffffff400240020000 +NewAgePd ffffdfffdd57ad57dd57dfffffff8001ffffffffea55ea55ea55e001e0011ffe +NylonGtr 000038007c007d85ffc5ffc0ffc7f3fff3fff3ffffc7ffc0ffc57d857c003800 +Ocarina 000006000600060007000f800fe01ff83ffe3ffe377e3dde1ffc1ff80ff007c0 +OvrDrvGt 300078007dc0ffc0ff04e10ae3fde3fee3ffe109e100e500cf80d98070002000 +PanFlute 000015543ffe3ffe155415541554155c157c15f417d01f401d00140010000000 +Piccolo 00000000000000000000000005505aae7ffe7ffe000000000000000000000000 +Recorder 0000000000000000000000007405fffffeafffff740500000000000000000000 +Scotland @Bagpipe +Seashore ffffbff3e4f9c07d803d9b3991b3b1bffbfffbffebdffbfffbfffbffaaaa5155 +Shakhchi 0000000000000000004007ffffff76dfffffffff083f00000000000000000000 +Shamisen 000000007800fc00840484048404c7ffc7ff840a840a840afc00780000000000 +Shanai 0000000000000000000100072a9fffff3fff201f000700010000000000000000 +Sitar 30007800fc00ec05f605ff50dfafdfffdfffdfffff00f605ec05fc0078003000 +SprnoSax 000000000000000002f905535fffffffffff5fff02a300010000000000000000 +SquareLd 000000000fffffff9d57ffffffff08010fff0fff0a950a950a950801080107fe +Standard 000ee01f700018e400e400e4738437c477c47fe47c647fe47fe457c457ca5391 +Strings1 08081c1c0808080808081c1c3d3d3a3a36360c0c1c1c3e3e7e7ebebe3e3e1c1c +SynVoice 2108739c739c739c739c739c5294739c210821085294def6def7ffffffffffff +Taiko 10001038104438827c827c447cba7cc67cfe7cfefefefefe00fe0cfe0cfe0c7c +TangoAcd 000002800aa02fe83ff87ffcbffabffabffabffabffabffa7abc282820080000 +Telphone 0000000000001ff03ff838383ab8028407c00fe41ef01c741c701ef41ff01ffc +Timpani 381c4422824182414422ba5dd66bfe7f7c3e7c3e7c3e381c7c3e542ad66b9249 +TnklBell 10001038104438827c827c447cba7cc67cfe7cfefefefefe00fe0cfe0cfe0c7c +Trombone 00100010003000707ff0fff0a270a230a210fffe7fff012112411fff1ffe1000 +Trumpet 05410541000305438547c54fffffffffffffd83f901718331ff30fe100010000 +Tuba 00000061006100230027003f3fff7fffffffd5ffab3faba7d5637fc33f810001 +Tweet 0c001f000f8007c007c007e083f063fe31fe18c00c800f801f00118021e040f0 +Violin 30007b007b84ffc4efc0f1fefffef1c0efc4ffc47b807b0030000000060107ff +Whistle 028007c007c00fe00fe01ef01c7018301c701ef00fe00fe005c005c003800380 +Acou.Gtr @NylonGtr +Acou.Tom @Taiko +Agogo @TnklBell +AirChor. @SquareLd +Anal.Pad @Strings1 +Anal.Str @Strings1 +Atmosphr @Ice Rain +Bari.Sax @Alto Sax +BasnOboe @Bassoon +Bass&Ld @SquareLd +BigOrgan @DrawOrgn +Big Strs @Strings1 +Birds @Tweet +BirdTwit @Tweet +BowedPad @NewAgePd +BowGlass @NewAgePd +BrasBand @Trombone +BrasSect @Trombone +BrsSwell @Trombone +Bright @Ice Rain +BritePno @GrandPno +BX3 Orgn @DrawOrgn +CaliopLd @SquareLd +Cello @Violin +CelloEns @Strings1 +CharanLd @SquareLd +Chiff Ld @SquareLd +Choir @SynVoice +ChoirAah @SynVoice +ChoirPad @NewAgePd +ChrchOrg @DrawOrgn +ChrchPpe @DrawOrgn +Chrunchr @OvrDrvGt +ClassGtr @NylonGtr +CleanGtr @OvrDrvGt +ClickOrg @DrawOrgn +Contrbas @Violin +Crystal @Ice Rain +DeepBass @Aco.Bass +Digi.Pno @ElPiano1 +Digi.Saw @SquareLd +Dist.Gtr @OvrDrvGt +Dulcimer @Glocken +Echoes @Ice Rain +ElonMusk @Tweet +EuroPipe @DrawOrgn +Fantasia @NewAgePd +Fiddle @Violin +Fifth Ld @SquareLd +FngrBass @Aco.Bass +Fretless @Aco.Bass +FullOrgn @DrawOrgn +GhostPad @NewAgePd +Glocken @Glocken +Goblins @Ice Rain +GtrHarmo @OvrDrvGt +Halo Pad @NewAgePd +HammrPno @EGrndPno +HardTine @EGrndPno +HarpGlis @Harp +HnkyTonk @GrandPno +Jazz Gtr @OvrDrvGt +Jazzy Ba @Aco.Bass +JoyStick @OvrDrvGt +Killer B @DrawOrgn +MagicFlu @Flute +Marcato @Strings1 +Marimba @Glocken +Mega Syn @SquareLd +MelodTom @Taiko +MetalBel @TnklBell +MetalPad @NewAgePd +MonoLead @SquareLd +Musette @Acordion +MusicBox @Glocken +MutedGtr @OvrDrvGt +MutedTrp @Trumpet +New Tine @ElPiano2 +NoizChif @BrthNoiz +Oboe @Eng.Horn +Orch.Hit @Strings1 +PercOrgn @DrawOrgn +Piano @GrandPno +PickBass @Aco.Bass +Pizz.Str @Violin +Pizzcato @Violin +PolySyPd @NewAgePd +Positive @DrawOrgn +ReedOrgn @DrawOrgn +RevCymbl @TnklBell +Rezzo4th @SquareLd +RockOn!! @OvrDrvGt +RockOrgn @DrawOrgn +Saw Lead @SquareLd +Santur @Glocken +Sci-Fi @Ice Rain +SforzBrs @Trombone +Slow Str @Strings1 +SlpBass1 @Aco.Bass +SlpBass2 @Aco.Bass +Solo Syn @SquareLd +SoundTrk @Ice Rain +Sputnik @NewAgePd +Sqr.Bass @Aco.Bass +St. Horn @FrchHorn +SteelDrm @TnklBell +SteelGtr @NylonGtr +Strings2 @Strings1 +SweepPad @NewAgePd +Swt Oboe @Eng.Horn +Syn Drum @Taiko +Syn. Str @Strings1 +Syn.Str1 @Strings1 +Syn.Str2 @Strings1 +SynBass1 @Aco.Bass +SynBass2 @Aco.Bass +SynBras1 @Trombone +SynBras2 @Trumpet +SynthTom @Taiko +Tango @TangoAcd +TenorSax @Alto Sax +Transfms @NewAgePd +Trem.Str @Violin +TrumpEns @Trombone +Tubular @Glocken +TubulBel @Glocken +Vibrafon @Glocken +Viola @Violin +VoiceDoo @SynVoice +VoiceOoh @SynVoice +Voice Ld @SquareLd +Warm Pad @NewAgePd +WavSweep @NewAgePd +WireLead @SquareLd +Woodblok @TnklBell +X Piano @GrandPno +Xylophon @Glocken +GM Kit @Standard +Standrd2 @Standard +Standrd3 @Standard +Dry Kit @Standard +BrightKt @Standard +Skim Kit @Standard +Slim Kit @Standard +RogueKit @Standard +Hob Kit @Standard +Room Kit @Standard +DarkRoom @Standard +TechnoKt @Standard +PowerKit @Standard +Rock Kit @Standard +RockKit2 @Standard +Electro @Standard +AnalogKt @Standard +Anal.Kt2 @Standard +DanceKit @Standard +HipHopKt @Standard +JungleKt @Standard +ApogeeKt @Standard +Perigee @Standard +Jazz Kit @Standard +JazzKit2 @Standard +BrushKit @Standard +BrushKt2 @Standard +Symphony @Standard +Orch.Kit @Standard +EthnicKt @Standard +KikSnare @Standard +AsianKit @Standard +CymblKit @Standard +SFX Kit @Standard +Ntrl Kit @Standard +NtrlFunk @Standard +TrampKit @Standard +AmberKit @Standard +CoffinKt @Standard +Live Std @Standard +LiveFunk @Standard +Lv Brush @Standard +Std&Perc @Standard +FunkPerc @Standard +Brush&P. @Standard +MT-32 Kt @Standard +ComboKit @Standard +DownLoKt @Standard +KrazyKit @Standard +NatureKt @Standard +Perc Kit @Standard \ No newline at end of file diff --git a/deno/esbuild/mod.js b/deno/esbuild/mod.js new file mode 100644 index 00000000..3493a8f3 --- /dev/null +++ b/deno/esbuild/mod.js @@ -0,0 +1,104399 @@ +// deno-fmt-ignore-file +// deno-lint-ignore-file +// This code was bundled using `deno bundle` and it's not recommended to edit it manually + +const importMeta = { + url: "https://deno.land/x/denoflate@1.2.1/pkg/denoflate.js", + main: false +}; +let wasm; +let cachedTextDecoder = new TextDecoder('utf-8', { + ignoreBOM: true, + fatal: true +}); +cachedTextDecoder.decode(); +let cachegetUint8Memory0 = null; +function getUint8Memory0() { + if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) { + cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachegetUint8Memory0; +} +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +const heap = new Array(32).fill(undefined); +heap.push(undefined, null, true, false); +let heap_next = heap.length; +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + heap[idx] = obj; + return idx; +} +function getObject(idx) { + return heap[idx]; +} +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} +let WASM_VECTOR_LEN = 0; +function passArray8ToWasm0(arg, malloc) { + const ptr = malloc(arg.length * 1); + getUint8Memory0().set(arg, ptr / 1); + WASM_VECTOR_LEN = arg.length; + return ptr; +} +let cachegetInt32Memory0 = null; +function getInt32Memory0() { + if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) { + cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachegetInt32Memory0; +} +function getArrayU8FromWasm0(ptr, len) { + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} +function gunzip(input) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + var ptr0 = passArray8ToWasm0(input, wasm.__wbindgen_malloc); + var len0 = WASM_VECTOR_LEN; + wasm.gunzip(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v1; + } finally{ + wasm.__wbindgen_add_to_stack_pointer(16); + } +} +async function load(module, imports) { + if (typeof Response === 'function' && module instanceof Response) { + if (typeof WebAssembly.instantiateStreaming === 'function') { + try { + return await WebAssembly.instantiateStreaming(module, imports); + } catch (e) { + if (module.headers.get('Content-Type') != 'application/wasm') { + console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e); + } else { + throw e; + } + } + } + const bytes = await module.arrayBuffer(); + return await WebAssembly.instantiate(bytes, imports); + } else { + const instance = await WebAssembly.instantiate(module, imports); + if (instance instanceof WebAssembly.Instance) { + return { + instance, + module + }; + } else { + return instance; + } + } +} +async function init(input) { + if (typeof input === 'undefined') { + input = new URL('denoflate_bg.wasm', importMeta.url); + } + const imports = {}; + imports.wbg = {}; + imports.wbg.__wbindgen_string_new = function(arg0, arg1) { + var ret = getStringFromWasm0(arg0, arg1); + return addHeapObject(ret); + }; + imports.wbg.__wbindgen_rethrow = function(arg0) { + throw takeObject(arg0); + }; + if (typeof input === 'string' || typeof Request === 'function' && input instanceof Request || typeof URL === 'function' && input instanceof URL) { + input = fetch(input); + } + const { instance , module } = await load(await input, imports); + wasm = instance.exports; + init.__wbindgen_wasm_module = module; + return wasm; +} +const wasm1 = new Uint8Array([ + 0, + 97, + 115, + 109, + 1, + 0, + 0, + 0, + 1, + 142, + 1, + 21, + 96, + 2, + 127, + 127, + 1, + 127, + 96, + 3, + 127, + 127, + 127, + 1, + 127, + 96, + 1, + 127, + 0, + 96, + 3, + 127, + 127, + 127, + 0, + 96, + 2, + 127, + 127, + 0, + 96, + 4, + 127, + 127, + 127, + 127, + 0, + 96, + 1, + 127, + 1, + 127, + 96, + 1, + 127, + 1, + 126, + 96, + 3, + 127, + 127, + 127, + 1, + 126, + 96, + 5, + 127, + 127, + 127, + 127, + 127, + 0, + 96, + 6, + 127, + 127, + 127, + 127, + 127, + 127, + 0, + 96, + 7, + 127, + 127, + 127, + 127, + 127, + 127, + 127, + 0, + 96, + 4, + 127, + 127, + 127, + 127, + 1, + 127, + 96, + 0, + 1, + 126, + 96, + 0, + 0, + 96, + 8, + 127, + 127, + 127, + 127, + 127, + 127, + 127, + 127, + 0, + 96, + 0, + 1, + 127, + 96, + 5, + 127, + 127, + 127, + 127, + 127, + 1, + 127, + 96, + 6, + 127, + 127, + 127, + 127, + 127, + 127, + 1, + 127, + 96, + 3, + 126, + 127, + 127, + 1, + 127, + 96, + 2, + 127, + 127, + 1, + 126, + 2, + 54, + 2, + 3, + 119, + 98, + 103, + 21, + 95, + 95, + 119, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 95, + 115, + 116, + 114, + 105, + 110, + 103, + 95, + 110, + 101, + 119, + 0, + 0, + 3, + 119, + 98, + 103, + 18, + 95, + 95, + 119, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 95, + 114, + 101, + 116, + 104, + 114, + 111, + 119, + 0, + 2, + 3, + 180, + 1, + 178, + 1, + 15, + 12, + 5, + 5, + 9, + 11, + 3, + 0, + 8, + 3, + 9, + 4, + 1, + 1, + 3, + 3, + 3, + 9, + 9, + 6, + 11, + 9, + 3, + 10, + 8, + 18, + 5, + 5, + 3, + 1, + 17, + 0, + 7, + 5, + 0, + 4, + 0, + 1, + 6, + 8, + 8, + 8, + 8, + 8, + 4, + 5, + 0, + 3, + 2, + 4, + 19, + 2, + 4, + 11, + 0, + 7, + 7, + 16, + 4, + 4, + 3, + 3, + 0, + 10, + 3, + 3, + 0, + 0, + 4, + 10, + 5, + 4, + 5, + 3, + 5, + 2, + 7, + 13, + 3, + 3, + 7, + 0, + 0, + 3, + 6, + 0, + 2, + 5, + 13, + 2, + 5, + 9, + 0, + 6, + 3, + 2, + 3, + 3, + 3, + 3, + 0, + 4, + 0, + 0, + 0, + 8, + 0, + 0, + 10, + 12, + 0, + 6, + 3, + 0, + 0, + 0, + 4, + 4, + 2, + 1, + 0, + 1, + 2, + 6, + 3, + 5, + 20, + 2, + 4, + 1, + 0, + 6, + 2, + 2, + 4, + 7, + 2, + 6, + 2, + 3, + 0, + 1, + 4, + 1, + 4, + 6, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 3, + 0, + 14, + 0, + 0, + 1, + 6, + 7, + 0, + 4, + 1, + 4, + 2, + 7, + 6, + 0, + 6, + 0, + 7, + 7, + 7, + 7, + 2, + 4, + 4, + 5, + 1, + 112, + 1, + 75, + 75, + 5, + 3, + 1, + 0, + 17, + 6, + 9, + 1, + 127, + 1, + 65, + 128, + 128, + 192, + 0, + 11, + 7, + 136, + 1, + 10, + 6, + 109, + 101, + 109, + 111, + 114, + 121, + 2, + 0, + 7, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 0, + 19, + 7, + 105, + 110, + 102, + 108, + 97, + 116, + 101, + 0, + 17, + 4, + 103, + 122, + 105, + 112, + 0, + 23, + 6, + 103, + 117, + 110, + 122, + 105, + 112, + 0, + 11, + 4, + 122, + 108, + 105, + 98, + 0, + 20, + 6, + 117, + 110, + 122, + 108, + 105, + 98, + 0, + 18, + 31, + 95, + 95, + 119, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 95, + 97, + 100, + 100, + 95, + 116, + 111, + 95, + 115, + 116, + 97, + 99, + 107, + 95, + 112, + 111, + 105, + 110, + 116, + 101, + 114, + 0, + 162, + 1, + 17, + 95, + 95, + 119, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 95, + 109, + 97, + 108, + 108, + 111, + 99, + 0, + 125, + 15, + 95, + 95, + 119, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 95, + 102, + 114, + 101, + 101, + 0, + 144, + 1, + 9, + 129, + 1, + 1, + 0, + 65, + 1, + 11, + 74, + 122, + 140, + 1, + 167, + 1, + 169, + 1, + 170, + 1, + 146, + 1, + 152, + 1, + 153, + 1, + 33, + 64, + 178, + 1, + 92, + 171, + 1, + 172, + 1, + 74, + 173, + 1, + 170, + 1, + 178, + 1, + 178, + 1, + 117, + 109, + 112, + 164, + 1, + 178, + 1, + 167, + 1, + 174, + 1, + 170, + 1, + 150, + 1, + 115, + 116, + 178, + 1, + 122, + 178, + 1, + 87, + 140, + 1, + 167, + 1, + 169, + 1, + 170, + 1, + 151, + 1, + 132, + 1, + 152, + 1, + 179, + 1, + 178, + 1, + 145, + 1, + 36, + 104, + 176, + 1, + 135, + 1, + 60, + 73, + 118, + 154, + 1, + 134, + 1, + 177, + 1, + 175, + 1, + 178, + 1, + 145, + 1, + 157, + 1, + 105, + 142, + 1, + 160, + 1, + 155, + 1, + 94, + 38, + 159, + 1, + 148, + 1, + 178, + 1, + 176, + 1, + 39, + 69, + 108, + 161, + 1, + 68, + 106, + 10, + 226, + 186, + 4, + 178, + 1, + 217, + 68, + 1, + 36, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 8, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 5, + 32, + 6, + 79, + 4, + 64, + 65, + 127, + 65, + 0, + 32, + 5, + 65, + 127, + 106, + 34, + 9, + 32, + 9, + 32, + 5, + 75, + 27, + 32, + 7, + 65, + 4, + 113, + 34, + 32, + 27, + 34, + 29, + 65, + 1, + 106, + 34, + 38, + 32, + 29, + 113, + 69, + 13, + 1, + 11, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 253, + 1, + 58, + 0, + 4, + 12, + 1, + 11, + 32, + 8, + 32, + 2, + 54, + 2, + 0, + 32, + 8, + 32, + 2, + 32, + 3, + 106, + 34, + 39, + 54, + 2, + 4, + 32, + 1, + 45, + 0, + 152, + 82, + 33, + 10, + 32, + 8, + 32, + 1, + 40, + 2, + 36, + 54, + 2, + 24, + 32, + 8, + 32, + 1, + 41, + 2, + 28, + 55, + 3, + 16, + 32, + 8, + 32, + 1, + 40, + 2, + 0, + 54, + 2, + 12, + 32, + 8, + 32, + 1, + 40, + 2, + 52, + 54, + 2, + 8, + 65, + 1, + 65, + 3, + 32, + 7, + 65, + 1, + 113, + 34, + 35, + 27, + 33, + 40, + 65, + 1, + 65, + 124, + 32, + 7, + 65, + 2, + 113, + 34, + 9, + 27, + 33, + 26, + 65, + 130, + 2, + 65, + 130, + 120, + 32, + 9, + 27, + 33, + 22, + 32, + 1, + 65, + 248, + 207, + 0, + 106, + 33, + 41, + 32, + 1, + 65, + 184, + 25, + 106, + 33, + 36, + 32, + 1, + 65, + 157, + 210, + 0, + 106, + 33, + 42, + 32, + 1, + 65, + 216, + 52, + 106, + 33, + 31, + 32, + 1, + 65, + 184, + 27, + 106, + 33, + 33, + 32, + 1, + 65, + 200, + 26, + 106, + 33, + 43, + 32, + 1, + 65, + 248, + 54, + 106, + 33, + 37, + 32, + 1, + 65, + 56, + 106, + 33, + 30, + 32, + 1, + 65, + 216, + 27, + 106, + 33, + 34, + 32, + 6, + 33, + 15, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 3, + 64, + 65, + 255, + 1, + 33, + 16, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 10, + 34, + 11, + 65, + 255, + 1, + 113, + 14, + 25, + 26, + 25, + 27, + 24, + 23, + 22, + 17, + 16, + 15, + 14, + 13, + 12, + 0, + 10, + 8, + 7, + 6, + 21, + 18, + 4, + 3, + 9, + 5, + 2, + 1, + 30, + 11, + 32, + 8, + 40, + 2, + 4, + 34, + 20, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 107, + 34, + 10, + 65, + 4, + 73, + 13, + 10, + 32, + 9, + 33, + 17, + 2, + 64, + 3, + 64, + 32, + 5, + 32, + 15, + 107, + 34, + 12, + 65, + 1, + 77, + 13, + 12, + 32, + 12, + 65, + 131, + 2, + 73, + 32, + 10, + 65, + 13, + 77, + 114, + 69, + 4, + 64, + 32, + 8, + 40, + 2, + 24, + 33, + 27, + 32, + 8, + 40, + 2, + 20, + 33, + 19, + 32, + 8, + 40, + 2, + 16, + 33, + 28, + 32, + 8, + 40, + 2, + 12, + 33, + 17, + 32, + 8, + 40, + 2, + 8, + 33, + 13, + 32, + 9, + 33, + 18, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 21, + 2, + 64, + 3, + 64, + 65, + 12, + 33, + 10, + 32, + 20, + 32, + 9, + 107, + 65, + 14, + 73, + 13, + 1, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 17, + 65, + 14, + 77, + 4, + 64, + 32, + 20, + 32, + 21, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 45, + 32, + 21, + 47, + 0, + 0, + 32, + 8, + 32, + 21, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 17, + 116, + 32, + 13, + 114, + 33, + 13, + 32, + 9, + 33, + 18, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 21, + 32, + 17, + 65, + 16, + 106, + 33, + 17, + 11, + 32, + 30, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 12, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 12, + 65, + 127, + 115, + 106, + 34, + 12, + 65, + 191, + 4, + 75, + 13, + 47, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 12, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 12, + 65, + 127, + 76, + 13, + 0, + 11, + 12, + 1, + 11, + 32, + 12, + 65, + 9, + 118, + 34, + 11, + 13, + 0, + 65, + 34, + 33, + 11, + 12, + 1, + 11, + 32, + 17, + 32, + 11, + 107, + 33, + 17, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 33, + 13, + 65, + 128, + 2, + 33, + 19, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 12, + 65, + 128, + 2, + 113, + 69, + 4, + 64, + 2, + 64, + 2, + 64, + 32, + 17, + 65, + 14, + 77, + 4, + 64, + 32, + 20, + 32, + 25, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 52, + 32, + 25, + 47, + 0, + 0, + 32, + 8, + 32, + 25, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 17, + 116, + 32, + 13, + 114, + 33, + 13, + 32, + 9, + 33, + 18, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 21, + 32, + 17, + 65, + 16, + 106, + 33, + 17, + 11, + 32, + 30, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 14, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 14, + 65, + 127, + 115, + 106, + 34, + 14, + 65, + 191, + 4, + 75, + 13, + 2, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 14, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 14, + 65, + 127, + 76, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 14, + 65, + 9, + 118, + 34, + 11, + 13, + 1, + 65, + 34, + 33, + 11, + 32, + 12, + 33, + 19, + 12, + 8, + 11, + 32, + 14, + 65, + 192, + 4, + 65, + 248, + 176, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 15, + 32, + 5, + 79, + 13, + 51, + 32, + 17, + 32, + 11, + 107, + 33, + 17, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 33, + 13, + 32, + 4, + 32, + 15, + 106, + 32, + 12, + 58, + 0, + 0, + 32, + 15, + 65, + 1, + 106, + 33, + 11, + 32, + 14, + 65, + 128, + 2, + 113, + 69, + 13, + 1, + 32, + 11, + 33, + 15, + 32, + 14, + 33, + 12, + 11, + 32, + 12, + 65, + 255, + 3, + 113, + 34, + 14, + 65, + 128, + 2, + 71, + 13, + 1, + 65, + 20, + 33, + 10, + 12, + 9, + 11, + 32, + 11, + 32, + 5, + 79, + 13, + 1, + 32, + 4, + 32, + 11, + 106, + 32, + 14, + 58, + 0, + 0, + 32, + 5, + 32, + 15, + 65, + 2, + 106, + 34, + 15, + 107, + 65, + 131, + 2, + 79, + 13, + 5, + 32, + 12, + 33, + 19, + 12, + 8, + 11, + 32, + 14, + 65, + 157, + 2, + 75, + 4, + 64, + 32, + 14, + 33, + 19, + 65, + 32, + 12, + 3, + 11, + 32, + 17, + 65, + 14, + 77, + 4, + 64, + 32, + 20, + 32, + 24, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 47, + 32, + 24, + 47, + 0, + 0, + 32, + 8, + 32, + 24, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 17, + 116, + 32, + 13, + 114, + 33, + 13, + 32, + 9, + 33, + 18, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 21, + 32, + 17, + 65, + 16, + 106, + 33, + 17, + 11, + 32, + 12, + 65, + 127, + 106, + 65, + 31, + 113, + 34, + 12, + 65, + 1, + 116, + 65, + 216, + 181, + 192, + 0, + 106, + 47, + 1, + 0, + 33, + 19, + 2, + 64, + 32, + 12, + 65, + 184, + 181, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 27, + 69, + 13, + 0, + 32, + 13, + 32, + 27, + 65, + 31, + 113, + 34, + 12, + 118, + 33, + 11, + 32, + 13, + 65, + 127, + 32, + 12, + 116, + 65, + 127, + 115, + 113, + 32, + 19, + 106, + 33, + 19, + 32, + 17, + 32, + 27, + 107, + 34, + 12, + 65, + 14, + 75, + 4, + 64, + 32, + 12, + 33, + 17, + 32, + 11, + 33, + 13, + 12, + 1, + 11, + 32, + 20, + 32, + 23, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 47, + 32, + 23, + 47, + 0, + 0, + 32, + 8, + 32, + 23, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 12, + 65, + 16, + 106, + 33, + 17, + 32, + 12, + 116, + 32, + 11, + 114, + 33, + 13, + 32, + 9, + 33, + 18, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 21, + 11, + 32, + 34, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 12, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 12, + 65, + 127, + 115, + 106, + 34, + 12, + 65, + 191, + 4, + 75, + 13, + 49, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 12, + 65, + 1, + 116, + 106, + 65, + 216, + 43, + 106, + 46, + 1, + 0, + 34, + 12, + 65, + 127, + 76, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 12, + 65, + 9, + 118, + 34, + 11, + 13, + 1, + 65, + 34, + 33, + 11, + 12, + 3, + 11, + 32, + 11, + 32, + 5, + 65, + 196, + 185, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 17, + 32, + 11, + 107, + 33, + 17, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 33, + 14, + 2, + 64, + 32, + 12, + 65, + 255, + 3, + 113, + 34, + 12, + 65, + 29, + 77, + 4, + 64, + 32, + 12, + 65, + 1, + 116, + 65, + 184, + 182, + 192, + 0, + 106, + 47, + 1, + 0, + 33, + 28, + 2, + 64, + 32, + 12, + 65, + 152, + 182, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 27, + 69, + 4, + 64, + 32, + 14, + 33, + 13, + 12, + 1, + 11, + 32, + 17, + 65, + 14, + 75, + 4, + 127, + 32, + 17, + 5, + 32, + 20, + 32, + 18, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 48, + 32, + 18, + 47, + 0, + 0, + 32, + 8, + 32, + 18, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 17, + 116, + 32, + 14, + 114, + 33, + 14, + 32, + 9, + 33, + 18, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 21, + 32, + 17, + 65, + 16, + 106, + 11, + 32, + 27, + 107, + 33, + 17, + 32, + 14, + 32, + 27, + 65, + 31, + 113, + 34, + 12, + 118, + 33, + 13, + 32, + 14, + 65, + 127, + 32, + 12, + 116, + 65, + 127, + 115, + 113, + 32, + 28, + 106, + 33, + 28, + 11, + 32, + 32, + 65, + 0, + 32, + 28, + 32, + 15, + 75, + 27, + 13, + 1, + 32, + 4, + 32, + 5, + 32, + 15, + 32, + 28, + 32, + 19, + 32, + 29, + 16, + 71, + 32, + 5, + 32, + 15, + 32, + 19, + 106, + 34, + 15, + 107, + 65, + 131, + 2, + 79, + 13, + 6, + 12, + 7, + 11, + 65, + 33, + 33, + 11, + 32, + 14, + 33, + 13, + 12, + 2, + 11, + 65, + 29, + 11, + 33, + 11, + 11, + 32, + 8, + 32, + 27, + 54, + 2, + 24, + 32, + 8, + 32, + 19, + 54, + 2, + 20, + 32, + 8, + 32, + 28, + 54, + 2, + 16, + 32, + 8, + 32, + 17, + 54, + 2, + 12, + 32, + 8, + 32, + 13, + 54, + 2, + 8, + 12, + 36, + 11, + 32, + 9, + 33, + 18, + 32, + 9, + 33, + 23, + 32, + 9, + 33, + 24, + 32, + 9, + 33, + 25, + 32, + 9, + 33, + 21, + 32, + 12, + 33, + 19, + 32, + 20, + 32, + 9, + 107, + 65, + 14, + 79, + 13, + 0, + 11, + 11, + 11, + 32, + 8, + 32, + 27, + 54, + 2, + 24, + 32, + 8, + 32, + 19, + 54, + 2, + 20, + 32, + 8, + 32, + 28, + 54, + 2, + 16, + 32, + 8, + 32, + 17, + 54, + 2, + 12, + 32, + 8, + 32, + 13, + 54, + 2, + 8, + 12, + 30, + 11, + 2, + 64, + 2, + 64, + 32, + 8, + 40, + 2, + 12, + 34, + 14, + 65, + 15, + 79, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 12, + 12, + 1, + 11, + 32, + 20, + 32, + 17, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 39, + 32, + 17, + 47, + 0, + 0, + 33, + 12, + 32, + 8, + 32, + 17, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 8, + 32, + 14, + 65, + 16, + 106, + 34, + 10, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 12, + 32, + 14, + 116, + 114, + 34, + 12, + 54, + 2, + 8, + 32, + 9, + 33, + 17, + 32, + 10, + 33, + 14, + 11, + 2, + 64, + 32, + 30, + 32, + 12, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 13, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 13, + 65, + 127, + 115, + 106, + 34, + 10, + 65, + 191, + 4, + 75, + 13, + 2, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 10, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 13, + 65, + 127, + 76, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 13, + 65, + 9, + 118, + 34, + 11, + 13, + 1, + 65, + 34, + 33, + 10, + 12, + 31, + 11, + 32, + 10, + 65, + 192, + 4, + 65, + 248, + 176, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 32, + 14, + 32, + 11, + 107, + 34, + 18, + 54, + 2, + 12, + 32, + 8, + 32, + 12, + 32, + 11, + 65, + 31, + 113, + 118, + 34, + 14, + 54, + 2, + 8, + 32, + 8, + 32, + 13, + 54, + 2, + 20, + 65, + 21, + 33, + 10, + 32, + 13, + 65, + 128, + 2, + 113, + 13, + 29, + 2, + 64, + 2, + 64, + 32, + 18, + 65, + 14, + 75, + 4, + 64, + 32, + 18, + 33, + 21, + 12, + 1, + 11, + 32, + 20, + 32, + 17, + 107, + 34, + 9, + 65, + 1, + 77, + 13, + 39, + 32, + 17, + 47, + 0, + 0, + 33, + 12, + 32, + 8, + 32, + 18, + 65, + 16, + 106, + 34, + 21, + 54, + 2, + 12, + 32, + 8, + 32, + 17, + 65, + 2, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 8, + 32, + 12, + 32, + 18, + 116, + 32, + 14, + 114, + 34, + 14, + 54, + 2, + 8, + 32, + 9, + 33, + 17, + 11, + 32, + 30, + 32, + 14, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 12, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 14, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 12, + 65, + 127, + 115, + 106, + 34, + 12, + 65, + 191, + 4, + 75, + 13, + 41, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 12, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 12, + 65, + 127, + 76, + 13, + 0, + 11, + 12, + 1, + 11, + 32, + 12, + 65, + 9, + 118, + 34, + 11, + 13, + 0, + 65, + 34, + 33, + 10, + 12, + 30, + 11, + 32, + 8, + 32, + 21, + 32, + 11, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 14, + 32, + 11, + 65, + 31, + 113, + 118, + 54, + 2, + 8, + 32, + 15, + 32, + 5, + 73, + 4, + 64, + 32, + 4, + 32, + 15, + 106, + 32, + 13, + 58, + 0, + 0, + 32, + 15, + 65, + 1, + 106, + 33, + 11, + 32, + 12, + 65, + 128, + 2, + 113, + 4, + 64, + 32, + 8, + 32, + 12, + 54, + 2, + 20, + 32, + 11, + 33, + 15, + 12, + 31, + 11, + 32, + 11, + 32, + 5, + 79, + 13, + 2, + 32, + 4, + 32, + 11, + 106, + 32, + 12, + 58, + 0, + 0, + 32, + 15, + 65, + 2, + 106, + 33, + 15, + 32, + 20, + 32, + 17, + 107, + 34, + 10, + 65, + 4, + 79, + 13, + 1, + 12, + 13, + 11, + 11, + 12, + 38, + 11, + 32, + 11, + 32, + 5, + 65, + 196, + 185, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 0, + 33, + 16, + 12, + 28, + 11, + 32, + 8, + 40, + 2, + 20, + 33, + 14, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 3, + 64, + 32, + 14, + 65, + 3, + 75, + 4, + 64, + 65, + 24, + 33, + 10, + 12, + 27, + 11, + 2, + 127, + 32, + 8, + 2, + 127, + 32, + 8, + 40, + 2, + 12, + 34, + 11, + 4, + 64, + 3, + 64, + 32, + 11, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 65, + 255, + 1, + 113, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 116, + 114, + 54, + 2, + 12, + 32, + 8, + 32, + 11, + 65, + 120, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 8, + 118, + 54, + 2, + 8, + 32, + 14, + 65, + 1, + 106, + 12, + 3, + 11, + 2, + 127, + 32, + 22, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 13, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 13, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 12, + 2, + 11, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 4, + 64, + 65, + 23, + 33, + 11, + 32, + 26, + 33, + 10, + 12, + 30, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 116, + 114, + 54, + 2, + 12, + 32, + 14, + 65, + 1, + 106, + 11, + 34, + 14, + 54, + 2, + 20, + 65, + 0, + 33, + 13, + 65, + 0, + 11, + 33, + 10, + 65, + 23, + 33, + 11, + 32, + 13, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 26, + 27, + 0, + 11, + 0, + 11, + 65, + 3, + 33, + 10, + 32, + 1, + 40, + 2, + 16, + 69, + 13, + 24, + 32, + 8, + 40, + 2, + 12, + 34, + 11, + 65, + 7, + 113, + 33, + 16, + 32, + 8, + 40, + 2, + 4, + 33, + 9, + 3, + 64, + 2, + 64, + 32, + 11, + 32, + 16, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 32, + 16, + 107, + 34, + 11, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 16, + 118, + 54, + 2, + 8, + 32, + 8, + 40, + 2, + 0, + 33, + 14, + 12, + 1, + 11, + 2, + 127, + 32, + 9, + 32, + 8, + 40, + 2, + 0, + 34, + 10, + 70, + 4, + 64, + 32, + 9, + 33, + 14, + 32, + 22, + 12, + 1, + 11, + 32, + 8, + 32, + 10, + 65, + 1, + 106, + 34, + 14, + 54, + 2, + 0, + 32, + 10, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 12, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 12, + 33, + 11, + 65, + 0, + 11, + 65, + 2, + 113, + 69, + 13, + 1, + 11, + 11, + 32, + 8, + 32, + 11, + 32, + 14, + 32, + 9, + 107, + 32, + 3, + 106, + 34, + 9, + 32, + 11, + 65, + 3, + 118, + 34, + 10, + 32, + 10, + 32, + 9, + 75, + 27, + 34, + 10, + 65, + 3, + 116, + 107, + 34, + 12, + 54, + 2, + 12, + 32, + 9, + 32, + 10, + 107, + 34, + 9, + 32, + 3, + 77, + 4, + 64, + 32, + 8, + 32, + 39, + 54, + 2, + 4, + 32, + 8, + 32, + 2, + 32, + 9, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 65, + 127, + 32, + 12, + 65, + 31, + 113, + 116, + 65, + 127, + 115, + 113, + 54, + 2, + 8, + 65, + 24, + 33, + 10, + 32, + 35, + 69, + 13, + 25, + 32, + 8, + 65, + 0, + 54, + 2, + 20, + 65, + 23, + 33, + 10, + 12, + 25, + 11, + 32, + 9, + 32, + 3, + 65, + 248, + 182, + 192, + 0, + 16, + 101, + 0, + 11, + 32, + 8, + 40, + 2, + 16, + 33, + 12, + 3, + 64, + 32, + 5, + 32, + 15, + 107, + 34, + 9, + 69, + 4, + 64, + 65, + 19, + 33, + 11, + 65, + 2, + 33, + 16, + 12, + 27, + 11, + 32, + 4, + 32, + 5, + 32, + 15, + 32, + 12, + 107, + 32, + 29, + 113, + 32, + 15, + 32, + 8, + 40, + 2, + 20, + 34, + 10, + 32, + 9, + 32, + 9, + 32, + 10, + 75, + 27, + 34, + 9, + 32, + 29, + 16, + 25, + 32, + 8, + 32, + 10, + 32, + 9, + 107, + 34, + 11, + 54, + 2, + 20, + 32, + 9, + 32, + 15, + 106, + 33, + 15, + 65, + 12, + 33, + 10, + 32, + 11, + 13, + 0, + 11, + 12, + 23, + 11, + 32, + 8, + 40, + 2, + 16, + 33, + 12, + 32, + 32, + 4, + 64, + 65, + 29, + 33, + 10, + 32, + 15, + 32, + 12, + 73, + 13, + 23, + 11, + 2, + 64, + 32, + 8, + 40, + 2, + 20, + 34, + 10, + 32, + 15, + 106, + 34, + 9, + 32, + 5, + 75, + 13, + 0, + 32, + 15, + 32, + 12, + 107, + 32, + 29, + 113, + 34, + 11, + 32, + 15, + 79, + 65, + 0, + 32, + 11, + 32, + 15, + 107, + 32, + 10, + 73, + 27, + 13, + 0, + 32, + 4, + 32, + 5, + 32, + 15, + 32, + 12, + 32, + 10, + 32, + 29, + 16, + 71, + 65, + 12, + 33, + 10, + 32, + 9, + 33, + 15, + 12, + 23, + 11, + 65, + 19, + 65, + 12, + 32, + 10, + 27, + 33, + 10, + 12, + 22, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 32, + 8, + 40, + 2, + 4, + 33, + 14, + 32, + 8, + 40, + 2, + 24, + 33, + 12, + 3, + 64, + 32, + 11, + 32, + 12, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 32, + 12, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 32, + 12, + 65, + 31, + 113, + 34, + 10, + 118, + 54, + 2, + 8, + 32, + 8, + 32, + 8, + 40, + 2, + 16, + 32, + 9, + 65, + 127, + 32, + 10, + 116, + 65, + 127, + 115, + 113, + 106, + 54, + 2, + 16, + 65, + 22, + 33, + 10, + 12, + 23, + 11, + 2, + 127, + 32, + 22, + 32, + 14, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 114, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 16, + 33, + 11, + 12, + 22, + 11, + 2, + 64, + 32, + 8, + 40, + 2, + 12, + 34, + 16, + 65, + 15, + 79, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 13, + 12, + 1, + 11, + 32, + 8, + 40, + 2, + 4, + 34, + 17, + 32, + 8, + 40, + 2, + 0, + 34, + 14, + 107, + 65, + 1, + 77, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 13, + 32, + 16, + 33, + 12, + 3, + 64, + 2, + 64, + 2, + 64, + 32, + 34, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 0, + 78, + 4, + 64, + 32, + 10, + 65, + 9, + 118, + 65, + 127, + 106, + 32, + 12, + 79, + 13, + 1, + 32, + 12, + 33, + 16, + 12, + 5, + 11, + 65, + 11, + 33, + 11, + 32, + 12, + 65, + 11, + 73, + 13, + 0, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 127, + 106, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 9, + 65, + 191, + 4, + 75, + 13, + 2, + 32, + 1, + 32, + 9, + 65, + 1, + 116, + 106, + 65, + 216, + 43, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 74, + 4, + 64, + 32, + 12, + 33, + 16, + 12, + 6, + 11, + 32, + 12, + 32, + 11, + 65, + 1, + 106, + 34, + 11, + 79, + 13, + 0, + 11, + 11, + 32, + 14, + 32, + 17, + 70, + 4, + 64, + 65, + 15, + 33, + 11, + 32, + 26, + 33, + 10, + 12, + 26, + 11, + 32, + 8, + 32, + 14, + 65, + 1, + 106, + 34, + 9, + 54, + 2, + 0, + 32, + 14, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 12, + 65, + 8, + 106, + 34, + 16, + 54, + 2, + 12, + 32, + 8, + 32, + 10, + 32, + 12, + 65, + 31, + 113, + 116, + 32, + 13, + 114, + 34, + 13, + 54, + 2, + 8, + 32, + 9, + 33, + 14, + 32, + 16, + 34, + 12, + 65, + 15, + 73, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 9, + 65, + 192, + 4, + 65, + 152, + 177, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 14, + 47, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 14, + 65, + 2, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 16, + 65, + 16, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 16, + 116, + 114, + 34, + 13, + 54, + 2, + 8, + 32, + 9, + 33, + 16, + 11, + 2, + 64, + 32, + 34, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 9, + 65, + 191, + 4, + 75, + 13, + 34, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 9, + 65, + 1, + 116, + 106, + 65, + 216, + 43, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 13, + 0, + 11, + 32, + 10, + 33, + 12, + 12, + 1, + 11, + 32, + 10, + 65, + 255, + 3, + 113, + 33, + 12, + 32, + 10, + 65, + 9, + 118, + 33, + 11, + 12, + 0, + 11, + 65, + 34, + 33, + 10, + 32, + 11, + 69, + 13, + 20, + 32, + 8, + 32, + 16, + 32, + 11, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 54, + 2, + 8, + 65, + 33, + 33, + 10, + 32, + 12, + 65, + 29, + 74, + 13, + 20, + 32, + 8, + 32, + 12, + 65, + 31, + 113, + 34, + 9, + 65, + 1, + 116, + 65, + 184, + 182, + 192, + 0, + 106, + 47, + 1, + 0, + 54, + 2, + 16, + 32, + 8, + 32, + 9, + 65, + 152, + 182, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 9, + 54, + 2, + 24, + 65, + 16, + 65, + 22, + 32, + 9, + 27, + 33, + 10, + 12, + 20, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 32, + 8, + 40, + 2, + 4, + 33, + 14, + 32, + 8, + 40, + 2, + 24, + 33, + 12, + 3, + 64, + 32, + 11, + 32, + 12, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 32, + 12, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 32, + 12, + 65, + 31, + 113, + 34, + 10, + 118, + 54, + 2, + 8, + 32, + 8, + 32, + 8, + 40, + 2, + 20, + 32, + 9, + 65, + 127, + 32, + 10, + 116, + 65, + 127, + 115, + 113, + 106, + 54, + 2, + 20, + 65, + 15, + 33, + 10, + 12, + 21, + 11, + 2, + 127, + 32, + 22, + 32, + 14, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 114, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 14, + 33, + 11, + 12, + 20, + 11, + 32, + 8, + 32, + 8, + 40, + 2, + 20, + 34, + 12, + 65, + 255, + 3, + 113, + 34, + 9, + 54, + 2, + 20, + 65, + 20, + 33, + 10, + 32, + 9, + 65, + 128, + 2, + 70, + 13, + 18, + 65, + 32, + 33, + 10, + 32, + 9, + 65, + 157, + 2, + 75, + 13, + 18, + 32, + 8, + 32, + 12, + 65, + 127, + 106, + 65, + 31, + 113, + 34, + 9, + 65, + 1, + 116, + 65, + 216, + 181, + 192, + 0, + 106, + 47, + 1, + 0, + 54, + 2, + 20, + 32, + 8, + 32, + 9, + 65, + 184, + 181, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 9, + 54, + 2, + 24, + 65, + 14, + 65, + 15, + 32, + 9, + 27, + 33, + 10, + 12, + 18, + 11, + 65, + 21, + 33, + 10, + 32, + 8, + 40, + 2, + 20, + 34, + 9, + 65, + 255, + 1, + 75, + 13, + 17, + 32, + 5, + 32, + 15, + 70, + 13, + 8, + 32, + 15, + 32, + 5, + 73, + 4, + 64, + 32, + 4, + 32, + 15, + 106, + 32, + 9, + 58, + 0, + 0, + 32, + 15, + 65, + 1, + 106, + 33, + 15, + 65, + 12, + 33, + 10, + 12, + 18, + 11, + 12, + 27, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 8, + 40, + 2, + 12, + 34, + 16, + 65, + 15, + 79, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 13, + 12, + 1, + 11, + 32, + 10, + 65, + 1, + 77, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 13, + 32, + 16, + 33, + 12, + 3, + 64, + 2, + 64, + 2, + 64, + 32, + 30, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 0, + 78, + 4, + 64, + 32, + 10, + 65, + 9, + 118, + 65, + 127, + 106, + 32, + 12, + 79, + 13, + 1, + 32, + 12, + 33, + 16, + 12, + 5, + 11, + 65, + 11, + 33, + 11, + 32, + 12, + 65, + 11, + 73, + 13, + 0, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 127, + 106, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 10, + 65, + 191, + 4, + 75, + 13, + 2, + 32, + 1, + 32, + 10, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 74, + 4, + 64, + 32, + 12, + 33, + 16, + 12, + 6, + 11, + 32, + 12, + 32, + 11, + 65, + 1, + 106, + 34, + 11, + 79, + 13, + 0, + 11, + 11, + 32, + 9, + 32, + 20, + 70, + 4, + 64, + 65, + 12, + 33, + 11, + 32, + 26, + 33, + 10, + 12, + 25, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 34, + 10, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 9, + 32, + 8, + 32, + 12, + 65, + 8, + 106, + 34, + 16, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 32, + 12, + 65, + 31, + 113, + 116, + 32, + 13, + 114, + 34, + 13, + 54, + 2, + 8, + 32, + 10, + 33, + 9, + 32, + 16, + 34, + 12, + 65, + 15, + 73, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 10, + 65, + 192, + 4, + 65, + 152, + 177, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 20, + 32, + 9, + 107, + 34, + 10, + 65, + 1, + 77, + 13, + 1, + 32, + 9, + 47, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 9, + 65, + 2, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 16, + 65, + 16, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 16, + 116, + 114, + 34, + 13, + 54, + 2, + 8, + 32, + 9, + 33, + 16, + 11, + 32, + 30, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 74, + 13, + 1, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 9, + 65, + 191, + 4, + 75, + 13, + 31, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 9, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 13, + 0, + 11, + 32, + 10, + 33, + 12, + 12, + 2, + 11, + 65, + 2, + 32, + 10, + 65, + 136, + 177, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 10, + 65, + 255, + 3, + 113, + 33, + 12, + 32, + 10, + 65, + 9, + 118, + 33, + 11, + 12, + 0, + 11, + 65, + 34, + 33, + 10, + 32, + 11, + 69, + 13, + 16, + 32, + 8, + 32, + 12, + 54, + 2, + 20, + 32, + 8, + 32, + 16, + 32, + 11, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 54, + 2, + 8, + 65, + 13, + 33, + 10, + 12, + 16, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 32, + 8, + 40, + 2, + 4, + 33, + 14, + 32, + 8, + 40, + 2, + 24, + 33, + 12, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 11, + 32, + 12, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 32, + 12, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 11, + 32, + 12, + 65, + 31, + 113, + 34, + 14, + 118, + 54, + 2, + 8, + 32, + 8, + 65, + 11, + 54, + 2, + 40, + 32, + 8, + 66, + 131, + 128, + 128, + 128, + 48, + 55, + 2, + 32, + 2, + 64, + 32, + 8, + 40, + 2, + 16, + 34, + 10, + 65, + 3, + 113, + 34, + 9, + 65, + 3, + 71, + 4, + 64, + 32, + 8, + 65, + 32, + 106, + 32, + 9, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 33, + 16, + 65, + 0, + 33, + 12, + 32, + 8, + 40, + 2, + 20, + 33, + 9, + 32, + 10, + 65, + 16, + 70, + 4, + 64, + 32, + 9, + 65, + 127, + 106, + 34, + 10, + 65, + 200, + 3, + 75, + 13, + 2, + 32, + 1, + 32, + 10, + 106, + 65, + 157, + 210, + 0, + 106, + 45, + 0, + 0, + 33, + 12, + 11, + 32, + 9, + 32, + 16, + 32, + 11, + 65, + 127, + 32, + 14, + 116, + 65, + 127, + 115, + 113, + 106, + 34, + 11, + 106, + 34, + 10, + 32, + 9, + 73, + 13, + 4, + 32, + 10, + 65, + 202, + 3, + 79, + 13, + 5, + 32, + 11, + 4, + 64, + 32, + 1, + 32, + 9, + 106, + 65, + 157, + 210, + 0, + 106, + 32, + 12, + 32, + 11, + 16, + 131, + 1, + 26, + 11, + 32, + 8, + 32, + 10, + 54, + 2, + 20, + 65, + 10, + 33, + 10, + 12, + 21, + 11, + 65, + 3, + 65, + 3, + 65, + 164, + 184, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 10, + 65, + 201, + 3, + 65, + 180, + 184, + 192, + 0, + 16, + 98, + 0, + 11, + 2, + 127, + 32, + 22, + 32, + 14, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 114, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 11, + 33, + 11, + 12, + 18, + 11, + 32, + 9, + 32, + 10, + 65, + 196, + 184, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 10, + 65, + 201, + 3, + 65, + 196, + 184, + 192, + 0, + 16, + 99, + 0, + 11, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 8, + 40, + 2, + 20, + 34, + 16, + 32, + 1, + 40, + 2, + 44, + 34, + 10, + 32, + 1, + 40, + 2, + 40, + 34, + 9, + 106, + 34, + 12, + 73, + 4, + 64, + 32, + 8, + 40, + 2, + 12, + 34, + 14, + 65, + 15, + 79, + 4, + 64, + 32, + 8, + 40, + 2, + 8, + 33, + 13, + 12, + 7, + 11, + 32, + 8, + 40, + 2, + 4, + 34, + 17, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 107, + 65, + 1, + 75, + 13, + 1, + 32, + 8, + 40, + 2, + 8, + 33, + 13, + 32, + 14, + 33, + 12, + 3, + 64, + 2, + 64, + 2, + 64, + 32, + 37, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 0, + 78, + 4, + 64, + 32, + 10, + 65, + 9, + 118, + 65, + 127, + 106, + 32, + 12, + 79, + 13, + 1, + 32, + 12, + 33, + 14, + 12, + 10, + 11, + 65, + 11, + 33, + 11, + 32, + 12, + 65, + 11, + 73, + 13, + 0, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 127, + 106, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 10, + 65, + 191, + 4, + 75, + 13, + 2, + 32, + 1, + 32, + 10, + 65, + 1, + 116, + 106, + 65, + 248, + 198, + 0, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 74, + 4, + 64, + 32, + 12, + 33, + 14, + 12, + 11, + 11, + 32, + 12, + 32, + 11, + 65, + 1, + 106, + 34, + 11, + 79, + 13, + 0, + 11, + 11, + 32, + 9, + 32, + 17, + 70, + 4, + 64, + 65, + 10, + 33, + 11, + 32, + 26, + 33, + 10, + 12, + 27, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 34, + 10, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 9, + 32, + 8, + 32, + 12, + 65, + 8, + 106, + 34, + 14, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 32, + 12, + 65, + 31, + 113, + 116, + 32, + 13, + 114, + 34, + 13, + 54, + 2, + 8, + 32, + 10, + 33, + 9, + 32, + 14, + 34, + 12, + 65, + 15, + 73, + 13, + 1, + 12, + 8, + 11, + 11, + 32, + 10, + 65, + 192, + 4, + 65, + 152, + 177, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 12, + 32, + 16, + 71, + 4, + 64, + 65, + 26, + 33, + 10, + 12, + 23, + 11, + 32, + 9, + 65, + 161, + 2, + 79, + 13, + 1, + 32, + 36, + 32, + 42, + 32, + 9, + 16, + 121, + 26, + 32, + 10, + 65, + 161, + 2, + 79, + 13, + 2, + 32, + 16, + 32, + 9, + 73, + 13, + 3, + 32, + 16, + 65, + 202, + 3, + 79, + 13, + 4, + 32, + 31, + 32, + 1, + 32, + 9, + 106, + 65, + 157, + 210, + 0, + 106, + 32, + 10, + 16, + 121, + 26, + 32, + 1, + 32, + 1, + 40, + 2, + 20, + 65, + 127, + 106, + 54, + 2, + 20, + 32, + 1, + 32, + 8, + 65, + 8, + 106, + 16, + 9, + 34, + 11, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 12, + 6, + 11, + 32, + 9, + 47, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 9, + 65, + 2, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 14, + 65, + 16, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 14, + 116, + 114, + 34, + 13, + 54, + 2, + 8, + 32, + 9, + 33, + 14, + 12, + 4, + 11, + 32, + 9, + 65, + 160, + 2, + 65, + 136, + 183, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 10, + 65, + 160, + 2, + 65, + 152, + 183, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 9, + 32, + 16, + 65, + 168, + 183, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 16, + 65, + 201, + 3, + 65, + 168, + 183, + 192, + 0, + 16, + 99, + 0, + 11, + 2, + 64, + 32, + 37, + 32, + 13, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 4, + 64, + 65, + 10, + 33, + 11, + 3, + 64, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 65, + 1, + 113, + 32, + 10, + 65, + 127, + 115, + 106, + 34, + 9, + 65, + 191, + 4, + 75, + 13, + 30, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 32, + 9, + 65, + 1, + 116, + 106, + 65, + 248, + 198, + 0, + 106, + 46, + 1, + 0, + 34, + 10, + 65, + 127, + 76, + 13, + 0, + 11, + 32, + 10, + 33, + 12, + 12, + 1, + 11, + 32, + 10, + 65, + 255, + 3, + 113, + 33, + 12, + 32, + 10, + 65, + 9, + 118, + 33, + 11, + 12, + 0, + 11, + 32, + 11, + 69, + 4, + 64, + 65, + 34, + 33, + 10, + 12, + 17, + 11, + 32, + 8, + 32, + 14, + 32, + 11, + 107, + 54, + 2, + 12, + 65, + 31, + 33, + 10, + 32, + 8, + 32, + 13, + 32, + 11, + 65, + 31, + 113, + 118, + 54, + 2, + 8, + 32, + 8, + 32, + 12, + 54, + 2, + 16, + 2, + 64, + 2, + 64, + 32, + 12, + 65, + 15, + 77, + 4, + 64, + 32, + 16, + 65, + 201, + 3, + 79, + 13, + 1, + 32, + 1, + 32, + 16, + 106, + 65, + 157, + 210, + 0, + 106, + 32, + 12, + 58, + 0, + 0, + 32, + 8, + 32, + 16, + 65, + 1, + 106, + 54, + 2, + 20, + 65, + 0, + 33, + 11, + 12, + 3, + 11, + 65, + 0, + 32, + 12, + 65, + 16, + 70, + 32, + 16, + 27, + 13, + 18, + 32, + 8, + 65, + 7, + 54, + 2, + 40, + 32, + 8, + 66, + 130, + 128, + 128, + 128, + 48, + 55, + 2, + 32, + 32, + 12, + 65, + 112, + 106, + 34, + 9, + 65, + 2, + 75, + 13, + 1, + 32, + 8, + 32, + 8, + 65, + 32, + 106, + 32, + 9, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 54, + 2, + 24, + 65, + 11, + 33, + 10, + 12, + 18, + 11, + 32, + 16, + 65, + 201, + 3, + 65, + 132, + 184, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 9, + 65, + 3, + 65, + 148, + 184, + 192, + 0, + 16, + 98, + 0, + 11, + 2, + 64, + 32, + 11, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 16, + 0, + 1, + 11, + 11, + 65, + 10, + 33, + 11, + 12, + 15, + 11, + 3, + 64, + 2, + 127, + 32, + 8, + 40, + 2, + 20, + 34, + 10, + 32, + 1, + 40, + 2, + 48, + 73, + 4, + 64, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 2, + 64, + 3, + 64, + 32, + 11, + 65, + 3, + 79, + 4, + 64, + 32, + 8, + 32, + 11, + 65, + 125, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 65, + 3, + 118, + 54, + 2, + 8, + 32, + 10, + 65, + 19, + 79, + 13, + 2, + 32, + 1, + 32, + 10, + 65, + 222, + 183, + 192, + 0, + 106, + 45, + 0, + 0, + 106, + 65, + 248, + 207, + 0, + 106, + 32, + 9, + 65, + 7, + 113, + 58, + 0, + 0, + 32, + 8, + 32, + 10, + 65, + 1, + 106, + 54, + 2, + 20, + 65, + 0, + 33, + 13, + 65, + 0, + 12, + 4, + 11, + 2, + 127, + 32, + 22, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 14, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 14, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 13, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 13, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 12, + 2, + 11, + 32, + 10, + 65, + 19, + 65, + 244, + 183, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 1, + 65, + 19, + 54, + 2, + 48, + 32, + 1, + 32, + 8, + 65, + 8, + 106, + 16, + 9, + 34, + 13, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 11, + 33, + 10, + 2, + 64, + 32, + 13, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 15, + 0, + 1, + 11, + 11, + 65, + 9, + 33, + 11, + 12, + 14, + 11, + 32, + 8, + 40, + 2, + 20, + 33, + 9, + 32, + 8, + 40, + 2, + 4, + 33, + 14, + 3, + 64, + 32, + 9, + 65, + 3, + 79, + 4, + 64, + 32, + 41, + 65, + 0, + 65, + 160, + 2, + 16, + 131, + 1, + 26, + 32, + 8, + 65, + 0, + 54, + 2, + 20, + 65, + 9, + 33, + 10, + 12, + 14, + 11, + 32, + 8, + 65, + 4, + 54, + 2, + 40, + 32, + 8, + 66, + 133, + 128, + 128, + 128, + 208, + 0, + 55, + 2, + 32, + 32, + 8, + 65, + 32, + 106, + 32, + 9, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 33, + 12, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 2, + 127, + 3, + 64, + 32, + 11, + 32, + 12, + 79, + 4, + 64, + 32, + 1, + 32, + 9, + 65, + 2, + 116, + 106, + 65, + 40, + 106, + 32, + 9, + 65, + 1, + 116, + 65, + 216, + 183, + 192, + 0, + 106, + 47, + 1, + 0, + 32, + 8, + 40, + 2, + 8, + 34, + 10, + 65, + 127, + 32, + 12, + 65, + 31, + 113, + 34, + 16, + 116, + 65, + 127, + 115, + 113, + 106, + 54, + 2, + 0, + 32, + 8, + 32, + 11, + 32, + 12, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 34, + 9, + 54, + 2, + 20, + 32, + 8, + 32, + 10, + 32, + 16, + 118, + 54, + 2, + 8, + 65, + 0, + 33, + 13, + 65, + 0, + 12, + 2, + 11, + 2, + 127, + 32, + 22, + 32, + 14, + 32, + 8, + 40, + 2, + 0, + 34, + 10, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 10, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 10, + 45, + 0, + 0, + 33, + 16, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 10, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 16, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 10, + 33, + 11, + 65, + 0, + 11, + 34, + 13, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 13, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 11, + 33, + 10, + 2, + 64, + 32, + 13, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 14, + 0, + 1, + 11, + 11, + 65, + 8, + 33, + 11, + 12, + 13, + 11, + 32, + 8, + 40, + 2, + 4, + 34, + 16, + 32, + 8, + 40, + 2, + 0, + 34, + 11, + 107, + 34, + 12, + 69, + 4, + 64, + 65, + 7, + 33, + 11, + 32, + 26, + 33, + 10, + 12, + 13, + 11, + 2, + 64, + 2, + 64, + 32, + 12, + 32, + 8, + 40, + 2, + 20, + 34, + 14, + 32, + 12, + 32, + 5, + 32, + 15, + 107, + 34, + 9, + 32, + 9, + 32, + 12, + 75, + 27, + 34, + 9, + 32, + 9, + 32, + 14, + 75, + 27, + 34, + 10, + 79, + 4, + 64, + 32, + 10, + 32, + 15, + 106, + 34, + 9, + 32, + 10, + 73, + 13, + 1, + 32, + 9, + 32, + 5, + 75, + 13, + 2, + 32, + 4, + 32, + 15, + 106, + 32, + 11, + 32, + 10, + 16, + 121, + 26, + 2, + 64, + 32, + 12, + 32, + 10, + 65, + 127, + 106, + 77, + 4, + 64, + 32, + 8, + 32, + 16, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 8, + 32, + 10, + 32, + 11, + 106, + 54, + 2, + 0, + 11, + 32, + 8, + 32, + 14, + 32, + 10, + 107, + 54, + 2, + 20, + 65, + 6, + 33, + 10, + 32, + 9, + 33, + 15, + 12, + 14, + 11, + 32, + 10, + 32, + 12, + 65, + 184, + 183, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 15, + 32, + 9, + 65, + 212, + 185, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 9, + 32, + 5, + 65, + 212, + 185, + 192, + 0, + 16, + 99, + 0, + 11, + 65, + 20, + 33, + 10, + 32, + 8, + 40, + 2, + 20, + 69, + 13, + 10, + 65, + 7, + 33, + 10, + 32, + 5, + 32, + 15, + 71, + 13, + 10, + 12, + 1, + 11, + 32, + 5, + 32, + 15, + 71, + 13, + 1, + 11, + 65, + 2, + 33, + 16, + 32, + 5, + 33, + 15, + 12, + 10, + 11, + 32, + 15, + 32, + 5, + 73, + 4, + 64, + 32, + 4, + 32, + 15, + 106, + 32, + 8, + 40, + 2, + 16, + 58, + 0, + 0, + 32, + 8, + 40, + 2, + 12, + 33, + 9, + 32, + 8, + 32, + 8, + 40, + 2, + 20, + 65, + 127, + 106, + 34, + 10, + 54, + 2, + 20, + 65, + 17, + 65, + 6, + 32, + 9, + 27, + 65, + 6, + 32, + 10, + 27, + 33, + 10, + 32, + 15, + 65, + 1, + 106, + 33, + 15, + 12, + 8, + 11, + 12, + 17, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 3, + 64, + 32, + 11, + 65, + 8, + 79, + 4, + 64, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 65, + 255, + 1, + 113, + 54, + 2, + 16, + 32, + 8, + 32, + 11, + 65, + 120, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 8, + 118, + 54, + 2, + 8, + 65, + 18, + 33, + 10, + 12, + 8, + 11, + 2, + 127, + 32, + 22, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 114, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 17, + 33, + 11, + 12, + 7, + 11, + 32, + 8, + 40, + 2, + 20, + 33, + 14, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 3, + 64, + 2, + 64, + 32, + 14, + 65, + 3, + 77, + 4, + 64, + 32, + 8, + 2, + 127, + 32, + 8, + 40, + 2, + 12, + 34, + 11, + 4, + 64, + 3, + 64, + 32, + 11, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 32, + 14, + 106, + 65, + 153, + 210, + 0, + 106, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 58, + 0, + 0, + 32, + 8, + 32, + 11, + 65, + 120, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 8, + 118, + 54, + 2, + 8, + 32, + 14, + 65, + 1, + 106, + 12, + 3, + 11, + 2, + 127, + 32, + 22, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 13, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 13, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 12, + 3, + 11, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 4, + 64, + 65, + 5, + 33, + 11, + 32, + 26, + 33, + 10, + 12, + 11, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 14, + 106, + 65, + 153, + 210, + 0, + 106, + 32, + 9, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 14, + 65, + 1, + 106, + 11, + 34, + 14, + 54, + 2, + 20, + 65, + 0, + 33, + 10, + 65, + 0, + 33, + 13, + 12, + 1, + 11, + 32, + 8, + 32, + 1, + 47, + 0, + 153, + 82, + 34, + 9, + 54, + 2, + 20, + 65, + 30, + 33, + 10, + 32, + 9, + 32, + 1, + 47, + 0, + 155, + 82, + 65, + 255, + 255, + 3, + 115, + 71, + 13, + 7, + 65, + 20, + 33, + 10, + 32, + 9, + 69, + 13, + 7, + 65, + 17, + 65, + 6, + 32, + 8, + 40, + 2, + 12, + 27, + 33, + 10, + 12, + 7, + 11, + 65, + 5, + 33, + 11, + 32, + 13, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 6, + 7, + 0, + 11, + 0, + 11, + 32, + 8, + 40, + 2, + 12, + 33, + 13, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 3, + 64, + 32, + 13, + 65, + 7, + 113, + 33, + 9, + 32, + 13, + 33, + 11, + 3, + 64, + 32, + 11, + 32, + 9, + 79, + 4, + 64, + 32, + 8, + 65, + 0, + 54, + 2, + 20, + 32, + 8, + 32, + 11, + 32, + 9, + 107, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 9, + 118, + 54, + 2, + 8, + 65, + 5, + 33, + 10, + 12, + 7, + 11, + 2, + 127, + 32, + 22, + 32, + 12, + 32, + 8, + 40, + 2, + 0, + 34, + 10, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 10, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 10, + 45, + 0, + 0, + 33, + 10, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 13, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 10, + 32, + 11, + 65, + 31, + 113, + 116, + 114, + 54, + 2, + 8, + 32, + 13, + 33, + 11, + 65, + 0, + 11, + 34, + 10, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 10, + 65, + 255, + 1, + 113, + 69, + 13, + 0, + 11, + 32, + 10, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 10, + 65, + 4, + 33, + 11, + 12, + 5, + 11, + 2, + 64, + 3, + 64, + 32, + 8, + 40, + 2, + 4, + 33, + 10, + 32, + 8, + 40, + 2, + 12, + 33, + 11, + 2, + 127, + 3, + 64, + 32, + 11, + 65, + 3, + 79, + 4, + 64, + 32, + 1, + 32, + 8, + 40, + 2, + 8, + 34, + 9, + 65, + 1, + 113, + 54, + 2, + 16, + 32, + 1, + 32, + 9, + 65, + 1, + 118, + 65, + 3, + 113, + 34, + 12, + 54, + 2, + 20, + 32, + 8, + 32, + 11, + 65, + 125, + 106, + 54, + 2, + 12, + 32, + 8, + 32, + 9, + 65, + 3, + 118, + 54, + 2, + 8, + 65, + 4, + 33, + 10, + 2, + 64, + 2, + 64, + 32, + 12, + 65, + 1, + 107, + 14, + 3, + 0, + 1, + 6, + 10, + 11, + 32, + 1, + 66, + 160, + 130, + 128, + 128, + 128, + 4, + 55, + 2, + 40, + 32, + 36, + 65, + 8, + 65, + 144, + 1, + 16, + 131, + 1, + 26, + 32, + 43, + 65, + 9, + 65, + 240, + 0, + 16, + 131, + 1, + 26, + 32, + 33, + 65, + 16, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 2, + 0, + 32, + 33, + 65, + 8, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 2, + 0, + 32, + 33, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 2, + 0, + 32, + 1, + 66, + 136, + 144, + 160, + 192, + 128, + 129, + 130, + 132, + 8, + 55, + 2, + 208, + 27, + 32, + 31, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 2, + 0, + 32, + 31, + 65, + 8, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 2, + 0, + 32, + 31, + 65, + 16, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 2, + 0, + 32, + 31, + 65, + 24, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 2, + 0, + 32, + 1, + 32, + 8, + 65, + 8, + 106, + 16, + 9, + 34, + 13, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 12, + 3, + 11, + 32, + 8, + 65, + 0, + 54, + 2, + 20, + 65, + 8, + 33, + 10, + 12, + 8, + 11, + 2, + 127, + 32, + 22, + 32, + 10, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 70, + 13, + 0, + 26, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 9, + 45, + 0, + 0, + 33, + 12, + 32, + 8, + 32, + 11, + 65, + 8, + 106, + 34, + 9, + 54, + 2, + 12, + 32, + 8, + 32, + 8, + 40, + 2, + 8, + 32, + 12, + 32, + 11, + 116, + 114, + 54, + 2, + 8, + 32, + 9, + 33, + 11, + 65, + 0, + 11, + 34, + 13, + 65, + 2, + 113, + 69, + 13, + 0, + 11, + 32, + 13, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 11, + 33, + 10, + 2, + 64, + 32, + 13, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 2, + 6, + 0, + 1, + 11, + 11, + 65, + 3, + 33, + 11, + 12, + 5, + 11, + 65, + 25, + 33, + 10, + 12, + 3, + 11, + 32, + 8, + 40, + 2, + 0, + 34, + 9, + 32, + 8, + 40, + 2, + 4, + 70, + 4, + 64, + 65, + 1, + 33, + 11, + 32, + 26, + 33, + 10, + 12, + 4, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 54, + 2, + 4, + 65, + 2, + 33, + 10, + 12, + 2, + 11, + 32, + 1, + 65, + 1, + 54, + 2, + 24, + 32, + 1, + 65, + 1, + 54, + 2, + 12, + 32, + 1, + 66, + 0, + 55, + 2, + 4, + 32, + 8, + 65, + 24, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 8, + 65, + 16, + 106, + 66, + 0, + 55, + 3, + 0, + 32, + 8, + 66, + 0, + 55, + 3, + 8, + 32, + 40, + 33, + 10, + 12, + 1, + 11, + 32, + 1, + 40, + 2, + 4, + 34, + 9, + 65, + 15, + 113, + 33, + 11, + 32, + 9, + 65, + 8, + 116, + 33, + 14, + 32, + 9, + 65, + 4, + 118, + 65, + 8, + 106, + 65, + 31, + 113, + 33, + 10, + 32, + 8, + 40, + 2, + 0, + 33, + 9, + 32, + 8, + 40, + 2, + 4, + 33, + 12, + 2, + 64, + 2, + 64, + 32, + 32, + 69, + 4, + 64, + 32, + 9, + 32, + 12, + 71, + 13, + 1, + 12, + 2, + 11, + 32, + 10, + 65, + 16, + 79, + 4, + 64, + 32, + 9, + 32, + 12, + 70, + 13, + 2, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 54, + 2, + 8, + 65, + 28, + 33, + 10, + 12, + 3, + 11, + 32, + 9, + 32, + 12, + 70, + 13, + 1, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 34, + 9, + 54, + 2, + 8, + 65, + 28, + 65, + 28, + 65, + 3, + 32, + 9, + 32, + 14, + 114, + 65, + 31, + 112, + 32, + 9, + 65, + 32, + 113, + 114, + 27, + 32, + 11, + 65, + 8, + 71, + 27, + 33, + 10, + 12, + 2, + 11, + 32, + 8, + 32, + 9, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 32, + 9, + 45, + 0, + 0, + 34, + 9, + 54, + 2, + 8, + 65, + 28, + 65, + 28, + 65, + 28, + 65, + 3, + 32, + 9, + 32, + 14, + 114, + 65, + 31, + 112, + 32, + 9, + 65, + 32, + 113, + 114, + 27, + 32, + 11, + 65, + 8, + 71, + 27, + 65, + 28, + 32, + 38, + 32, + 10, + 118, + 27, + 32, + 10, + 65, + 15, + 75, + 27, + 33, + 10, + 12, + 1, + 11, + 11, + 65, + 2, + 33, + 11, + 32, + 26, + 33, + 10, + 11, + 65, + 0, + 33, + 2, + 32, + 10, + 65, + 255, + 1, + 113, + 34, + 9, + 65, + 1, + 70, + 13, + 1, + 32, + 10, + 33, + 16, + 32, + 9, + 65, + 252, + 1, + 70, + 13, + 2, + 11, + 32, + 8, + 32, + 8, + 40, + 2, + 12, + 34, + 2, + 32, + 8, + 40, + 2, + 0, + 32, + 8, + 40, + 2, + 4, + 107, + 32, + 3, + 106, + 34, + 9, + 32, + 2, + 65, + 3, + 118, + 34, + 2, + 32, + 2, + 32, + 9, + 75, + 27, + 34, + 2, + 65, + 3, + 116, + 107, + 54, + 2, + 12, + 12, + 1, + 11, + 65, + 2, + 65, + 1, + 32, + 5, + 32, + 15, + 70, + 27, + 33, + 16, + 11, + 32, + 1, + 32, + 11, + 58, + 0, + 152, + 82, + 32, + 1, + 32, + 8, + 40, + 2, + 12, + 34, + 9, + 54, + 2, + 0, + 32, + 1, + 32, + 8, + 40, + 2, + 16, + 54, + 2, + 28, + 32, + 1, + 32, + 8, + 41, + 2, + 20, + 55, + 2, + 32, + 32, + 1, + 32, + 8, + 40, + 2, + 8, + 65, + 127, + 32, + 9, + 65, + 31, + 113, + 116, + 65, + 127, + 115, + 113, + 54, + 2, + 52, + 2, + 64, + 32, + 7, + 65, + 9, + 113, + 65, + 0, + 32, + 16, + 65, + 24, + 116, + 65, + 24, + 117, + 65, + 127, + 74, + 27, + 69, + 4, + 64, + 32, + 15, + 32, + 6, + 107, + 33, + 15, + 12, + 1, + 11, + 32, + 15, + 32, + 6, + 73, + 13, + 2, + 32, + 15, + 32, + 5, + 75, + 13, + 3, + 32, + 8, + 32, + 1, + 40, + 2, + 24, + 34, + 5, + 59, + 1, + 32, + 32, + 8, + 32, + 5, + 65, + 16, + 118, + 59, + 1, + 34, + 32, + 8, + 65, + 32, + 106, + 32, + 4, + 32, + 6, + 106, + 32, + 15, + 32, + 6, + 107, + 34, + 15, + 16, + 30, + 32, + 1, + 32, + 8, + 40, + 2, + 32, + 34, + 4, + 54, + 2, + 24, + 32, + 35, + 69, + 32, + 16, + 65, + 255, + 1, + 113, + 114, + 13, + 0, + 65, + 0, + 65, + 126, + 32, + 4, + 32, + 1, + 40, + 2, + 12, + 70, + 27, + 33, + 16, + 11, + 32, + 0, + 32, + 16, + 58, + 0, + 4, + 32, + 0, + 32, + 15, + 54, + 2, + 8, + 32, + 0, + 32, + 8, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 2, + 32, + 8, + 40, + 2, + 4, + 106, + 107, + 54, + 2, + 0, + 11, + 32, + 8, + 65, + 48, + 106, + 36, + 0, + 15, + 11, + 32, + 6, + 32, + 15, + 65, + 200, + 183, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 15, + 32, + 5, + 65, + 200, + 183, + 192, + 0, + 16, + 99, + 0, + 11, + 65, + 2, + 32, + 9, + 65, + 136, + 177, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 12, + 65, + 192, + 4, + 65, + 248, + 176, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 15, + 32, + 5, + 65, + 196, + 185, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 9, + 65, + 192, + 4, + 65, + 248, + 176, + 192, + 0, + 16, + 98, + 0, + 11, + 183, + 45, + 2, + 13, + 127, + 2, + 126, + 35, + 0, + 65, + 144, + 5, + 107, + 34, + 9, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 4, + 64, + 32, + 0, + 65, + 128, + 27, + 106, + 65, + 8, + 65, + 144, + 1, + 16, + 131, + 1, + 26, + 32, + 0, + 65, + 144, + 28, + 106, + 65, + 9, + 65, + 240, + 0, + 16, + 131, + 1, + 26, + 32, + 0, + 65, + 144, + 29, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 1, + 0, + 32, + 0, + 65, + 136, + 29, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 1, + 0, + 32, + 0, + 65, + 128, + 29, + 106, + 66, + 135, + 142, + 156, + 184, + 240, + 224, + 193, + 131, + 7, + 55, + 1, + 0, + 32, + 0, + 65, + 160, + 29, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 1, + 0, + 32, + 0, + 65, + 152, + 29, + 106, + 66, + 136, + 144, + 160, + 192, + 128, + 129, + 130, + 132, + 8, + 55, + 1, + 0, + 32, + 0, + 65, + 168, + 29, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 1, + 0, + 32, + 0, + 65, + 176, + 29, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 1, + 0, + 32, + 0, + 65, + 184, + 29, + 106, + 66, + 133, + 138, + 148, + 168, + 208, + 160, + 193, + 130, + 5, + 55, + 1, + 0, + 32, + 0, + 65, + 0, + 65, + 160, + 2, + 65, + 15, + 65, + 1, + 16, + 6, + 32, + 0, + 65, + 1, + 65, + 32, + 65, + 15, + 65, + 1, + 16, + 6, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 34, + 3, + 65, + 2, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 1, + 32, + 3, + 65, + 31, + 113, + 116, + 114, + 34, + 3, + 54, + 2, + 12, + 32, + 5, + 65, + 8, + 73, + 13, + 1, + 32, + 1, + 40, + 2, + 8, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 73, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 5, + 65, + 7, + 75, + 13, + 1, + 12, + 3, + 11, + 11, + 12, + 3, + 11, + 32, + 0, + 65, + 1, + 59, + 1, + 128, + 4, + 32, + 9, + 32, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 0, + 65, + 160, + 2, + 65, + 15, + 65, + 0, + 16, + 6, + 32, + 0, + 65, + 1, + 65, + 32, + 65, + 15, + 65, + 0, + 16, + 6, + 65, + 158, + 2, + 2, + 127, + 65, + 0, + 32, + 0, + 65, + 157, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 1, + 32, + 0, + 65, + 156, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 2, + 32, + 0, + 65, + 155, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 3, + 32, + 0, + 65, + 154, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 4, + 32, + 0, + 65, + 153, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 5, + 32, + 0, + 65, + 152, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 6, + 32, + 0, + 65, + 151, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 7, + 32, + 0, + 65, + 150, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 8, + 32, + 0, + 65, + 149, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 9, + 32, + 0, + 65, + 148, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 10, + 32, + 0, + 65, + 147, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 11, + 32, + 0, + 65, + 146, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 12, + 32, + 0, + 65, + 145, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 13, + 32, + 0, + 65, + 144, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 14, + 32, + 0, + 65, + 143, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 15, + 32, + 0, + 65, + 142, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 16, + 32, + 0, + 65, + 141, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 17, + 32, + 0, + 65, + 140, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 18, + 32, + 0, + 65, + 139, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 19, + 32, + 0, + 65, + 138, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 20, + 32, + 0, + 65, + 137, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 21, + 32, + 0, + 65, + 136, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 22, + 32, + 0, + 65, + 135, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 23, + 32, + 0, + 65, + 134, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 24, + 32, + 0, + 65, + 133, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 25, + 32, + 0, + 65, + 132, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 26, + 32, + 0, + 65, + 131, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 27, + 32, + 0, + 65, + 130, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 26, + 65, + 28, + 65, + 29, + 32, + 0, + 65, + 129, + 29, + 106, + 45, + 0, + 0, + 27, + 11, + 34, + 14, + 107, + 33, + 3, + 2, + 64, + 32, + 0, + 65, + 189, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 1, + 33, + 8, + 32, + 0, + 65, + 188, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 2, + 33, + 8, + 32, + 0, + 65, + 187, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 3, + 33, + 8, + 32, + 0, + 65, + 186, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 4, + 33, + 8, + 32, + 0, + 65, + 185, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 5, + 33, + 8, + 32, + 0, + 65, + 184, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 6, + 33, + 8, + 32, + 0, + 65, + 183, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 7, + 33, + 8, + 32, + 0, + 65, + 182, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 8, + 33, + 8, + 32, + 0, + 65, + 181, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 9, + 33, + 8, + 32, + 0, + 65, + 180, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 10, + 33, + 8, + 32, + 0, + 65, + 179, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 11, + 33, + 8, + 32, + 0, + 65, + 178, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 12, + 33, + 8, + 32, + 0, + 65, + 177, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 13, + 33, + 8, + 32, + 0, + 65, + 176, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 14, + 33, + 8, + 32, + 0, + 65, + 175, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 15, + 33, + 8, + 32, + 0, + 65, + 174, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 16, + 33, + 8, + 32, + 0, + 65, + 173, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 17, + 33, + 8, + 32, + 0, + 65, + 172, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 18, + 33, + 8, + 32, + 0, + 65, + 171, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 19, + 33, + 8, + 32, + 0, + 65, + 170, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 20, + 33, + 8, + 32, + 0, + 65, + 169, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 21, + 33, + 8, + 32, + 0, + 65, + 168, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 22, + 33, + 8, + 32, + 0, + 65, + 167, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 23, + 33, + 8, + 32, + 0, + 65, + 166, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 24, + 33, + 8, + 32, + 0, + 65, + 165, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 25, + 33, + 8, + 32, + 0, + 65, + 164, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 26, + 33, + 8, + 32, + 0, + 65, + 163, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 27, + 33, + 8, + 32, + 0, + 65, + 162, + 29, + 106, + 45, + 0, + 0, + 13, + 0, + 65, + 28, + 65, + 29, + 32, + 0, + 65, + 161, + 29, + 106, + 45, + 0, + 0, + 27, + 33, + 8, + 11, + 32, + 9, + 65, + 4, + 106, + 65, + 0, + 65, + 192, + 2, + 16, + 131, + 1, + 26, + 32, + 9, + 65, + 196, + 2, + 106, + 65, + 0, + 65, + 192, + 2, + 16, + 131, + 1, + 26, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 65, + 193, + 2, + 73, + 4, + 64, + 32, + 3, + 65, + 161, + 2, + 79, + 13, + 1, + 32, + 9, + 65, + 4, + 106, + 32, + 0, + 65, + 128, + 27, + 106, + 32, + 3, + 16, + 121, + 26, + 65, + 30, + 32, + 8, + 107, + 34, + 6, + 32, + 3, + 106, + 34, + 4, + 32, + 3, + 73, + 13, + 2, + 32, + 4, + 65, + 193, + 2, + 79, + 13, + 3, + 32, + 6, + 65, + 161, + 2, + 79, + 13, + 4, + 32, + 9, + 65, + 4, + 106, + 32, + 3, + 106, + 32, + 0, + 65, + 160, + 29, + 106, + 32, + 6, + 16, + 121, + 26, + 32, + 0, + 65, + 128, + 9, + 106, + 65, + 0, + 65, + 38, + 16, + 131, + 1, + 26, + 32, + 0, + 33, + 6, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 69, + 13, + 0, + 65, + 188, + 2, + 32, + 8, + 32, + 14, + 106, + 107, + 33, + 15, + 32, + 9, + 40, + 2, + 0, + 33, + 11, + 32, + 9, + 65, + 4, + 106, + 33, + 13, + 32, + 0, + 33, + 10, + 65, + 0, + 33, + 3, + 65, + 255, + 1, + 33, + 7, + 65, + 0, + 33, + 4, + 3, + 64, + 32, + 7, + 33, + 12, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 13, + 45, + 0, + 0, + 34, + 7, + 69, + 4, + 64, + 2, + 64, + 32, + 5, + 69, + 4, + 64, + 32, + 4, + 33, + 6, + 12, + 1, + 11, + 32, + 5, + 65, + 2, + 77, + 4, + 64, + 32, + 10, + 32, + 12, + 65, + 255, + 1, + 113, + 65, + 1, + 116, + 106, + 65, + 128, + 9, + 106, + 34, + 6, + 32, + 6, + 47, + 1, + 0, + 32, + 5, + 106, + 59, + 1, + 0, + 32, + 9, + 32, + 12, + 58, + 0, + 134, + 5, + 32, + 9, + 32, + 12, + 58, + 0, + 133, + 5, + 32, + 9, + 32, + 12, + 58, + 0, + 132, + 5, + 32, + 4, + 32, + 5, + 106, + 34, + 6, + 32, + 4, + 73, + 32, + 6, + 65, + 192, + 2, + 75, + 114, + 13, + 11, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 32, + 9, + 65, + 132, + 5, + 106, + 32, + 5, + 16, + 121, + 26, + 12, + 1, + 11, + 32, + 10, + 65, + 160, + 9, + 106, + 34, + 6, + 32, + 6, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 10, + 32, + 4, + 65, + 2, + 106, + 34, + 6, + 65, + 192, + 2, + 75, + 13, + 10, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 5, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 16, + 58, + 0, + 0, + 11, + 65, + 0, + 33, + 5, + 32, + 3, + 65, + 1, + 106, + 34, + 3, + 65, + 138, + 1, + 70, + 13, + 1, + 32, + 6, + 33, + 4, + 12, + 6, + 11, + 2, + 64, + 32, + 3, + 69, + 4, + 64, + 32, + 4, + 33, + 6, + 12, + 1, + 11, + 32, + 3, + 65, + 2, + 77, + 4, + 64, + 32, + 10, + 32, + 10, + 47, + 1, + 128, + 9, + 32, + 3, + 106, + 59, + 1, + 128, + 9, + 32, + 3, + 32, + 4, + 106, + 34, + 6, + 32, + 4, + 73, + 32, + 6, + 65, + 192, + 2, + 75, + 114, + 13, + 10, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 65, + 0, + 32, + 3, + 16, + 131, + 1, + 26, + 12, + 1, + 11, + 32, + 3, + 65, + 10, + 77, + 4, + 64, + 32, + 10, + 65, + 162, + 9, + 106, + 34, + 6, + 32, + 6, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 10, + 32, + 4, + 65, + 2, + 106, + 34, + 6, + 65, + 192, + 2, + 75, + 13, + 10, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 3, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 17, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 10, + 65, + 164, + 9, + 106, + 34, + 6, + 32, + 6, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 9, + 32, + 4, + 65, + 2, + 106, + 34, + 6, + 65, + 192, + 2, + 75, + 13, + 9, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 3, + 65, + 117, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 18, + 58, + 0, + 0, + 11, + 32, + 7, + 32, + 12, + 65, + 255, + 1, + 113, + 34, + 3, + 70, + 13, + 3, + 32, + 5, + 69, + 13, + 2, + 32, + 5, + 65, + 2, + 75, + 13, + 1, + 32, + 10, + 32, + 3, + 65, + 1, + 116, + 106, + 65, + 128, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 32, + 5, + 106, + 59, + 1, + 0, + 32, + 9, + 32, + 12, + 58, + 0, + 134, + 5, + 32, + 9, + 32, + 12, + 58, + 0, + 133, + 5, + 32, + 9, + 32, + 12, + 58, + 0, + 132, + 5, + 32, + 5, + 32, + 6, + 106, + 34, + 3, + 32, + 6, + 73, + 32, + 3, + 65, + 192, + 2, + 75, + 114, + 13, + 8, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 6, + 106, + 32, + 9, + 65, + 132, + 5, + 106, + 32, + 5, + 16, + 121, + 26, + 32, + 3, + 33, + 6, + 32, + 11, + 33, + 10, + 12, + 2, + 11, + 32, + 11, + 32, + 11, + 47, + 1, + 164, + 9, + 65, + 1, + 106, + 59, + 1, + 164, + 9, + 32, + 6, + 65, + 125, + 75, + 13, + 7, + 32, + 6, + 65, + 2, + 106, + 34, + 4, + 65, + 192, + 2, + 75, + 13, + 7, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 6, + 106, + 65, + 146, + 254, + 1, + 59, + 0, + 0, + 12, + 3, + 11, + 32, + 10, + 65, + 160, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 6, + 65, + 125, + 75, + 13, + 6, + 32, + 6, + 65, + 2, + 106, + 34, + 3, + 65, + 192, + 2, + 75, + 13, + 6, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 6, + 106, + 34, + 6, + 32, + 5, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 6, + 65, + 16, + 58, + 0, + 0, + 32, + 3, + 33, + 6, + 11, + 32, + 10, + 32, + 7, + 65, + 1, + 116, + 106, + 65, + 128, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 6, + 65, + 1, + 106, + 34, + 4, + 32, + 6, + 73, + 32, + 4, + 65, + 192, + 2, + 75, + 114, + 13, + 5, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 6, + 106, + 32, + 7, + 58, + 0, + 0, + 12, + 1, + 11, + 65, + 0, + 33, + 3, + 32, + 5, + 65, + 1, + 106, + 34, + 5, + 65, + 6, + 71, + 4, + 64, + 32, + 6, + 33, + 4, + 12, + 2, + 11, + 32, + 10, + 65, + 160, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 6, + 65, + 125, + 75, + 13, + 4, + 32, + 6, + 65, + 2, + 106, + 34, + 4, + 65, + 192, + 2, + 75, + 13, + 4, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 6, + 106, + 65, + 144, + 6, + 59, + 0, + 0, + 11, + 65, + 0, + 33, + 3, + 65, + 0, + 33, + 5, + 11, + 32, + 13, + 65, + 1, + 106, + 33, + 13, + 32, + 11, + 33, + 10, + 32, + 15, + 65, + 127, + 106, + 34, + 15, + 13, + 0, + 11, + 32, + 9, + 40, + 2, + 0, + 33, + 6, + 32, + 5, + 4, + 64, + 32, + 5, + 65, + 2, + 77, + 4, + 64, + 32, + 6, + 32, + 7, + 65, + 1, + 116, + 106, + 65, + 128, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 32, + 5, + 106, + 59, + 1, + 0, + 32, + 9, + 32, + 7, + 58, + 0, + 134, + 5, + 32, + 9, + 32, + 7, + 58, + 0, + 133, + 5, + 32, + 9, + 32, + 7, + 58, + 0, + 132, + 5, + 32, + 4, + 32, + 5, + 106, + 34, + 10, + 32, + 4, + 73, + 32, + 10, + 65, + 192, + 2, + 75, + 114, + 13, + 3, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 32, + 9, + 65, + 132, + 5, + 106, + 32, + 5, + 16, + 121, + 26, + 32, + 9, + 40, + 2, + 0, + 33, + 6, + 12, + 2, + 11, + 32, + 6, + 65, + 160, + 9, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 2, + 32, + 4, + 65, + 2, + 106, + 34, + 10, + 65, + 192, + 2, + 75, + 13, + 2, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 3, + 32, + 5, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 3, + 65, + 16, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 3, + 69, + 4, + 64, + 32, + 4, + 33, + 10, + 12, + 1, + 11, + 32, + 3, + 65, + 2, + 77, + 4, + 64, + 32, + 6, + 32, + 6, + 47, + 1, + 128, + 9, + 32, + 3, + 106, + 59, + 1, + 128, + 9, + 32, + 3, + 32, + 4, + 106, + 34, + 10, + 32, + 4, + 73, + 32, + 10, + 65, + 192, + 2, + 75, + 114, + 13, + 2, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 65, + 0, + 32, + 3, + 16, + 131, + 1, + 26, + 12, + 1, + 11, + 32, + 3, + 65, + 10, + 77, + 4, + 64, + 32, + 6, + 65, + 162, + 9, + 106, + 34, + 7, + 32, + 7, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 2, + 32, + 4, + 65, + 2, + 106, + 34, + 10, + 65, + 192, + 2, + 75, + 13, + 2, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 3, + 65, + 125, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 17, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 6, + 65, + 164, + 9, + 106, + 34, + 7, + 32, + 7, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 4, + 65, + 125, + 75, + 13, + 1, + 32, + 4, + 65, + 2, + 106, + 34, + 10, + 65, + 192, + 2, + 75, + 13, + 1, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 4, + 106, + 34, + 4, + 32, + 3, + 65, + 117, + 106, + 58, + 0, + 1, + 32, + 4, + 65, + 18, + 58, + 0, + 0, + 11, + 32, + 6, + 65, + 2, + 65, + 19, + 65, + 7, + 65, + 0, + 16, + 6, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 34, + 3, + 65, + 2, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 2, + 32, + 3, + 65, + 31, + 113, + 116, + 114, + 34, + 7, + 54, + 2, + 12, + 32, + 5, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 79, + 13, + 9, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 5, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 65, + 29, + 32, + 14, + 107, + 34, + 3, + 65, + 32, + 79, + 13, + 14, + 32, + 1, + 32, + 5, + 65, + 5, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 1, + 32, + 3, + 32, + 5, + 116, + 32, + 7, + 114, + 34, + 6, + 54, + 2, + 12, + 32, + 5, + 65, + 3, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 79, + 13, + 10, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 4, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 65, + 29, + 32, + 8, + 107, + 34, + 3, + 65, + 32, + 79, + 13, + 14, + 32, + 1, + 32, + 4, + 65, + 5, + 106, + 34, + 7, + 54, + 2, + 16, + 32, + 1, + 32, + 3, + 32, + 4, + 116, + 32, + 6, + 114, + 34, + 6, + 54, + 2, + 12, + 32, + 4, + 65, + 3, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 79, + 13, + 11, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 16, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 65, + 0, + 33, + 4, + 65, + 0, + 33, + 3, + 32, + 9, + 40, + 2, + 0, + 34, + 5, + 65, + 207, + 31, + 106, + 45, + 0, + 0, + 13, + 10, + 65, + 1, + 33, + 3, + 32, + 5, + 65, + 193, + 31, + 106, + 45, + 0, + 0, + 69, + 13, + 1, + 12, + 10, + 11, + 65, + 2, + 33, + 5, + 12, + 11, + 11, + 65, + 2, + 33, + 3, + 32, + 5, + 65, + 206, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 3, + 33, + 3, + 32, + 5, + 65, + 194, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 4, + 33, + 3, + 32, + 5, + 65, + 205, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 5, + 33, + 3, + 32, + 5, + 65, + 195, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 6, + 33, + 3, + 32, + 5, + 65, + 204, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 7, + 33, + 3, + 32, + 5, + 65, + 196, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 8, + 33, + 3, + 32, + 5, + 65, + 203, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 9, + 33, + 3, + 32, + 5, + 65, + 197, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 10, + 33, + 3, + 32, + 5, + 65, + 202, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 11, + 33, + 3, + 32, + 5, + 65, + 198, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 12, + 33, + 3, + 32, + 5, + 65, + 201, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 13, + 33, + 3, + 32, + 5, + 65, + 199, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 14, + 33, + 3, + 32, + 5, + 65, + 200, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 15, + 33, + 3, + 32, + 5, + 65, + 192, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 16, + 33, + 3, + 32, + 5, + 65, + 210, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 17, + 33, + 3, + 32, + 5, + 65, + 209, + 31, + 106, + 45, + 0, + 0, + 13, + 8, + 65, + 18, + 65, + 19, + 32, + 5, + 65, + 208, + 31, + 106, + 45, + 0, + 0, + 27, + 33, + 3, + 12, + 8, + 11, + 32, + 3, + 65, + 192, + 2, + 65, + 132, + 152, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 3, + 65, + 160, + 2, + 65, + 148, + 152, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 3, + 32, + 4, + 65, + 164, + 152, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 4, + 65, + 192, + 2, + 65, + 164, + 152, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 6, + 65, + 160, + 2, + 65, + 180, + 152, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 3, + 32, + 6, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 3, + 32, + 4, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 3, + 32, + 4, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 4, + 33, + 13, + 2, + 64, + 2, + 64, + 65, + 19, + 32, + 3, + 107, + 34, + 5, + 65, + 5, + 79, + 4, + 64, + 32, + 5, + 33, + 13, + 65, + 15, + 32, + 3, + 107, + 34, + 4, + 65, + 16, + 79, + 13, + 6, + 11, + 32, + 1, + 32, + 7, + 65, + 4, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 1, + 32, + 4, + 32, + 7, + 65, + 31, + 113, + 116, + 32, + 6, + 114, + 34, + 3, + 54, + 2, + 12, + 32, + 5, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 79, + 13, + 6, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 5, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 13, + 65, + 20, + 79, + 13, + 1, + 11, + 32, + 13, + 69, + 13, + 1, + 65, + 196, + 152, + 192, + 0, + 33, + 7, + 32, + 13, + 65, + 196, + 152, + 192, + 0, + 106, + 33, + 11, + 32, + 9, + 40, + 2, + 0, + 33, + 8, + 3, + 64, + 32, + 8, + 32, + 7, + 45, + 0, + 0, + 106, + 65, + 192, + 31, + 106, + 45, + 0, + 0, + 34, + 4, + 65, + 248, + 1, + 113, + 13, + 6, + 32, + 1, + 32, + 5, + 65, + 3, + 106, + 34, + 6, + 54, + 2, + 16, + 32, + 1, + 32, + 4, + 32, + 5, + 65, + 31, + 113, + 116, + 32, + 3, + 114, + 34, + 3, + 54, + 2, + 12, + 2, + 64, + 32, + 6, + 65, + 8, + 73, + 4, + 64, + 32, + 6, + 33, + 5, + 12, + 1, + 11, + 32, + 1, + 40, + 2, + 8, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 79, + 13, + 7, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 5, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 7, + 65, + 1, + 106, + 34, + 7, + 32, + 11, + 71, + 13, + 0, + 11, + 12, + 1, + 11, + 32, + 13, + 65, + 19, + 65, + 216, + 152, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 10, + 69, + 13, + 0, + 65, + 0, + 33, + 7, + 32, + 9, + 40, + 2, + 0, + 33, + 8, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 7, + 65, + 191, + 2, + 77, + 4, + 64, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 7, + 106, + 45, + 0, + 0, + 34, + 11, + 65, + 19, + 79, + 13, + 4, + 32, + 8, + 32, + 11, + 65, + 1, + 116, + 106, + 65, + 192, + 22, + 106, + 47, + 1, + 0, + 34, + 6, + 32, + 8, + 32, + 11, + 106, + 65, + 192, + 31, + 106, + 45, + 0, + 0, + 34, + 4, + 65, + 31, + 113, + 118, + 13, + 10, + 32, + 1, + 32, + 4, + 32, + 5, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 1, + 32, + 6, + 32, + 5, + 65, + 31, + 113, + 116, + 32, + 3, + 114, + 34, + 3, + 54, + 2, + 12, + 32, + 4, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 79, + 13, + 7, + 32, + 1, + 40, + 2, + 0, + 32, + 5, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 4, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 7, + 65, + 1, + 106, + 33, + 6, + 2, + 127, + 32, + 11, + 65, + 16, + 73, + 4, + 64, + 32, + 4, + 33, + 5, + 32, + 6, + 12, + 1, + 11, + 32, + 7, + 65, + 190, + 2, + 75, + 13, + 3, + 32, + 9, + 65, + 196, + 2, + 106, + 32, + 6, + 106, + 45, + 0, + 0, + 33, + 6, + 32, + 9, + 65, + 7, + 54, + 2, + 140, + 5, + 32, + 9, + 66, + 130, + 128, + 128, + 128, + 48, + 55, + 2, + 132, + 5, + 32, + 11, + 65, + 112, + 106, + 34, + 5, + 65, + 2, + 75, + 13, + 4, + 32, + 6, + 32, + 9, + 65, + 132, + 5, + 106, + 32, + 5, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 34, + 5, + 65, + 31, + 113, + 118, + 13, + 11, + 32, + 1, + 32, + 4, + 32, + 5, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 1, + 32, + 6, + 32, + 4, + 116, + 32, + 3, + 114, + 34, + 3, + 54, + 2, + 12, + 32, + 5, + 65, + 8, + 79, + 4, + 64, + 32, + 1, + 40, + 2, + 8, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 79, + 13, + 9, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 3, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 5, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 7, + 65, + 2, + 106, + 11, + 34, + 7, + 32, + 10, + 73, + 13, + 1, + 12, + 7, + 11, + 11, + 32, + 7, + 65, + 192, + 2, + 65, + 232, + 152, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 192, + 2, + 65, + 192, + 2, + 65, + 180, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 65, + 3, + 65, + 196, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 248, + 152, + 192, + 0, + 65, + 43, + 65, + 164, + 153, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 5, + 32, + 6, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 12, + 2, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 0, + 34, + 11, + 65, + 129, + 128, + 4, + 73, + 4, + 64, + 32, + 3, + 173, + 33, + 17, + 32, + 11, + 69, + 13, + 5, + 32, + 2, + 65, + 16, + 106, + 33, + 13, + 65, + 1, + 33, + 6, + 65, + 0, + 33, + 8, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 127, + 32, + 6, + 65, + 1, + 71, + 4, + 64, + 32, + 8, + 33, + 10, + 32, + 6, + 12, + 1, + 11, + 32, + 8, + 65, + 1, + 106, + 33, + 10, + 32, + 2, + 32, + 8, + 106, + 65, + 16, + 106, + 45, + 0, + 0, + 65, + 128, + 2, + 114, + 11, + 34, + 7, + 65, + 1, + 113, + 4, + 64, + 32, + 10, + 32, + 11, + 79, + 13, + 4, + 32, + 10, + 65, + 1, + 106, + 34, + 6, + 32, + 11, + 79, + 13, + 10, + 32, + 10, + 65, + 2, + 106, + 34, + 8, + 32, + 11, + 79, + 13, + 11, + 32, + 2, + 32, + 10, + 106, + 65, + 16, + 106, + 45, + 0, + 0, + 34, + 14, + 65, + 1, + 116, + 65, + 164, + 154, + 192, + 0, + 106, + 47, + 1, + 0, + 34, + 3, + 65, + 159, + 2, + 75, + 13, + 5, + 32, + 14, + 65, + 248, + 158, + 192, + 0, + 106, + 45, + 0, + 0, + 34, + 4, + 65, + 16, + 75, + 13, + 6, + 32, + 0, + 32, + 3, + 106, + 65, + 128, + 27, + 106, + 45, + 0, + 0, + 33, + 16, + 32, + 0, + 32, + 3, + 65, + 1, + 116, + 106, + 65, + 192, + 13, + 106, + 51, + 1, + 0, + 2, + 127, + 32, + 6, + 32, + 13, + 106, + 45, + 0, + 0, + 32, + 8, + 32, + 13, + 106, + 45, + 0, + 0, + 34, + 8, + 65, + 8, + 116, + 114, + 34, + 3, + 65, + 255, + 3, + 77, + 4, + 64, + 32, + 3, + 65, + 136, + 161, + 192, + 0, + 106, + 33, + 15, + 32, + 3, + 65, + 136, + 165, + 192, + 0, + 106, + 12, + 1, + 11, + 32, + 3, + 65, + 16, + 116, + 65, + 16, + 117, + 65, + 0, + 72, + 13, + 8, + 32, + 8, + 65, + 136, + 169, + 192, + 0, + 106, + 33, + 15, + 32, + 8, + 65, + 152, + 170, + 192, + 0, + 106, + 11, + 45, + 0, + 0, + 34, + 12, + 65, + 16, + 75, + 13, + 8, + 32, + 7, + 65, + 1, + 118, + 33, + 6, + 32, + 10, + 65, + 3, + 106, + 33, + 8, + 32, + 5, + 65, + 63, + 113, + 173, + 134, + 32, + 17, + 132, + 32, + 4, + 65, + 2, + 116, + 65, + 180, + 158, + 192, + 0, + 106, + 53, + 2, + 0, + 32, + 14, + 173, + 131, + 32, + 5, + 32, + 16, + 106, + 34, + 7, + 65, + 63, + 113, + 173, + 134, + 132, + 32, + 0, + 32, + 15, + 45, + 0, + 0, + 34, + 10, + 65, + 1, + 116, + 106, + 65, + 128, + 18, + 106, + 51, + 1, + 0, + 32, + 4, + 32, + 7, + 106, + 34, + 4, + 65, + 63, + 113, + 173, + 134, + 132, + 32, + 12, + 65, + 2, + 116, + 65, + 180, + 158, + 192, + 0, + 106, + 53, + 2, + 0, + 32, + 3, + 173, + 131, + 32, + 4, + 32, + 0, + 32, + 10, + 106, + 65, + 160, + 29, + 106, + 45, + 0, + 0, + 106, + 34, + 3, + 65, + 63, + 113, + 173, + 134, + 132, + 33, + 17, + 32, + 3, + 32, + 12, + 106, + 33, + 4, + 12, + 1, + 11, + 32, + 10, + 32, + 13, + 106, + 33, + 12, + 32, + 10, + 65, + 3, + 106, + 33, + 8, + 32, + 10, + 32, + 10, + 32, + 11, + 32, + 10, + 32, + 11, + 75, + 27, + 34, + 14, + 107, + 33, + 15, + 65, + 0, + 33, + 3, + 32, + 5, + 33, + 4, + 3, + 64, + 32, + 3, + 65, + 3, + 70, + 4, + 64, + 32, + 7, + 33, + 6, + 12, + 2, + 11, + 32, + 3, + 32, + 15, + 106, + 69, + 13, + 2, + 32, + 7, + 65, + 1, + 118, + 33, + 6, + 32, + 0, + 32, + 3, + 32, + 12, + 106, + 45, + 0, + 0, + 34, + 16, + 65, + 1, + 116, + 106, + 65, + 192, + 13, + 106, + 51, + 1, + 0, + 32, + 4, + 65, + 63, + 113, + 173, + 134, + 32, + 17, + 132, + 33, + 17, + 32, + 3, + 65, + 1, + 106, + 33, + 5, + 32, + 4, + 32, + 0, + 32, + 16, + 106, + 65, + 128, + 27, + 106, + 45, + 0, + 0, + 106, + 33, + 4, + 32, + 3, + 32, + 10, + 106, + 65, + 1, + 106, + 32, + 11, + 73, + 4, + 64, + 32, + 7, + 65, + 2, + 113, + 32, + 5, + 33, + 3, + 32, + 6, + 33, + 7, + 69, + 13, + 1, + 11, + 11, + 32, + 5, + 32, + 10, + 106, + 33, + 8, + 11, + 32, + 1, + 40, + 2, + 8, + 34, + 3, + 65, + 8, + 106, + 33, + 7, + 32, + 3, + 65, + 120, + 79, + 13, + 10, + 32, + 1, + 40, + 2, + 4, + 34, + 10, + 32, + 7, + 73, + 13, + 11, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 17, + 55, + 0, + 0, + 65, + 2, + 33, + 5, + 32, + 1, + 40, + 2, + 8, + 34, + 7, + 32, + 4, + 65, + 3, + 118, + 106, + 34, + 3, + 32, + 7, + 73, + 13, + 13, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 75, + 13, + 13, + 32, + 1, + 32, + 3, + 54, + 2, + 8, + 32, + 4, + 65, + 7, + 113, + 33, + 5, + 32, + 17, + 32, + 4, + 65, + 56, + 113, + 173, + 136, + 33, + 17, + 32, + 8, + 32, + 11, + 73, + 13, + 1, + 12, + 12, + 11, + 11, + 32, + 14, + 32, + 11, + 65, + 132, + 154, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 10, + 32, + 11, + 65, + 148, + 154, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 3, + 65, + 160, + 2, + 65, + 164, + 158, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 65, + 17, + 65, + 248, + 160, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 65, + 128, + 1, + 65, + 136, + 170, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 12, + 65, + 17, + 65, + 152, + 171, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 11, + 65, + 128, + 128, + 4, + 65, + 168, + 171, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 6, + 32, + 11, + 65, + 132, + 147, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 32, + 11, + 65, + 148, + 147, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 3, + 32, + 7, + 65, + 180, + 148, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 7, + 32, + 10, + 65, + 180, + 148, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 1, + 66, + 0, + 55, + 2, + 12, + 65, + 0, + 33, + 7, + 2, + 64, + 32, + 5, + 69, + 4, + 64, + 65, + 0, + 33, + 4, + 12, + 1, + 11, + 65, + 0, + 33, + 4, + 2, + 64, + 3, + 64, + 32, + 5, + 65, + 16, + 32, + 5, + 65, + 16, + 73, + 27, + 34, + 6, + 65, + 2, + 116, + 65, + 180, + 158, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 17, + 167, + 113, + 34, + 3, + 32, + 6, + 118, + 69, + 4, + 64, + 32, + 1, + 32, + 4, + 32, + 6, + 106, + 34, + 2, + 54, + 2, + 16, + 32, + 1, + 32, + 3, + 32, + 4, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 12, + 2, + 64, + 32, + 2, + 65, + 8, + 73, + 4, + 64, + 32, + 2, + 33, + 4, + 12, + 1, + 11, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 2, + 79, + 13, + 4, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 4, + 54, + 2, + 16, + 32, + 4, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 17, + 32, + 6, + 173, + 136, + 33, + 17, + 32, + 5, + 32, + 6, + 107, + 34, + 5, + 13, + 1, + 12, + 3, + 11, + 11, + 12, + 4, + 11, + 32, + 3, + 32, + 2, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 0, + 65, + 192, + 17, + 106, + 47, + 1, + 0, + 34, + 2, + 32, + 0, + 65, + 128, + 29, + 106, + 45, + 0, + 0, + 34, + 0, + 65, + 31, + 113, + 118, + 13, + 2, + 32, + 1, + 32, + 0, + 32, + 4, + 106, + 34, + 0, + 54, + 2, + 16, + 32, + 1, + 32, + 2, + 32, + 4, + 116, + 32, + 7, + 114, + 34, + 4, + 54, + 2, + 12, + 65, + 1, + 33, + 5, + 32, + 0, + 65, + 8, + 73, + 13, + 0, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 40, + 2, + 4, + 34, + 0, + 73, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 106, + 32, + 4, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 34, + 3, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 8, + 118, + 34, + 4, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 16, + 65, + 120, + 106, + 34, + 0, + 54, + 2, + 16, + 32, + 0, + 65, + 7, + 75, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 3, + 32, + 0, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 9, + 65, + 144, + 5, + 106, + 36, + 0, + 32, + 5, + 15, + 11, + 32, + 4, + 32, + 6, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 228, + 147, + 192, + 0, + 65, + 48, + 65, + 148, + 148, + 192, + 0, + 16, + 114, + 0, + 11, + 187, + 43, + 2, + 34, + 127, + 1, + 126, + 35, + 0, + 65, + 48, + 107, + 34, + 13, + 36, + 0, + 32, + 1, + 65, + 172, + 128, + 4, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 180, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 5, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 198, + 128, + 4, + 106, + 45, + 0, + 0, + 65, + 4, + 70, + 4, + 64, + 32, + 1, + 32, + 3, + 58, + 0, + 198, + 128, + 4, + 32, + 3, + 65, + 255, + 1, + 113, + 65, + 4, + 71, + 32, + 5, + 114, + 13, + 1, + 12, + 2, + 11, + 32, + 1, + 32, + 3, + 58, + 0, + 198, + 128, + 4, + 32, + 5, + 69, + 13, + 1, + 11, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 66, + 254, + 255, + 255, + 255, + 15, + 55, + 2, + 0, + 32, + 1, + 65, + 126, + 54, + 2, + 180, + 128, + 4, + 12, + 1, + 11, + 32, + 1, + 65, + 144, + 128, + 4, + 106, + 33, + 24, + 2, + 64, + 32, + 1, + 65, + 164, + 128, + 4, + 106, + 40, + 2, + 0, + 69, + 4, + 64, + 32, + 1, + 65, + 199, + 128, + 4, + 106, + 45, + 0, + 0, + 69, + 13, + 1, + 11, + 32, + 13, + 65, + 32, + 106, + 32, + 2, + 32, + 24, + 16, + 67, + 32, + 1, + 32, + 13, + 40, + 2, + 32, + 54, + 2, + 180, + 128, + 4, + 32, + 0, + 32, + 13, + 41, + 3, + 32, + 55, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 13, + 65, + 40, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 12, + 1, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 24, + 40, + 2, + 0, + 65, + 255, + 159, + 45, + 113, + 65, + 129, + 128, + 1, + 71, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 34, + 26, + 69, + 13, + 2, + 32, + 1, + 65, + 204, + 128, + 4, + 106, + 33, + 31, + 32, + 1, + 65, + 156, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 3, + 32, + 1, + 65, + 152, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 17, + 32, + 1, + 65, + 197, + 128, + 4, + 106, + 45, + 0, + 0, + 33, + 19, + 32, + 1, + 65, + 224, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 16, + 32, + 1, + 65, + 220, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 10, + 32, + 2, + 40, + 2, + 4, + 33, + 18, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 33, + 14, + 2, + 64, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 18, + 32, + 11, + 77, + 4, + 64, + 32, + 10, + 69, + 13, + 1, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 69, + 13, + 1, + 11, + 2, + 127, + 2, + 64, + 65, + 130, + 2, + 32, + 10, + 107, + 34, + 5, + 32, + 18, + 32, + 11, + 107, + 34, + 4, + 32, + 4, + 32, + 5, + 75, + 27, + 34, + 6, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 32, + 10, + 106, + 65, + 2, + 73, + 13, + 0, + 32, + 6, + 32, + 11, + 106, + 34, + 7, + 32, + 6, + 79, + 4, + 64, + 32, + 18, + 32, + 7, + 79, + 4, + 64, + 32, + 14, + 40, + 2, + 0, + 34, + 5, + 65, + 128, + 128, + 8, + 106, + 34, + 8, + 32, + 10, + 32, + 16, + 106, + 34, + 9, + 65, + 126, + 106, + 34, + 4, + 65, + 255, + 255, + 1, + 113, + 106, + 45, + 0, + 0, + 65, + 5, + 116, + 32, + 8, + 32, + 9, + 65, + 127, + 106, + 65, + 255, + 255, + 1, + 113, + 106, + 45, + 0, + 0, + 115, + 33, + 12, + 32, + 6, + 32, + 10, + 106, + 33, + 10, + 32, + 6, + 65, + 127, + 106, + 33, + 6, + 32, + 11, + 32, + 26, + 106, + 33, + 8, + 3, + 64, + 32, + 5, + 32, + 9, + 65, + 255, + 255, + 1, + 113, + 34, + 9, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 8, + 45, + 0, + 0, + 34, + 5, + 58, + 0, + 0, + 32, + 9, + 65, + 128, + 2, + 77, + 4, + 64, + 32, + 14, + 40, + 2, + 0, + 32, + 9, + 65, + 128, + 128, + 2, + 114, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 5, + 58, + 0, + 0, + 11, + 32, + 14, + 40, + 2, + 0, + 34, + 11, + 32, + 4, + 65, + 255, + 255, + 1, + 113, + 65, + 1, + 116, + 106, + 32, + 11, + 32, + 12, + 65, + 5, + 116, + 65, + 224, + 255, + 1, + 113, + 32, + 5, + 115, + 34, + 12, + 65, + 1, + 116, + 34, + 5, + 106, + 65, + 128, + 128, + 4, + 106, + 47, + 1, + 0, + 59, + 1, + 0, + 32, + 14, + 40, + 2, + 0, + 32, + 5, + 106, + 65, + 128, + 128, + 4, + 106, + 32, + 4, + 59, + 1, + 0, + 32, + 7, + 32, + 6, + 69, + 13, + 4, + 26, + 32, + 8, + 65, + 1, + 106, + 33, + 8, + 32, + 6, + 65, + 127, + 106, + 33, + 6, + 32, + 9, + 65, + 1, + 106, + 33, + 9, + 32, + 4, + 65, + 1, + 106, + 33, + 4, + 32, + 14, + 40, + 2, + 0, + 33, + 5, + 12, + 0, + 11, + 0, + 11, + 32, + 7, + 32, + 18, + 65, + 216, + 173, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 11, + 32, + 7, + 65, + 216, + 173, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 6, + 32, + 11, + 106, + 34, + 5, + 32, + 6, + 73, + 13, + 2, + 32, + 18, + 32, + 5, + 73, + 13, + 3, + 32, + 6, + 4, + 64, + 32, + 11, + 32, + 26, + 106, + 33, + 12, + 32, + 10, + 32, + 16, + 106, + 33, + 7, + 65, + 0, + 33, + 4, + 3, + 64, + 32, + 4, + 32, + 7, + 106, + 34, + 9, + 65, + 255, + 255, + 1, + 113, + 34, + 8, + 32, + 14, + 40, + 2, + 0, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 4, + 32, + 12, + 106, + 45, + 0, + 0, + 34, + 11, + 58, + 0, + 0, + 32, + 8, + 65, + 128, + 2, + 77, + 4, + 64, + 32, + 14, + 40, + 2, + 0, + 32, + 8, + 65, + 128, + 128, + 2, + 114, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 11, + 58, + 0, + 0, + 11, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 32, + 4, + 32, + 10, + 106, + 106, + 65, + 1, + 106, + 65, + 3, + 79, + 4, + 64, + 32, + 14, + 40, + 2, + 0, + 34, + 8, + 32, + 9, + 65, + 126, + 106, + 34, + 15, + 65, + 255, + 255, + 1, + 113, + 34, + 20, + 65, + 1, + 116, + 106, + 32, + 8, + 32, + 11, + 32, + 8, + 65, + 128, + 128, + 8, + 106, + 34, + 11, + 32, + 9, + 65, + 127, + 106, + 65, + 255, + 255, + 1, + 113, + 106, + 45, + 0, + 0, + 65, + 5, + 116, + 115, + 32, + 11, + 32, + 20, + 106, + 45, + 0, + 0, + 65, + 10, + 116, + 65, + 128, + 248, + 1, + 113, + 115, + 65, + 1, + 116, + 34, + 9, + 106, + 65, + 128, + 128, + 4, + 106, + 47, + 1, + 0, + 59, + 1, + 0, + 32, + 14, + 40, + 2, + 0, + 32, + 9, + 106, + 65, + 128, + 128, + 4, + 106, + 32, + 15, + 59, + 1, + 0, + 11, + 32, + 6, + 32, + 4, + 65, + 1, + 106, + 34, + 4, + 71, + 13, + 0, + 11, + 32, + 4, + 32, + 10, + 106, + 33, + 10, + 11, + 32, + 5, + 11, + 33, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 34, + 5, + 65, + 128, + 128, + 2, + 32, + 10, + 107, + 34, + 4, + 32, + 4, + 32, + 5, + 75, + 27, + 34, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 10, + 65, + 129, + 2, + 77, + 4, + 64, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 69, + 13, + 1, + 11, + 32, + 16, + 65, + 255, + 255, + 1, + 113, + 33, + 7, + 32, + 3, + 65, + 2, + 32, + 3, + 27, + 33, + 9, + 2, + 64, + 2, + 64, + 32, + 1, + 40, + 2, + 144, + 128, + 4, + 34, + 23, + 65, + 128, + 128, + 36, + 113, + 4, + 64, + 65, + 0, + 33, + 4, + 32, + 27, + 69, + 32, + 23, + 65, + 128, + 128, + 32, + 113, + 114, + 13, + 17, + 32, + 7, + 32, + 10, + 106, + 34, + 5, + 32, + 10, + 73, + 13, + 14, + 32, + 5, + 65, + 131, + 130, + 2, + 79, + 13, + 15, + 32, + 10, + 13, + 1, + 12, + 2, + 11, + 65, + 0, + 33, + 4, + 32, + 10, + 65, + 130, + 2, + 32, + 10, + 65, + 130, + 2, + 73, + 27, + 34, + 15, + 32, + 9, + 65, + 1, + 32, + 9, + 65, + 1, + 75, + 27, + 34, + 9, + 77, + 13, + 16, + 32, + 7, + 32, + 9, + 106, + 34, + 6, + 65, + 127, + 106, + 34, + 5, + 65, + 129, + 130, + 2, + 75, + 13, + 5, + 32, + 5, + 65, + 129, + 130, + 2, + 70, + 13, + 6, + 32, + 31, + 32, + 9, + 65, + 31, + 75, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 65, + 127, + 106, + 34, + 28, + 69, + 13, + 16, + 32, + 14, + 40, + 2, + 0, + 34, + 20, + 32, + 7, + 106, + 34, + 29, + 65, + 128, + 128, + 8, + 106, + 47, + 0, + 0, + 33, + 32, + 32, + 20, + 65, + 128, + 128, + 8, + 106, + 34, + 25, + 32, + 6, + 106, + 45, + 0, + 0, + 65, + 8, + 116, + 32, + 5, + 32, + 25, + 106, + 45, + 0, + 0, + 114, + 33, + 30, + 32, + 20, + 65, + 130, + 128, + 8, + 106, + 33, + 33, + 65, + 128, + 130, + 2, + 32, + 7, + 107, + 65, + 248, + 255, + 3, + 113, + 33, + 34, + 32, + 7, + 33, + 5, + 3, + 64, + 65, + 4, + 33, + 8, + 2, + 64, + 3, + 64, + 32, + 8, + 65, + 127, + 106, + 34, + 8, + 69, + 13, + 1, + 32, + 20, + 32, + 5, + 65, + 1, + 116, + 106, + 47, + 1, + 0, + 34, + 22, + 69, + 13, + 19, + 32, + 16, + 32, + 22, + 107, + 65, + 255, + 255, + 3, + 113, + 34, + 12, + 32, + 27, + 75, + 13, + 19, + 32, + 22, + 65, + 255, + 255, + 1, + 113, + 34, + 5, + 32, + 9, + 106, + 34, + 21, + 65, + 127, + 106, + 34, + 6, + 65, + 129, + 130, + 2, + 75, + 13, + 10, + 32, + 6, + 65, + 129, + 130, + 2, + 70, + 13, + 11, + 32, + 6, + 32, + 25, + 106, + 45, + 0, + 0, + 32, + 21, + 32, + 25, + 106, + 45, + 0, + 0, + 65, + 8, + 116, + 114, + 32, + 30, + 71, + 13, + 0, + 11, + 32, + 12, + 69, + 13, + 18, + 32, + 5, + 32, + 20, + 106, + 65, + 128, + 128, + 8, + 106, + 47, + 0, + 0, + 32, + 32, + 71, + 13, + 0, + 32, + 5, + 32, + 33, + 106, + 33, + 21, + 65, + 128, + 130, + 2, + 32, + 5, + 107, + 65, + 248, + 255, + 3, + 113, + 65, + 8, + 106, + 33, + 35, + 65, + 0, + 33, + 6, + 3, + 64, + 32, + 6, + 65, + 128, + 2, + 70, + 13, + 18, + 32, + 6, + 32, + 34, + 70, + 13, + 12, + 32, + 35, + 32, + 6, + 65, + 8, + 106, + 34, + 8, + 70, + 13, + 13, + 32, + 6, + 32, + 21, + 106, + 32, + 6, + 32, + 29, + 106, + 33, + 37, + 32, + 8, + 33, + 6, + 41, + 0, + 0, + 32, + 37, + 65, + 130, + 128, + 8, + 106, + 41, + 0, + 0, + 133, + 34, + 38, + 80, + 13, + 0, + 11, + 32, + 38, + 122, + 167, + 34, + 22, + 65, + 3, + 118, + 34, + 21, + 32, + 8, + 106, + 65, + 122, + 106, + 34, + 6, + 32, + 9, + 77, + 13, + 0, + 32, + 15, + 32, + 6, + 77, + 13, + 17, + 32, + 7, + 32, + 21, + 106, + 32, + 8, + 106, + 34, + 4, + 65, + 121, + 106, + 65, + 129, + 130, + 2, + 75, + 13, + 13, + 32, + 4, + 65, + 248, + 253, + 125, + 106, + 69, + 13, + 14, + 32, + 21, + 32, + 29, + 106, + 32, + 8, + 106, + 65, + 249, + 255, + 7, + 106, + 47, + 0, + 0, + 33, + 30, + 32, + 6, + 33, + 9, + 32, + 12, + 33, + 4, + 11, + 32, + 28, + 65, + 127, + 106, + 34, + 28, + 13, + 0, + 11, + 12, + 16, + 11, + 32, + 14, + 40, + 2, + 0, + 34, + 5, + 32, + 16, + 65, + 127, + 106, + 65, + 255, + 255, + 1, + 113, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 33, + 9, + 32, + 5, + 32, + 7, + 106, + 65, + 128, + 128, + 8, + 106, + 33, + 5, + 3, + 64, + 32, + 4, + 32, + 5, + 106, + 45, + 0, + 0, + 32, + 9, + 71, + 13, + 1, + 32, + 10, + 32, + 4, + 65, + 1, + 106, + 34, + 4, + 71, + 13, + 0, + 11, + 32, + 10, + 33, + 4, + 11, + 65, + 0, + 32, + 4, + 32, + 4, + 65, + 3, + 73, + 27, + 33, + 9, + 32, + 4, + 65, + 2, + 75, + 33, + 4, + 12, + 14, + 11, + 32, + 1, + 32, + 16, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 10, + 54, + 2, + 220, + 128, + 4, + 32, + 1, + 32, + 11, + 54, + 2, + 172, + 128, + 4, + 32, + 1, + 32, + 19, + 58, + 0, + 197, + 128, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 156, + 128, + 4, + 32, + 1, + 32, + 17, + 54, + 2, + 152, + 128, + 4, + 12, + 17, + 11, + 32, + 11, + 32, + 5, + 65, + 232, + 173, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 5, + 32, + 18, + 65, + 232, + 173, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 5, + 65, + 130, + 130, + 2, + 65, + 132, + 147, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 65, + 130, + 130, + 2, + 65, + 148, + 147, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 65, + 130, + 130, + 2, + 65, + 132, + 147, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 21, + 65, + 130, + 130, + 2, + 65, + 148, + 147, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 16, + 65, + 255, + 255, + 1, + 113, + 32, + 6, + 106, + 65, + 10, + 106, + 65, + 130, + 130, + 2, + 65, + 212, + 153, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 22, + 65, + 255, + 255, + 1, + 113, + 32, + 6, + 106, + 65, + 10, + 106, + 65, + 130, + 130, + 2, + 65, + 212, + 153, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 16, + 65, + 255, + 255, + 1, + 113, + 32, + 22, + 65, + 3, + 118, + 106, + 32, + 8, + 106, + 65, + 121, + 106, + 65, + 130, + 130, + 2, + 65, + 132, + 147, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 16, + 65, + 255, + 255, + 1, + 113, + 32, + 22, + 65, + 3, + 118, + 106, + 32, + 8, + 106, + 65, + 122, + 106, + 65, + 130, + 130, + 2, + 65, + 148, + 147, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 7, + 32, + 5, + 65, + 248, + 173, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 5, + 65, + 130, + 130, + 2, + 65, + 248, + 173, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 15, + 33, + 9, + 32, + 12, + 33, + 4, + 11, + 65, + 0, + 32, + 4, + 32, + 9, + 65, + 3, + 70, + 32, + 4, + 65, + 255, + 63, + 75, + 113, + 32, + 23, + 65, + 128, + 128, + 8, + 113, + 65, + 17, + 118, + 32, + 9, + 65, + 6, + 73, + 113, + 114, + 32, + 4, + 32, + 7, + 70, + 114, + 34, + 5, + 27, + 33, + 6, + 65, + 0, + 32, + 9, + 32, + 5, + 27, + 33, + 5, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 127, + 32, + 3, + 4, + 64, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 33, + 4, + 32, + 5, + 32, + 3, + 77, + 13, + 3, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 128, + 128, + 4, + 79, + 13, + 26, + 32, + 1, + 32, + 3, + 106, + 65, + 16, + 106, + 32, + 19, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 65, + 128, + 128, + 4, + 79, + 13, + 2, + 32, + 1, + 32, + 3, + 106, + 65, + 16, + 106, + 34, + 3, + 32, + 3, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 3, + 54, + 2, + 12, + 32, + 3, + 69, + 4, + 64, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 54, + 2, + 4, + 32, + 1, + 32, + 3, + 65, + 1, + 106, + 54, + 2, + 0, + 11, + 32, + 4, + 32, + 19, + 65, + 1, + 116, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 5, + 65, + 255, + 0, + 75, + 4, + 64, + 12, + 7, + 11, + 32, + 14, + 40, + 2, + 0, + 32, + 7, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 12, + 1, + 11, + 2, + 64, + 32, + 6, + 4, + 64, + 32, + 23, + 65, + 128, + 128, + 4, + 113, + 32, + 5, + 65, + 255, + 0, + 75, + 114, + 69, + 4, + 64, + 32, + 1, + 45, + 0, + 196, + 128, + 4, + 69, + 13, + 2, + 11, + 12, + 7, + 11, + 32, + 14, + 40, + 2, + 0, + 32, + 7, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 33, + 3, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 5, + 65, + 128, + 128, + 4, + 79, + 13, + 4, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 1, + 32, + 5, + 106, + 65, + 16, + 106, + 32, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 65, + 128, + 128, + 4, + 79, + 13, + 5, + 32, + 1, + 32, + 5, + 106, + 65, + 16, + 106, + 34, + 5, + 32, + 5, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 5, + 54, + 2, + 12, + 32, + 5, + 69, + 4, + 64, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 5, + 54, + 2, + 4, + 32, + 1, + 32, + 5, + 65, + 1, + 106, + 54, + 2, + 0, + 11, + 65, + 1, + 33, + 4, + 32, + 3, + 65, + 1, + 116, + 106, + 34, + 3, + 32, + 3, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 65, + 0, + 12, + 7, + 11, + 32, + 14, + 40, + 2, + 0, + 32, + 7, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 11, + 33, + 19, + 65, + 1, + 33, + 4, + 32, + 6, + 33, + 17, + 32, + 5, + 12, + 5, + 11, + 32, + 3, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 32, + 1, + 32, + 3, + 32, + 17, + 16, + 35, + 32, + 3, + 65, + 127, + 106, + 33, + 4, + 65, + 0, + 12, + 3, + 11, + 32, + 5, + 65, + 128, + 128, + 4, + 65, + 228, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 1, + 32, + 5, + 32, + 6, + 16, + 35, + 32, + 5, + 33, + 4, + 65, + 0, + 11, + 33, + 3, + 32, + 10, + 32, + 4, + 73, + 13, + 1, + 32, + 4, + 32, + 16, + 106, + 33, + 16, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 32, + 4, + 106, + 34, + 5, + 65, + 128, + 128, + 2, + 32, + 5, + 65, + 128, + 128, + 2, + 73, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 10, + 32, + 4, + 107, + 33, + 10, + 32, + 1, + 40, + 2, + 0, + 33, + 5, + 2, + 64, + 32, + 1, + 40, + 2, + 8, + 34, + 4, + 65, + 129, + 248, + 1, + 79, + 4, + 64, + 32, + 5, + 65, + 248, + 255, + 3, + 75, + 32, + 5, + 65, + 243, + 0, + 108, + 65, + 7, + 118, + 32, + 4, + 79, + 114, + 13, + 1, + 32, + 1, + 40, + 2, + 144, + 128, + 4, + 65, + 128, + 128, + 32, + 113, + 69, + 13, + 2, + 12, + 1, + 11, + 32, + 5, + 65, + 249, + 255, + 3, + 73, + 13, + 1, + 11, + 32, + 1, + 32, + 16, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 10, + 54, + 2, + 220, + 128, + 4, + 32, + 1, + 32, + 11, + 54, + 2, + 172, + 128, + 4, + 32, + 13, + 65, + 24, + 106, + 32, + 1, + 32, + 2, + 65, + 0, + 16, + 5, + 65, + 127, + 32, + 13, + 40, + 2, + 28, + 32, + 13, + 40, + 2, + 24, + 27, + 34, + 5, + 69, + 13, + 0, + 11, + 32, + 1, + 32, + 3, + 54, + 2, + 156, + 128, + 4, + 32, + 1, + 32, + 17, + 54, + 2, + 152, + 128, + 4, + 32, + 1, + 32, + 19, + 58, + 0, + 197, + 128, + 4, + 32, + 5, + 65, + 0, + 74, + 13, + 2, + 32, + 1, + 40, + 2, + 172, + 128, + 4, + 33, + 5, + 12, + 15, + 11, + 65, + 136, + 174, + 192, + 0, + 65, + 47, + 65, + 184, + 174, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 2, + 40, + 2, + 0, + 34, + 16, + 69, + 13, + 1, + 32, + 1, + 65, + 224, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 11, + 65, + 255, + 255, + 1, + 113, + 33, + 9, + 32, + 2, + 40, + 2, + 4, + 33, + 10, + 32, + 1, + 40, + 2, + 220, + 128, + 4, + 33, + 3, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 33, + 17, + 65, + 0, + 33, + 5, + 3, + 64, + 2, + 64, + 2, + 64, + 32, + 10, + 32, + 5, + 77, + 4, + 64, + 32, + 3, + 69, + 13, + 1, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 69, + 13, + 1, + 11, + 65, + 128, + 32, + 32, + 3, + 107, + 34, + 4, + 32, + 10, + 32, + 5, + 107, + 34, + 6, + 32, + 6, + 32, + 4, + 75, + 27, + 34, + 4, + 4, + 64, + 32, + 3, + 32, + 11, + 106, + 33, + 12, + 32, + 5, + 33, + 8, + 32, + 4, + 33, + 6, + 3, + 64, + 32, + 6, + 65, + 128, + 128, + 2, + 32, + 12, + 65, + 255, + 255, + 1, + 113, + 34, + 15, + 107, + 34, + 5, + 32, + 5, + 32, + 6, + 75, + 27, + 34, + 7, + 32, + 15, + 106, + 34, + 12, + 65, + 131, + 130, + 2, + 79, + 13, + 17, + 32, + 7, + 32, + 8, + 106, + 34, + 5, + 32, + 7, + 73, + 13, + 16, + 32, + 10, + 32, + 5, + 73, + 13, + 15, + 32, + 17, + 40, + 2, + 0, + 32, + 15, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 8, + 32, + 16, + 106, + 34, + 19, + 32, + 7, + 16, + 121, + 26, + 32, + 15, + 65, + 128, + 2, + 77, + 4, + 64, + 65, + 129, + 2, + 32, + 15, + 107, + 34, + 14, + 32, + 7, + 32, + 7, + 32, + 14, + 75, + 27, + 34, + 14, + 32, + 15, + 65, + 128, + 128, + 2, + 114, + 34, + 18, + 106, + 34, + 15, + 65, + 131, + 130, + 2, + 79, + 13, + 15, + 32, + 8, + 32, + 14, + 106, + 34, + 15, + 32, + 14, + 73, + 13, + 14, + 32, + 10, + 32, + 15, + 73, + 13, + 13, + 32, + 17, + 40, + 2, + 0, + 32, + 18, + 106, + 65, + 128, + 128, + 8, + 106, + 32, + 19, + 32, + 14, + 16, + 121, + 26, + 11, + 32, + 5, + 33, + 8, + 32, + 6, + 32, + 7, + 107, + 34, + 6, + 13, + 0, + 11, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 34, + 6, + 65, + 128, + 128, + 2, + 32, + 3, + 32, + 4, + 106, + 34, + 12, + 107, + 34, + 3, + 32, + 3, + 32, + 6, + 75, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 12, + 65, + 255, + 31, + 75, + 13, + 1, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 13, + 1, + 32, + 12, + 33, + 3, + 11, + 32, + 1, + 32, + 11, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 220, + 128, + 4, + 32, + 1, + 32, + 5, + 54, + 2, + 172, + 128, + 4, + 12, + 2, + 11, + 2, + 64, + 32, + 12, + 65, + 4, + 79, + 4, + 64, + 3, + 64, + 32, + 17, + 40, + 2, + 0, + 34, + 3, + 32, + 3, + 32, + 9, + 65, + 255, + 255, + 1, + 113, + 106, + 65, + 128, + 128, + 8, + 106, + 40, + 0, + 0, + 34, + 6, + 65, + 255, + 255, + 255, + 7, + 113, + 34, + 3, + 65, + 17, + 118, + 32, + 6, + 65, + 255, + 31, + 113, + 115, + 65, + 1, + 116, + 106, + 65, + 128, + 128, + 4, + 106, + 34, + 4, + 47, + 1, + 0, + 33, + 8, + 32, + 4, + 32, + 11, + 59, + 1, + 0, + 2, + 64, + 32, + 11, + 32, + 8, + 107, + 34, + 15, + 65, + 255, + 255, + 3, + 113, + 34, + 7, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 75, + 13, + 0, + 2, + 64, + 2, + 64, + 32, + 3, + 32, + 17, + 40, + 2, + 0, + 34, + 4, + 32, + 8, + 65, + 255, + 255, + 1, + 113, + 34, + 3, + 106, + 65, + 128, + 128, + 8, + 106, + 40, + 0, + 0, + 65, + 255, + 255, + 255, + 7, + 113, + 70, + 4, + 64, + 32, + 4, + 65, + 131, + 128, + 8, + 106, + 34, + 4, + 32, + 3, + 106, + 33, + 14, + 32, + 4, + 32, + 9, + 106, + 33, + 19, + 65, + 255, + 129, + 2, + 32, + 3, + 107, + 65, + 248, + 255, + 3, + 113, + 65, + 8, + 106, + 33, + 18, + 65, + 0, + 33, + 3, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 3, + 65, + 128, + 2, + 70, + 4, + 64, + 65, + 130, + 2, + 33, + 3, + 32, + 7, + 13, + 6, + 12, + 2, + 11, + 32, + 3, + 32, + 9, + 106, + 34, + 4, + 65, + 3, + 106, + 65, + 120, + 79, + 13, + 2, + 32, + 4, + 65, + 11, + 106, + 65, + 131, + 130, + 2, + 79, + 13, + 3, + 32, + 18, + 32, + 3, + 65, + 8, + 106, + 34, + 4, + 70, + 13, + 4, + 32, + 3, + 32, + 19, + 106, + 33, + 20, + 32, + 3, + 32, + 14, + 106, + 32, + 4, + 33, + 3, + 41, + 0, + 0, + 32, + 20, + 41, + 0, + 0, + 133, + 34, + 38, + 80, + 13, + 0, + 11, + 32, + 38, + 122, + 167, + 65, + 3, + 118, + 32, + 4, + 106, + 34, + 4, + 65, + 123, + 106, + 34, + 3, + 65, + 3, + 73, + 13, + 0, + 32, + 4, + 65, + 120, + 106, + 32, + 7, + 65, + 128, + 192, + 0, + 73, + 114, + 13, + 4, + 11, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 128, + 128, + 4, + 79, + 13, + 27, + 32, + 1, + 32, + 3, + 106, + 65, + 16, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 65, + 128, + 128, + 4, + 73, + 13, + 5, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 65, + 3, + 106, + 32, + 4, + 65, + 11, + 106, + 65, + 212, + 153, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 4, + 65, + 11, + 106, + 65, + 130, + 130, + 2, + 65, + 212, + 153, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 8, + 65, + 255, + 255, + 1, + 113, + 32, + 3, + 106, + 65, + 11, + 106, + 65, + 130, + 130, + 2, + 65, + 212, + 153, + 192, + 0, + 16, + 99, + 0, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 65, + 128, + 128, + 4, + 73, + 4, + 64, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 12, + 32, + 3, + 32, + 3, + 32, + 12, + 75, + 27, + 34, + 3, + 65, + 125, + 106, + 34, + 6, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 1, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 15, + 65, + 127, + 106, + 34, + 4, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 8, + 54, + 2, + 0, + 32, + 8, + 65, + 128, + 128, + 4, + 79, + 13, + 2, + 32, + 1, + 32, + 8, + 106, + 65, + 16, + 106, + 32, + 4, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 34, + 8, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 7, + 65, + 128, + 128, + 4, + 79, + 13, + 3, + 32, + 1, + 32, + 7, + 106, + 65, + 16, + 106, + 34, + 7, + 32, + 7, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 7, + 65, + 128, + 128, + 4, + 79, + 13, + 4, + 32, + 1, + 32, + 7, + 106, + 65, + 16, + 106, + 34, + 7, + 32, + 7, + 45, + 0, + 0, + 65, + 128, + 1, + 114, + 58, + 0, + 0, + 2, + 64, + 2, + 64, + 2, + 127, + 32, + 4, + 65, + 255, + 255, + 3, + 113, + 34, + 7, + 65, + 128, + 4, + 79, + 4, + 64, + 32, + 4, + 65, + 16, + 116, + 65, + 16, + 117, + 65, + 127, + 76, + 13, + 2, + 32, + 8, + 65, + 136, + 169, + 192, + 0, + 106, + 12, + 1, + 11, + 32, + 7, + 65, + 136, + 161, + 192, + 0, + 106, + 11, + 33, + 4, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 45, + 0, + 0, + 65, + 1, + 116, + 106, + 65, + 192, + 4, + 106, + 34, + 4, + 32, + 4, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 6, + 65, + 255, + 1, + 75, + 13, + 1, + 32, + 6, + 65, + 1, + 116, + 65, + 164, + 154, + 192, + 0, + 106, + 47, + 1, + 0, + 34, + 4, + 65, + 160, + 2, + 73, + 13, + 9, + 32, + 4, + 65, + 160, + 2, + 65, + 168, + 175, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 65, + 128, + 1, + 65, + 136, + 175, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 65, + 128, + 2, + 65, + 152, + 175, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 228, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 228, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 65, + 128, + 128, + 4, + 65, + 228, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 7, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 7, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 128, + 128, + 4, + 79, + 13, + 22, + 32, + 1, + 32, + 3, + 106, + 65, + 16, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 65, + 128, + 128, + 4, + 73, + 13, + 0, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 1, + 33, + 3, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 34, + 4, + 32, + 4, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 6, + 65, + 255, + 1, + 113, + 33, + 4, + 11, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 65, + 1, + 116, + 106, + 34, + 4, + 32, + 4, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 4, + 54, + 2, + 12, + 2, + 64, + 32, + 4, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 33, + 4, + 12, + 1, + 11, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 54, + 2, + 4, + 32, + 1, + 32, + 4, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 32, + 3, + 106, + 54, + 2, + 8, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 32, + 3, + 106, + 34, + 6, + 65, + 128, + 128, + 2, + 32, + 6, + 65, + 128, + 128, + 2, + 73, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 12, + 32, + 3, + 107, + 33, + 12, + 32, + 3, + 32, + 11, + 106, + 33, + 11, + 32, + 3, + 32, + 9, + 106, + 65, + 255, + 255, + 1, + 113, + 33, + 9, + 32, + 4, + 65, + 249, + 255, + 3, + 73, + 13, + 0, + 32, + 1, + 32, + 11, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 12, + 54, + 2, + 220, + 128, + 4, + 32, + 13, + 65, + 16, + 106, + 32, + 1, + 32, + 2, + 65, + 0, + 16, + 5, + 32, + 13, + 40, + 2, + 16, + 13, + 7, + 32, + 13, + 40, + 2, + 20, + 34, + 3, + 13, + 3, + 32, + 1, + 40, + 2, + 224, + 128, + 4, + 33, + 11, + 32, + 1, + 40, + 2, + 220, + 128, + 4, + 33, + 12, + 11, + 32, + 12, + 65, + 3, + 75, + 13, + 0, + 11, + 11, + 65, + 0, + 33, + 3, + 32, + 12, + 69, + 13, + 1, + 3, + 64, + 32, + 17, + 40, + 2, + 0, + 32, + 9, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 33, + 4, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 6, + 65, + 128, + 128, + 4, + 79, + 13, + 6, + 32, + 1, + 32, + 6, + 106, + 65, + 16, + 106, + 32, + 4, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 65, + 128, + 128, + 4, + 79, + 13, + 7, + 32, + 1, + 32, + 6, + 106, + 65, + 16, + 106, + 34, + 6, + 32, + 6, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 6, + 54, + 2, + 12, + 32, + 6, + 69, + 4, + 64, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 6, + 54, + 2, + 4, + 32, + 1, + 32, + 6, + 65, + 1, + 106, + 54, + 2, + 0, + 11, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 65, + 1, + 116, + 106, + 34, + 4, + 32, + 4, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 228, + 128, + 4, + 65, + 1, + 106, + 34, + 4, + 65, + 128, + 128, + 2, + 32, + 4, + 65, + 128, + 128, + 2, + 73, + 27, + 54, + 2, + 228, + 128, + 4, + 32, + 12, + 65, + 127, + 106, + 33, + 12, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 1, + 40, + 2, + 0, + 65, + 249, + 255, + 3, + 79, + 4, + 64, + 32, + 1, + 32, + 11, + 54, + 2, + 224, + 128, + 4, + 32, + 1, + 32, + 12, + 54, + 2, + 220, + 128, + 4, + 32, + 13, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 65, + 0, + 16, + 5, + 32, + 13, + 40, + 2, + 8, + 13, + 9, + 32, + 13, + 40, + 2, + 12, + 34, + 4, + 4, + 64, + 32, + 1, + 32, + 5, + 54, + 2, + 172, + 128, + 4, + 32, + 4, + 65, + 0, + 76, + 13, + 18, + 12, + 5, + 11, + 32, + 1, + 40, + 2, + 220, + 128, + 4, + 33, + 12, + 32, + 1, + 40, + 2, + 224, + 128, + 4, + 33, + 11, + 11, + 32, + 9, + 65, + 1, + 106, + 65, + 255, + 255, + 1, + 113, + 33, + 9, + 32, + 12, + 13, + 0, + 11, + 12, + 1, + 11, + 11, + 32, + 1, + 32, + 5, + 54, + 2, + 172, + 128, + 4, + 32, + 3, + 65, + 0, + 76, + 13, + 13, + 11, + 32, + 2, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 24, + 65, + 1, + 106, + 45, + 0, + 0, + 65, + 48, + 113, + 69, + 13, + 0, + 32, + 2, + 40, + 2, + 4, + 34, + 4, + 32, + 1, + 40, + 2, + 172, + 128, + 4, + 34, + 3, + 73, + 13, + 5, + 32, + 13, + 32, + 1, + 40, + 2, + 168, + 128, + 4, + 34, + 4, + 65, + 16, + 118, + 59, + 1, + 34, + 32, + 13, + 32, + 4, + 59, + 1, + 32, + 32, + 13, + 65, + 32, + 106, + 32, + 5, + 32, + 3, + 16, + 30, + 32, + 1, + 32, + 13, + 40, + 2, + 32, + 54, + 2, + 168, + 128, + 4, + 11, + 2, + 64, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 34, + 3, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 172, + 128, + 4, + 32, + 2, + 40, + 2, + 4, + 65, + 0, + 32, + 2, + 40, + 2, + 0, + 27, + 71, + 13, + 0, + 32, + 1, + 65, + 220, + 128, + 4, + 106, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 164, + 128, + 4, + 114, + 13, + 0, + 32, + 13, + 32, + 1, + 32, + 2, + 32, + 3, + 16, + 5, + 32, + 13, + 40, + 2, + 0, + 4, + 64, + 32, + 1, + 65, + 127, + 54, + 2, + 180, + 128, + 4, + 32, + 0, + 65, + 127, + 54, + 2, + 0, + 32, + 0, + 32, + 1, + 41, + 2, + 172, + 128, + 4, + 55, + 2, + 4, + 12, + 14, + 11, + 32, + 13, + 40, + 2, + 4, + 65, + 127, + 76, + 4, + 64, + 32, + 0, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 54, + 2, + 8, + 32, + 0, + 32, + 1, + 40, + 2, + 172, + 128, + 4, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 40, + 2, + 180, + 128, + 4, + 54, + 2, + 0, + 12, + 14, + 11, + 32, + 1, + 32, + 1, + 45, + 0, + 198, + 128, + 4, + 34, + 3, + 65, + 4, + 70, + 58, + 0, + 199, + 128, + 4, + 32, + 3, + 65, + 3, + 71, + 13, + 0, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 34, + 3, + 40, + 2, + 0, + 65, + 128, + 128, + 4, + 106, + 65, + 0, + 65, + 128, + 128, + 4, + 16, + 131, + 1, + 26, + 32, + 3, + 40, + 2, + 0, + 65, + 0, + 65, + 128, + 128, + 4, + 16, + 131, + 1, + 26, + 32, + 1, + 65, + 228, + 128, + 4, + 106, + 65, + 0, + 54, + 2, + 0, + 11, + 32, + 13, + 65, + 32, + 106, + 32, + 2, + 32, + 24, + 16, + 67, + 32, + 1, + 32, + 13, + 40, + 2, + 32, + 54, + 2, + 180, + 128, + 4, + 32, + 0, + 32, + 13, + 41, + 3, + 32, + 55, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 13, + 65, + 40, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 12, + 12, + 11, + 32, + 1, + 65, + 127, + 54, + 2, + 180, + 128, + 4, + 32, + 1, + 32, + 5, + 54, + 2, + 172, + 128, + 4, + 12, + 10, + 11, + 32, + 6, + 65, + 128, + 128, + 4, + 65, + 228, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 1, + 32, + 5, + 54, + 2, + 172, + 128, + 4, + 32, + 1, + 65, + 127, + 54, + 2, + 180, + 128, + 4, + 12, + 7, + 11, + 32, + 3, + 32, + 4, + 65, + 216, + 175, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 15, + 32, + 10, + 65, + 248, + 174, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 8, + 32, + 15, + 65, + 248, + 174, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 15, + 65, + 130, + 130, + 2, + 65, + 232, + 174, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 5, + 32, + 10, + 65, + 216, + 174, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 8, + 32, + 5, + 65, + 216, + 174, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 12, + 65, + 130, + 130, + 2, + 65, + 200, + 174, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 0, + 32, + 5, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 54, + 2, + 8, + 32, + 0, + 32, + 1, + 40, + 2, + 180, + 128, + 4, + 54, + 2, + 0, + 11, + 32, + 13, + 65, + 48, + 106, + 36, + 0, + 15, + 11, + 32, + 3, + 65, + 128, + 128, + 4, + 65, + 228, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 220, + 26, + 1, + 9, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 4, + 36, + 0, + 65, + 1, + 33, + 5, + 32, + 1, + 65, + 192, + 128, + 4, + 106, + 40, + 2, + 0, + 33, + 8, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 16, + 65, + 1, + 71, + 13, + 0, + 32, + 2, + 65, + 24, + 106, + 40, + 2, + 0, + 34, + 7, + 32, + 1, + 65, + 176, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 6, + 107, + 65, + 204, + 153, + 5, + 73, + 13, + 0, + 32, + 6, + 65, + 188, + 153, + 5, + 106, + 33, + 8, + 32, + 6, + 65, + 196, + 230, + 122, + 79, + 13, + 1, + 32, + 7, + 32, + 8, + 73, + 13, + 2, + 32, + 2, + 65, + 20, + 106, + 40, + 2, + 0, + 32, + 6, + 106, + 33, + 8, + 65, + 0, + 33, + 5, + 11, + 32, + 4, + 32, + 5, + 58, + 0, + 28, + 32, + 4, + 66, + 188, + 153, + 5, + 55, + 2, + 12, + 32, + 4, + 32, + 8, + 54, + 2, + 8, + 32, + 4, + 32, + 1, + 65, + 184, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 9, + 54, + 2, + 20, + 32, + 4, + 32, + 1, + 65, + 188, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 6, + 54, + 2, + 24, + 32, + 1, + 65, + 146, + 128, + 4, + 106, + 45, + 0, + 0, + 65, + 8, + 113, + 69, + 13, + 2, + 65, + 1, + 33, + 11, + 32, + 1, + 65, + 224, + 128, + 4, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 216, + 128, + 4, + 106, + 40, + 2, + 0, + 107, + 32, + 1, + 65, + 228, + 128, + 4, + 106, + 40, + 2, + 0, + 75, + 13, + 2, + 12, + 3, + 11, + 32, + 6, + 32, + 8, + 65, + 212, + 147, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 8, + 32, + 7, + 65, + 212, + 147, + 192, + 0, + 16, + 99, + 0, + 11, + 65, + 0, + 33, + 11, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 164, + 128, + 4, + 106, + 40, + 2, + 0, + 69, + 4, + 64, + 32, + 1, + 65, + 160, + 128, + 4, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 65, + 128, + 128, + 4, + 79, + 13, + 1, + 32, + 1, + 32, + 5, + 106, + 65, + 16, + 106, + 33, + 5, + 2, + 64, + 32, + 1, + 40, + 2, + 12, + 34, + 7, + 65, + 8, + 70, + 4, + 64, + 32, + 5, + 65, + 0, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 127, + 106, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 5, + 32, + 5, + 45, + 0, + 0, + 32, + 7, + 65, + 7, + 113, + 118, + 58, + 0, + 0, + 11, + 65, + 0, + 33, + 5, + 2, + 64, + 32, + 1, + 40, + 2, + 144, + 128, + 4, + 34, + 10, + 65, + 128, + 32, + 113, + 69, + 13, + 0, + 32, + 1, + 65, + 148, + 128, + 4, + 106, + 40, + 2, + 0, + 13, + 0, + 32, + 4, + 32, + 6, + 65, + 8, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 4, + 65, + 248, + 0, + 32, + 6, + 65, + 31, + 113, + 116, + 32, + 9, + 114, + 34, + 9, + 54, + 2, + 20, + 32, + 10, + 65, + 255, + 31, + 113, + 34, + 5, + 65, + 1, + 75, + 65, + 3, + 65, + 2, + 32, + 5, + 65, + 255, + 5, + 75, + 27, + 32, + 10, + 65, + 128, + 128, + 1, + 113, + 27, + 65, + 6, + 116, + 34, + 10, + 65, + 128, + 240, + 1, + 114, + 65, + 31, + 112, + 33, + 12, + 65, + 0, + 33, + 5, + 2, + 64, + 32, + 6, + 65, + 119, + 75, + 13, + 0, + 32, + 8, + 32, + 9, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 9, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 8, + 73, + 13, + 0, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 21, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 9, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 9, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 4, + 32, + 7, + 65, + 8, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 4, + 32, + 10, + 32, + 12, + 114, + 65, + 31, + 115, + 32, + 7, + 65, + 31, + 113, + 116, + 32, + 9, + 114, + 34, + 9, + 54, + 2, + 20, + 32, + 7, + 65, + 119, + 75, + 13, + 0, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 20, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 9, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 9, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 65, + 1, + 33, + 8, + 32, + 4, + 32, + 6, + 65, + 1, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 4, + 32, + 3, + 65, + 255, + 1, + 113, + 65, + 4, + 70, + 32, + 6, + 65, + 31, + 113, + 116, + 32, + 9, + 114, + 34, + 6, + 54, + 2, + 20, + 32, + 7, + 65, + 8, + 79, + 4, + 64, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 7, + 79, + 13, + 4, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 4, + 45, + 0, + 28, + 33, + 9, + 32, + 11, + 69, + 4, + 64, + 65, + 0, + 33, + 8, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 32, + 1, + 40, + 2, + 144, + 128, + 4, + 65, + 128, + 128, + 16, + 113, + 65, + 18, + 118, + 32, + 1, + 40, + 2, + 8, + 65, + 48, + 73, + 114, + 16, + 3, + 65, + 255, + 1, + 113, + 65, + 2, + 70, + 13, + 6, + 11, + 32, + 1, + 40, + 2, + 8, + 34, + 10, + 65, + 32, + 77, + 13, + 3, + 32, + 4, + 40, + 2, + 16, + 32, + 5, + 107, + 65, + 1, + 106, + 32, + 10, + 73, + 13, + 3, + 32, + 11, + 32, + 1, + 65, + 224, + 128, + 4, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 216, + 128, + 4, + 106, + 40, + 2, + 0, + 107, + 32, + 1, + 65, + 228, + 128, + 4, + 106, + 40, + 2, + 0, + 77, + 114, + 69, + 13, + 4, + 12, + 6, + 11, + 65, + 184, + 171, + 192, + 0, + 65, + 47, + 65, + 232, + 171, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 5, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 32, + 7, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 11, + 13, + 2, + 11, + 32, + 8, + 69, + 13, + 2, + 32, + 4, + 32, + 9, + 58, + 0, + 28, + 32, + 4, + 32, + 7, + 54, + 2, + 24, + 32, + 4, + 32, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 5, + 54, + 2, + 16, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 65, + 1, + 16, + 3, + 65, + 255, + 1, + 113, + 65, + 2, + 71, + 13, + 2, + 11, + 65, + 1, + 33, + 5, + 12, + 11, + 11, + 32, + 4, + 32, + 9, + 58, + 0, + 28, + 32, + 4, + 32, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 7, + 65, + 2, + 106, + 54, + 2, + 24, + 2, + 64, + 2, + 64, + 32, + 7, + 65, + 6, + 73, + 13, + 0, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 8, + 79, + 13, + 15, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 8, + 54, + 2, + 24, + 32, + 8, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 8, + 13, + 0, + 65, + 0, + 33, + 7, + 12, + 1, + 11, + 32, + 4, + 65, + 8, + 54, + 2, + 24, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 8, + 79, + 13, + 14, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 4, + 32, + 7, + 65, + 16, + 106, + 54, + 2, + 24, + 32, + 4, + 32, + 1, + 47, + 1, + 8, + 32, + 7, + 116, + 32, + 6, + 114, + 34, + 6, + 54, + 2, + 20, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 8, + 79, + 13, + 13, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 7, + 65, + 120, + 106, + 34, + 8, + 54, + 2, + 24, + 32, + 8, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 7, + 65, + 8, + 106, + 54, + 2, + 24, + 32, + 4, + 32, + 1, + 47, + 1, + 8, + 65, + 255, + 255, + 3, + 115, + 32, + 8, + 116, + 32, + 6, + 114, + 34, + 7, + 54, + 2, + 20, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 12, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 1, + 40, + 2, + 8, + 34, + 11, + 69, + 13, + 0, + 65, + 0, + 33, + 9, + 3, + 64, + 32, + 1, + 40, + 2, + 212, + 128, + 4, + 32, + 1, + 40, + 2, + 216, + 128, + 4, + 32, + 9, + 106, + 65, + 255, + 255, + 1, + 113, + 106, + 65, + 128, + 128, + 8, + 106, + 45, + 0, + 0, + 33, + 10, + 32, + 4, + 32, + 6, + 65, + 8, + 106, + 34, + 8, + 54, + 2, + 24, + 32, + 4, + 32, + 10, + 32, + 6, + 65, + 31, + 113, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 20, + 2, + 64, + 32, + 6, + 65, + 119, + 75, + 4, + 64, + 32, + 8, + 33, + 6, + 12, + 1, + 11, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 14, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 9, + 65, + 1, + 106, + 34, + 9, + 32, + 11, + 71, + 13, + 0, + 11, + 11, + 32, + 3, + 65, + 255, + 1, + 113, + 34, + 6, + 69, + 13, + 1, + 32, + 4, + 40, + 2, + 24, + 33, + 3, + 32, + 6, + 65, + 4, + 71, + 13, + 0, + 2, + 64, + 32, + 3, + 69, + 4, + 64, + 65, + 0, + 33, + 6, + 12, + 1, + 11, + 32, + 4, + 65, + 8, + 54, + 2, + 24, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 32, + 4, + 40, + 2, + 20, + 33, + 7, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 79, + 13, + 14, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 1, + 65, + 145, + 128, + 4, + 106, + 45, + 0, + 0, + 65, + 16, + 113, + 69, + 13, + 1, + 32, + 4, + 32, + 6, + 65, + 8, + 106, + 54, + 2, + 24, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 32, + 1, + 65, + 168, + 128, + 4, + 106, + 40, + 2, + 0, + 34, + 3, + 65, + 24, + 118, + 32, + 6, + 116, + 114, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 11, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 8, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 8, + 54, + 2, + 24, + 32, + 4, + 32, + 3, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 32, + 6, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 20, + 32, + 3, + 65, + 255, + 1, + 113, + 33, + 8, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 11, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 9, + 65, + 120, + 106, + 34, + 6, + 54, + 2, + 24, + 32, + 6, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 9, + 54, + 2, + 24, + 32, + 4, + 32, + 3, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 32, + 6, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 11, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 6, + 65, + 120, + 106, + 34, + 3, + 54, + 2, + 24, + 32, + 3, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 6, + 54, + 2, + 24, + 32, + 4, + 32, + 8, + 32, + 3, + 116, + 32, + 7, + 114, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 11, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 7, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 7, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 3, + 54, + 2, + 24, + 32, + 3, + 65, + 7, + 75, + 13, + 0, + 11, + 12, + 1, + 11, + 32, + 4, + 32, + 3, + 65, + 3, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 4, + 40, + 2, + 20, + 33, + 6, + 32, + 7, + 65, + 8, + 79, + 4, + 64, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 79, + 13, + 13, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 7, + 54, + 2, + 24, + 32, + 7, + 65, + 7, + 75, + 13, + 0, + 11, + 11, + 32, + 4, + 2, + 127, + 32, + 7, + 69, + 4, + 64, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 65, + 16, + 12, + 1, + 11, + 32, + 4, + 65, + 8, + 54, + 2, + 24, + 32, + 4, + 40, + 2, + 16, + 33, + 5, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 79, + 13, + 13, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 3, + 65, + 120, + 106, + 34, + 8, + 54, + 2, + 24, + 32, + 8, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 3, + 65, + 8, + 106, + 11, + 54, + 2, + 24, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 79, + 13, + 12, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 34, + 8, + 65, + 120, + 106, + 34, + 3, + 54, + 2, + 24, + 32, + 3, + 65, + 7, + 75, + 13, + 0, + 11, + 32, + 4, + 32, + 8, + 65, + 8, + 106, + 54, + 2, + 24, + 32, + 4, + 65, + 255, + 255, + 3, + 32, + 3, + 116, + 32, + 6, + 114, + 34, + 6, + 54, + 2, + 20, + 3, + 64, + 32, + 5, + 32, + 4, + 40, + 2, + 12, + 34, + 3, + 73, + 4, + 64, + 32, + 4, + 40, + 2, + 8, + 32, + 5, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 16, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 16, + 32, + 4, + 32, + 4, + 40, + 2, + 20, + 65, + 8, + 118, + 34, + 6, + 54, + 2, + 20, + 32, + 4, + 32, + 4, + 40, + 2, + 24, + 65, + 120, + 106, + 34, + 3, + 54, + 2, + 24, + 32, + 3, + 65, + 7, + 75, + 13, + 1, + 12, + 2, + 11, + 11, + 12, + 11, + 11, + 65, + 0, + 33, + 5, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 65, + 0, + 65, + 192, + 4, + 16, + 131, + 1, + 26, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 65, + 192, + 4, + 106, + 65, + 0, + 65, + 192, + 0, + 16, + 131, + 1, + 26, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 66, + 1, + 55, + 2, + 0, + 32, + 1, + 40, + 2, + 8, + 33, + 3, + 32, + 1, + 65, + 0, + 54, + 2, + 8, + 32, + 1, + 32, + 4, + 41, + 2, + 20, + 55, + 2, + 184, + 128, + 4, + 32, + 1, + 65, + 216, + 128, + 4, + 106, + 34, + 6, + 32, + 3, + 32, + 6, + 40, + 2, + 0, + 106, + 54, + 2, + 0, + 32, + 1, + 65, + 148, + 128, + 4, + 106, + 34, + 3, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 40, + 2, + 16, + 34, + 3, + 69, + 4, + 64, + 32, + 1, + 40, + 2, + 164, + 128, + 4, + 33, + 6, + 12, + 8, + 11, + 32, + 4, + 45, + 0, + 28, + 33, + 6, + 32, + 2, + 40, + 2, + 8, + 34, + 8, + 4, + 64, + 32, + 8, + 32, + 1, + 65, + 172, + 128, + 4, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 11, + 32, + 2, + 40, + 2, + 16, + 65, + 1, + 70, + 4, + 64, + 32, + 6, + 69, + 13, + 4, + 32, + 2, + 65, + 24, + 106, + 40, + 2, + 0, + 34, + 7, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 34, + 8, + 107, + 34, + 6, + 32, + 3, + 32, + 6, + 32, + 3, + 73, + 34, + 9, + 27, + 34, + 6, + 32, + 8, + 106, + 34, + 5, + 32, + 6, + 73, + 13, + 1, + 32, + 7, + 32, + 5, + 73, + 13, + 2, + 32, + 6, + 65, + 205, + 153, + 5, + 79, + 13, + 3, + 32, + 2, + 40, + 2, + 20, + 32, + 8, + 106, + 32, + 1, + 40, + 2, + 192, + 128, + 4, + 32, + 6, + 16, + 121, + 26, + 32, + 1, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 32, + 6, + 106, + 54, + 2, + 176, + 128, + 4, + 32, + 9, + 69, + 13, + 6, + 32, + 1, + 32, + 6, + 54, + 2, + 160, + 128, + 4, + 32, + 1, + 32, + 3, + 32, + 6, + 107, + 54, + 2, + 164, + 128, + 4, + 12, + 6, + 11, + 32, + 3, + 65, + 205, + 153, + 5, + 79, + 13, + 4, + 32, + 2, + 40, + 2, + 20, + 32, + 1, + 40, + 2, + 192, + 128, + 4, + 32, + 3, + 32, + 2, + 65, + 24, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 5, + 32, + 1, + 65, + 180, + 128, + 4, + 106, + 65, + 127, + 54, + 2, + 0, + 65, + 127, + 12, + 6, + 11, + 32, + 8, + 32, + 5, + 65, + 180, + 147, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 5, + 32, + 7, + 65, + 180, + 147, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 6, + 65, + 204, + 153, + 5, + 65, + 196, + 147, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 176, + 128, + 4, + 32, + 3, + 106, + 54, + 2, + 176, + 128, + 4, + 32, + 1, + 40, + 2, + 164, + 128, + 4, + 12, + 2, + 11, + 32, + 3, + 65, + 204, + 153, + 5, + 65, + 164, + 147, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 1, + 40, + 2, + 164, + 128, + 4, + 11, + 33, + 6, + 65, + 0, + 33, + 5, + 11, + 32, + 0, + 32, + 6, + 54, + 2, + 4, + 32, + 0, + 32, + 5, + 54, + 2, + 0, + 32, + 4, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 5, + 32, + 6, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 32, + 8, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 32, + 3, + 65, + 164, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 130, + 22, + 1, + 14, + 127, + 35, + 0, + 65, + 144, + 44, + 107, + 34, + 10, + 36, + 0, + 32, + 10, + 65, + 8, + 106, + 65, + 0, + 65, + 132, + 1, + 16, + 131, + 1, + 26, + 32, + 10, + 65, + 140, + 1, + 106, + 65, + 0, + 65, + 132, + 1, + 16, + 131, + 1, + 26, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 1, + 65, + 2, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 69, + 4, + 64, + 32, + 10, + 65, + 144, + 2, + 106, + 65, + 0, + 65, + 128, + 9, + 16, + 131, + 1, + 26, + 32, + 10, + 65, + 144, + 11, + 106, + 65, + 0, + 65, + 128, + 9, + 16, + 131, + 1, + 26, + 32, + 2, + 13, + 1, + 32, + 10, + 65, + 144, + 20, + 106, + 65, + 0, + 65, + 128, + 16, + 16, + 131, + 1, + 26, + 65, + 0, + 12, + 6, + 11, + 32, + 2, + 69, + 13, + 14, + 32, + 0, + 32, + 1, + 65, + 160, + 2, + 108, + 106, + 65, + 128, + 27, + 106, + 33, + 4, + 32, + 2, + 33, + 5, + 3, + 64, + 32, + 4, + 45, + 0, + 0, + 34, + 6, + 65, + 32, + 75, + 13, + 2, + 32, + 10, + 65, + 8, + 106, + 32, + 6, + 65, + 2, + 116, + 106, + 34, + 6, + 32, + 6, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 65, + 1, + 106, + 33, + 4, + 32, + 5, + 65, + 127, + 106, + 34, + 5, + 13, + 0, + 11, + 12, + 14, + 11, + 32, + 0, + 32, + 1, + 65, + 192, + 4, + 108, + 106, + 33, + 5, + 65, + 0, + 33, + 4, + 3, + 64, + 32, + 4, + 65, + 160, + 2, + 70, + 13, + 2, + 32, + 5, + 47, + 1, + 0, + 34, + 8, + 4, + 64, + 32, + 6, + 65, + 159, + 2, + 75, + 13, + 4, + 32, + 10, + 65, + 144, + 2, + 106, + 32, + 6, + 65, + 2, + 116, + 106, + 34, + 14, + 32, + 4, + 59, + 1, + 2, + 32, + 14, + 32, + 8, + 59, + 1, + 0, + 32, + 6, + 65, + 1, + 106, + 33, + 6, + 11, + 32, + 5, + 65, + 2, + 106, + 33, + 5, + 32, + 4, + 65, + 1, + 106, + 34, + 4, + 32, + 2, + 71, + 13, + 0, + 11, + 12, + 3, + 11, + 32, + 6, + 65, + 33, + 65, + 212, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 160, + 2, + 65, + 160, + 2, + 65, + 228, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 65, + 160, + 2, + 65, + 244, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 65, + 161, + 2, + 79, + 13, + 1, + 65, + 0, + 33, + 14, + 32, + 10, + 65, + 144, + 20, + 106, + 65, + 0, + 65, + 128, + 16, + 16, + 131, + 1, + 26, + 65, + 0, + 32, + 6, + 69, + 13, + 0, + 26, + 32, + 6, + 65, + 2, + 116, + 33, + 5, + 32, + 10, + 65, + 144, + 2, + 106, + 33, + 4, + 3, + 64, + 32, + 10, + 65, + 144, + 20, + 106, + 32, + 4, + 45, + 0, + 0, + 65, + 2, + 116, + 106, + 34, + 8, + 32, + 8, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 45, + 0, + 1, + 65, + 2, + 116, + 32, + 10, + 106, + 65, + 144, + 28, + 106, + 34, + 8, + 32, + 8, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 65, + 4, + 106, + 33, + 4, + 32, + 5, + 65, + 124, + 106, + 34, + 5, + 13, + 0, + 11, + 32, + 6, + 33, + 14, + 32, + 10, + 40, + 2, + 144, + 28, + 11, + 32, + 14, + 70, + 27, + 33, + 15, + 32, + 10, + 65, + 144, + 20, + 106, + 33, + 9, + 32, + 10, + 65, + 144, + 11, + 106, + 33, + 11, + 32, + 10, + 65, + 144, + 2, + 106, + 33, + 4, + 32, + 14, + 34, + 5, + 33, + 12, + 65, + 0, + 33, + 6, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 12, + 33, + 7, + 32, + 11, + 33, + 8, + 32, + 5, + 33, + 12, + 32, + 4, + 33, + 11, + 32, + 10, + 65, + 144, + 36, + 106, + 65, + 0, + 65, + 128, + 8, + 16, + 131, + 1, + 26, + 32, + 6, + 65, + 2, + 70, + 13, + 2, + 65, + 0, + 33, + 4, + 65, + 0, + 33, + 5, + 3, + 64, + 32, + 10, + 65, + 144, + 36, + 106, + 32, + 4, + 106, + 32, + 5, + 54, + 2, + 0, + 32, + 4, + 32, + 9, + 106, + 40, + 2, + 0, + 32, + 5, + 106, + 33, + 5, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 65, + 128, + 8, + 71, + 13, + 0, + 11, + 32, + 12, + 4, + 64, + 32, + 11, + 32, + 12, + 65, + 2, + 116, + 106, + 33, + 16, + 32, + 6, + 65, + 3, + 116, + 65, + 8, + 113, + 33, + 17, + 32, + 11, + 33, + 4, + 3, + 64, + 32, + 10, + 65, + 144, + 36, + 106, + 32, + 4, + 47, + 1, + 0, + 34, + 18, + 32, + 17, + 118, + 65, + 255, + 1, + 113, + 65, + 2, + 116, + 106, + 34, + 5, + 40, + 2, + 0, + 34, + 13, + 32, + 7, + 79, + 13, + 3, + 32, + 8, + 32, + 13, + 65, + 2, + 116, + 106, + 34, + 13, + 32, + 4, + 65, + 2, + 106, + 47, + 1, + 0, + 59, + 1, + 2, + 32, + 13, + 32, + 18, + 59, + 1, + 0, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 32, + 16, + 71, + 13, + 0, + 11, + 11, + 32, + 9, + 65, + 128, + 8, + 106, + 33, + 9, + 32, + 8, + 33, + 4, + 32, + 7, + 33, + 5, + 32, + 6, + 65, + 1, + 106, + 34, + 13, + 33, + 6, + 32, + 13, + 32, + 15, + 71, + 13, + 0, + 11, + 2, + 64, + 32, + 7, + 14, + 2, + 7, + 4, + 0, + 11, + 32, + 8, + 32, + 8, + 47, + 1, + 0, + 32, + 8, + 47, + 1, + 4, + 106, + 59, + 1, + 0, + 32, + 7, + 65, + 127, + 106, + 34, + 4, + 65, + 2, + 79, + 4, + 64, + 32, + 8, + 65, + 4, + 106, + 33, + 6, + 65, + 0, + 33, + 5, + 65, + 2, + 33, + 11, + 65, + 2, + 33, + 9, + 3, + 64, + 32, + 11, + 65, + 127, + 106, + 33, + 12, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 9, + 32, + 7, + 73, + 4, + 64, + 32, + 5, + 32, + 7, + 79, + 13, + 3, + 32, + 8, + 32, + 5, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 32, + 8, + 32, + 9, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 34, + 13, + 79, + 13, + 1, + 11, + 32, + 5, + 32, + 7, + 79, + 13, + 3, + 32, + 12, + 32, + 7, + 79, + 13, + 4, + 32, + 6, + 32, + 8, + 32, + 5, + 65, + 2, + 116, + 106, + 34, + 13, + 47, + 1, + 0, + 59, + 1, + 0, + 32, + 13, + 32, + 12, + 59, + 1, + 0, + 32, + 5, + 65, + 1, + 106, + 33, + 5, + 12, + 1, + 11, + 32, + 12, + 32, + 7, + 79, + 13, + 4, + 32, + 6, + 32, + 13, + 59, + 1, + 0, + 32, + 9, + 65, + 1, + 106, + 33, + 9, + 11, + 2, + 64, + 32, + 9, + 32, + 7, + 79, + 4, + 64, + 32, + 12, + 32, + 7, + 73, + 13, + 1, + 12, + 21, + 11, + 32, + 5, + 32, + 12, + 79, + 13, + 7, + 32, + 5, + 32, + 7, + 79, + 13, + 5, + 32, + 8, + 32, + 5, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 32, + 8, + 32, + 9, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 79, + 13, + 7, + 32, + 12, + 32, + 7, + 79, + 13, + 20, + 11, + 32, + 5, + 32, + 7, + 79, + 13, + 5, + 32, + 6, + 32, + 8, + 32, + 5, + 65, + 2, + 116, + 106, + 34, + 13, + 47, + 1, + 0, + 32, + 6, + 47, + 1, + 0, + 106, + 59, + 1, + 0, + 32, + 13, + 32, + 12, + 59, + 1, + 0, + 32, + 5, + 65, + 1, + 106, + 33, + 5, + 12, + 7, + 11, + 32, + 5, + 32, + 7, + 65, + 228, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 32, + 7, + 65, + 244, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 11, + 65, + 127, + 106, + 32, + 7, + 65, + 132, + 149, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 11, + 65, + 127, + 106, + 32, + 7, + 65, + 148, + 149, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 32, + 7, + 65, + 164, + 149, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 32, + 7, + 65, + 196, + 149, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 12, + 32, + 7, + 79, + 4, + 64, + 32, + 11, + 65, + 127, + 106, + 32, + 7, + 65, + 212, + 149, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 32, + 8, + 32, + 9, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 32, + 6, + 47, + 1, + 0, + 106, + 59, + 1, + 0, + 32, + 9, + 65, + 1, + 106, + 33, + 9, + 11, + 32, + 6, + 65, + 4, + 106, + 33, + 6, + 32, + 7, + 32, + 11, + 65, + 1, + 106, + 34, + 11, + 71, + 13, + 0, + 11, + 32, + 7, + 65, + 126, + 106, + 33, + 11, + 2, + 64, + 2, + 64, + 32, + 7, + 65, + 1, + 75, + 4, + 64, + 65, + 0, + 33, + 9, + 32, + 8, + 32, + 11, + 65, + 2, + 116, + 106, + 65, + 0, + 59, + 1, + 0, + 32, + 11, + 69, + 13, + 8, + 32, + 7, + 65, + 125, + 106, + 33, + 6, + 32, + 8, + 32, + 7, + 65, + 2, + 116, + 106, + 65, + 116, + 106, + 33, + 5, + 3, + 64, + 32, + 6, + 32, + 7, + 79, + 13, + 2, + 32, + 7, + 32, + 5, + 47, + 1, + 0, + 34, + 12, + 77, + 13, + 3, + 32, + 5, + 32, + 8, + 32, + 12, + 65, + 2, + 116, + 106, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 32, + 5, + 65, + 124, + 106, + 33, + 5, + 32, + 6, + 65, + 127, + 106, + 34, + 6, + 65, + 127, + 71, + 13, + 0, + 11, + 32, + 11, + 33, + 9, + 12, + 8, + 11, + 32, + 11, + 32, + 7, + 65, + 228, + 149, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 32, + 7, + 65, + 244, + 149, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 12, + 32, + 7, + 65, + 132, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 0, + 33, + 9, + 32, + 7, + 65, + 2, + 116, + 32, + 8, + 106, + 65, + 120, + 106, + 65, + 0, + 59, + 1, + 0, + 12, + 4, + 11, + 32, + 13, + 32, + 7, + 65, + 212, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 2, + 65, + 2, + 65, + 196, + 148, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 65, + 160, + 2, + 65, + 132, + 151, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 8, + 65, + 1, + 59, + 1, + 0, + 32, + 8, + 65, + 4, + 106, + 33, + 6, + 12, + 1, + 11, + 65, + 0, + 33, + 11, + 65, + 1, + 33, + 13, + 2, + 64, + 3, + 64, + 2, + 64, + 32, + 9, + 65, + 0, + 72, + 4, + 64, + 65, + 0, + 33, + 6, + 12, + 1, + 11, + 32, + 9, + 65, + 1, + 106, + 33, + 12, + 32, + 8, + 32, + 9, + 65, + 2, + 116, + 106, + 33, + 5, + 65, + 0, + 33, + 6, + 2, + 64, + 3, + 64, + 32, + 9, + 32, + 7, + 79, + 13, + 1, + 32, + 5, + 47, + 1, + 0, + 32, + 11, + 65, + 255, + 255, + 3, + 113, + 71, + 13, + 2, + 32, + 5, + 65, + 124, + 106, + 33, + 5, + 32, + 6, + 65, + 1, + 106, + 33, + 6, + 32, + 9, + 65, + 127, + 106, + 34, + 9, + 65, + 127, + 71, + 13, + 0, + 11, + 32, + 12, + 33, + 6, + 65, + 127, + 33, + 9, + 12, + 1, + 11, + 32, + 9, + 32, + 7, + 65, + 148, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 13, + 32, + 6, + 74, + 4, + 64, + 32, + 8, + 32, + 4, + 65, + 2, + 116, + 106, + 33, + 5, + 3, + 64, + 32, + 4, + 32, + 7, + 79, + 13, + 3, + 32, + 5, + 32, + 11, + 59, + 1, + 0, + 32, + 5, + 65, + 124, + 106, + 33, + 5, + 32, + 4, + 65, + 127, + 106, + 33, + 4, + 32, + 13, + 65, + 127, + 106, + 34, + 13, + 32, + 6, + 74, + 13, + 0, + 11, + 11, + 32, + 11, + 65, + 1, + 106, + 33, + 11, + 32, + 6, + 65, + 1, + 116, + 34, + 13, + 65, + 0, + 74, + 13, + 0, + 11, + 32, + 7, + 69, + 13, + 2, + 32, + 8, + 32, + 7, + 65, + 2, + 116, + 106, + 33, + 6, + 12, + 1, + 11, + 32, + 4, + 32, + 7, + 65, + 164, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 33, + 4, + 3, + 64, + 32, + 4, + 47, + 1, + 0, + 34, + 5, + 65, + 33, + 79, + 13, + 3, + 32, + 10, + 65, + 8, + 106, + 32, + 5, + 65, + 2, + 116, + 106, + 34, + 5, + 32, + 5, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 6, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 71, + 13, + 0, + 11, + 12, + 1, + 11, + 65, + 0, + 33, + 7, + 11, + 2, + 64, + 32, + 14, + 65, + 2, + 73, + 13, + 0, + 2, + 64, + 32, + 3, + 65, + 32, + 70, + 4, + 64, + 32, + 10, + 65, + 8, + 106, + 32, + 3, + 65, + 2, + 116, + 106, + 34, + 12, + 40, + 2, + 0, + 33, + 6, + 12, + 1, + 11, + 32, + 3, + 65, + 2, + 116, + 33, + 4, + 32, + 10, + 65, + 12, + 106, + 33, + 6, + 65, + 0, + 33, + 5, + 3, + 64, + 32, + 4, + 32, + 6, + 106, + 40, + 2, + 0, + 32, + 5, + 106, + 33, + 5, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 65, + 128, + 1, + 71, + 13, + 0, + 11, + 32, + 10, + 65, + 8, + 106, + 32, + 3, + 65, + 2, + 116, + 106, + 34, + 12, + 32, + 12, + 40, + 2, + 0, + 32, + 5, + 106, + 34, + 6, + 54, + 2, + 0, + 32, + 3, + 69, + 13, + 1, + 11, + 32, + 6, + 33, + 11, + 32, + 3, + 65, + 1, + 71, + 4, + 64, + 32, + 3, + 65, + 2, + 116, + 32, + 10, + 106, + 65, + 4, + 106, + 33, + 4, + 65, + 1, + 33, + 5, + 3, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 5, + 65, + 31, + 113, + 116, + 32, + 11, + 106, + 33, + 11, + 32, + 4, + 65, + 124, + 106, + 33, + 4, + 32, + 3, + 32, + 5, + 65, + 1, + 106, + 34, + 5, + 71, + 13, + 0, + 11, + 11, + 65, + 1, + 32, + 3, + 65, + 31, + 113, + 116, + 34, + 13, + 32, + 11, + 79, + 13, + 0, + 32, + 3, + 65, + 2, + 116, + 32, + 10, + 106, + 65, + 12, + 106, + 33, + 9, + 2, + 64, + 3, + 64, + 32, + 12, + 32, + 6, + 65, + 127, + 106, + 54, + 2, + 0, + 32, + 13, + 65, + 1, + 106, + 33, + 13, + 32, + 9, + 33, + 5, + 32, + 3, + 33, + 4, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 4, + 65, + 2, + 73, + 13, + 1, + 32, + 4, + 65, + 127, + 106, + 34, + 6, + 65, + 32, + 75, + 13, + 2, + 32, + 5, + 65, + 120, + 106, + 32, + 5, + 65, + 124, + 106, + 34, + 15, + 33, + 5, + 32, + 6, + 33, + 4, + 40, + 2, + 0, + 34, + 16, + 69, + 13, + 0, + 11, + 32, + 15, + 65, + 124, + 106, + 32, + 16, + 65, + 127, + 106, + 54, + 2, + 0, + 32, + 6, + 65, + 1, + 106, + 65, + 32, + 75, + 13, + 3, + 32, + 15, + 32, + 15, + 40, + 2, + 0, + 65, + 2, + 106, + 54, + 2, + 0, + 11, + 32, + 11, + 32, + 13, + 70, + 13, + 3, + 32, + 12, + 40, + 2, + 0, + 33, + 6, + 12, + 1, + 11, + 11, + 32, + 4, + 65, + 127, + 106, + 65, + 33, + 65, + 180, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 33, + 65, + 33, + 65, + 196, + 150, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 0, + 32, + 1, + 65, + 160, + 2, + 108, + 106, + 34, + 11, + 65, + 128, + 27, + 106, + 65, + 0, + 65, + 160, + 2, + 16, + 131, + 1, + 26, + 32, + 0, + 32, + 1, + 65, + 192, + 4, + 108, + 106, + 65, + 192, + 13, + 106, + 65, + 0, + 65, + 192, + 4, + 16, + 131, + 1, + 26, + 32, + 3, + 69, + 13, + 2, + 32, + 8, + 65, + 2, + 106, + 33, + 8, + 65, + 1, + 33, + 6, + 3, + 64, + 32, + 14, + 33, + 5, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 6, + 65, + 33, + 73, + 4, + 64, + 32, + 5, + 32, + 10, + 65, + 8, + 106, + 32, + 6, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 34, + 4, + 107, + 33, + 14, + 32, + 5, + 32, + 4, + 73, + 13, + 2, + 32, + 7, + 32, + 5, + 73, + 13, + 3, + 32, + 4, + 69, + 13, + 4, + 65, + 0, + 32, + 4, + 65, + 2, + 116, + 107, + 33, + 4, + 32, + 8, + 32, + 5, + 65, + 2, + 116, + 106, + 33, + 12, + 3, + 64, + 32, + 4, + 32, + 12, + 106, + 47, + 1, + 0, + 34, + 5, + 65, + 159, + 2, + 75, + 13, + 2, + 32, + 5, + 32, + 11, + 106, + 65, + 128, + 27, + 106, + 32, + 6, + 58, + 0, + 0, + 32, + 4, + 65, + 4, + 106, + 34, + 4, + 13, + 0, + 11, + 12, + 4, + 11, + 32, + 6, + 65, + 33, + 65, + 164, + 151, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 65, + 160, + 2, + 65, + 196, + 151, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 14, + 32, + 5, + 65, + 180, + 151, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 5, + 32, + 7, + 65, + 180, + 151, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 6, + 32, + 3, + 79, + 32, + 6, + 32, + 6, + 32, + 3, + 73, + 106, + 34, + 6, + 32, + 3, + 75, + 114, + 69, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 5, + 65, + 33, + 65, + 148, + 151, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 11, + 65, + 127, + 106, + 32, + 7, + 65, + 180, + 149, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 0, + 33, + 5, + 32, + 10, + 65, + 0, + 54, + 2, + 144, + 1, + 2, + 64, + 32, + 3, + 65, + 2, + 73, + 13, + 0, + 65, + 2, + 33, + 4, + 3, + 64, + 32, + 4, + 65, + 127, + 106, + 34, + 6, + 65, + 33, + 79, + 4, + 64, + 32, + 6, + 65, + 33, + 65, + 212, + 151, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 65, + 32, + 77, + 4, + 64, + 32, + 4, + 32, + 3, + 79, + 32, + 10, + 65, + 140, + 1, + 106, + 32, + 4, + 65, + 2, + 116, + 106, + 32, + 10, + 65, + 8, + 106, + 32, + 6, + 65, + 2, + 116, + 106, + 40, + 2, + 0, + 32, + 5, + 106, + 65, + 1, + 116, + 34, + 5, + 54, + 2, + 0, + 32, + 4, + 32, + 4, + 32, + 3, + 73, + 106, + 34, + 6, + 33, + 4, + 32, + 6, + 32, + 3, + 75, + 114, + 69, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 4, + 65, + 33, + 65, + 228, + 151, + 192, + 0, + 16, + 98, + 0, + 11, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 0, + 32, + 1, + 65, + 160, + 2, + 108, + 106, + 34, + 3, + 65, + 160, + 29, + 106, + 33, + 8, + 32, + 3, + 65, + 128, + 27, + 106, + 33, + 9, + 32, + 0, + 32, + 1, + 65, + 192, + 4, + 108, + 106, + 65, + 192, + 13, + 106, + 33, + 7, + 3, + 64, + 32, + 8, + 32, + 9, + 70, + 13, + 1, + 2, + 64, + 32, + 9, + 45, + 0, + 0, + 34, + 0, + 4, + 64, + 32, + 0, + 65, + 32, + 75, + 13, + 1, + 32, + 10, + 65, + 140, + 1, + 106, + 32, + 0, + 65, + 2, + 116, + 106, + 34, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 65, + 1, + 106, + 54, + 2, + 0, + 65, + 0, + 33, + 5, + 65, + 0, + 33, + 6, + 3, + 64, + 32, + 4, + 65, + 1, + 113, + 32, + 5, + 65, + 1, + 116, + 114, + 33, + 5, + 32, + 4, + 65, + 1, + 118, + 33, + 4, + 32, + 6, + 65, + 1, + 106, + 34, + 6, + 65, + 255, + 1, + 113, + 32, + 0, + 73, + 13, + 0, + 11, + 32, + 7, + 32, + 5, + 59, + 1, + 0, + 11, + 32, + 7, + 65, + 2, + 106, + 33, + 7, + 32, + 9, + 65, + 1, + 106, + 33, + 9, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 0, + 65, + 33, + 65, + 244, + 151, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 10, + 65, + 144, + 44, + 106, + 36, + 0, + 11, + 154, + 13, + 1, + 11, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 8, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 6, + 65, + 3, + 70, + 4, + 64, + 32, + 0, + 66, + 129, + 128, + 128, + 128, + 96, + 55, + 2, + 8, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 12, + 1, + 11, + 32, + 1, + 45, + 0, + 240, + 213, + 2, + 33, + 11, + 32, + 1, + 65, + 0, + 58, + 0, + 240, + 213, + 2, + 32, + 1, + 44, + 0, + 243, + 213, + 2, + 65, + 127, + 76, + 4, + 64, + 32, + 0, + 66, + 129, + 128, + 128, + 128, + 80, + 55, + 2, + 8, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 12, + 1, + 11, + 32, + 1, + 45, + 0, + 242, + 213, + 2, + 33, + 7, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 6, + 65, + 4, + 70, + 34, + 10, + 69, + 65, + 0, + 32, + 1, + 45, + 0, + 241, + 213, + 2, + 34, + 9, + 27, + 69, + 4, + 64, + 65, + 8, + 65, + 9, + 32, + 7, + 27, + 33, + 7, + 32, + 1, + 32, + 10, + 32, + 9, + 65, + 0, + 71, + 114, + 58, + 0, + 241, + 213, + 2, + 2, + 64, + 32, + 11, + 65, + 0, + 32, + 6, + 65, + 4, + 70, + 27, + 69, + 4, + 64, + 32, + 1, + 40, + 2, + 236, + 85, + 34, + 9, + 69, + 13, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 3, + 32, + 5, + 32, + 9, + 32, + 9, + 32, + 5, + 75, + 27, + 34, + 2, + 106, + 34, + 5, + 32, + 3, + 73, + 13, + 3, + 32, + 5, + 65, + 129, + 128, + 2, + 79, + 13, + 4, + 32, + 4, + 32, + 1, + 32, + 3, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 2, + 16, + 121, + 26, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 2, + 107, + 34, + 3, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 2, + 106, + 65, + 255, + 255, + 1, + 113, + 54, + 2, + 232, + 85, + 32, + 0, + 65, + 12, + 106, + 32, + 3, + 32, + 1, + 45, + 0, + 243, + 213, + 2, + 114, + 69, + 54, + 2, + 0, + 12, + 16, + 11, + 65, + 0, + 33, + 6, + 32, + 8, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 4, + 32, + 5, + 65, + 0, + 32, + 7, + 65, + 4, + 114, + 16, + 2, + 32, + 1, + 32, + 8, + 44, + 0, + 4, + 34, + 2, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 8, + 33, + 3, + 32, + 8, + 40, + 2, + 0, + 33, + 4, + 2, + 64, + 32, + 2, + 65, + 0, + 72, + 4, + 127, + 65, + 125, + 5, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 1, + 12, + 2, + 11, + 32, + 1, + 65, + 255, + 1, + 58, + 0, + 243, + 213, + 2, + 65, + 123, + 11, + 33, + 1, + 65, + 1, + 33, + 6, + 11, + 32, + 0, + 32, + 6, + 54, + 2, + 8, + 32, + 0, + 32, + 3, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 0, + 65, + 12, + 106, + 32, + 1, + 54, + 2, + 0, + 12, + 15, + 11, + 32, + 7, + 32, + 7, + 65, + 2, + 114, + 32, + 6, + 65, + 4, + 70, + 27, + 33, + 14, + 32, + 1, + 65, + 240, + 213, + 0, + 106, + 33, + 15, + 32, + 1, + 40, + 2, + 232, + 85, + 33, + 7, + 32, + 3, + 69, + 13, + 3, + 32, + 8, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 7, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 45, + 0, + 4, + 34, + 9, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 0, + 34, + 12, + 32, + 3, + 75, + 13, + 11, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 6, + 65, + 4, + 70, + 13, + 10, + 65, + 0, + 33, + 11, + 3, + 64, + 32, + 1, + 32, + 7, + 54, + 2, + 236, + 85, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 10, + 32, + 5, + 32, + 7, + 32, + 7, + 32, + 5, + 75, + 27, + 34, + 6, + 106, + 34, + 7, + 32, + 10, + 73, + 13, + 17, + 32, + 7, + 65, + 129, + 128, + 2, + 79, + 13, + 16, + 32, + 12, + 32, + 13, + 106, + 33, + 13, + 32, + 4, + 32, + 1, + 32, + 10, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 6, + 16, + 121, + 33, + 10, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 6, + 107, + 34, + 7, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 6, + 106, + 65, + 255, + 255, + 1, + 113, + 34, + 16, + 54, + 2, + 232, + 85, + 32, + 6, + 32, + 11, + 106, + 33, + 11, + 32, + 9, + 65, + 24, + 116, + 65, + 24, + 117, + 65, + 0, + 72, + 13, + 5, + 32, + 9, + 65, + 255, + 1, + 113, + 34, + 17, + 69, + 33, + 4, + 32, + 7, + 69, + 33, + 9, + 32, + 7, + 32, + 17, + 69, + 114, + 13, + 7, + 32, + 5, + 32, + 6, + 107, + 34, + 5, + 69, + 13, + 7, + 32, + 3, + 32, + 12, + 107, + 34, + 3, + 69, + 13, + 7, + 32, + 6, + 32, + 10, + 106, + 33, + 4, + 32, + 8, + 32, + 1, + 32, + 2, + 32, + 12, + 106, + 34, + 2, + 32, + 3, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 16, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 45, + 0, + 4, + 34, + 9, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 3, + 32, + 8, + 40, + 2, + 0, + 34, + 12, + 79, + 13, + 0, + 11, + 12, + 11, + 11, + 32, + 0, + 66, + 129, + 128, + 128, + 128, + 96, + 55, + 2, + 8, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 12, + 13, + 11, + 32, + 3, + 32, + 5, + 65, + 220, + 186, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 5, + 65, + 128, + 128, + 2, + 65, + 220, + 186, + 192, + 0, + 16, + 99, + 0, + 11, + 65, + 0, + 33, + 3, + 32, + 8, + 32, + 1, + 32, + 2, + 65, + 0, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 7, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 44, + 0, + 4, + 34, + 9, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 0, + 34, + 12, + 13, + 7, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 6, + 65, + 4, + 70, + 4, + 64, + 65, + 0, + 33, + 11, + 3, + 64, + 32, + 1, + 32, + 7, + 54, + 2, + 236, + 85, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 6, + 32, + 5, + 32, + 7, + 32, + 7, + 32, + 5, + 75, + 27, + 34, + 3, + 106, + 34, + 7, + 32, + 6, + 73, + 13, + 6, + 32, + 7, + 65, + 128, + 128, + 2, + 75, + 13, + 7, + 32, + 4, + 32, + 1, + 32, + 6, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 3, + 16, + 121, + 33, + 7, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 3, + 107, + 34, + 4, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 3, + 106, + 65, + 255, + 255, + 1, + 113, + 34, + 12, + 54, + 2, + 232, + 85, + 32, + 3, + 32, + 11, + 106, + 33, + 11, + 65, + 1, + 33, + 10, + 32, + 9, + 65, + 24, + 116, + 65, + 24, + 117, + 65, + 0, + 72, + 4, + 64, + 65, + 125, + 33, + 6, + 12, + 12, + 11, + 65, + 123, + 33, + 6, + 2, + 64, + 32, + 9, + 65, + 255, + 1, + 113, + 14, + 2, + 6, + 12, + 0, + 11, + 32, + 5, + 32, + 3, + 107, + 34, + 5, + 69, + 13, + 11, + 32, + 3, + 32, + 7, + 106, + 33, + 4, + 65, + 0, + 33, + 3, + 32, + 8, + 32, + 1, + 32, + 2, + 65, + 0, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 12, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 45, + 0, + 4, + 34, + 9, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 8, + 40, + 2, + 0, + 34, + 12, + 69, + 13, + 0, + 11, + 12, + 8, + 11, + 32, + 1, + 32, + 7, + 54, + 2, + 236, + 85, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 6, + 32, + 5, + 32, + 7, + 32, + 7, + 32, + 5, + 75, + 27, + 34, + 11, + 106, + 34, + 7, + 32, + 6, + 73, + 13, + 4, + 32, + 7, + 65, + 129, + 128, + 2, + 79, + 13, + 5, + 32, + 4, + 32, + 1, + 32, + 6, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 11, + 16, + 121, + 26, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 11, + 107, + 34, + 2, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 11, + 106, + 65, + 255, + 255, + 1, + 113, + 54, + 2, + 232, + 85, + 32, + 9, + 65, + 0, + 78, + 13, + 1, + 11, + 65, + 1, + 33, + 10, + 65, + 125, + 33, + 6, + 12, + 8, + 11, + 65, + 1, + 33, + 10, + 65, + 123, + 33, + 6, + 32, + 9, + 65, + 1, + 70, + 13, + 7, + 32, + 9, + 69, + 33, + 4, + 32, + 2, + 69, + 33, + 9, + 11, + 32, + 4, + 32, + 9, + 113, + 33, + 6, + 65, + 0, + 33, + 10, + 12, + 6, + 11, + 12, + 4, + 11, + 32, + 6, + 32, + 7, + 65, + 220, + 186, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 7, + 65, + 128, + 128, + 2, + 65, + 220, + 186, + 192, + 0, + 16, + 99, + 0, + 11, + 65, + 0, + 33, + 11, + 3, + 64, + 32, + 1, + 32, + 7, + 54, + 2, + 236, + 85, + 32, + 1, + 40, + 2, + 232, + 85, + 34, + 10, + 32, + 5, + 32, + 7, + 32, + 7, + 32, + 5, + 75, + 27, + 34, + 6, + 106, + 34, + 7, + 32, + 10, + 73, + 13, + 6, + 32, + 7, + 65, + 128, + 128, + 2, + 75, + 13, + 5, + 32, + 12, + 32, + 13, + 106, + 33, + 13, + 32, + 4, + 32, + 1, + 32, + 10, + 106, + 65, + 240, + 213, + 0, + 106, + 32, + 6, + 16, + 121, + 33, + 7, + 32, + 1, + 32, + 1, + 40, + 2, + 236, + 85, + 32, + 6, + 107, + 34, + 4, + 54, + 2, + 236, + 85, + 32, + 1, + 32, + 1, + 40, + 2, + 232, + 85, + 32, + 6, + 106, + 65, + 255, + 255, + 1, + 113, + 34, + 16, + 54, + 2, + 232, + 85, + 32, + 6, + 32, + 11, + 106, + 33, + 11, + 65, + 1, + 33, + 10, + 32, + 9, + 65, + 24, + 116, + 65, + 24, + 117, + 65, + 0, + 72, + 4, + 64, + 65, + 125, + 33, + 6, + 12, + 4, + 11, + 32, + 9, + 65, + 255, + 1, + 113, + 69, + 13, + 2, + 32, + 5, + 32, + 6, + 107, + 34, + 5, + 69, + 4, + 64, + 65, + 123, + 33, + 6, + 12, + 4, + 11, + 32, + 6, + 32, + 7, + 106, + 33, + 4, + 32, + 8, + 32, + 1, + 32, + 2, + 32, + 12, + 106, + 34, + 2, + 32, + 3, + 32, + 12, + 107, + 34, + 3, + 32, + 15, + 65, + 128, + 128, + 2, + 32, + 16, + 32, + 14, + 16, + 2, + 32, + 1, + 32, + 8, + 45, + 0, + 4, + 34, + 9, + 58, + 0, + 243, + 213, + 2, + 32, + 8, + 40, + 2, + 8, + 33, + 7, + 32, + 3, + 32, + 8, + 40, + 2, + 0, + 34, + 12, + 79, + 13, + 0, + 11, + 11, + 32, + 12, + 32, + 3, + 65, + 204, + 186, + 192, + 0, + 16, + 101, + 0, + 11, + 65, + 123, + 65, + 1, + 32, + 4, + 27, + 33, + 6, + 32, + 4, + 65, + 0, + 71, + 33, + 10, + 11, + 32, + 0, + 32, + 10, + 54, + 2, + 8, + 32, + 0, + 32, + 11, + 54, + 2, + 4, + 32, + 0, + 32, + 13, + 54, + 2, + 0, + 32, + 0, + 65, + 12, + 106, + 32, + 6, + 54, + 2, + 0, + 11, + 32, + 8, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 32, + 7, + 65, + 128, + 128, + 2, + 65, + 220, + 186, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 10, + 32, + 7, + 65, + 220, + 186, + 192, + 0, + 16, + 100, + 0, + 11, + 174, + 12, + 1, + 1, + 127, + 32, + 0, + 40, + 2, + 0, + 65, + 127, + 115, + 33, + 3, + 32, + 2, + 65, + 192, + 0, + 79, + 4, + 64, + 3, + 64, + 32, + 1, + 65, + 51, + 106, + 45, + 0, + 0, + 32, + 1, + 65, + 35, + 106, + 45, + 0, + 0, + 32, + 1, + 65, + 19, + 106, + 45, + 0, + 0, + 32, + 1, + 45, + 0, + 0, + 32, + 3, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 180, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 1, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 172, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 2, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 164, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 3, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 24, + 118, + 115, + 65, + 2, + 116, + 65, + 172, + 156, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 4, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 148, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 5, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 140, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 6, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 132, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 7, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 252, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 8, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 244, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 9, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 236, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 10, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 228, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 11, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 220, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 12, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 212, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 13, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 204, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 14, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 196, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 15, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 188, + 192, + 0, + 106, + 40, + 2, + 0, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 34, + 3, + 65, + 24, + 118, + 115, + 65, + 2, + 116, + 65, + 172, + 156, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 20, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 148, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 21, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 140, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 22, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 132, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 23, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 252, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 24, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 244, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 25, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 236, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 26, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 228, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 27, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 220, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 28, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 212, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 29, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 204, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 30, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 196, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 31, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 188, + 192, + 0, + 106, + 40, + 2, + 0, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 32, + 1, + 65, + 18, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 164, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 1, + 65, + 17, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 172, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 1, + 65, + 16, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 180, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 34, + 3, + 65, + 24, + 118, + 115, + 65, + 2, + 116, + 65, + 172, + 156, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 36, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 148, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 37, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 140, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 38, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 132, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 39, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 252, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 40, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 244, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 41, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 236, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 42, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 228, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 43, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 220, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 44, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 212, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 45, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 204, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 46, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 196, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 47, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 188, + 192, + 0, + 106, + 40, + 2, + 0, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 32, + 1, + 65, + 34, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 164, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 1, + 65, + 33, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 172, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 1, + 65, + 32, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 180, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 34, + 3, + 65, + 24, + 118, + 115, + 65, + 2, + 116, + 65, + 172, + 156, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 52, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 148, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 53, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 140, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 54, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 132, + 193, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 55, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 252, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 56, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 244, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 57, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 236, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 58, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 228, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 59, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 220, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 60, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 212, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 61, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 204, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 62, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 196, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 1, + 65, + 63, + 106, + 45, + 0, + 0, + 65, + 2, + 116, + 65, + 172, + 188, + 192, + 0, + 106, + 40, + 2, + 0, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 115, + 32, + 1, + 65, + 50, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 16, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 164, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 1, + 65, + 49, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 8, + 118, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 172, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 32, + 1, + 65, + 48, + 106, + 45, + 0, + 0, + 32, + 3, + 65, + 255, + 1, + 113, + 115, + 65, + 2, + 116, + 65, + 172, + 180, + 193, + 0, + 106, + 40, + 2, + 0, + 115, + 33, + 3, + 32, + 1, + 65, + 64, + 107, + 33, + 1, + 32, + 2, + 65, + 64, + 106, + 34, + 2, + 65, + 63, + 75, + 13, + 0, + 11, + 11, + 32, + 2, + 4, + 64, + 3, + 64, + 32, + 1, + 45, + 0, + 0, + 32, + 3, + 115, + 65, + 255, + 1, + 113, + 65, + 2, + 116, + 65, + 172, + 188, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 3, + 65, + 8, + 118, + 115, + 33, + 3, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 0, + 11, + 11, + 32, + 0, + 32, + 3, + 65, + 127, + 115, + 54, + 2, + 0, + 11, + 151, + 11, + 1, + 27, + 127, + 35, + 0, + 65, + 144, + 1, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 20, + 34, + 4, + 65, + 2, + 77, + 4, + 64, + 32, + 0, + 65, + 56, + 106, + 33, + 21, + 32, + 2, + 65, + 56, + 106, + 33, + 22, + 32, + 2, + 65, + 40, + 106, + 33, + 23, + 32, + 2, + 65, + 32, + 106, + 33, + 24, + 32, + 2, + 65, + 24, + 106, + 33, + 25, + 32, + 2, + 65, + 16, + 106, + 33, + 26, + 3, + 64, + 32, + 0, + 32, + 4, + 65, + 2, + 116, + 106, + 65, + 40, + 106, + 40, + 2, + 0, + 33, + 12, + 32, + 2, + 65, + 64, + 107, + 66, + 0, + 55, + 3, + 0, + 32, + 22, + 66, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 48, + 106, + 66, + 0, + 55, + 3, + 0, + 32, + 23, + 66, + 0, + 55, + 3, + 0, + 32, + 24, + 66, + 0, + 55, + 3, + 0, + 32, + 25, + 66, + 0, + 55, + 3, + 0, + 32, + 26, + 66, + 0, + 55, + 3, + 0, + 32, + 2, + 66, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 204, + 0, + 106, + 65, + 0, + 65, + 196, + 0, + 16, + 131, + 1, + 26, + 32, + 0, + 32, + 4, + 65, + 160, + 27, + 108, + 34, + 27, + 106, + 34, + 14, + 65, + 56, + 106, + 65, + 0, + 65, + 128, + 16, + 16, + 131, + 1, + 33, + 28, + 32, + 14, + 65, + 184, + 16, + 106, + 65, + 0, + 65, + 128, + 9, + 16, + 131, + 1, + 26, + 2, + 127, + 2, + 64, + 32, + 12, + 65, + 161, + 2, + 73, + 4, + 64, + 32, + 12, + 69, + 4, + 64, + 65, + 0, + 33, + 4, + 65, + 0, + 33, + 6, + 65, + 0, + 33, + 10, + 65, + 0, + 33, + 9, + 65, + 0, + 33, + 8, + 65, + 0, + 33, + 11, + 65, + 0, + 33, + 13, + 65, + 0, + 33, + 7, + 65, + 0, + 33, + 15, + 65, + 0, + 33, + 16, + 65, + 0, + 33, + 17, + 65, + 0, + 33, + 18, + 65, + 0, + 33, + 19, + 65, + 0, + 33, + 20, + 65, + 0, + 12, + 3, + 11, + 32, + 14, + 65, + 184, + 25, + 106, + 33, + 4, + 32, + 12, + 33, + 6, + 3, + 64, + 32, + 4, + 45, + 0, + 0, + 34, + 5, + 65, + 15, + 77, + 4, + 64, + 32, + 2, + 65, + 8, + 106, + 32, + 5, + 65, + 2, + 116, + 106, + 34, + 5, + 32, + 5, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 65, + 1, + 106, + 33, + 4, + 32, + 6, + 65, + 127, + 106, + 34, + 6, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 5, + 65, + 16, + 65, + 200, + 177, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 12, + 65, + 160, + 2, + 65, + 184, + 177, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 2, + 40, + 2, + 68, + 33, + 4, + 32, + 2, + 40, + 2, + 64, + 33, + 6, + 32, + 2, + 40, + 2, + 56, + 33, + 10, + 32, + 2, + 40, + 2, + 52, + 33, + 9, + 32, + 2, + 40, + 2, + 48, + 33, + 8, + 32, + 2, + 40, + 2, + 44, + 33, + 11, + 32, + 2, + 40, + 2, + 40, + 33, + 13, + 32, + 2, + 40, + 2, + 36, + 33, + 7, + 32, + 2, + 40, + 2, + 32, + 33, + 15, + 32, + 2, + 40, + 2, + 28, + 33, + 16, + 32, + 2, + 40, + 2, + 24, + 33, + 17, + 32, + 2, + 40, + 2, + 20, + 33, + 18, + 32, + 2, + 40, + 2, + 16, + 33, + 19, + 32, + 2, + 40, + 2, + 12, + 33, + 20, + 32, + 2, + 40, + 2, + 60, + 11, + 33, + 5, + 32, + 2, + 32, + 20, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 84, + 32, + 2, + 32, + 3, + 32, + 19, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 88, + 32, + 2, + 32, + 3, + 32, + 18, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 92, + 32, + 2, + 32, + 3, + 32, + 17, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 96, + 32, + 2, + 32, + 3, + 32, + 16, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 100, + 32, + 2, + 32, + 3, + 32, + 15, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 104, + 32, + 2, + 32, + 3, + 32, + 7, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 108, + 32, + 2, + 32, + 3, + 32, + 13, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 112, + 32, + 2, + 32, + 3, + 32, + 11, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 116, + 32, + 2, + 32, + 3, + 32, + 8, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 120, + 32, + 2, + 32, + 3, + 32, + 9, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 124, + 32, + 2, + 32, + 3, + 32, + 10, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 128, + 1, + 32, + 2, + 32, + 3, + 32, + 5, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 132, + 1, + 32, + 2, + 32, + 3, + 32, + 6, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 136, + 1, + 32, + 2, + 32, + 3, + 32, + 4, + 106, + 65, + 1, + 116, + 34, + 3, + 54, + 2, + 140, + 1, + 2, + 64, + 2, + 127, + 65, + 27, + 32, + 3, + 65, + 128, + 128, + 4, + 70, + 32, + 4, + 32, + 6, + 32, + 5, + 32, + 10, + 32, + 9, + 32, + 8, + 32, + 11, + 32, + 13, + 32, + 7, + 32, + 15, + 32, + 16, + 32, + 17, + 32, + 18, + 32, + 19, + 32, + 20, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 106, + 65, + 2, + 73, + 114, + 69, + 13, + 0, + 26, + 2, + 64, + 32, + 12, + 69, + 13, + 0, + 32, + 21, + 32, + 27, + 106, + 33, + 15, + 65, + 0, + 33, + 11, + 65, + 255, + 255, + 3, + 33, + 7, + 3, + 64, + 32, + 11, + 65, + 160, + 2, + 32, + 11, + 65, + 160, + 2, + 75, + 27, + 33, + 13, + 3, + 64, + 32, + 11, + 34, + 10, + 32, + 13, + 70, + 13, + 7, + 32, + 10, + 65, + 1, + 106, + 33, + 11, + 2, + 64, + 2, + 64, + 32, + 10, + 32, + 14, + 106, + 65, + 184, + 25, + 106, + 45, + 0, + 0, + 34, + 8, + 69, + 13, + 0, + 32, + 8, + 65, + 16, + 75, + 13, + 10, + 32, + 2, + 65, + 204, + 0, + 106, + 32, + 8, + 65, + 2, + 116, + 106, + 34, + 5, + 32, + 5, + 40, + 2, + 0, + 34, + 6, + 65, + 1, + 106, + 54, + 2, + 0, + 65, + 0, + 33, + 4, + 65, + 0, + 33, + 5, + 3, + 64, + 32, + 6, + 65, + 1, + 113, + 32, + 4, + 34, + 9, + 65, + 1, + 116, + 114, + 33, + 4, + 32, + 6, + 65, + 1, + 118, + 33, + 6, + 32, + 5, + 65, + 1, + 106, + 34, + 5, + 65, + 255, + 1, + 113, + 32, + 8, + 73, + 13, + 0, + 11, + 32, + 8, + 65, + 11, + 79, + 13, + 1, + 32, + 4, + 65, + 255, + 7, + 75, + 13, + 0, + 32, + 8, + 65, + 9, + 116, + 32, + 10, + 114, + 33, + 5, + 32, + 15, + 32, + 4, + 65, + 1, + 116, + 106, + 33, + 6, + 65, + 1, + 32, + 8, + 65, + 31, + 113, + 116, + 34, + 10, + 65, + 1, + 116, + 33, + 9, + 3, + 64, + 32, + 6, + 32, + 5, + 59, + 1, + 0, + 32, + 6, + 32, + 9, + 106, + 33, + 6, + 32, + 4, + 32, + 10, + 106, + 34, + 4, + 65, + 128, + 8, + 73, + 13, + 0, + 11, + 11, + 32, + 11, + 32, + 12, + 73, + 13, + 1, + 12, + 3, + 11, + 11, + 2, + 127, + 32, + 7, + 32, + 28, + 32, + 4, + 65, + 255, + 7, + 113, + 65, + 1, + 116, + 106, + 34, + 5, + 47, + 1, + 0, + 34, + 6, + 13, + 0, + 26, + 32, + 5, + 32, + 7, + 59, + 1, + 0, + 32, + 7, + 34, + 6, + 65, + 126, + 106, + 11, + 33, + 5, + 32, + 9, + 65, + 8, + 118, + 65, + 255, + 255, + 255, + 3, + 113, + 33, + 9, + 2, + 64, + 32, + 8, + 65, + 12, + 73, + 4, + 64, + 32, + 5, + 33, + 7, + 12, + 1, + 11, + 65, + 11, + 33, + 4, + 3, + 64, + 32, + 9, + 65, + 1, + 118, + 34, + 9, + 65, + 1, + 113, + 32, + 6, + 65, + 127, + 115, + 106, + 34, + 6, + 65, + 16, + 116, + 65, + 16, + 117, + 33, + 7, + 32, + 6, + 65, + 255, + 255, + 3, + 113, + 65, + 192, + 4, + 79, + 13, + 10, + 32, + 4, + 65, + 1, + 106, + 33, + 4, + 2, + 64, + 32, + 14, + 32, + 7, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 34, + 7, + 47, + 1, + 0, + 34, + 6, + 4, + 64, + 32, + 5, + 33, + 7, + 12, + 1, + 11, + 32, + 7, + 32, + 5, + 59, + 1, + 0, + 32, + 5, + 34, + 6, + 65, + 126, + 106, + 34, + 7, + 33, + 5, + 11, + 32, + 4, + 65, + 255, + 1, + 113, + 32, + 8, + 73, + 13, + 0, + 11, + 11, + 32, + 9, + 65, + 1, + 118, + 65, + 1, + 113, + 32, + 6, + 65, + 127, + 115, + 106, + 34, + 6, + 65, + 16, + 116, + 65, + 16, + 117, + 33, + 5, + 32, + 6, + 65, + 255, + 255, + 3, + 113, + 65, + 192, + 4, + 79, + 13, + 9, + 32, + 14, + 32, + 5, + 65, + 1, + 116, + 106, + 65, + 184, + 16, + 106, + 32, + 10, + 59, + 1, + 0, + 32, + 11, + 32, + 12, + 73, + 13, + 0, + 11, + 11, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 20, + 34, + 5, + 14, + 3, + 0, + 3, + 1, + 3, + 11, + 32, + 1, + 65, + 0, + 54, + 2, + 12, + 65, + 12, + 12, + 1, + 11, + 32, + 1, + 65, + 0, + 54, + 2, + 12, + 65, + 10, + 11, + 32, + 2, + 65, + 144, + 1, + 106, + 36, + 0, + 65, + 8, + 116, + 65, + 1, + 114, + 15, + 11, + 32, + 0, + 32, + 5, + 65, + 127, + 106, + 34, + 4, + 54, + 2, + 20, + 32, + 4, + 65, + 3, + 73, + 13, + 0, + 11, + 11, + 32, + 4, + 65, + 3, + 65, + 168, + 177, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 13, + 65, + 160, + 2, + 65, + 216, + 177, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 65, + 17, + 65, + 232, + 177, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 7, + 65, + 192, + 4, + 65, + 248, + 177, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 65, + 192, + 4, + 65, + 136, + 178, + 192, + 0, + 16, + 98, + 0, + 11, + 164, + 11, + 2, + 19, + 127, + 5, + 126, + 35, + 0, + 65, + 144, + 1, + 107, + 34, + 3, + 36, + 0, + 65, + 3, + 33, + 14, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 0, + 65, + 208, + 0, + 106, + 33, + 16, + 32, + 0, + 65, + 232, + 0, + 106, + 33, + 10, + 32, + 0, + 65, + 140, + 1, + 106, + 33, + 17, + 32, + 3, + 65, + 4, + 114, + 33, + 18, + 32, + 3, + 65, + 236, + 0, + 106, + 33, + 11, + 32, + 0, + 65, + 216, + 0, + 106, + 33, + 13, + 32, + 0, + 65, + 148, + 1, + 106, + 33, + 7, + 32, + 0, + 65, + 252, + 0, + 106, + 33, + 19, + 32, + 0, + 65, + 240, + 0, + 106, + 33, + 20, + 32, + 0, + 65, + 228, + 0, + 106, + 33, + 21, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 92, + 65, + 1, + 71, + 4, + 64, + 32, + 3, + 65, + 0, + 54, + 2, + 36, + 32, + 3, + 65, + 0, + 58, + 0, + 32, + 32, + 3, + 32, + 2, + 54, + 2, + 28, + 32, + 3, + 32, + 1, + 54, + 2, + 24, + 32, + 3, + 32, + 7, + 40, + 2, + 0, + 54, + 2, + 20, + 32, + 3, + 32, + 0, + 40, + 2, + 140, + 1, + 54, + 2, + 16, + 32, + 3, + 65, + 224, + 0, + 106, + 32, + 3, + 65, + 16, + 106, + 16, + 13, + 32, + 3, + 65, + 216, + 0, + 106, + 32, + 11, + 65, + 32, + 106, + 40, + 2, + 0, + 34, + 4, + 54, + 2, + 0, + 32, + 3, + 65, + 208, + 0, + 106, + 32, + 11, + 65, + 24, + 106, + 41, + 2, + 0, + 34, + 23, + 55, + 3, + 0, + 32, + 3, + 65, + 200, + 0, + 106, + 32, + 11, + 65, + 16, + 106, + 41, + 2, + 0, + 34, + 24, + 55, + 3, + 0, + 32, + 3, + 65, + 64, + 107, + 32, + 11, + 65, + 8, + 106, + 41, + 2, + 0, + 34, + 25, + 55, + 3, + 0, + 32, + 3, + 32, + 11, + 41, + 2, + 0, + 34, + 26, + 55, + 3, + 56, + 32, + 3, + 41, + 2, + 100, + 33, + 22, + 32, + 3, + 40, + 2, + 96, + 32, + 3, + 40, + 2, + 36, + 33, + 6, + 32, + 3, + 65, + 48, + 106, + 34, + 9, + 32, + 4, + 54, + 2, + 0, + 32, + 3, + 65, + 40, + 106, + 34, + 4, + 32, + 23, + 55, + 3, + 0, + 32, + 3, + 65, + 32, + 106, + 34, + 15, + 32, + 24, + 55, + 3, + 0, + 32, + 3, + 65, + 24, + 106, + 34, + 8, + 32, + 25, + 55, + 3, + 0, + 32, + 3, + 32, + 26, + 55, + 3, + 16, + 69, + 4, + 64, + 32, + 3, + 65, + 128, + 1, + 106, + 34, + 5, + 32, + 9, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 248, + 0, + 106, + 34, + 9, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 240, + 0, + 106, + 34, + 4, + 32, + 15, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 232, + 0, + 106, + 34, + 15, + 32, + 8, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 16, + 55, + 3, + 96, + 2, + 64, + 32, + 0, + 40, + 2, + 92, + 69, + 13, + 0, + 2, + 64, + 32, + 0, + 40, + 2, + 96, + 34, + 8, + 69, + 13, + 0, + 32, + 21, + 40, + 2, + 0, + 34, + 12, + 69, + 13, + 0, + 32, + 8, + 32, + 12, + 65, + 1, + 16, + 156, + 1, + 11, + 2, + 64, + 32, + 0, + 40, + 2, + 108, + 34, + 8, + 69, + 13, + 0, + 32, + 20, + 40, + 2, + 0, + 34, + 12, + 69, + 13, + 0, + 32, + 8, + 32, + 12, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 40, + 2, + 120, + 34, + 8, + 69, + 13, + 0, + 32, + 19, + 40, + 2, + 0, + 34, + 12, + 69, + 13, + 0, + 32, + 8, + 32, + 12, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 32, + 22, + 55, + 2, + 96, + 32, + 0, + 65, + 1, + 54, + 2, + 92, + 32, + 10, + 32, + 3, + 41, + 3, + 96, + 55, + 2, + 0, + 32, + 10, + 65, + 8, + 106, + 32, + 15, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 10, + 65, + 16, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 10, + 65, + 24, + 106, + 32, + 9, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 10, + 65, + 32, + 106, + 32, + 5, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 7, + 40, + 2, + 0, + 33, + 4, + 32, + 7, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 0, + 54, + 2, + 0, + 32, + 6, + 32, + 4, + 107, + 33, + 4, + 12, + 2, + 11, + 32, + 3, + 32, + 22, + 55, + 3, + 96, + 32, + 3, + 65, + 224, + 0, + 106, + 16, + 133, + 1, + 65, + 255, + 1, + 113, + 65, + 17, + 71, + 13, + 3, + 32, + 17, + 32, + 7, + 40, + 2, + 0, + 32, + 2, + 16, + 75, + 32, + 0, + 40, + 2, + 140, + 1, + 32, + 7, + 40, + 2, + 0, + 106, + 32, + 1, + 32, + 2, + 16, + 121, + 26, + 32, + 7, + 32, + 7, + 40, + 2, + 0, + 32, + 2, + 106, + 54, + 2, + 0, + 32, + 3, + 32, + 2, + 54, + 2, + 4, + 32, + 3, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 45, + 0, + 96, + 65, + 1, + 77, + 4, + 64, + 32, + 2, + 33, + 4, + 12, + 3, + 11, + 32, + 3, + 40, + 2, + 100, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 100, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 70, + 13, + 10, + 32, + 3, + 40, + 2, + 4, + 33, + 4, + 12, + 2, + 11, + 32, + 3, + 65, + 224, + 0, + 106, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 47, + 32, + 3, + 41, + 2, + 100, + 33, + 22, + 32, + 3, + 40, + 2, + 96, + 65, + 1, + 70, + 13, + 3, + 2, + 64, + 32, + 2, + 32, + 22, + 167, + 34, + 4, + 77, + 32, + 22, + 66, + 128, + 128, + 128, + 128, + 240, + 31, + 131, + 66, + 128, + 128, + 128, + 128, + 32, + 82, + 114, + 13, + 0, + 32, + 13, + 40, + 2, + 0, + 34, + 9, + 65, + 7, + 75, + 13, + 0, + 65, + 8, + 32, + 9, + 107, + 34, + 5, + 32, + 2, + 32, + 4, + 107, + 34, + 6, + 32, + 6, + 32, + 5, + 75, + 27, + 34, + 6, + 32, + 4, + 106, + 34, + 5, + 32, + 6, + 73, + 13, + 5, + 32, + 5, + 32, + 2, + 75, + 13, + 6, + 32, + 16, + 32, + 9, + 32, + 6, + 16, + 75, + 32, + 0, + 40, + 2, + 80, + 32, + 13, + 40, + 2, + 0, + 106, + 32, + 1, + 32, + 4, + 106, + 32, + 6, + 16, + 121, + 26, + 32, + 13, + 32, + 13, + 40, + 2, + 0, + 32, + 6, + 106, + 54, + 2, + 0, + 32, + 3, + 32, + 5, + 54, + 2, + 4, + 32, + 3, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 12, + 2, + 11, + 32, + 3, + 65, + 0, + 54, + 2, + 0, + 11, + 32, + 3, + 32, + 4, + 54, + 2, + 4, + 11, + 32, + 4, + 69, + 4, + 64, + 65, + 28, + 65, + 1, + 16, + 149, + 1, + 34, + 0, + 69, + 13, + 5, + 32, + 0, + 65, + 24, + 106, + 65, + 244, + 128, + 192, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 0, + 65, + 16, + 106, + 65, + 236, + 128, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 228, + 128, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 220, + 128, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 6, + 32, + 1, + 66, + 156, + 128, + 128, + 128, + 192, + 3, + 55, + 2, + 4, + 32, + 1, + 32, + 0, + 54, + 2, + 0, + 65, + 14, + 32, + 1, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 34, + 23, + 66, + 8, + 136, + 33, + 22, + 32, + 23, + 167, + 33, + 14, + 12, + 11, + 11, + 32, + 2, + 32, + 4, + 73, + 13, + 6, + 32, + 1, + 32, + 4, + 106, + 33, + 1, + 32, + 2, + 32, + 4, + 107, + 33, + 2, + 12, + 8, + 11, + 32, + 3, + 32, + 3, + 41, + 3, + 96, + 55, + 2, + 4, + 32, + 3, + 65, + 1, + 54, + 2, + 0, + 12, + 6, + 11, + 32, + 3, + 65, + 1, + 54, + 2, + 0, + 32, + 3, + 32, + 22, + 55, + 2, + 4, + 12, + 5, + 11, + 32, + 22, + 167, + 32, + 5, + 65, + 228, + 129, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 5, + 32, + 2, + 65, + 228, + 129, + 192, + 0, + 16, + 99, + 0, + 11, + 65, + 28, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 4, + 32, + 2, + 65, + 204, + 128, + 192, + 0, + 16, + 101, + 0, + 11, + 32, + 18, + 16, + 133, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 3, + 53, + 0, + 5, + 32, + 3, + 65, + 9, + 106, + 51, + 0, + 0, + 32, + 3, + 65, + 11, + 106, + 49, + 0, + 0, + 66, + 16, + 134, + 132, + 66, + 32, + 134, + 132, + 33, + 22, + 32, + 3, + 45, + 0, + 4, + 33, + 14, + 12, + 3, + 11, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 13, + 0, + 32, + 3, + 45, + 0, + 4, + 65, + 2, + 73, + 13, + 0, + 32, + 3, + 40, + 2, + 8, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 8, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 2, + 13, + 0, + 11, + 11, + 32, + 3, + 65, + 144, + 1, + 106, + 36, + 0, + 32, + 14, + 173, + 66, + 255, + 1, + 131, + 32, + 22, + 66, + 8, + 134, + 132, + 11, + 165, + 9, + 2, + 5, + 127, + 1, + 126, + 35, + 0, + 65, + 240, + 3, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 216, + 2, + 106, + 16, + 124, + 32, + 3, + 65, + 248, + 2, + 106, + 34, + 4, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 66, + 1, + 55, + 3, + 240, + 2, + 32, + 3, + 65, + 168, + 1, + 106, + 65, + 0, + 16, + 136, + 1, + 32, + 3, + 65, + 32, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 24, + 106, + 32, + 3, + 41, + 3, + 240, + 2, + 55, + 3, + 0, + 32, + 3, + 65, + 16, + 106, + 32, + 3, + 65, + 232, + 2, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 3, + 65, + 224, + 2, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 216, + 2, + 55, + 3, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 149, + 1, + 34, + 4, + 4, + 64, + 32, + 3, + 65, + 196, + 0, + 106, + 66, + 128, + 128, + 2, + 55, + 2, + 0, + 32, + 3, + 65, + 56, + 106, + 32, + 3, + 65, + 184, + 1, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 48, + 106, + 32, + 3, + 65, + 176, + 1, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 168, + 1, + 55, + 3, + 40, + 32, + 3, + 32, + 4, + 54, + 2, + 64, + 65, + 8, + 65, + 1, + 16, + 149, + 1, + 34, + 4, + 69, + 13, + 1, + 32, + 3, + 65, + 148, + 1, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 212, + 0, + 106, + 66, + 8, + 55, + 2, + 0, + 32, + 3, + 66, + 1, + 55, + 2, + 140, + 1, + 32, + 3, + 65, + 0, + 54, + 2, + 92, + 32, + 3, + 32, + 4, + 54, + 2, + 80, + 32, + 3, + 32, + 1, + 32, + 2, + 16, + 10, + 33, + 8, + 32, + 3, + 65, + 168, + 1, + 106, + 32, + 3, + 65, + 152, + 1, + 16, + 121, + 26, + 2, + 127, + 2, + 64, + 32, + 3, + 2, + 127, + 32, + 8, + 167, + 34, + 4, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 4, + 64, + 32, + 3, + 65, + 163, + 1, + 106, + 32, + 8, + 66, + 56, + 136, + 60, + 0, + 0, + 32, + 3, + 65, + 161, + 1, + 106, + 32, + 8, + 66, + 40, + 136, + 61, + 0, + 0, + 32, + 3, + 32, + 4, + 58, + 0, + 156, + 1, + 32, + 3, + 65, + 1, + 54, + 2, + 152, + 1, + 32, + 3, + 32, + 8, + 66, + 8, + 136, + 62, + 0, + 157, + 1, + 2, + 64, + 32, + 3, + 40, + 2, + 192, + 1, + 69, + 13, + 0, + 32, + 3, + 65, + 168, + 1, + 106, + 16, + 82, + 34, + 8, + 167, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 8, + 66, + 32, + 136, + 167, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 4, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 192, + 1, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 40, + 2, + 196, + 1, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 65, + 224, + 1, + 106, + 40, + 2, + 0, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 156, + 1, + 32, + 3, + 65, + 236, + 1, + 106, + 40, + 2, + 0, + 34, + 4, + 4, + 64, + 32, + 3, + 40, + 2, + 232, + 1, + 32, + 4, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 65, + 252, + 1, + 106, + 40, + 2, + 0, + 34, + 4, + 4, + 64, + 32, + 3, + 40, + 2, + 248, + 1, + 32, + 4, + 65, + 1, + 16, + 156, + 1, + 11, + 2, + 64, + 32, + 3, + 40, + 2, + 132, + 2, + 69, + 13, + 0, + 2, + 64, + 32, + 3, + 65, + 136, + 2, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 140, + 2, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 156, + 1, + 11, + 2, + 64, + 32, + 3, + 65, + 148, + 2, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 152, + 2, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 65, + 160, + 2, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 164, + 2, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 65, + 184, + 2, + 106, + 40, + 2, + 0, + 34, + 4, + 4, + 64, + 32, + 3, + 40, + 2, + 180, + 2, + 32, + 4, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 65, + 152, + 1, + 106, + 65, + 4, + 114, + 12, + 1, + 11, + 32, + 3, + 65, + 216, + 2, + 106, + 32, + 3, + 65, + 168, + 1, + 106, + 65, + 152, + 1, + 16, + 121, + 26, + 32, + 3, + 65, + 152, + 1, + 106, + 32, + 3, + 65, + 216, + 2, + 106, + 16, + 54, + 32, + 3, + 40, + 2, + 152, + 1, + 65, + 1, + 71, + 13, + 1, + 32, + 3, + 65, + 152, + 1, + 106, + 65, + 4, + 114, + 11, + 41, + 2, + 0, + 55, + 3, + 192, + 2, + 32, + 3, + 65, + 192, + 2, + 106, + 16, + 133, + 1, + 33, + 4, + 32, + 3, + 65, + 180, + 1, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 3, + 65, + 236, + 2, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 10, + 54, + 2, + 172, + 1, + 32, + 3, + 66, + 2, + 55, + 2, + 220, + 2, + 32, + 3, + 65, + 244, + 132, + 192, + 0, + 54, + 2, + 216, + 2, + 32, + 3, + 32, + 4, + 58, + 0, + 215, + 2, + 32, + 3, + 32, + 3, + 65, + 192, + 2, + 106, + 54, + 2, + 176, + 1, + 32, + 3, + 32, + 3, + 65, + 215, + 2, + 106, + 54, + 2, + 168, + 1, + 32, + 3, + 32, + 3, + 65, + 168, + 1, + 106, + 54, + 2, + 232, + 2, + 32, + 3, + 65, + 200, + 2, + 106, + 32, + 3, + 65, + 216, + 2, + 106, + 16, + 51, + 32, + 3, + 40, + 2, + 200, + 2, + 34, + 5, + 32, + 3, + 40, + 2, + 208, + 2, + 16, + 0, + 33, + 4, + 32, + 3, + 40, + 2, + 204, + 2, + 34, + 6, + 4, + 64, + 32, + 5, + 32, + 6, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 45, + 0, + 192, + 2, + 65, + 2, + 79, + 4, + 64, + 32, + 3, + 40, + 2, + 196, + 2, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 196, + 2, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 3, + 65, + 160, + 1, + 106, + 41, + 3, + 0, + 33, + 8, + 32, + 3, + 40, + 2, + 156, + 1, + 33, + 4, + 65, + 0, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 13, + 2, + 2, + 64, + 32, + 8, + 167, + 34, + 5, + 32, + 8, + 66, + 32, + 136, + 167, + 34, + 2, + 77, + 4, + 64, + 32, + 4, + 33, + 1, + 12, + 1, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 1, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 156, + 1, + 12, + 1, + 11, + 32, + 4, + 32, + 5, + 32, + 2, + 16, + 143, + 1, + 34, + 1, + 69, + 13, + 4, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 240, + 3, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 8, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 32, + 4, + 16, + 168, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 169, + 8, + 1, + 6, + 127, + 35, + 0, + 65, + 240, + 0, + 107, + 34, + 5, + 36, + 0, + 32, + 5, + 32, + 3, + 54, + 2, + 12, + 32, + 5, + 32, + 2, + 54, + 2, + 8, + 65, + 1, + 33, + 6, + 32, + 1, + 33, + 7, + 2, + 64, + 32, + 1, + 65, + 129, + 2, + 73, + 13, + 0, + 65, + 0, + 32, + 1, + 107, + 33, + 9, + 65, + 128, + 2, + 33, + 8, + 3, + 64, + 2, + 64, + 32, + 8, + 32, + 1, + 79, + 13, + 0, + 65, + 0, + 33, + 6, + 32, + 0, + 32, + 8, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 0, + 32, + 8, + 33, + 7, + 12, + 2, + 11, + 32, + 8, + 65, + 127, + 106, + 33, + 7, + 65, + 0, + 33, + 6, + 32, + 8, + 65, + 1, + 70, + 13, + 1, + 32, + 8, + 32, + 9, + 106, + 32, + 7, + 33, + 8, + 65, + 1, + 71, + 13, + 0, + 11, + 11, + 32, + 5, + 32, + 7, + 54, + 2, + 20, + 32, + 5, + 32, + 0, + 54, + 2, + 16, + 32, + 5, + 65, + 0, + 65, + 5, + 32, + 6, + 27, + 54, + 2, + 28, + 32, + 5, + 65, + 228, + 196, + 193, + 0, + 65, + 136, + 203, + 193, + 0, + 32, + 6, + 27, + 54, + 2, + 24, + 2, + 64, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 2, + 32, + 1, + 75, + 34, + 6, + 32, + 3, + 32, + 1, + 75, + 114, + 69, + 4, + 64, + 32, + 2, + 32, + 3, + 75, + 13, + 1, + 2, + 64, + 32, + 2, + 69, + 32, + 1, + 32, + 2, + 70, + 114, + 69, + 4, + 64, + 32, + 1, + 32, + 2, + 77, + 13, + 1, + 32, + 0, + 32, + 2, + 106, + 44, + 0, + 0, + 65, + 64, + 72, + 13, + 1, + 11, + 32, + 3, + 33, + 2, + 11, + 32, + 5, + 32, + 2, + 54, + 2, + 32, + 32, + 2, + 65, + 0, + 32, + 1, + 32, + 2, + 71, + 27, + 69, + 4, + 64, + 32, + 2, + 33, + 6, + 12, + 3, + 11, + 32, + 1, + 65, + 1, + 106, + 33, + 3, + 3, + 64, + 2, + 64, + 32, + 2, + 32, + 1, + 79, + 13, + 0, + 32, + 0, + 32, + 2, + 106, + 44, + 0, + 0, + 65, + 64, + 72, + 13, + 0, + 32, + 2, + 33, + 6, + 32, + 5, + 65, + 36, + 106, + 12, + 5, + 11, + 32, + 2, + 65, + 127, + 106, + 33, + 6, + 32, + 2, + 65, + 1, + 70, + 13, + 3, + 32, + 2, + 32, + 3, + 70, + 32, + 6, + 33, + 2, + 69, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 5, + 32, + 2, + 32, + 3, + 32, + 6, + 27, + 54, + 2, + 40, + 32, + 5, + 65, + 196, + 0, + 106, + 65, + 3, + 54, + 2, + 0, + 32, + 5, + 65, + 220, + 0, + 106, + 65, + 62, + 54, + 2, + 0, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 62, + 54, + 2, + 0, + 32, + 5, + 66, + 3, + 55, + 2, + 52, + 32, + 5, + 65, + 176, + 203, + 193, + 0, + 54, + 2, + 48, + 32, + 5, + 65, + 61, + 54, + 2, + 76, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 64, + 32, + 5, + 32, + 5, + 65, + 24, + 106, + 54, + 2, + 88, + 32, + 5, + 32, + 5, + 65, + 16, + 106, + 54, + 2, + 80, + 32, + 5, + 32, + 5, + 65, + 40, + 106, + 54, + 2, + 72, + 12, + 3, + 11, + 32, + 5, + 65, + 228, + 0, + 106, + 65, + 62, + 54, + 2, + 0, + 32, + 5, + 65, + 220, + 0, + 106, + 65, + 62, + 54, + 2, + 0, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 5, + 65, + 196, + 0, + 106, + 65, + 4, + 54, + 2, + 0, + 32, + 5, + 66, + 4, + 55, + 2, + 52, + 32, + 5, + 65, + 236, + 203, + 193, + 0, + 54, + 2, + 48, + 32, + 5, + 65, + 61, + 54, + 2, + 76, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 64, + 32, + 5, + 32, + 5, + 65, + 24, + 106, + 54, + 2, + 96, + 32, + 5, + 32, + 5, + 65, + 16, + 106, + 54, + 2, + 88, + 32, + 5, + 32, + 5, + 65, + 12, + 106, + 54, + 2, + 80, + 32, + 5, + 32, + 5, + 65, + 8, + 106, + 54, + 2, + 72, + 12, + 2, + 11, + 32, + 5, + 65, + 36, + 106, + 11, + 33, + 8, + 2, + 64, + 32, + 1, + 32, + 6, + 70, + 13, + 0, + 65, + 1, + 33, + 3, + 65, + 0, + 33, + 9, + 2, + 64, + 32, + 0, + 32, + 6, + 106, + 34, + 7, + 44, + 0, + 0, + 34, + 2, + 65, + 0, + 78, + 4, + 64, + 32, + 5, + 32, + 2, + 65, + 255, + 1, + 113, + 54, + 2, + 36, + 32, + 5, + 65, + 40, + 106, + 33, + 1, + 12, + 1, + 11, + 32, + 0, + 32, + 1, + 106, + 34, + 1, + 33, + 3, + 32, + 1, + 32, + 7, + 65, + 1, + 106, + 71, + 4, + 64, + 32, + 7, + 45, + 0, + 1, + 65, + 63, + 113, + 33, + 9, + 32, + 7, + 65, + 2, + 106, + 33, + 3, + 11, + 32, + 2, + 65, + 31, + 113, + 33, + 10, + 2, + 64, + 32, + 2, + 65, + 255, + 1, + 113, + 65, + 224, + 1, + 73, + 4, + 64, + 32, + 9, + 32, + 10, + 65, + 6, + 116, + 114, + 33, + 2, + 12, + 1, + 11, + 65, + 0, + 33, + 0, + 32, + 1, + 33, + 7, + 32, + 1, + 32, + 3, + 71, + 4, + 127, + 32, + 3, + 65, + 1, + 106, + 33, + 7, + 32, + 3, + 45, + 0, + 0, + 65, + 63, + 113, + 5, + 32, + 0, + 11, + 32, + 9, + 65, + 6, + 116, + 114, + 33, + 0, + 32, + 2, + 65, + 255, + 1, + 113, + 65, + 240, + 1, + 73, + 4, + 64, + 32, + 0, + 32, + 10, + 65, + 12, + 116, + 114, + 33, + 2, + 12, + 1, + 11, + 65, + 0, + 33, + 2, + 32, + 1, + 32, + 7, + 71, + 4, + 127, + 32, + 7, + 45, + 0, + 0, + 65, + 63, + 113, + 5, + 32, + 2, + 11, + 32, + 10, + 65, + 18, + 116, + 65, + 128, + 128, + 240, + 0, + 113, + 32, + 0, + 65, + 6, + 116, + 114, + 114, + 34, + 2, + 65, + 128, + 128, + 196, + 0, + 70, + 13, + 2, + 11, + 32, + 5, + 32, + 2, + 54, + 2, + 36, + 65, + 1, + 33, + 3, + 32, + 5, + 65, + 40, + 106, + 33, + 1, + 32, + 2, + 65, + 128, + 1, + 73, + 13, + 0, + 65, + 2, + 33, + 3, + 32, + 2, + 65, + 128, + 16, + 73, + 13, + 0, + 65, + 3, + 65, + 4, + 32, + 2, + 65, + 128, + 128, + 4, + 73, + 27, + 33, + 3, + 11, + 32, + 5, + 32, + 6, + 54, + 2, + 40, + 32, + 5, + 32, + 3, + 32, + 6, + 106, + 54, + 2, + 44, + 32, + 5, + 65, + 196, + 0, + 106, + 65, + 5, + 54, + 2, + 0, + 32, + 5, + 65, + 236, + 0, + 106, + 65, + 62, + 54, + 2, + 0, + 32, + 5, + 65, + 228, + 0, + 106, + 65, + 62, + 54, + 2, + 0, + 32, + 5, + 65, + 220, + 0, + 106, + 65, + 63, + 54, + 2, + 0, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 192, + 0, + 54, + 2, + 0, + 32, + 5, + 66, + 5, + 55, + 2, + 52, + 32, + 5, + 65, + 192, + 204, + 193, + 0, + 54, + 2, + 48, + 32, + 5, + 32, + 1, + 54, + 2, + 88, + 32, + 5, + 32, + 8, + 54, + 2, + 80, + 32, + 5, + 65, + 61, + 54, + 2, + 76, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 64, + 32, + 5, + 32, + 5, + 65, + 24, + 106, + 54, + 2, + 104, + 32, + 5, + 32, + 5, + 65, + 16, + 106, + 54, + 2, + 96, + 32, + 5, + 32, + 5, + 65, + 32, + 106, + 54, + 2, + 72, + 12, + 1, + 11, + 65, + 240, + 196, + 193, + 0, + 65, + 43, + 32, + 4, + 16, + 114, + 0, + 11, + 32, + 5, + 65, + 48, + 106, + 32, + 4, + 16, + 130, + 1, + 0, + 11, + 176, + 8, + 2, + 11, + 127, + 1, + 126, + 35, + 0, + 65, + 208, + 0, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 16, + 124, + 32, + 2, + 32, + 1, + 54, + 2, + 24, + 32, + 2, + 65, + 40, + 106, + 65, + 0, + 59, + 1, + 0, + 32, + 2, + 66, + 0, + 55, + 3, + 32, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 32, + 2, + 65, + 32, + 106, + 65, + 10, + 16, + 41, + 34, + 13, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 2, + 64, + 32, + 2, + 45, + 0, + 32, + 65, + 31, + 70, + 4, + 64, + 32, + 2, + 45, + 0, + 33, + 65, + 139, + 1, + 70, + 13, + 1, + 11, + 16, + 90, + 33, + 13, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 13, + 55, + 2, + 4, + 12, + 5, + 11, + 32, + 2, + 45, + 0, + 34, + 65, + 8, + 71, + 4, + 64, + 16, + 90, + 33, + 13, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 13, + 55, + 2, + 4, + 12, + 5, + 11, + 32, + 2, + 45, + 0, + 41, + 33, + 9, + 32, + 2, + 40, + 2, + 36, + 33, + 10, + 32, + 2, + 45, + 0, + 35, + 34, + 6, + 65, + 4, + 113, + 69, + 13, + 3, + 32, + 2, + 65, + 0, + 59, + 1, + 64, + 32, + 2, + 32, + 2, + 65, + 64, + 107, + 65, + 2, + 16, + 41, + 34, + 13, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 13, + 2, + 2, + 64, + 32, + 2, + 47, + 1, + 64, + 34, + 3, + 69, + 4, + 64, + 65, + 1, + 33, + 5, + 12, + 1, + 11, + 32, + 3, + 16, + 139, + 1, + 34, + 5, + 69, + 13, + 2, + 11, + 32, + 2, + 32, + 5, + 32, + 3, + 16, + 41, + 34, + 13, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 13, + 3, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 13, + 55, + 2, + 4, + 32, + 3, + 69, + 13, + 4, + 32, + 5, + 32, + 3, + 65, + 1, + 16, + 156, + 1, + 12, + 4, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 13, + 55, + 2, + 4, + 12, + 3, + 11, + 32, + 3, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 13, + 55, + 2, + 4, + 12, + 1, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 6, + 65, + 8, + 113, + 4, + 64, + 32, + 2, + 65, + 0, + 54, + 2, + 56, + 32, + 2, + 66, + 1, + 55, + 3, + 48, + 32, + 2, + 32, + 2, + 54, + 2, + 60, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 65, + 60, + 106, + 16, + 70, + 2, + 64, + 32, + 2, + 45, + 0, + 64, + 34, + 1, + 65, + 2, + 70, + 13, + 0, + 3, + 64, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 1, + 70, + 13, + 3, + 32, + 2, + 45, + 0, + 65, + 34, + 4, + 69, + 13, + 1, + 32, + 2, + 40, + 2, + 56, + 34, + 1, + 32, + 2, + 40, + 2, + 52, + 70, + 4, + 127, + 32, + 2, + 65, + 48, + 106, + 32, + 1, + 65, + 1, + 16, + 75, + 32, + 2, + 40, + 2, + 56, + 5, + 32, + 1, + 11, + 32, + 2, + 40, + 2, + 48, + 106, + 32, + 4, + 58, + 0, + 0, + 32, + 2, + 32, + 2, + 40, + 2, + 56, + 65, + 1, + 106, + 54, + 2, + 56, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 65, + 60, + 106, + 16, + 70, + 32, + 2, + 45, + 0, + 64, + 34, + 1, + 65, + 2, + 71, + 13, + 0, + 11, + 11, + 32, + 2, + 40, + 2, + 56, + 33, + 11, + 32, + 2, + 40, + 2, + 48, + 33, + 8, + 32, + 2, + 40, + 2, + 52, + 33, + 7, + 11, + 32, + 6, + 65, + 16, + 113, + 13, + 1, + 65, + 0, + 12, + 2, + 11, + 32, + 2, + 41, + 2, + 68, + 33, + 13, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 13, + 55, + 2, + 4, + 32, + 2, + 40, + 2, + 52, + 34, + 0, + 69, + 13, + 4, + 32, + 2, + 40, + 2, + 48, + 32, + 0, + 65, + 1, + 16, + 156, + 1, + 12, + 4, + 11, + 32, + 2, + 65, + 0, + 54, + 2, + 56, + 32, + 2, + 66, + 1, + 55, + 3, + 48, + 32, + 2, + 32, + 2, + 54, + 2, + 60, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 65, + 60, + 106, + 16, + 70, + 2, + 64, + 32, + 2, + 45, + 0, + 64, + 34, + 1, + 65, + 2, + 70, + 13, + 0, + 3, + 64, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 1, + 70, + 13, + 3, + 32, + 2, + 45, + 0, + 65, + 34, + 4, + 69, + 13, + 1, + 32, + 2, + 40, + 2, + 56, + 34, + 1, + 32, + 2, + 40, + 2, + 52, + 70, + 4, + 127, + 32, + 2, + 65, + 48, + 106, + 32, + 1, + 65, + 1, + 16, + 75, + 32, + 2, + 40, + 2, + 56, + 5, + 32, + 1, + 11, + 32, + 2, + 40, + 2, + 48, + 106, + 32, + 4, + 58, + 0, + 0, + 32, + 2, + 32, + 2, + 40, + 2, + 56, + 65, + 1, + 106, + 54, + 2, + 56, + 32, + 2, + 65, + 64, + 107, + 32, + 2, + 65, + 60, + 106, + 16, + 70, + 32, + 2, + 45, + 0, + 64, + 34, + 1, + 65, + 2, + 71, + 13, + 0, + 11, + 11, + 32, + 2, + 40, + 2, + 52, + 33, + 4, + 32, + 2, + 40, + 2, + 56, + 33, + 12, + 32, + 2, + 40, + 2, + 48, + 11, + 33, + 1, + 32, + 6, + 65, + 2, + 113, + 69, + 13, + 3, + 32, + 2, + 16, + 147, + 1, + 33, + 6, + 32, + 2, + 65, + 0, + 59, + 1, + 64, + 32, + 2, + 32, + 2, + 65, + 64, + 107, + 65, + 2, + 16, + 41, + 34, + 13, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 2, + 47, + 1, + 64, + 32, + 6, + 65, + 255, + 255, + 3, + 113, + 70, + 13, + 4, + 16, + 79, + 33, + 13, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 13, + 55, + 2, + 4, + 32, + 1, + 69, + 32, + 4, + 69, + 114, + 13, + 1, + 32, + 1, + 32, + 4, + 65, + 1, + 16, + 156, + 1, + 12, + 1, + 11, + 32, + 2, + 41, + 2, + 68, + 33, + 13, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 13, + 55, + 2, + 4, + 32, + 2, + 40, + 2, + 52, + 34, + 0, + 69, + 13, + 0, + 32, + 2, + 40, + 2, + 48, + 32, + 0, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 7, + 69, + 32, + 8, + 69, + 114, + 13, + 0, + 32, + 8, + 32, + 7, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 69, + 32, + 5, + 69, + 114, + 13, + 1, + 32, + 5, + 32, + 3, + 65, + 1, + 16, + 156, + 1, + 12, + 1, + 11, + 32, + 0, + 32, + 5, + 54, + 2, + 4, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 44, + 106, + 32, + 9, + 58, + 0, + 0, + 32, + 0, + 65, + 40, + 106, + 32, + 10, + 54, + 2, + 0, + 32, + 0, + 65, + 36, + 106, + 32, + 12, + 54, + 2, + 0, + 32, + 0, + 65, + 32, + 106, + 32, + 4, + 54, + 2, + 0, + 32, + 0, + 65, + 28, + 106, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 24, + 106, + 32, + 11, + 54, + 2, + 0, + 32, + 0, + 65, + 20, + 106, + 32, + 7, + 54, + 2, + 0, + 32, + 0, + 65, + 16, + 106, + 32, + 8, + 54, + 2, + 0, + 32, + 0, + 65, + 12, + 106, + 32, + 3, + 54, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 3, + 54, + 2, + 0, + 11, + 32, + 2, + 65, + 208, + 0, + 106, + 36, + 0, + 11, + 152, + 7, + 1, + 10, + 127, + 32, + 0, + 40, + 2, + 16, + 33, + 3, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 8, + 34, + 12, + 65, + 1, + 70, + 4, + 64, + 32, + 3, + 65, + 1, + 71, + 13, + 2, + 12, + 1, + 11, + 32, + 3, + 65, + 1, + 70, + 13, + 0, + 12, + 2, + 11, + 32, + 1, + 32, + 2, + 106, + 33, + 3, + 2, + 64, + 2, + 64, + 32, + 0, + 65, + 20, + 106, + 40, + 2, + 0, + 34, + 8, + 69, + 4, + 64, + 32, + 1, + 33, + 4, + 12, + 1, + 11, + 32, + 1, + 33, + 4, + 3, + 64, + 32, + 3, + 32, + 4, + 34, + 7, + 70, + 13, + 2, + 32, + 7, + 65, + 1, + 106, + 33, + 4, + 2, + 64, + 32, + 7, + 44, + 0, + 0, + 34, + 6, + 65, + 127, + 74, + 13, + 0, + 32, + 6, + 65, + 255, + 1, + 113, + 33, + 9, + 2, + 127, + 32, + 3, + 32, + 4, + 70, + 4, + 64, + 65, + 0, + 33, + 10, + 32, + 3, + 12, + 1, + 11, + 32, + 7, + 45, + 0, + 1, + 65, + 63, + 113, + 33, + 10, + 32, + 7, + 65, + 2, + 106, + 34, + 4, + 11, + 33, + 6, + 32, + 9, + 65, + 224, + 1, + 73, + 13, + 0, + 2, + 127, + 32, + 3, + 32, + 6, + 70, + 4, + 64, + 65, + 0, + 33, + 11, + 32, + 3, + 12, + 1, + 11, + 32, + 6, + 45, + 0, + 0, + 65, + 63, + 113, + 33, + 11, + 32, + 6, + 65, + 1, + 106, + 34, + 4, + 11, + 33, + 6, + 32, + 9, + 65, + 240, + 1, + 73, + 13, + 0, + 32, + 3, + 32, + 6, + 70, + 4, + 127, + 65, + 0, + 5, + 32, + 6, + 65, + 1, + 106, + 33, + 4, + 32, + 6, + 45, + 0, + 0, + 65, + 63, + 113, + 11, + 32, + 9, + 65, + 18, + 116, + 65, + 128, + 128, + 240, + 0, + 113, + 32, + 10, + 65, + 12, + 116, + 114, + 32, + 11, + 65, + 6, + 116, + 114, + 114, + 65, + 128, + 128, + 196, + 0, + 70, + 13, + 3, + 11, + 32, + 4, + 32, + 7, + 107, + 32, + 5, + 106, + 33, + 5, + 32, + 8, + 65, + 127, + 106, + 34, + 8, + 13, + 0, + 11, + 11, + 32, + 3, + 32, + 4, + 70, + 13, + 0, + 2, + 64, + 32, + 4, + 44, + 0, + 0, + 34, + 7, + 65, + 127, + 74, + 13, + 0, + 2, + 127, + 32, + 3, + 32, + 4, + 65, + 1, + 106, + 70, + 4, + 64, + 32, + 3, + 33, + 8, + 65, + 0, + 12, + 1, + 11, + 32, + 4, + 65, + 2, + 106, + 33, + 8, + 32, + 4, + 45, + 0, + 1, + 65, + 63, + 113, + 65, + 6, + 116, + 11, + 32, + 7, + 65, + 255, + 1, + 113, + 65, + 224, + 1, + 73, + 13, + 0, + 2, + 127, + 32, + 3, + 32, + 8, + 70, + 4, + 64, + 32, + 3, + 33, + 6, + 65, + 0, + 12, + 1, + 11, + 32, + 8, + 65, + 1, + 106, + 33, + 6, + 32, + 8, + 45, + 0, + 0, + 65, + 63, + 113, + 11, + 32, + 7, + 65, + 255, + 1, + 113, + 65, + 240, + 1, + 73, + 13, + 0, + 32, + 7, + 65, + 255, + 1, + 113, + 33, + 7, + 114, + 33, + 4, + 32, + 3, + 32, + 6, + 70, + 4, + 127, + 65, + 0, + 5, + 32, + 6, + 45, + 0, + 0, + 65, + 63, + 113, + 11, + 32, + 7, + 65, + 18, + 116, + 65, + 128, + 128, + 240, + 0, + 113, + 32, + 4, + 65, + 6, + 116, + 114, + 114, + 65, + 128, + 128, + 196, + 0, + 70, + 13, + 1, + 11, + 2, + 64, + 32, + 5, + 69, + 32, + 2, + 32, + 5, + 70, + 114, + 69, + 4, + 64, + 65, + 0, + 33, + 3, + 32, + 5, + 32, + 2, + 79, + 13, + 1, + 32, + 1, + 32, + 5, + 106, + 44, + 0, + 0, + 65, + 64, + 72, + 13, + 1, + 11, + 32, + 1, + 33, + 3, + 11, + 32, + 5, + 32, + 2, + 32, + 3, + 27, + 33, + 2, + 32, + 3, + 32, + 1, + 32, + 3, + 27, + 33, + 1, + 11, + 32, + 12, + 65, + 1, + 70, + 13, + 0, + 12, + 1, + 11, + 2, + 64, + 32, + 2, + 4, + 64, + 65, + 0, + 33, + 4, + 32, + 2, + 33, + 5, + 32, + 1, + 33, + 3, + 3, + 64, + 32, + 4, + 32, + 3, + 45, + 0, + 0, + 65, + 192, + 1, + 113, + 65, + 128, + 1, + 71, + 106, + 33, + 4, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 5, + 65, + 127, + 106, + 34, + 5, + 13, + 0, + 11, + 32, + 4, + 32, + 0, + 40, + 2, + 12, + 34, + 6, + 79, + 13, + 2, + 65, + 0, + 33, + 4, + 32, + 2, + 33, + 5, + 32, + 1, + 33, + 3, + 3, + 64, + 32, + 4, + 32, + 3, + 45, + 0, + 0, + 65, + 192, + 1, + 113, + 65, + 128, + 1, + 71, + 106, + 33, + 4, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 5, + 65, + 127, + 106, + 34, + 5, + 13, + 0, + 11, + 12, + 1, + 11, + 65, + 0, + 33, + 4, + 32, + 0, + 40, + 2, + 12, + 34, + 6, + 13, + 0, + 12, + 1, + 11, + 65, + 0, + 33, + 3, + 32, + 6, + 32, + 4, + 107, + 34, + 4, + 33, + 5, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 0, + 32, + 0, + 45, + 0, + 32, + 34, + 6, + 32, + 6, + 65, + 3, + 70, + 27, + 65, + 3, + 113, + 65, + 1, + 107, + 14, + 3, + 1, + 0, + 1, + 2, + 11, + 32, + 4, + 65, + 1, + 118, + 33, + 3, + 32, + 4, + 65, + 1, + 106, + 65, + 1, + 118, + 33, + 5, + 12, + 1, + 11, + 65, + 0, + 33, + 5, + 32, + 4, + 33, + 3, + 11, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 2, + 127, + 2, + 64, + 3, + 64, + 32, + 3, + 65, + 127, + 106, + 34, + 3, + 4, + 64, + 32, + 0, + 40, + 2, + 24, + 32, + 0, + 40, + 2, + 4, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 1, + 12, + 2, + 11, + 11, + 32, + 0, + 40, + 2, + 4, + 33, + 4, + 65, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 1, + 32, + 2, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 1, + 26, + 32, + 5, + 65, + 1, + 106, + 33, + 3, + 32, + 0, + 40, + 2, + 28, + 33, + 1, + 32, + 0, + 40, + 2, + 24, + 33, + 0, + 3, + 64, + 32, + 3, + 65, + 127, + 106, + 34, + 3, + 69, + 4, + 64, + 65, + 0, + 15, + 11, + 32, + 0, + 32, + 4, + 32, + 1, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 11, + 65, + 1, + 11, + 15, + 11, + 32, + 0, + 40, + 2, + 24, + 32, + 1, + 32, + 2, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 11, + 153, + 8, + 2, + 11, + 127, + 1, + 126, + 65, + 1, + 33, + 9, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 24, + 65, + 34, + 32, + 2, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 16, + 17, + 0, + 0, + 13, + 0, + 2, + 64, + 32, + 1, + 69, + 4, + 64, + 12, + 1, + 11, + 32, + 0, + 32, + 1, + 106, + 33, + 10, + 32, + 0, + 34, + 6, + 33, + 12, + 3, + 64, + 2, + 64, + 32, + 6, + 65, + 1, + 106, + 33, + 5, + 2, + 64, + 2, + 64, + 32, + 6, + 44, + 0, + 0, + 34, + 7, + 65, + 0, + 78, + 4, + 64, + 32, + 7, + 65, + 255, + 1, + 113, + 33, + 4, + 12, + 1, + 11, + 2, + 127, + 32, + 5, + 32, + 10, + 70, + 4, + 64, + 65, + 0, + 33, + 4, + 32, + 10, + 12, + 1, + 11, + 32, + 6, + 45, + 0, + 1, + 65, + 63, + 113, + 33, + 4, + 32, + 6, + 65, + 2, + 106, + 34, + 5, + 11, + 33, + 6, + 32, + 7, + 65, + 31, + 113, + 33, + 11, + 32, + 7, + 65, + 255, + 1, + 113, + 34, + 13, + 65, + 224, + 1, + 73, + 4, + 64, + 32, + 4, + 32, + 11, + 65, + 6, + 116, + 114, + 33, + 4, + 12, + 1, + 11, + 2, + 127, + 32, + 6, + 32, + 10, + 70, + 4, + 64, + 65, + 0, + 33, + 9, + 32, + 10, + 12, + 1, + 11, + 32, + 6, + 45, + 0, + 0, + 65, + 63, + 113, + 33, + 9, + 32, + 6, + 65, + 1, + 106, + 34, + 5, + 11, + 33, + 7, + 32, + 9, + 32, + 4, + 65, + 6, + 116, + 114, + 33, + 4, + 32, + 13, + 65, + 240, + 1, + 73, + 4, + 64, + 32, + 4, + 32, + 11, + 65, + 12, + 116, + 114, + 33, + 4, + 12, + 1, + 11, + 2, + 127, + 32, + 7, + 32, + 10, + 70, + 4, + 64, + 32, + 5, + 33, + 6, + 65, + 0, + 12, + 1, + 11, + 32, + 7, + 65, + 1, + 106, + 33, + 6, + 32, + 7, + 45, + 0, + 0, + 65, + 63, + 113, + 11, + 32, + 11, + 65, + 18, + 116, + 65, + 128, + 128, + 240, + 0, + 113, + 32, + 4, + 65, + 6, + 116, + 114, + 114, + 34, + 4, + 65, + 128, + 128, + 196, + 0, + 71, + 13, + 1, + 12, + 2, + 11, + 32, + 5, + 33, + 6, + 11, + 65, + 2, + 33, + 5, + 65, + 244, + 0, + 33, + 7, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 119, + 106, + 14, + 31, + 5, + 1, + 3, + 3, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 4, + 3, + 3, + 3, + 3, + 4, + 2, + 11, + 65, + 242, + 0, + 33, + 7, + 12, + 4, + 11, + 65, + 238, + 0, + 33, + 7, + 12, + 3, + 11, + 32, + 4, + 65, + 220, + 0, + 70, + 13, + 1, + 11, + 32, + 4, + 16, + 40, + 69, + 4, + 64, + 32, + 4, + 16, + 21, + 13, + 3, + 11, + 32, + 4, + 65, + 1, + 114, + 103, + 65, + 2, + 118, + 65, + 7, + 115, + 173, + 66, + 128, + 128, + 128, + 128, + 208, + 0, + 132, + 33, + 14, + 65, + 3, + 33, + 5, + 11, + 32, + 4, + 33, + 7, + 11, + 2, + 64, + 2, + 64, + 32, + 8, + 32, + 3, + 73, + 13, + 0, + 32, + 3, + 69, + 32, + 1, + 32, + 3, + 70, + 114, + 69, + 4, + 64, + 32, + 3, + 32, + 1, + 79, + 13, + 1, + 32, + 0, + 32, + 3, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 1, + 11, + 32, + 8, + 69, + 32, + 1, + 32, + 8, + 70, + 114, + 69, + 4, + 64, + 32, + 8, + 32, + 1, + 79, + 13, + 1, + 32, + 0, + 32, + 8, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 1, + 11, + 32, + 2, + 40, + 2, + 24, + 32, + 0, + 32, + 3, + 106, + 32, + 8, + 32, + 3, + 107, + 32, + 2, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 1, + 0, + 69, + 13, + 1, + 65, + 1, + 15, + 11, + 32, + 0, + 32, + 1, + 32, + 3, + 32, + 8, + 65, + 160, + 201, + 193, + 0, + 16, + 12, + 0, + 11, + 3, + 64, + 32, + 5, + 33, + 11, + 65, + 1, + 33, + 9, + 65, + 220, + 0, + 33, + 3, + 65, + 1, + 33, + 5, + 2, + 64, + 2, + 126, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 11, + 65, + 1, + 107, + 14, + 3, + 1, + 5, + 0, + 2, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 14, + 66, + 32, + 136, + 167, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 5, + 3, + 2, + 1, + 0, + 6, + 5, + 11, + 32, + 14, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 48, + 132, + 33, + 14, + 65, + 3, + 33, + 5, + 65, + 245, + 0, + 33, + 3, + 12, + 7, + 11, + 32, + 14, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 32, + 132, + 33, + 14, + 65, + 3, + 33, + 5, + 65, + 251, + 0, + 33, + 3, + 12, + 6, + 11, + 65, + 48, + 65, + 215, + 0, + 32, + 7, + 32, + 14, + 167, + 34, + 5, + 65, + 2, + 116, + 65, + 28, + 113, + 118, + 65, + 15, + 113, + 34, + 3, + 65, + 10, + 73, + 27, + 32, + 3, + 106, + 33, + 3, + 32, + 14, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 16, + 132, + 32, + 5, + 69, + 13, + 4, + 26, + 32, + 14, + 66, + 127, + 124, + 66, + 255, + 255, + 255, + 255, + 15, + 131, + 32, + 14, + 66, + 128, + 128, + 128, + 128, + 112, + 131, + 132, + 12, + 4, + 11, + 32, + 14, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 33, + 14, + 65, + 3, + 33, + 5, + 65, + 253, + 0, + 33, + 3, + 12, + 4, + 11, + 65, + 0, + 33, + 5, + 32, + 7, + 33, + 3, + 12, + 3, + 11, + 2, + 127, + 65, + 1, + 32, + 4, + 65, + 128, + 1, + 73, + 13, + 0, + 26, + 65, + 2, + 32, + 4, + 65, + 128, + 16, + 73, + 13, + 0, + 26, + 65, + 3, + 65, + 4, + 32, + 4, + 65, + 128, + 128, + 4, + 73, + 27, + 11, + 32, + 8, + 106, + 33, + 3, + 12, + 4, + 11, + 32, + 14, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 192, + 0, + 132, + 11, + 33, + 14, + 65, + 3, + 33, + 5, + 11, + 32, + 2, + 40, + 2, + 24, + 32, + 3, + 32, + 2, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 12, + 4, + 11, + 32, + 8, + 32, + 12, + 107, + 32, + 6, + 106, + 33, + 8, + 32, + 6, + 33, + 12, + 32, + 6, + 32, + 10, + 71, + 13, + 1, + 11, + 11, + 32, + 3, + 69, + 32, + 1, + 32, + 3, + 70, + 114, + 13, + 0, + 32, + 3, + 32, + 1, + 79, + 13, + 2, + 32, + 0, + 32, + 3, + 106, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 2, + 11, + 65, + 1, + 33, + 9, + 32, + 2, + 40, + 2, + 24, + 32, + 0, + 32, + 3, + 106, + 32, + 1, + 32, + 3, + 107, + 32, + 2, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 0, + 32, + 2, + 40, + 2, + 24, + 65, + 34, + 32, + 2, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 33, + 9, + 11, + 32, + 9, + 15, + 11, + 32, + 0, + 32, + 1, + 32, + 3, + 32, + 1, + 65, + 176, + 201, + 193, + 0, + 16, + 12, + 0, + 11, + 229, + 7, + 2, + 11, + 127, + 2, + 126, + 32, + 1, + 65, + 33, + 106, + 45, + 0, + 0, + 33, + 11, + 32, + 1, + 65, + 24, + 106, + 40, + 2, + 0, + 33, + 8, + 32, + 1, + 65, + 16, + 106, + 40, + 2, + 0, + 33, + 6, + 32, + 1, + 40, + 2, + 28, + 33, + 9, + 32, + 1, + 45, + 0, + 32, + 33, + 12, + 32, + 1, + 40, + 2, + 20, + 33, + 3, + 32, + 1, + 40, + 2, + 12, + 33, + 5, + 32, + 1, + 41, + 2, + 4, + 33, + 14, + 32, + 1, + 40, + 2, + 0, + 33, + 7, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 10, + 16, + 139, + 1, + 34, + 1, + 4, + 64, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 4, + 106, + 34, + 10, + 66, + 138, + 128, + 128, + 128, + 160, + 1, + 55, + 2, + 0, + 2, + 64, + 32, + 7, + 69, + 13, + 0, + 32, + 0, + 65, + 10, + 65, + 1, + 16, + 75, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 106, + 32, + 14, + 66, + 32, + 136, + 34, + 15, + 60, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 10, + 40, + 2, + 0, + 32, + 4, + 70, + 4, + 127, + 32, + 0, + 32, + 4, + 65, + 1, + 16, + 75, + 32, + 1, + 40, + 2, + 0, + 5, + 32, + 4, + 11, + 32, + 0, + 40, + 2, + 0, + 106, + 32, + 14, + 66, + 40, + 136, + 60, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 0, + 32, + 4, + 32, + 15, + 167, + 34, + 4, + 16, + 75, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 0, + 106, + 32, + 7, + 32, + 4, + 16, + 121, + 26, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 32, + 4, + 106, + 54, + 2, + 0, + 65, + 4, + 33, + 4, + 32, + 14, + 167, + 34, + 1, + 69, + 13, + 0, + 32, + 7, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 11, + 2, + 64, + 32, + 5, + 69, + 13, + 0, + 32, + 0, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 32, + 6, + 16, + 75, + 32, + 4, + 65, + 8, + 114, + 33, + 4, + 32, + 6, + 69, + 4, + 64, + 32, + 5, + 65, + 0, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 5, + 32, + 6, + 106, + 33, + 7, + 32, + 1, + 40, + 2, + 0, + 34, + 10, + 32, + 0, + 40, + 2, + 0, + 106, + 33, + 13, + 65, + 0, + 33, + 1, + 3, + 64, + 32, + 1, + 32, + 13, + 106, + 32, + 1, + 32, + 5, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 6, + 32, + 1, + 65, + 1, + 106, + 34, + 1, + 71, + 13, + 0, + 11, + 32, + 0, + 65, + 8, + 106, + 32, + 7, + 32, + 10, + 32, + 5, + 107, + 106, + 54, + 2, + 0, + 32, + 5, + 65, + 0, + 58, + 0, + 0, + 32, + 6, + 69, + 13, + 0, + 32, + 5, + 32, + 6, + 65, + 1, + 16, + 156, + 1, + 11, + 2, + 64, + 32, + 3, + 69, + 13, + 0, + 32, + 0, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 32, + 8, + 16, + 75, + 32, + 4, + 65, + 16, + 114, + 33, + 4, + 32, + 8, + 69, + 4, + 64, + 32, + 3, + 65, + 0, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 3, + 32, + 8, + 106, + 33, + 5, + 32, + 1, + 40, + 2, + 0, + 34, + 6, + 32, + 0, + 40, + 2, + 0, + 106, + 33, + 7, + 65, + 0, + 33, + 1, + 3, + 64, + 32, + 1, + 32, + 7, + 106, + 32, + 1, + 32, + 3, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 8, + 32, + 1, + 65, + 1, + 106, + 34, + 1, + 71, + 13, + 0, + 11, + 32, + 0, + 65, + 8, + 106, + 32, + 5, + 32, + 6, + 32, + 3, + 107, + 106, + 54, + 2, + 0, + 32, + 3, + 65, + 0, + 58, + 0, + 0, + 32, + 8, + 69, + 13, + 0, + 32, + 3, + 32, + 8, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 69, + 13, + 1, + 32, + 0, + 40, + 2, + 0, + 65, + 31, + 58, + 0, + 0, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 1, + 77, + 13, + 2, + 32, + 0, + 40, + 2, + 0, + 65, + 139, + 1, + 58, + 0, + 1, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 2, + 77, + 13, + 3, + 32, + 0, + 40, + 2, + 0, + 65, + 8, + 58, + 0, + 2, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 3, + 77, + 13, + 4, + 32, + 0, + 40, + 2, + 0, + 32, + 4, + 58, + 0, + 3, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 4, + 77, + 13, + 5, + 32, + 0, + 40, + 2, + 0, + 32, + 9, + 58, + 0, + 4, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 5, + 77, + 13, + 6, + 32, + 0, + 40, + 2, + 0, + 32, + 9, + 65, + 8, + 118, + 58, + 0, + 5, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 6, + 77, + 13, + 7, + 32, + 0, + 40, + 2, + 0, + 32, + 9, + 65, + 16, + 118, + 58, + 0, + 6, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 7, + 77, + 13, + 8, + 32, + 0, + 40, + 2, + 0, + 32, + 9, + 65, + 24, + 118, + 58, + 0, + 7, + 32, + 0, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 8, + 77, + 13, + 9, + 32, + 0, + 40, + 2, + 0, + 32, + 2, + 65, + 2, + 73, + 65, + 2, + 116, + 65, + 2, + 32, + 2, + 65, + 9, + 73, + 27, + 58, + 0, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 65, + 9, + 77, + 13, + 10, + 32, + 0, + 40, + 2, + 0, + 32, + 11, + 65, + 127, + 32, + 12, + 27, + 58, + 0, + 9, + 15, + 11, + 65, + 10, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 0, + 65, + 0, + 65, + 148, + 142, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 1, + 32, + 1, + 65, + 164, + 142, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 2, + 32, + 3, + 65, + 180, + 142, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 3, + 32, + 1, + 65, + 196, + 142, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 4, + 32, + 3, + 65, + 212, + 142, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 5, + 32, + 1, + 65, + 228, + 142, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 6, + 32, + 3, + 65, + 244, + 142, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 7, + 32, + 1, + 65, + 132, + 143, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 8, + 32, + 3, + 65, + 148, + 143, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 9, + 32, + 1, + 65, + 164, + 143, + 192, + 0, + 16, + 98, + 0, + 11, + 172, + 7, + 2, + 7, + 127, + 1, + 126, + 35, + 0, + 65, + 192, + 1, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 8, + 106, + 65, + 0, + 16, + 136, + 1, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 149, + 1, + 34, + 4, + 4, + 64, + 32, + 3, + 65, + 48, + 106, + 34, + 5, + 66, + 128, + 128, + 2, + 55, + 3, + 0, + 32, + 3, + 65, + 40, + 106, + 34, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 54, + 2, + 44, + 32, + 3, + 66, + 1, + 55, + 3, + 32, + 32, + 3, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 44, + 33, + 10, + 32, + 3, + 65, + 240, + 0, + 106, + 34, + 4, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 232, + 0, + 106, + 34, + 5, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 224, + 0, + 106, + 34, + 6, + 32, + 3, + 41, + 3, + 32, + 55, + 3, + 0, + 32, + 3, + 65, + 216, + 0, + 106, + 34, + 7, + 32, + 3, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 208, + 0, + 106, + 34, + 8, + 32, + 3, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 8, + 55, + 3, + 72, + 2, + 127, + 2, + 64, + 32, + 3, + 2, + 127, + 32, + 10, + 167, + 34, + 9, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 4, + 64, + 32, + 3, + 65, + 195, + 0, + 106, + 32, + 10, + 66, + 56, + 136, + 60, + 0, + 0, + 32, + 3, + 65, + 193, + 0, + 106, + 32, + 10, + 66, + 40, + 136, + 61, + 0, + 0, + 32, + 3, + 32, + 9, + 58, + 0, + 60, + 32, + 3, + 65, + 1, + 54, + 2, + 56, + 32, + 3, + 32, + 10, + 66, + 8, + 136, + 62, + 0, + 61, + 2, + 64, + 32, + 3, + 40, + 2, + 96, + 69, + 13, + 0, + 32, + 3, + 65, + 200, + 0, + 106, + 16, + 58, + 34, + 10, + 167, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 10, + 66, + 32, + 136, + 167, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 4, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 96, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 228, + 0, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 88, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 156, + 1, + 32, + 3, + 65, + 240, + 0, + 106, + 40, + 2, + 0, + 34, + 4, + 4, + 64, + 32, + 3, + 40, + 2, + 108, + 32, + 4, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 65, + 56, + 106, + 65, + 4, + 114, + 12, + 1, + 11, + 32, + 3, + 65, + 184, + 1, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 176, + 1, + 106, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 168, + 1, + 106, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 160, + 1, + 106, + 32, + 7, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 152, + 1, + 106, + 32, + 8, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 72, + 55, + 3, + 144, + 1, + 32, + 3, + 65, + 56, + 106, + 32, + 3, + 65, + 144, + 1, + 106, + 16, + 61, + 32, + 3, + 40, + 2, + 56, + 65, + 1, + 71, + 13, + 1, + 32, + 3, + 65, + 56, + 106, + 65, + 4, + 114, + 11, + 41, + 2, + 0, + 55, + 3, + 120, + 32, + 3, + 65, + 248, + 0, + 106, + 16, + 133, + 1, + 33, + 4, + 32, + 3, + 65, + 212, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 3, + 65, + 164, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 10, + 54, + 2, + 76, + 32, + 3, + 66, + 2, + 55, + 2, + 148, + 1, + 32, + 3, + 65, + 244, + 132, + 192, + 0, + 54, + 2, + 144, + 1, + 32, + 3, + 32, + 4, + 58, + 0, + 143, + 1, + 32, + 3, + 32, + 3, + 65, + 248, + 0, + 106, + 54, + 2, + 80, + 32, + 3, + 32, + 3, + 65, + 143, + 1, + 106, + 54, + 2, + 72, + 32, + 3, + 32, + 3, + 65, + 200, + 0, + 106, + 54, + 2, + 160, + 1, + 32, + 3, + 65, + 128, + 1, + 106, + 32, + 3, + 65, + 144, + 1, + 106, + 16, + 51, + 32, + 3, + 40, + 2, + 128, + 1, + 34, + 5, + 32, + 3, + 40, + 2, + 136, + 1, + 16, + 0, + 33, + 4, + 32, + 3, + 40, + 2, + 132, + 1, + 34, + 6, + 4, + 64, + 32, + 5, + 32, + 6, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 45, + 0, + 120, + 65, + 2, + 79, + 4, + 64, + 32, + 3, + 40, + 2, + 124, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 124, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 3, + 65, + 64, + 107, + 41, + 3, + 0, + 33, + 10, + 32, + 3, + 40, + 2, + 60, + 33, + 4, + 65, + 0, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 13, + 1, + 2, + 64, + 32, + 10, + 167, + 34, + 5, + 32, + 10, + 66, + 32, + 136, + 167, + 34, + 2, + 77, + 4, + 64, + 32, + 4, + 33, + 1, + 12, + 1, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 1, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 156, + 1, + 12, + 1, + 11, + 32, + 4, + 32, + 5, + 32, + 2, + 16, + 143, + 1, + 34, + 1, + 69, + 13, + 3, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 192, + 1, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 32, + 4, + 16, + 168, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 172, + 7, + 2, + 7, + 127, + 1, + 126, + 35, + 0, + 65, + 192, + 1, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 8, + 106, + 65, + 1, + 16, + 136, + 1, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 149, + 1, + 34, + 4, + 4, + 64, + 32, + 3, + 65, + 48, + 106, + 34, + 5, + 66, + 128, + 128, + 2, + 55, + 3, + 0, + 32, + 3, + 65, + 40, + 106, + 34, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 54, + 2, + 44, + 32, + 3, + 66, + 1, + 55, + 3, + 32, + 32, + 3, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 43, + 33, + 10, + 32, + 3, + 65, + 240, + 0, + 106, + 34, + 4, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 232, + 0, + 106, + 34, + 5, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 224, + 0, + 106, + 34, + 6, + 32, + 3, + 41, + 3, + 32, + 55, + 3, + 0, + 32, + 3, + 65, + 216, + 0, + 106, + 34, + 7, + 32, + 3, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 208, + 0, + 106, + 34, + 8, + 32, + 3, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 8, + 55, + 3, + 72, + 2, + 127, + 2, + 64, + 32, + 3, + 2, + 127, + 32, + 10, + 167, + 34, + 9, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 4, + 64, + 32, + 3, + 65, + 195, + 0, + 106, + 32, + 10, + 66, + 56, + 136, + 60, + 0, + 0, + 32, + 3, + 65, + 193, + 0, + 106, + 32, + 10, + 66, + 40, + 136, + 61, + 0, + 0, + 32, + 3, + 32, + 9, + 58, + 0, + 60, + 32, + 3, + 65, + 1, + 54, + 2, + 56, + 32, + 3, + 32, + 10, + 66, + 8, + 136, + 62, + 0, + 61, + 2, + 64, + 32, + 3, + 40, + 2, + 96, + 69, + 13, + 0, + 32, + 3, + 65, + 200, + 0, + 106, + 16, + 58, + 34, + 10, + 167, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 10, + 66, + 32, + 136, + 167, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 4, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 96, + 34, + 4, + 69, + 13, + 0, + 32, + 3, + 65, + 228, + 0, + 106, + 40, + 2, + 0, + 34, + 5, + 69, + 13, + 0, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 88, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 156, + 1, + 32, + 3, + 65, + 240, + 0, + 106, + 40, + 2, + 0, + 34, + 4, + 4, + 64, + 32, + 3, + 40, + 2, + 108, + 32, + 4, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 65, + 56, + 106, + 65, + 4, + 114, + 12, + 1, + 11, + 32, + 3, + 65, + 184, + 1, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 176, + 1, + 106, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 168, + 1, + 106, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 160, + 1, + 106, + 32, + 7, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 152, + 1, + 106, + 32, + 8, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 72, + 55, + 3, + 144, + 1, + 32, + 3, + 65, + 56, + 106, + 32, + 3, + 65, + 144, + 1, + 106, + 16, + 61, + 32, + 3, + 40, + 2, + 56, + 65, + 1, + 71, + 13, + 1, + 32, + 3, + 65, + 56, + 106, + 65, + 4, + 114, + 11, + 41, + 2, + 0, + 55, + 3, + 120, + 32, + 3, + 65, + 248, + 0, + 106, + 16, + 133, + 1, + 33, + 4, + 32, + 3, + 65, + 212, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 3, + 65, + 164, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 10, + 54, + 2, + 76, + 32, + 3, + 66, + 2, + 55, + 2, + 148, + 1, + 32, + 3, + 65, + 244, + 132, + 192, + 0, + 54, + 2, + 144, + 1, + 32, + 3, + 32, + 4, + 58, + 0, + 143, + 1, + 32, + 3, + 32, + 3, + 65, + 248, + 0, + 106, + 54, + 2, + 80, + 32, + 3, + 32, + 3, + 65, + 143, + 1, + 106, + 54, + 2, + 72, + 32, + 3, + 32, + 3, + 65, + 200, + 0, + 106, + 54, + 2, + 160, + 1, + 32, + 3, + 65, + 128, + 1, + 106, + 32, + 3, + 65, + 144, + 1, + 106, + 16, + 51, + 32, + 3, + 40, + 2, + 128, + 1, + 34, + 5, + 32, + 3, + 40, + 2, + 136, + 1, + 16, + 0, + 33, + 4, + 32, + 3, + 40, + 2, + 132, + 1, + 34, + 6, + 4, + 64, + 32, + 5, + 32, + 6, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 45, + 0, + 120, + 65, + 2, + 79, + 4, + 64, + 32, + 3, + 40, + 2, + 124, + 34, + 5, + 40, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 124, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 3, + 65, + 64, + 107, + 41, + 3, + 0, + 33, + 10, + 32, + 3, + 40, + 2, + 60, + 33, + 4, + 65, + 0, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 13, + 1, + 2, + 64, + 32, + 10, + 167, + 34, + 5, + 32, + 10, + 66, + 32, + 136, + 167, + 34, + 2, + 77, + 4, + 64, + 32, + 4, + 33, + 1, + 12, + 1, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 1, + 32, + 4, + 32, + 5, + 65, + 1, + 16, + 156, + 1, + 12, + 1, + 11, + 32, + 4, + 32, + 5, + 32, + 2, + 16, + 143, + 1, + 34, + 1, + 69, + 13, + 3, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 192, + 1, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 32, + 4, + 16, + 168, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 218, + 6, + 2, + 5, + 127, + 1, + 126, + 35, + 0, + 65, + 192, + 1, + 107, + 34, + 5, + 36, + 0, + 32, + 5, + 65, + 8, + 106, + 32, + 3, + 4, + 127, + 32, + 4, + 5, + 65, + 6, + 11, + 65, + 0, + 16, + 126, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 149, + 1, + 34, + 3, + 4, + 64, + 32, + 5, + 65, + 48, + 106, + 34, + 4, + 66, + 128, + 128, + 2, + 55, + 3, + 0, + 32, + 5, + 65, + 40, + 106, + 34, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 3, + 54, + 2, + 44, + 32, + 5, + 66, + 1, + 55, + 3, + 32, + 32, + 5, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 45, + 33, + 10, + 32, + 5, + 65, + 240, + 0, + 106, + 34, + 3, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 232, + 0, + 106, + 34, + 4, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 224, + 0, + 106, + 34, + 6, + 32, + 5, + 41, + 3, + 32, + 55, + 3, + 0, + 32, + 5, + 65, + 216, + 0, + 106, + 34, + 7, + 32, + 5, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 208, + 0, + 106, + 34, + 8, + 32, + 5, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 32, + 5, + 41, + 3, + 8, + 55, + 3, + 72, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 10, + 167, + 34, + 9, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 4, + 64, + 32, + 5, + 32, + 9, + 58, + 0, + 56, + 32, + 5, + 32, + 10, + 66, + 56, + 136, + 60, + 0, + 63, + 32, + 5, + 32, + 10, + 66, + 40, + 136, + 61, + 0, + 61, + 32, + 5, + 32, + 10, + 66, + 8, + 136, + 62, + 0, + 57, + 32, + 5, + 65, + 200, + 0, + 106, + 16, + 77, + 32, + 5, + 41, + 3, + 56, + 33, + 10, + 12, + 1, + 11, + 32, + 5, + 65, + 184, + 1, + 106, + 32, + 3, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 176, + 1, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 168, + 1, + 106, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 160, + 1, + 106, + 32, + 7, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 152, + 1, + 106, + 32, + 8, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 32, + 5, + 41, + 3, + 72, + 55, + 3, + 144, + 1, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 57, + 34, + 10, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 5, + 40, + 2, + 168, + 1, + 33, + 3, + 65, + 0, + 33, + 4, + 32, + 5, + 65, + 0, + 54, + 2, + 168, + 1, + 32, + 3, + 13, + 2, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 240, + 131, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 5, + 32, + 10, + 55, + 3, + 56, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 77, + 11, + 32, + 5, + 32, + 10, + 55, + 3, + 120, + 32, + 5, + 65, + 248, + 0, + 106, + 16, + 133, + 1, + 33, + 3, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 5, + 65, + 164, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 5, + 65, + 10, + 54, + 2, + 76, + 32, + 5, + 66, + 2, + 55, + 2, + 148, + 1, + 32, + 5, + 65, + 244, + 132, + 192, + 0, + 54, + 2, + 144, + 1, + 32, + 5, + 32, + 3, + 58, + 0, + 143, + 1, + 32, + 5, + 32, + 5, + 65, + 248, + 0, + 106, + 54, + 2, + 80, + 32, + 5, + 32, + 5, + 65, + 143, + 1, + 106, + 54, + 2, + 72, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 160, + 1, + 32, + 5, + 65, + 128, + 1, + 106, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 51, + 32, + 5, + 40, + 2, + 128, + 1, + 34, + 4, + 32, + 5, + 40, + 2, + 136, + 1, + 16, + 0, + 33, + 3, + 32, + 5, + 40, + 2, + 132, + 1, + 34, + 6, + 4, + 64, + 32, + 4, + 32, + 6, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 5, + 45, + 0, + 120, + 65, + 2, + 79, + 4, + 64, + 32, + 5, + 40, + 2, + 124, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 5, + 40, + 2, + 124, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 65, + 1, + 33, + 4, + 12, + 1, + 11, + 32, + 5, + 65, + 172, + 1, + 106, + 40, + 2, + 0, + 33, + 6, + 32, + 5, + 32, + 5, + 65, + 176, + 1, + 106, + 40, + 2, + 0, + 54, + 2, + 64, + 32, + 5, + 32, + 6, + 54, + 2, + 60, + 32, + 5, + 32, + 3, + 54, + 2, + 56, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 77, + 32, + 5, + 41, + 2, + 60, + 33, + 10, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 4, + 13, + 1, + 2, + 64, + 32, + 10, + 167, + 34, + 4, + 32, + 10, + 66, + 32, + 136, + 167, + 34, + 2, + 77, + 4, + 64, + 32, + 3, + 33, + 1, + 12, + 1, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 1, + 32, + 3, + 32, + 4, + 65, + 1, + 16, + 156, + 1, + 12, + 1, + 11, + 32, + 3, + 32, + 4, + 32, + 2, + 16, + 143, + 1, + 34, + 1, + 69, + 13, + 3, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 5, + 65, + 192, + 1, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 32, + 3, + 16, + 168, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 218, + 6, + 2, + 5, + 127, + 1, + 126, + 35, + 0, + 65, + 192, + 1, + 107, + 34, + 5, + 36, + 0, + 32, + 5, + 65, + 8, + 106, + 32, + 3, + 4, + 127, + 32, + 4, + 5, + 65, + 6, + 11, + 65, + 1, + 16, + 126, + 2, + 64, + 2, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 149, + 1, + 34, + 3, + 4, + 64, + 32, + 5, + 65, + 48, + 106, + 34, + 4, + 66, + 128, + 128, + 2, + 55, + 3, + 0, + 32, + 5, + 65, + 40, + 106, + 34, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 3, + 54, + 2, + 44, + 32, + 5, + 66, + 1, + 55, + 3, + 32, + 32, + 5, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 42, + 33, + 10, + 32, + 5, + 65, + 240, + 0, + 106, + 34, + 3, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 232, + 0, + 106, + 34, + 4, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 224, + 0, + 106, + 34, + 6, + 32, + 5, + 41, + 3, + 32, + 55, + 3, + 0, + 32, + 5, + 65, + 216, + 0, + 106, + 34, + 7, + 32, + 5, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 208, + 0, + 106, + 34, + 8, + 32, + 5, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 32, + 5, + 41, + 3, + 8, + 55, + 3, + 72, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 10, + 167, + 34, + 9, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 4, + 64, + 32, + 5, + 32, + 9, + 58, + 0, + 56, + 32, + 5, + 32, + 10, + 66, + 56, + 136, + 60, + 0, + 63, + 32, + 5, + 32, + 10, + 66, + 40, + 136, + 61, + 0, + 61, + 32, + 5, + 32, + 10, + 66, + 8, + 136, + 62, + 0, + 57, + 32, + 5, + 65, + 200, + 0, + 106, + 16, + 77, + 32, + 5, + 41, + 3, + 56, + 33, + 10, + 12, + 1, + 11, + 32, + 5, + 65, + 184, + 1, + 106, + 32, + 3, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 176, + 1, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 168, + 1, + 106, + 32, + 6, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 160, + 1, + 106, + 32, + 7, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 65, + 152, + 1, + 106, + 32, + 8, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 5, + 32, + 5, + 41, + 3, + 72, + 55, + 3, + 144, + 1, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 57, + 34, + 10, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 5, + 40, + 2, + 168, + 1, + 33, + 3, + 65, + 0, + 33, + 4, + 32, + 5, + 65, + 0, + 54, + 2, + 168, + 1, + 32, + 3, + 13, + 2, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 240, + 131, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 5, + 32, + 10, + 55, + 3, + 56, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 77, + 11, + 32, + 5, + 32, + 10, + 55, + 3, + 120, + 32, + 5, + 65, + 248, + 0, + 106, + 16, + 133, + 1, + 33, + 3, + 32, + 5, + 65, + 212, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 5, + 65, + 164, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 5, + 65, + 10, + 54, + 2, + 76, + 32, + 5, + 66, + 2, + 55, + 2, + 148, + 1, + 32, + 5, + 65, + 244, + 132, + 192, + 0, + 54, + 2, + 144, + 1, + 32, + 5, + 32, + 3, + 58, + 0, + 143, + 1, + 32, + 5, + 32, + 5, + 65, + 248, + 0, + 106, + 54, + 2, + 80, + 32, + 5, + 32, + 5, + 65, + 143, + 1, + 106, + 54, + 2, + 72, + 32, + 5, + 32, + 5, + 65, + 200, + 0, + 106, + 54, + 2, + 160, + 1, + 32, + 5, + 65, + 128, + 1, + 106, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 51, + 32, + 5, + 40, + 2, + 128, + 1, + 34, + 4, + 32, + 5, + 40, + 2, + 136, + 1, + 16, + 0, + 33, + 3, + 32, + 5, + 40, + 2, + 132, + 1, + 34, + 6, + 4, + 64, + 32, + 4, + 32, + 6, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 5, + 45, + 0, + 120, + 65, + 2, + 79, + 4, + 64, + 32, + 5, + 40, + 2, + 124, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 5, + 40, + 2, + 124, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 65, + 1, + 33, + 4, + 12, + 1, + 11, + 32, + 5, + 65, + 172, + 1, + 106, + 40, + 2, + 0, + 33, + 6, + 32, + 5, + 32, + 5, + 65, + 176, + 1, + 106, + 40, + 2, + 0, + 54, + 2, + 64, + 32, + 5, + 32, + 6, + 54, + 2, + 60, + 32, + 5, + 32, + 3, + 54, + 2, + 56, + 32, + 5, + 65, + 144, + 1, + 106, + 16, + 77, + 32, + 5, + 41, + 2, + 60, + 33, + 10, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 4, + 13, + 1, + 2, + 64, + 32, + 10, + 167, + 34, + 4, + 32, + 10, + 66, + 32, + 136, + 167, + 34, + 2, + 77, + 4, + 64, + 32, + 3, + 33, + 1, + 12, + 1, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 1, + 32, + 3, + 32, + 4, + 65, + 1, + 16, + 156, + 1, + 12, + 1, + 11, + 32, + 3, + 32, + 4, + 32, + 2, + 16, + 143, + 1, + 34, + 1, + 69, + 13, + 3, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 5, + 65, + 192, + 1, + 106, + 36, + 0, + 15, + 11, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 32, + 3, + 16, + 168, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 177, + 6, + 1, + 7, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 65, + 255, + 255, + 3, + 77, + 4, + 64, + 32, + 0, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 6, + 65, + 176, + 205, + 193, + 0, + 33, + 1, + 32, + 0, + 65, + 255, + 1, + 113, + 33, + 7, + 3, + 64, + 2, + 64, + 32, + 1, + 65, + 2, + 106, + 33, + 5, + 32, + 2, + 32, + 1, + 45, + 0, + 1, + 34, + 4, + 106, + 33, + 3, + 2, + 64, + 32, + 6, + 32, + 1, + 45, + 0, + 0, + 34, + 1, + 70, + 4, + 64, + 32, + 3, + 32, + 2, + 73, + 13, + 6, + 32, + 3, + 65, + 163, + 2, + 79, + 13, + 7, + 32, + 2, + 65, + 130, + 206, + 193, + 0, + 106, + 33, + 1, + 3, + 64, + 32, + 4, + 69, + 13, + 2, + 32, + 4, + 65, + 127, + 106, + 33, + 4, + 32, + 1, + 45, + 0, + 0, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 7, + 71, + 13, + 0, + 11, + 65, + 0, + 33, + 4, + 12, + 5, + 11, + 32, + 1, + 32, + 6, + 75, + 13, + 1, + 32, + 3, + 33, + 2, + 32, + 5, + 34, + 1, + 65, + 130, + 206, + 193, + 0, + 71, + 13, + 2, + 12, + 1, + 11, + 32, + 3, + 33, + 2, + 32, + 5, + 34, + 1, + 65, + 130, + 206, + 193, + 0, + 71, + 13, + 1, + 11, + 11, + 32, + 0, + 65, + 255, + 255, + 3, + 113, + 33, + 3, + 65, + 164, + 208, + 193, + 0, + 33, + 1, + 65, + 1, + 33, + 4, + 3, + 64, + 32, + 1, + 65, + 1, + 106, + 33, + 0, + 2, + 127, + 32, + 1, + 45, + 0, + 0, + 34, + 2, + 65, + 24, + 116, + 65, + 24, + 117, + 34, + 5, + 65, + 127, + 76, + 4, + 64, + 32, + 0, + 65, + 217, + 210, + 193, + 0, + 70, + 13, + 7, + 32, + 1, + 45, + 0, + 1, + 32, + 5, + 65, + 255, + 0, + 113, + 65, + 8, + 116, + 114, + 33, + 2, + 32, + 1, + 65, + 2, + 106, + 12, + 1, + 11, + 32, + 0, + 11, + 33, + 1, + 32, + 3, + 32, + 2, + 107, + 34, + 3, + 65, + 0, + 72, + 13, + 2, + 32, + 4, + 65, + 1, + 115, + 33, + 4, + 32, + 1, + 65, + 217, + 210, + 193, + 0, + 71, + 13, + 0, + 11, + 12, + 1, + 11, + 32, + 0, + 65, + 255, + 255, + 7, + 77, + 4, + 64, + 32, + 0, + 65, + 128, + 254, + 3, + 113, + 65, + 8, + 118, + 33, + 6, + 65, + 217, + 210, + 193, + 0, + 33, + 1, + 32, + 0, + 65, + 255, + 1, + 113, + 33, + 7, + 3, + 64, + 2, + 64, + 32, + 1, + 65, + 2, + 106, + 33, + 5, + 32, + 2, + 32, + 1, + 45, + 0, + 1, + 34, + 4, + 106, + 33, + 3, + 2, + 64, + 32, + 6, + 32, + 1, + 45, + 0, + 0, + 34, + 1, + 70, + 4, + 64, + 32, + 3, + 32, + 2, + 73, + 13, + 9, + 32, + 3, + 65, + 176, + 1, + 79, + 13, + 10, + 32, + 2, + 65, + 165, + 211, + 193, + 0, + 106, + 33, + 1, + 3, + 64, + 32, + 4, + 69, + 13, + 2, + 32, + 4, + 65, + 127, + 106, + 33, + 4, + 32, + 1, + 45, + 0, + 0, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 7, + 71, + 13, + 0, + 11, + 65, + 0, + 33, + 4, + 12, + 5, + 11, + 32, + 1, + 32, + 6, + 75, + 13, + 1, + 32, + 3, + 33, + 2, + 32, + 5, + 34, + 1, + 65, + 165, + 211, + 193, + 0, + 71, + 13, + 2, + 12, + 1, + 11, + 32, + 3, + 33, + 2, + 32, + 5, + 34, + 1, + 65, + 165, + 211, + 193, + 0, + 71, + 13, + 1, + 11, + 11, + 32, + 0, + 65, + 255, + 255, + 3, + 113, + 33, + 3, + 65, + 212, + 212, + 193, + 0, + 33, + 1, + 65, + 1, + 33, + 4, + 3, + 64, + 32, + 1, + 65, + 1, + 106, + 33, + 0, + 2, + 127, + 32, + 1, + 45, + 0, + 0, + 34, + 2, + 65, + 24, + 116, + 65, + 24, + 117, + 34, + 5, + 65, + 127, + 76, + 4, + 64, + 32, + 0, + 65, + 247, + 215, + 193, + 0, + 70, + 13, + 10, + 32, + 1, + 45, + 0, + 1, + 32, + 5, + 65, + 255, + 0, + 113, + 65, + 8, + 116, + 114, + 33, + 2, + 32, + 1, + 65, + 2, + 106, + 12, + 1, + 11, + 32, + 0, + 11, + 33, + 1, + 32, + 3, + 32, + 2, + 107, + 34, + 3, + 65, + 0, + 72, + 13, + 2, + 32, + 4, + 65, + 1, + 115, + 33, + 4, + 32, + 1, + 65, + 247, + 215, + 193, + 0, + 71, + 13, + 0, + 11, + 12, + 1, + 11, + 32, + 0, + 65, + 181, + 217, + 115, + 106, + 65, + 181, + 219, + 43, + 73, + 32, + 0, + 65, + 226, + 139, + 116, + 106, + 65, + 226, + 11, + 73, + 114, + 32, + 0, + 65, + 159, + 168, + 116, + 106, + 65, + 159, + 24, + 73, + 32, + 0, + 65, + 222, + 226, + 116, + 106, + 65, + 14, + 73, + 114, + 114, + 32, + 0, + 65, + 254, + 255, + 255, + 0, + 113, + 65, + 158, + 240, + 10, + 70, + 32, + 0, + 65, + 162, + 178, + 117, + 106, + 65, + 34, + 73, + 114, + 114, + 13, + 0, + 32, + 0, + 65, + 203, + 145, + 117, + 106, + 65, + 11, + 79, + 13, + 7, + 11, + 32, + 4, + 65, + 1, + 113, + 15, + 11, + 32, + 2, + 32, + 3, + 65, + 144, + 205, + 193, + 0, + 16, + 100, + 0, + 11, + 32, + 3, + 65, + 162, + 2, + 65, + 144, + 205, + 193, + 0, + 16, + 99, + 0, + 11, + 65, + 240, + 196, + 193, + 0, + 65, + 43, + 65, + 160, + 205, + 193, + 0, + 16, + 114, + 0, + 11, + 32, + 2, + 32, + 3, + 65, + 144, + 205, + 193, + 0, + 16, + 100, + 0, + 11, + 32, + 3, + 65, + 175, + 1, + 65, + 144, + 205, + 193, + 0, + 16, + 99, + 0, + 11, + 65, + 240, + 196, + 193, + 0, + 65, + 43, + 65, + 160, + 205, + 193, + 0, + 16, + 114, + 0, + 11, + 32, + 0, + 65, + 240, + 131, + 56, + 73, + 11, + 254, + 5, + 1, + 8, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 7, + 36, + 0, + 2, + 64, + 2, + 64, + 32, + 5, + 69, + 4, + 64, + 32, + 0, + 65, + 1, + 54, + 2, + 8, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 65, + 123, + 33, + 10, + 12, + 1, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 180, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 1, + 70, + 4, + 64, + 32, + 0, + 66, + 0, + 55, + 2, + 0, + 32, + 6, + 65, + 4, + 71, + 13, + 1, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 65, + 1, + 33, + 10, + 12, + 8, + 11, + 32, + 6, + 65, + 4, + 71, + 13, + 1, + 3, + 64, + 32, + 7, + 32, + 5, + 54, + 2, + 40, + 32, + 7, + 32, + 4, + 54, + 2, + 36, + 32, + 7, + 65, + 1, + 54, + 2, + 32, + 32, + 7, + 66, + 0, + 55, + 3, + 24, + 32, + 7, + 32, + 2, + 54, + 2, + 16, + 32, + 7, + 32, + 3, + 54, + 2, + 20, + 32, + 7, + 32, + 1, + 32, + 7, + 65, + 16, + 106, + 65, + 4, + 16, + 4, + 32, + 3, + 32, + 7, + 40, + 2, + 4, + 34, + 9, + 73, + 13, + 9, + 32, + 5, + 32, + 7, + 40, + 2, + 8, + 34, + 8, + 73, + 13, + 5, + 32, + 8, + 32, + 12, + 106, + 33, + 12, + 32, + 9, + 32, + 11, + 106, + 33, + 11, + 65, + 240, + 177, + 127, + 33, + 10, + 65, + 1, + 33, + 13, + 2, + 64, + 32, + 7, + 40, + 2, + 0, + 65, + 2, + 106, + 14, + 4, + 8, + 4, + 0, + 5, + 0, + 11, + 32, + 3, + 32, + 9, + 107, + 33, + 3, + 32, + 2, + 32, + 9, + 106, + 33, + 2, + 32, + 4, + 32, + 8, + 106, + 33, + 4, + 32, + 5, + 32, + 8, + 107, + 34, + 5, + 13, + 0, + 11, + 12, + 5, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 8, + 65, + 123, + 33, + 10, + 12, + 6, + 11, + 65, + 3, + 32, + 6, + 65, + 2, + 70, + 65, + 1, + 116, + 32, + 6, + 65, + 3, + 70, + 34, + 14, + 27, + 33, + 8, + 2, + 64, + 32, + 6, + 65, + 2, + 70, + 4, + 64, + 3, + 64, + 32, + 7, + 32, + 5, + 54, + 2, + 40, + 32, + 7, + 32, + 4, + 54, + 2, + 36, + 32, + 7, + 65, + 1, + 54, + 2, + 32, + 32, + 7, + 66, + 0, + 55, + 3, + 24, + 32, + 7, + 32, + 2, + 54, + 2, + 16, + 32, + 7, + 32, + 3, + 54, + 2, + 20, + 32, + 7, + 32, + 1, + 32, + 7, + 65, + 16, + 106, + 32, + 8, + 16, + 4, + 32, + 3, + 32, + 7, + 40, + 2, + 4, + 34, + 9, + 73, + 13, + 9, + 32, + 5, + 32, + 7, + 40, + 2, + 8, + 34, + 8, + 73, + 13, + 5, + 32, + 8, + 32, + 12, + 106, + 33, + 12, + 32, + 9, + 32, + 11, + 106, + 33, + 11, + 65, + 240, + 177, + 127, + 33, + 10, + 65, + 1, + 33, + 13, + 2, + 64, + 32, + 7, + 40, + 2, + 0, + 65, + 2, + 106, + 14, + 4, + 8, + 4, + 0, + 5, + 0, + 11, + 32, + 5, + 32, + 8, + 107, + 34, + 5, + 69, + 13, + 6, + 32, + 3, + 32, + 9, + 107, + 34, + 3, + 69, + 13, + 2, + 32, + 2, + 32, + 9, + 106, + 33, + 2, + 32, + 4, + 32, + 8, + 106, + 33, + 4, + 65, + 2, + 33, + 8, + 12, + 0, + 11, + 0, + 11, + 65, + 3, + 65, + 0, + 32, + 14, + 27, + 33, + 14, + 3, + 64, + 32, + 7, + 32, + 5, + 54, + 2, + 40, + 32, + 7, + 32, + 4, + 54, + 2, + 36, + 32, + 7, + 65, + 1, + 54, + 2, + 32, + 32, + 7, + 66, + 0, + 55, + 3, + 24, + 32, + 7, + 32, + 2, + 54, + 2, + 16, + 32, + 7, + 32, + 3, + 54, + 2, + 20, + 32, + 7, + 32, + 1, + 32, + 7, + 65, + 16, + 106, + 32, + 8, + 16, + 4, + 32, + 3, + 32, + 7, + 40, + 2, + 4, + 34, + 9, + 73, + 13, + 8, + 32, + 5, + 32, + 7, + 40, + 2, + 8, + 34, + 8, + 73, + 13, + 4, + 32, + 8, + 32, + 12, + 106, + 33, + 12, + 32, + 9, + 32, + 11, + 106, + 33, + 11, + 65, + 240, + 177, + 127, + 33, + 10, + 65, + 1, + 33, + 13, + 2, + 64, + 32, + 7, + 40, + 2, + 0, + 65, + 2, + 106, + 14, + 4, + 7, + 3, + 0, + 4, + 0, + 11, + 32, + 5, + 32, + 8, + 107, + 34, + 5, + 69, + 13, + 5, + 32, + 3, + 32, + 9, + 107, + 34, + 3, + 69, + 13, + 1, + 32, + 2, + 32, + 9, + 106, + 33, + 2, + 32, + 4, + 32, + 8, + 106, + 33, + 4, + 32, + 14, + 33, + 8, + 12, + 0, + 11, + 0, + 11, + 65, + 0, + 65, + 123, + 32, + 6, + 32, + 11, + 114, + 32, + 12, + 114, + 34, + 1, + 27, + 33, + 10, + 32, + 1, + 69, + 33, + 13, + 12, + 4, + 11, + 65, + 126, + 33, + 10, + 12, + 3, + 11, + 65, + 1, + 33, + 10, + 65, + 0, + 33, + 13, + 12, + 2, + 11, + 32, + 8, + 32, + 5, + 65, + 156, + 188, + 192, + 0, + 16, + 101, + 0, + 11, + 65, + 0, + 33, + 13, + 65, + 0, + 33, + 10, + 11, + 32, + 0, + 32, + 13, + 54, + 2, + 8, + 32, + 0, + 32, + 12, + 54, + 2, + 4, + 32, + 0, + 32, + 11, + 54, + 2, + 0, + 11, + 32, + 0, + 65, + 12, + 106, + 32, + 10, + 54, + 2, + 0, + 32, + 7, + 65, + 48, + 106, + 36, + 0, + 15, + 11, + 32, + 9, + 32, + 3, + 65, + 140, + 188, + 192, + 0, + 16, + 101, + 0, + 11, + 145, + 6, + 2, + 3, + 127, + 1, + 126, + 35, + 0, + 65, + 176, + 2, + 107, + 34, + 5, + 36, + 0, + 32, + 5, + 65, + 0, + 54, + 2, + 224, + 1, + 32, + 5, + 66, + 1, + 55, + 3, + 216, + 1, + 32, + 5, + 32, + 5, + 65, + 216, + 1, + 106, + 32, + 3, + 4, + 127, + 32, + 4, + 5, + 65, + 6, + 11, + 16, + 62, + 32, + 5, + 32, + 1, + 32, + 2, + 16, + 26, + 33, + 8, + 32, + 5, + 65, + 232, + 0, + 106, + 32, + 5, + 65, + 216, + 0, + 16, + 121, + 26, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 8, + 167, + 34, + 3, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 4, + 64, + 32, + 5, + 32, + 3, + 58, + 0, + 88, + 32, + 5, + 32, + 8, + 66, + 56, + 136, + 60, + 0, + 95, + 32, + 5, + 32, + 8, + 66, + 40, + 136, + 61, + 0, + 93, + 32, + 5, + 32, + 8, + 66, + 8, + 136, + 62, + 0, + 89, + 2, + 64, + 32, + 5, + 40, + 2, + 128, + 1, + 69, + 13, + 0, + 32, + 5, + 65, + 232, + 0, + 106, + 16, + 34, + 34, + 8, + 167, + 65, + 3, + 113, + 65, + 2, + 71, + 13, + 0, + 32, + 8, + 66, + 32, + 136, + 167, + 34, + 3, + 40, + 2, + 0, + 32, + 3, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 3, + 40, + 2, + 4, + 34, + 4, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 3, + 40, + 2, + 0, + 32, + 6, + 32, + 4, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 5, + 65, + 232, + 0, + 106, + 16, + 77, + 32, + 5, + 65, + 184, + 1, + 106, + 40, + 2, + 0, + 34, + 3, + 4, + 64, + 32, + 5, + 40, + 2, + 180, + 1, + 32, + 3, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 5, + 41, + 3, + 88, + 33, + 8, + 12, + 1, + 11, + 32, + 5, + 65, + 216, + 1, + 106, + 32, + 5, + 65, + 232, + 0, + 106, + 65, + 216, + 0, + 16, + 121, + 26, + 32, + 5, + 65, + 216, + 1, + 106, + 16, + 34, + 34, + 8, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 5, + 40, + 2, + 240, + 1, + 33, + 3, + 65, + 0, + 33, + 4, + 32, + 5, + 65, + 0, + 54, + 2, + 240, + 1, + 32, + 3, + 13, + 2, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 240, + 131, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 5, + 32, + 8, + 55, + 3, + 88, + 32, + 5, + 65, + 216, + 1, + 106, + 16, + 53, + 11, + 32, + 5, + 32, + 8, + 55, + 3, + 192, + 1, + 32, + 5, + 65, + 192, + 1, + 106, + 16, + 133, + 1, + 33, + 3, + 32, + 5, + 65, + 244, + 0, + 106, + 65, + 9, + 54, + 2, + 0, + 32, + 5, + 65, + 236, + 1, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 5, + 65, + 10, + 54, + 2, + 108, + 32, + 5, + 66, + 2, + 55, + 2, + 220, + 1, + 32, + 5, + 65, + 244, + 132, + 192, + 0, + 54, + 2, + 216, + 1, + 32, + 5, + 32, + 3, + 58, + 0, + 215, + 1, + 32, + 5, + 32, + 5, + 65, + 192, + 1, + 106, + 54, + 2, + 112, + 32, + 5, + 32, + 5, + 65, + 215, + 1, + 106, + 54, + 2, + 104, + 32, + 5, + 32, + 5, + 65, + 232, + 0, + 106, + 54, + 2, + 232, + 1, + 32, + 5, + 65, + 200, + 1, + 106, + 32, + 5, + 65, + 216, + 1, + 106, + 16, + 51, + 32, + 5, + 40, + 2, + 200, + 1, + 34, + 4, + 32, + 5, + 40, + 2, + 208, + 1, + 16, + 0, + 33, + 3, + 32, + 5, + 40, + 2, + 204, + 1, + 34, + 6, + 4, + 64, + 32, + 4, + 32, + 6, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 5, + 45, + 0, + 192, + 1, + 65, + 2, + 79, + 4, + 64, + 32, + 5, + 40, + 2, + 196, + 1, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 6, + 40, + 2, + 4, + 34, + 7, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 7, + 32, + 6, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 5, + 40, + 2, + 196, + 1, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 65, + 1, + 33, + 4, + 12, + 1, + 11, + 32, + 5, + 65, + 244, + 1, + 106, + 40, + 2, + 0, + 33, + 6, + 32, + 5, + 32, + 5, + 65, + 248, + 1, + 106, + 40, + 2, + 0, + 54, + 2, + 96, + 32, + 5, + 32, + 6, + 54, + 2, + 92, + 32, + 5, + 32, + 3, + 54, + 2, + 88, + 32, + 5, + 65, + 216, + 1, + 106, + 16, + 53, + 32, + 5, + 41, + 2, + 92, + 33, + 8, + 11, + 32, + 2, + 4, + 64, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 2, + 64, + 32, + 4, + 69, + 4, + 64, + 2, + 64, + 32, + 8, + 167, + 34, + 4, + 32, + 8, + 66, + 32, + 136, + 167, + 34, + 2, + 77, + 4, + 64, + 32, + 3, + 33, + 1, + 12, + 1, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 1, + 33, + 1, + 32, + 3, + 32, + 4, + 65, + 1, + 16, + 156, + 1, + 12, + 1, + 11, + 32, + 3, + 32, + 4, + 32, + 2, + 16, + 143, + 1, + 34, + 1, + 69, + 13, + 2, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 5, + 65, + 176, + 2, + 106, + 36, + 0, + 15, + 11, + 32, + 3, + 16, + 168, + 1, + 0, + 11, + 32, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 201, + 3, + 1, + 7, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 9, + 36, + 0, + 2, + 64, + 32, + 0, + 69, + 32, + 1, + 69, + 114, + 13, + 0, + 2, + 64, + 32, + 2, + 65, + 4, + 75, + 13, + 0, + 32, + 1, + 65, + 3, + 106, + 65, + 2, + 118, + 65, + 127, + 106, + 34, + 1, + 65, + 255, + 1, + 75, + 13, + 0, + 32, + 1, + 65, + 2, + 116, + 65, + 140, + 223, + 193, + 0, + 106, + 34, + 6, + 40, + 2, + 0, + 33, + 4, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 120, + 106, + 34, + 7, + 32, + 7, + 40, + 2, + 0, + 65, + 126, + 113, + 54, + 2, + 0, + 32, + 9, + 65, + 136, + 223, + 193, + 0, + 54, + 2, + 12, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 6, + 32, + 7, + 54, + 2, + 0, + 12, + 1, + 11, + 65, + 136, + 223, + 193, + 0, + 40, + 2, + 0, + 33, + 2, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 120, + 106, + 34, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 65, + 126, + 113, + 54, + 2, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 65, + 124, + 106, + 34, + 6, + 40, + 2, + 0, + 65, + 124, + 113, + 34, + 5, + 4, + 64, + 32, + 5, + 40, + 2, + 0, + 34, + 8, + 65, + 1, + 113, + 69, + 13, + 1, + 11, + 32, + 4, + 65, + 124, + 113, + 34, + 3, + 69, + 13, + 1, + 65, + 0, + 32, + 3, + 32, + 4, + 65, + 2, + 113, + 27, + 34, + 3, + 69, + 13, + 1, + 32, + 3, + 45, + 0, + 0, + 65, + 1, + 113, + 13, + 1, + 32, + 0, + 32, + 3, + 40, + 2, + 8, + 65, + 124, + 113, + 54, + 2, + 0, + 32, + 3, + 32, + 1, + 65, + 1, + 114, + 54, + 2, + 8, + 32, + 2, + 33, + 1, + 12, + 2, + 11, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 124, + 113, + 34, + 0, + 69, + 4, + 64, + 32, + 5, + 33, + 3, + 12, + 1, + 11, + 32, + 5, + 33, + 3, + 65, + 0, + 32, + 0, + 32, + 4, + 65, + 2, + 113, + 27, + 34, + 4, + 69, + 13, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 4, + 65, + 3, + 113, + 32, + 5, + 114, + 54, + 2, + 4, + 32, + 6, + 40, + 2, + 0, + 34, + 0, + 65, + 124, + 113, + 34, + 3, + 69, + 13, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 124, + 113, + 33, + 0, + 32, + 3, + 40, + 2, + 0, + 33, + 8, + 11, + 32, + 3, + 32, + 8, + 65, + 3, + 113, + 32, + 0, + 114, + 54, + 2, + 0, + 32, + 6, + 40, + 2, + 0, + 33, + 0, + 11, + 32, + 6, + 32, + 0, + 65, + 3, + 113, + 54, + 2, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 0, + 65, + 3, + 113, + 54, + 2, + 0, + 32, + 0, + 65, + 2, + 113, + 69, + 4, + 64, + 32, + 2, + 33, + 1, + 12, + 2, + 11, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 65, + 2, + 114, + 54, + 2, + 0, + 32, + 2, + 33, + 1, + 12, + 1, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 0, + 11, + 65, + 136, + 223, + 193, + 0, + 32, + 1, + 54, + 2, + 0, + 11, + 32, + 9, + 65, + 16, + 106, + 36, + 0, + 11, + 251, + 5, + 1, + 7, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 2, + 118, + 34, + 11, + 4, + 64, + 32, + 0, + 32, + 3, + 106, + 33, + 12, + 3, + 64, + 32, + 2, + 32, + 6, + 106, + 34, + 9, + 32, + 5, + 113, + 34, + 7, + 32, + 1, + 79, + 13, + 2, + 32, + 3, + 32, + 6, + 106, + 34, + 8, + 32, + 1, + 79, + 13, + 3, + 32, + 6, + 32, + 12, + 106, + 34, + 10, + 32, + 0, + 32, + 7, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 9, + 65, + 1, + 106, + 34, + 9, + 32, + 5, + 113, + 34, + 7, + 32, + 1, + 79, + 13, + 4, + 32, + 8, + 65, + 1, + 106, + 32, + 1, + 79, + 13, + 5, + 32, + 10, + 65, + 1, + 106, + 32, + 0, + 32, + 7, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 9, + 65, + 1, + 106, + 34, + 9, + 32, + 5, + 113, + 34, + 7, + 32, + 1, + 79, + 13, + 6, + 32, + 8, + 65, + 2, + 106, + 32, + 1, + 79, + 13, + 7, + 32, + 10, + 65, + 2, + 106, + 32, + 0, + 32, + 7, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 9, + 65, + 1, + 106, + 32, + 5, + 113, + 34, + 7, + 32, + 1, + 79, + 13, + 8, + 32, + 8, + 65, + 3, + 106, + 32, + 1, + 79, + 13, + 9, + 32, + 10, + 65, + 3, + 106, + 32, + 0, + 32, + 7, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 6, + 65, + 4, + 106, + 33, + 6, + 32, + 11, + 65, + 127, + 106, + 34, + 11, + 13, + 0, + 11, + 32, + 3, + 32, + 6, + 106, + 33, + 3, + 32, + 2, + 32, + 6, + 106, + 33, + 2, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 3, + 113, + 65, + 1, + 107, + 14, + 3, + 0, + 1, + 2, + 4, + 11, + 32, + 2, + 32, + 5, + 113, + 34, + 6, + 32, + 1, + 79, + 13, + 21, + 32, + 3, + 32, + 1, + 73, + 13, + 2, + 32, + 3, + 32, + 1, + 65, + 200, + 180, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 2, + 32, + 5, + 113, + 34, + 4, + 32, + 1, + 79, + 13, + 17, + 32, + 3, + 32, + 1, + 79, + 13, + 18, + 32, + 0, + 32, + 3, + 106, + 32, + 0, + 32, + 4, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 2, + 65, + 1, + 106, + 32, + 5, + 113, + 34, + 6, + 32, + 1, + 79, + 13, + 19, + 32, + 3, + 65, + 1, + 106, + 34, + 3, + 32, + 1, + 73, + 13, + 1, + 32, + 3, + 32, + 1, + 65, + 168, + 180, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 2, + 32, + 5, + 113, + 34, + 4, + 32, + 1, + 79, + 13, + 10, + 32, + 3, + 32, + 1, + 79, + 13, + 11, + 32, + 0, + 32, + 3, + 106, + 32, + 0, + 32, + 4, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 2, + 65, + 1, + 106, + 32, + 5, + 113, + 34, + 4, + 32, + 1, + 79, + 13, + 12, + 32, + 3, + 65, + 1, + 106, + 34, + 6, + 32, + 1, + 79, + 13, + 13, + 32, + 0, + 32, + 6, + 106, + 32, + 0, + 32, + 4, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 2, + 65, + 2, + 106, + 32, + 5, + 113, + 34, + 6, + 32, + 1, + 79, + 13, + 14, + 32, + 3, + 65, + 2, + 106, + 34, + 3, + 32, + 1, + 79, + 13, + 15, + 11, + 32, + 0, + 32, + 3, + 106, + 32, + 0, + 32, + 6, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 11, + 15, + 11, + 32, + 7, + 32, + 1, + 65, + 152, + 178, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 32, + 1, + 65, + 168, + 178, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 7, + 32, + 1, + 65, + 184, + 178, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 65, + 1, + 106, + 32, + 1, + 65, + 200, + 178, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 7, + 32, + 1, + 65, + 216, + 178, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 65, + 2, + 106, + 32, + 1, + 65, + 232, + 178, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 7, + 32, + 1, + 65, + 248, + 178, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 8, + 65, + 3, + 106, + 32, + 1, + 65, + 136, + 179, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 32, + 1, + 65, + 152, + 179, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 3, + 32, + 1, + 65, + 168, + 179, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 32, + 1, + 65, + 184, + 179, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 200, + 179, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 216, + 179, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 3, + 32, + 1, + 65, + 232, + 179, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 32, + 1, + 65, + 248, + 179, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 3, + 32, + 1, + 65, + 136, + 180, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 152, + 180, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 184, + 180, + 192, + 0, + 16, + 98, + 0, + 11, + 153, + 6, + 2, + 11, + 127, + 2, + 126, + 35, + 0, + 65, + 64, + 106, + 34, + 3, + 36, + 0, + 65, + 3, + 33, + 8, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 0, + 65, + 24, + 106, + 33, + 10, + 32, + 0, + 65, + 48, + 106, + 33, + 12, + 32, + 0, + 65, + 200, + 0, + 106, + 33, + 11, + 32, + 3, + 65, + 4, + 114, + 33, + 13, + 32, + 0, + 65, + 212, + 0, + 106, + 33, + 6, + 32, + 0, + 65, + 32, + 106, + 33, + 7, + 3, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 11, + 40, + 2, + 0, + 69, + 4, + 64, + 2, + 64, + 32, + 6, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 10, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 0, + 40, + 2, + 76, + 33, + 5, + 32, + 10, + 32, + 7, + 40, + 2, + 0, + 32, + 4, + 16, + 75, + 32, + 0, + 40, + 2, + 24, + 32, + 7, + 40, + 2, + 0, + 106, + 32, + 5, + 32, + 4, + 16, + 121, + 26, + 32, + 7, + 32, + 7, + 40, + 2, + 0, + 32, + 4, + 106, + 54, + 2, + 0, + 32, + 6, + 40, + 2, + 0, + 34, + 5, + 32, + 4, + 73, + 13, + 4, + 32, + 6, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 4, + 107, + 34, + 5, + 69, + 13, + 2, + 32, + 0, + 40, + 2, + 76, + 34, + 9, + 32, + 4, + 32, + 9, + 106, + 32, + 5, + 16, + 96, + 32, + 6, + 32, + 5, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 32, + 0, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 168, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 3, + 65, + 16, + 106, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 29, + 32, + 3, + 41, + 2, + 20, + 33, + 14, + 2, + 64, + 2, + 64, + 32, + 3, + 40, + 2, + 16, + 65, + 1, + 71, + 4, + 64, + 32, + 2, + 32, + 14, + 167, + 34, + 4, + 73, + 13, + 5, + 32, + 12, + 32, + 1, + 32, + 4, + 16, + 141, + 1, + 32, + 3, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 54, + 2, + 4, + 32, + 4, + 13, + 1, + 65, + 28, + 65, + 1, + 16, + 149, + 1, + 34, + 0, + 69, + 13, + 6, + 32, + 0, + 65, + 24, + 106, + 65, + 244, + 128, + 192, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 0, + 65, + 16, + 106, + 65, + 236, + 128, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 228, + 128, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 220, + 128, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 7, + 32, + 1, + 66, + 156, + 128, + 128, + 128, + 192, + 3, + 55, + 2, + 4, + 32, + 1, + 32, + 0, + 54, + 2, + 0, + 65, + 14, + 32, + 1, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 34, + 15, + 66, + 8, + 136, + 33, + 14, + 32, + 15, + 167, + 33, + 8, + 12, + 11, + 11, + 32, + 3, + 65, + 1, + 54, + 2, + 0, + 32, + 3, + 32, + 14, + 55, + 2, + 4, + 32, + 13, + 16, + 133, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 70, + 13, + 1, + 32, + 3, + 53, + 0, + 5, + 32, + 3, + 65, + 9, + 106, + 51, + 0, + 0, + 32, + 3, + 65, + 11, + 106, + 49, + 0, + 0, + 66, + 16, + 134, + 132, + 66, + 32, + 134, + 132, + 33, + 14, + 32, + 3, + 45, + 0, + 4, + 33, + 8, + 12, + 10, + 11, + 32, + 1, + 32, + 4, + 106, + 33, + 1, + 32, + 2, + 32, + 4, + 107, + 33, + 2, + 12, + 7, + 11, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 13, + 6, + 32, + 3, + 45, + 0, + 4, + 65, + 2, + 79, + 13, + 5, + 12, + 6, + 11, + 32, + 3, + 65, + 52, + 106, + 65, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 36, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 32, + 11, + 54, + 2, + 56, + 32, + 3, + 66, + 3, + 55, + 2, + 20, + 32, + 3, + 65, + 180, + 130, + 192, + 0, + 54, + 2, + 16, + 32, + 3, + 65, + 1, + 54, + 2, + 44, + 32, + 3, + 65, + 244, + 129, + 192, + 0, + 54, + 2, + 60, + 32, + 3, + 32, + 3, + 65, + 40, + 106, + 54, + 2, + 32, + 32, + 3, + 32, + 3, + 65, + 60, + 106, + 54, + 2, + 48, + 32, + 3, + 32, + 3, + 65, + 56, + 106, + 54, + 2, + 40, + 32, + 3, + 65, + 16, + 106, + 65, + 204, + 130, + 192, + 0, + 16, + 130, + 1, + 0, + 11, + 32, + 4, + 32, + 5, + 65, + 208, + 133, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 4, + 32, + 2, + 65, + 220, + 130, + 192, + 0, + 16, + 99, + 0, + 11, + 65, + 28, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 3, + 40, + 2, + 8, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 9, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 9, + 32, + 5, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 8, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 2, + 13, + 0, + 11, + 11, + 32, + 3, + 65, + 64, + 107, + 36, + 0, + 32, + 8, + 173, + 66, + 255, + 1, + 131, + 32, + 14, + 66, + 8, + 134, + 132, + 11, + 213, + 5, + 1, + 6, + 127, + 2, + 127, + 32, + 1, + 69, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 33, + 9, + 65, + 45, + 33, + 10, + 32, + 5, + 65, + 1, + 106, + 12, + 1, + 11, + 65, + 43, + 65, + 128, + 128, + 196, + 0, + 32, + 0, + 40, + 2, + 0, + 34, + 9, + 65, + 1, + 113, + 34, + 1, + 27, + 33, + 10, + 32, + 1, + 32, + 5, + 106, + 11, + 33, + 8, + 2, + 64, + 32, + 9, + 65, + 4, + 113, + 69, + 4, + 64, + 65, + 0, + 33, + 2, + 12, + 1, + 11, + 32, + 3, + 4, + 64, + 32, + 3, + 33, + 6, + 32, + 2, + 33, + 1, + 3, + 64, + 32, + 7, + 32, + 1, + 45, + 0, + 0, + 65, + 192, + 1, + 113, + 65, + 128, + 1, + 71, + 106, + 33, + 7, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 6, + 65, + 127, + 106, + 34, + 6, + 13, + 0, + 11, + 11, + 32, + 7, + 32, + 8, + 106, + 33, + 8, + 11, + 65, + 1, + 33, + 1, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 8, + 65, + 1, + 71, + 4, + 64, + 32, + 0, + 32, + 10, + 32, + 2, + 32, + 3, + 16, + 111, + 13, + 1, + 12, + 2, + 11, + 32, + 0, + 65, + 12, + 106, + 40, + 2, + 0, + 34, + 6, + 32, + 8, + 77, + 4, + 64, + 32, + 0, + 32, + 10, + 32, + 2, + 32, + 3, + 16, + 111, + 13, + 1, + 12, + 2, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 9, + 65, + 8, + 113, + 4, + 64, + 32, + 0, + 40, + 2, + 4, + 33, + 9, + 32, + 0, + 65, + 48, + 54, + 2, + 4, + 32, + 0, + 45, + 0, + 32, + 33, + 11, + 32, + 0, + 65, + 1, + 58, + 0, + 32, + 32, + 0, + 32, + 10, + 32, + 2, + 32, + 3, + 16, + 111, + 13, + 5, + 65, + 0, + 33, + 1, + 32, + 6, + 32, + 8, + 107, + 34, + 3, + 33, + 2, + 65, + 1, + 32, + 0, + 45, + 0, + 32, + 34, + 6, + 32, + 6, + 65, + 3, + 70, + 27, + 65, + 3, + 113, + 65, + 1, + 107, + 14, + 3, + 2, + 1, + 2, + 3, + 11, + 65, + 0, + 33, + 1, + 32, + 6, + 32, + 8, + 107, + 34, + 6, + 33, + 8, + 2, + 64, + 2, + 64, + 2, + 64, + 65, + 1, + 32, + 0, + 45, + 0, + 32, + 34, + 7, + 32, + 7, + 65, + 3, + 70, + 27, + 65, + 3, + 113, + 65, + 1, + 107, + 14, + 3, + 1, + 0, + 1, + 2, + 11, + 32, + 6, + 65, + 1, + 118, + 33, + 1, + 32, + 6, + 65, + 1, + 106, + 65, + 1, + 118, + 33, + 8, + 12, + 1, + 11, + 65, + 0, + 33, + 8, + 32, + 6, + 33, + 1, + 11, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 3, + 64, + 32, + 1, + 65, + 127, + 106, + 34, + 1, + 69, + 13, + 4, + 32, + 0, + 40, + 2, + 24, + 32, + 0, + 40, + 2, + 4, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 65, + 1, + 15, + 11, + 32, + 3, + 65, + 1, + 118, + 33, + 1, + 32, + 3, + 65, + 1, + 106, + 65, + 1, + 118, + 33, + 2, + 12, + 1, + 11, + 65, + 0, + 33, + 2, + 32, + 3, + 33, + 1, + 11, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 2, + 64, + 3, + 64, + 32, + 1, + 65, + 127, + 106, + 34, + 1, + 69, + 13, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 0, + 40, + 2, + 4, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 65, + 1, + 15, + 11, + 32, + 0, + 40, + 2, + 4, + 33, + 3, + 65, + 1, + 33, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 4, + 32, + 5, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 1, + 32, + 2, + 65, + 1, + 106, + 33, + 7, + 32, + 0, + 40, + 2, + 28, + 33, + 2, + 32, + 0, + 40, + 2, + 24, + 33, + 4, + 3, + 64, + 32, + 7, + 65, + 127, + 106, + 34, + 7, + 4, + 64, + 32, + 4, + 32, + 3, + 32, + 2, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 1, + 12, + 3, + 11, + 11, + 32, + 0, + 32, + 11, + 58, + 0, + 32, + 32, + 0, + 32, + 9, + 54, + 2, + 4, + 65, + 0, + 15, + 11, + 32, + 0, + 40, + 2, + 4, + 33, + 6, + 65, + 1, + 33, + 1, + 32, + 0, + 32, + 10, + 32, + 2, + 32, + 3, + 16, + 111, + 13, + 0, + 32, + 0, + 40, + 2, + 24, + 32, + 4, + 32, + 5, + 32, + 0, + 40, + 2, + 28, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 0, + 32, + 8, + 65, + 1, + 106, + 33, + 7, + 32, + 0, + 40, + 2, + 28, + 33, + 2, + 32, + 0, + 40, + 2, + 24, + 33, + 0, + 3, + 64, + 32, + 7, + 65, + 127, + 106, + 34, + 7, + 69, + 4, + 64, + 65, + 0, + 15, + 11, + 32, + 0, + 32, + 6, + 32, + 2, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 11, + 32, + 1, + 15, + 11, + 32, + 0, + 40, + 2, + 24, + 32, + 4, + 32, + 5, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 11, + 205, + 5, + 2, + 8, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 6, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 44, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 9, + 32, + 1, + 65, + 32, + 106, + 33, + 7, + 32, + 1, + 65, + 44, + 106, + 33, + 8, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 5, + 32, + 9, + 32, + 7, + 40, + 2, + 0, + 32, + 4, + 16, + 75, + 32, + 1, + 40, + 2, + 24, + 32, + 7, + 40, + 2, + 0, + 106, + 32, + 5, + 32, + 4, + 16, + 121, + 26, + 32, + 7, + 32, + 7, + 40, + 2, + 0, + 32, + 4, + 106, + 54, + 2, + 0, + 32, + 8, + 40, + 2, + 0, + 34, + 5, + 32, + 4, + 73, + 13, + 3, + 32, + 8, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 4, + 107, + 34, + 5, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 36, + 34, + 10, + 32, + 4, + 32, + 10, + 106, + 32, + 5, + 16, + 96, + 32, + 8, + 32, + 5, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 152, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 1, + 65, + 36, + 106, + 33, + 9, + 32, + 1, + 41, + 3, + 0, + 33, + 12, + 32, + 3, + 69, + 13, + 1, + 32, + 6, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 9, + 65, + 0, + 16, + 110, + 32, + 6, + 45, + 0, + 0, + 34, + 4, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 34, + 12, + 167, + 114, + 13, + 2, + 32, + 6, + 45, + 0, + 1, + 65, + 2, + 70, + 13, + 2, + 32, + 1, + 65, + 24, + 106, + 33, + 10, + 32, + 1, + 65, + 44, + 106, + 33, + 7, + 32, + 1, + 65, + 32, + 106, + 33, + 8, + 3, + 64, + 2, + 64, + 32, + 7, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 2, + 64, + 32, + 10, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 5, + 32, + 10, + 32, + 8, + 40, + 2, + 0, + 32, + 4, + 16, + 75, + 32, + 1, + 40, + 2, + 24, + 32, + 8, + 40, + 2, + 0, + 106, + 32, + 5, + 32, + 4, + 16, + 121, + 26, + 32, + 8, + 32, + 8, + 40, + 2, + 0, + 32, + 4, + 106, + 54, + 2, + 0, + 32, + 7, + 40, + 2, + 0, + 34, + 5, + 32, + 4, + 73, + 13, + 2, + 32, + 7, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 4, + 107, + 34, + 5, + 69, + 13, + 3, + 32, + 1, + 40, + 2, + 36, + 34, + 11, + 32, + 4, + 32, + 11, + 106, + 32, + 5, + 16, + 96, + 32, + 7, + 32, + 5, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 152, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 4, + 32, + 5, + 65, + 208, + 133, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 1, + 41, + 3, + 0, + 33, + 12, + 32, + 6, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 9, + 65, + 0, + 16, + 110, + 32, + 6, + 45, + 0, + 0, + 34, + 4, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 34, + 12, + 167, + 114, + 13, + 3, + 32, + 6, + 45, + 0, + 1, + 65, + 2, + 71, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 4, + 32, + 5, + 65, + 208, + 133, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 6, + 32, + 1, + 32, + 2, + 65, + 0, + 32, + 9, + 65, + 0, + 16, + 110, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 33, + 12, + 32, + 6, + 45, + 0, + 0, + 33, + 4, + 11, + 2, + 64, + 2, + 64, + 32, + 0, + 2, + 127, + 32, + 4, + 65, + 255, + 1, + 113, + 65, + 1, + 70, + 4, + 64, + 65, + 22, + 65, + 1, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 2, + 32, + 1, + 65, + 14, + 106, + 65, + 142, + 132, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 1, + 65, + 8, + 106, + 65, + 136, + 132, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 1, + 65, + 128, + 132, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 2, + 69, + 13, + 3, + 32, + 2, + 66, + 150, + 128, + 128, + 128, + 224, + 2, + 55, + 2, + 4, + 32, + 2, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 11, + 32, + 2, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 55, + 2, + 4, + 65, + 1, + 12, + 1, + 11, + 32, + 0, + 32, + 12, + 62, + 2, + 4, + 65, + 0, + 11, + 54, + 2, + 0, + 32, + 6, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 65, + 22, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 205, + 5, + 2, + 8, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 6, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 44, + 106, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 4, + 64, + 32, + 1, + 65, + 24, + 106, + 33, + 9, + 32, + 1, + 65, + 32, + 106, + 33, + 7, + 32, + 1, + 65, + 44, + 106, + 33, + 8, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 5, + 32, + 9, + 32, + 7, + 40, + 2, + 0, + 32, + 4, + 16, + 75, + 32, + 1, + 40, + 2, + 24, + 32, + 7, + 40, + 2, + 0, + 106, + 32, + 5, + 32, + 4, + 16, + 121, + 26, + 32, + 7, + 32, + 7, + 40, + 2, + 0, + 32, + 4, + 106, + 54, + 2, + 0, + 32, + 8, + 40, + 2, + 0, + 34, + 5, + 32, + 4, + 73, + 13, + 3, + 32, + 8, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 4, + 107, + 34, + 5, + 69, + 13, + 2, + 32, + 1, + 40, + 2, + 36, + 34, + 10, + 32, + 4, + 32, + 10, + 106, + 32, + 5, + 16, + 96, + 32, + 8, + 32, + 5, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 152, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 1, + 65, + 36, + 106, + 33, + 9, + 32, + 1, + 41, + 3, + 0, + 33, + 12, + 32, + 3, + 69, + 13, + 1, + 32, + 6, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 9, + 65, + 0, + 16, + 65, + 32, + 6, + 45, + 0, + 0, + 34, + 4, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 34, + 12, + 167, + 114, + 13, + 2, + 32, + 6, + 45, + 0, + 1, + 65, + 2, + 70, + 13, + 2, + 32, + 1, + 65, + 24, + 106, + 33, + 10, + 32, + 1, + 65, + 44, + 106, + 33, + 7, + 32, + 1, + 65, + 32, + 106, + 33, + 8, + 3, + 64, + 2, + 64, + 32, + 7, + 40, + 2, + 0, + 34, + 4, + 69, + 13, + 0, + 2, + 64, + 32, + 10, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 1, + 40, + 2, + 36, + 33, + 5, + 32, + 10, + 32, + 8, + 40, + 2, + 0, + 32, + 4, + 16, + 75, + 32, + 1, + 40, + 2, + 24, + 32, + 8, + 40, + 2, + 0, + 106, + 32, + 5, + 32, + 4, + 16, + 121, + 26, + 32, + 8, + 32, + 8, + 40, + 2, + 0, + 32, + 4, + 106, + 54, + 2, + 0, + 32, + 7, + 40, + 2, + 0, + 34, + 5, + 32, + 4, + 73, + 13, + 2, + 32, + 7, + 65, + 0, + 54, + 2, + 0, + 32, + 5, + 32, + 4, + 107, + 34, + 5, + 69, + 13, + 3, + 32, + 1, + 40, + 2, + 36, + 34, + 11, + 32, + 4, + 32, + 11, + 106, + 32, + 5, + 16, + 96, + 32, + 7, + 32, + 5, + 54, + 2, + 0, + 32, + 5, + 33, + 4, + 32, + 1, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 152, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 4, + 32, + 5, + 65, + 208, + 133, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 1, + 41, + 3, + 0, + 33, + 12, + 32, + 6, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 9, + 65, + 0, + 16, + 65, + 32, + 6, + 45, + 0, + 0, + 34, + 4, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 34, + 12, + 167, + 114, + 13, + 3, + 32, + 6, + 45, + 0, + 1, + 65, + 2, + 71, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 4, + 32, + 5, + 65, + 208, + 133, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 6, + 32, + 1, + 32, + 2, + 65, + 0, + 32, + 9, + 65, + 0, + 16, + 65, + 32, + 1, + 41, + 3, + 0, + 32, + 12, + 125, + 33, + 12, + 32, + 6, + 45, + 0, + 0, + 33, + 4, + 11, + 2, + 64, + 2, + 64, + 32, + 0, + 2, + 127, + 32, + 4, + 65, + 255, + 1, + 113, + 65, + 1, + 70, + 4, + 64, + 65, + 22, + 65, + 1, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 2, + 32, + 1, + 65, + 14, + 106, + 65, + 142, + 132, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 1, + 65, + 8, + 106, + 65, + 136, + 132, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 1, + 65, + 128, + 132, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 2, + 69, + 13, + 3, + 32, + 2, + 66, + 150, + 128, + 128, + 128, + 224, + 2, + 55, + 2, + 4, + 32, + 2, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 11, + 32, + 2, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 55, + 2, + 4, + 65, + 1, + 12, + 1, + 11, + 32, + 0, + 32, + 12, + 62, + 2, + 4, + 65, + 0, + 11, + 54, + 2, + 0, + 32, + 6, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 65, + 22, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 201, + 4, + 1, + 18, + 127, + 32, + 0, + 47, + 1, + 2, + 33, + 14, + 32, + 0, + 47, + 1, + 0, + 33, + 15, + 2, + 64, + 32, + 2, + 65, + 124, + 113, + 34, + 17, + 32, + 17, + 65, + 192, + 173, + 1, + 112, + 34, + 18, + 107, + 34, + 19, + 65, + 192, + 173, + 1, + 73, + 4, + 64, + 12, + 1, + 11, + 32, + 15, + 65, + 192, + 173, + 1, + 108, + 33, + 20, + 32, + 1, + 33, + 12, + 32, + 19, + 33, + 16, + 3, + 64, + 65, + 192, + 210, + 126, + 33, + 13, + 32, + 16, + 65, + 192, + 210, + 126, + 106, + 33, + 16, + 32, + 12, + 33, + 3, + 3, + 64, + 32, + 4, + 32, + 8, + 32, + 3, + 45, + 0, + 3, + 106, + 34, + 8, + 106, + 33, + 4, + 32, + 5, + 32, + 9, + 32, + 3, + 45, + 0, + 2, + 106, + 34, + 9, + 106, + 33, + 5, + 32, + 6, + 32, + 10, + 32, + 3, + 45, + 0, + 1, + 106, + 34, + 10, + 106, + 33, + 6, + 32, + 7, + 32, + 11, + 32, + 3, + 45, + 0, + 0, + 106, + 34, + 11, + 106, + 33, + 7, + 32, + 3, + 65, + 4, + 106, + 33, + 3, + 32, + 13, + 65, + 4, + 106, + 34, + 13, + 13, + 0, + 11, + 32, + 4, + 65, + 241, + 255, + 3, + 112, + 33, + 4, + 32, + 5, + 65, + 241, + 255, + 3, + 112, + 33, + 5, + 32, + 6, + 65, + 241, + 255, + 3, + 112, + 33, + 6, + 32, + 7, + 65, + 241, + 255, + 3, + 112, + 33, + 7, + 32, + 8, + 65, + 241, + 255, + 3, + 112, + 33, + 8, + 32, + 9, + 65, + 241, + 255, + 3, + 112, + 33, + 9, + 32, + 10, + 65, + 241, + 255, + 3, + 112, + 33, + 10, + 32, + 11, + 65, + 241, + 255, + 3, + 112, + 33, + 11, + 32, + 12, + 65, + 192, + 173, + 1, + 106, + 33, + 12, + 32, + 14, + 32, + 20, + 106, + 65, + 241, + 255, + 3, + 112, + 33, + 14, + 32, + 16, + 65, + 192, + 173, + 1, + 79, + 13, + 0, + 11, + 11, + 32, + 2, + 65, + 3, + 113, + 33, + 13, + 32, + 18, + 65, + 252, + 255, + 1, + 113, + 34, + 2, + 4, + 64, + 32, + 1, + 32, + 19, + 106, + 33, + 3, + 65, + 0, + 32, + 2, + 107, + 33, + 12, + 3, + 64, + 32, + 7, + 32, + 11, + 32, + 3, + 45, + 0, + 0, + 106, + 34, + 11, + 106, + 33, + 7, + 32, + 4, + 32, + 8, + 32, + 3, + 65, + 3, + 106, + 45, + 0, + 0, + 106, + 34, + 8, + 106, + 33, + 4, + 32, + 5, + 32, + 9, + 32, + 3, + 65, + 2, + 106, + 45, + 0, + 0, + 106, + 34, + 9, + 106, + 33, + 5, + 32, + 6, + 32, + 10, + 32, + 3, + 65, + 1, + 106, + 45, + 0, + 0, + 106, + 34, + 10, + 106, + 33, + 6, + 32, + 3, + 65, + 4, + 106, + 33, + 3, + 32, + 12, + 65, + 4, + 106, + 34, + 12, + 13, + 0, + 11, + 11, + 32, + 14, + 32, + 15, + 32, + 18, + 108, + 106, + 65, + 241, + 255, + 3, + 112, + 32, + 7, + 65, + 241, + 255, + 3, + 112, + 65, + 2, + 116, + 106, + 32, + 6, + 65, + 241, + 255, + 3, + 112, + 65, + 2, + 116, + 32, + 10, + 65, + 241, + 255, + 3, + 112, + 34, + 2, + 107, + 106, + 32, + 5, + 65, + 241, + 255, + 3, + 112, + 65, + 2, + 116, + 32, + 9, + 65, + 241, + 255, + 3, + 112, + 34, + 12, + 65, + 1, + 116, + 107, + 106, + 65, + 0, + 32, + 8, + 65, + 241, + 255, + 3, + 112, + 34, + 3, + 107, + 65, + 3, + 108, + 32, + 4, + 65, + 241, + 255, + 3, + 112, + 65, + 2, + 116, + 106, + 106, + 65, + 166, + 255, + 23, + 106, + 33, + 4, + 32, + 3, + 32, + 12, + 32, + 2, + 32, + 11, + 65, + 241, + 255, + 3, + 112, + 32, + 15, + 106, + 106, + 106, + 106, + 33, + 5, + 32, + 13, + 4, + 64, + 32, + 1, + 32, + 17, + 106, + 33, + 3, + 3, + 64, + 32, + 5, + 32, + 3, + 45, + 0, + 0, + 106, + 34, + 5, + 32, + 4, + 106, + 33, + 4, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 13, + 65, + 127, + 106, + 34, + 13, + 13, + 0, + 11, + 11, + 32, + 0, + 32, + 4, + 65, + 241, + 255, + 3, + 112, + 59, + 1, + 2, + 32, + 0, + 32, + 5, + 65, + 241, + 255, + 3, + 112, + 59, + 1, + 0, + 11, + 177, + 5, + 1, + 9, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 36, + 106, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 3, + 58, + 0, + 40, + 32, + 3, + 66, + 128, + 128, + 128, + 128, + 128, + 4, + 55, + 3, + 8, + 32, + 3, + 32, + 0, + 54, + 2, + 32, + 32, + 3, + 65, + 0, + 54, + 2, + 24, + 32, + 3, + 65, + 0, + 54, + 2, + 16, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 8, + 34, + 4, + 4, + 64, + 32, + 2, + 40, + 2, + 0, + 33, + 6, + 32, + 2, + 40, + 2, + 4, + 34, + 7, + 32, + 2, + 65, + 12, + 106, + 40, + 2, + 0, + 34, + 5, + 32, + 5, + 32, + 7, + 75, + 27, + 34, + 5, + 69, + 13, + 1, + 32, + 0, + 32, + 6, + 40, + 2, + 0, + 32, + 6, + 40, + 2, + 4, + 32, + 1, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 3, + 32, + 6, + 65, + 12, + 106, + 33, + 0, + 32, + 2, + 40, + 2, + 16, + 33, + 9, + 32, + 5, + 33, + 8, + 3, + 64, + 32, + 3, + 32, + 4, + 65, + 28, + 106, + 45, + 0, + 0, + 58, + 0, + 40, + 32, + 3, + 32, + 4, + 65, + 4, + 106, + 41, + 2, + 0, + 66, + 32, + 137, + 55, + 3, + 8, + 32, + 4, + 65, + 24, + 106, + 40, + 2, + 0, + 33, + 1, + 65, + 0, + 33, + 10, + 65, + 0, + 33, + 2, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 20, + 106, + 40, + 2, + 0, + 65, + 1, + 107, + 14, + 2, + 0, + 2, + 1, + 11, + 32, + 1, + 65, + 3, + 116, + 32, + 9, + 106, + 34, + 11, + 40, + 2, + 4, + 65, + 193, + 0, + 71, + 13, + 1, + 32, + 11, + 40, + 2, + 0, + 40, + 2, + 0, + 33, + 1, + 11, + 65, + 1, + 33, + 2, + 11, + 32, + 3, + 32, + 1, + 54, + 2, + 20, + 32, + 3, + 32, + 2, + 54, + 2, + 16, + 32, + 4, + 65, + 16, + 106, + 40, + 2, + 0, + 33, + 2, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 12, + 106, + 40, + 2, + 0, + 65, + 1, + 107, + 14, + 2, + 0, + 2, + 1, + 11, + 32, + 2, + 65, + 3, + 116, + 32, + 9, + 106, + 34, + 1, + 40, + 2, + 4, + 65, + 193, + 0, + 71, + 13, + 1, + 32, + 1, + 40, + 2, + 0, + 40, + 2, + 0, + 33, + 2, + 11, + 65, + 1, + 33, + 10, + 11, + 32, + 3, + 32, + 2, + 54, + 2, + 28, + 32, + 3, + 32, + 10, + 54, + 2, + 24, + 32, + 9, + 32, + 4, + 40, + 2, + 0, + 65, + 3, + 116, + 106, + 34, + 1, + 40, + 2, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 1, + 40, + 2, + 4, + 17, + 0, + 0, + 13, + 4, + 32, + 8, + 65, + 127, + 106, + 34, + 8, + 69, + 13, + 3, + 32, + 4, + 65, + 32, + 106, + 33, + 4, + 32, + 0, + 65, + 124, + 106, + 33, + 1, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 32, + 0, + 65, + 8, + 106, + 33, + 0, + 32, + 3, + 40, + 2, + 32, + 32, + 1, + 40, + 2, + 0, + 32, + 2, + 32, + 3, + 40, + 2, + 36, + 40, + 2, + 12, + 17, + 1, + 0, + 69, + 13, + 0, + 11, + 12, + 3, + 11, + 32, + 2, + 40, + 2, + 0, + 33, + 6, + 32, + 2, + 40, + 2, + 4, + 34, + 7, + 32, + 2, + 65, + 20, + 106, + 40, + 2, + 0, + 34, + 5, + 32, + 5, + 32, + 7, + 75, + 27, + 34, + 5, + 69, + 13, + 0, + 32, + 2, + 40, + 2, + 16, + 33, + 4, + 32, + 0, + 32, + 6, + 40, + 2, + 0, + 32, + 6, + 40, + 2, + 4, + 32, + 1, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 2, + 32, + 6, + 65, + 12, + 106, + 33, + 0, + 32, + 5, + 33, + 2, + 3, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 4, + 65, + 4, + 106, + 40, + 2, + 0, + 17, + 0, + 0, + 13, + 3, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 69, + 13, + 2, + 32, + 4, + 65, + 8, + 106, + 33, + 4, + 32, + 0, + 65, + 124, + 106, + 33, + 1, + 32, + 0, + 40, + 2, + 0, + 33, + 8, + 32, + 0, + 65, + 8, + 106, + 33, + 0, + 32, + 3, + 40, + 2, + 32, + 32, + 1, + 40, + 2, + 0, + 32, + 8, + 32, + 3, + 40, + 2, + 36, + 40, + 2, + 12, + 17, + 1, + 0, + 69, + 13, + 0, + 11, + 12, + 2, + 11, + 65, + 0, + 33, + 5, + 11, + 32, + 7, + 32, + 5, + 75, + 4, + 64, + 32, + 3, + 40, + 2, + 32, + 32, + 6, + 32, + 5, + 65, + 3, + 116, + 106, + 34, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 4, + 32, + 3, + 40, + 2, + 36, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 1, + 11, + 65, + 0, + 12, + 1, + 11, + 65, + 1, + 11, + 32, + 3, + 65, + 48, + 106, + 36, + 0, + 11, + 177, + 4, + 1, + 8, + 127, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 0, + 34, + 5, + 4, + 64, + 32, + 1, + 65, + 127, + 106, + 33, + 10, + 32, + 0, + 65, + 2, + 116, + 33, + 9, + 65, + 0, + 32, + 1, + 107, + 33, + 11, + 3, + 64, + 32, + 5, + 65, + 8, + 106, + 33, + 6, + 32, + 5, + 40, + 2, + 8, + 34, + 7, + 65, + 1, + 113, + 4, + 64, + 3, + 64, + 32, + 6, + 32, + 7, + 65, + 126, + 113, + 54, + 2, + 0, + 2, + 127, + 65, + 0, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 65, + 124, + 113, + 34, + 6, + 69, + 13, + 0, + 26, + 65, + 0, + 32, + 6, + 32, + 6, + 45, + 0, + 0, + 65, + 1, + 113, + 27, + 11, + 33, + 1, + 2, + 64, + 32, + 5, + 40, + 2, + 0, + 34, + 8, + 65, + 124, + 113, + 34, + 12, + 69, + 13, + 0, + 65, + 0, + 32, + 12, + 32, + 8, + 65, + 2, + 113, + 27, + 34, + 8, + 69, + 13, + 0, + 32, + 8, + 32, + 8, + 40, + 2, + 4, + 65, + 3, + 113, + 32, + 6, + 114, + 54, + 2, + 4, + 32, + 5, + 40, + 2, + 4, + 34, + 7, + 65, + 124, + 113, + 33, + 6, + 11, + 32, + 5, + 32, + 6, + 4, + 127, + 32, + 6, + 32, + 6, + 40, + 2, + 0, + 65, + 3, + 113, + 32, + 5, + 40, + 2, + 0, + 65, + 124, + 113, + 114, + 54, + 2, + 0, + 32, + 5, + 40, + 2, + 4, + 5, + 32, + 7, + 11, + 65, + 3, + 113, + 54, + 2, + 4, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 34, + 5, + 65, + 3, + 113, + 54, + 2, + 0, + 32, + 5, + 65, + 2, + 113, + 4, + 64, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 2, + 114, + 54, + 2, + 0, + 11, + 32, + 2, + 32, + 1, + 54, + 2, + 0, + 32, + 1, + 65, + 8, + 106, + 33, + 6, + 32, + 1, + 34, + 5, + 40, + 2, + 8, + 34, + 7, + 65, + 1, + 113, + 13, + 0, + 11, + 11, + 32, + 5, + 40, + 2, + 0, + 65, + 124, + 113, + 34, + 1, + 32, + 6, + 107, + 32, + 9, + 79, + 4, + 64, + 32, + 6, + 32, + 3, + 32, + 0, + 32, + 4, + 40, + 2, + 16, + 17, + 0, + 0, + 65, + 2, + 116, + 106, + 65, + 8, + 106, + 32, + 1, + 32, + 9, + 107, + 32, + 11, + 113, + 34, + 1, + 77, + 4, + 64, + 32, + 1, + 65, + 0, + 54, + 2, + 0, + 32, + 1, + 65, + 120, + 106, + 34, + 1, + 66, + 0, + 55, + 2, + 0, + 32, + 1, + 32, + 5, + 40, + 2, + 0, + 65, + 124, + 113, + 54, + 2, + 0, + 2, + 64, + 32, + 5, + 40, + 2, + 0, + 34, + 0, + 65, + 124, + 113, + 34, + 2, + 69, + 13, + 0, + 65, + 0, + 32, + 2, + 32, + 0, + 65, + 2, + 113, + 27, + 34, + 0, + 69, + 13, + 0, + 32, + 0, + 32, + 0, + 40, + 2, + 4, + 65, + 3, + 113, + 32, + 1, + 114, + 54, + 2, + 4, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 4, + 65, + 3, + 113, + 32, + 5, + 114, + 54, + 2, + 4, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 65, + 3, + 113, + 32, + 1, + 114, + 54, + 2, + 0, + 32, + 6, + 32, + 6, + 40, + 2, + 0, + 65, + 126, + 113, + 54, + 2, + 0, + 32, + 5, + 40, + 2, + 0, + 34, + 0, + 65, + 2, + 113, + 69, + 13, + 5, + 32, + 5, + 32, + 0, + 65, + 125, + 113, + 54, + 2, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 2, + 114, + 54, + 2, + 0, + 12, + 5, + 11, + 32, + 6, + 32, + 10, + 113, + 69, + 13, + 3, + 11, + 32, + 2, + 32, + 5, + 40, + 2, + 8, + 34, + 5, + 54, + 2, + 0, + 32, + 5, + 13, + 0, + 11, + 11, + 65, + 0, + 15, + 11, + 32, + 2, + 32, + 6, + 40, + 2, + 0, + 65, + 124, + 113, + 54, + 2, + 0, + 32, + 5, + 33, + 1, + 11, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 114, + 54, + 2, + 0, + 32, + 1, + 65, + 8, + 106, + 11, + 170, + 5, + 1, + 3, + 127, + 35, + 0, + 65, + 64, + 106, + 34, + 2, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 45, + 0, + 0, + 65, + 1, + 107, + 14, + 2, + 0, + 2, + 1, + 11, + 65, + 136, + 189, + 193, + 0, + 33, + 3, + 65, + 22, + 33, + 4, + 2, + 64, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 45, + 0, + 1, + 65, + 1, + 107, + 14, + 17, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 18, + 0, + 11, + 65, + 161, + 191, + 193, + 0, + 33, + 3, + 65, + 16, + 33, + 4, + 12, + 17, + 11, + 65, + 144, + 191, + 193, + 0, + 33, + 3, + 65, + 17, + 33, + 4, + 12, + 16, + 11, + 65, + 254, + 190, + 193, + 0, + 33, + 3, + 65, + 18, + 33, + 4, + 12, + 15, + 11, + 65, + 238, + 190, + 193, + 0, + 33, + 3, + 65, + 16, + 33, + 4, + 12, + 14, + 11, + 65, + 220, + 190, + 193, + 0, + 33, + 3, + 65, + 18, + 33, + 4, + 12, + 13, + 11, + 65, + 207, + 190, + 193, + 0, + 33, + 3, + 65, + 13, + 33, + 4, + 12, + 12, + 11, + 65, + 193, + 190, + 193, + 0, + 12, + 10, + 11, + 65, + 172, + 190, + 193, + 0, + 33, + 3, + 65, + 21, + 33, + 4, + 12, + 10, + 11, + 65, + 161, + 190, + 193, + 0, + 33, + 3, + 65, + 11, + 33, + 4, + 12, + 9, + 11, + 65, + 140, + 190, + 193, + 0, + 33, + 3, + 65, + 21, + 33, + 4, + 12, + 8, + 11, + 65, + 247, + 189, + 193, + 0, + 33, + 3, + 65, + 21, + 33, + 4, + 12, + 7, + 11, + 65, + 224, + 189, + 193, + 0, + 33, + 3, + 65, + 23, + 33, + 4, + 12, + 6, + 11, + 65, + 212, + 189, + 193, + 0, + 33, + 3, + 65, + 12, + 33, + 4, + 12, + 5, + 11, + 65, + 203, + 189, + 193, + 0, + 33, + 3, + 65, + 9, + 33, + 4, + 12, + 4, + 11, + 65, + 193, + 189, + 193, + 0, + 33, + 3, + 65, + 10, + 33, + 4, + 12, + 3, + 11, + 65, + 172, + 189, + 193, + 0, + 33, + 3, + 65, + 21, + 33, + 4, + 12, + 2, + 11, + 65, + 158, + 189, + 193, + 0, + 11, + 33, + 3, + 65, + 14, + 33, + 4, + 11, + 32, + 2, + 65, + 60, + 106, + 65, + 1, + 54, + 2, + 0, + 32, + 2, + 32, + 4, + 54, + 2, + 28, + 32, + 2, + 32, + 3, + 54, + 2, + 24, + 32, + 2, + 65, + 39, + 54, + 2, + 12, + 32, + 2, + 66, + 1, + 55, + 2, + 44, + 32, + 2, + 65, + 128, + 189, + 193, + 0, + 54, + 2, + 40, + 32, + 2, + 32, + 2, + 65, + 24, + 106, + 54, + 2, + 8, + 32, + 2, + 32, + 2, + 65, + 8, + 106, + 54, + 2, + 56, + 32, + 1, + 32, + 2, + 65, + 40, + 106, + 16, + 102, + 33, + 0, + 12, + 2, + 11, + 32, + 2, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 54, + 2, + 4, + 65, + 20, + 65, + 1, + 16, + 149, + 1, + 34, + 0, + 69, + 13, + 2, + 32, + 0, + 65, + 16, + 106, + 65, + 192, + 194, + 193, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 184, + 194, + 193, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 176, + 194, + 193, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 2, + 66, + 148, + 128, + 128, + 128, + 192, + 2, + 55, + 2, + 12, + 32, + 2, + 32, + 0, + 54, + 2, + 8, + 32, + 2, + 65, + 60, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 2, + 65, + 36, + 106, + 65, + 40, + 54, + 2, + 0, + 32, + 2, + 66, + 3, + 55, + 2, + 44, + 32, + 2, + 65, + 192, + 191, + 193, + 0, + 54, + 2, + 40, + 32, + 2, + 65, + 41, + 54, + 2, + 28, + 32, + 2, + 32, + 2, + 65, + 24, + 106, + 54, + 2, + 56, + 32, + 2, + 32, + 2, + 65, + 4, + 106, + 54, + 2, + 32, + 32, + 2, + 32, + 2, + 65, + 8, + 106, + 54, + 2, + 24, + 32, + 1, + 32, + 2, + 65, + 40, + 106, + 16, + 102, + 33, + 0, + 32, + 2, + 40, + 2, + 8, + 34, + 1, + 69, + 13, + 1, + 32, + 2, + 40, + 2, + 12, + 34, + 3, + 69, + 13, + 1, + 32, + 1, + 32, + 3, + 65, + 1, + 16, + 156, + 1, + 12, + 1, + 11, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 0, + 40, + 2, + 0, + 32, + 1, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 32, + 17, + 0, + 0, + 33, + 0, + 11, + 32, + 2, + 65, + 64, + 107, + 36, + 0, + 32, + 0, + 15, + 11, + 65, + 20, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 133, + 4, + 2, + 7, + 127, + 2, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 65, + 212, + 0, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 0, + 40, + 2, + 24, + 4, + 64, + 32, + 0, + 65, + 24, + 106, + 33, + 6, + 32, + 0, + 65, + 32, + 106, + 33, + 3, + 32, + 0, + 65, + 212, + 0, + 106, + 33, + 5, + 3, + 64, + 32, + 0, + 40, + 2, + 76, + 33, + 1, + 32, + 6, + 32, + 3, + 40, + 2, + 0, + 32, + 2, + 16, + 75, + 32, + 0, + 40, + 2, + 24, + 32, + 3, + 40, + 2, + 0, + 106, + 32, + 1, + 32, + 2, + 16, + 121, + 26, + 32, + 3, + 32, + 3, + 40, + 2, + 0, + 32, + 2, + 106, + 54, + 2, + 0, + 32, + 5, + 40, + 2, + 0, + 34, + 1, + 32, + 2, + 73, + 13, + 3, + 32, + 5, + 65, + 0, + 54, + 2, + 0, + 32, + 1, + 32, + 2, + 107, + 34, + 1, + 69, + 13, + 2, + 32, + 0, + 40, + 2, + 76, + 34, + 7, + 32, + 2, + 32, + 7, + 106, + 32, + 1, + 16, + 96, + 32, + 5, + 32, + 1, + 54, + 2, + 0, + 32, + 1, + 33, + 2, + 32, + 0, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 168, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 0, + 16, + 57, + 34, + 8, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 13, + 1, + 66, + 3, + 33, + 9, + 66, + 0, + 33, + 8, + 32, + 0, + 40, + 2, + 72, + 65, + 7, + 75, + 13, + 4, + 32, + 0, + 65, + 24, + 106, + 33, + 5, + 32, + 0, + 65, + 48, + 106, + 33, + 6, + 32, + 0, + 65, + 32, + 106, + 33, + 2, + 3, + 64, + 32, + 6, + 16, + 147, + 1, + 33, + 1, + 32, + 4, + 32, + 6, + 40, + 2, + 16, + 34, + 3, + 65, + 24, + 118, + 58, + 0, + 15, + 32, + 4, + 32, + 3, + 65, + 16, + 118, + 58, + 0, + 14, + 32, + 4, + 32, + 3, + 65, + 8, + 118, + 58, + 0, + 13, + 32, + 4, + 32, + 3, + 58, + 0, + 12, + 32, + 4, + 32, + 1, + 65, + 24, + 118, + 58, + 0, + 11, + 32, + 4, + 32, + 1, + 65, + 16, + 118, + 58, + 0, + 10, + 32, + 4, + 32, + 1, + 65, + 8, + 118, + 58, + 0, + 9, + 32, + 4, + 32, + 1, + 58, + 0, + 8, + 32, + 5, + 40, + 2, + 0, + 69, + 13, + 3, + 32, + 0, + 40, + 2, + 72, + 34, + 1, + 65, + 9, + 79, + 13, + 4, + 32, + 5, + 32, + 2, + 40, + 2, + 0, + 65, + 8, + 32, + 1, + 107, + 34, + 3, + 16, + 75, + 32, + 0, + 40, + 2, + 24, + 32, + 2, + 40, + 2, + 0, + 106, + 32, + 4, + 65, + 8, + 106, + 32, + 1, + 106, + 32, + 3, + 16, + 121, + 26, + 32, + 2, + 32, + 2, + 40, + 2, + 0, + 32, + 3, + 106, + 54, + 2, + 0, + 32, + 0, + 32, + 0, + 40, + 2, + 72, + 32, + 3, + 106, + 34, + 1, + 54, + 2, + 72, + 32, + 1, + 65, + 8, + 73, + 13, + 0, + 11, + 12, + 4, + 11, + 32, + 2, + 32, + 1, + 65, + 208, + 133, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 8, + 66, + 255, + 1, + 131, + 33, + 9, + 32, + 8, + 66, + 128, + 126, + 131, + 33, + 8, + 12, + 2, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 168, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 1, + 65, + 8, + 65, + 212, + 129, + 192, + 0, + 16, + 101, + 0, + 11, + 32, + 4, + 65, + 16, + 106, + 36, + 0, + 32, + 8, + 32, + 9, + 132, + 11, + 138, + 4, + 1, + 2, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 65, + 2, + 75, + 4, + 64, + 32, + 3, + 69, + 13, + 1, + 32, + 3, + 65, + 129, + 128, + 2, + 79, + 13, + 2, + 32, + 1, + 32, + 1, + 40, + 2, + 8, + 32, + 2, + 106, + 54, + 2, + 8, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 5, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 2, + 65, + 125, + 106, + 34, + 2, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 5, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 3, + 65, + 127, + 106, + 34, + 3, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 4, + 54, + 2, + 0, + 32, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 5, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 32, + 3, + 65, + 8, + 118, + 34, + 5, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 3, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 34, + 4, + 32, + 4, + 45, + 0, + 0, + 65, + 1, + 118, + 58, + 0, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 4, + 65, + 128, + 128, + 4, + 79, + 13, + 4, + 32, + 1, + 32, + 4, + 106, + 65, + 16, + 106, + 34, + 4, + 32, + 4, + 45, + 0, + 0, + 65, + 128, + 1, + 114, + 58, + 0, + 0, + 32, + 1, + 32, + 1, + 40, + 2, + 12, + 65, + 127, + 106, + 34, + 4, + 54, + 2, + 12, + 32, + 4, + 69, + 4, + 64, + 32, + 1, + 65, + 8, + 54, + 2, + 12, + 32, + 1, + 32, + 1, + 40, + 2, + 0, + 34, + 4, + 54, + 2, + 4, + 32, + 1, + 32, + 4, + 65, + 1, + 106, + 54, + 2, + 0, + 11, + 32, + 0, + 32, + 3, + 65, + 136, + 161, + 192, + 0, + 106, + 32, + 5, + 65, + 136, + 169, + 192, + 0, + 106, + 32, + 3, + 65, + 128, + 4, + 73, + 27, + 45, + 0, + 0, + 65, + 1, + 116, + 106, + 65, + 192, + 4, + 106, + 34, + 1, + 32, + 1, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 2, + 64, + 32, + 2, + 65, + 255, + 1, + 77, + 4, + 64, + 32, + 2, + 65, + 1, + 116, + 65, + 164, + 154, + 192, + 0, + 106, + 47, + 1, + 0, + 34, + 1, + 65, + 159, + 2, + 75, + 13, + 1, + 32, + 0, + 32, + 1, + 65, + 1, + 116, + 106, + 34, + 0, + 32, + 0, + 47, + 1, + 0, + 65, + 1, + 106, + 59, + 1, + 0, + 15, + 11, + 32, + 2, + 65, + 128, + 2, + 65, + 184, + 173, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 1, + 65, + 160, + 2, + 65, + 200, + 173, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 248, + 171, + 192, + 0, + 65, + 51, + 65, + 172, + 172, + 192, + 0, + 16, + 114, + 0, + 11, + 65, + 188, + 172, + 192, + 0, + 65, + 33, + 65, + 224, + 172, + 192, + 0, + 16, + 114, + 0, + 11, + 65, + 240, + 172, + 192, + 0, + 65, + 53, + 65, + 168, + 173, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 244, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 65, + 128, + 128, + 4, + 65, + 228, + 153, + 192, + 0, + 16, + 98, + 0, + 11, + 219, + 3, + 1, + 4, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 33, + 4, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 128, + 1, + 79, + 4, + 64, + 32, + 2, + 65, + 0, + 54, + 2, + 16, + 32, + 1, + 65, + 128, + 16, + 73, + 13, + 1, + 32, + 2, + 65, + 16, + 106, + 33, + 0, + 32, + 1, + 65, + 128, + 128, + 4, + 73, + 4, + 64, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 18, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 224, + 1, + 114, + 58, + 0, + 16, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 17, + 65, + 3, + 33, + 1, + 12, + 5, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 19, + 32, + 2, + 32, + 1, + 65, + 18, + 118, + 65, + 240, + 1, + 114, + 58, + 0, + 16, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 18, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 17, + 65, + 4, + 33, + 1, + 12, + 4, + 11, + 32, + 4, + 40, + 2, + 8, + 34, + 0, + 32, + 4, + 65, + 4, + 106, + 40, + 2, + 0, + 71, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 33, + 3, + 12, + 3, + 11, + 32, + 0, + 65, + 1, + 106, + 34, + 3, + 32, + 0, + 73, + 13, + 1, + 32, + 0, + 65, + 1, + 116, + 34, + 5, + 32, + 3, + 32, + 5, + 32, + 3, + 75, + 27, + 34, + 3, + 65, + 8, + 32, + 3, + 65, + 8, + 75, + 27, + 33, + 3, + 2, + 64, + 32, + 0, + 69, + 4, + 64, + 32, + 2, + 65, + 0, + 54, + 2, + 16, + 12, + 1, + 11, + 32, + 2, + 65, + 24, + 106, + 65, + 1, + 54, + 2, + 0, + 32, + 2, + 32, + 0, + 54, + 2, + 20, + 32, + 2, + 32, + 4, + 40, + 2, + 0, + 54, + 2, + 16, + 11, + 32, + 2, + 32, + 3, + 32, + 2, + 65, + 16, + 106, + 16, + 80, + 32, + 2, + 65, + 8, + 106, + 40, + 2, + 0, + 33, + 0, + 32, + 2, + 40, + 2, + 4, + 33, + 3, + 32, + 2, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 4, + 32, + 3, + 54, + 2, + 0, + 32, + 4, + 65, + 4, + 106, + 32, + 0, + 54, + 2, + 0, + 32, + 4, + 40, + 2, + 8, + 33, + 0, + 12, + 3, + 11, + 32, + 0, + 69, + 13, + 1, + 32, + 3, + 32, + 0, + 16, + 165, + 1, + 0, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 17, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 192, + 1, + 114, + 58, + 0, + 16, + 32, + 2, + 65, + 16, + 106, + 33, + 0, + 65, + 2, + 33, + 1, + 12, + 2, + 11, + 16, + 158, + 1, + 0, + 11, + 32, + 0, + 32, + 3, + 106, + 32, + 1, + 58, + 0, + 0, + 32, + 4, + 32, + 4, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 12, + 1, + 11, + 32, + 4, + 32, + 0, + 32, + 0, + 32, + 1, + 106, + 16, + 66, + 11, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 65, + 0, + 11, + 202, + 3, + 1, + 4, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 128, + 1, + 79, + 4, + 64, + 32, + 2, + 65, + 0, + 54, + 2, + 16, + 32, + 1, + 65, + 128, + 16, + 73, + 13, + 1, + 32, + 1, + 65, + 128, + 128, + 4, + 73, + 4, + 64, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 18, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 224, + 1, + 114, + 58, + 0, + 16, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 17, + 65, + 3, + 33, + 1, + 12, + 5, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 19, + 32, + 2, + 32, + 1, + 65, + 18, + 118, + 65, + 240, + 1, + 114, + 58, + 0, + 16, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 18, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 17, + 65, + 4, + 33, + 1, + 12, + 4, + 11, + 32, + 0, + 40, + 2, + 8, + 34, + 3, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 71, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 33, + 4, + 12, + 3, + 11, + 32, + 3, + 65, + 1, + 106, + 34, + 4, + 32, + 3, + 73, + 13, + 1, + 32, + 3, + 65, + 1, + 116, + 34, + 5, + 32, + 4, + 32, + 5, + 32, + 4, + 75, + 27, + 34, + 4, + 65, + 8, + 32, + 4, + 65, + 8, + 75, + 27, + 33, + 4, + 2, + 64, + 32, + 3, + 69, + 4, + 64, + 32, + 2, + 65, + 0, + 54, + 2, + 16, + 12, + 1, + 11, + 32, + 2, + 65, + 24, + 106, + 65, + 1, + 54, + 2, + 0, + 32, + 2, + 32, + 3, + 54, + 2, + 20, + 32, + 2, + 32, + 0, + 40, + 2, + 0, + 54, + 2, + 16, + 11, + 32, + 2, + 32, + 4, + 32, + 2, + 65, + 16, + 106, + 16, + 80, + 32, + 2, + 65, + 8, + 106, + 40, + 2, + 0, + 33, + 3, + 32, + 2, + 40, + 2, + 4, + 33, + 4, + 32, + 2, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 0, + 65, + 4, + 106, + 32, + 3, + 54, + 2, + 0, + 32, + 0, + 40, + 2, + 8, + 33, + 3, + 12, + 3, + 11, + 32, + 3, + 69, + 13, + 1, + 32, + 4, + 32, + 3, + 16, + 165, + 1, + 0, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 17, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 192, + 1, + 114, + 58, + 0, + 16, + 65, + 2, + 33, + 1, + 12, + 2, + 11, + 16, + 158, + 1, + 0, + 11, + 32, + 3, + 32, + 4, + 106, + 32, + 1, + 58, + 0, + 0, + 32, + 0, + 32, + 0, + 40, + 2, + 8, + 65, + 1, + 106, + 54, + 2, + 8, + 12, + 1, + 11, + 32, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 106, + 16, + 66, + 11, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 255, + 3, + 2, + 4, + 127, + 1, + 126, + 65, + 1, + 32, + 1, + 40, + 2, + 24, + 65, + 39, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 4, + 64, + 65, + 244, + 0, + 33, + 3, + 65, + 2, + 33, + 2, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 34, + 0, + 65, + 119, + 106, + 14, + 31, + 5, + 1, + 3, + 3, + 0, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 4, + 3, + 3, + 3, + 3, + 4, + 2, + 11, + 65, + 242, + 0, + 33, + 3, + 12, + 4, + 11, + 65, + 238, + 0, + 33, + 3, + 12, + 3, + 11, + 32, + 0, + 65, + 220, + 0, + 70, + 13, + 1, + 11, + 2, + 127, + 2, + 126, + 2, + 64, + 32, + 0, + 16, + 40, + 69, + 4, + 64, + 32, + 0, + 16, + 21, + 69, + 13, + 1, + 65, + 1, + 12, + 3, + 11, + 32, + 0, + 65, + 1, + 114, + 103, + 65, + 2, + 118, + 65, + 7, + 115, + 173, + 66, + 128, + 128, + 128, + 128, + 208, + 0, + 132, + 12, + 1, + 11, + 32, + 0, + 65, + 1, + 114, + 103, + 65, + 2, + 118, + 65, + 7, + 115, + 173, + 66, + 128, + 128, + 128, + 128, + 208, + 0, + 132, + 11, + 33, + 6, + 65, + 3, + 11, + 33, + 2, + 32, + 0, + 33, + 3, + 12, + 1, + 11, + 32, + 0, + 33, + 3, + 11, + 3, + 64, + 32, + 2, + 33, + 4, + 65, + 220, + 0, + 33, + 0, + 65, + 1, + 33, + 2, + 2, + 64, + 2, + 126, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 4, + 65, + 1, + 107, + 14, + 3, + 1, + 5, + 0, + 2, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 6, + 66, + 32, + 136, + 167, + 65, + 255, + 1, + 113, + 65, + 1, + 107, + 14, + 5, + 3, + 2, + 1, + 0, + 6, + 5, + 11, + 65, + 245, + 0, + 33, + 0, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 48, + 132, + 12, + 6, + 11, + 65, + 251, + 0, + 33, + 0, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 32, + 132, + 12, + 5, + 11, + 65, + 48, + 65, + 215, + 0, + 32, + 3, + 32, + 6, + 167, + 34, + 4, + 65, + 2, + 116, + 65, + 28, + 113, + 118, + 65, + 15, + 113, + 34, + 0, + 65, + 10, + 73, + 27, + 32, + 0, + 106, + 33, + 0, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 16, + 132, + 32, + 4, + 69, + 13, + 4, + 26, + 32, + 6, + 66, + 127, + 124, + 66, + 255, + 255, + 255, + 255, + 15, + 131, + 32, + 6, + 66, + 128, + 128, + 128, + 128, + 112, + 131, + 132, + 12, + 4, + 11, + 65, + 253, + 0, + 33, + 0, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 12, + 3, + 11, + 65, + 0, + 33, + 2, + 32, + 3, + 33, + 0, + 12, + 3, + 11, + 32, + 1, + 40, + 2, + 24, + 65, + 39, + 32, + 1, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 15, + 11, + 32, + 6, + 66, + 255, + 255, + 255, + 255, + 143, + 96, + 131, + 66, + 128, + 128, + 128, + 128, + 192, + 0, + 132, + 11, + 33, + 6, + 65, + 3, + 33, + 2, + 11, + 32, + 1, + 40, + 2, + 24, + 32, + 0, + 32, + 1, + 40, + 2, + 28, + 40, + 2, + 16, + 17, + 0, + 0, + 69, + 13, + 0, + 11, + 11, + 11, + 156, + 3, + 1, + 5, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 6, + 36, + 0, + 2, + 64, + 2, + 127, + 32, + 2, + 4, + 64, + 3, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 8, + 45, + 0, + 0, + 69, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 65, + 188, + 198, + 193, + 0, + 65, + 4, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 12, + 17, + 1, + 0, + 69, + 13, + 0, + 65, + 1, + 12, + 3, + 11, + 65, + 0, + 33, + 4, + 32, + 2, + 33, + 3, + 2, + 127, + 3, + 64, + 2, + 64, + 32, + 1, + 32, + 4, + 106, + 33, + 5, + 2, + 64, + 32, + 3, + 65, + 7, + 77, + 4, + 64, + 32, + 3, + 69, + 13, + 2, + 32, + 2, + 32, + 4, + 107, + 33, + 7, + 65, + 0, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 5, + 106, + 45, + 0, + 0, + 65, + 10, + 70, + 13, + 2, + 32, + 7, + 32, + 3, + 65, + 1, + 106, + 34, + 3, + 71, + 13, + 0, + 11, + 12, + 2, + 11, + 32, + 6, + 65, + 8, + 106, + 32, + 5, + 32, + 3, + 16, + 49, + 32, + 6, + 40, + 2, + 8, + 65, + 1, + 71, + 13, + 1, + 32, + 6, + 40, + 2, + 12, + 33, + 3, + 11, + 32, + 3, + 32, + 4, + 106, + 34, + 3, + 65, + 1, + 106, + 33, + 4, + 2, + 64, + 32, + 3, + 32, + 2, + 79, + 13, + 0, + 32, + 1, + 32, + 3, + 106, + 45, + 0, + 0, + 65, + 10, + 71, + 13, + 0, + 65, + 1, + 12, + 3, + 11, + 32, + 2, + 32, + 4, + 107, + 33, + 3, + 32, + 2, + 32, + 4, + 79, + 13, + 1, + 11, + 11, + 32, + 2, + 33, + 4, + 65, + 0, + 11, + 33, + 3, + 32, + 0, + 40, + 2, + 8, + 32, + 3, + 58, + 0, + 0, + 32, + 0, + 40, + 2, + 4, + 33, + 3, + 32, + 0, + 40, + 2, + 0, + 33, + 5, + 2, + 64, + 2, + 64, + 32, + 2, + 32, + 4, + 71, + 4, + 64, + 32, + 2, + 32, + 4, + 75, + 4, + 64, + 32, + 1, + 32, + 4, + 106, + 34, + 7, + 44, + 0, + 0, + 65, + 191, + 127, + 74, + 13, + 2, + 11, + 32, + 1, + 32, + 2, + 65, + 0, + 32, + 4, + 65, + 192, + 198, + 193, + 0, + 16, + 12, + 0, + 11, + 32, + 5, + 32, + 1, + 32, + 4, + 32, + 3, + 40, + 2, + 12, + 17, + 1, + 0, + 69, + 13, + 1, + 65, + 1, + 12, + 4, + 11, + 65, + 1, + 32, + 5, + 32, + 1, + 32, + 4, + 32, + 3, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 3, + 26, + 32, + 7, + 44, + 0, + 0, + 65, + 191, + 127, + 76, + 13, + 4, + 11, + 32, + 1, + 32, + 4, + 106, + 33, + 1, + 32, + 2, + 32, + 4, + 107, + 34, + 2, + 13, + 0, + 11, + 11, + 65, + 0, + 11, + 32, + 6, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 32, + 1, + 32, + 2, + 32, + 4, + 32, + 2, + 65, + 208, + 198, + 193, + 0, + 16, + 12, + 0, + 11, + 160, + 3, + 1, + 5, + 127, + 2, + 64, + 2, + 64, + 65, + 0, + 65, + 15, + 32, + 0, + 65, + 164, + 154, + 4, + 73, + 27, + 34, + 1, + 32, + 1, + 65, + 8, + 106, + 34, + 1, + 32, + 1, + 65, + 2, + 116, + 65, + 216, + 216, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 32, + 0, + 65, + 11, + 116, + 34, + 2, + 75, + 27, + 34, + 1, + 32, + 1, + 65, + 4, + 106, + 34, + 1, + 32, + 1, + 65, + 2, + 116, + 65, + 216, + 216, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 32, + 2, + 75, + 27, + 34, + 1, + 32, + 1, + 65, + 2, + 106, + 34, + 1, + 32, + 1, + 65, + 2, + 116, + 65, + 216, + 216, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 32, + 2, + 75, + 27, + 34, + 1, + 32, + 1, + 65, + 1, + 106, + 34, + 1, + 32, + 1, + 65, + 2, + 116, + 65, + 216, + 216, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 32, + 2, + 75, + 27, + 34, + 3, + 65, + 2, + 116, + 65, + 216, + 216, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 11, + 116, + 34, + 1, + 32, + 2, + 70, + 32, + 1, + 32, + 2, + 73, + 106, + 32, + 3, + 106, + 34, + 2, + 65, + 30, + 77, + 4, + 64, + 65, + 177, + 5, + 33, + 4, + 32, + 2, + 65, + 30, + 71, + 4, + 64, + 32, + 2, + 65, + 2, + 116, + 65, + 220, + 216, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 21, + 118, + 33, + 4, + 11, + 65, + 0, + 33, + 1, + 32, + 2, + 65, + 127, + 106, + 34, + 3, + 32, + 2, + 77, + 4, + 64, + 32, + 3, + 65, + 31, + 79, + 13, + 3, + 32, + 3, + 65, + 2, + 116, + 65, + 216, + 216, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 255, + 255, + 255, + 0, + 113, + 33, + 1, + 11, + 2, + 64, + 32, + 4, + 32, + 2, + 65, + 2, + 116, + 65, + 216, + 216, + 193, + 0, + 106, + 40, + 2, + 0, + 65, + 21, + 118, + 34, + 3, + 65, + 1, + 106, + 70, + 13, + 0, + 32, + 0, + 32, + 1, + 107, + 33, + 2, + 32, + 3, + 65, + 177, + 5, + 32, + 3, + 65, + 177, + 5, + 75, + 27, + 33, + 5, + 32, + 4, + 65, + 127, + 106, + 33, + 1, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 3, + 32, + 5, + 70, + 13, + 3, + 32, + 0, + 32, + 3, + 65, + 212, + 217, + 193, + 0, + 106, + 45, + 0, + 0, + 106, + 34, + 0, + 32, + 2, + 75, + 13, + 1, + 32, + 1, + 32, + 3, + 65, + 1, + 106, + 34, + 3, + 71, + 13, + 0, + 11, + 32, + 1, + 33, + 3, + 11, + 32, + 3, + 65, + 1, + 113, + 15, + 11, + 32, + 2, + 65, + 31, + 65, + 160, + 216, + 193, + 0, + 16, + 98, + 0, + 11, + 32, + 5, + 65, + 177, + 5, + 65, + 176, + 216, + 193, + 0, + 16, + 98, + 0, + 11, + 32, + 3, + 65, + 31, + 65, + 192, + 216, + 193, + 0, + 16, + 98, + 0, + 11, + 182, + 3, + 2, + 6, + 127, + 2, + 126, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 65, + 3, + 33, + 5, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 3, + 65, + 16, + 106, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 3, + 65, + 16, + 106, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 89, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 40, + 2, + 16, + 65, + 1, + 71, + 4, + 64, + 32, + 3, + 40, + 2, + 20, + 34, + 4, + 69, + 13, + 1, + 32, + 2, + 32, + 4, + 73, + 13, + 3, + 32, + 1, + 32, + 4, + 106, + 33, + 1, + 32, + 2, + 32, + 4, + 107, + 33, + 2, + 12, + 6, + 11, + 32, + 6, + 16, + 133, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 70, + 13, + 1, + 32, + 3, + 53, + 0, + 21, + 32, + 3, + 65, + 25, + 106, + 51, + 0, + 0, + 32, + 3, + 65, + 27, + 106, + 49, + 0, + 0, + 66, + 16, + 134, + 132, + 66, + 32, + 134, + 132, + 33, + 9, + 32, + 3, + 45, + 0, + 20, + 33, + 5, + 12, + 7, + 11, + 32, + 3, + 65, + 8, + 106, + 65, + 27, + 16, + 103, + 32, + 3, + 40, + 2, + 12, + 33, + 2, + 32, + 3, + 40, + 2, + 8, + 34, + 0, + 65, + 172, + 136, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 23, + 106, + 65, + 195, + 136, + 192, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 0, + 65, + 16, + 106, + 65, + 188, + 136, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 180, + 136, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 2, + 32, + 1, + 65, + 27, + 54, + 2, + 8, + 32, + 1, + 32, + 0, + 54, + 2, + 0, + 32, + 1, + 32, + 2, + 54, + 2, + 4, + 65, + 17, + 32, + 1, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 34, + 10, + 66, + 8, + 136, + 33, + 9, + 32, + 10, + 167, + 33, + 5, + 12, + 6, + 11, + 32, + 3, + 40, + 2, + 16, + 65, + 1, + 71, + 13, + 3, + 32, + 3, + 45, + 0, + 20, + 65, + 2, + 79, + 13, + 2, + 12, + 3, + 11, + 32, + 4, + 32, + 2, + 65, + 156, + 136, + 192, + 0, + 16, + 101, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 3, + 40, + 2, + 24, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 24, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 2, + 13, + 0, + 11, + 11, + 32, + 3, + 65, + 32, + 106, + 36, + 0, + 32, + 5, + 173, + 66, + 255, + 1, + 131, + 32, + 9, + 66, + 8, + 134, + 132, + 11, + 172, + 3, + 2, + 6, + 127, + 2, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 65, + 3, + 33, + 5, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 3, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 3, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 29, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 3, + 40, + 2, + 4, + 34, + 4, + 69, + 4, + 64, + 65, + 28, + 65, + 1, + 16, + 149, + 1, + 34, + 0, + 69, + 13, + 2, + 32, + 0, + 65, + 24, + 106, + 65, + 212, + 134, + 192, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 0, + 65, + 16, + 106, + 65, + 204, + 134, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 196, + 134, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 188, + 134, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 3, + 32, + 1, + 66, + 156, + 128, + 128, + 128, + 192, + 3, + 55, + 2, + 4, + 32, + 1, + 32, + 0, + 54, + 2, + 0, + 65, + 14, + 32, + 1, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 34, + 10, + 66, + 8, + 136, + 33, + 9, + 32, + 10, + 167, + 33, + 5, + 12, + 8, + 11, + 32, + 2, + 32, + 4, + 73, + 13, + 3, + 32, + 1, + 32, + 4, + 106, + 33, + 1, + 32, + 2, + 32, + 4, + 107, + 33, + 2, + 12, + 5, + 11, + 32, + 6, + 16, + 133, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 3, + 53, + 0, + 5, + 32, + 3, + 65, + 9, + 106, + 51, + 0, + 0, + 32, + 3, + 65, + 11, + 106, + 49, + 0, + 0, + 66, + 16, + 134, + 132, + 66, + 32, + 134, + 132, + 33, + 9, + 32, + 3, + 45, + 0, + 4, + 33, + 5, + 12, + 7, + 11, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 13, + 4, + 32, + 3, + 45, + 0, + 4, + 65, + 2, + 79, + 13, + 3, + 12, + 4, + 11, + 65, + 28, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 4, + 32, + 2, + 65, + 172, + 134, + 192, + 0, + 16, + 101, + 0, + 11, + 32, + 3, + 40, + 2, + 8, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 8, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 2, + 13, + 0, + 11, + 11, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 32, + 5, + 173, + 66, + 255, + 1, + 131, + 32, + 9, + 66, + 8, + 134, + 132, + 11, + 172, + 3, + 2, + 6, + 127, + 2, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 65, + 3, + 33, + 5, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 3, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 3, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 28, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 3, + 40, + 2, + 4, + 34, + 4, + 69, + 4, + 64, + 65, + 28, + 65, + 1, + 16, + 149, + 1, + 34, + 0, + 69, + 13, + 2, + 32, + 0, + 65, + 24, + 106, + 65, + 212, + 134, + 192, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 0, + 65, + 16, + 106, + 65, + 204, + 134, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 196, + 134, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 188, + 134, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 3, + 32, + 1, + 66, + 156, + 128, + 128, + 128, + 192, + 3, + 55, + 2, + 4, + 32, + 1, + 32, + 0, + 54, + 2, + 0, + 65, + 14, + 32, + 1, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 34, + 10, + 66, + 8, + 136, + 33, + 9, + 32, + 10, + 167, + 33, + 5, + 12, + 8, + 11, + 32, + 2, + 32, + 4, + 73, + 13, + 3, + 32, + 1, + 32, + 4, + 106, + 33, + 1, + 32, + 2, + 32, + 4, + 107, + 33, + 2, + 12, + 5, + 11, + 32, + 6, + 16, + 133, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 3, + 53, + 0, + 5, + 32, + 3, + 65, + 9, + 106, + 51, + 0, + 0, + 32, + 3, + 65, + 11, + 106, + 49, + 0, + 0, + 66, + 16, + 134, + 132, + 66, + 32, + 134, + 132, + 33, + 9, + 32, + 3, + 45, + 0, + 4, + 33, + 5, + 12, + 7, + 11, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 13, + 4, + 32, + 3, + 45, + 0, + 4, + 65, + 2, + 79, + 13, + 3, + 12, + 4, + 11, + 65, + 28, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 4, + 32, + 2, + 65, + 172, + 134, + 192, + 0, + 16, + 101, + 0, + 11, + 32, + 3, + 40, + 2, + 8, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 8, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 2, + 13, + 0, + 11, + 11, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 32, + 5, + 173, + 66, + 255, + 1, + 131, + 32, + 9, + 66, + 8, + 134, + 132, + 11, + 172, + 3, + 2, + 6, + 127, + 2, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 65, + 3, + 33, + 5, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 3, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 3, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 28, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 3, + 40, + 2, + 4, + 34, + 4, + 69, + 4, + 64, + 65, + 28, + 65, + 1, + 16, + 149, + 1, + 34, + 0, + 69, + 13, + 2, + 32, + 0, + 65, + 24, + 106, + 65, + 204, + 135, + 192, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 0, + 65, + 16, + 106, + 65, + 196, + 135, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 188, + 135, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 180, + 135, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 3, + 32, + 1, + 66, + 156, + 128, + 128, + 128, + 192, + 3, + 55, + 2, + 4, + 32, + 1, + 32, + 0, + 54, + 2, + 0, + 65, + 14, + 32, + 1, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 34, + 10, + 66, + 8, + 136, + 33, + 9, + 32, + 10, + 167, + 33, + 5, + 12, + 8, + 11, + 32, + 2, + 32, + 4, + 73, + 13, + 3, + 32, + 1, + 32, + 4, + 106, + 33, + 1, + 32, + 2, + 32, + 4, + 107, + 33, + 2, + 12, + 5, + 11, + 32, + 6, + 16, + 133, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 3, + 53, + 0, + 5, + 32, + 3, + 65, + 9, + 106, + 51, + 0, + 0, + 32, + 3, + 65, + 11, + 106, + 49, + 0, + 0, + 66, + 16, + 134, + 132, + 66, + 32, + 134, + 132, + 33, + 9, + 32, + 3, + 45, + 0, + 4, + 33, + 5, + 12, + 7, + 11, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 13, + 4, + 32, + 3, + 45, + 0, + 4, + 65, + 2, + 79, + 13, + 3, + 12, + 4, + 11, + 65, + 28, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 4, + 32, + 2, + 65, + 164, + 135, + 192, + 0, + 16, + 101, + 0, + 11, + 32, + 3, + 40, + 2, + 8, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 8, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 2, + 13, + 0, + 11, + 11, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 32, + 5, + 173, + 66, + 255, + 1, + 131, + 32, + 9, + 66, + 8, + 134, + 132, + 11, + 172, + 3, + 2, + 6, + 127, + 2, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 65, + 3, + 33, + 5, + 2, + 64, + 32, + 2, + 69, + 13, + 0, + 32, + 3, + 65, + 4, + 114, + 33, + 6, + 3, + 64, + 32, + 3, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 29, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 3, + 40, + 2, + 4, + 34, + 4, + 69, + 4, + 64, + 65, + 28, + 65, + 1, + 16, + 149, + 1, + 34, + 0, + 69, + 13, + 2, + 32, + 0, + 65, + 24, + 106, + 65, + 204, + 135, + 192, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 0, + 65, + 16, + 106, + 65, + 196, + 135, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 188, + 135, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 180, + 135, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 3, + 32, + 1, + 66, + 156, + 128, + 128, + 128, + 192, + 3, + 55, + 2, + 4, + 32, + 1, + 32, + 0, + 54, + 2, + 0, + 65, + 14, + 32, + 1, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 34, + 10, + 66, + 8, + 136, + 33, + 9, + 32, + 10, + 167, + 33, + 5, + 12, + 8, + 11, + 32, + 2, + 32, + 4, + 73, + 13, + 3, + 32, + 1, + 32, + 4, + 106, + 33, + 1, + 32, + 2, + 32, + 4, + 107, + 33, + 2, + 12, + 5, + 11, + 32, + 6, + 16, + 133, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 4, + 64, + 32, + 3, + 53, + 0, + 5, + 32, + 3, + 65, + 9, + 106, + 51, + 0, + 0, + 32, + 3, + 65, + 11, + 106, + 49, + 0, + 0, + 66, + 16, + 134, + 132, + 66, + 32, + 134, + 132, + 33, + 9, + 32, + 3, + 45, + 0, + 4, + 33, + 5, + 12, + 7, + 11, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 13, + 4, + 32, + 3, + 45, + 0, + 4, + 65, + 2, + 79, + 13, + 3, + 12, + 4, + 11, + 65, + 28, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 4, + 32, + 2, + 65, + 164, + 135, + 192, + 0, + 16, + 101, + 0, + 11, + 32, + 3, + 40, + 2, + 8, + 34, + 4, + 40, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 4, + 40, + 2, + 4, + 34, + 7, + 40, + 2, + 4, + 34, + 8, + 4, + 64, + 32, + 4, + 40, + 2, + 0, + 32, + 8, + 32, + 7, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 3, + 40, + 2, + 8, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 2, + 13, + 0, + 11, + 11, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 32, + 5, + 173, + 66, + 255, + 1, + 131, + 32, + 9, + 66, + 8, + 134, + 132, + 11, + 162, + 3, + 2, + 4, + 127, + 2, + 126, + 35, + 0, + 65, + 64, + 106, + 34, + 2, + 36, + 0, + 65, + 1, + 33, + 4, + 2, + 64, + 32, + 0, + 45, + 0, + 4, + 13, + 0, + 32, + 0, + 45, + 0, + 5, + 33, + 5, + 32, + 0, + 40, + 2, + 0, + 34, + 3, + 45, + 0, + 0, + 65, + 4, + 113, + 4, + 64, + 32, + 5, + 69, + 4, + 64, + 32, + 3, + 40, + 2, + 24, + 65, + 224, + 198, + 193, + 0, + 65, + 3, + 32, + 3, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 2, + 32, + 0, + 40, + 2, + 0, + 33, + 3, + 11, + 32, + 2, + 65, + 1, + 58, + 0, + 23, + 32, + 2, + 65, + 52, + 106, + 65, + 164, + 198, + 193, + 0, + 54, + 2, + 0, + 32, + 2, + 32, + 3, + 41, + 2, + 24, + 55, + 3, + 8, + 32, + 2, + 32, + 2, + 65, + 23, + 106, + 54, + 2, + 16, + 32, + 3, + 41, + 2, + 8, + 33, + 6, + 32, + 3, + 41, + 2, + 16, + 33, + 7, + 32, + 2, + 32, + 3, + 45, + 0, + 32, + 58, + 0, + 56, + 32, + 2, + 32, + 7, + 55, + 3, + 40, + 32, + 2, + 32, + 6, + 55, + 3, + 32, + 32, + 2, + 32, + 3, + 41, + 2, + 0, + 55, + 3, + 24, + 32, + 2, + 32, + 2, + 65, + 8, + 106, + 54, + 2, + 48, + 32, + 2, + 65, + 8, + 106, + 65, + 216, + 140, + 192, + 0, + 65, + 16, + 16, + 39, + 13, + 1, + 32, + 2, + 65, + 8, + 106, + 65, + 155, + 197, + 193, + 0, + 65, + 2, + 16, + 39, + 13, + 1, + 32, + 1, + 32, + 2, + 65, + 24, + 106, + 65, + 244, + 140, + 192, + 0, + 40, + 2, + 0, + 17, + 0, + 0, + 13, + 1, + 32, + 2, + 40, + 2, + 48, + 65, + 227, + 198, + 193, + 0, + 65, + 2, + 32, + 2, + 40, + 2, + 52, + 40, + 2, + 12, + 17, + 1, + 0, + 33, + 4, + 12, + 1, + 11, + 32, + 3, + 40, + 2, + 24, + 65, + 229, + 198, + 193, + 0, + 65, + 231, + 198, + 193, + 0, + 32, + 5, + 27, + 65, + 2, + 65, + 3, + 32, + 5, + 27, + 32, + 3, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 34, + 3, + 40, + 2, + 24, + 65, + 216, + 140, + 192, + 0, + 65, + 16, + 32, + 3, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 34, + 3, + 40, + 2, + 24, + 65, + 155, + 197, + 193, + 0, + 65, + 2, + 32, + 3, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 0, + 32, + 1, + 32, + 0, + 40, + 2, + 0, + 65, + 244, + 140, + 192, + 0, + 40, + 2, + 0, + 17, + 0, + 0, + 33, + 4, + 11, + 32, + 0, + 65, + 1, + 58, + 0, + 5, + 32, + 0, + 32, + 4, + 58, + 0, + 4, + 32, + 2, + 65, + 64, + 107, + 36, + 0, + 11, + 238, + 2, + 2, + 5, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 16, + 78, + 34, + 9, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 1, + 65, + 64, + 107, + 33, + 6, + 32, + 1, + 65, + 40, + 106, + 33, + 5, + 32, + 3, + 69, + 13, + 1, + 3, + 64, + 32, + 5, + 41, + 3, + 0, + 33, + 9, + 32, + 4, + 32, + 5, + 32, + 2, + 32, + 3, + 32, + 6, + 65, + 0, + 16, + 110, + 32, + 4, + 45, + 0, + 0, + 34, + 7, + 32, + 5, + 41, + 3, + 0, + 32, + 9, + 125, + 34, + 9, + 167, + 114, + 32, + 4, + 45, + 0, + 1, + 34, + 8, + 65, + 2, + 70, + 114, + 13, + 3, + 32, + 1, + 16, + 78, + 34, + 9, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 13, + 0, + 11, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 9, + 55, + 2, + 4, + 12, + 2, + 11, + 32, + 5, + 41, + 3, + 0, + 33, + 9, + 32, + 4, + 32, + 5, + 32, + 2, + 65, + 0, + 32, + 6, + 65, + 0, + 16, + 110, + 32, + 5, + 41, + 3, + 0, + 32, + 9, + 125, + 33, + 9, + 32, + 4, + 45, + 0, + 1, + 33, + 8, + 32, + 4, + 45, + 0, + 0, + 33, + 7, + 11, + 32, + 0, + 2, + 127, + 32, + 7, + 65, + 1, + 70, + 4, + 64, + 65, + 22, + 65, + 1, + 16, + 149, + 1, + 34, + 1, + 69, + 13, + 3, + 32, + 1, + 65, + 14, + 106, + 65, + 142, + 132, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 1, + 65, + 8, + 106, + 65, + 136, + 132, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 1, + 65, + 128, + 132, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 2, + 69, + 13, + 4, + 32, + 2, + 66, + 150, + 128, + 128, + 128, + 224, + 2, + 55, + 2, + 4, + 32, + 2, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 11, + 32, + 2, + 65, + 200, + 132, + 192, + 0, + 16, + 107, + 55, + 2, + 4, + 65, + 1, + 12, + 1, + 11, + 32, + 0, + 32, + 9, + 62, + 2, + 4, + 32, + 0, + 65, + 8, + 106, + 32, + 8, + 58, + 0, + 0, + 65, + 0, + 11, + 54, + 2, + 0, + 11, + 32, + 4, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 65, + 22, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 131, + 3, + 1, + 3, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 32, + 0, + 69, + 4, + 64, + 32, + 1, + 33, + 0, + 12, + 1, + 11, + 32, + 0, + 65, + 3, + 106, + 34, + 3, + 65, + 2, + 118, + 33, + 4, + 2, + 64, + 32, + 1, + 65, + 4, + 75, + 13, + 0, + 32, + 4, + 65, + 127, + 106, + 34, + 0, + 65, + 255, + 1, + 75, + 13, + 0, + 32, + 2, + 65, + 136, + 223, + 193, + 0, + 54, + 2, + 8, + 32, + 2, + 32, + 0, + 65, + 2, + 116, + 65, + 140, + 223, + 193, + 0, + 106, + 34, + 3, + 40, + 2, + 0, + 54, + 2, + 12, + 2, + 64, + 32, + 4, + 32, + 1, + 32, + 2, + 65, + 12, + 106, + 32, + 2, + 65, + 8, + 106, + 65, + 164, + 138, + 192, + 0, + 16, + 32, + 34, + 0, + 13, + 0, + 32, + 2, + 32, + 2, + 65, + 8, + 106, + 32, + 4, + 32, + 1, + 16, + 74, + 65, + 0, + 33, + 0, + 32, + 2, + 40, + 2, + 0, + 13, + 0, + 32, + 2, + 40, + 2, + 4, + 34, + 0, + 32, + 2, + 40, + 2, + 12, + 54, + 2, + 8, + 32, + 2, + 32, + 0, + 54, + 2, + 12, + 32, + 4, + 32, + 1, + 32, + 2, + 65, + 12, + 106, + 32, + 2, + 65, + 8, + 106, + 65, + 164, + 138, + 192, + 0, + 16, + 32, + 33, + 0, + 11, + 32, + 3, + 32, + 2, + 40, + 2, + 12, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 2, + 65, + 136, + 223, + 193, + 0, + 40, + 2, + 0, + 54, + 2, + 12, + 2, + 64, + 32, + 4, + 32, + 1, + 32, + 2, + 65, + 12, + 106, + 65, + 140, + 138, + 192, + 0, + 65, + 140, + 138, + 192, + 0, + 16, + 32, + 34, + 0, + 13, + 0, + 32, + 3, + 65, + 124, + 113, + 34, + 0, + 32, + 1, + 65, + 3, + 116, + 65, + 128, + 128, + 1, + 106, + 34, + 3, + 32, + 0, + 32, + 3, + 75, + 27, + 65, + 135, + 128, + 4, + 106, + 34, + 3, + 65, + 16, + 118, + 64, + 0, + 34, + 0, + 65, + 127, + 70, + 4, + 64, + 65, + 0, + 33, + 0, + 12, + 1, + 11, + 32, + 0, + 65, + 16, + 116, + 34, + 0, + 32, + 0, + 32, + 3, + 65, + 128, + 128, + 124, + 113, + 106, + 65, + 2, + 114, + 54, + 2, + 0, + 32, + 0, + 65, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 2, + 40, + 2, + 12, + 54, + 2, + 8, + 32, + 2, + 32, + 0, + 54, + 2, + 12, + 32, + 4, + 32, + 1, + 32, + 2, + 65, + 12, + 106, + 65, + 140, + 138, + 192, + 0, + 65, + 140, + 138, + 192, + 0, + 16, + 32, + 33, + 0, + 11, + 65, + 136, + 223, + 193, + 0, + 32, + 2, + 40, + 2, + 12, + 54, + 2, + 0, + 11, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 32, + 0, + 11, + 186, + 2, + 1, + 4, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 3, + 106, + 65, + 124, + 113, + 32, + 1, + 107, + 34, + 3, + 69, + 13, + 0, + 32, + 2, + 32, + 3, + 32, + 3, + 32, + 2, + 75, + 27, + 34, + 4, + 69, + 13, + 0, + 65, + 0, + 33, + 3, + 2, + 64, + 3, + 64, + 32, + 1, + 32, + 3, + 106, + 45, + 0, + 0, + 65, + 10, + 70, + 13, + 1, + 32, + 4, + 32, + 3, + 65, + 1, + 106, + 34, + 3, + 71, + 13, + 0, + 11, + 32, + 4, + 32, + 2, + 65, + 120, + 106, + 34, + 3, + 77, + 13, + 2, + 12, + 3, + 11, + 65, + 1, + 33, + 1, + 12, + 3, + 11, + 32, + 2, + 65, + 120, + 106, + 33, + 3, + 65, + 0, + 33, + 4, + 11, + 3, + 64, + 32, + 1, + 32, + 4, + 106, + 34, + 5, + 65, + 4, + 106, + 40, + 2, + 0, + 65, + 138, + 148, + 168, + 208, + 0, + 115, + 34, + 6, + 65, + 127, + 115, + 32, + 6, + 65, + 255, + 253, + 251, + 119, + 106, + 113, + 32, + 5, + 40, + 2, + 0, + 65, + 138, + 148, + 168, + 208, + 0, + 115, + 34, + 5, + 65, + 127, + 115, + 32, + 5, + 65, + 255, + 253, + 251, + 119, + 106, + 113, + 114, + 65, + 128, + 129, + 130, + 132, + 120, + 113, + 69, + 4, + 64, + 32, + 4, + 65, + 8, + 106, + 34, + 4, + 32, + 3, + 77, + 13, + 1, + 11, + 11, + 32, + 4, + 32, + 2, + 75, + 13, + 2, + 11, + 65, + 0, + 33, + 3, + 2, + 127, + 65, + 0, + 32, + 2, + 32, + 4, + 70, + 13, + 0, + 26, + 32, + 1, + 32, + 4, + 106, + 33, + 5, + 32, + 2, + 32, + 4, + 107, + 33, + 1, + 3, + 64, + 65, + 1, + 32, + 3, + 32, + 5, + 106, + 45, + 0, + 0, + 65, + 10, + 70, + 13, + 1, + 26, + 32, + 1, + 32, + 3, + 65, + 1, + 106, + 34, + 3, + 71, + 13, + 0, + 11, + 32, + 1, + 33, + 3, + 65, + 0, + 11, + 33, + 1, + 32, + 3, + 32, + 4, + 106, + 33, + 3, + 11, + 32, + 0, + 32, + 3, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 15, + 11, + 32, + 4, + 32, + 2, + 65, + 224, + 201, + 193, + 0, + 16, + 101, + 0, + 11, + 228, + 2, + 2, + 3, + 127, + 1, + 126, + 2, + 64, + 32, + 0, + 65, + 24, + 106, + 40, + 2, + 0, + 69, + 13, + 0, + 32, + 0, + 16, + 82, + 34, + 4, + 167, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 4, + 66, + 32, + 136, + 167, + 34, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 2, + 40, + 2, + 4, + 34, + 3, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 32, + 2, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 0, + 65, + 24, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 65, + 56, + 106, + 40, + 2, + 0, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 156, + 1, + 32, + 0, + 65, + 196, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 64, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 65, + 212, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 80, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 11, + 2, + 64, + 32, + 0, + 40, + 2, + 92, + 69, + 13, + 0, + 2, + 64, + 32, + 0, + 65, + 224, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 228, + 0, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 2, + 64, + 32, + 0, + 65, + 236, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 240, + 0, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 65, + 248, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 252, + 0, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 65, + 144, + 1, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 140, + 1, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 11, + 11, + 206, + 2, + 1, + 6, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 32, + 1, + 40, + 2, + 0, + 33, + 7, + 2, + 64, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 65, + 3, + 116, + 34, + 5, + 69, + 4, + 64, + 12, + 1, + 11, + 32, + 7, + 65, + 4, + 106, + 33, + 2, + 3, + 64, + 32, + 2, + 40, + 2, + 0, + 32, + 4, + 106, + 33, + 4, + 32, + 2, + 65, + 8, + 106, + 33, + 2, + 32, + 5, + 65, + 120, + 106, + 34, + 5, + 13, + 0, + 11, + 11, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 20, + 106, + 40, + 2, + 0, + 69, + 4, + 64, + 32, + 4, + 33, + 2, + 12, + 1, + 11, + 32, + 6, + 4, + 64, + 65, + 0, + 33, + 5, + 65, + 1, + 33, + 6, + 32, + 4, + 65, + 15, + 77, + 4, + 64, + 32, + 7, + 65, + 4, + 106, + 40, + 2, + 0, + 69, + 13, + 3, + 11, + 32, + 4, + 32, + 4, + 106, + 34, + 2, + 32, + 4, + 79, + 13, + 1, + 12, + 2, + 11, + 65, + 0, + 65, + 0, + 65, + 168, + 195, + 193, + 0, + 16, + 98, + 0, + 11, + 32, + 2, + 65, + 127, + 74, + 4, + 64, + 32, + 2, + 69, + 4, + 64, + 65, + 0, + 33, + 5, + 65, + 1, + 33, + 6, + 12, + 2, + 11, + 32, + 2, + 33, + 5, + 32, + 2, + 65, + 1, + 16, + 149, + 1, + 34, + 6, + 13, + 1, + 32, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 16, + 158, + 1, + 0, + 11, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 32, + 6, + 54, + 2, + 0, + 32, + 0, + 32, + 5, + 54, + 2, + 4, + 32, + 3, + 32, + 0, + 54, + 2, + 4, + 32, + 3, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 3, + 65, + 4, + 106, + 65, + 196, + 194, + 193, + 0, + 32, + 3, + 65, + 8, + 106, + 16, + 31, + 69, + 4, + 64, + 32, + 3, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 65, + 200, + 195, + 193, + 0, + 65, + 51, + 32, + 3, + 65, + 8, + 106, + 65, + 184, + 195, + 193, + 0, + 65, + 148, + 196, + 193, + 0, + 16, + 93, + 0, + 11, + 192, + 2, + 2, + 5, + 127, + 1, + 126, + 35, + 0, + 65, + 48, + 107, + 34, + 5, + 36, + 0, + 65, + 39, + 33, + 3, + 2, + 64, + 32, + 0, + 66, + 144, + 206, + 0, + 84, + 4, + 64, + 32, + 0, + 33, + 8, + 12, + 1, + 11, + 3, + 64, + 32, + 5, + 65, + 9, + 106, + 32, + 3, + 106, + 34, + 4, + 65, + 124, + 106, + 32, + 0, + 32, + 0, + 66, + 144, + 206, + 0, + 128, + 34, + 8, + 66, + 144, + 206, + 0, + 126, + 125, + 167, + 34, + 6, + 65, + 255, + 255, + 3, + 113, + 65, + 228, + 0, + 110, + 34, + 7, + 65, + 1, + 116, + 65, + 162, + 199, + 193, + 0, + 106, + 47, + 0, + 0, + 59, + 0, + 0, + 32, + 4, + 65, + 126, + 106, + 32, + 6, + 32, + 7, + 65, + 228, + 0, + 108, + 107, + 65, + 255, + 255, + 3, + 113, + 65, + 1, + 116, + 65, + 162, + 199, + 193, + 0, + 106, + 47, + 0, + 0, + 59, + 0, + 0, + 32, + 3, + 65, + 124, + 106, + 33, + 3, + 32, + 0, + 66, + 255, + 193, + 215, + 47, + 86, + 32, + 8, + 33, + 0, + 13, + 0, + 11, + 11, + 32, + 8, + 167, + 34, + 4, + 65, + 227, + 0, + 74, + 4, + 64, + 32, + 3, + 65, + 126, + 106, + 34, + 3, + 32, + 5, + 65, + 9, + 106, + 106, + 32, + 8, + 167, + 34, + 4, + 32, + 4, + 65, + 255, + 255, + 3, + 113, + 65, + 228, + 0, + 110, + 34, + 4, + 65, + 228, + 0, + 108, + 107, + 65, + 255, + 255, + 3, + 113, + 65, + 1, + 116, + 65, + 162, + 199, + 193, + 0, + 106, + 47, + 0, + 0, + 59, + 0, + 0, + 11, + 2, + 64, + 32, + 4, + 65, + 9, + 76, + 4, + 64, + 32, + 3, + 65, + 127, + 106, + 34, + 3, + 32, + 5, + 65, + 9, + 106, + 106, + 32, + 4, + 65, + 48, + 106, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 3, + 65, + 126, + 106, + 34, + 3, + 32, + 5, + 65, + 9, + 106, + 106, + 32, + 4, + 65, + 1, + 116, + 65, + 162, + 199, + 193, + 0, + 106, + 47, + 0, + 0, + 59, + 0, + 0, + 11, + 32, + 2, + 32, + 1, + 65, + 228, + 196, + 193, + 0, + 65, + 0, + 32, + 5, + 65, + 9, + 106, + 32, + 3, + 106, + 65, + 39, + 32, + 3, + 107, + 16, + 27, + 32, + 5, + 65, + 48, + 106, + 36, + 0, + 11, + 206, + 2, + 2, + 3, + 127, + 1, + 126, + 2, + 64, + 32, + 0, + 40, + 2, + 24, + 69, + 13, + 0, + 32, + 0, + 16, + 34, + 34, + 4, + 167, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 4, + 66, + 32, + 136, + 167, + 34, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 2, + 40, + 2, + 4, + 34, + 3, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 32, + 2, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 0, + 40, + 2, + 24, + 69, + 13, + 0, + 32, + 0, + 16, + 57, + 34, + 4, + 167, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 4, + 66, + 32, + 136, + 167, + 34, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 2, + 40, + 2, + 4, + 34, + 3, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 32, + 2, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 0, + 40, + 2, + 24, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 40, + 2, + 16, + 34, + 1, + 65, + 192, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 204, + 153, + 5, + 65, + 1, + 16, + 156, + 1, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 65, + 224, + 33, + 65, + 2, + 16, + 156, + 1, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 130, + 130, + 10, + 65, + 2, + 16, + 156, + 1, + 32, + 0, + 40, + 2, + 16, + 65, + 232, + 128, + 4, + 65, + 4, + 16, + 156, + 1, + 32, + 0, + 65, + 40, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 36, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 65, + 208, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 76, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 11, + 11, + 220, + 2, + 2, + 7, + 127, + 1, + 126, + 35, + 0, + 34, + 2, + 33, + 5, + 32, + 2, + 65, + 32, + 107, + 65, + 96, + 113, + 34, + 2, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 16, + 82, + 34, + 9, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 2, + 64, + 32, + 1, + 65, + 216, + 0, + 106, + 40, + 2, + 0, + 65, + 8, + 71, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 69, + 13, + 5, + 32, + 1, + 40, + 2, + 80, + 34, + 3, + 45, + 0, + 7, + 33, + 4, + 32, + 3, + 45, + 0, + 6, + 33, + 6, + 32, + 3, + 45, + 0, + 5, + 33, + 7, + 32, + 3, + 45, + 0, + 4, + 33, + 8, + 32, + 3, + 40, + 0, + 0, + 32, + 1, + 16, + 147, + 1, + 71, + 13, + 0, + 32, + 1, + 40, + 2, + 24, + 69, + 13, + 6, + 32, + 1, + 40, + 2, + 16, + 32, + 7, + 65, + 8, + 116, + 32, + 8, + 114, + 32, + 6, + 65, + 16, + 116, + 114, + 32, + 4, + 65, + 24, + 116, + 114, + 70, + 13, + 2, + 11, + 16, + 79, + 33, + 9, + 11, + 32, + 9, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 13, + 1, + 11, + 32, + 1, + 32, + 2, + 41, + 3, + 16, + 55, + 3, + 16, + 32, + 1, + 32, + 2, + 41, + 3, + 8, + 55, + 3, + 8, + 32, + 1, + 32, + 2, + 41, + 3, + 0, + 55, + 3, + 0, + 65, + 0, + 33, + 3, + 32, + 2, + 65, + 0, + 54, + 2, + 24, + 32, + 1, + 65, + 24, + 106, + 34, + 4, + 41, + 3, + 0, + 33, + 9, + 32, + 4, + 32, + 2, + 41, + 3, + 24, + 55, + 3, + 0, + 32, + 9, + 167, + 69, + 13, + 4, + 32, + 0, + 65, + 12, + 106, + 32, + 1, + 65, + 32, + 106, + 41, + 2, + 0, + 62, + 2, + 0, + 32, + 0, + 32, + 9, + 55, + 2, + 4, + 12, + 1, + 11, + 32, + 0, + 32, + 9, + 55, + 2, + 4, + 65, + 1, + 33, + 3, + 11, + 32, + 1, + 16, + 50, + 32, + 0, + 32, + 3, + 54, + 2, + 0, + 32, + 5, + 36, + 0, + 15, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 184, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 184, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 240, + 131, + 192, + 0, + 16, + 114, + 0, + 11, + 202, + 2, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 7, + 36, + 0, + 32, + 7, + 65, + 8, + 106, + 32, + 6, + 65, + 255, + 1, + 113, + 16, + 119, + 32, + 7, + 40, + 2, + 12, + 33, + 6, + 32, + 7, + 40, + 2, + 8, + 69, + 4, + 64, + 32, + 7, + 65, + 16, + 106, + 32, + 1, + 40, + 2, + 16, + 32, + 2, + 32, + 3, + 32, + 4, + 32, + 5, + 32, + 6, + 16, + 7, + 32, + 1, + 32, + 1, + 41, + 3, + 0, + 32, + 7, + 53, + 2, + 16, + 124, + 55, + 3, + 0, + 32, + 1, + 32, + 1, + 41, + 3, + 8, + 32, + 7, + 53, + 2, + 20, + 124, + 55, + 3, + 8, + 32, + 7, + 65, + 28, + 106, + 40, + 2, + 0, + 33, + 2, + 32, + 0, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 7, + 40, + 2, + 24, + 65, + 1, + 70, + 4, + 64, + 32, + 2, + 65, + 123, + 70, + 13, + 1, + 32, + 0, + 65, + 4, + 106, + 65, + 0, + 54, + 2, + 0, + 65, + 1, + 12, + 3, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 65, + 1, + 107, + 14, + 2, + 2, + 0, + 1, + 11, + 2, + 64, + 2, + 64, + 32, + 1, + 40, + 2, + 16, + 34, + 2, + 65, + 152, + 210, + 0, + 106, + 45, + 0, + 0, + 34, + 3, + 69, + 13, + 0, + 32, + 2, + 65, + 24, + 106, + 40, + 2, + 0, + 33, + 1, + 32, + 3, + 65, + 103, + 106, + 65, + 255, + 1, + 113, + 65, + 9, + 73, + 32, + 2, + 65, + 4, + 106, + 40, + 2, + 0, + 69, + 13, + 0, + 69, + 13, + 1, + 11, + 65, + 0, + 33, + 1, + 11, + 32, + 0, + 65, + 8, + 106, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 65, + 4, + 106, + 65, + 1, + 54, + 2, + 0, + 65, + 1, + 12, + 4, + 11, + 32, + 0, + 65, + 0, + 58, + 0, + 1, + 65, + 0, + 12, + 3, + 11, + 32, + 0, + 65, + 2, + 58, + 0, + 1, + 12, + 1, + 11, + 32, + 0, + 65, + 1, + 58, + 0, + 1, + 11, + 65, + 0, + 11, + 58, + 0, + 0, + 32, + 7, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 7, + 32, + 6, + 54, + 2, + 16, + 65, + 244, + 143, + 192, + 0, + 65, + 43, + 32, + 7, + 65, + 16, + 106, + 65, + 160, + 144, + 192, + 0, + 65, + 140, + 145, + 192, + 0, + 16, + 93, + 0, + 11, + 173, + 2, + 1, + 3, + 127, + 35, + 0, + 65, + 128, + 1, + 107, + 34, + 4, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 127, + 32, + 1, + 40, + 2, + 0, + 34, + 3, + 65, + 16, + 113, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 4, + 106, + 65, + 255, + 0, + 106, + 32, + 2, + 65, + 15, + 113, + 34, + 3, + 65, + 48, + 114, + 32, + 3, + 65, + 215, + 0, + 106, + 32, + 3, + 65, + 10, + 73, + 27, + 58, + 0, + 0, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 32, + 2, + 65, + 4, + 118, + 34, + 2, + 13, + 0, + 11, + 32, + 0, + 65, + 128, + 1, + 106, + 34, + 2, + 65, + 129, + 1, + 79, + 13, + 2, + 32, + 1, + 65, + 1, + 65, + 160, + 199, + 193, + 0, + 65, + 2, + 32, + 0, + 32, + 4, + 106, + 65, + 128, + 1, + 106, + 65, + 0, + 32, + 0, + 107, + 16, + 27, + 12, + 1, + 11, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 32, + 3, + 65, + 32, + 113, + 4, + 64, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 4, + 106, + 65, + 255, + 0, + 106, + 32, + 2, + 65, + 15, + 113, + 34, + 3, + 65, + 48, + 114, + 32, + 3, + 65, + 55, + 106, + 32, + 3, + 65, + 10, + 73, + 27, + 58, + 0, + 0, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 32, + 2, + 65, + 4, + 118, + 34, + 2, + 13, + 0, + 11, + 32, + 0, + 65, + 128, + 1, + 106, + 34, + 2, + 65, + 129, + 1, + 79, + 13, + 3, + 32, + 1, + 65, + 1, + 65, + 160, + 199, + 193, + 0, + 65, + 2, + 32, + 0, + 32, + 4, + 106, + 65, + 128, + 1, + 106, + 65, + 0, + 32, + 0, + 107, + 16, + 27, + 12, + 1, + 11, + 32, + 2, + 173, + 65, + 1, + 32, + 1, + 16, + 52, + 11, + 32, + 4, + 65, + 128, + 1, + 106, + 36, + 0, + 15, + 11, + 32, + 2, + 65, + 128, + 1, + 65, + 144, + 199, + 193, + 0, + 16, + 101, + 0, + 11, + 32, + 2, + 65, + 128, + 1, + 65, + 144, + 199, + 193, + 0, + 16, + 101, + 0, + 11, + 180, + 2, + 2, + 8, + 127, + 2, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 32, + 0, + 65, + 24, + 106, + 33, + 6, + 32, + 0, + 65, + 36, + 106, + 33, + 7, + 32, + 0, + 65, + 44, + 106, + 33, + 4, + 32, + 0, + 65, + 32, + 106, + 33, + 5, + 2, + 64, + 2, + 126, + 2, + 64, + 3, + 64, + 2, + 64, + 32, + 4, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 6, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 0, + 40, + 2, + 36, + 33, + 2, + 32, + 6, + 32, + 5, + 40, + 2, + 0, + 32, + 1, + 16, + 75, + 32, + 0, + 40, + 2, + 24, + 32, + 5, + 40, + 2, + 0, + 106, + 32, + 2, + 32, + 1, + 16, + 121, + 26, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 32, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 40, + 2, + 0, + 34, + 2, + 32, + 1, + 73, + 13, + 6, + 32, + 4, + 65, + 0, + 54, + 2, + 0, + 32, + 2, + 32, + 1, + 107, + 34, + 2, + 69, + 13, + 2, + 32, + 0, + 40, + 2, + 36, + 34, + 8, + 32, + 1, + 32, + 8, + 106, + 32, + 2, + 16, + 96, + 32, + 4, + 32, + 2, + 54, + 2, + 0, + 32, + 2, + 33, + 1, + 32, + 0, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 152, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 0, + 16, + 163, + 1, + 33, + 9, + 32, + 3, + 32, + 0, + 65, + 168, + 132, + 192, + 0, + 65, + 0, + 32, + 7, + 65, + 4, + 16, + 65, + 32, + 3, + 45, + 0, + 0, + 65, + 1, + 70, + 13, + 1, + 32, + 0, + 16, + 163, + 1, + 32, + 9, + 82, + 13, + 0, + 11, + 66, + 3, + 33, + 10, + 66, + 0, + 12, + 1, + 11, + 32, + 3, + 40, + 2, + 4, + 32, + 3, + 40, + 2, + 8, + 16, + 128, + 1, + 34, + 9, + 66, + 255, + 1, + 131, + 33, + 10, + 32, + 9, + 66, + 128, + 126, + 131, + 11, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 32, + 10, + 132, + 15, + 11, + 32, + 1, + 32, + 2, + 65, + 208, + 133, + 192, + 0, + 16, + 99, + 0, + 11, + 180, + 2, + 2, + 8, + 127, + 2, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 32, + 0, + 65, + 24, + 106, + 33, + 6, + 32, + 0, + 65, + 36, + 106, + 33, + 7, + 32, + 0, + 65, + 44, + 106, + 33, + 4, + 32, + 0, + 65, + 32, + 106, + 33, + 5, + 2, + 64, + 2, + 126, + 2, + 64, + 3, + 64, + 2, + 64, + 32, + 4, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 6, + 40, + 2, + 0, + 4, + 64, + 3, + 64, + 32, + 0, + 40, + 2, + 36, + 33, + 2, + 32, + 6, + 32, + 5, + 40, + 2, + 0, + 32, + 1, + 16, + 75, + 32, + 0, + 40, + 2, + 24, + 32, + 5, + 40, + 2, + 0, + 106, + 32, + 2, + 32, + 1, + 16, + 121, + 26, + 32, + 5, + 32, + 5, + 40, + 2, + 0, + 32, + 1, + 106, + 54, + 2, + 0, + 32, + 4, + 40, + 2, + 0, + 34, + 2, + 32, + 1, + 73, + 13, + 6, + 32, + 4, + 65, + 0, + 54, + 2, + 0, + 32, + 2, + 32, + 1, + 107, + 34, + 2, + 69, + 13, + 2, + 32, + 0, + 40, + 2, + 36, + 34, + 8, + 32, + 1, + 32, + 8, + 106, + 32, + 2, + 16, + 96, + 32, + 4, + 32, + 2, + 54, + 2, + 0, + 32, + 2, + 33, + 1, + 32, + 0, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 152, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 32, + 0, + 16, + 163, + 1, + 33, + 9, + 32, + 3, + 32, + 0, + 65, + 168, + 132, + 192, + 0, + 65, + 0, + 32, + 7, + 65, + 4, + 16, + 110, + 32, + 3, + 45, + 0, + 0, + 65, + 1, + 70, + 13, + 1, + 32, + 0, + 16, + 163, + 1, + 32, + 9, + 82, + 13, + 0, + 11, + 66, + 3, + 33, + 10, + 66, + 0, + 12, + 1, + 11, + 32, + 3, + 40, + 2, + 4, + 32, + 3, + 40, + 2, + 8, + 16, + 128, + 1, + 34, + 9, + 66, + 255, + 1, + 131, + 33, + 10, + 32, + 9, + 66, + 128, + 126, + 131, + 11, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 32, + 10, + 132, + 15, + 11, + 32, + 1, + 32, + 2, + 65, + 208, + 133, + 192, + 0, + 16, + 99, + 0, + 11, + 246, + 2, + 1, + 3, + 127, + 35, + 0, + 65, + 240, + 128, + 4, + 107, + 34, + 0, + 36, + 0, + 2, + 64, + 65, + 232, + 128, + 4, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 4, + 64, + 32, + 0, + 65, + 8, + 106, + 34, + 2, + 65, + 16, + 106, + 65, + 0, + 65, + 128, + 128, + 4, + 16, + 131, + 1, + 26, + 32, + 2, + 66, + 128, + 128, + 128, + 128, + 128, + 1, + 55, + 2, + 8, + 32, + 2, + 66, + 1, + 55, + 2, + 0, + 32, + 0, + 65, + 152, + 128, + 4, + 106, + 16, + 91, + 65, + 224, + 33, + 65, + 2, + 16, + 149, + 1, + 34, + 2, + 69, + 13, + 1, + 32, + 2, + 65, + 0, + 65, + 224, + 33, + 16, + 131, + 1, + 26, + 32, + 0, + 65, + 208, + 128, + 4, + 106, + 16, + 97, + 32, + 1, + 32, + 0, + 65, + 8, + 106, + 65, + 144, + 128, + 4, + 16, + 121, + 34, + 1, + 32, + 2, + 54, + 2, + 200, + 128, + 4, + 32, + 1, + 65, + 192, + 128, + 4, + 106, + 32, + 0, + 65, + 200, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 184, + 128, + 4, + 106, + 32, + 0, + 65, + 192, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 176, + 128, + 4, + 106, + 32, + 0, + 65, + 184, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 168, + 128, + 4, + 106, + 32, + 0, + 65, + 176, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 160, + 128, + 4, + 106, + 32, + 0, + 65, + 168, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 152, + 128, + 4, + 106, + 32, + 0, + 65, + 160, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 32, + 0, + 41, + 3, + 152, + 128, + 4, + 55, + 2, + 144, + 128, + 4, + 32, + 1, + 32, + 0, + 41, + 3, + 208, + 128, + 4, + 55, + 2, + 204, + 128, + 4, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 32, + 0, + 65, + 216, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 220, + 128, + 4, + 106, + 32, + 0, + 65, + 224, + 128, + 4, + 106, + 41, + 3, + 0, + 55, + 2, + 0, + 32, + 1, + 65, + 228, + 128, + 4, + 106, + 32, + 0, + 65, + 232, + 128, + 4, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 240, + 128, + 4, + 106, + 36, + 0, + 32, + 1, + 15, + 11, + 65, + 232, + 128, + 4, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 65, + 224, + 33, + 65, + 2, + 16, + 165, + 1, + 0, + 11, + 186, + 2, + 1, + 5, + 127, + 35, + 0, + 65, + 64, + 106, + 34, + 2, + 36, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 3, + 69, + 4, + 64, + 32, + 1, + 65, + 4, + 106, + 33, + 3, + 32, + 1, + 40, + 2, + 0, + 33, + 4, + 32, + 2, + 65, + 0, + 54, + 2, + 32, + 32, + 2, + 66, + 1, + 55, + 3, + 24, + 32, + 2, + 32, + 2, + 65, + 24, + 106, + 54, + 2, + 36, + 32, + 2, + 65, + 56, + 106, + 32, + 4, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 48, + 106, + 32, + 4, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 4, + 41, + 2, + 0, + 55, + 3, + 40, + 32, + 2, + 65, + 36, + 106, + 65, + 172, + 188, + 193, + 0, + 32, + 2, + 65, + 40, + 106, + 16, + 31, + 26, + 32, + 2, + 65, + 16, + 106, + 34, + 4, + 32, + 2, + 40, + 2, + 32, + 54, + 2, + 0, + 32, + 2, + 32, + 2, + 41, + 3, + 24, + 55, + 3, + 8, + 2, + 64, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 69, + 13, + 0, + 32, + 1, + 65, + 8, + 106, + 40, + 2, + 0, + 34, + 6, + 69, + 13, + 0, + 32, + 5, + 32, + 6, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 3, + 32, + 2, + 41, + 3, + 8, + 55, + 2, + 0, + 32, + 3, + 65, + 8, + 106, + 32, + 4, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 40, + 2, + 0, + 33, + 3, + 11, + 32, + 1, + 65, + 1, + 54, + 2, + 4, + 32, + 1, + 65, + 12, + 106, + 40, + 2, + 0, + 33, + 4, + 32, + 1, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 33, + 5, + 32, + 1, + 66, + 0, + 55, + 2, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 1, + 32, + 4, + 54, + 2, + 8, + 32, + 1, + 32, + 5, + 54, + 2, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 0, + 32, + 0, + 65, + 188, + 192, + 193, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 2, + 65, + 64, + 107, + 36, + 0, + 11, + 183, + 2, + 2, + 2, + 127, + 1, + 126, + 2, + 64, + 2, + 64, + 32, + 1, + 16, + 58, + 34, + 4, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 4, + 64, + 32, + 1, + 40, + 2, + 24, + 33, + 2, + 32, + 1, + 65, + 0, + 54, + 2, + 24, + 32, + 2, + 69, + 13, + 2, + 32, + 1, + 65, + 28, + 106, + 41, + 2, + 0, + 33, + 4, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 4, + 55, + 2, + 0, + 32, + 1, + 40, + 2, + 16, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 156, + 1, + 32, + 1, + 65, + 40, + 106, + 40, + 2, + 0, + 34, + 0, + 69, + 13, + 1, + 32, + 1, + 40, + 2, + 36, + 32, + 0, + 65, + 1, + 16, + 156, + 1, + 15, + 11, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 4, + 55, + 2, + 4, + 2, + 64, + 32, + 1, + 40, + 2, + 24, + 69, + 13, + 0, + 32, + 1, + 16, + 58, + 34, + 4, + 167, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 4, + 66, + 32, + 136, + 167, + 34, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 0, + 40, + 2, + 4, + 34, + 2, + 40, + 2, + 4, + 34, + 3, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 32, + 3, + 32, + 2, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 0, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 1, + 40, + 2, + 24, + 34, + 0, + 69, + 13, + 0, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 0, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 1, + 40, + 2, + 16, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 156, + 1, + 32, + 1, + 65, + 40, + 106, + 40, + 2, + 0, + 34, + 0, + 69, + 13, + 0, + 32, + 1, + 40, + 2, + 36, + 32, + 0, + 65, + 1, + 16, + 156, + 1, + 11, + 15, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 240, + 131, + 192, + 0, + 16, + 114, + 0, + 11, + 169, + 2, + 1, + 3, + 127, + 35, + 0, + 65, + 224, + 0, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 16, + 138, + 1, + 32, + 3, + 65, + 216, + 0, + 106, + 32, + 3, + 65, + 32, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 208, + 0, + 106, + 32, + 3, + 65, + 24, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 200, + 0, + 106, + 34, + 5, + 32, + 3, + 65, + 16, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 64, + 107, + 34, + 4, + 32, + 3, + 65, + 8, + 106, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 3, + 32, + 3, + 41, + 3, + 0, + 55, + 3, + 56, + 32, + 3, + 65, + 40, + 106, + 32, + 3, + 65, + 56, + 106, + 32, + 2, + 16, + 16, + 32, + 4, + 32, + 1, + 65, + 8, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 56, + 32, + 0, + 32, + 2, + 65, + 0, + 16, + 126, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 149, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 128, + 128, + 2, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 32, + 0, + 32, + 3, + 41, + 3, + 56, + 55, + 2, + 24, + 32, + 0, + 32, + 1, + 54, + 2, + 36, + 32, + 0, + 65, + 40, + 106, + 66, + 128, + 128, + 2, + 55, + 2, + 0, + 32, + 0, + 65, + 32, + 106, + 32, + 4, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 56, + 106, + 16, + 124, + 32, + 0, + 65, + 0, + 54, + 2, + 72, + 32, + 0, + 65, + 64, + 107, + 32, + 5, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 0, + 65, + 56, + 106, + 32, + 4, + 41, + 3, + 0, + 55, + 3, + 0, + 32, + 0, + 32, + 3, + 41, + 3, + 56, + 55, + 3, + 48, + 32, + 0, + 32, + 3, + 41, + 3, + 40, + 55, + 2, + 76, + 32, + 0, + 65, + 212, + 0, + 106, + 32, + 3, + 65, + 48, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 224, + 0, + 106, + 36, + 0, + 11, + 194, + 2, + 2, + 3, + 127, + 2, + 126, + 35, + 0, + 65, + 64, + 106, + 34, + 3, + 36, + 0, + 32, + 0, + 2, + 127, + 65, + 1, + 32, + 0, + 45, + 0, + 8, + 13, + 0, + 26, + 32, + 0, + 40, + 2, + 4, + 33, + 5, + 32, + 0, + 40, + 2, + 0, + 34, + 4, + 45, + 0, + 0, + 65, + 4, + 113, + 4, + 64, + 32, + 5, + 69, + 4, + 64, + 65, + 1, + 32, + 4, + 40, + 2, + 24, + 65, + 237, + 198, + 193, + 0, + 65, + 2, + 32, + 4, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 2, + 26, + 32, + 0, + 40, + 2, + 0, + 33, + 4, + 11, + 32, + 3, + 65, + 1, + 58, + 0, + 23, + 32, + 3, + 65, + 52, + 106, + 65, + 164, + 198, + 193, + 0, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 41, + 2, + 24, + 55, + 3, + 8, + 32, + 3, + 32, + 3, + 65, + 23, + 106, + 54, + 2, + 16, + 32, + 4, + 41, + 2, + 8, + 33, + 6, + 32, + 4, + 41, + 2, + 16, + 33, + 7, + 32, + 3, + 32, + 4, + 45, + 0, + 32, + 58, + 0, + 56, + 32, + 3, + 32, + 7, + 55, + 3, + 40, + 32, + 3, + 32, + 6, + 55, + 3, + 32, + 32, + 3, + 32, + 4, + 41, + 2, + 0, + 55, + 3, + 24, + 32, + 3, + 32, + 3, + 65, + 8, + 106, + 54, + 2, + 48, + 65, + 1, + 32, + 1, + 32, + 3, + 65, + 24, + 106, + 32, + 2, + 40, + 2, + 12, + 17, + 0, + 0, + 13, + 1, + 26, + 32, + 3, + 40, + 2, + 48, + 65, + 227, + 198, + 193, + 0, + 65, + 2, + 32, + 3, + 40, + 2, + 52, + 40, + 2, + 12, + 17, + 1, + 0, + 12, + 1, + 11, + 65, + 1, + 32, + 4, + 40, + 2, + 24, + 65, + 229, + 198, + 193, + 0, + 65, + 239, + 198, + 193, + 0, + 32, + 5, + 27, + 65, + 2, + 65, + 1, + 32, + 5, + 27, + 32, + 4, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 0, + 26, + 32, + 1, + 32, + 0, + 40, + 2, + 0, + 32, + 2, + 40, + 2, + 12, + 17, + 0, + 0, + 11, + 58, + 0, + 8, + 32, + 0, + 32, + 0, + 40, + 2, + 4, + 65, + 1, + 106, + 54, + 2, + 4, + 32, + 3, + 65, + 64, + 107, + 36, + 0, + 11, + 249, + 2, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 45, + 0, + 0, + 65, + 1, + 107, + 14, + 17, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 0, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 220, + 192, + 193, + 0, + 65, + 13, + 16, + 127, + 12, + 17, + 11, + 32, + 2, + 32, + 1, + 65, + 168, + 194, + 193, + 0, + 65, + 8, + 16, + 127, + 12, + 16, + 11, + 32, + 2, + 32, + 1, + 65, + 152, + 194, + 193, + 0, + 65, + 16, + 16, + 127, + 12, + 15, + 11, + 32, + 2, + 32, + 1, + 65, + 135, + 194, + 193, + 0, + 65, + 17, + 16, + 127, + 12, + 14, + 11, + 32, + 2, + 32, + 1, + 65, + 248, + 193, + 193, + 0, + 65, + 15, + 16, + 127, + 12, + 13, + 11, + 32, + 2, + 32, + 1, + 65, + 231, + 193, + 193, + 0, + 65, + 17, + 16, + 127, + 12, + 12, + 11, + 32, + 2, + 32, + 1, + 65, + 219, + 193, + 193, + 0, + 65, + 12, + 16, + 127, + 12, + 11, + 11, + 32, + 2, + 32, + 1, + 65, + 210, + 193, + 193, + 0, + 65, + 9, + 16, + 127, + 12, + 10, + 11, + 32, + 2, + 32, + 1, + 65, + 194, + 193, + 193, + 0, + 65, + 16, + 16, + 127, + 12, + 9, + 11, + 32, + 2, + 32, + 1, + 65, + 184, + 193, + 193, + 0, + 65, + 10, + 16, + 127, + 12, + 8, + 11, + 32, + 2, + 32, + 1, + 65, + 171, + 193, + 193, + 0, + 65, + 13, + 16, + 127, + 12, + 7, + 11, + 32, + 2, + 32, + 1, + 65, + 161, + 193, + 193, + 0, + 65, + 10, + 16, + 127, + 12, + 6, + 11, + 32, + 2, + 32, + 1, + 65, + 149, + 193, + 193, + 0, + 65, + 12, + 16, + 127, + 12, + 5, + 11, + 32, + 2, + 32, + 1, + 65, + 138, + 193, + 193, + 0, + 65, + 11, + 16, + 127, + 12, + 4, + 11, + 32, + 2, + 32, + 1, + 65, + 130, + 193, + 193, + 0, + 65, + 8, + 16, + 127, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 65, + 249, + 192, + 193, + 0, + 65, + 9, + 16, + 127, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 238, + 192, + 193, + 0, + 65, + 11, + 16, + 127, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 233, + 192, + 193, + 0, + 65, + 5, + 16, + 127, + 11, + 32, + 2, + 16, + 86, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 175, + 2, + 2, + 5, + 127, + 2, + 126, + 35, + 0, + 65, + 32, + 107, + 34, + 6, + 36, + 0, + 32, + 1, + 65, + 8, + 106, + 34, + 8, + 41, + 3, + 0, + 33, + 11, + 32, + 4, + 65, + 8, + 106, + 34, + 9, + 40, + 2, + 0, + 33, + 7, + 32, + 4, + 65, + 4, + 106, + 40, + 2, + 0, + 33, + 10, + 32, + 4, + 40, + 2, + 0, + 33, + 4, + 32, + 6, + 65, + 8, + 106, + 32, + 5, + 65, + 255, + 1, + 113, + 16, + 119, + 32, + 6, + 40, + 2, + 12, + 33, + 5, + 2, + 64, + 32, + 6, + 40, + 2, + 8, + 69, + 4, + 64, + 32, + 6, + 65, + 16, + 106, + 32, + 1, + 40, + 2, + 16, + 32, + 2, + 32, + 3, + 32, + 4, + 32, + 7, + 106, + 32, + 10, + 32, + 7, + 107, + 32, + 5, + 16, + 22, + 32, + 1, + 32, + 1, + 41, + 3, + 0, + 32, + 6, + 53, + 2, + 16, + 124, + 55, + 3, + 0, + 32, + 8, + 32, + 8, + 41, + 3, + 0, + 32, + 6, + 53, + 2, + 20, + 124, + 34, + 12, + 55, + 3, + 0, + 32, + 6, + 65, + 28, + 106, + 40, + 2, + 0, + 33, + 2, + 32, + 6, + 40, + 2, + 24, + 33, + 1, + 32, + 9, + 32, + 7, + 32, + 12, + 32, + 11, + 125, + 167, + 106, + 54, + 2, + 0, + 65, + 1, + 65, + 3, + 32, + 2, + 65, + 123, + 70, + 27, + 65, + 128, + 132, + 12, + 32, + 2, + 65, + 3, + 116, + 65, + 248, + 255, + 255, + 7, + 113, + 118, + 32, + 1, + 65, + 1, + 70, + 27, + 34, + 1, + 65, + 255, + 1, + 113, + 65, + 3, + 70, + 13, + 1, + 32, + 0, + 65, + 0, + 58, + 0, + 0, + 32, + 0, + 32, + 1, + 58, + 0, + 1, + 32, + 6, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 6, + 32, + 5, + 54, + 2, + 16, + 65, + 244, + 143, + 192, + 0, + 65, + 43, + 32, + 6, + 65, + 16, + 106, + 65, + 160, + 144, + 192, + 0, + 65, + 156, + 145, + 192, + 0, + 16, + 93, + 0, + 11, + 65, + 252, + 138, + 192, + 0, + 65, + 43, + 32, + 6, + 65, + 16, + 106, + 65, + 168, + 139, + 192, + 0, + 65, + 180, + 140, + 192, + 0, + 16, + 93, + 0, + 11, + 138, + 2, + 1, + 4, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 2, + 64, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 5, + 32, + 0, + 65, + 8, + 106, + 40, + 2, + 0, + 34, + 4, + 107, + 32, + 2, + 32, + 1, + 107, + 34, + 6, + 79, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 12, + 1, + 11, + 2, + 64, + 32, + 4, + 32, + 6, + 106, + 34, + 2, + 32, + 4, + 73, + 13, + 0, + 32, + 5, + 65, + 1, + 116, + 34, + 4, + 32, + 2, + 32, + 4, + 32, + 2, + 75, + 27, + 34, + 2, + 65, + 8, + 32, + 2, + 65, + 8, + 75, + 27, + 33, + 2, + 2, + 64, + 32, + 5, + 69, + 4, + 64, + 32, + 3, + 65, + 0, + 54, + 2, + 16, + 12, + 1, + 11, + 32, + 3, + 65, + 24, + 106, + 65, + 1, + 54, + 2, + 0, + 32, + 3, + 32, + 5, + 54, + 2, + 20, + 32, + 3, + 32, + 0, + 40, + 2, + 0, + 54, + 2, + 16, + 11, + 32, + 3, + 32, + 2, + 32, + 3, + 65, + 16, + 106, + 16, + 80, + 32, + 3, + 65, + 8, + 106, + 40, + 2, + 0, + 33, + 4, + 32, + 3, + 40, + 2, + 4, + 33, + 2, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 0, + 32, + 2, + 54, + 2, + 0, + 32, + 0, + 65, + 4, + 106, + 32, + 4, + 54, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 40, + 2, + 0, + 33, + 4, + 12, + 2, + 11, + 32, + 4, + 69, + 13, + 0, + 32, + 2, + 32, + 4, + 16, + 165, + 1, + 0, + 11, + 16, + 158, + 1, + 0, + 11, + 32, + 2, + 32, + 4, + 106, + 32, + 1, + 32, + 6, + 16, + 121, + 26, + 32, + 0, + 65, + 8, + 106, + 34, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 6, + 106, + 54, + 2, + 0, + 32, + 3, + 65, + 32, + 106, + 36, + 0, + 11, + 161, + 2, + 1, + 4, + 127, + 32, + 0, + 65, + 0, + 54, + 2, + 8, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 32, + 2, + 40, + 2, + 28, + 54, + 2, + 4, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 40, + 2, + 16, + 65, + 1, + 70, + 4, + 64, + 32, + 2, + 32, + 2, + 40, + 2, + 20, + 34, + 3, + 32, + 1, + 65, + 24, + 106, + 40, + 2, + 0, + 34, + 5, + 32, + 2, + 40, + 2, + 32, + 34, + 6, + 107, + 34, + 4, + 32, + 4, + 32, + 3, + 75, + 27, + 34, + 4, + 4, + 127, + 32, + 4, + 32, + 6, + 106, + 34, + 3, + 32, + 4, + 73, + 13, + 2, + 32, + 5, + 32, + 3, + 73, + 13, + 3, + 32, + 2, + 40, + 2, + 16, + 34, + 3, + 32, + 4, + 106, + 34, + 5, + 32, + 3, + 73, + 13, + 4, + 32, + 5, + 65, + 205, + 153, + 5, + 79, + 13, + 5, + 32, + 1, + 65, + 20, + 106, + 40, + 2, + 0, + 32, + 6, + 106, + 32, + 2, + 40, + 2, + 48, + 32, + 3, + 106, + 32, + 4, + 16, + 121, + 26, + 32, + 2, + 40, + 2, + 20, + 33, + 3, + 32, + 2, + 40, + 2, + 32, + 5, + 32, + 6, + 11, + 32, + 4, + 106, + 34, + 1, + 54, + 2, + 32, + 32, + 2, + 32, + 3, + 32, + 4, + 107, + 54, + 2, + 20, + 32, + 0, + 32, + 1, + 54, + 2, + 8, + 32, + 2, + 32, + 2, + 40, + 2, + 16, + 32, + 4, + 106, + 54, + 2, + 16, + 11, + 2, + 64, + 32, + 2, + 45, + 0, + 55, + 69, + 13, + 0, + 32, + 2, + 40, + 2, + 20, + 13, + 0, + 32, + 0, + 65, + 1, + 54, + 2, + 0, + 11, + 15, + 11, + 32, + 6, + 32, + 3, + 65, + 184, + 175, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 3, + 32, + 5, + 65, + 184, + 175, + 192, + 0, + 16, + 99, + 0, + 11, + 32, + 3, + 32, + 5, + 65, + 200, + 175, + 192, + 0, + 16, + 100, + 0, + 11, + 32, + 5, + 65, + 204, + 153, + 5, + 65, + 200, + 175, + 192, + 0, + 16, + 99, + 0, + 11, + 252, + 1, + 1, + 2, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 2, + 65, + 0, + 54, + 2, + 12, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 128, + 1, + 79, + 4, + 64, + 32, + 1, + 65, + 128, + 16, + 73, + 13, + 1, + 32, + 2, + 65, + 12, + 106, + 33, + 0, + 32, + 1, + 65, + 128, + 128, + 4, + 79, + 13, + 2, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 224, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 3, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 58, + 0, + 12, + 32, + 2, + 65, + 12, + 106, + 33, + 0, + 65, + 1, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 192, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 65, + 12, + 106, + 33, + 0, + 65, + 2, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 15, + 32, + 2, + 32, + 1, + 65, + 18, + 118, + 65, + 240, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 4, + 11, + 33, + 1, + 32, + 0, + 32, + 1, + 16, + 39, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 249, + 1, + 1, + 2, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 65, + 0, + 54, + 2, + 12, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 1, + 65, + 128, + 1, + 79, + 4, + 64, + 32, + 1, + 65, + 128, + 16, + 73, + 13, + 1, + 32, + 2, + 65, + 12, + 106, + 33, + 3, + 32, + 1, + 65, + 128, + 128, + 4, + 79, + 13, + 2, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 224, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 3, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 58, + 0, + 12, + 32, + 2, + 65, + 12, + 106, + 33, + 3, + 65, + 1, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 192, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 65, + 12, + 106, + 33, + 3, + 65, + 2, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 15, + 32, + 2, + 32, + 1, + 65, + 18, + 118, + 65, + 240, + 1, + 114, + 58, + 0, + 12, + 32, + 2, + 32, + 1, + 65, + 6, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 14, + 32, + 2, + 32, + 1, + 65, + 12, + 118, + 65, + 63, + 113, + 65, + 128, + 1, + 114, + 58, + 0, + 13, + 65, + 4, + 11, + 33, + 1, + 32, + 0, + 32, + 3, + 32, + 1, + 16, + 39, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 132, + 2, + 1, + 5, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 65, + 0, + 58, + 0, + 15, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 40, + 2, + 0, + 32, + 2, + 65, + 15, + 106, + 65, + 1, + 16, + 89, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 16, + 65, + 1, + 70, + 4, + 64, + 32, + 2, + 65, + 16, + 106, + 65, + 4, + 114, + 33, + 4, + 3, + 64, + 32, + 4, + 16, + 133, + 1, + 65, + 255, + 1, + 113, + 65, + 15, + 71, + 13, + 2, + 2, + 64, + 32, + 2, + 40, + 2, + 16, + 69, + 13, + 0, + 32, + 2, + 45, + 0, + 20, + 65, + 2, + 73, + 13, + 0, + 32, + 2, + 40, + 2, + 24, + 34, + 3, + 40, + 2, + 0, + 32, + 3, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 3, + 40, + 2, + 4, + 34, + 5, + 40, + 2, + 4, + 34, + 6, + 4, + 64, + 32, + 3, + 40, + 2, + 0, + 32, + 6, + 32, + 5, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 2, + 40, + 2, + 24, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 40, + 2, + 0, + 32, + 2, + 65, + 15, + 106, + 65, + 1, + 16, + 89, + 32, + 2, + 40, + 2, + 16, + 65, + 1, + 70, + 13, + 0, + 11, + 11, + 32, + 2, + 40, + 2, + 20, + 69, + 4, + 64, + 32, + 0, + 65, + 2, + 58, + 0, + 0, + 12, + 2, + 11, + 32, + 0, + 32, + 2, + 45, + 0, + 15, + 58, + 0, + 1, + 32, + 0, + 65, + 0, + 58, + 0, + 0, + 12, + 1, + 11, + 32, + 0, + 65, + 1, + 58, + 0, + 0, + 32, + 0, + 65, + 4, + 106, + 32, + 2, + 41, + 2, + 20, + 55, + 0, + 0, + 11, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 241, + 1, + 1, + 1, + 127, + 32, + 2, + 32, + 3, + 107, + 32, + 5, + 113, + 33, + 3, + 32, + 4, + 65, + 3, + 70, + 4, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 3, + 32, + 1, + 73, + 4, + 64, + 32, + 2, + 32, + 1, + 79, + 13, + 1, + 32, + 0, + 32, + 2, + 106, + 32, + 0, + 32, + 3, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 3, + 65, + 1, + 106, + 32, + 5, + 113, + 34, + 4, + 32, + 1, + 79, + 13, + 2, + 32, + 2, + 65, + 1, + 106, + 34, + 6, + 32, + 1, + 79, + 13, + 3, + 32, + 0, + 32, + 6, + 106, + 32, + 0, + 32, + 4, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 3, + 65, + 2, + 106, + 32, + 5, + 113, + 34, + 3, + 32, + 1, + 79, + 13, + 4, + 32, + 2, + 65, + 2, + 106, + 34, + 2, + 32, + 1, + 79, + 13, + 5, + 32, + 0, + 32, + 2, + 106, + 32, + 0, + 32, + 3, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 15, + 11, + 32, + 3, + 32, + 1, + 65, + 216, + 180, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 2, + 32, + 1, + 65, + 232, + 180, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 4, + 32, + 1, + 65, + 248, + 180, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 6, + 32, + 1, + 65, + 136, + 181, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 3, + 32, + 1, + 65, + 152, + 181, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 2, + 32, + 1, + 65, + 168, + 181, + 192, + 0, + 16, + 98, + 0, + 11, + 32, + 0, + 32, + 1, + 32, + 3, + 32, + 2, + 32, + 4, + 32, + 5, + 16, + 25, + 11, + 237, + 1, + 1, + 3, + 127, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 1, + 45, + 0, + 16, + 69, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 33, + 5, + 2, + 64, + 32, + 1, + 40, + 2, + 4, + 34, + 6, + 32, + 3, + 32, + 6, + 32, + 3, + 73, + 27, + 34, + 4, + 65, + 1, + 71, + 4, + 64, + 32, + 2, + 32, + 5, + 32, + 4, + 16, + 121, + 26, + 12, + 1, + 11, + 32, + 3, + 69, + 13, + 3, + 32, + 2, + 32, + 5, + 45, + 0, + 0, + 58, + 0, + 0, + 11, + 32, + 1, + 32, + 6, + 32, + 4, + 107, + 54, + 2, + 4, + 32, + 1, + 32, + 4, + 32, + 5, + 106, + 54, + 2, + 0, + 32, + 3, + 69, + 32, + 4, + 114, + 13, + 1, + 32, + 1, + 65, + 1, + 58, + 0, + 16, + 11, + 32, + 1, + 40, + 2, + 8, + 33, + 5, + 2, + 64, + 32, + 1, + 65, + 12, + 106, + 40, + 2, + 0, + 34, + 6, + 32, + 3, + 32, + 6, + 32, + 3, + 73, + 27, + 34, + 4, + 65, + 1, + 71, + 4, + 64, + 32, + 2, + 32, + 5, + 32, + 4, + 16, + 121, + 26, + 12, + 1, + 11, + 32, + 3, + 69, + 13, + 3, + 32, + 2, + 32, + 5, + 45, + 0, + 0, + 58, + 0, + 0, + 11, + 32, + 1, + 32, + 6, + 32, + 4, + 107, + 54, + 2, + 12, + 32, + 1, + 32, + 4, + 32, + 5, + 106, + 54, + 2, + 8, + 11, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 32, + 4, + 54, + 2, + 4, + 15, + 11, + 65, + 0, + 65, + 0, + 65, + 148, + 137, + 192, + 0, + 16, + 98, + 0, + 11, + 65, + 0, + 65, + 0, + 65, + 148, + 137, + 192, + 0, + 16, + 98, + 0, + 11, + 227, + 1, + 1, + 4, + 127, + 35, + 0, + 65, + 64, + 106, + 34, + 2, + 36, + 0, + 32, + 1, + 65, + 4, + 106, + 33, + 4, + 32, + 1, + 40, + 2, + 4, + 69, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 33, + 3, + 32, + 2, + 65, + 0, + 54, + 2, + 32, + 32, + 2, + 66, + 1, + 55, + 3, + 24, + 32, + 2, + 32, + 2, + 65, + 24, + 106, + 54, + 2, + 36, + 32, + 2, + 65, + 56, + 106, + 32, + 3, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 48, + 106, + 32, + 3, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 3, + 41, + 2, + 0, + 55, + 3, + 40, + 32, + 2, + 65, + 36, + 106, + 65, + 172, + 188, + 193, + 0, + 32, + 2, + 65, + 40, + 106, + 16, + 31, + 26, + 32, + 2, + 65, + 16, + 106, + 34, + 3, + 32, + 2, + 40, + 2, + 32, + 54, + 2, + 0, + 32, + 2, + 32, + 2, + 41, + 3, + 24, + 55, + 3, + 8, + 2, + 64, + 32, + 1, + 40, + 2, + 4, + 34, + 5, + 69, + 13, + 0, + 32, + 1, + 65, + 8, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 5, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 4, + 32, + 2, + 41, + 3, + 8, + 55, + 2, + 0, + 32, + 4, + 65, + 8, + 106, + 32, + 3, + 40, + 2, + 0, + 54, + 2, + 0, + 11, + 32, + 0, + 65, + 188, + 192, + 193, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 2, + 65, + 64, + 107, + 36, + 0, + 11, + 241, + 1, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 40, + 2, + 0, + 34, + 1, + 40, + 2, + 0, + 54, + 2, + 12, + 2, + 127, + 2, + 64, + 32, + 2, + 65, + 2, + 106, + 34, + 2, + 32, + 2, + 108, + 34, + 2, + 65, + 128, + 16, + 32, + 2, + 65, + 128, + 16, + 75, + 27, + 34, + 4, + 65, + 4, + 32, + 3, + 65, + 12, + 106, + 65, + 188, + 138, + 192, + 0, + 65, + 188, + 138, + 192, + 0, + 16, + 32, + 34, + 2, + 4, + 64, + 32, + 1, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 3, + 65, + 188, + 138, + 192, + 0, + 32, + 4, + 65, + 4, + 16, + 92, + 2, + 64, + 32, + 3, + 40, + 2, + 0, + 4, + 64, + 32, + 1, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 0, + 12, + 1, + 11, + 32, + 3, + 40, + 2, + 4, + 34, + 2, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 8, + 32, + 3, + 32, + 2, + 54, + 2, + 12, + 32, + 4, + 65, + 4, + 32, + 3, + 65, + 12, + 106, + 65, + 188, + 138, + 192, + 0, + 65, + 188, + 138, + 192, + 0, + 16, + 32, + 33, + 2, + 32, + 1, + 32, + 3, + 40, + 2, + 12, + 54, + 2, + 0, + 32, + 2, + 13, + 1, + 11, + 65, + 1, + 12, + 1, + 11, + 32, + 2, + 66, + 0, + 55, + 2, + 4, + 32, + 2, + 32, + 2, + 32, + 4, + 65, + 2, + 116, + 106, + 65, + 2, + 114, + 54, + 2, + 0, + 65, + 0, + 11, + 33, + 1, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 65, + 16, + 106, + 36, + 0, + 11, + 202, + 1, + 1, + 2, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 2, + 64, + 2, + 64, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 4, + 32, + 1, + 107, + 32, + 2, + 73, + 4, + 64, + 32, + 1, + 32, + 2, + 106, + 34, + 2, + 32, + 1, + 73, + 13, + 2, + 32, + 4, + 65, + 1, + 116, + 34, + 1, + 32, + 2, + 32, + 1, + 32, + 2, + 75, + 27, + 34, + 1, + 65, + 8, + 32, + 1, + 65, + 8, + 75, + 27, + 33, + 1, + 2, + 64, + 32, + 4, + 69, + 4, + 64, + 32, + 3, + 65, + 0, + 54, + 2, + 16, + 12, + 1, + 11, + 32, + 3, + 65, + 24, + 106, + 65, + 1, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 54, + 2, + 20, + 32, + 3, + 32, + 0, + 40, + 2, + 0, + 54, + 2, + 16, + 11, + 32, + 3, + 32, + 1, + 32, + 3, + 65, + 16, + 106, + 16, + 81, + 32, + 3, + 65, + 8, + 106, + 40, + 2, + 0, + 33, + 1, + 32, + 3, + 40, + 2, + 4, + 33, + 2, + 32, + 3, + 40, + 2, + 0, + 65, + 1, + 70, + 13, + 1, + 32, + 0, + 32, + 2, + 54, + 2, + 0, + 32, + 0, + 65, + 4, + 106, + 32, + 1, + 54, + 2, + 0, + 11, + 32, + 3, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 1, + 69, + 13, + 0, + 32, + 2, + 32, + 1, + 16, + 165, + 1, + 0, + 11, + 16, + 158, + 1, + 0, + 11, + 149, + 2, + 1, + 2, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 4, + 36, + 0, + 65, + 1, + 33, + 5, + 65, + 188, + 231, + 193, + 0, + 65, + 188, + 231, + 193, + 0, + 40, + 2, + 0, + 65, + 1, + 106, + 54, + 2, + 0, + 2, + 64, + 2, + 64, + 65, + 192, + 231, + 193, + 0, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 65, + 192, + 231, + 193, + 0, + 66, + 129, + 128, + 128, + 128, + 16, + 55, + 3, + 0, + 12, + 1, + 11, + 65, + 196, + 231, + 193, + 0, + 65, + 196, + 231, + 193, + 0, + 40, + 2, + 0, + 65, + 1, + 106, + 34, + 5, + 54, + 2, + 0, + 32, + 5, + 65, + 3, + 79, + 13, + 1, + 11, + 32, + 4, + 32, + 3, + 54, + 2, + 28, + 32, + 4, + 32, + 2, + 54, + 2, + 24, + 32, + 4, + 65, + 196, + 188, + 193, + 0, + 54, + 2, + 20, + 32, + 4, + 65, + 196, + 188, + 193, + 0, + 54, + 2, + 16, + 65, + 176, + 231, + 193, + 0, + 40, + 2, + 0, + 34, + 2, + 65, + 127, + 76, + 13, + 0, + 65, + 176, + 231, + 193, + 0, + 32, + 2, + 65, + 1, + 106, + 34, + 2, + 54, + 2, + 0, + 65, + 176, + 231, + 193, + 0, + 65, + 184, + 231, + 193, + 0, + 40, + 2, + 0, + 34, + 3, + 4, + 127, + 65, + 180, + 231, + 193, + 0, + 40, + 2, + 0, + 32, + 4, + 65, + 8, + 106, + 32, + 0, + 32, + 1, + 40, + 2, + 16, + 17, + 4, + 0, + 32, + 4, + 32, + 4, + 41, + 3, + 8, + 55, + 3, + 16, + 32, + 4, + 65, + 16, + 106, + 32, + 3, + 40, + 2, + 12, + 17, + 4, + 0, + 65, + 176, + 231, + 193, + 0, + 40, + 2, + 0, + 5, + 32, + 2, + 11, + 65, + 127, + 106, + 54, + 2, + 0, + 32, + 5, + 65, + 2, + 79, + 13, + 0, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 1, + 54, + 2, + 12, + 32, + 2, + 32, + 0, + 54, + 2, + 8, + 0, + 11, + 0, + 11, + 223, + 1, + 2, + 3, + 127, + 1, + 126, + 2, + 64, + 32, + 0, + 40, + 2, + 24, + 69, + 13, + 0, + 32, + 0, + 16, + 57, + 34, + 4, + 167, + 65, + 3, + 113, + 65, + 2, + 70, + 4, + 64, + 32, + 4, + 66, + 32, + 136, + 167, + 34, + 1, + 40, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 40, + 2, + 0, + 17, + 2, + 0, + 32, + 1, + 40, + 2, + 4, + 34, + 2, + 40, + 2, + 4, + 34, + 3, + 4, + 64, + 32, + 1, + 40, + 2, + 0, + 32, + 3, + 32, + 2, + 40, + 2, + 8, + 16, + 156, + 1, + 11, + 32, + 1, + 65, + 12, + 65, + 4, + 16, + 156, + 1, + 11, + 32, + 0, + 40, + 2, + 24, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 34, + 2, + 69, + 13, + 0, + 32, + 1, + 32, + 2, + 65, + 1, + 16, + 156, + 1, + 11, + 32, + 0, + 40, + 2, + 16, + 34, + 1, + 65, + 192, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 204, + 153, + 5, + 65, + 1, + 16, + 156, + 1, + 32, + 1, + 40, + 2, + 200, + 128, + 4, + 65, + 224, + 33, + 65, + 2, + 16, + 156, + 1, + 32, + 1, + 65, + 212, + 128, + 4, + 106, + 40, + 2, + 0, + 65, + 130, + 130, + 10, + 65, + 2, + 16, + 156, + 1, + 32, + 0, + 40, + 2, + 16, + 65, + 232, + 128, + 4, + 65, + 4, + 16, + 156, + 1, + 32, + 0, + 65, + 40, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 36, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 11, + 11, + 208, + 1, + 1, + 6, + 127, + 2, + 64, + 2, + 64, + 32, + 0, + 65, + 200, + 0, + 106, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 40, + 2, + 24, + 4, + 64, + 32, + 0, + 65, + 24, + 106, + 33, + 5, + 32, + 0, + 65, + 32, + 106, + 33, + 3, + 32, + 0, + 65, + 200, + 0, + 106, + 33, + 4, + 3, + 64, + 32, + 0, + 40, + 2, + 64, + 33, + 2, + 32, + 5, + 32, + 3, + 40, + 2, + 0, + 32, + 1, + 16, + 75, + 32, + 0, + 40, + 2, + 24, + 32, + 3, + 40, + 2, + 0, + 106, + 32, + 2, + 32, + 1, + 16, + 121, + 26, + 32, + 3, + 32, + 3, + 40, + 2, + 0, + 32, + 1, + 106, + 54, + 2, + 0, + 32, + 0, + 32, + 2, + 32, + 1, + 16, + 141, + 1, + 32, + 4, + 40, + 2, + 0, + 34, + 2, + 32, + 1, + 73, + 13, + 3, + 32, + 4, + 65, + 0, + 54, + 2, + 0, + 32, + 2, + 32, + 1, + 107, + 34, + 2, + 69, + 13, + 2, + 32, + 0, + 40, + 2, + 64, + 34, + 6, + 32, + 1, + 32, + 6, + 106, + 32, + 2, + 16, + 96, + 32, + 4, + 32, + 2, + 54, + 2, + 0, + 32, + 2, + 33, + 1, + 32, + 0, + 40, + 2, + 24, + 13, + 0, + 11, + 11, + 65, + 236, + 130, + 192, + 0, + 65, + 43, + 65, + 152, + 132, + 192, + 0, + 16, + 114, + 0, + 11, + 66, + 3, + 15, + 11, + 32, + 1, + 32, + 2, + 65, + 208, + 133, + 192, + 0, + 16, + 99, + 0, + 11, + 205, + 1, + 2, + 4, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 1, + 65, + 8, + 106, + 65, + 53, + 16, + 103, + 32, + 1, + 40, + 2, + 12, + 33, + 3, + 32, + 1, + 40, + 2, + 8, + 34, + 0, + 65, + 172, + 145, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 45, + 106, + 65, + 217, + 145, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 40, + 106, + 65, + 212, + 145, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 32, + 106, + 65, + 204, + 145, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 24, + 106, + 65, + 196, + 145, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 16, + 106, + 65, + 188, + 145, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 180, + 145, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 2, + 69, + 4, + 64, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 2, + 65, + 53, + 54, + 2, + 8, + 32, + 2, + 32, + 0, + 54, + 2, + 0, + 32, + 2, + 32, + 3, + 54, + 2, + 4, + 65, + 11, + 32, + 2, + 65, + 248, + 145, + 192, + 0, + 16, + 107, + 32, + 1, + 65, + 16, + 106, + 36, + 0, + 11, + 144, + 1, + 1, + 3, + 127, + 65, + 1, + 33, + 3, + 65, + 1, + 33, + 4, + 2, + 64, + 32, + 1, + 65, + 0, + 72, + 4, + 64, + 65, + 0, + 33, + 3, + 12, + 1, + 11, + 2, + 127, + 32, + 2, + 40, + 2, + 0, + 34, + 5, + 69, + 4, + 64, + 65, + 1, + 32, + 1, + 69, + 13, + 1, + 26, + 32, + 1, + 65, + 1, + 16, + 149, + 1, + 12, + 1, + 11, + 32, + 2, + 40, + 2, + 4, + 34, + 2, + 69, + 4, + 64, + 65, + 1, + 32, + 1, + 69, + 13, + 1, + 26, + 32, + 1, + 65, + 1, + 16, + 149, + 1, + 12, + 1, + 11, + 32, + 5, + 32, + 2, + 32, + 1, + 16, + 143, + 1, + 11, + 34, + 2, + 69, + 4, + 64, + 32, + 0, + 32, + 1, + 54, + 2, + 4, + 12, + 1, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 65, + 0, + 33, + 4, + 32, + 1, + 33, + 3, + 11, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 3, + 54, + 2, + 0, + 11, + 145, + 1, + 1, + 2, + 127, + 65, + 1, + 33, + 3, + 2, + 64, + 32, + 1, + 65, + 0, + 72, + 4, + 64, + 65, + 0, + 33, + 1, + 12, + 1, + 11, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 0, + 34, + 4, + 69, + 4, + 64, + 32, + 1, + 69, + 13, + 1, + 12, + 3, + 11, + 32, + 2, + 40, + 2, + 4, + 34, + 2, + 13, + 1, + 32, + 1, + 13, + 2, + 11, + 65, + 1, + 33, + 2, + 12, + 3, + 11, + 32, + 4, + 32, + 2, + 32, + 1, + 16, + 143, + 1, + 34, + 2, + 69, + 13, + 1, + 12, + 2, + 11, + 32, + 1, + 65, + 1, + 16, + 149, + 1, + 34, + 2, + 13, + 1, + 11, + 32, + 0, + 32, + 1, + 54, + 2, + 4, + 65, + 1, + 33, + 1, + 12, + 1, + 11, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 65, + 0, + 33, + 3, + 11, + 32, + 0, + 32, + 3, + 54, + 2, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 1, + 54, + 2, + 0, + 11, + 154, + 1, + 2, + 3, + 127, + 2, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 0, + 65, + 64, + 107, + 33, + 3, + 32, + 0, + 65, + 40, + 106, + 33, + 2, + 2, + 126, + 2, + 64, + 2, + 64, + 3, + 64, + 32, + 0, + 16, + 78, + 34, + 4, + 167, + 65, + 255, + 1, + 113, + 65, + 3, + 71, + 13, + 2, + 32, + 2, + 16, + 163, + 1, + 33, + 4, + 32, + 1, + 32, + 2, + 65, + 168, + 132, + 192, + 0, + 65, + 0, + 32, + 3, + 65, + 4, + 16, + 110, + 32, + 1, + 45, + 0, + 0, + 65, + 1, + 70, + 13, + 1, + 32, + 2, + 16, + 163, + 1, + 32, + 4, + 82, + 13, + 0, + 11, + 66, + 3, + 33, + 4, + 66, + 0, + 12, + 2, + 11, + 32, + 1, + 40, + 2, + 4, + 32, + 1, + 40, + 2, + 8, + 16, + 128, + 1, + 34, + 4, + 66, + 128, + 126, + 131, + 12, + 1, + 11, + 32, + 4, + 66, + 128, + 126, + 131, + 11, + 33, + 5, + 32, + 1, + 65, + 16, + 106, + 36, + 0, + 32, + 4, + 66, + 255, + 1, + 131, + 32, + 5, + 132, + 11, + 141, + 1, + 1, + 3, + 127, + 35, + 0, + 65, + 128, + 1, + 107, + 34, + 3, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 3, + 106, + 65, + 255, + 0, + 106, + 32, + 2, + 65, + 15, + 113, + 34, + 4, + 65, + 48, + 114, + 32, + 4, + 65, + 215, + 0, + 106, + 32, + 4, + 65, + 10, + 73, + 27, + 58, + 0, + 0, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 32, + 2, + 65, + 4, + 118, + 34, + 2, + 13, + 0, + 11, + 32, + 0, + 65, + 128, + 1, + 106, + 34, + 2, + 65, + 129, + 1, + 79, + 4, + 64, + 32, + 2, + 65, + 128, + 1, + 65, + 144, + 199, + 193, + 0, + 16, + 101, + 0, + 11, + 32, + 1, + 65, + 1, + 65, + 160, + 199, + 193, + 0, + 65, + 2, + 32, + 0, + 32, + 3, + 106, + 65, + 128, + 1, + 106, + 65, + 0, + 32, + 0, + 107, + 16, + 27, + 32, + 3, + 65, + 128, + 1, + 106, + 36, + 0, + 11, + 140, + 1, + 1, + 3, + 127, + 35, + 0, + 65, + 128, + 1, + 107, + 34, + 3, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 33, + 2, + 65, + 0, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 3, + 106, + 65, + 255, + 0, + 106, + 32, + 2, + 65, + 15, + 113, + 34, + 4, + 65, + 48, + 114, + 32, + 4, + 65, + 55, + 106, + 32, + 4, + 65, + 10, + 73, + 27, + 58, + 0, + 0, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 32, + 2, + 65, + 4, + 118, + 34, + 2, + 13, + 0, + 11, + 32, + 0, + 65, + 128, + 1, + 106, + 34, + 2, + 65, + 129, + 1, + 79, + 4, + 64, + 32, + 2, + 65, + 128, + 1, + 65, + 144, + 199, + 193, + 0, + 16, + 101, + 0, + 11, + 32, + 1, + 65, + 1, + 65, + 160, + 199, + 193, + 0, + 65, + 2, + 32, + 0, + 32, + 3, + 106, + 65, + 128, + 1, + 106, + 65, + 0, + 32, + 0, + 107, + 16, + 27, + 32, + 3, + 65, + 128, + 1, + 106, + 36, + 0, + 11, + 135, + 1, + 1, + 1, + 127, + 32, + 0, + 32, + 2, + 65, + 255, + 1, + 113, + 34, + 2, + 65, + 10, + 32, + 2, + 65, + 10, + 73, + 27, + 65, + 2, + 116, + 65, + 232, + 175, + 192, + 0, + 106, + 40, + 2, + 0, + 32, + 2, + 65, + 4, + 73, + 65, + 14, + 116, + 114, + 34, + 3, + 32, + 3, + 65, + 128, + 32, + 114, + 32, + 1, + 27, + 34, + 1, + 32, + 1, + 65, + 128, + 128, + 32, + 114, + 32, + 2, + 27, + 34, + 1, + 54, + 2, + 144, + 128, + 4, + 32, + 0, + 65, + 196, + 128, + 4, + 106, + 32, + 1, + 65, + 14, + 118, + 65, + 1, + 113, + 58, + 0, + 0, + 32, + 0, + 32, + 1, + 65, + 255, + 31, + 113, + 34, + 0, + 65, + 2, + 118, + 65, + 2, + 106, + 65, + 3, + 110, + 65, + 1, + 106, + 173, + 66, + 32, + 134, + 32, + 0, + 65, + 2, + 106, + 65, + 3, + 110, + 65, + 1, + 106, + 173, + 132, + 55, + 2, + 204, + 128, + 4, + 11, + 150, + 1, + 1, + 2, + 127, + 32, + 0, + 45, + 0, + 8, + 33, + 1, + 32, + 0, + 40, + 2, + 4, + 34, + 2, + 4, + 64, + 32, + 1, + 65, + 255, + 1, + 113, + 33, + 1, + 32, + 0, + 2, + 127, + 65, + 1, + 32, + 1, + 13, + 0, + 26, + 2, + 64, + 32, + 2, + 65, + 1, + 71, + 13, + 0, + 32, + 0, + 45, + 0, + 9, + 69, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 34, + 2, + 45, + 0, + 0, + 65, + 4, + 113, + 13, + 0, + 65, + 1, + 32, + 2, + 40, + 2, + 24, + 65, + 240, + 198, + 193, + 0, + 65, + 1, + 32, + 2, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 13, + 1, + 26, + 11, + 32, + 0, + 40, + 2, + 0, + 34, + 1, + 40, + 2, + 24, + 65, + 241, + 198, + 193, + 0, + 65, + 1, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 11, + 34, + 1, + 58, + 0, + 8, + 11, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 0, + 71, + 11, + 168, + 1, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 65, + 6, + 106, + 14, + 6, + 6, + 5, + 4, + 3, + 2, + 1, + 0, + 11, + 32, + 2, + 32, + 1, + 65, + 236, + 186, + 192, + 0, + 65, + 5, + 16, + 127, + 12, + 6, + 11, + 32, + 2, + 32, + 1, + 65, + 136, + 187, + 192, + 0, + 65, + 5, + 16, + 127, + 12, + 5, + 11, + 32, + 2, + 32, + 1, + 65, + 130, + 187, + 192, + 0, + 65, + 6, + 16, + 127, + 12, + 4, + 11, + 32, + 2, + 32, + 1, + 65, + 254, + 186, + 192, + 0, + 65, + 4, + 16, + 127, + 12, + 3, + 11, + 32, + 2, + 32, + 1, + 65, + 251, + 186, + 192, + 0, + 65, + 3, + 16, + 127, + 12, + 2, + 11, + 32, + 2, + 32, + 1, + 65, + 248, + 186, + 192, + 0, + 65, + 3, + 16, + 127, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 241, + 186, + 192, + 0, + 65, + 7, + 16, + 127, + 11, + 32, + 2, + 16, + 86, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 162, + 1, + 1, + 3, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 34, + 2, + 65, + 20, + 106, + 40, + 2, + 0, + 33, + 3, + 2, + 64, + 2, + 127, + 2, + 64, + 2, + 64, + 32, + 2, + 40, + 2, + 4, + 14, + 2, + 0, + 1, + 3, + 11, + 32, + 3, + 13, + 2, + 65, + 0, + 33, + 2, + 65, + 196, + 188, + 193, + 0, + 12, + 1, + 11, + 32, + 3, + 13, + 1, + 32, + 2, + 40, + 2, + 0, + 34, + 3, + 40, + 2, + 4, + 33, + 2, + 32, + 3, + 40, + 2, + 0, + 11, + 33, + 3, + 32, + 1, + 32, + 2, + 54, + 2, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 0, + 32, + 1, + 65, + 168, + 192, + 193, + 0, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 8, + 32, + 0, + 40, + 2, + 8, + 16, + 76, + 0, + 11, + 32, + 1, + 65, + 0, + 54, + 2, + 4, + 32, + 1, + 32, + 2, + 54, + 2, + 0, + 32, + 1, + 65, + 148, + 192, + 193, + 0, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 8, + 32, + 0, + 40, + 2, + 8, + 16, + 76, + 0, + 11, + 137, + 1, + 2, + 3, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 5, + 36, + 0, + 32, + 5, + 32, + 1, + 40, + 2, + 24, + 34, + 6, + 32, + 2, + 32, + 3, + 16, + 72, + 65, + 1, + 33, + 4, + 32, + 5, + 41, + 2, + 4, + 33, + 7, + 2, + 64, + 2, + 64, + 32, + 5, + 40, + 2, + 0, + 65, + 1, + 71, + 4, + 64, + 32, + 6, + 32, + 7, + 167, + 34, + 4, + 32, + 6, + 40, + 2, + 20, + 106, + 54, + 2, + 20, + 32, + 4, + 32, + 3, + 75, + 13, + 2, + 32, + 1, + 32, + 2, + 32, + 4, + 16, + 141, + 1, + 32, + 0, + 32, + 4, + 54, + 2, + 4, + 65, + 0, + 33, + 4, + 12, + 1, + 11, + 32, + 0, + 32, + 7, + 55, + 2, + 4, + 11, + 32, + 0, + 32, + 4, + 54, + 2, + 0, + 32, + 5, + 65, + 16, + 106, + 36, + 0, + 15, + 11, + 32, + 4, + 32, + 3, + 65, + 252, + 137, + 192, + 0, + 16, + 99, + 0, + 11, + 141, + 1, + 2, + 4, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 0, + 36, + 0, + 32, + 0, + 65, + 8, + 106, + 65, + 19, + 16, + 103, + 32, + 0, + 40, + 2, + 12, + 33, + 3, + 32, + 0, + 40, + 2, + 8, + 34, + 2, + 65, + 225, + 145, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 32, + 2, + 65, + 15, + 106, + 65, + 240, + 145, + 192, + 0, + 40, + 0, + 0, + 54, + 0, + 0, + 32, + 2, + 65, + 8, + 106, + 65, + 233, + 145, + 192, + 0, + 41, + 0, + 0, + 55, + 0, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 1, + 65, + 19, + 54, + 2, + 8, + 32, + 1, + 32, + 2, + 54, + 2, + 0, + 32, + 1, + 32, + 3, + 54, + 2, + 4, + 65, + 11, + 32, + 1, + 65, + 248, + 145, + 192, + 0, + 16, + 107, + 32, + 0, + 65, + 16, + 106, + 36, + 0, + 11, + 136, + 1, + 1, + 1, + 127, + 65, + 204, + 153, + 5, + 65, + 1, + 16, + 149, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 204, + 153, + 5, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 32, + 1, + 65, + 0, + 65, + 204, + 153, + 5, + 16, + 131, + 1, + 33, + 1, + 32, + 0, + 65, + 0, + 58, + 0, + 55, + 32, + 0, + 65, + 0, + 59, + 0, + 53, + 32, + 0, + 65, + 144, + 32, + 54, + 2, + 0, + 32, + 0, + 66, + 0, + 55, + 2, + 4, + 32, + 0, + 65, + 12, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 0, + 66, + 0, + 55, + 2, + 28, + 32, + 0, + 65, + 20, + 106, + 66, + 128, + 128, + 128, + 128, + 16, + 55, + 2, + 0, + 32, + 0, + 65, + 36, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 0, + 65, + 44, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 32, + 1, + 54, + 2, + 48, + 32, + 0, + 65, + 0, + 58, + 0, + 52, + 11, + 113, + 0, + 2, + 127, + 32, + 2, + 65, + 2, + 116, + 34, + 1, + 32, + 3, + 65, + 3, + 116, + 65, + 128, + 128, + 1, + 106, + 34, + 2, + 32, + 1, + 32, + 2, + 75, + 27, + 65, + 135, + 128, + 4, + 106, + 34, + 1, + 65, + 16, + 118, + 64, + 0, + 34, + 2, + 65, + 127, + 70, + 4, + 64, + 65, + 0, + 33, + 3, + 65, + 1, + 12, + 1, + 11, + 32, + 2, + 65, + 16, + 116, + 34, + 3, + 66, + 0, + 55, + 3, + 0, + 32, + 3, + 65, + 0, + 54, + 2, + 8, + 32, + 3, + 32, + 3, + 32, + 1, + 65, + 128, + 128, + 124, + 113, + 106, + 65, + 2, + 114, + 54, + 2, + 0, + 65, + 0, + 11, + 33, + 2, + 32, + 0, + 32, + 3, + 54, + 2, + 4, + 32, + 0, + 32, + 2, + 54, + 2, + 0, + 11, + 127, + 1, + 1, + 127, + 35, + 0, + 65, + 64, + 106, + 34, + 5, + 36, + 0, + 32, + 5, + 32, + 1, + 54, + 2, + 12, + 32, + 5, + 32, + 0, + 54, + 2, + 8, + 32, + 5, + 32, + 3, + 54, + 2, + 20, + 32, + 5, + 32, + 2, + 54, + 2, + 16, + 32, + 5, + 65, + 44, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 5, + 65, + 60, + 106, + 65, + 194, + 0, + 54, + 2, + 0, + 32, + 5, + 66, + 2, + 55, + 2, + 28, + 32, + 5, + 65, + 160, + 197, + 193, + 0, + 54, + 2, + 24, + 32, + 5, + 65, + 62, + 54, + 2, + 52, + 32, + 5, + 32, + 5, + 65, + 48, + 106, + 54, + 2, + 40, + 32, + 5, + 32, + 5, + 65, + 16, + 106, + 54, + 2, + 56, + 32, + 5, + 32, + 5, + 65, + 8, + 106, + 54, + 2, + 48, + 32, + 5, + 65, + 24, + 106, + 32, + 4, + 16, + 130, + 1, + 0, + 11, + 113, + 1, + 3, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 32, + 0, + 32, + 1, + 16, + 56, + 13, + 0, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 33, + 3, + 32, + 1, + 40, + 2, + 24, + 32, + 2, + 65, + 28, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 2, + 65, + 228, + 196, + 193, + 0, + 54, + 2, + 24, + 32, + 2, + 66, + 1, + 55, + 2, + 12, + 32, + 2, + 65, + 232, + 196, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 32, + 2, + 65, + 8, + 106, + 16, + 31, + 13, + 0, + 32, + 0, + 65, + 4, + 106, + 32, + 1, + 16, + 56, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 15, + 11, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 65, + 1, + 11, + 119, + 1, + 2, + 127, + 32, + 0, + 45, + 0, + 4, + 33, + 1, + 32, + 0, + 45, + 0, + 5, + 4, + 64, + 32, + 1, + 65, + 255, + 1, + 113, + 33, + 2, + 32, + 0, + 2, + 127, + 65, + 1, + 32, + 2, + 13, + 0, + 26, + 32, + 0, + 40, + 2, + 0, + 34, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 33, + 2, + 32, + 1, + 40, + 2, + 24, + 33, + 0, + 32, + 1, + 45, + 0, + 0, + 65, + 4, + 113, + 4, + 64, + 32, + 0, + 65, + 234, + 198, + 193, + 0, + 65, + 1, + 32, + 2, + 17, + 1, + 0, + 12, + 1, + 11, + 32, + 0, + 65, + 235, + 198, + 193, + 0, + 65, + 2, + 32, + 2, + 17, + 1, + 0, + 11, + 34, + 1, + 58, + 0, + 4, + 11, + 32, + 1, + 65, + 255, + 1, + 113, + 65, + 0, + 71, + 11, + 101, + 0, + 2, + 64, + 32, + 0, + 32, + 1, + 107, + 32, + 2, + 73, + 4, + 64, + 32, + 1, + 65, + 127, + 106, + 33, + 1, + 32, + 0, + 65, + 127, + 106, + 33, + 0, + 3, + 64, + 32, + 0, + 32, + 2, + 106, + 32, + 1, + 32, + 2, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 0, + 11, + 12, + 1, + 11, + 32, + 2, + 69, + 13, + 0, + 3, + 64, + 32, + 0, + 32, + 1, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 0, + 65, + 1, + 106, + 33, + 0, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 0, + 11, + 11, + 11, + 77, + 1, + 1, + 127, + 65, + 130, + 130, + 10, + 65, + 2, + 16, + 149, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 130, + 130, + 10, + 65, + 2, + 16, + 165, + 1, + 0, + 11, + 32, + 1, + 65, + 0, + 65, + 130, + 130, + 10, + 16, + 131, + 1, + 33, + 1, + 32, + 0, + 66, + 0, + 55, + 2, + 12, + 32, + 0, + 32, + 1, + 54, + 2, + 8, + 32, + 0, + 65, + 20, + 106, + 66, + 0, + 55, + 2, + 0, + 32, + 0, + 66, + 135, + 128, + 128, + 128, + 48, + 55, + 2, + 0, + 11, + 109, + 1, + 1, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 54, + 2, + 4, + 32, + 3, + 32, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 28, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 44, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 3, + 66, + 2, + 55, + 2, + 12, + 32, + 3, + 65, + 244, + 197, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 65, + 61, + 54, + 2, + 36, + 32, + 3, + 32, + 3, + 65, + 32, + 106, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 54, + 2, + 40, + 32, + 3, + 32, + 3, + 65, + 4, + 106, + 54, + 2, + 32, + 32, + 3, + 65, + 8, + 106, + 32, + 2, + 16, + 130, + 1, + 0, + 11, + 109, + 1, + 1, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 54, + 2, + 4, + 32, + 3, + 32, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 28, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 44, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 3, + 66, + 2, + 55, + 2, + 12, + 32, + 3, + 65, + 196, + 202, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 65, + 61, + 54, + 2, + 36, + 32, + 3, + 32, + 3, + 65, + 32, + 106, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 65, + 4, + 106, + 54, + 2, + 40, + 32, + 3, + 32, + 3, + 54, + 2, + 32, + 32, + 3, + 65, + 8, + 106, + 32, + 2, + 16, + 130, + 1, + 0, + 11, + 109, + 1, + 1, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 54, + 2, + 4, + 32, + 3, + 32, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 28, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 44, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 3, + 66, + 2, + 55, + 2, + 12, + 32, + 3, + 65, + 248, + 202, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 65, + 61, + 54, + 2, + 36, + 32, + 3, + 32, + 3, + 65, + 32, + 106, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 65, + 4, + 106, + 54, + 2, + 40, + 32, + 3, + 32, + 3, + 54, + 2, + 32, + 32, + 3, + 65, + 8, + 106, + 32, + 2, + 16, + 130, + 1, + 0, + 11, + 109, + 1, + 1, + 127, + 35, + 0, + 65, + 48, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 32, + 1, + 54, + 2, + 4, + 32, + 3, + 32, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 28, + 106, + 65, + 2, + 54, + 2, + 0, + 32, + 3, + 65, + 44, + 106, + 65, + 61, + 54, + 2, + 0, + 32, + 3, + 66, + 2, + 55, + 2, + 12, + 32, + 3, + 65, + 164, + 202, + 193, + 0, + 54, + 2, + 8, + 32, + 3, + 65, + 61, + 54, + 2, + 36, + 32, + 3, + 32, + 3, + 65, + 32, + 106, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 65, + 4, + 106, + 54, + 2, + 40, + 32, + 3, + 32, + 3, + 54, + 2, + 32, + 32, + 3, + 65, + 8, + 106, + 32, + 2, + 16, + 130, + 1, + 0, + 11, + 86, + 1, + 2, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 33, + 3, + 32, + 0, + 40, + 2, + 24, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 3, + 32, + 2, + 65, + 8, + 106, + 16, + 31, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 70, + 1, + 1, + 127, + 2, + 64, + 32, + 1, + 65, + 127, + 74, + 4, + 64, + 2, + 64, + 32, + 1, + 69, + 4, + 64, + 65, + 1, + 33, + 2, + 12, + 1, + 11, + 32, + 1, + 65, + 1, + 16, + 149, + 1, + 34, + 2, + 13, + 0, + 12, + 2, + 11, + 32, + 0, + 32, + 1, + 54, + 2, + 4, + 32, + 0, + 32, + 2, + 54, + 2, + 0, + 15, + 11, + 16, + 158, + 1, + 0, + 11, + 32, + 1, + 65, + 1, + 16, + 165, + 1, + 0, + 11, + 89, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 0, + 40, + 2, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 4, + 106, + 65, + 172, + 188, + 193, + 0, + 32, + 2, + 65, + 8, + 106, + 16, + 31, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 89, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 0, + 40, + 2, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 4, + 106, + 65, + 196, + 194, + 193, + 0, + 32, + 2, + 65, + 8, + 106, + 16, + 31, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 89, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 0, + 40, + 2, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 4, + 106, + 65, + 236, + 200, + 193, + 0, + 32, + 2, + 65, + 8, + 106, + 16, + 31, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 97, + 1, + 2, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 4, + 36, + 0, + 65, + 12, + 65, + 4, + 16, + 149, + 1, + 34, + 3, + 69, + 4, + 64, + 65, + 12, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 3, + 32, + 0, + 58, + 0, + 8, + 32, + 3, + 32, + 2, + 54, + 2, + 4, + 32, + 3, + 32, + 1, + 54, + 2, + 0, + 32, + 3, + 32, + 4, + 47, + 0, + 13, + 59, + 0, + 9, + 32, + 3, + 65, + 11, + 106, + 32, + 4, + 65, + 15, + 106, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 4, + 65, + 16, + 106, + 36, + 0, + 32, + 3, + 173, + 66, + 32, + 134, + 66, + 2, + 132, + 11, + 86, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 24, + 106, + 32, + 1, + 65, + 16, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 65, + 16, + 106, + 32, + 1, + 65, + 8, + 106, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 2, + 32, + 1, + 41, + 2, + 0, + 55, + 3, + 8, + 32, + 2, + 65, + 4, + 106, + 65, + 236, + 200, + 193, + 0, + 32, + 2, + 65, + 8, + 106, + 16, + 31, + 32, + 2, + 65, + 32, + 106, + 36, + 0, + 11, + 95, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 34, + 0, + 40, + 2, + 0, + 65, + 1, + 70, + 4, + 64, + 32, + 2, + 32, + 1, + 65, + 220, + 143, + 192, + 0, + 65, + 4, + 16, + 127, + 32, + 2, + 32, + 0, + 65, + 4, + 106, + 54, + 2, + 12, + 32, + 2, + 32, + 2, + 65, + 12, + 106, + 65, + 228, + 143, + 192, + 0, + 16, + 63, + 12, + 1, + 11, + 32, + 2, + 32, + 1, + 65, + 224, + 143, + 192, + 0, + 65, + 4, + 16, + 127, + 11, + 32, + 2, + 16, + 86, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 76, + 2, + 1, + 127, + 1, + 126, + 32, + 1, + 65, + 8, + 106, + 34, + 6, + 41, + 3, + 0, + 33, + 7, + 32, + 0, + 32, + 1, + 32, + 2, + 32, + 3, + 32, + 4, + 65, + 8, + 106, + 34, + 1, + 40, + 2, + 0, + 34, + 0, + 32, + 4, + 40, + 2, + 0, + 106, + 32, + 4, + 65, + 4, + 106, + 40, + 2, + 0, + 32, + 0, + 107, + 32, + 5, + 16, + 55, + 32, + 1, + 32, + 0, + 32, + 6, + 41, + 3, + 0, + 32, + 7, + 125, + 167, + 106, + 54, + 2, + 0, + 11, + 74, + 0, + 2, + 127, + 32, + 1, + 65, + 128, + 128, + 196, + 0, + 71, + 4, + 64, + 65, + 1, + 32, + 0, + 40, + 2, + 24, + 32, + 1, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 16, + 17, + 0, + 0, + 13, + 1, + 26, + 11, + 32, + 2, + 69, + 4, + 64, + 65, + 0, + 15, + 11, + 32, + 0, + 40, + 2, + 24, + 32, + 2, + 32, + 3, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 11, + 11, + 57, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 0, + 40, + 2, + 0, + 33, + 0, + 32, + 2, + 32, + 1, + 16, + 137, + 1, + 55, + 3, + 0, + 32, + 2, + 32, + 0, + 54, + 2, + 12, + 32, + 2, + 32, + 2, + 65, + 12, + 106, + 16, + 46, + 32, + 2, + 16, + 95, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 86, + 1, + 1, + 127, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 244, + 213, + 2, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 1, + 65, + 232, + 213, + 0, + 106, + 65, + 0, + 65, + 136, + 128, + 2, + 16, + 131, + 1, + 26, + 32, + 1, + 65, + 0, + 65, + 230, + 213, + 0, + 16, + 131, + 1, + 34, + 1, + 65, + 1, + 58, + 0, + 243, + 213, + 2, + 32, + 1, + 65, + 1, + 59, + 1, + 240, + 213, + 2, + 32, + 1, + 32, + 0, + 58, + 0, + 242, + 213, + 2, + 32, + 1, + 11, + 72, + 1, + 1, + 127, + 35, + 0, + 65, + 32, + 107, + 34, + 3, + 36, + 0, + 32, + 3, + 65, + 20, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 3, + 65, + 228, + 196, + 193, + 0, + 54, + 2, + 16, + 32, + 3, + 66, + 1, + 55, + 2, + 4, + 32, + 3, + 32, + 1, + 54, + 2, + 28, + 32, + 3, + 32, + 0, + 54, + 2, + 24, + 32, + 3, + 32, + 3, + 65, + 24, + 106, + 54, + 2, + 0, + 32, + 3, + 32, + 2, + 16, + 130, + 1, + 0, + 11, + 64, + 0, + 35, + 0, + 65, + 32, + 107, + 34, + 0, + 36, + 0, + 32, + 0, + 65, + 28, + 106, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 220, + 139, + 192, + 0, + 54, + 2, + 24, + 32, + 0, + 66, + 1, + 55, + 2, + 12, + 32, + 0, + 65, + 212, + 139, + 192, + 0, + 54, + 2, + 8, + 32, + 1, + 32, + 0, + 65, + 8, + 106, + 16, + 102, + 32, + 0, + 65, + 32, + 106, + 36, + 0, + 11, + 58, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 1, + 65, + 248, + 140, + 192, + 0, + 65, + 15, + 16, + 127, + 32, + 2, + 32, + 0, + 54, + 2, + 12, + 32, + 2, + 32, + 2, + 65, + 12, + 106, + 65, + 136, + 141, + 192, + 0, + 16, + 63, + 32, + 2, + 16, + 86, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 58, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 1, + 65, + 152, + 141, + 192, + 0, + 65, + 13, + 16, + 127, + 32, + 2, + 32, + 0, + 54, + 2, + 12, + 32, + 2, + 32, + 2, + 65, + 12, + 106, + 65, + 168, + 141, + 192, + 0, + 16, + 63, + 32, + 2, + 16, + 86, + 32, + 2, + 65, + 16, + 106, + 36, + 0, + 11, + 70, + 1, + 2, + 127, + 32, + 1, + 40, + 2, + 4, + 33, + 2, + 32, + 1, + 40, + 2, + 0, + 33, + 3, + 65, + 8, + 65, + 4, + 16, + 149, + 1, + 34, + 1, + 69, + 4, + 64, + 65, + 8, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 1, + 32, + 2, + 54, + 2, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 0, + 32, + 0, + 65, + 204, + 192, + 193, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 11, + 59, + 1, + 1, + 127, + 2, + 127, + 32, + 1, + 65, + 4, + 75, + 4, + 64, + 65, + 240, + 177, + 127, + 33, + 2, + 65, + 1, + 12, + 1, + 11, + 32, + 1, + 65, + 2, + 116, + 65, + 144, + 187, + 192, + 0, + 106, + 40, + 2, + 0, + 33, + 2, + 65, + 0, + 11, + 33, + 1, + 32, + 0, + 32, + 2, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 11, + 92, + 1, + 3, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 0, + 40, + 2, + 12, + 34, + 2, + 69, + 4, + 64, + 65, + 212, + 188, + 193, + 0, + 65, + 43, + 65, + 244, + 191, + 193, + 0, + 16, + 114, + 0, + 11, + 32, + 0, + 40, + 2, + 8, + 34, + 3, + 69, + 4, + 64, + 65, + 212, + 188, + 193, + 0, + 65, + 43, + 65, + 132, + 192, + 193, + 0, + 16, + 114, + 0, + 11, + 32, + 1, + 32, + 2, + 54, + 2, + 8, + 32, + 1, + 32, + 0, + 54, + 2, + 4, + 32, + 1, + 32, + 3, + 54, + 2, + 0, + 32, + 1, + 16, + 129, + 1, + 0, + 11, + 51, + 1, + 1, + 127, + 32, + 2, + 4, + 64, + 32, + 0, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 45, + 0, + 0, + 58, + 0, + 0, + 32, + 1, + 65, + 1, + 106, + 33, + 1, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 0, + 11, + 11, + 32, + 0, + 11, + 58, + 0, + 32, + 0, + 40, + 2, + 0, + 33, + 0, + 32, + 1, + 45, + 0, + 0, + 65, + 16, + 113, + 65, + 4, + 118, + 4, + 64, + 32, + 0, + 32, + 1, + 16, + 83, + 15, + 11, + 32, + 1, + 45, + 0, + 0, + 65, + 32, + 113, + 65, + 5, + 118, + 4, + 64, + 32, + 0, + 32, + 1, + 16, + 84, + 15, + 11, + 32, + 0, + 32, + 1, + 16, + 160, + 1, + 11, + 42, + 1, + 1, + 127, + 32, + 2, + 65, + 1, + 16, + 48, + 34, + 3, + 4, + 64, + 32, + 3, + 32, + 0, + 32, + 2, + 32, + 1, + 32, + 1, + 32, + 2, + 75, + 27, + 16, + 121, + 26, + 32, + 0, + 32, + 1, + 65, + 1, + 16, + 24, + 11, + 32, + 3, + 11, + 67, + 2, + 1, + 127, + 1, + 126, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 1, + 65, + 0, + 54, + 2, + 8, + 32, + 1, + 66, + 0, + 55, + 3, + 0, + 32, + 1, + 41, + 3, + 0, + 33, + 2, + 32, + 0, + 32, + 1, + 40, + 2, + 8, + 54, + 2, + 8, + 32, + 0, + 32, + 2, + 55, + 3, + 0, + 32, + 0, + 65, + 0, + 54, + 2, + 16, + 32, + 1, + 65, + 16, + 106, + 36, + 0, + 11, + 45, + 0, + 2, + 64, + 32, + 0, + 65, + 124, + 77, + 4, + 64, + 32, + 0, + 69, + 4, + 64, + 65, + 4, + 33, + 0, + 12, + 2, + 11, + 32, + 0, + 32, + 0, + 65, + 125, + 73, + 65, + 2, + 116, + 16, + 149, + 1, + 34, + 0, + 13, + 1, + 11, + 0, + 11, + 32, + 0, + 11, + 50, + 1, + 1, + 127, + 16, + 59, + 34, + 3, + 32, + 2, + 65, + 1, + 115, + 32, + 1, + 65, + 1, + 32, + 1, + 65, + 128, + 2, + 73, + 27, + 16, + 85, + 32, + 0, + 66, + 0, + 55, + 3, + 0, + 32, + 0, + 32, + 3, + 54, + 2, + 16, + 32, + 0, + 65, + 8, + 106, + 66, + 0, + 55, + 3, + 0, + 11, + 52, + 0, + 32, + 0, + 32, + 1, + 40, + 2, + 24, + 32, + 2, + 32, + 3, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 58, + 0, + 8, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 32, + 0, + 32, + 3, + 69, + 58, + 0, + 9, + 32, + 0, + 65, + 0, + 54, + 2, + 4, + 11, + 50, + 1, + 1, + 127, + 65, + 8, + 65, + 4, + 16, + 149, + 1, + 34, + 2, + 69, + 4, + 64, + 65, + 8, + 65, + 4, + 16, + 165, + 1, + 0, + 11, + 32, + 2, + 32, + 1, + 54, + 2, + 4, + 32, + 2, + 32, + 0, + 54, + 2, + 0, + 65, + 16, + 32, + 2, + 65, + 180, + 143, + 192, + 0, + 16, + 107, + 11, + 44, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 1, + 36, + 0, + 32, + 1, + 65, + 8, + 106, + 32, + 0, + 65, + 8, + 106, + 40, + 2, + 0, + 54, + 2, + 0, + 32, + 1, + 32, + 0, + 41, + 2, + 0, + 55, + 3, + 0, + 32, + 1, + 16, + 88, + 0, + 11, + 52, + 1, + 1, + 127, + 35, + 0, + 65, + 16, + 107, + 34, + 2, + 36, + 0, + 32, + 2, + 32, + 1, + 54, + 2, + 12, + 32, + 2, + 32, + 0, + 54, + 2, + 8, + 32, + 2, + 65, + 176, + 197, + 193, + 0, + 54, + 2, + 4, + 32, + 2, + 65, + 228, + 196, + 193, + 0, + 54, + 2, + 0, + 32, + 2, + 16, + 120, + 0, + 11, + 41, + 1, + 1, + 127, + 32, + 2, + 4, + 64, + 32, + 0, + 33, + 3, + 3, + 64, + 32, + 3, + 32, + 1, + 58, + 0, + 0, + 32, + 3, + 65, + 1, + 106, + 33, + 3, + 32, + 2, + 65, + 127, + 106, + 34, + 2, + 13, + 0, + 11, + 11, + 32, + 0, + 11, + 37, + 1, + 1, + 126, + 32, + 0, + 40, + 2, + 0, + 34, + 0, + 172, + 34, + 2, + 32, + 2, + 66, + 63, + 135, + 34, + 2, + 124, + 32, + 2, + 133, + 32, + 0, + 65, + 127, + 115, + 65, + 31, + 118, + 32, + 1, + 16, + 52, + 11, + 51, + 1, + 1, + 127, + 65, + 16, + 33, + 1, + 2, + 64, + 2, + 64, + 2, + 64, + 32, + 0, + 45, + 0, + 0, + 65, + 1, + 107, + 14, + 2, + 0, + 1, + 2, + 11, + 32, + 0, + 45, + 0, + 1, + 15, + 11, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 45, + 0, + 8, + 33, + 1, + 11, + 32, + 1, + 11, + 39, + 1, + 1, + 127, + 2, + 64, + 32, + 0, + 40, + 2, + 0, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 0, + 69, + 13, + 0, + 32, + 1, + 32, + 0, + 65, + 1, + 16, + 156, + 1, + 11, + 11, + 39, + 1, + 1, + 127, + 2, + 64, + 32, + 0, + 40, + 2, + 4, + 34, + 1, + 69, + 13, + 0, + 32, + 0, + 65, + 8, + 106, + 40, + 2, + 0, + 34, + 0, + 69, + 13, + 0, + 32, + 1, + 32, + 0, + 65, + 1, + 16, + 156, + 1, + 11, + 11, + 35, + 0, + 32, + 1, + 65, + 1, + 115, + 16, + 113, + 33, + 1, + 32, + 0, + 66, + 0, + 55, + 3, + 0, + 32, + 0, + 32, + 1, + 54, + 2, + 16, + 32, + 0, + 65, + 8, + 106, + 66, + 0, + 55, + 3, + 0, + 11, + 41, + 0, + 32, + 0, + 173, + 66, + 128, + 128, + 128, + 128, + 16, + 66, + 0, + 32, + 0, + 40, + 2, + 24, + 65, + 196, + 140, + 192, + 0, + 65, + 20, + 32, + 0, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 27, + 132, + 11, + 37, + 0, + 32, + 0, + 65, + 0, + 58, + 0, + 32, + 32, + 0, + 65, + 0, + 54, + 2, + 20, + 32, + 0, + 65, + 0, + 54, + 2, + 12, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 32, + 0, + 65, + 0, + 54, + 2, + 28, + 11, + 27, + 1, + 1, + 127, + 32, + 0, + 65, + 1, + 16, + 48, + 34, + 1, + 4, + 64, + 32, + 1, + 65, + 0, + 32, + 0, + 16, + 131, + 1, + 26, + 11, + 32, + 1, + 11, + 29, + 1, + 1, + 127, + 32, + 0, + 65, + 4, + 106, + 40, + 2, + 0, + 34, + 1, + 4, + 64, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 65, + 1, + 16, + 156, + 1, + 11, + 11, + 40, + 0, + 32, + 0, + 32, + 0, + 40, + 2, + 16, + 32, + 2, + 106, + 54, + 2, + 16, + 32, + 0, + 32, + 0, + 41, + 3, + 0, + 32, + 2, + 173, + 124, + 55, + 3, + 0, + 32, + 0, + 65, + 8, + 106, + 32, + 1, + 32, + 2, + 16, + 8, + 11, + 28, + 0, + 32, + 1, + 40, + 2, + 24, + 65, + 208, + 216, + 193, + 0, + 65, + 5, + 32, + 1, + 65, + 28, + 106, + 40, + 2, + 0, + 40, + 2, + 12, + 17, + 1, + 0, + 11, + 10, + 0, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 123, + 11, + 16, + 0, + 32, + 1, + 4, + 64, + 32, + 0, + 32, + 1, + 65, + 4, + 16, + 156, + 1, + 11, + 11, + 18, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 32, + 1, + 32, + 2, + 106, + 16, + 66, + 65, + 0, + 11, + 22, + 0, + 32, + 0, + 32, + 1, + 40, + 2, + 8, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 40, + 2, + 0, + 54, + 2, + 0, + 11, + 16, + 0, + 32, + 0, + 41, + 3, + 0, + 26, + 32, + 0, + 65, + 8, + 106, + 40, + 2, + 0, + 11, + 20, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 32, + 0, + 40, + 2, + 4, + 40, + 2, + 12, + 17, + 0, + 0, + 11, + 8, + 0, + 32, + 0, + 32, + 1, + 16, + 48, + 11, + 19, + 0, + 32, + 0, + 65, + 40, + 54, + 2, + 4, + 32, + 0, + 65, + 212, + 138, + 192, + 0, + 54, + 2, + 0, + 11, + 17, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 4, + 32, + 1, + 16, + 166, + 1, + 11, + 17, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 8, + 32, + 1, + 16, + 166, + 1, + 11, + 16, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 8, + 32, + 1, + 16, + 15, + 11, + 19, + 0, + 32, + 0, + 65, + 204, + 192, + 193, + 0, + 54, + 2, + 4, + 32, + 0, + 32, + 1, + 54, + 2, + 0, + 11, + 16, + 0, + 32, + 1, + 32, + 0, + 40, + 2, + 0, + 32, + 0, + 40, + 2, + 4, + 16, + 14, + 11, + 10, + 0, + 32, + 0, + 32, + 1, + 32, + 2, + 16, + 24, + 11, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 16, + 37, + 65, + 0, + 11, + 17, + 0, + 65, + 192, + 196, + 193, + 0, + 65, + 17, + 65, + 212, + 196, + 193, + 0, + 16, + 114, + 0, + 11, + 14, + 0, + 32, + 0, + 40, + 2, + 0, + 26, + 3, + 64, + 12, + 0, + 11, + 0, + 11, + 13, + 0, + 32, + 0, + 53, + 2, + 0, + 65, + 1, + 32, + 1, + 16, + 52, + 11, + 13, + 0, + 32, + 0, + 40, + 2, + 0, + 32, + 1, + 32, + 2, + 16, + 39, + 11, + 11, + 0, + 32, + 0, + 35, + 0, + 106, + 36, + 0, + 35, + 0, + 11, + 10, + 0, + 32, + 0, + 65, + 8, + 106, + 41, + 3, + 0, + 11, + 13, + 0, + 32, + 1, + 65, + 244, + 145, + 192, + 0, + 65, + 2, + 16, + 14, + 11, + 25, + 0, + 32, + 0, + 32, + 1, + 65, + 172, + 231, + 193, + 0, + 40, + 2, + 0, + 34, + 0, + 65, + 42, + 32, + 0, + 27, + 17, + 4, + 0, + 0, + 11, + 10, + 0, + 32, + 2, + 32, + 0, + 32, + 1, + 16, + 14, + 11, + 9, + 0, + 32, + 0, + 65, + 0, + 54, + 2, + 0, + 11, + 7, + 0, + 32, + 0, + 16, + 1, + 0, + 11, + 13, + 0, + 66, + 250, + 227, + 222, + 178, + 168, + 237, + 139, + 221, + 137, + 127, + 11, + 4, + 0, + 65, + 0, + 11, + 5, + 0, + 65, + 128, + 4, + 11, + 4, + 0, + 65, + 1, + 11, + 4, + 0, + 32, + 1, + 11, + 13, + 0, + 66, + 149, + 151, + 213, + 166, + 240, + 201, + 145, + 211, + 198, + 0, + 11, + 13, + 0, + 66, + 244, + 249, + 158, + 230, + 238, + 163, + 170, + 249, + 254, + 0, + 11, + 13, + 0, + 66, + 225, + 246, + 196, + 237, + 133, + 189, + 222, + 249, + 138, + 127, + 11, + 12, + 0, + 66, + 161, + 180, + 233, + 183, + 247, + 251, + 205, + 222, + 8, + 11, + 3, + 0, + 1, + 11, + 3, + 0, + 1, + 11, + 11, + 140, + 223, + 1, + 3, + 0, + 65, + 128, + 128, + 192, + 0, + 11, + 246, + 30, + 47, + 114, + 117, + 115, + 116, + 99, + 47, + 50, + 102, + 100, + 55, + 51, + 102, + 97, + 98, + 101, + 52, + 54, + 57, + 51, + 53, + 55, + 97, + 49, + 50, + 99, + 50, + 99, + 57, + 55, + 52, + 99, + 49, + 52, + 48, + 102, + 54, + 55, + 101, + 55, + 99, + 100, + 100, + 55, + 54, + 100, + 48, + 47, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 115, + 116, + 100, + 47, + 115, + 114, + 99, + 47, + 105, + 111, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 0, + 0, + 0, + 16, + 0, + 73, + 0, + 0, + 0, + 158, + 5, + 0, + 0, + 33, + 0, + 0, + 0, + 102, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 119, + 114, + 105, + 116, + 101, + 32, + 119, + 104, + 111, + 108, + 101, + 32, + 98, + 117, + 102, + 102, + 101, + 114, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 50, + 48, + 92, + 115, + 114, + 99, + 92, + 103, + 122, + 92, + 119, + 114, + 105, + 116, + 101, + 46, + 114, + 115, + 120, + 0, + 16, + 0, + 92, + 0, + 0, + 0, + 112, + 0, + 0, + 0, + 34, + 0, + 0, + 0, + 120, + 0, + 16, + 0, + 92, + 0, + 0, + 0, + 119, + 1, + 0, + 0, + 44, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 96, + 40, + 108, + 101, + 102, + 116, + 32, + 61, + 61, + 32, + 114, + 105, + 103, + 104, + 116, + 41, + 96, + 10, + 32, + 32, + 108, + 101, + 102, + 116, + 58, + 32, + 96, + 96, + 44, + 10, + 32, + 114, + 105, + 103, + 104, + 116, + 58, + 32, + 96, + 96, + 0, + 0, + 248, + 0, + 16, + 0, + 45, + 0, + 0, + 0, + 37, + 1, + 16, + 0, + 12, + 0, + 0, + 0, + 49, + 1, + 16, + 0, + 1, + 0, + 0, + 0, + 120, + 0, + 16, + 0, + 92, + 0, + 0, + 0, + 147, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 120, + 0, + 16, + 0, + 92, + 0, + 0, + 0, + 150, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 79, + 112, + 116, + 105, + 111, + 110, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 32, + 96, + 78, + 111, + 110, + 101, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 50, + 48, + 92, + 115, + 114, + 99, + 92, + 122, + 105, + 111, + 46, + 114, + 115, + 0, + 0, + 151, + 1, + 16, + 0, + 87, + 0, + 0, + 0, + 198, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 99, + 111, + 114, + 114, + 117, + 112, + 116, + 32, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 0, + 0, + 151, + 1, + 16, + 0, + 87, + 0, + 0, + 0, + 244, + 0, + 0, + 0, + 39, + 0, + 0, + 0, + 151, + 1, + 16, + 0, + 87, + 0, + 0, + 0, + 190, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 151, + 1, + 16, + 0, + 87, + 0, + 0, + 0, + 186, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 5, + 0, + 0, + 0, + 6, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 7, + 0, + 0, + 0, + 8, + 0, + 0, + 0, + 58, + 32, + 0, + 0, + 112, + 2, + 16, + 0, + 0, + 0, + 0, + 0, + 112, + 2, + 16, + 0, + 2, + 0, + 0, + 0, + 47, + 114, + 117, + 115, + 116, + 99, + 47, + 50, + 102, + 100, + 55, + 51, + 102, + 97, + 98, + 101, + 52, + 54, + 57, + 51, + 53, + 55, + 97, + 49, + 50, + 99, + 50, + 99, + 57, + 55, + 52, + 99, + 49, + 52, + 48, + 102, + 54, + 55, + 101, + 55, + 99, + 100, + 100, + 55, + 54, + 100, + 48, + 47, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 97, + 108, + 108, + 111, + 99, + 47, + 115, + 114, + 99, + 47, + 118, + 101, + 99, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 132, + 2, + 16, + 0, + 76, + 0, + 0, + 0, + 64, + 6, + 0, + 0, + 42, + 0, + 0, + 0, + 47, + 114, + 117, + 115, + 116, + 99, + 47, + 50, + 102, + 100, + 55, + 51, + 102, + 97, + 98, + 101, + 52, + 54, + 57, + 51, + 53, + 55, + 97, + 49, + 50, + 99, + 50, + 99, + 57, + 55, + 52, + 99, + 49, + 52, + 48, + 102, + 54, + 55, + 101, + 55, + 99, + 100, + 100, + 55, + 54, + 100, + 48, + 47, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 115, + 116, + 100, + 47, + 115, + 114, + 99, + 47, + 105, + 111, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 0, + 224, + 2, + 16, + 0, + 73, + 0, + 0, + 0, + 158, + 5, + 0, + 0, + 33, + 0, + 0, + 0, + 102, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 119, + 114, + 105, + 116, + 101, + 32, + 119, + 104, + 111, + 108, + 101, + 32, + 98, + 117, + 102, + 102, + 101, + 114, + 47, + 114, + 117, + 115, + 116, + 99, + 47, + 50, + 102, + 100, + 55, + 51, + 102, + 97, + 98, + 101, + 52, + 54, + 57, + 51, + 53, + 55, + 97, + 49, + 50, + 99, + 50, + 99, + 57, + 55, + 52, + 99, + 49, + 52, + 48, + 102, + 54, + 55, + 101, + 55, + 99, + 100, + 100, + 55, + 54, + 100, + 48, + 47, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 115, + 116, + 100, + 47, + 115, + 114, + 99, + 47, + 105, + 111, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 0, + 88, + 3, + 16, + 0, + 73, + 0, + 0, + 0, + 158, + 5, + 0, + 0, + 33, + 0, + 0, + 0, + 102, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 119, + 114, + 105, + 116, + 101, + 32, + 119, + 104, + 111, + 108, + 101, + 32, + 98, + 117, + 102, + 102, + 101, + 114, + 47, + 114, + 117, + 115, + 116, + 99, + 47, + 50, + 102, + 100, + 55, + 51, + 102, + 97, + 98, + 101, + 52, + 54, + 57, + 51, + 53, + 55, + 97, + 49, + 50, + 99, + 50, + 99, + 57, + 55, + 52, + 99, + 49, + 52, + 48, + 102, + 54, + 55, + 101, + 55, + 99, + 100, + 100, + 55, + 54, + 100, + 48, + 47, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 115, + 116, + 100, + 47, + 115, + 114, + 99, + 47, + 105, + 111, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 0, + 208, + 3, + 16, + 0, + 73, + 0, + 0, + 0, + 169, + 1, + 0, + 0, + 28, + 0, + 0, + 0, + 102, + 97, + 105, + 108, + 101, + 100, + 32, + 116, + 111, + 32, + 102, + 105, + 108, + 108, + 32, + 119, + 104, + 111, + 108, + 101, + 32, + 98, + 117, + 102, + 102, + 101, + 114, + 47, + 114, + 117, + 115, + 116, + 99, + 47, + 50, + 102, + 100, + 55, + 51, + 102, + 97, + 98, + 101, + 52, + 54, + 57, + 51, + 53, + 55, + 97, + 49, + 50, + 99, + 50, + 99, + 57, + 55, + 52, + 99, + 49, + 52, + 48, + 102, + 54, + 55, + 101, + 55, + 99, + 100, + 100, + 55, + 54, + 100, + 48, + 47, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 115, + 116, + 100, + 47, + 115, + 114, + 99, + 47, + 105, + 111, + 47, + 105, + 109, + 112, + 108, + 115, + 46, + 114, + 115, + 0, + 0, + 71, + 4, + 16, + 0, + 75, + 0, + 0, + 0, + 230, + 0, + 0, + 0, + 13, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 50, + 48, + 92, + 115, + 114, + 99, + 92, + 99, + 114, + 99, + 46, + 114, + 115, + 0, + 164, + 4, + 16, + 0, + 87, + 0, + 0, + 0, + 105, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 11, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 13, + 0, + 0, + 0, + 14, + 0, + 0, + 0, + 11, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 15, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 17, + 0, + 0, + 0, + 18, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 13, + 0, + 0, + 0, + 14, + 0, + 0, + 0, + 100, + 101, + 115, + 99, + 114, + 105, + 112, + 116, + 105, + 111, + 110, + 40, + 41, + 32, + 105, + 115, + 32, + 100, + 101, + 112, + 114, + 101, + 99, + 97, + 116, + 101, + 100, + 59, + 32, + 117, + 115, + 101, + 32, + 68, + 105, + 115, + 112, + 108, + 97, + 121, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 82, + 101, + 115, + 117, + 108, + 116, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 110, + 32, + 96, + 69, + 114, + 114, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 0, + 19, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 20, + 0, + 0, + 0, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 32, + 100, + 101, + 99, + 111, + 109, + 112, + 114, + 101, + 115, + 115, + 105, + 111, + 110, + 32, + 101, + 114, + 114, + 111, + 114, + 0, + 184, + 5, + 16, + 0, + 27, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 50, + 48, + 92, + 115, + 114, + 99, + 92, + 122, + 105, + 111, + 46, + 114, + 115, + 0, + 220, + 5, + 16, + 0, + 87, + 0, + 0, + 0, + 54, + 0, + 0, + 0, + 52, + 0, + 0, + 0, + 68, + 101, + 99, + 111, + 109, + 112, + 114, + 101, + 115, + 115, + 69, + 114, + 114, + 111, + 114, + 73, + 110, + 110, + 101, + 114, + 110, + 101, + 101, + 100, + 115, + 95, + 100, + 105, + 99, + 116, + 105, + 111, + 110, + 97, + 114, + 121, + 19, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 21, + 0, + 0, + 0, + 68, + 101, + 99, + 111, + 109, + 112, + 114, + 101, + 115, + 115, + 69, + 114, + 114, + 111, + 114, + 0, + 19, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 22, + 0, + 0, + 0, + 67, + 111, + 109, + 112, + 114, + 101, + 115, + 115, + 69, + 114, + 114, + 111, + 114, + 0, + 0, + 0, + 19, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 23, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 50, + 48, + 92, + 115, + 114, + 99, + 92, + 103, + 122, + 92, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 230, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 231, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 232, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 233, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 234, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 235, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 236, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 237, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 238, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 184, + 6, + 16, + 0, + 90, + 0, + 0, + 0, + 250, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 24, + 0, + 0, + 0, + 8, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 27, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 29, + 0, + 0, + 0, + 30, + 0, + 0, + 0, + 83, + 111, + 109, + 101, + 78, + 111, + 110, + 101, + 31, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 82, + 101, + 115, + 117, + 108, + 116, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 110, + 32, + 96, + 69, + 114, + 114, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 0, + 33, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 34, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 102, + 108, + 97, + 116, + 101, + 50, + 45, + 49, + 46, + 48, + 46, + 50, + 48, + 92, + 115, + 114, + 99, + 92, + 102, + 102, + 105, + 92, + 114, + 117, + 115, + 116, + 46, + 114, + 115, + 48, + 8, + 16, + 0, + 92, + 0, + 0, + 0, + 60, + 0, + 0, + 0, + 48, + 0, + 0, + 0, + 48, + 8, + 16, + 0, + 92, + 0, + 0, + 0, + 138, + 0, + 0, + 0, + 48, + 0, + 0, + 0, + 99, + 111, + 114, + 114, + 117, + 112, + 116, + 32, + 103, + 122, + 105, + 112, + 32, + 115, + 116, + 114, + 101, + 97, + 109, + 32, + 100, + 111, + 101, + 115, + 32, + 110, + 111, + 116, + 32, + 104, + 97, + 118, + 101, + 32, + 97, + 32, + 109, + 97, + 116, + 99, + 104, + 105, + 110, + 103, + 32, + 99, + 104, + 101, + 99, + 107, + 115, + 117, + 109, + 105, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 103, + 122, + 105, + 112, + 32, + 104, + 101, + 97, + 100, + 101, + 114, + 40, + 41, + 0, + 0, + 35, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 36, + 0, + 0, + 0, + 37, + 0, + 0, + 0, + 38, + 0, + 0, + 0, + 6, + 0, + 0, + 0, + 36, + 0, + 0, + 0, + 7, + 0, + 0, + 0, + 8, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 52, + 92, + 115, + 114, + 99, + 92, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 92, + 99, + 111, + 114, + 101, + 46, + 114, + 115, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 134, + 1, + 0, + 0, + 5, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 134, + 1, + 0, + 0, + 27, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 15, + 2, + 0, + 0, + 49, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 41, + 2, + 0, + 0, + 19, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 42, + 2, + 0, + 0, + 35, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 73, + 2, + 0, + 0, + 22, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 98, + 105, + 116, + 115, + 32, + 60, + 61, + 32, + 40, + 40, + 49, + 117, + 51, + 50, + 32, + 60, + 60, + 32, + 108, + 101, + 110, + 41, + 32, + 45, + 32, + 49, + 117, + 51, + 50, + 41, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 155, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 159, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 212, + 2, + 0, + 0, + 30, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 93, + 3, + 0, + 0, + 27, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 98, + 3, + 0, + 0, + 17, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 117, + 3, + 0, + 0, + 40, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 118, + 3, + 0, + 0, + 45, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 118, + 3, + 0, + 0, + 25, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 122, + 3, + 0, + 0, + 25, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 126, + 3, + 0, + 0, + 55, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 127, + 3, + 0, + 0, + 45, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 127, + 3, + 0, + 0, + 76, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 131, + 3, + 0, + 0, + 45, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 136, + 3, + 0, + 0, + 17, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 138, + 3, + 0, + 0, + 49, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 138, + 3, + 0, + 0, + 41, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 147, + 3, + 0, + 0, + 43, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 152, + 3, + 0, + 0, + 25, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 179, + 3, + 0, + 0, + 20, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 181, + 3, + 0, + 0, + 21, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 200, + 3, + 0, + 0, + 17, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 214, + 3, + 0, + 0, + 20, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 215, + 3, + 0, + 0, + 21, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 224, + 3, + 0, + 0, + 22, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 230, + 3, + 0, + 0, + 17, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 240, + 3, + 0, + 0, + 36, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 241, + 3, + 0, + 0, + 32, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 242, + 3, + 0, + 0, + 21, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 251, + 3, + 0, + 0, + 22, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 252, + 3, + 0, + 0, + 13, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 8, + 4, + 0, + 0, + 28, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 60, + 4, + 0, + 0, + 9, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 60, + 4, + 0, + 0, + 62, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 62, + 4, + 0, + 0, + 9, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 63, + 4, + 0, + 0, + 31, + 0, + 0, + 0, + 16, + 17, + 18, + 0, + 8, + 7, + 9, + 6, + 10, + 5, + 11, + 4, + 12, + 3, + 13, + 2, + 14, + 1, + 15, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 120, + 4, + 0, + 0, + 26, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 129, + 4, + 0, + 0, + 24, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 99, + 111, + 100, + 101, + 32, + 60, + 32, + 77, + 65, + 88, + 95, + 72, + 85, + 70, + 70, + 95, + 83, + 89, + 77, + 66, + 79, + 76, + 83, + 95, + 50, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 131, + 4, + 0, + 0, + 13, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 138, + 4, + 0, + 0, + 31, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 139, + 4, + 0, + 0, + 21, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 213, + 4, + 0, + 0, + 30, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 180, + 5, + 0, + 0, + 9, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 194, + 5, + 0, + 0, + 14, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 17, + 6, + 0, + 0, + 27, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 236, + 5, + 0, + 0, + 29, + 0, + 0, + 0, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 5, + 1, + 6, + 1, + 7, + 1, + 8, + 1, + 9, + 1, + 9, + 1, + 10, + 1, + 10, + 1, + 11, + 1, + 11, + 1, + 12, + 1, + 12, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 13, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 14, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 15, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 16, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 17, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 18, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 19, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 20, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 21, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 22, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 23, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 24, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 25, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 26, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 27, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 28, + 1, + 29, + 1, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 244, + 5, + 0, + 0, + 27, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 7, + 0, + 0, + 0, + 15, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 63, + 0, + 0, + 0, + 127, + 0, + 0, + 0, + 255, + 0, + 0, + 0, + 255, + 1, + 0, + 0, + 255, + 3, + 0, + 0, + 255, + 7, + 0, + 0, + 255, + 15, + 0, + 0, + 255, + 31, + 0, + 0, + 255, + 63, + 0, + 0, + 255, + 127, + 0, + 0, + 255, + 255, + 0, + 65, + 128, + 159, + 192, + 0, + 11, + 181, + 22, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 248, + 5, + 0, + 0, + 46, + 0, + 0, + 0, + 0, + 1, + 2, + 3, + 4, + 4, + 5, + 5, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 8, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 14, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 15, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 16, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 17, + 0, + 0, + 0, + 0, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 5, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 6, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 7, + 0, + 0, + 18, + 19, + 20, + 20, + 21, + 21, + 22, + 22, + 22, + 22, + 23, + 23, + 23, + 23, + 24, + 24, + 24, + 24, + 24, + 24, + 24, + 24, + 25, + 25, + 25, + 25, + 25, + 25, + 25, + 25, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 26, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 27, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 28, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 29, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 0, + 6, + 0, + 0, + 23, + 0, + 0, + 0, + 0, + 0, + 8, + 8, + 9, + 9, + 9, + 9, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 10, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 11, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 12, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 13, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 10, + 6, + 0, + 0, + 51, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 65, + 6, + 0, + 0, + 38, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 100, + 46, + 112, + 97, + 114, + 97, + 109, + 115, + 46, + 102, + 108, + 117, + 115, + 104, + 95, + 114, + 101, + 109, + 97, + 105, + 110, + 105, + 110, + 103, + 32, + 61, + 61, + 32, + 48, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 84, + 6, + 0, + 0, + 9, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 109, + 97, + 116, + 99, + 104, + 95, + 108, + 101, + 110, + 32, + 62, + 61, + 32, + 77, + 73, + 78, + 95, + 77, + 65, + 84, + 67, + 72, + 95, + 76, + 69, + 78, + 46, + 105, + 110, + 116, + 111, + 40, + 41, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 196, + 6, + 0, + 0, + 5, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 109, + 97, + 116, + 99, + 104, + 95, + 100, + 105, + 115, + 116, + 32, + 62, + 61, + 32, + 49, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 197, + 6, + 0, + 0, + 5, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 109, + 97, + 116, + 99, + 104, + 95, + 100, + 105, + 115, + 116, + 32, + 97, + 115, + 32, + 117, + 115, + 105, + 122, + 101, + 32, + 60, + 61, + 32, + 76, + 90, + 95, + 68, + 73, + 67, + 84, + 95, + 83, + 73, + 90, + 69, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 198, + 6, + 0, + 0, + 5, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 217, + 6, + 0, + 0, + 16, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 217, + 6, + 0, + 0, + 5, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 252, + 6, + 0, + 0, + 24, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 14, + 7, + 0, + 0, + 24, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 56, + 7, + 0, + 0, + 33, + 0, + 0, + 0, + 97, + 115, + 115, + 101, + 114, + 116, + 105, + 111, + 110, + 32, + 102, + 97, + 105, + 108, + 101, + 100, + 58, + 32, + 108, + 111, + 111, + 107, + 97, + 104, + 101, + 97, + 100, + 95, + 115, + 105, + 122, + 101, + 32, + 62, + 61, + 32, + 108, + 101, + 110, + 95, + 116, + 111, + 95, + 109, + 111, + 118, + 101, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 124, + 7, + 0, + 0, + 9, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 184, + 7, + 0, + 0, + 13, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 184, + 7, + 0, + 0, + 66, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 188, + 7, + 0, + 0, + 17, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 189, + 7, + 0, + 0, + 39, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 15, + 8, + 0, + 0, + 34, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 18, + 8, + 0, + 0, + 41, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 18, + 8, + 0, + 0, + 25, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 107, + 8, + 0, + 0, + 19, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 108, + 8, + 0, + 0, + 35, + 0, + 0, + 0, + 32, + 9, + 16, + 0, + 100, + 0, + 0, + 0, + 218, + 8, + 0, + 0, + 66, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 6, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 128, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 3, + 0, + 0, + 220, + 5, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 52, + 92, + 115, + 114, + 99, + 92, + 105, + 110, + 102, + 108, + 97, + 116, + 101, + 92, + 99, + 111, + 114, + 101, + 46, + 114, + 115, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 55, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 83, + 1, + 0, + 0, + 25, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 215, + 1, + 0, + 0, + 29, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 116, + 2, + 0, + 0, + 26, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 123, + 2, + 0, + 0, + 28, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 124, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 143, + 2, + 0, + 0, + 29, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 148, + 2, + 0, + 0, + 32, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 176, + 2, + 0, + 0, + 20, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 187, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 242, + 2, + 0, + 0, + 30, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 242, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 243, + 2, + 0, + 0, + 34, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 243, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 244, + 2, + 0, + 0, + 34, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 244, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 245, + 2, + 0, + 0, + 34, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 245, + 2, + 0, + 0, + 9, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 2, + 3, + 0, + 0, + 34, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 2, + 3, + 0, + 0, + 13, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 3, + 3, + 0, + 0, + 38, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 3, + 3, + 0, + 0, + 13, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 4, + 3, + 0, + 0, + 38, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 4, + 3, + 0, + 0, + 13, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 254, + 2, + 0, + 0, + 34, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 254, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 255, + 2, + 0, + 0, + 38, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 255, + 2, + 0, + 0, + 13, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 252, + 2, + 0, + 0, + 35, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 252, + 2, + 0, + 0, + 14, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 25, + 3, + 0, + 0, + 30, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 25, + 3, + 0, + 0, + 9, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 26, + 3, + 0, + 0, + 34, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 26, + 3, + 0, + 0, + 9, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 27, + 3, + 0, + 0, + 34, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 27, + 3, + 0, + 0, + 9, + 0, + 65, + 192, + 181, + 192, + 0, + 11, + 196, + 169, + 1, + 1, + 1, + 1, + 1, + 2, + 2, + 2, + 2, + 3, + 3, + 3, + 3, + 4, + 4, + 4, + 4, + 5, + 5, + 5, + 5, + 0, + 0, + 0, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 6, + 0, + 7, + 0, + 8, + 0, + 9, + 0, + 10, + 0, + 11, + 0, + 13, + 0, + 15, + 0, + 17, + 0, + 19, + 0, + 23, + 0, + 27, + 0, + 31, + 0, + 35, + 0, + 43, + 0, + 51, + 0, + 59, + 0, + 67, + 0, + 83, + 0, + 99, + 0, + 115, + 0, + 131, + 0, + 163, + 0, + 195, + 0, + 227, + 0, + 2, + 1, + 0, + 2, + 0, + 2, + 0, + 2, + 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, + 13, + 13, + 1, + 0, + 2, + 0, + 3, + 0, + 4, + 0, + 5, + 0, + 7, + 0, + 9, + 0, + 13, + 0, + 17, + 0, + 25, + 0, + 33, + 0, + 49, + 0, + 65, + 0, + 97, + 0, + 129, + 0, + 193, + 0, + 1, + 1, + 129, + 1, + 1, + 2, + 1, + 3, + 1, + 4, + 1, + 6, + 1, + 8, + 1, + 12, + 1, + 16, + 1, + 24, + 1, + 32, + 1, + 48, + 1, + 64, + 1, + 96, + 0, + 128, + 0, + 128, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 11, + 6, + 0, + 0, + 31, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 0, + 5, + 0, + 0, + 21, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 6, + 5, + 0, + 0, + 21, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 7, + 5, + 0, + 0, + 43, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 188, + 4, + 0, + 0, + 42, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 86, + 6, + 0, + 0, + 60, + 0, + 0, + 0, + 1, + 1, + 1, + 0, + 4, + 0, + 16, + 17, + 18, + 0, + 8, + 7, + 9, + 6, + 10, + 5, + 11, + 4, + 12, + 3, + 13, + 2, + 14, + 1, + 15, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 224, + 4, + 0, + 0, + 40, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 242, + 4, + 0, + 0, + 33, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 248, + 4, + 0, + 0, + 47, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 18, + 5, + 0, + 0, + 35, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 20, + 5, + 0, + 0, + 25, + 0, + 0, + 0, + 20, + 24, + 16, + 0, + 100, + 0, + 0, + 0, + 26, + 5, + 0, + 0, + 30, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 52, + 92, + 115, + 114, + 99, + 92, + 105, + 110, + 102, + 108, + 97, + 116, + 101, + 92, + 111, + 117, + 116, + 112, + 117, + 116, + 95, + 98, + 117, + 102, + 102, + 101, + 114, + 46, + 114, + 115, + 0, + 0, + 0, + 84, + 28, + 16, + 0, + 109, + 0, + 0, + 0, + 32, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 84, + 28, + 16, + 0, + 109, + 0, + 0, + 0, + 42, + 0, + 0, + 0, + 9, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 52, + 92, + 115, + 114, + 99, + 92, + 105, + 110, + 102, + 108, + 97, + 116, + 101, + 92, + 115, + 116, + 114, + 101, + 97, + 109, + 46, + 114, + 115, + 0, + 0, + 228, + 28, + 16, + 0, + 102, + 0, + 0, + 0, + 32, + 1, + 0, + 0, + 21, + 0, + 0, + 0, + 228, + 28, + 16, + 0, + 102, + 0, + 0, + 0, + 80, + 1, + 0, + 0, + 38, + 0, + 0, + 0, + 80, + 97, + 114, + 97, + 109, + 86, + 101, + 114, + 115, + 105, + 111, + 110, + 66, + 117, + 102, + 77, + 101, + 109, + 68, + 97, + 116, + 97, + 83, + 116, + 114, + 101, + 97, + 109, + 69, + 114, + 114, + 78, + 111, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 2, + 0, + 0, + 0, + 3, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 67, + 58, + 92, + 85, + 115, + 101, + 114, + 115, + 92, + 104, + 117, + 103, + 111, + 103, + 92, + 46, + 99, + 97, + 114, + 103, + 111, + 92, + 114, + 101, + 103, + 105, + 115, + 116, + 114, + 121, + 92, + 115, + 114, + 99, + 92, + 103, + 105, + 116, + 104, + 117, + 98, + 46, + 99, + 111, + 109, + 45, + 49, + 101, + 99, + 99, + 54, + 50, + 57, + 57, + 100, + 98, + 57, + 101, + 99, + 56, + 50, + 51, + 92, + 109, + 105, + 110, + 105, + 122, + 95, + 111, + 120, + 105, + 100, + 101, + 45, + 48, + 46, + 52, + 46, + 52, + 92, + 115, + 114, + 99, + 92, + 100, + 101, + 102, + 108, + 97, + 116, + 101, + 92, + 115, + 116, + 114, + 101, + 97, + 109, + 46, + 114, + 115, + 0, + 0, + 164, + 29, + 16, + 0, + 102, + 0, + 0, + 0, + 58, + 0, + 0, + 0, + 20, + 0, + 0, + 0, + 164, + 29, + 16, + 0, + 102, + 0, + 0, + 0, + 59, + 0, + 0, + 0, + 25, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 150, + 48, + 7, + 119, + 44, + 97, + 14, + 238, + 186, + 81, + 9, + 153, + 25, + 196, + 109, + 7, + 143, + 244, + 106, + 112, + 53, + 165, + 99, + 233, + 163, + 149, + 100, + 158, + 50, + 136, + 219, + 14, + 164, + 184, + 220, + 121, + 30, + 233, + 213, + 224, + 136, + 217, + 210, + 151, + 43, + 76, + 182, + 9, + 189, + 124, + 177, + 126, + 7, + 45, + 184, + 231, + 145, + 29, + 191, + 144, + 100, + 16, + 183, + 29, + 242, + 32, + 176, + 106, + 72, + 113, + 185, + 243, + 222, + 65, + 190, + 132, + 125, + 212, + 218, + 26, + 235, + 228, + 221, + 109, + 81, + 181, + 212, + 244, + 199, + 133, + 211, + 131, + 86, + 152, + 108, + 19, + 192, + 168, + 107, + 100, + 122, + 249, + 98, + 253, + 236, + 201, + 101, + 138, + 79, + 92, + 1, + 20, + 217, + 108, + 6, + 99, + 99, + 61, + 15, + 250, + 245, + 13, + 8, + 141, + 200, + 32, + 110, + 59, + 94, + 16, + 105, + 76, + 228, + 65, + 96, + 213, + 114, + 113, + 103, + 162, + 209, + 228, + 3, + 60, + 71, + 212, + 4, + 75, + 253, + 133, + 13, + 210, + 107, + 181, + 10, + 165, + 250, + 168, + 181, + 53, + 108, + 152, + 178, + 66, + 214, + 201, + 187, + 219, + 64, + 249, + 188, + 172, + 227, + 108, + 216, + 50, + 117, + 92, + 223, + 69, + 207, + 13, + 214, + 220, + 89, + 61, + 209, + 171, + 172, + 48, + 217, + 38, + 58, + 0, + 222, + 81, + 128, + 81, + 215, + 200, + 22, + 97, + 208, + 191, + 181, + 244, + 180, + 33, + 35, + 196, + 179, + 86, + 153, + 149, + 186, + 207, + 15, + 165, + 189, + 184, + 158, + 184, + 2, + 40, + 8, + 136, + 5, + 95, + 178, + 217, + 12, + 198, + 36, + 233, + 11, + 177, + 135, + 124, + 111, + 47, + 17, + 76, + 104, + 88, + 171, + 29, + 97, + 193, + 61, + 45, + 102, + 182, + 144, + 65, + 220, + 118, + 6, + 113, + 219, + 1, + 188, + 32, + 210, + 152, + 42, + 16, + 213, + 239, + 137, + 133, + 177, + 113, + 31, + 181, + 182, + 6, + 165, + 228, + 191, + 159, + 51, + 212, + 184, + 232, + 162, + 201, + 7, + 120, + 52, + 249, + 0, + 15, + 142, + 168, + 9, + 150, + 24, + 152, + 14, + 225, + 187, + 13, + 106, + 127, + 45, + 61, + 109, + 8, + 151, + 108, + 100, + 145, + 1, + 92, + 99, + 230, + 244, + 81, + 107, + 107, + 98, + 97, + 108, + 28, + 216, + 48, + 101, + 133, + 78, + 0, + 98, + 242, + 237, + 149, + 6, + 108, + 123, + 165, + 1, + 27, + 193, + 244, + 8, + 130, + 87, + 196, + 15, + 245, + 198, + 217, + 176, + 101, + 80, + 233, + 183, + 18, + 234, + 184, + 190, + 139, + 124, + 136, + 185, + 252, + 223, + 29, + 221, + 98, + 73, + 45, + 218, + 21, + 243, + 124, + 211, + 140, + 101, + 76, + 212, + 251, + 88, + 97, + 178, + 77, + 206, + 81, + 181, + 58, + 116, + 0, + 188, + 163, + 226, + 48, + 187, + 212, + 65, + 165, + 223, + 74, + 215, + 149, + 216, + 61, + 109, + 196, + 209, + 164, + 251, + 244, + 214, + 211, + 106, + 233, + 105, + 67, + 252, + 217, + 110, + 52, + 70, + 136, + 103, + 173, + 208, + 184, + 96, + 218, + 115, + 45, + 4, + 68, + 229, + 29, + 3, + 51, + 95, + 76, + 10, + 170, + 201, + 124, + 13, + 221, + 60, + 113, + 5, + 80, + 170, + 65, + 2, + 39, + 16, + 16, + 11, + 190, + 134, + 32, + 12, + 201, + 37, + 181, + 104, + 87, + 179, + 133, + 111, + 32, + 9, + 212, + 102, + 185, + 159, + 228, + 97, + 206, + 14, + 249, + 222, + 94, + 152, + 201, + 217, + 41, + 34, + 152, + 208, + 176, + 180, + 168, + 215, + 199, + 23, + 61, + 179, + 89, + 129, + 13, + 180, + 46, + 59, + 92, + 189, + 183, + 173, + 108, + 186, + 192, + 32, + 131, + 184, + 237, + 182, + 179, + 191, + 154, + 12, + 226, + 182, + 3, + 154, + 210, + 177, + 116, + 57, + 71, + 213, + 234, + 175, + 119, + 210, + 157, + 21, + 38, + 219, + 4, + 131, + 22, + 220, + 115, + 18, + 11, + 99, + 227, + 132, + 59, + 100, + 148, + 62, + 106, + 109, + 13, + 168, + 90, + 106, + 122, + 11, + 207, + 14, + 228, + 157, + 255, + 9, + 147, + 39, + 174, + 0, + 10, + 177, + 158, + 7, + 125, + 68, + 147, + 15, + 240, + 210, + 163, + 8, + 135, + 104, + 242, + 1, + 30, + 254, + 194, + 6, + 105, + 93, + 87, + 98, + 247, + 203, + 103, + 101, + 128, + 113, + 54, + 108, + 25, + 231, + 6, + 107, + 110, + 118, + 27, + 212, + 254, + 224, + 43, + 211, + 137, + 90, + 122, + 218, + 16, + 204, + 74, + 221, + 103, + 111, + 223, + 185, + 249, + 249, + 239, + 190, + 142, + 67, + 190, + 183, + 23, + 213, + 142, + 176, + 96, + 232, + 163, + 214, + 214, + 126, + 147, + 209, + 161, + 196, + 194, + 216, + 56, + 82, + 242, + 223, + 79, + 241, + 103, + 187, + 209, + 103, + 87, + 188, + 166, + 221, + 6, + 181, + 63, + 75, + 54, + 178, + 72, + 218, + 43, + 13, + 216, + 76, + 27, + 10, + 175, + 246, + 74, + 3, + 54, + 96, + 122, + 4, + 65, + 195, + 239, + 96, + 223, + 85, + 223, + 103, + 168, + 239, + 142, + 110, + 49, + 121, + 190, + 105, + 70, + 140, + 179, + 97, + 203, + 26, + 131, + 102, + 188, + 160, + 210, + 111, + 37, + 54, + 226, + 104, + 82, + 149, + 119, + 12, + 204, + 3, + 71, + 11, + 187, + 185, + 22, + 2, + 34, + 47, + 38, + 5, + 85, + 190, + 59, + 186, + 197, + 40, + 11, + 189, + 178, + 146, + 90, + 180, + 43, + 4, + 106, + 179, + 92, + 167, + 255, + 215, + 194, + 49, + 207, + 208, + 181, + 139, + 158, + 217, + 44, + 29, + 174, + 222, + 91, + 176, + 194, + 100, + 155, + 38, + 242, + 99, + 236, + 156, + 163, + 106, + 117, + 10, + 147, + 109, + 2, + 169, + 6, + 9, + 156, + 63, + 54, + 14, + 235, + 133, + 103, + 7, + 114, + 19, + 87, + 0, + 5, + 130, + 74, + 191, + 149, + 20, + 122, + 184, + 226, + 174, + 43, + 177, + 123, + 56, + 27, + 182, + 12, + 155, + 142, + 210, + 146, + 13, + 190, + 213, + 229, + 183, + 239, + 220, + 124, + 33, + 223, + 219, + 11, + 212, + 210, + 211, + 134, + 66, + 226, + 212, + 241, + 248, + 179, + 221, + 104, + 110, + 131, + 218, + 31, + 205, + 22, + 190, + 129, + 91, + 38, + 185, + 246, + 225, + 119, + 176, + 111, + 119, + 71, + 183, + 24, + 230, + 90, + 8, + 136, + 112, + 106, + 15, + 255, + 202, + 59, + 6, + 102, + 92, + 11, + 1, + 17, + 255, + 158, + 101, + 143, + 105, + 174, + 98, + 248, + 211, + 255, + 107, + 97, + 69, + 207, + 108, + 22, + 120, + 226, + 10, + 160, + 238, + 210, + 13, + 215, + 84, + 131, + 4, + 78, + 194, + 179, + 3, + 57, + 97, + 38, + 103, + 167, + 247, + 22, + 96, + 208, + 77, + 71, + 105, + 73, + 219, + 119, + 110, + 62, + 74, + 106, + 209, + 174, + 220, + 90, + 214, + 217, + 102, + 11, + 223, + 64, + 240, + 59, + 216, + 55, + 83, + 174, + 188, + 169, + 197, + 158, + 187, + 222, + 127, + 207, + 178, + 71, + 233, + 255, + 181, + 48, + 28, + 242, + 189, + 189, + 138, + 194, + 186, + 202, + 48, + 147, + 179, + 83, + 166, + 163, + 180, + 36, + 5, + 54, + 208, + 186, + 147, + 6, + 215, + 205, + 41, + 87, + 222, + 84, + 191, + 103, + 217, + 35, + 46, + 122, + 102, + 179, + 184, + 74, + 97, + 196, + 2, + 27, + 104, + 93, + 148, + 43, + 111, + 42, + 55, + 190, + 11, + 180, + 161, + 142, + 12, + 195, + 27, + 223, + 5, + 90, + 141, + 239, + 2, + 45, + 0, + 0, + 0, + 0, + 65, + 49, + 27, + 25, + 130, + 98, + 54, + 50, + 195, + 83, + 45, + 43, + 4, + 197, + 108, + 100, + 69, + 244, + 119, + 125, + 134, + 167, + 90, + 86, + 199, + 150, + 65, + 79, + 8, + 138, + 217, + 200, + 73, + 187, + 194, + 209, + 138, + 232, + 239, + 250, + 203, + 217, + 244, + 227, + 12, + 79, + 181, + 172, + 77, + 126, + 174, + 181, + 142, + 45, + 131, + 158, + 207, + 28, + 152, + 135, + 81, + 18, + 194, + 74, + 16, + 35, + 217, + 83, + 211, + 112, + 244, + 120, + 146, + 65, + 239, + 97, + 85, + 215, + 174, + 46, + 20, + 230, + 181, + 55, + 215, + 181, + 152, + 28, + 150, + 132, + 131, + 5, + 89, + 152, + 27, + 130, + 24, + 169, + 0, + 155, + 219, + 250, + 45, + 176, + 154, + 203, + 54, + 169, + 93, + 93, + 119, + 230, + 28, + 108, + 108, + 255, + 223, + 63, + 65, + 212, + 158, + 14, + 90, + 205, + 162, + 36, + 132, + 149, + 227, + 21, + 159, + 140, + 32, + 70, + 178, + 167, + 97, + 119, + 169, + 190, + 166, + 225, + 232, + 241, + 231, + 208, + 243, + 232, + 36, + 131, + 222, + 195, + 101, + 178, + 197, + 218, + 170, + 174, + 93, + 93, + 235, + 159, + 70, + 68, + 40, + 204, + 107, + 111, + 105, + 253, + 112, + 118, + 174, + 107, + 49, + 57, + 239, + 90, + 42, + 32, + 44, + 9, + 7, + 11, + 109, + 56, + 28, + 18, + 243, + 54, + 70, + 223, + 178, + 7, + 93, + 198, + 113, + 84, + 112, + 237, + 48, + 101, + 107, + 244, + 247, + 243, + 42, + 187, + 182, + 194, + 49, + 162, + 117, + 145, + 28, + 137, + 52, + 160, + 7, + 144, + 251, + 188, + 159, + 23, + 186, + 141, + 132, + 14, + 121, + 222, + 169, + 37, + 56, + 239, + 178, + 60, + 255, + 121, + 243, + 115, + 190, + 72, + 232, + 106, + 125, + 27, + 197, + 65, + 60, + 42, + 222, + 88, + 5, + 79, + 121, + 240, + 68, + 126, + 98, + 233, + 135, + 45, + 79, + 194, + 198, + 28, + 84, + 219, + 1, + 138, + 21, + 148, + 64, + 187, + 14, + 141, + 131, + 232, + 35, + 166, + 194, + 217, + 56, + 191, + 13, + 197, + 160, + 56, + 76, + 244, + 187, + 33, + 143, + 167, + 150, + 10, + 206, + 150, + 141, + 19, + 9, + 0, + 204, + 92, + 72, + 49, + 215, + 69, + 139, + 98, + 250, + 110, + 202, + 83, + 225, + 119, + 84, + 93, + 187, + 186, + 21, + 108, + 160, + 163, + 214, + 63, + 141, + 136, + 151, + 14, + 150, + 145, + 80, + 152, + 215, + 222, + 17, + 169, + 204, + 199, + 210, + 250, + 225, + 236, + 147, + 203, + 250, + 245, + 92, + 215, + 98, + 114, + 29, + 230, + 121, + 107, + 222, + 181, + 84, + 64, + 159, + 132, + 79, + 89, + 88, + 18, + 14, + 22, + 25, + 35, + 21, + 15, + 218, + 112, + 56, + 36, + 155, + 65, + 35, + 61, + 167, + 107, + 253, + 101, + 230, + 90, + 230, + 124, + 37, + 9, + 203, + 87, + 100, + 56, + 208, + 78, + 163, + 174, + 145, + 1, + 226, + 159, + 138, + 24, + 33, + 204, + 167, + 51, + 96, + 253, + 188, + 42, + 175, + 225, + 36, + 173, + 238, + 208, + 63, + 180, + 45, + 131, + 18, + 159, + 108, + 178, + 9, + 134, + 171, + 36, + 72, + 201, + 234, + 21, + 83, + 208, + 41, + 70, + 126, + 251, + 104, + 119, + 101, + 226, + 246, + 121, + 63, + 47, + 183, + 72, + 36, + 54, + 116, + 27, + 9, + 29, + 53, + 42, + 18, + 4, + 242, + 188, + 83, + 75, + 179, + 141, + 72, + 82, + 112, + 222, + 101, + 121, + 49, + 239, + 126, + 96, + 254, + 243, + 230, + 231, + 191, + 194, + 253, + 254, + 124, + 145, + 208, + 213, + 61, + 160, + 203, + 204, + 250, + 54, + 138, + 131, + 187, + 7, + 145, + 154, + 120, + 84, + 188, + 177, + 57, + 101, + 167, + 168, + 75, + 152, + 131, + 59, + 10, + 169, + 152, + 34, + 201, + 250, + 181, + 9, + 136, + 203, + 174, + 16, + 79, + 93, + 239, + 95, + 14, + 108, + 244, + 70, + 205, + 63, + 217, + 109, + 140, + 14, + 194, + 116, + 67, + 18, + 90, + 243, + 2, + 35, + 65, + 234, + 193, + 112, + 108, + 193, + 128, + 65, + 119, + 216, + 71, + 215, + 54, + 151, + 6, + 230, + 45, + 142, + 197, + 181, + 0, + 165, + 132, + 132, + 27, + 188, + 26, + 138, + 65, + 113, + 91, + 187, + 90, + 104, + 152, + 232, + 119, + 67, + 217, + 217, + 108, + 90, + 30, + 79, + 45, + 21, + 95, + 126, + 54, + 12, + 156, + 45, + 27, + 39, + 221, + 28, + 0, + 62, + 18, + 0, + 152, + 185, + 83, + 49, + 131, + 160, + 144, + 98, + 174, + 139, + 209, + 83, + 181, + 146, + 22, + 197, + 244, + 221, + 87, + 244, + 239, + 196, + 148, + 167, + 194, + 239, + 213, + 150, + 217, + 246, + 233, + 188, + 7, + 174, + 168, + 141, + 28, + 183, + 107, + 222, + 49, + 156, + 42, + 239, + 42, + 133, + 237, + 121, + 107, + 202, + 172, + 72, + 112, + 211, + 111, + 27, + 93, + 248, + 46, + 42, + 70, + 225, + 225, + 54, + 222, + 102, + 160, + 7, + 197, + 127, + 99, + 84, + 232, + 84, + 34, + 101, + 243, + 77, + 229, + 243, + 178, + 2, + 164, + 194, + 169, + 27, + 103, + 145, + 132, + 48, + 38, + 160, + 159, + 41, + 184, + 174, + 197, + 228, + 249, + 159, + 222, + 253, + 58, + 204, + 243, + 214, + 123, + 253, + 232, + 207, + 188, + 107, + 169, + 128, + 253, + 90, + 178, + 153, + 62, + 9, + 159, + 178, + 127, + 56, + 132, + 171, + 176, + 36, + 28, + 44, + 241, + 21, + 7, + 53, + 50, + 70, + 42, + 30, + 115, + 119, + 49, + 7, + 180, + 225, + 112, + 72, + 245, + 208, + 107, + 81, + 54, + 131, + 70, + 122, + 119, + 178, + 93, + 99, + 78, + 215, + 250, + 203, + 15, + 230, + 225, + 210, + 204, + 181, + 204, + 249, + 141, + 132, + 215, + 224, + 74, + 18, + 150, + 175, + 11, + 35, + 141, + 182, + 200, + 112, + 160, + 157, + 137, + 65, + 187, + 132, + 70, + 93, + 35, + 3, + 7, + 108, + 56, + 26, + 196, + 63, + 21, + 49, + 133, + 14, + 14, + 40, + 66, + 152, + 79, + 103, + 3, + 169, + 84, + 126, + 192, + 250, + 121, + 85, + 129, + 203, + 98, + 76, + 31, + 197, + 56, + 129, + 94, + 244, + 35, + 152, + 157, + 167, + 14, + 179, + 220, + 150, + 21, + 170, + 27, + 0, + 84, + 229, + 90, + 49, + 79, + 252, + 153, + 98, + 98, + 215, + 216, + 83, + 121, + 206, + 23, + 79, + 225, + 73, + 86, + 126, + 250, + 80, + 149, + 45, + 215, + 123, + 212, + 28, + 204, + 98, + 19, + 138, + 141, + 45, + 82, + 187, + 150, + 52, + 145, + 232, + 187, + 31, + 208, + 217, + 160, + 6, + 236, + 243, + 126, + 94, + 173, + 194, + 101, + 71, + 110, + 145, + 72, + 108, + 47, + 160, + 83, + 117, + 232, + 54, + 18, + 58, + 169, + 7, + 9, + 35, + 106, + 84, + 36, + 8, + 43, + 101, + 63, + 17, + 228, + 121, + 167, + 150, + 165, + 72, + 188, + 143, + 102, + 27, + 145, + 164, + 39, + 42, + 138, + 189, + 224, + 188, + 203, + 242, + 161, + 141, + 208, + 235, + 98, + 222, + 253, + 192, + 35, + 239, + 230, + 217, + 189, + 225, + 188, + 20, + 252, + 208, + 167, + 13, + 63, + 131, + 138, + 38, + 126, + 178, + 145, + 63, + 185, + 36, + 208, + 112, + 248, + 21, + 203, + 105, + 59, + 70, + 230, + 66, + 122, + 119, + 253, + 91, + 181, + 107, + 101, + 220, + 244, + 90, + 126, + 197, + 55, + 9, + 83, + 238, + 118, + 56, + 72, + 247, + 177, + 174, + 9, + 184, + 240, + 159, + 18, + 161, + 51, + 204, + 63, + 138, + 114, + 253, + 36, + 147, + 0, + 0, + 0, + 0, + 55, + 106, + 194, + 1, + 110, + 212, + 132, + 3, + 89, + 190, + 70, + 2, + 220, + 168, + 9, + 7, + 235, + 194, + 203, + 6, + 178, + 124, + 141, + 4, + 133, + 22, + 79, + 5, + 184, + 81, + 19, + 14, + 143, + 59, + 209, + 15, + 214, + 133, + 151, + 13, + 225, + 239, + 85, + 12, + 100, + 249, + 26, + 9, + 83, + 147, + 216, + 8, + 10, + 45, + 158, + 10, + 61, + 71, + 92, + 11, + 112, + 163, + 38, + 28, + 71, + 201, + 228, + 29, + 30, + 119, + 162, + 31, + 41, + 29, + 96, + 30, + 172, + 11, + 47, + 27, + 155, + 97, + 237, + 26, + 194, + 223, + 171, + 24, + 245, + 181, + 105, + 25, + 200, + 242, + 53, + 18, + 255, + 152, + 247, + 19, + 166, + 38, + 177, + 17, + 145, + 76, + 115, + 16, + 20, + 90, + 60, + 21, + 35, + 48, + 254, + 20, + 122, + 142, + 184, + 22, + 77, + 228, + 122, + 23, + 224, + 70, + 77, + 56, + 215, + 44, + 143, + 57, + 142, + 146, + 201, + 59, + 185, + 248, + 11, + 58, + 60, + 238, + 68, + 63, + 11, + 132, + 134, + 62, + 82, + 58, + 192, + 60, + 101, + 80, + 2, + 61, + 88, + 23, + 94, + 54, + 111, + 125, + 156, + 55, + 54, + 195, + 218, + 53, + 1, + 169, + 24, + 52, + 132, + 191, + 87, + 49, + 179, + 213, + 149, + 48, + 234, + 107, + 211, + 50, + 221, + 1, + 17, + 51, + 144, + 229, + 107, + 36, + 167, + 143, + 169, + 37, + 254, + 49, + 239, + 39, + 201, + 91, + 45, + 38, + 76, + 77, + 98, + 35, + 123, + 39, + 160, + 34, + 34, + 153, + 230, + 32, + 21, + 243, + 36, + 33, + 40, + 180, + 120, + 42, + 31, + 222, + 186, + 43, + 70, + 96, + 252, + 41, + 113, + 10, + 62, + 40, + 244, + 28, + 113, + 45, + 195, + 118, + 179, + 44, + 154, + 200, + 245, + 46, + 173, + 162, + 55, + 47, + 192, + 141, + 154, + 112, + 247, + 231, + 88, + 113, + 174, + 89, + 30, + 115, + 153, + 51, + 220, + 114, + 28, + 37, + 147, + 119, + 43, + 79, + 81, + 118, + 114, + 241, + 23, + 116, + 69, + 155, + 213, + 117, + 120, + 220, + 137, + 126, + 79, + 182, + 75, + 127, + 22, + 8, + 13, + 125, + 33, + 98, + 207, + 124, + 164, + 116, + 128, + 121, + 147, + 30, + 66, + 120, + 202, + 160, + 4, + 122, + 253, + 202, + 198, + 123, + 176, + 46, + 188, + 108, + 135, + 68, + 126, + 109, + 222, + 250, + 56, + 111, + 233, + 144, + 250, + 110, + 108, + 134, + 181, + 107, + 91, + 236, + 119, + 106, + 2, + 82, + 49, + 104, + 53, + 56, + 243, + 105, + 8, + 127, + 175, + 98, + 63, + 21, + 109, + 99, + 102, + 171, + 43, + 97, + 81, + 193, + 233, + 96, + 212, + 215, + 166, + 101, + 227, + 189, + 100, + 100, + 186, + 3, + 34, + 102, + 141, + 105, + 224, + 103, + 32, + 203, + 215, + 72, + 23, + 161, + 21, + 73, + 78, + 31, + 83, + 75, + 121, + 117, + 145, + 74, + 252, + 99, + 222, + 79, + 203, + 9, + 28, + 78, + 146, + 183, + 90, + 76, + 165, + 221, + 152, + 77, + 152, + 154, + 196, + 70, + 175, + 240, + 6, + 71, + 246, + 78, + 64, + 69, + 193, + 36, + 130, + 68, + 68, + 50, + 205, + 65, + 115, + 88, + 15, + 64, + 42, + 230, + 73, + 66, + 29, + 140, + 139, + 67, + 80, + 104, + 241, + 84, + 103, + 2, + 51, + 85, + 62, + 188, + 117, + 87, + 9, + 214, + 183, + 86, + 140, + 192, + 248, + 83, + 187, + 170, + 58, + 82, + 226, + 20, + 124, + 80, + 213, + 126, + 190, + 81, + 232, + 57, + 226, + 90, + 223, + 83, + 32, + 91, + 134, + 237, + 102, + 89, + 177, + 135, + 164, + 88, + 52, + 145, + 235, + 93, + 3, + 251, + 41, + 92, + 90, + 69, + 111, + 94, + 109, + 47, + 173, + 95, + 128, + 27, + 53, + 225, + 183, + 113, + 247, + 224, + 238, + 207, + 177, + 226, + 217, + 165, + 115, + 227, + 92, + 179, + 60, + 230, + 107, + 217, + 254, + 231, + 50, + 103, + 184, + 229, + 5, + 13, + 122, + 228, + 56, + 74, + 38, + 239, + 15, + 32, + 228, + 238, + 86, + 158, + 162, + 236, + 97, + 244, + 96, + 237, + 228, + 226, + 47, + 232, + 211, + 136, + 237, + 233, + 138, + 54, + 171, + 235, + 189, + 92, + 105, + 234, + 240, + 184, + 19, + 253, + 199, + 210, + 209, + 252, + 158, + 108, + 151, + 254, + 169, + 6, + 85, + 255, + 44, + 16, + 26, + 250, + 27, + 122, + 216, + 251, + 66, + 196, + 158, + 249, + 117, + 174, + 92, + 248, + 72, + 233, + 0, + 243, + 127, + 131, + 194, + 242, + 38, + 61, + 132, + 240, + 17, + 87, + 70, + 241, + 148, + 65, + 9, + 244, + 163, + 43, + 203, + 245, + 250, + 149, + 141, + 247, + 205, + 255, + 79, + 246, + 96, + 93, + 120, + 217, + 87, + 55, + 186, + 216, + 14, + 137, + 252, + 218, + 57, + 227, + 62, + 219, + 188, + 245, + 113, + 222, + 139, + 159, + 179, + 223, + 210, + 33, + 245, + 221, + 229, + 75, + 55, + 220, + 216, + 12, + 107, + 215, + 239, + 102, + 169, + 214, + 182, + 216, + 239, + 212, + 129, + 178, + 45, + 213, + 4, + 164, + 98, + 208, + 51, + 206, + 160, + 209, + 106, + 112, + 230, + 211, + 93, + 26, + 36, + 210, + 16, + 254, + 94, + 197, + 39, + 148, + 156, + 196, + 126, + 42, + 218, + 198, + 73, + 64, + 24, + 199, + 204, + 86, + 87, + 194, + 251, + 60, + 149, + 195, + 162, + 130, + 211, + 193, + 149, + 232, + 17, + 192, + 168, + 175, + 77, + 203, + 159, + 197, + 143, + 202, + 198, + 123, + 201, + 200, + 241, + 17, + 11, + 201, + 116, + 7, + 68, + 204, + 67, + 109, + 134, + 205, + 26, + 211, + 192, + 207, + 45, + 185, + 2, + 206, + 64, + 150, + 175, + 145, + 119, + 252, + 109, + 144, + 46, + 66, + 43, + 146, + 25, + 40, + 233, + 147, + 156, + 62, + 166, + 150, + 171, + 84, + 100, + 151, + 242, + 234, + 34, + 149, + 197, + 128, + 224, + 148, + 248, + 199, + 188, + 159, + 207, + 173, + 126, + 158, + 150, + 19, + 56, + 156, + 161, + 121, + 250, + 157, + 36, + 111, + 181, + 152, + 19, + 5, + 119, + 153, + 74, + 187, + 49, + 155, + 125, + 209, + 243, + 154, + 48, + 53, + 137, + 141, + 7, + 95, + 75, + 140, + 94, + 225, + 13, + 142, + 105, + 139, + 207, + 143, + 236, + 157, + 128, + 138, + 219, + 247, + 66, + 139, + 130, + 73, + 4, + 137, + 181, + 35, + 198, + 136, + 136, + 100, + 154, + 131, + 191, + 14, + 88, + 130, + 230, + 176, + 30, + 128, + 209, + 218, + 220, + 129, + 84, + 204, + 147, + 132, + 99, + 166, + 81, + 133, + 58, + 24, + 23, + 135, + 13, + 114, + 213, + 134, + 160, + 208, + 226, + 169, + 151, + 186, + 32, + 168, + 206, + 4, + 102, + 170, + 249, + 110, + 164, + 171, + 124, + 120, + 235, + 174, + 75, + 18, + 41, + 175, + 18, + 172, + 111, + 173, + 37, + 198, + 173, + 172, + 24, + 129, + 241, + 167, + 47, + 235, + 51, + 166, + 118, + 85, + 117, + 164, + 65, + 63, + 183, + 165, + 196, + 41, + 248, + 160, + 243, + 67, + 58, + 161, + 170, + 253, + 124, + 163, + 157, + 151, + 190, + 162, + 208, + 115, + 196, + 181, + 231, + 25, + 6, + 180, + 190, + 167, + 64, + 182, + 137, + 205, + 130, + 183, + 12, + 219, + 205, + 178, + 59, + 177, + 15, + 179, + 98, + 15, + 73, + 177, + 85, + 101, + 139, + 176, + 104, + 34, + 215, + 187, + 95, + 72, + 21, + 186, + 6, + 246, + 83, + 184, + 49, + 156, + 145, + 185, + 180, + 138, + 222, + 188, + 131, + 224, + 28, + 189, + 218, + 94, + 90, + 191, + 237, + 52, + 152, + 190, + 0, + 0, + 0, + 0, + 101, + 103, + 188, + 184, + 139, + 200, + 9, + 170, + 238, + 175, + 181, + 18, + 87, + 151, + 98, + 143, + 50, + 240, + 222, + 55, + 220, + 95, + 107, + 37, + 185, + 56, + 215, + 157, + 239, + 40, + 180, + 197, + 138, + 79, + 8, + 125, + 100, + 224, + 189, + 111, + 1, + 135, + 1, + 215, + 184, + 191, + 214, + 74, + 221, + 216, + 106, + 242, + 51, + 119, + 223, + 224, + 86, + 16, + 99, + 88, + 159, + 87, + 25, + 80, + 250, + 48, + 165, + 232, + 20, + 159, + 16, + 250, + 113, + 248, + 172, + 66, + 200, + 192, + 123, + 223, + 173, + 167, + 199, + 103, + 67, + 8, + 114, + 117, + 38, + 111, + 206, + 205, + 112, + 127, + 173, + 149, + 21, + 24, + 17, + 45, + 251, + 183, + 164, + 63, + 158, + 208, + 24, + 135, + 39, + 232, + 207, + 26, + 66, + 143, + 115, + 162, + 172, + 32, + 198, + 176, + 201, + 71, + 122, + 8, + 62, + 175, + 50, + 160, + 91, + 200, + 142, + 24, + 181, + 103, + 59, + 10, + 208, + 0, + 135, + 178, + 105, + 56, + 80, + 47, + 12, + 95, + 236, + 151, + 226, + 240, + 89, + 133, + 135, + 151, + 229, + 61, + 209, + 135, + 134, + 101, + 180, + 224, + 58, + 221, + 90, + 79, + 143, + 207, + 63, + 40, + 51, + 119, + 134, + 16, + 228, + 234, + 227, + 119, + 88, + 82, + 13, + 216, + 237, + 64, + 104, + 191, + 81, + 248, + 161, + 248, + 43, + 240, + 196, + 159, + 151, + 72, + 42, + 48, + 34, + 90, + 79, + 87, + 158, + 226, + 246, + 111, + 73, + 127, + 147, + 8, + 245, + 199, + 125, + 167, + 64, + 213, + 24, + 192, + 252, + 109, + 78, + 208, + 159, + 53, + 43, + 183, + 35, + 141, + 197, + 24, + 150, + 159, + 160, + 127, + 42, + 39, + 25, + 71, + 253, + 186, + 124, + 32, + 65, + 2, + 146, + 143, + 244, + 16, + 247, + 232, + 72, + 168, + 61, + 88, + 20, + 155, + 88, + 63, + 168, + 35, + 182, + 144, + 29, + 49, + 211, + 247, + 161, + 137, + 106, + 207, + 118, + 20, + 15, + 168, + 202, + 172, + 225, + 7, + 127, + 190, + 132, + 96, + 195, + 6, + 210, + 112, + 160, + 94, + 183, + 23, + 28, + 230, + 89, + 184, + 169, + 244, + 60, + 223, + 21, + 76, + 133, + 231, + 194, + 209, + 224, + 128, + 126, + 105, + 14, + 47, + 203, + 123, + 107, + 72, + 119, + 195, + 162, + 15, + 13, + 203, + 199, + 104, + 177, + 115, + 41, + 199, + 4, + 97, + 76, + 160, + 184, + 217, + 245, + 152, + 111, + 68, + 144, + 255, + 211, + 252, + 126, + 80, + 102, + 238, + 27, + 55, + 218, + 86, + 77, + 39, + 185, + 14, + 40, + 64, + 5, + 182, + 198, + 239, + 176, + 164, + 163, + 136, + 12, + 28, + 26, + 176, + 219, + 129, + 127, + 215, + 103, + 57, + 145, + 120, + 210, + 43, + 244, + 31, + 110, + 147, + 3, + 247, + 38, + 59, + 102, + 144, + 154, + 131, + 136, + 63, + 47, + 145, + 237, + 88, + 147, + 41, + 84, + 96, + 68, + 180, + 49, + 7, + 248, + 12, + 223, + 168, + 77, + 30, + 186, + 207, + 241, + 166, + 236, + 223, + 146, + 254, + 137, + 184, + 46, + 70, + 103, + 23, + 155, + 84, + 2, + 112, + 39, + 236, + 187, + 72, + 240, + 113, + 222, + 47, + 76, + 201, + 48, + 128, + 249, + 219, + 85, + 231, + 69, + 99, + 156, + 160, + 63, + 107, + 249, + 199, + 131, + 211, + 23, + 104, + 54, + 193, + 114, + 15, + 138, + 121, + 203, + 55, + 93, + 228, + 174, + 80, + 225, + 92, + 64, + 255, + 84, + 78, + 37, + 152, + 232, + 246, + 115, + 136, + 139, + 174, + 22, + 239, + 55, + 22, + 248, + 64, + 130, + 4, + 157, + 39, + 62, + 188, + 36, + 31, + 233, + 33, + 65, + 120, + 85, + 153, + 175, + 215, + 224, + 139, + 202, + 176, + 92, + 51, + 59, + 182, + 89, + 237, + 94, + 209, + 229, + 85, + 176, + 126, + 80, + 71, + 213, + 25, + 236, + 255, + 108, + 33, + 59, + 98, + 9, + 70, + 135, + 218, + 231, + 233, + 50, + 200, + 130, + 142, + 142, + 112, + 212, + 158, + 237, + 40, + 177, + 249, + 81, + 144, + 95, + 86, + 228, + 130, + 58, + 49, + 88, + 58, + 131, + 9, + 143, + 167, + 230, + 110, + 51, + 31, + 8, + 193, + 134, + 13, + 109, + 166, + 58, + 181, + 164, + 225, + 64, + 189, + 193, + 134, + 252, + 5, + 47, + 41, + 73, + 23, + 74, + 78, + 245, + 175, + 243, + 118, + 34, + 50, + 150, + 17, + 158, + 138, + 120, + 190, + 43, + 152, + 29, + 217, + 151, + 32, + 75, + 201, + 244, + 120, + 46, + 174, + 72, + 192, + 192, + 1, + 253, + 210, + 165, + 102, + 65, + 106, + 28, + 94, + 150, + 247, + 121, + 57, + 42, + 79, + 151, + 150, + 159, + 93, + 242, + 241, + 35, + 229, + 5, + 25, + 107, + 77, + 96, + 126, + 215, + 245, + 142, + 209, + 98, + 231, + 235, + 182, + 222, + 95, + 82, + 142, + 9, + 194, + 55, + 233, + 181, + 122, + 217, + 70, + 0, + 104, + 188, + 33, + 188, + 208, + 234, + 49, + 223, + 136, + 143, + 86, + 99, + 48, + 97, + 249, + 214, + 34, + 4, + 158, + 106, + 154, + 189, + 166, + 189, + 7, + 216, + 193, + 1, + 191, + 54, + 110, + 180, + 173, + 83, + 9, + 8, + 21, + 154, + 78, + 114, + 29, + 255, + 41, + 206, + 165, + 17, + 134, + 123, + 183, + 116, + 225, + 199, + 15, + 205, + 217, + 16, + 146, + 168, + 190, + 172, + 42, + 70, + 17, + 25, + 56, + 35, + 118, + 165, + 128, + 117, + 102, + 198, + 216, + 16, + 1, + 122, + 96, + 254, + 174, + 207, + 114, + 155, + 201, + 115, + 202, + 34, + 241, + 164, + 87, + 71, + 150, + 24, + 239, + 169, + 57, + 173, + 253, + 204, + 94, + 17, + 69, + 6, + 238, + 77, + 118, + 99, + 137, + 241, + 206, + 141, + 38, + 68, + 220, + 232, + 65, + 248, + 100, + 81, + 121, + 47, + 249, + 52, + 30, + 147, + 65, + 218, + 177, + 38, + 83, + 191, + 214, + 154, + 235, + 233, + 198, + 249, + 179, + 140, + 161, + 69, + 11, + 98, + 14, + 240, + 25, + 7, + 105, + 76, + 161, + 190, + 81, + 155, + 60, + 219, + 54, + 39, + 132, + 53, + 153, + 146, + 150, + 80, + 254, + 46, + 46, + 153, + 185, + 84, + 38, + 252, + 222, + 232, + 158, + 18, + 113, + 93, + 140, + 119, + 22, + 225, + 52, + 206, + 46, + 54, + 169, + 171, + 73, + 138, + 17, + 69, + 230, + 63, + 3, + 32, + 129, + 131, + 187, + 118, + 145, + 224, + 227, + 19, + 246, + 92, + 91, + 253, + 89, + 233, + 73, + 152, + 62, + 85, + 241, + 33, + 6, + 130, + 108, + 68, + 97, + 62, + 212, + 170, + 206, + 139, + 198, + 207, + 169, + 55, + 126, + 56, + 65, + 127, + 214, + 93, + 38, + 195, + 110, + 179, + 137, + 118, + 124, + 214, + 238, + 202, + 196, + 111, + 214, + 29, + 89, + 10, + 177, + 161, + 225, + 228, + 30, + 20, + 243, + 129, + 121, + 168, + 75, + 215, + 105, + 203, + 19, + 178, + 14, + 119, + 171, + 92, + 161, + 194, + 185, + 57, + 198, + 126, + 1, + 128, + 254, + 169, + 156, + 229, + 153, + 21, + 36, + 11, + 54, + 160, + 54, + 110, + 81, + 28, + 142, + 167, + 22, + 102, + 134, + 194, + 113, + 218, + 62, + 44, + 222, + 111, + 44, + 73, + 185, + 211, + 148, + 240, + 129, + 4, + 9, + 149, + 230, + 184, + 177, + 123, + 73, + 13, + 163, + 30, + 46, + 177, + 27, + 72, + 62, + 210, + 67, + 45, + 89, + 110, + 251, + 195, + 246, + 219, + 233, + 166, + 145, + 103, + 81, + 31, + 169, + 176, + 204, + 122, + 206, + 12, + 116, + 148, + 97, + 185, + 102, + 241, + 6, + 5, + 222, + 0, + 0, + 0, + 0, + 176, + 41, + 96, + 61, + 96, + 83, + 192, + 122, + 208, + 122, + 160, + 71, + 192, + 166, + 128, + 245, + 112, + 143, + 224, + 200, + 160, + 245, + 64, + 143, + 16, + 220, + 32, + 178, + 193, + 75, + 112, + 48, + 113, + 98, + 16, + 13, + 161, + 24, + 176, + 74, + 17, + 49, + 208, + 119, + 1, + 237, + 240, + 197, + 177, + 196, + 144, + 248, + 97, + 190, + 48, + 191, + 209, + 151, + 80, + 130, + 130, + 151, + 224, + 96, + 50, + 190, + 128, + 93, + 226, + 196, + 32, + 26, + 82, + 237, + 64, + 39, + 66, + 49, + 96, + 149, + 242, + 24, + 0, + 168, + 34, + 98, + 160, + 239, + 146, + 75, + 192, + 210, + 67, + 220, + 144, + 80, + 243, + 245, + 240, + 109, + 35, + 143, + 80, + 42, + 147, + 166, + 48, + 23, + 131, + 122, + 16, + 165, + 51, + 83, + 112, + 152, + 227, + 41, + 208, + 223, + 83, + 0, + 176, + 226, + 4, + 47, + 193, + 193, + 180, + 6, + 161, + 252, + 100, + 124, + 1, + 187, + 212, + 85, + 97, + 134, + 196, + 137, + 65, + 52, + 116, + 160, + 33, + 9, + 164, + 218, + 129, + 78, + 20, + 243, + 225, + 115, + 197, + 100, + 177, + 241, + 117, + 77, + 209, + 204, + 165, + 55, + 113, + 139, + 21, + 30, + 17, + 182, + 5, + 194, + 49, + 4, + 181, + 235, + 81, + 57, + 101, + 145, + 241, + 126, + 213, + 184, + 145, + 67, + 134, + 184, + 33, + 161, + 54, + 145, + 65, + 156, + 230, + 235, + 225, + 219, + 86, + 194, + 129, + 230, + 70, + 30, + 161, + 84, + 246, + 55, + 193, + 105, + 38, + 77, + 97, + 46, + 150, + 100, + 1, + 19, + 71, + 243, + 81, + 145, + 247, + 218, + 49, + 172, + 39, + 160, + 145, + 235, + 151, + 137, + 241, + 214, + 135, + 85, + 209, + 100, + 55, + 124, + 177, + 89, + 231, + 6, + 17, + 30, + 87, + 47, + 113, + 35, + 73, + 88, + 243, + 88, + 249, + 113, + 147, + 101, + 41, + 11, + 51, + 34, + 153, + 34, + 83, + 31, + 137, + 254, + 115, + 173, + 57, + 215, + 19, + 144, + 233, + 173, + 179, + 215, + 89, + 132, + 211, + 234, + 136, + 19, + 131, + 104, + 56, + 58, + 227, + 85, + 232, + 64, + 67, + 18, + 88, + 105, + 35, + 47, + 72, + 181, + 3, + 157, + 248, + 156, + 99, + 160, + 40, + 230, + 195, + 231, + 152, + 207, + 163, + 218, + 203, + 207, + 19, + 56, + 123, + 230, + 115, + 5, + 171, + 156, + 211, + 66, + 27, + 181, + 179, + 127, + 11, + 105, + 147, + 205, + 187, + 64, + 243, + 240, + 107, + 58, + 83, + 183, + 219, + 19, + 51, + 138, + 10, + 132, + 99, + 8, + 186, + 173, + 3, + 53, + 106, + 215, + 163, + 114, + 218, + 254, + 195, + 79, + 202, + 34, + 227, + 253, + 122, + 11, + 131, + 192, + 170, + 113, + 35, + 135, + 26, + 88, + 67, + 186, + 77, + 119, + 50, + 153, + 253, + 94, + 82, + 164, + 45, + 36, + 242, + 227, + 157, + 13, + 146, + 222, + 141, + 209, + 178, + 108, + 61, + 248, + 210, + 81, + 237, + 130, + 114, + 22, + 93, + 171, + 18, + 43, + 140, + 60, + 66, + 169, + 60, + 21, + 34, + 148, + 236, + 111, + 130, + 211, + 92, + 70, + 226, + 238, + 76, + 154, + 194, + 92, + 252, + 179, + 162, + 97, + 44, + 201, + 2, + 38, + 156, + 224, + 98, + 27, + 207, + 224, + 210, + 249, + 127, + 201, + 178, + 196, + 175, + 179, + 18, + 131, + 31, + 154, + 114, + 190, + 15, + 70, + 82, + 12, + 191, + 111, + 50, + 49, + 111, + 21, + 146, + 118, + 223, + 60, + 242, + 75, + 14, + 171, + 162, + 201, + 190, + 130, + 194, + 244, + 110, + 248, + 98, + 179, + 222, + 209, + 2, + 142, + 206, + 13, + 34, + 60, + 126, + 36, + 66, + 1, + 174, + 94, + 226, + 70, + 30, + 119, + 130, + 123, + 146, + 176, + 230, + 177, + 34, + 153, + 134, + 140, + 242, + 227, + 38, + 203, + 66, + 202, + 70, + 246, + 82, + 22, + 102, + 68, + 226, + 63, + 6, + 121, + 50, + 69, + 166, + 62, + 130, + 108, + 198, + 3, + 83, + 251, + 150, + 129, + 227, + 210, + 246, + 188, + 51, + 168, + 86, + 251, + 131, + 129, + 54, + 198, + 147, + 93, + 22, + 116, + 35, + 116, + 118, + 73, + 243, + 14, + 214, + 14, + 67, + 39, + 182, + 51, + 16, + 39, + 6, + 209, + 160, + 14, + 102, + 236, + 112, + 116, + 198, + 171, + 192, + 93, + 166, + 150, + 208, + 129, + 134, + 36, + 96, + 168, + 230, + 25, + 176, + 210, + 70, + 94, + 0, + 251, + 38, + 99, + 209, + 108, + 118, + 225, + 97, + 69, + 22, + 220, + 177, + 63, + 182, + 155, + 1, + 22, + 214, + 166, + 17, + 202, + 246, + 20, + 161, + 227, + 150, + 41, + 113, + 153, + 54, + 110, + 193, + 176, + 86, + 83, + 150, + 159, + 39, + 112, + 38, + 182, + 71, + 77, + 246, + 204, + 231, + 10, + 70, + 229, + 135, + 55, + 86, + 57, + 167, + 133, + 230, + 16, + 199, + 184, + 54, + 106, + 103, + 255, + 134, + 67, + 7, + 194, + 87, + 212, + 87, + 64, + 231, + 253, + 55, + 125, + 55, + 135, + 151, + 58, + 135, + 174, + 247, + 7, + 151, + 114, + 215, + 181, + 39, + 91, + 183, + 136, + 247, + 33, + 23, + 207, + 71, + 8, + 119, + 242, + 20, + 8, + 199, + 16, + 164, + 33, + 167, + 45, + 116, + 91, + 7, + 106, + 196, + 114, + 103, + 87, + 212, + 174, + 71, + 229, + 100, + 135, + 39, + 216, + 180, + 253, + 135, + 159, + 4, + 212, + 231, + 162, + 213, + 67, + 183, + 32, + 101, + 106, + 215, + 29, + 181, + 16, + 119, + 90, + 5, + 57, + 23, + 103, + 21, + 229, + 55, + 213, + 165, + 204, + 87, + 232, + 117, + 182, + 247, + 175, + 197, + 159, + 151, + 146, + 219, + 232, + 21, + 233, + 107, + 193, + 117, + 212, + 187, + 187, + 213, + 147, + 11, + 146, + 181, + 174, + 27, + 78, + 149, + 28, + 171, + 103, + 245, + 33, + 123, + 29, + 85, + 102, + 203, + 52, + 53, + 91, + 26, + 163, + 101, + 217, + 170, + 138, + 5, + 228, + 122, + 240, + 165, + 163, + 202, + 217, + 197, + 158, + 218, + 5, + 229, + 44, + 106, + 44, + 133, + 17, + 186, + 86, + 37, + 86, + 10, + 127, + 69, + 107, + 89, + 127, + 245, + 137, + 233, + 86, + 149, + 180, + 57, + 44, + 53, + 243, + 137, + 5, + 85, + 206, + 153, + 217, + 117, + 124, + 41, + 240, + 21, + 65, + 249, + 138, + 181, + 6, + 73, + 163, + 213, + 59, + 152, + 52, + 133, + 185, + 40, + 29, + 229, + 132, + 248, + 103, + 69, + 195, + 72, + 78, + 37, + 254, + 88, + 146, + 5, + 76, + 232, + 187, + 101, + 113, + 56, + 193, + 197, + 54, + 136, + 232, + 165, + 11, + 223, + 199, + 212, + 40, + 111, + 238, + 180, + 21, + 191, + 148, + 20, + 82, + 15, + 189, + 116, + 111, + 31, + 97, + 84, + 221, + 175, + 72, + 52, + 224, + 127, + 50, + 148, + 167, + 207, + 27, + 244, + 154, + 30, + 140, + 164, + 24, + 174, + 165, + 196, + 37, + 126, + 223, + 100, + 98, + 206, + 246, + 4, + 95, + 222, + 42, + 36, + 237, + 110, + 3, + 68, + 208, + 190, + 121, + 228, + 151, + 14, + 80, + 132, + 170, + 93, + 80, + 52, + 72, + 237, + 121, + 84, + 117, + 61, + 3, + 244, + 50, + 141, + 42, + 148, + 15, + 157, + 246, + 180, + 189, + 45, + 223, + 212, + 128, + 253, + 165, + 116, + 199, + 77, + 140, + 20, + 250, + 156, + 27, + 68, + 120, + 44, + 50, + 36, + 69, + 252, + 72, + 132, + 2, + 76, + 97, + 228, + 63, + 92, + 189, + 196, + 141, + 236, + 148, + 164, + 176, + 60, + 238, + 4, + 247, + 140, + 199, + 100, + 202, + 0, + 0, + 0, + 0, + 165, + 211, + 92, + 203, + 11, + 161, + 200, + 77, + 174, + 114, + 148, + 134, + 22, + 66, + 145, + 155, + 179, + 145, + 205, + 80, + 29, + 227, + 89, + 214, + 184, + 48, + 5, + 29, + 109, + 130, + 83, + 236, + 200, + 81, + 15, + 39, + 102, + 35, + 155, + 161, + 195, + 240, + 199, + 106, + 123, + 192, + 194, + 119, + 222, + 19, + 158, + 188, + 112, + 97, + 10, + 58, + 213, + 178, + 86, + 241, + 155, + 2, + 214, + 3, + 62, + 209, + 138, + 200, + 144, + 163, + 30, + 78, + 53, + 112, + 66, + 133, + 141, + 64, + 71, + 152, + 40, + 147, + 27, + 83, + 134, + 225, + 143, + 213, + 35, + 50, + 211, + 30, + 246, + 128, + 133, + 239, + 83, + 83, + 217, + 36, + 253, + 33, + 77, + 162, + 88, + 242, + 17, + 105, + 224, + 194, + 20, + 116, + 69, + 17, + 72, + 191, + 235, + 99, + 220, + 57, + 78, + 176, + 128, + 242, + 54, + 5, + 172, + 7, + 147, + 214, + 240, + 204, + 61, + 164, + 100, + 74, + 152, + 119, + 56, + 129, + 32, + 71, + 61, + 156, + 133, + 148, + 97, + 87, + 43, + 230, + 245, + 209, + 142, + 53, + 169, + 26, + 91, + 135, + 255, + 235, + 254, + 84, + 163, + 32, + 80, + 38, + 55, + 166, + 245, + 245, + 107, + 109, + 77, + 197, + 110, + 112, + 232, + 22, + 50, + 187, + 70, + 100, + 166, + 61, + 227, + 183, + 250, + 246, + 173, + 7, + 122, + 4, + 8, + 212, + 38, + 207, + 166, + 166, + 178, + 73, + 3, + 117, + 238, + 130, + 187, + 69, + 235, + 159, + 30, + 150, + 183, + 84, + 176, + 228, + 35, + 210, + 21, + 55, + 127, + 25, + 192, + 133, + 41, + 232, + 101, + 86, + 117, + 35, + 203, + 36, + 225, + 165, + 110, + 247, + 189, + 110, + 214, + 199, + 184, + 115, + 115, + 20, + 228, + 184, + 221, + 102, + 112, + 62, + 120, + 181, + 44, + 245, + 108, + 10, + 88, + 15, + 201, + 217, + 4, + 196, + 103, + 171, + 144, + 66, + 194, + 120, + 204, + 137, + 122, + 72, + 201, + 148, + 223, + 155, + 149, + 95, + 113, + 233, + 1, + 217, + 212, + 58, + 93, + 18, + 1, + 136, + 11, + 227, + 164, + 91, + 87, + 40, + 10, + 41, + 195, + 174, + 175, + 250, + 159, + 101, + 23, + 202, + 154, + 120, + 178, + 25, + 198, + 179, + 28, + 107, + 82, + 53, + 185, + 184, + 14, + 254, + 247, + 8, + 142, + 12, + 82, + 219, + 210, + 199, + 252, + 169, + 70, + 65, + 89, + 122, + 26, + 138, + 225, + 74, + 31, + 151, + 68, + 153, + 67, + 92, + 234, + 235, + 215, + 218, + 79, + 56, + 139, + 17, + 154, + 138, + 221, + 224, + 63, + 89, + 129, + 43, + 145, + 43, + 21, + 173, + 52, + 248, + 73, + 102, + 140, + 200, + 76, + 123, + 41, + 27, + 16, + 176, + 135, + 105, + 132, + 54, + 34, + 186, + 216, + 253, + 90, + 15, + 244, + 8, + 255, + 220, + 168, + 195, + 81, + 174, + 60, + 69, + 244, + 125, + 96, + 142, + 76, + 77, + 101, + 147, + 233, + 158, + 57, + 88, + 71, + 236, + 173, + 222, + 226, + 63, + 241, + 21, + 55, + 141, + 167, + 228, + 146, + 94, + 251, + 47, + 60, + 44, + 111, + 169, + 153, + 255, + 51, + 98, + 33, + 207, + 54, + 127, + 132, + 28, + 106, + 180, + 42, + 110, + 254, + 50, + 143, + 189, + 162, + 249, + 193, + 13, + 34, + 11, + 100, + 222, + 126, + 192, + 202, + 172, + 234, + 70, + 111, + 127, + 182, + 141, + 215, + 79, + 179, + 144, + 114, + 156, + 239, + 91, + 220, + 238, + 123, + 221, + 121, + 61, + 39, + 22, + 172, + 143, + 113, + 231, + 9, + 92, + 45, + 44, + 167, + 46, + 185, + 170, + 2, + 253, + 229, + 97, + 186, + 205, + 224, + 124, + 31, + 30, + 188, + 183, + 177, + 108, + 40, + 49, + 20, + 191, + 116, + 250, + 216, + 20, + 176, + 30, + 125, + 199, + 236, + 213, + 211, + 181, + 120, + 83, + 118, + 102, + 36, + 152, + 206, + 86, + 33, + 133, + 107, + 133, + 125, + 78, + 197, + 247, + 233, + 200, + 96, + 36, + 181, + 3, + 181, + 150, + 227, + 242, + 16, + 69, + 191, + 57, + 190, + 55, + 43, + 191, + 27, + 228, + 119, + 116, + 163, + 212, + 114, + 105, + 6, + 7, + 46, + 162, + 168, + 117, + 186, + 36, + 13, + 166, + 230, + 239, + 67, + 22, + 102, + 29, + 230, + 197, + 58, + 214, + 72, + 183, + 174, + 80, + 237, + 100, + 242, + 155, + 85, + 84, + 247, + 134, + 240, + 135, + 171, + 77, + 94, + 245, + 63, + 203, + 251, + 38, + 99, + 0, + 46, + 148, + 53, + 241, + 139, + 71, + 105, + 58, + 37, + 53, + 253, + 188, + 128, + 230, + 161, + 119, + 56, + 214, + 164, + 106, + 157, + 5, + 248, + 161, + 51, + 119, + 108, + 39, + 150, + 164, + 48, + 236, + 238, + 17, + 28, + 25, + 75, + 194, + 64, + 210, + 229, + 176, + 212, + 84, + 64, + 99, + 136, + 159, + 248, + 83, + 141, + 130, + 93, + 128, + 209, + 73, + 243, + 242, + 69, + 207, + 86, + 33, + 25, + 4, + 131, + 147, + 79, + 245, + 38, + 64, + 19, + 62, + 136, + 50, + 135, + 184, + 45, + 225, + 219, + 115, + 149, + 209, + 222, + 110, + 48, + 2, + 130, + 165, + 158, + 112, + 22, + 35, + 59, + 163, + 74, + 232, + 117, + 19, + 202, + 26, + 208, + 192, + 150, + 209, + 126, + 178, + 2, + 87, + 219, + 97, + 94, + 156, + 99, + 81, + 91, + 129, + 198, + 130, + 7, + 74, + 104, + 240, + 147, + 204, + 205, + 35, + 207, + 7, + 24, + 145, + 153, + 246, + 189, + 66, + 197, + 61, + 19, + 48, + 81, + 187, + 182, + 227, + 13, + 112, + 14, + 211, + 8, + 109, + 171, + 0, + 84, + 166, + 5, + 114, + 192, + 32, + 160, + 161, + 156, + 235, + 180, + 30, + 232, + 17, + 17, + 205, + 180, + 218, + 191, + 191, + 32, + 92, + 26, + 108, + 124, + 151, + 162, + 92, + 121, + 138, + 7, + 143, + 37, + 65, + 169, + 253, + 177, + 199, + 12, + 46, + 237, + 12, + 217, + 156, + 187, + 253, + 124, + 79, + 231, + 54, + 210, + 61, + 115, + 176, + 119, + 238, + 47, + 123, + 207, + 222, + 42, + 102, + 106, + 13, + 118, + 173, + 196, + 127, + 226, + 43, + 97, + 172, + 190, + 224, + 47, + 28, + 62, + 18, + 138, + 207, + 98, + 217, + 36, + 189, + 246, + 95, + 129, + 110, + 170, + 148, + 57, + 94, + 175, + 137, + 156, + 141, + 243, + 66, + 50, + 255, + 103, + 196, + 151, + 44, + 59, + 15, + 66, + 158, + 109, + 254, + 231, + 77, + 49, + 53, + 73, + 63, + 165, + 179, + 236, + 236, + 249, + 120, + 84, + 220, + 252, + 101, + 241, + 15, + 160, + 174, + 95, + 125, + 52, + 40, + 250, + 174, + 104, + 227, + 130, + 27, + 68, + 22, + 39, + 200, + 24, + 221, + 137, + 186, + 140, + 91, + 44, + 105, + 208, + 144, + 148, + 89, + 213, + 141, + 49, + 138, + 137, + 70, + 159, + 248, + 29, + 192, + 58, + 43, + 65, + 11, + 239, + 153, + 23, + 250, + 74, + 74, + 75, + 49, + 228, + 56, + 223, + 183, + 65, + 235, + 131, + 124, + 249, + 219, + 134, + 97, + 92, + 8, + 218, + 170, + 242, + 122, + 78, + 44, + 87, + 169, + 18, + 231, + 25, + 25, + 146, + 21, + 188, + 202, + 206, + 222, + 18, + 184, + 90, + 88, + 183, + 107, + 6, + 147, + 15, + 91, + 3, + 142, + 170, + 136, + 95, + 69, + 4, + 250, + 203, + 195, + 161, + 41, + 151, + 8, + 116, + 155, + 193, + 249, + 209, + 72, + 157, + 50, + 127, + 58, + 9, + 180, + 218, + 233, + 85, + 127, + 98, + 217, + 80, + 98, + 199, + 10, + 12, + 169, + 105, + 120, + 152, + 47, + 204, + 171, + 196, + 228, + 0, + 0, + 0, + 0, + 180, + 11, + 119, + 166, + 41, + 17, + 159, + 151, + 157, + 26, + 232, + 49, + 19, + 36, + 79, + 244, + 167, + 47, + 56, + 82, + 58, + 53, + 208, + 99, + 142, + 62, + 167, + 197, + 103, + 78, + 239, + 51, + 211, + 69, + 152, + 149, + 78, + 95, + 112, + 164, + 250, + 84, + 7, + 2, + 116, + 106, + 160, + 199, + 192, + 97, + 215, + 97, + 93, + 123, + 63, + 80, + 233, + 112, + 72, + 246, + 206, + 156, + 222, + 103, + 122, + 151, + 169, + 193, + 231, + 141, + 65, + 240, + 83, + 134, + 54, + 86, + 221, + 184, + 145, + 147, + 105, + 179, + 230, + 53, + 244, + 169, + 14, + 4, + 64, + 162, + 121, + 162, + 169, + 210, + 49, + 84, + 29, + 217, + 70, + 242, + 128, + 195, + 174, + 195, + 52, + 200, + 217, + 101, + 186, + 246, + 126, + 160, + 14, + 253, + 9, + 6, + 147, + 231, + 225, + 55, + 39, + 236, + 150, + 145, + 156, + 57, + 189, + 207, + 40, + 50, + 202, + 105, + 181, + 40, + 34, + 88, + 1, + 35, + 85, + 254, + 143, + 29, + 242, + 59, + 59, + 22, + 133, + 157, + 166, + 12, + 109, + 172, + 18, + 7, + 26, + 10, + 251, + 119, + 82, + 252, + 79, + 124, + 37, + 90, + 210, + 102, + 205, + 107, + 102, + 109, + 186, + 205, + 232, + 83, + 29, + 8, + 92, + 88, + 106, + 174, + 193, + 66, + 130, + 159, + 117, + 73, + 245, + 57, + 82, + 165, + 99, + 168, + 230, + 174, + 20, + 14, + 123, + 180, + 252, + 63, + 207, + 191, + 139, + 153, + 65, + 129, + 44, + 92, + 245, + 138, + 91, + 250, + 104, + 144, + 179, + 203, + 220, + 155, + 196, + 109, + 53, + 235, + 140, + 155, + 129, + 224, + 251, + 61, + 28, + 250, + 19, + 12, + 168, + 241, + 100, + 170, + 38, + 207, + 195, + 111, + 146, + 196, + 180, + 201, + 15, + 222, + 92, + 248, + 187, + 213, + 43, + 94, + 121, + 117, + 11, + 68, + 205, + 126, + 124, + 226, + 80, + 100, + 148, + 211, + 228, + 111, + 227, + 117, + 106, + 81, + 68, + 176, + 222, + 90, + 51, + 22, + 67, + 64, + 219, + 39, + 247, + 75, + 172, + 129, + 30, + 59, + 228, + 119, + 170, + 48, + 147, + 209, + 55, + 42, + 123, + 224, + 131, + 33, + 12, + 70, + 13, + 31, + 171, + 131, + 185, + 20, + 220, + 37, + 36, + 14, + 52, + 20, + 144, + 5, + 67, + 178, + 183, + 233, + 213, + 35, + 3, + 226, + 162, + 133, + 158, + 248, + 74, + 180, + 42, + 243, + 61, + 18, + 164, + 205, + 154, + 215, + 16, + 198, + 237, + 113, + 141, + 220, + 5, + 64, + 57, + 215, + 114, + 230, + 208, + 167, + 58, + 16, + 100, + 172, + 77, + 182, + 249, + 182, + 165, + 135, + 77, + 189, + 210, + 33, + 195, + 131, + 117, + 228, + 119, + 136, + 2, + 66, + 234, + 146, + 234, + 115, + 94, + 153, + 157, + 213, + 229, + 76, + 182, + 139, + 81, + 71, + 193, + 45, + 204, + 93, + 41, + 28, + 120, + 86, + 94, + 186, + 246, + 104, + 249, + 127, + 66, + 99, + 142, + 217, + 223, + 121, + 102, + 232, + 107, + 114, + 17, + 78, + 130, + 2, + 89, + 184, + 54, + 9, + 46, + 30, + 171, + 19, + 198, + 47, + 31, + 24, + 177, + 137, + 145, + 38, + 22, + 76, + 37, + 45, + 97, + 234, + 184, + 55, + 137, + 219, + 12, + 60, + 254, + 125, + 43, + 208, + 104, + 236, + 159, + 219, + 31, + 74, + 2, + 193, + 247, + 123, + 182, + 202, + 128, + 221, + 56, + 244, + 39, + 24, + 140, + 255, + 80, + 190, + 17, + 229, + 184, + 143, + 165, + 238, + 207, + 41, + 76, + 158, + 135, + 223, + 248, + 149, + 240, + 121, + 101, + 143, + 24, + 72, + 209, + 132, + 111, + 238, + 95, + 186, + 200, + 43, + 235, + 177, + 191, + 141, + 118, + 171, + 87, + 188, + 194, + 160, + 32, + 26, + 242, + 234, + 22, + 136, + 70, + 225, + 97, + 46, + 219, + 251, + 137, + 31, + 111, + 240, + 254, + 185, + 225, + 206, + 89, + 124, + 85, + 197, + 46, + 218, + 200, + 223, + 198, + 235, + 124, + 212, + 177, + 77, + 149, + 164, + 249, + 187, + 33, + 175, + 142, + 29, + 188, + 181, + 102, + 44, + 8, + 190, + 17, + 138, + 134, + 128, + 182, + 79, + 50, + 139, + 193, + 233, + 175, + 145, + 41, + 216, + 27, + 154, + 94, + 126, + 60, + 118, + 200, + 239, + 136, + 125, + 191, + 73, + 21, + 103, + 87, + 120, + 161, + 108, + 32, + 222, + 47, + 82, + 135, + 27, + 155, + 89, + 240, + 189, + 6, + 67, + 24, + 140, + 178, + 72, + 111, + 42, + 91, + 56, + 39, + 220, + 239, + 51, + 80, + 122, + 114, + 41, + 184, + 75, + 198, + 34, + 207, + 237, + 72, + 28, + 104, + 40, + 252, + 23, + 31, + 142, + 97, + 13, + 247, + 191, + 213, + 6, + 128, + 25, + 110, + 211, + 171, + 71, + 218, + 216, + 220, + 225, + 71, + 194, + 52, + 208, + 243, + 201, + 67, + 118, + 125, + 247, + 228, + 179, + 201, + 252, + 147, + 21, + 84, + 230, + 123, + 36, + 224, + 237, + 12, + 130, + 9, + 157, + 68, + 116, + 189, + 150, + 51, + 210, + 32, + 140, + 219, + 227, + 148, + 135, + 172, + 69, + 26, + 185, + 11, + 128, + 174, + 178, + 124, + 38, + 51, + 168, + 148, + 23, + 135, + 163, + 227, + 177, + 160, + 79, + 117, + 32, + 20, + 68, + 2, + 134, + 137, + 94, + 234, + 183, + 61, + 85, + 157, + 17, + 179, + 107, + 58, + 212, + 7, + 96, + 77, + 114, + 154, + 122, + 165, + 67, + 46, + 113, + 210, + 229, + 199, + 1, + 154, + 19, + 115, + 10, + 237, + 181, + 238, + 16, + 5, + 132, + 90, + 27, + 114, + 34, + 212, + 37, + 213, + 231, + 96, + 46, + 162, + 65, + 253, + 52, + 74, + 112, + 73, + 63, + 61, + 214, + 139, + 159, + 29, + 204, + 63, + 148, + 106, + 106, + 162, + 142, + 130, + 91, + 22, + 133, + 245, + 253, + 152, + 187, + 82, + 56, + 44, + 176, + 37, + 158, + 177, + 170, + 205, + 175, + 5, + 161, + 186, + 9, + 236, + 209, + 242, + 255, + 88, + 218, + 133, + 89, + 197, + 192, + 109, + 104, + 113, + 203, + 26, + 206, + 255, + 245, + 189, + 11, + 75, + 254, + 202, + 173, + 214, + 228, + 34, + 156, + 98, + 239, + 85, + 58, + 69, + 3, + 195, + 171, + 241, + 8, + 180, + 13, + 108, + 18, + 92, + 60, + 216, + 25, + 43, + 154, + 86, + 39, + 140, + 95, + 226, + 44, + 251, + 249, + 127, + 54, + 19, + 200, + 203, + 61, + 100, + 110, + 34, + 77, + 44, + 152, + 150, + 70, + 91, + 62, + 11, + 92, + 179, + 15, + 191, + 87, + 196, + 169, + 49, + 105, + 99, + 108, + 133, + 98, + 20, + 202, + 24, + 120, + 252, + 251, + 172, + 115, + 139, + 93, + 23, + 166, + 160, + 3, + 163, + 173, + 215, + 165, + 62, + 183, + 63, + 148, + 138, + 188, + 72, + 50, + 4, + 130, + 239, + 247, + 176, + 137, + 152, + 81, + 45, + 147, + 112, + 96, + 153, + 152, + 7, + 198, + 112, + 232, + 79, + 48, + 196, + 227, + 56, + 150, + 89, + 249, + 208, + 167, + 237, + 242, + 167, + 1, + 99, + 204, + 0, + 196, + 215, + 199, + 119, + 98, + 74, + 221, + 159, + 83, + 254, + 214, + 232, + 245, + 217, + 58, + 126, + 100, + 109, + 49, + 9, + 194, + 240, + 43, + 225, + 243, + 68, + 32, + 150, + 85, + 202, + 30, + 49, + 144, + 126, + 21, + 70, + 54, + 227, + 15, + 174, + 7, + 87, + 4, + 217, + 161, + 190, + 116, + 145, + 87, + 10, + 127, + 230, + 241, + 151, + 101, + 14, + 192, + 35, + 110, + 121, + 102, + 173, + 80, + 222, + 163, + 25, + 91, + 169, + 5, + 132, + 65, + 65, + 52, + 48, + 74, + 54, + 146, + 0, + 0, + 0, + 0, + 158, + 0, + 170, + 204, + 125, + 7, + 37, + 66, + 227, + 7, + 143, + 142, + 250, + 14, + 74, + 132, + 100, + 14, + 224, + 72, + 135, + 9, + 111, + 198, + 25, + 9, + 197, + 10, + 181, + 27, + 229, + 211, + 43, + 27, + 79, + 31, + 200, + 28, + 192, + 145, + 86, + 28, + 106, + 93, + 79, + 21, + 175, + 87, + 209, + 21, + 5, + 155, + 50, + 18, + 138, + 21, + 172, + 18, + 32, + 217, + 43, + 49, + 187, + 124, + 181, + 49, + 17, + 176, + 86, + 54, + 158, + 62, + 200, + 54, + 52, + 242, + 209, + 63, + 241, + 248, + 79, + 63, + 91, + 52, + 172, + 56, + 212, + 186, + 50, + 56, + 126, + 118, + 158, + 42, + 94, + 175, + 0, + 42, + 244, + 99, + 227, + 45, + 123, + 237, + 125, + 45, + 209, + 33, + 100, + 36, + 20, + 43, + 250, + 36, + 190, + 231, + 25, + 35, + 49, + 105, + 135, + 35, + 155, + 165, + 86, + 98, + 118, + 249, + 200, + 98, + 220, + 53, + 43, + 101, + 83, + 187, + 181, + 101, + 249, + 119, + 172, + 108, + 60, + 125, + 50, + 108, + 150, + 177, + 209, + 107, + 25, + 63, + 79, + 107, + 179, + 243, + 227, + 121, + 147, + 42, + 125, + 121, + 57, + 230, + 158, + 126, + 182, + 104, + 0, + 126, + 28, + 164, + 25, + 119, + 217, + 174, + 135, + 119, + 115, + 98, + 100, + 112, + 252, + 236, + 250, + 112, + 86, + 32, + 125, + 83, + 205, + 133, + 227, + 83, + 103, + 73, + 0, + 84, + 232, + 199, + 158, + 84, + 66, + 11, + 135, + 93, + 135, + 1, + 25, + 93, + 45, + 205, + 250, + 90, + 162, + 67, + 100, + 90, + 8, + 143, + 200, + 72, + 40, + 86, + 86, + 72, + 130, + 154, + 181, + 79, + 13, + 20, + 43, + 79, + 167, + 216, + 50, + 70, + 98, + 210, + 172, + 70, + 200, + 30, + 79, + 65, + 71, + 144, + 209, + 65, + 237, + 92, + 237, + 194, + 157, + 41, + 115, + 194, + 55, + 229, + 144, + 197, + 184, + 107, + 14, + 197, + 18, + 167, + 23, + 204, + 215, + 173, + 137, + 204, + 125, + 97, + 106, + 203, + 242, + 239, + 244, + 203, + 88, + 35, + 88, + 217, + 120, + 250, + 198, + 217, + 210, + 54, + 37, + 222, + 93, + 184, + 187, + 222, + 247, + 116, + 162, + 215, + 50, + 126, + 60, + 215, + 152, + 178, + 223, + 208, + 23, + 60, + 65, + 208, + 189, + 240, + 198, + 243, + 38, + 85, + 88, + 243, + 140, + 153, + 187, + 244, + 3, + 23, + 37, + 244, + 169, + 219, + 60, + 253, + 108, + 209, + 162, + 253, + 198, + 29, + 65, + 250, + 73, + 147, + 223, + 250, + 227, + 95, + 115, + 232, + 195, + 134, + 237, + 232, + 105, + 74, + 14, + 239, + 230, + 196, + 144, + 239, + 76, + 8, + 137, + 230, + 137, + 2, + 23, + 230, + 35, + 206, + 244, + 225, + 172, + 64, + 106, + 225, + 6, + 140, + 187, + 160, + 235, + 208, + 37, + 160, + 65, + 28, + 198, + 167, + 206, + 146, + 88, + 167, + 100, + 94, + 65, + 174, + 161, + 84, + 223, + 174, + 11, + 152, + 60, + 169, + 132, + 22, + 162, + 169, + 46, + 218, + 14, + 187, + 14, + 3, + 144, + 187, + 164, + 207, + 115, + 188, + 43, + 65, + 237, + 188, + 129, + 141, + 244, + 181, + 68, + 135, + 106, + 181, + 238, + 75, + 137, + 178, + 97, + 197, + 23, + 178, + 203, + 9, + 144, + 145, + 80, + 172, + 14, + 145, + 250, + 96, + 237, + 150, + 117, + 238, + 115, + 150, + 223, + 34, + 106, + 159, + 26, + 40, + 244, + 159, + 176, + 228, + 23, + 152, + 63, + 106, + 137, + 152, + 149, + 166, + 37, + 138, + 181, + 127, + 187, + 138, + 31, + 179, + 88, + 141, + 144, + 61, + 198, + 141, + 58, + 241, + 223, + 132, + 255, + 251, + 65, + 132, + 85, + 55, + 162, + 131, + 218, + 185, + 60, + 131, + 112, + 117, + 218, + 133, + 59, + 83, + 68, + 133, + 145, + 159, + 167, + 130, + 30, + 17, + 57, + 130, + 180, + 221, + 32, + 139, + 113, + 215, + 190, + 139, + 219, + 27, + 93, + 140, + 84, + 149, + 195, + 140, + 254, + 89, + 111, + 158, + 222, + 128, + 241, + 158, + 116, + 76, + 18, + 153, + 251, + 194, + 140, + 153, + 81, + 14, + 149, + 144, + 148, + 4, + 11, + 144, + 62, + 200, + 232, + 151, + 177, + 70, + 118, + 151, + 27, + 138, + 241, + 180, + 128, + 47, + 111, + 180, + 42, + 227, + 140, + 179, + 165, + 109, + 18, + 179, + 15, + 161, + 11, + 186, + 202, + 171, + 149, + 186, + 96, + 103, + 118, + 189, + 239, + 233, + 232, + 189, + 69, + 37, + 68, + 175, + 101, + 252, + 218, + 175, + 207, + 48, + 57, + 168, + 64, + 190, + 167, + 168, + 234, + 114, + 190, + 161, + 47, + 120, + 32, + 161, + 133, + 180, + 195, + 166, + 10, + 58, + 93, + 166, + 160, + 246, + 140, + 231, + 77, + 170, + 18, + 231, + 231, + 102, + 241, + 224, + 104, + 232, + 111, + 224, + 194, + 36, + 118, + 233, + 7, + 46, + 232, + 233, + 173, + 226, + 11, + 238, + 34, + 108, + 149, + 238, + 136, + 160, + 57, + 252, + 168, + 121, + 167, + 252, + 2, + 181, + 68, + 251, + 141, + 59, + 218, + 251, + 39, + 247, + 195, + 242, + 226, + 253, + 93, + 242, + 72, + 49, + 190, + 245, + 199, + 191, + 32, + 245, + 109, + 115, + 167, + 214, + 246, + 214, + 57, + 214, + 92, + 26, + 218, + 209, + 211, + 148, + 68, + 209, + 121, + 88, + 93, + 216, + 188, + 82, + 195, + 216, + 22, + 158, + 32, + 223, + 153, + 16, + 190, + 223, + 51, + 220, + 18, + 205, + 19, + 5, + 140, + 205, + 185, + 201, + 111, + 202, + 54, + 71, + 241, + 202, + 156, + 139, + 232, + 195, + 89, + 129, + 118, + 195, + 243, + 77, + 149, + 196, + 124, + 195, + 11, + 196, + 214, + 15, + 55, + 71, + 166, + 122, + 169, + 71, + 12, + 182, + 74, + 64, + 131, + 56, + 212, + 64, + 41, + 244, + 205, + 73, + 236, + 254, + 83, + 73, + 70, + 50, + 176, + 78, + 201, + 188, + 46, + 78, + 99, + 112, + 130, + 92, + 67, + 169, + 28, + 92, + 233, + 101, + 255, + 91, + 102, + 235, + 97, + 91, + 204, + 39, + 120, + 82, + 9, + 45, + 230, + 82, + 163, + 225, + 5, + 85, + 44, + 111, + 155, + 85, + 134, + 163, + 28, + 118, + 29, + 6, + 130, + 118, + 183, + 202, + 97, + 113, + 56, + 68, + 255, + 113, + 146, + 136, + 230, + 120, + 87, + 130, + 120, + 120, + 253, + 78, + 155, + 127, + 114, + 192, + 5, + 127, + 216, + 12, + 169, + 109, + 248, + 213, + 55, + 109, + 82, + 25, + 212, + 106, + 221, + 151, + 74, + 106, + 119, + 91, + 83, + 99, + 178, + 81, + 205, + 99, + 24, + 157, + 46, + 100, + 151, + 19, + 176, + 100, + 61, + 223, + 97, + 37, + 208, + 131, + 255, + 37, + 122, + 79, + 28, + 34, + 245, + 193, + 130, + 34, + 95, + 13, + 155, + 43, + 154, + 7, + 5, + 43, + 48, + 203, + 230, + 44, + 191, + 69, + 120, + 44, + 21, + 137, + 212, + 62, + 53, + 80, + 74, + 62, + 159, + 156, + 169, + 57, + 16, + 18, + 55, + 57, + 186, + 222, + 46, + 48, + 127, + 212, + 176, + 48, + 213, + 24, + 83, + 55, + 90, + 150, + 205, + 55, + 240, + 90, + 74, + 20, + 107, + 255, + 212, + 20, + 193, + 51, + 55, + 19, + 78, + 189, + 169, + 19, + 228, + 113, + 176, + 26, + 33, + 123, + 46, + 26, + 139, + 183, + 205, + 29, + 4, + 57, + 83, + 29, + 174, + 245, + 255, + 15, + 142, + 44, + 97, + 15, + 36, + 224, + 130, + 8, + 171, + 110, + 28, + 8, + 1, + 162, + 5, + 1, + 196, + 168, + 155, + 1, + 110, + 100, + 120, + 6, + 225, + 234, + 230, + 6, + 75, + 38, + 0, + 0, + 0, + 0, + 67, + 20, + 123, + 23, + 134, + 40, + 246, + 46, + 197, + 60, + 141, + 57, + 12, + 81, + 236, + 93, + 79, + 69, + 151, + 74, + 138, + 121, + 26, + 115, + 201, + 109, + 97, + 100, + 24, + 162, + 216, + 187, + 91, + 182, + 163, + 172, + 158, + 138, + 46, + 149, + 221, + 158, + 85, + 130, + 20, + 243, + 52, + 230, + 87, + 231, + 79, + 241, + 146, + 219, + 194, + 200, + 209, + 207, + 185, + 223, + 113, + 66, + 192, + 172, + 50, + 86, + 187, + 187, + 247, + 106, + 54, + 130, + 180, + 126, + 77, + 149, + 125, + 19, + 44, + 241, + 62, + 7, + 87, + 230, + 251, + 59, + 218, + 223, + 184, + 47, + 161, + 200, + 105, + 224, + 24, + 23, + 42, + 244, + 99, + 0, + 239, + 200, + 238, + 57, + 172, + 220, + 149, + 46, + 101, + 177, + 244, + 74, + 38, + 165, + 143, + 93, + 227, + 153, + 2, + 100, + 160, + 141, + 121, + 115, + 163, + 130, + 241, + 130, + 224, + 150, + 138, + 149, + 37, + 170, + 7, + 172, + 102, + 190, + 124, + 187, + 175, + 211, + 29, + 223, + 236, + 199, + 102, + 200, + 41, + 251, + 235, + 241, + 106, + 239, + 144, + 230, + 187, + 32, + 41, + 57, + 248, + 52, + 82, + 46, + 61, + 8, + 223, + 23, + 126, + 28, + 164, + 0, + 183, + 113, + 197, + 100, + 244, + 101, + 190, + 115, + 49, + 89, + 51, + 74, + 114, + 77, + 72, + 93, + 210, + 192, + 49, + 46, + 145, + 212, + 74, + 57, + 84, + 232, + 199, + 0, + 23, + 252, + 188, + 23, + 222, + 145, + 221, + 115, + 157, + 133, + 166, + 100, + 88, + 185, + 43, + 93, + 27, + 173, + 80, + 74, + 202, + 98, + 233, + 149, + 137, + 118, + 146, + 130, + 76, + 74, + 31, + 187, + 15, + 94, + 100, + 172, + 198, + 51, + 5, + 200, + 133, + 39, + 126, + 223, + 64, + 27, + 243, + 230, + 3, + 15, + 136, + 241, + 7, + 3, + 146, + 222, + 68, + 23, + 233, + 201, + 129, + 43, + 100, + 240, + 194, + 63, + 31, + 231, + 11, + 82, + 126, + 131, + 72, + 70, + 5, + 148, + 141, + 122, + 136, + 173, + 206, + 110, + 243, + 186, + 31, + 161, + 74, + 101, + 92, + 181, + 49, + 114, + 153, + 137, + 188, + 75, + 218, + 157, + 199, + 92, + 19, + 240, + 166, + 56, + 80, + 228, + 221, + 47, + 149, + 216, + 80, + 22, + 214, + 204, + 43, + 1, + 118, + 65, + 82, + 114, + 53, + 85, + 41, + 101, + 240, + 105, + 164, + 92, + 179, + 125, + 223, + 75, + 122, + 16, + 190, + 47, + 57, + 4, + 197, + 56, + 252, + 56, + 72, + 1, + 191, + 44, + 51, + 22, + 110, + 227, + 138, + 201, + 45, + 247, + 241, + 222, + 232, + 203, + 124, + 231, + 171, + 223, + 7, + 240, + 98, + 178, + 102, + 148, + 33, + 166, + 29, + 131, + 228, + 154, + 144, + 186, + 167, + 142, + 235, + 173, + 164, + 129, + 99, + 92, + 231, + 149, + 24, + 75, + 34, + 169, + 149, + 114, + 97, + 189, + 238, + 101, + 168, + 208, + 143, + 1, + 235, + 196, + 244, + 22, + 46, + 248, + 121, + 47, + 109, + 236, + 2, + 56, + 188, + 35, + 187, + 231, + 255, + 55, + 192, + 240, + 58, + 11, + 77, + 201, + 121, + 31, + 54, + 222, + 176, + 114, + 87, + 186, + 243, + 102, + 44, + 173, + 54, + 90, + 161, + 148, + 117, + 78, + 218, + 131, + 213, + 195, + 163, + 240, + 150, + 215, + 216, + 231, + 83, + 235, + 85, + 222, + 16, + 255, + 46, + 201, + 217, + 146, + 79, + 173, + 154, + 134, + 52, + 186, + 95, + 186, + 185, + 131, + 28, + 174, + 194, + 148, + 205, + 97, + 123, + 75, + 142, + 117, + 0, + 92, + 75, + 73, + 141, + 101, + 8, + 93, + 246, + 114, + 193, + 48, + 151, + 22, + 130, + 36, + 236, + 1, + 71, + 24, + 97, + 56, + 4, + 12, + 26, + 47, + 79, + 0, + 85, + 102, + 12, + 20, + 46, + 113, + 201, + 40, + 163, + 72, + 138, + 60, + 216, + 95, + 67, + 81, + 185, + 59, + 0, + 69, + 194, + 44, + 197, + 121, + 79, + 21, + 134, + 109, + 52, + 2, + 87, + 162, + 141, + 221, + 20, + 182, + 246, + 202, + 209, + 138, + 123, + 243, + 146, + 158, + 0, + 228, + 91, + 243, + 97, + 128, + 24, + 231, + 26, + 151, + 221, + 219, + 151, + 174, + 158, + 207, + 236, + 185, + 62, + 66, + 149, + 202, + 125, + 86, + 238, + 221, + 184, + 106, + 99, + 228, + 251, + 126, + 24, + 243, + 50, + 19, + 121, + 151, + 113, + 7, + 2, + 128, + 180, + 59, + 143, + 185, + 247, + 47, + 244, + 174, + 38, + 224, + 77, + 113, + 101, + 244, + 54, + 102, + 160, + 200, + 187, + 95, + 227, + 220, + 192, + 72, + 42, + 177, + 161, + 44, + 105, + 165, + 218, + 59, + 172, + 153, + 87, + 2, + 239, + 141, + 44, + 21, + 236, + 130, + 164, + 228, + 175, + 150, + 223, + 243, + 106, + 170, + 82, + 202, + 41, + 190, + 41, + 221, + 224, + 211, + 72, + 185, + 163, + 199, + 51, + 174, + 102, + 251, + 190, + 151, + 37, + 239, + 197, + 128, + 244, + 32, + 124, + 95, + 183, + 52, + 7, + 72, + 114, + 8, + 138, + 113, + 49, + 28, + 241, + 102, + 248, + 113, + 144, + 2, + 187, + 101, + 235, + 21, + 126, + 89, + 102, + 44, + 61, + 77, + 29, + 59, + 157, + 192, + 100, + 72, + 222, + 212, + 31, + 95, + 27, + 232, + 146, + 102, + 88, + 252, + 233, + 113, + 145, + 145, + 136, + 21, + 210, + 133, + 243, + 2, + 23, + 185, + 126, + 59, + 84, + 173, + 5, + 44, + 133, + 98, + 188, + 243, + 198, + 118, + 199, + 228, + 3, + 74, + 74, + 221, + 64, + 94, + 49, + 202, + 137, + 51, + 80, + 174, + 202, + 39, + 43, + 185, + 15, + 27, + 166, + 128, + 76, + 15, + 221, + 151, + 72, + 3, + 199, + 184, + 11, + 23, + 188, + 175, + 206, + 43, + 49, + 150, + 141, + 63, + 74, + 129, + 68, + 82, + 43, + 229, + 7, + 70, + 80, + 242, + 194, + 122, + 221, + 203, + 129, + 110, + 166, + 220, + 80, + 161, + 31, + 3, + 19, + 181, + 100, + 20, + 214, + 137, + 233, + 45, + 149, + 157, + 146, + 58, + 92, + 240, + 243, + 94, + 31, + 228, + 136, + 73, + 218, + 216, + 5, + 112, + 153, + 204, + 126, + 103, + 57, + 65, + 7, + 20, + 122, + 85, + 124, + 3, + 191, + 105, + 241, + 58, + 252, + 125, + 138, + 45, + 53, + 16, + 235, + 73, + 118, + 4, + 144, + 94, + 179, + 56, + 29, + 103, + 240, + 44, + 102, + 112, + 33, + 227, + 223, + 175, + 98, + 247, + 164, + 184, + 167, + 203, + 41, + 129, + 228, + 223, + 82, + 150, + 45, + 178, + 51, + 242, + 110, + 166, + 72, + 229, + 171, + 154, + 197, + 220, + 232, + 142, + 190, + 203, + 235, + 129, + 54, + 58, + 168, + 149, + 77, + 45, + 109, + 169, + 192, + 20, + 46, + 189, + 187, + 3, + 231, + 208, + 218, + 103, + 164, + 196, + 161, + 112, + 97, + 248, + 44, + 73, + 34, + 236, + 87, + 94, + 243, + 35, + 238, + 129, + 176, + 55, + 149, + 150, + 117, + 11, + 24, + 175, + 54, + 31, + 99, + 184, + 255, + 114, + 2, + 220, + 188, + 102, + 121, + 203, + 121, + 90, + 244, + 242, + 58, + 78, + 143, + 229, + 154, + 195, + 246, + 150, + 217, + 215, + 141, + 129, + 28, + 235, + 0, + 184, + 95, + 255, + 123, + 175, + 150, + 146, + 26, + 203, + 213, + 134, + 97, + 220, + 16, + 186, + 236, + 229, + 83, + 174, + 151, + 242, + 130, + 97, + 46, + 45, + 193, + 117, + 85, + 58, + 4, + 73, + 216, + 3, + 71, + 93, + 163, + 20, + 142, + 48, + 194, + 112, + 205, + 36, + 185, + 103, + 8, + 24, + 52, + 94, + 75, + 12, + 79, + 73, + 0, + 0, + 0, + 0, + 62, + 107, + 194, + 239, + 61, + 208, + 245, + 4, + 3, + 187, + 55, + 235, + 122, + 160, + 235, + 9, + 68, + 203, + 41, + 230, + 71, + 112, + 30, + 13, + 121, + 27, + 220, + 226, + 244, + 64, + 215, + 19, + 202, + 43, + 21, + 252, + 201, + 144, + 34, + 23, + 247, + 251, + 224, + 248, + 142, + 224, + 60, + 26, + 176, + 139, + 254, + 245, + 179, + 48, + 201, + 30, + 141, + 91, + 11, + 241, + 232, + 129, + 174, + 39, + 214, + 234, + 108, + 200, + 213, + 81, + 91, + 35, + 235, + 58, + 153, + 204, + 146, + 33, + 69, + 46, + 172, + 74, + 135, + 193, + 175, + 241, + 176, + 42, + 145, + 154, + 114, + 197, + 28, + 193, + 121, + 52, + 34, + 170, + 187, + 219, + 33, + 17, + 140, + 48, + 31, + 122, + 78, + 223, + 102, + 97, + 146, + 61, + 88, + 10, + 80, + 210, + 91, + 177, + 103, + 57, + 101, + 218, + 165, + 214, + 208, + 3, + 93, + 79, + 238, + 104, + 159, + 160, + 237, + 211, + 168, + 75, + 211, + 184, + 106, + 164, + 170, + 163, + 182, + 70, + 148, + 200, + 116, + 169, + 151, + 115, + 67, + 66, + 169, + 24, + 129, + 173, + 36, + 67, + 138, + 92, + 26, + 40, + 72, + 179, + 25, + 147, + 127, + 88, + 39, + 248, + 189, + 183, + 94, + 227, + 97, + 85, + 96, + 136, + 163, + 186, + 99, + 51, + 148, + 81, + 93, + 88, + 86, + 190, + 56, + 130, + 243, + 104, + 6, + 233, + 49, + 135, + 5, + 82, + 6, + 108, + 59, + 57, + 196, + 131, + 66, + 34, + 24, + 97, + 124, + 73, + 218, + 142, + 127, + 242, + 237, + 101, + 65, + 153, + 47, + 138, + 204, + 194, + 36, + 123, + 242, + 169, + 230, + 148, + 241, + 18, + 209, + 127, + 207, + 121, + 19, + 144, + 182, + 98, + 207, + 114, + 136, + 9, + 13, + 157, + 139, + 178, + 58, + 118, + 181, + 217, + 248, + 153, + 160, + 7, + 186, + 158, + 158, + 108, + 120, + 113, + 157, + 215, + 79, + 154, + 163, + 188, + 141, + 117, + 218, + 167, + 81, + 151, + 228, + 204, + 147, + 120, + 231, + 119, + 164, + 147, + 217, + 28, + 102, + 124, + 84, + 71, + 109, + 141, + 106, + 44, + 175, + 98, + 105, + 151, + 152, + 137, + 87, + 252, + 90, + 102, + 46, + 231, + 134, + 132, + 16, + 140, + 68, + 107, + 19, + 55, + 115, + 128, + 45, + 92, + 177, + 111, + 72, + 134, + 20, + 185, + 118, + 237, + 214, + 86, + 117, + 86, + 225, + 189, + 75, + 61, + 35, + 82, + 50, + 38, + 255, + 176, + 12, + 77, + 61, + 95, + 15, + 246, + 10, + 180, + 49, + 157, + 200, + 91, + 188, + 198, + 195, + 170, + 130, + 173, + 1, + 69, + 129, + 22, + 54, + 174, + 191, + 125, + 244, + 65, + 198, + 102, + 40, + 163, + 248, + 13, + 234, + 76, + 251, + 182, + 221, + 167, + 197, + 221, + 31, + 72, + 112, + 4, + 231, + 209, + 78, + 111, + 37, + 62, + 77, + 212, + 18, + 213, + 115, + 191, + 208, + 58, + 10, + 164, + 12, + 216, + 52, + 207, + 206, + 55, + 55, + 116, + 249, + 220, + 9, + 31, + 59, + 51, + 132, + 68, + 48, + 194, + 186, + 47, + 242, + 45, + 185, + 148, + 197, + 198, + 135, + 255, + 7, + 41, + 254, + 228, + 219, + 203, + 192, + 143, + 25, + 36, + 195, + 52, + 46, + 207, + 253, + 95, + 236, + 32, + 152, + 133, + 73, + 246, + 166, + 238, + 139, + 25, + 165, + 85, + 188, + 242, + 155, + 62, + 126, + 29, + 226, + 37, + 162, + 255, + 220, + 78, + 96, + 16, + 223, + 245, + 87, + 251, + 225, + 158, + 149, + 20, + 108, + 197, + 158, + 229, + 82, + 174, + 92, + 10, + 81, + 21, + 107, + 225, + 111, + 126, + 169, + 14, + 22, + 101, + 117, + 236, + 40, + 14, + 183, + 3, + 43, + 181, + 128, + 232, + 21, + 222, + 66, + 7, + 1, + 9, + 5, + 230, + 63, + 98, + 199, + 9, + 60, + 217, + 240, + 226, + 2, + 178, + 50, + 13, + 123, + 169, + 238, + 239, + 69, + 194, + 44, + 0, + 70, + 121, + 27, + 235, + 120, + 18, + 217, + 4, + 245, + 73, + 210, + 245, + 203, + 34, + 16, + 26, + 200, + 153, + 39, + 241, + 246, + 242, + 229, + 30, + 143, + 233, + 57, + 252, + 177, + 130, + 251, + 19, + 178, + 57, + 204, + 248, + 140, + 82, + 14, + 23, + 233, + 136, + 171, + 193, + 215, + 227, + 105, + 46, + 212, + 88, + 94, + 197, + 234, + 51, + 156, + 42, + 147, + 40, + 64, + 200, + 173, + 67, + 130, + 39, + 174, + 248, + 181, + 204, + 144, + 147, + 119, + 35, + 29, + 200, + 124, + 210, + 35, + 163, + 190, + 61, + 32, + 24, + 137, + 214, + 30, + 115, + 75, + 57, + 103, + 104, + 151, + 219, + 89, + 3, + 85, + 52, + 90, + 184, + 98, + 223, + 100, + 211, + 160, + 48, + 209, + 10, + 88, + 169, + 239, + 97, + 154, + 70, + 236, + 218, + 173, + 173, + 210, + 177, + 111, + 66, + 171, + 170, + 179, + 160, + 149, + 193, + 113, + 79, + 150, + 122, + 70, + 164, + 168, + 17, + 132, + 75, + 37, + 74, + 143, + 186, + 27, + 33, + 77, + 85, + 24, + 154, + 122, + 190, + 38, + 241, + 184, + 81, + 95, + 234, + 100, + 179, + 97, + 129, + 166, + 92, + 98, + 58, + 145, + 183, + 92, + 81, + 83, + 88, + 57, + 139, + 246, + 142, + 7, + 224, + 52, + 97, + 4, + 91, + 3, + 138, + 58, + 48, + 193, + 101, + 67, + 43, + 29, + 135, + 125, + 64, + 223, + 104, + 126, + 251, + 232, + 131, + 64, + 144, + 42, + 108, + 205, + 203, + 33, + 157, + 243, + 160, + 227, + 114, + 240, + 27, + 212, + 153, + 206, + 112, + 22, + 118, + 183, + 107, + 202, + 148, + 137, + 0, + 8, + 123, + 138, + 187, + 63, + 144, + 180, + 208, + 253, + 127, + 161, + 14, + 191, + 120, + 159, + 101, + 125, + 151, + 156, + 222, + 74, + 124, + 162, + 181, + 136, + 147, + 219, + 174, + 84, + 113, + 229, + 197, + 150, + 158, + 230, + 126, + 161, + 117, + 216, + 21, + 99, + 154, + 85, + 78, + 104, + 107, + 107, + 37, + 170, + 132, + 104, + 158, + 157, + 111, + 86, + 245, + 95, + 128, + 47, + 238, + 131, + 98, + 17, + 133, + 65, + 141, + 18, + 62, + 118, + 102, + 44, + 85, + 180, + 137, + 73, + 143, + 17, + 95, + 119, + 228, + 211, + 176, + 116, + 95, + 228, + 91, + 74, + 52, + 38, + 180, + 51, + 47, + 250, + 86, + 13, + 68, + 56, + 185, + 14, + 255, + 15, + 82, + 48, + 148, + 205, + 189, + 189, + 207, + 198, + 76, + 131, + 164, + 4, + 163, + 128, + 31, + 51, + 72, + 190, + 116, + 241, + 167, + 199, + 111, + 45, + 69, + 249, + 4, + 239, + 170, + 250, + 191, + 216, + 65, + 196, + 212, + 26, + 174, + 113, + 13, + 226, + 55, + 79, + 102, + 32, + 216, + 76, + 221, + 23, + 51, + 114, + 182, + 213, + 220, + 11, + 173, + 9, + 62, + 53, + 198, + 203, + 209, + 54, + 125, + 252, + 58, + 8, + 22, + 62, + 213, + 133, + 77, + 53, + 36, + 187, + 38, + 247, + 203, + 184, + 157, + 192, + 32, + 134, + 246, + 2, + 207, + 255, + 237, + 222, + 45, + 193, + 134, + 28, + 194, + 194, + 61, + 43, + 41, + 252, + 86, + 233, + 198, + 153, + 140, + 76, + 16, + 167, + 231, + 142, + 255, + 164, + 92, + 185, + 20, + 154, + 55, + 123, + 251, + 227, + 44, + 167, + 25, + 221, + 71, + 101, + 246, + 222, + 252, + 82, + 29, + 224, + 151, + 144, + 242, + 109, + 204, + 155, + 3, + 83, + 167, + 89, + 236, + 80, + 28, + 110, + 7, + 110, + 119, + 172, + 232, + 23, + 108, + 112, + 10, + 41, + 7, + 178, + 229, + 42, + 188, + 133, + 14, + 20, + 215, + 71, + 225, + 0, + 0, + 0, + 0, + 192, + 223, + 142, + 193, + 193, + 185, + 108, + 88, + 1, + 102, + 226, + 153, + 130, + 115, + 217, + 176, + 66, + 172, + 87, + 113, + 67, + 202, + 181, + 232, + 131, + 21, + 59, + 41, + 69, + 225, + 195, + 186, + 133, + 62, + 77, + 123, + 132, + 88, + 175, + 226, + 68, + 135, + 33, + 35, + 199, + 146, + 26, + 10, + 7, + 77, + 148, + 203, + 6, + 43, + 118, + 82, + 198, + 244, + 248, + 147, + 203, + 196, + 246, + 174, + 11, + 27, + 120, + 111, + 10, + 125, + 154, + 246, + 202, + 162, + 20, + 55, + 73, + 183, + 47, + 30, + 137, + 104, + 161, + 223, + 136, + 14, + 67, + 70, + 72, + 209, + 205, + 135, + 142, + 37, + 53, + 20, + 78, + 250, + 187, + 213, + 79, + 156, + 89, + 76, + 143, + 67, + 215, + 141, + 12, + 86, + 236, + 164, + 204, + 137, + 98, + 101, + 205, + 239, + 128, + 252, + 13, + 48, + 14, + 61, + 215, + 143, + 156, + 134, + 23, + 80, + 18, + 71, + 22, + 54, + 240, + 222, + 214, + 233, + 126, + 31, + 85, + 252, + 69, + 54, + 149, + 35, + 203, + 247, + 148, + 69, + 41, + 110, + 84, + 154, + 167, + 175, + 146, + 110, + 95, + 60, + 82, + 177, + 209, + 253, + 83, + 215, + 51, + 100, + 147, + 8, + 189, + 165, + 16, + 29, + 134, + 140, + 208, + 194, + 8, + 77, + 209, + 164, + 234, + 212, + 17, + 123, + 100, + 21, + 28, + 75, + 106, + 40, + 220, + 148, + 228, + 233, + 221, + 242, + 6, + 112, + 29, + 45, + 136, + 177, + 158, + 56, + 179, + 152, + 94, + 231, + 61, + 89, + 95, + 129, + 223, + 192, + 159, + 94, + 81, + 1, + 89, + 170, + 169, + 146, + 153, + 117, + 39, + 83, + 152, + 19, + 197, + 202, + 88, + 204, + 75, + 11, + 219, + 217, + 112, + 34, + 27, + 6, + 254, + 227, + 26, + 96, + 28, + 122, + 218, + 191, + 146, + 187, + 239, + 25, + 72, + 214, + 47, + 198, + 198, + 23, + 46, + 160, + 36, + 142, + 238, + 127, + 170, + 79, + 109, + 106, + 145, + 102, + 173, + 181, + 31, + 167, + 172, + 211, + 253, + 62, + 108, + 12, + 115, + 255, + 170, + 248, + 139, + 108, + 106, + 39, + 5, + 173, + 107, + 65, + 231, + 52, + 171, + 158, + 105, + 245, + 40, + 139, + 82, + 220, + 232, + 84, + 220, + 29, + 233, + 50, + 62, + 132, + 41, + 237, + 176, + 69, + 36, + 221, + 190, + 120, + 228, + 2, + 48, + 185, + 229, + 100, + 210, + 32, + 37, + 187, + 92, + 225, + 166, + 174, + 103, + 200, + 102, + 113, + 233, + 9, + 103, + 23, + 11, + 144, + 167, + 200, + 133, + 81, + 97, + 60, + 125, + 194, + 161, + 227, + 243, + 3, + 160, + 133, + 17, + 154, + 96, + 90, + 159, + 91, + 227, + 79, + 164, + 114, + 35, + 144, + 42, + 179, + 34, + 246, + 200, + 42, + 226, + 41, + 70, + 235, + 56, + 150, + 212, + 80, + 248, + 73, + 90, + 145, + 249, + 47, + 184, + 8, + 57, + 240, + 54, + 201, + 186, + 229, + 13, + 224, + 122, + 58, + 131, + 33, + 123, + 92, + 97, + 184, + 187, + 131, + 239, + 121, + 125, + 119, + 23, + 234, + 189, + 168, + 153, + 43, + 188, + 206, + 123, + 178, + 124, + 17, + 245, + 115, + 255, + 4, + 206, + 90, + 63, + 219, + 64, + 155, + 62, + 189, + 162, + 2, + 254, + 98, + 44, + 195, + 243, + 82, + 34, + 254, + 51, + 141, + 172, + 63, + 50, + 235, + 78, + 166, + 242, + 52, + 192, + 103, + 113, + 33, + 251, + 78, + 177, + 254, + 117, + 143, + 176, + 152, + 151, + 22, + 112, + 71, + 25, + 215, + 182, + 179, + 225, + 68, + 118, + 108, + 111, + 133, + 119, + 10, + 141, + 28, + 183, + 213, + 3, + 221, + 52, + 192, + 56, + 244, + 244, + 31, + 182, + 53, + 245, + 121, + 84, + 172, + 53, + 166, + 218, + 109, + 159, + 53, + 225, + 119, + 95, + 234, + 111, + 182, + 94, + 140, + 141, + 47, + 158, + 83, + 3, + 238, + 29, + 70, + 56, + 199, + 221, + 153, + 182, + 6, + 220, + 255, + 84, + 159, + 28, + 32, + 218, + 94, + 218, + 212, + 34, + 205, + 26, + 11, + 172, + 12, + 27, + 109, + 78, + 149, + 219, + 178, + 192, + 84, + 88, + 167, + 251, + 125, + 152, + 120, + 117, + 188, + 153, + 30, + 151, + 37, + 89, + 193, + 25, + 228, + 84, + 241, + 23, + 217, + 148, + 46, + 153, + 24, + 149, + 72, + 123, + 129, + 85, + 151, + 245, + 64, + 214, + 130, + 206, + 105, + 22, + 93, + 64, + 168, + 23, + 59, + 162, + 49, + 215, + 228, + 44, + 240, + 17, + 16, + 212, + 99, + 209, + 207, + 90, + 162, + 208, + 169, + 184, + 59, + 16, + 118, + 54, + 250, + 147, + 99, + 13, + 211, + 83, + 188, + 131, + 18, + 82, + 218, + 97, + 139, + 146, + 5, + 239, + 74, + 72, + 186, + 125, + 241, + 136, + 101, + 243, + 48, + 137, + 3, + 17, + 169, + 73, + 220, + 159, + 104, + 202, + 201, + 164, + 65, + 10, + 22, + 42, + 128, + 11, + 112, + 200, + 25, + 203, + 175, + 70, + 216, + 13, + 91, + 190, + 75, + 205, + 132, + 48, + 138, + 204, + 226, + 210, + 19, + 12, + 61, + 92, + 210, + 143, + 40, + 103, + 251, + 79, + 247, + 233, + 58, + 78, + 145, + 11, + 163, + 142, + 78, + 133, + 98, + 131, + 126, + 139, + 95, + 67, + 161, + 5, + 158, + 66, + 199, + 231, + 7, + 130, + 24, + 105, + 198, + 1, + 13, + 82, + 239, + 193, + 210, + 220, + 46, + 192, + 180, + 62, + 183, + 0, + 107, + 176, + 118, + 198, + 159, + 72, + 229, + 6, + 64, + 198, + 36, + 7, + 38, + 36, + 189, + 199, + 249, + 170, + 124, + 68, + 236, + 145, + 85, + 132, + 51, + 31, + 148, + 133, + 85, + 253, + 13, + 69, + 138, + 115, + 204, + 112, + 44, + 169, + 161, + 176, + 243, + 39, + 96, + 177, + 149, + 197, + 249, + 113, + 74, + 75, + 56, + 242, + 95, + 112, + 17, + 50, + 128, + 254, + 208, + 51, + 230, + 28, + 73, + 243, + 57, + 146, + 136, + 53, + 205, + 106, + 27, + 245, + 18, + 228, + 218, + 244, + 116, + 6, + 67, + 52, + 171, + 136, + 130, + 183, + 190, + 179, + 171, + 119, + 97, + 61, + 106, + 118, + 7, + 223, + 243, + 182, + 216, + 81, + 50, + 187, + 232, + 95, + 15, + 123, + 55, + 209, + 206, + 122, + 81, + 51, + 87, + 186, + 142, + 189, + 150, + 57, + 155, + 134, + 191, + 249, + 68, + 8, + 126, + 248, + 34, + 234, + 231, + 56, + 253, + 100, + 38, + 254, + 9, + 156, + 181, + 62, + 214, + 18, + 116, + 63, + 176, + 240, + 237, + 255, + 111, + 126, + 44, + 124, + 122, + 69, + 5, + 188, + 165, + 203, + 196, + 189, + 195, + 41, + 93, + 125, + 28, + 167, + 156, + 167, + 163, + 53, + 39, + 103, + 124, + 187, + 230, + 102, + 26, + 89, + 127, + 166, + 197, + 215, + 190, + 37, + 208, + 236, + 151, + 229, + 15, + 98, + 86, + 228, + 105, + 128, + 207, + 36, + 182, + 14, + 14, + 226, + 66, + 246, + 157, + 34, + 157, + 120, + 92, + 35, + 251, + 154, + 197, + 227, + 36, + 20, + 4, + 96, + 49, + 47, + 45, + 160, + 238, + 161, + 236, + 161, + 136, + 67, + 117, + 97, + 87, + 205, + 180, + 108, + 103, + 195, + 137, + 172, + 184, + 77, + 72, + 173, + 222, + 175, + 209, + 109, + 1, + 33, + 16, + 238, + 20, + 26, + 57, + 46, + 203, + 148, + 248, + 47, + 173, + 118, + 97, + 239, + 114, + 248, + 160, + 41, + 134, + 0, + 51, + 233, + 89, + 142, + 242, + 232, + 63, + 108, + 107, + 40, + 224, + 226, + 170, + 171, + 245, + 217, + 131, + 107, + 42, + 87, + 66, + 106, + 76, + 181, + 219, + 170, + 147, + 59, + 26, + 0, + 0, + 0, + 0, + 111, + 76, + 165, + 155, + 159, + 158, + 59, + 236, + 240, + 210, + 158, + 119, + 127, + 59, + 6, + 3, + 16, + 119, + 163, + 152, + 224, + 165, + 61, + 239, + 143, + 233, + 152, + 116, + 254, + 118, + 12, + 6, + 145, + 58, + 169, + 157, + 97, + 232, + 55, + 234, + 14, + 164, + 146, + 113, + 129, + 77, + 10, + 5, + 238, + 1, + 175, + 158, + 30, + 211, + 49, + 233, + 113, + 159, + 148, + 114, + 252, + 237, + 24, + 12, + 147, + 161, + 189, + 151, + 99, + 115, + 35, + 224, + 12, + 63, + 134, + 123, + 131, + 214, + 30, + 15, + 236, + 154, + 187, + 148, + 28, + 72, + 37, + 227, + 115, + 4, + 128, + 120, + 2, + 155, + 20, + 10, + 109, + 215, + 177, + 145, + 157, + 5, + 47, + 230, + 242, + 73, + 138, + 125, + 125, + 160, + 18, + 9, + 18, + 236, + 183, + 146, + 226, + 62, + 41, + 229, + 141, + 114, + 140, + 126, + 248, + 219, + 49, + 24, + 151, + 151, + 148, + 131, + 103, + 69, + 10, + 244, + 8, + 9, + 175, + 111, + 135, + 224, + 55, + 27, + 232, + 172, + 146, + 128, + 24, + 126, + 12, + 247, + 119, + 50, + 169, + 108, + 6, + 173, + 61, + 30, + 105, + 225, + 152, + 133, + 153, + 51, + 6, + 242, + 246, + 127, + 163, + 105, + 121, + 150, + 59, + 29, + 22, + 218, + 158, + 134, + 230, + 8, + 0, + 241, + 137, + 68, + 165, + 106, + 4, + 54, + 41, + 20, + 107, + 122, + 140, + 143, + 155, + 168, + 18, + 248, + 244, + 228, + 183, + 99, + 123, + 13, + 47, + 23, + 20, + 65, + 138, + 140, + 228, + 147, + 20, + 251, + 139, + 223, + 177, + 96, + 250, + 64, + 37, + 18, + 149, + 12, + 128, + 137, + 101, + 222, + 30, + 254, + 10, + 146, + 187, + 101, + 133, + 123, + 35, + 17, + 234, + 55, + 134, + 138, + 26, + 229, + 24, + 253, + 117, + 169, + 189, + 102, + 240, + 183, + 99, + 48, + 159, + 251, + 198, + 171, + 111, + 41, + 88, + 220, + 0, + 101, + 253, + 71, + 143, + 140, + 101, + 51, + 224, + 192, + 192, + 168, + 16, + 18, + 94, + 223, + 127, + 94, + 251, + 68, + 14, + 193, + 111, + 54, + 97, + 141, + 202, + 173, + 145, + 95, + 84, + 218, + 254, + 19, + 241, + 65, + 113, + 250, + 105, + 53, + 30, + 182, + 204, + 174, + 238, + 100, + 82, + 217, + 129, + 40, + 247, + 66, + 12, + 90, + 123, + 60, + 99, + 22, + 222, + 167, + 147, + 196, + 64, + 208, + 252, + 136, + 229, + 75, + 115, + 97, + 125, + 63, + 28, + 45, + 216, + 164, + 236, + 255, + 70, + 211, + 131, + 179, + 227, + 72, + 242, + 44, + 119, + 58, + 157, + 96, + 210, + 161, + 109, + 178, + 76, + 214, + 2, + 254, + 233, + 77, + 141, + 23, + 113, + 57, + 226, + 91, + 212, + 162, + 18, + 137, + 74, + 213, + 125, + 197, + 239, + 78, + 8, + 108, + 82, + 40, + 103, + 32, + 247, + 179, + 151, + 242, + 105, + 196, + 248, + 190, + 204, + 95, + 119, + 87, + 84, + 43, + 24, + 27, + 241, + 176, + 232, + 201, + 111, + 199, + 135, + 133, + 202, + 92, + 246, + 26, + 94, + 46, + 153, + 86, + 251, + 181, + 105, + 132, + 101, + 194, + 6, + 200, + 192, + 89, + 137, + 33, + 88, + 45, + 230, + 109, + 253, + 182, + 22, + 191, + 99, + 193, + 121, + 243, + 198, + 90, + 244, + 129, + 74, + 36, + 155, + 205, + 239, + 191, + 107, + 31, + 113, + 200, + 4, + 83, + 212, + 83, + 139, + 186, + 76, + 39, + 228, + 246, + 233, + 188, + 20, + 36, + 119, + 203, + 123, + 104, + 210, + 80, + 10, + 247, + 70, + 34, + 101, + 187, + 227, + 185, + 149, + 105, + 125, + 206, + 250, + 37, + 216, + 85, + 117, + 204, + 64, + 33, + 26, + 128, + 229, + 186, + 234, + 82, + 123, + 205, + 133, + 30, + 222, + 86, + 224, + 111, + 199, + 96, + 143, + 35, + 98, + 251, + 127, + 241, + 252, + 140, + 16, + 189, + 89, + 23, + 159, + 84, + 193, + 99, + 240, + 24, + 100, + 248, + 0, + 202, + 250, + 143, + 111, + 134, + 95, + 20, + 30, + 25, + 203, + 102, + 113, + 85, + 110, + 253, + 129, + 135, + 240, + 138, + 238, + 203, + 85, + 17, + 97, + 34, + 205, + 101, + 14, + 110, + 104, + 254, + 254, + 188, + 246, + 137, + 145, + 240, + 83, + 18, + 28, + 130, + 223, + 108, + 115, + 206, + 122, + 247, + 131, + 28, + 228, + 128, + 236, + 80, + 65, + 27, + 99, + 185, + 217, + 111, + 12, + 245, + 124, + 244, + 252, + 39, + 226, + 131, + 147, + 107, + 71, + 24, + 226, + 244, + 211, + 106, + 141, + 184, + 118, + 241, + 125, + 106, + 232, + 134, + 18, + 38, + 77, + 29, + 157, + 207, + 213, + 105, + 242, + 131, + 112, + 242, + 2, + 81, + 238, + 133, + 109, + 29, + 75, + 30, + 24, + 180, + 246, + 120, + 119, + 248, + 83, + 227, + 135, + 42, + 205, + 148, + 232, + 102, + 104, + 15, + 103, + 143, + 240, + 123, + 8, + 195, + 85, + 224, + 248, + 17, + 203, + 151, + 151, + 93, + 110, + 12, + 230, + 194, + 250, + 126, + 137, + 142, + 95, + 229, + 121, + 92, + 193, + 146, + 22, + 16, + 100, + 9, + 153, + 249, + 252, + 125, + 246, + 181, + 89, + 230, + 6, + 103, + 199, + 145, + 105, + 43, + 98, + 10, + 228, + 89, + 238, + 116, + 139, + 21, + 75, + 239, + 123, + 199, + 213, + 152, + 20, + 139, + 112, + 3, + 155, + 98, + 232, + 119, + 244, + 46, + 77, + 236, + 4, + 252, + 211, + 155, + 107, + 176, + 118, + 0, + 26, + 47, + 226, + 114, + 117, + 99, + 71, + 233, + 133, + 177, + 217, + 158, + 234, + 253, + 124, + 5, + 101, + 20, + 228, + 113, + 10, + 88, + 65, + 234, + 250, + 138, + 223, + 157, + 149, + 198, + 122, + 6, + 16, + 216, + 164, + 80, + 127, + 148, + 1, + 203, + 143, + 70, + 159, + 188, + 224, + 10, + 58, + 39, + 111, + 227, + 162, + 83, + 0, + 175, + 7, + 200, + 240, + 125, + 153, + 191, + 159, + 49, + 60, + 36, + 238, + 174, + 168, + 86, + 129, + 226, + 13, + 205, + 113, + 48, + 147, + 186, + 30, + 124, + 54, + 33, + 145, + 149, + 174, + 85, + 254, + 217, + 11, + 206, + 14, + 11, + 149, + 185, + 97, + 71, + 48, + 34, + 236, + 53, + 188, + 92, + 131, + 121, + 25, + 199, + 115, + 171, + 135, + 176, + 28, + 231, + 34, + 43, + 147, + 14, + 186, + 95, + 252, + 66, + 31, + 196, + 12, + 144, + 129, + 179, + 99, + 220, + 36, + 40, + 18, + 67, + 176, + 90, + 125, + 15, + 21, + 193, + 141, + 221, + 139, + 182, + 226, + 145, + 46, + 45, + 109, + 120, + 182, + 89, + 2, + 52, + 19, + 194, + 242, + 230, + 141, + 181, + 157, + 170, + 40, + 46, + 232, + 3, + 149, + 72, + 135, + 79, + 48, + 211, + 119, + 157, + 174, + 164, + 24, + 209, + 11, + 63, + 151, + 56, + 147, + 75, + 248, + 116, + 54, + 208, + 8, + 166, + 168, + 167, + 103, + 234, + 13, + 60, + 22, + 117, + 153, + 78, + 121, + 57, + 60, + 213, + 137, + 235, + 162, + 162, + 230, + 167, + 7, + 57, + 105, + 78, + 159, + 77, + 6, + 2, + 58, + 214, + 246, + 208, + 164, + 161, + 153, + 156, + 1, + 58, + 20, + 238, + 141, + 68, + 123, + 162, + 40, + 223, + 139, + 112, + 182, + 168, + 228, + 60, + 19, + 51, + 107, + 213, + 139, + 71, + 4, + 153, + 46, + 220, + 244, + 75, + 176, + 171, + 155, + 7, + 21, + 48, + 234, + 152, + 129, + 66, + 133, + 212, + 36, + 217, + 117, + 6, + 186, + 174, + 26, + 74, + 31, + 53, + 149, + 163, + 135, + 65, + 250, + 239, + 34, + 218, + 10, + 61, + 188, + 173, + 101, + 113, + 25, + 54, + 0, + 0, + 0, + 0, + 133, + 217, + 150, + 221, + 75, + 181, + 92, + 96, + 206, + 108, + 202, + 189, + 150, + 106, + 185, + 192, + 19, + 179, + 47, + 29, + 221, + 223, + 229, + 160, + 88, + 6, + 115, + 125, + 109, + 211, + 3, + 90, + 232, + 10, + 149, + 135, + 38, + 102, + 95, + 58, + 163, + 191, + 201, + 231, + 251, + 185, + 186, + 154, + 126, + 96, + 44, + 71, + 176, + 12, + 230, + 250, + 53, + 213, + 112, + 39, + 218, + 166, + 7, + 180, + 95, + 127, + 145, + 105, + 145, + 19, + 91, + 212, + 20, + 202, + 205, + 9, + 76, + 204, + 190, + 116, + 201, + 21, + 40, + 169, + 7, + 121, + 226, + 20, + 130, + 160, + 116, + 201, + 183, + 117, + 4, + 238, + 50, + 172, + 146, + 51, + 252, + 192, + 88, + 142, + 121, + 25, + 206, + 83, + 33, + 31, + 189, + 46, + 164, + 198, + 43, + 243, + 106, + 170, + 225, + 78, + 239, + 115, + 119, + 147, + 245, + 75, + 126, + 179, + 112, + 146, + 232, + 110, + 190, + 254, + 34, + 211, + 59, + 39, + 180, + 14, + 99, + 33, + 199, + 115, + 230, + 248, + 81, + 174, + 40, + 148, + 155, + 19, + 173, + 77, + 13, + 206, + 152, + 152, + 125, + 233, + 29, + 65, + 235, + 52, + 211, + 45, + 33, + 137, + 86, + 244, + 183, + 84, + 14, + 242, + 196, + 41, + 139, + 43, + 82, + 244, + 69, + 71, + 152, + 73, + 192, + 158, + 14, + 148, + 47, + 237, + 121, + 7, + 170, + 52, + 239, + 218, + 100, + 88, + 37, + 103, + 225, + 129, + 179, + 186, + 185, + 135, + 192, + 199, + 60, + 94, + 86, + 26, + 242, + 50, + 156, + 167, + 119, + 235, + 10, + 122, + 66, + 62, + 122, + 93, + 199, + 231, + 236, + 128, + 9, + 139, + 38, + 61, + 140, + 82, + 176, + 224, + 212, + 84, + 195, + 157, + 81, + 141, + 85, + 64, + 159, + 225, + 159, + 253, + 26, + 56, + 9, + 32, + 171, + 145, + 141, + 189, + 46, + 72, + 27, + 96, + 224, + 36, + 209, + 221, + 101, + 253, + 71, + 0, + 61, + 251, + 52, + 125, + 184, + 34, + 162, + 160, + 118, + 78, + 104, + 29, + 243, + 151, + 254, + 192, + 198, + 66, + 142, + 231, + 67, + 155, + 24, + 58, + 141, + 247, + 210, + 135, + 8, + 46, + 68, + 90, + 80, + 40, + 55, + 39, + 213, + 241, + 161, + 250, + 27, + 157, + 107, + 71, + 158, + 68, + 253, + 154, + 113, + 55, + 138, + 9, + 244, + 238, + 28, + 212, + 58, + 130, + 214, + 105, + 191, + 91, + 64, + 180, + 231, + 93, + 51, + 201, + 98, + 132, + 165, + 20, + 172, + 232, + 111, + 169, + 41, + 49, + 249, + 116, + 28, + 228, + 137, + 83, + 153, + 61, + 31, + 142, + 87, + 81, + 213, + 51, + 210, + 136, + 67, + 238, + 138, + 142, + 48, + 147, + 15, + 87, + 166, + 78, + 193, + 59, + 108, + 243, + 68, + 226, + 250, + 46, + 94, + 218, + 243, + 14, + 219, + 3, + 101, + 211, + 21, + 111, + 175, + 110, + 144, + 182, + 57, + 179, + 200, + 176, + 74, + 206, + 77, + 105, + 220, + 19, + 131, + 5, + 22, + 174, + 6, + 220, + 128, + 115, + 51, + 9, + 240, + 84, + 182, + 208, + 102, + 137, + 120, + 188, + 172, + 52, + 253, + 101, + 58, + 233, + 165, + 99, + 73, + 148, + 32, + 186, + 223, + 73, + 238, + 214, + 21, + 244, + 107, + 15, + 131, + 41, + 132, + 124, + 244, + 186, + 1, + 165, + 98, + 103, + 207, + 201, + 168, + 218, + 74, + 16, + 62, + 7, + 18, + 22, + 77, + 122, + 151, + 207, + 219, + 167, + 89, + 163, + 17, + 26, + 220, + 122, + 135, + 199, + 233, + 175, + 247, + 224, + 108, + 118, + 97, + 61, + 162, + 26, + 171, + 128, + 39, + 195, + 61, + 93, + 127, + 197, + 78, + 32, + 250, + 28, + 216, + 253, + 52, + 112, + 18, + 64, + 177, + 169, + 132, + 157, + 23, + 37, + 106, + 160, + 146, + 252, + 252, + 125, + 92, + 144, + 54, + 192, + 217, + 73, + 160, + 29, + 129, + 79, + 211, + 96, + 4, + 150, + 69, + 189, + 202, + 250, + 143, + 0, + 79, + 35, + 25, + 221, + 122, + 246, + 105, + 250, + 255, + 47, + 255, + 39, + 49, + 67, + 53, + 154, + 180, + 154, + 163, + 71, + 236, + 156, + 208, + 58, + 105, + 69, + 70, + 231, + 167, + 41, + 140, + 90, + 34, + 240, + 26, + 135, + 205, + 131, + 109, + 20, + 72, + 90, + 251, + 201, + 134, + 54, + 49, + 116, + 3, + 239, + 167, + 169, + 91, + 233, + 212, + 212, + 222, + 48, + 66, + 9, + 16, + 92, + 136, + 180, + 149, + 133, + 30, + 105, + 160, + 80, + 110, + 78, + 37, + 137, + 248, + 147, + 235, + 229, + 50, + 46, + 110, + 60, + 164, + 243, + 54, + 58, + 215, + 142, + 179, + 227, + 65, + 83, + 125, + 143, + 139, + 238, + 248, + 86, + 29, + 51, + 226, + 110, + 20, + 19, + 103, + 183, + 130, + 206, + 169, + 219, + 72, + 115, + 44, + 2, + 222, + 174, + 116, + 4, + 173, + 211, + 241, + 221, + 59, + 14, + 63, + 177, + 241, + 179, + 186, + 104, + 103, + 110, + 143, + 189, + 23, + 73, + 10, + 100, + 129, + 148, + 196, + 8, + 75, + 41, + 65, + 209, + 221, + 244, + 25, + 215, + 174, + 137, + 156, + 14, + 56, + 84, + 82, + 98, + 242, + 233, + 215, + 187, + 100, + 52, + 56, + 200, + 19, + 167, + 189, + 17, + 133, + 122, + 115, + 125, + 79, + 199, + 246, + 164, + 217, + 26, + 174, + 162, + 170, + 103, + 43, + 123, + 60, + 186, + 229, + 23, + 246, + 7, + 96, + 206, + 96, + 218, + 85, + 27, + 16, + 253, + 208, + 194, + 134, + 32, + 30, + 174, + 76, + 157, + 155, + 119, + 218, + 64, + 195, + 113, + 169, + 61, + 70, + 168, + 63, + 224, + 136, + 196, + 245, + 93, + 13, + 29, + 99, + 128, + 188, + 180, + 231, + 29, + 57, + 109, + 113, + 192, + 247, + 1, + 187, + 125, + 114, + 216, + 45, + 160, + 42, + 222, + 94, + 221, + 175, + 7, + 200, + 0, + 97, + 107, + 2, + 189, + 228, + 178, + 148, + 96, + 209, + 103, + 228, + 71, + 84, + 190, + 114, + 154, + 154, + 210, + 184, + 39, + 31, + 11, + 46, + 250, + 71, + 13, + 93, + 135, + 194, + 212, + 203, + 90, + 12, + 184, + 1, + 231, + 137, + 97, + 151, + 58, + 102, + 18, + 224, + 169, + 227, + 203, + 118, + 116, + 45, + 167, + 188, + 201, + 168, + 126, + 42, + 20, + 240, + 120, + 89, + 105, + 117, + 161, + 207, + 180, + 187, + 205, + 5, + 9, + 62, + 20, + 147, + 212, + 11, + 193, + 227, + 243, + 142, + 24, + 117, + 46, + 64, + 116, + 191, + 147, + 197, + 173, + 41, + 78, + 157, + 171, + 90, + 51, + 24, + 114, + 204, + 238, + 214, + 30, + 6, + 83, + 83, + 199, + 144, + 142, + 73, + 255, + 153, + 174, + 204, + 38, + 15, + 115, + 2, + 74, + 197, + 206, + 135, + 147, + 83, + 19, + 223, + 149, + 32, + 110, + 90, + 76, + 182, + 179, + 148, + 32, + 124, + 14, + 17, + 249, + 234, + 211, + 36, + 44, + 154, + 244, + 161, + 245, + 12, + 41, + 111, + 153, + 198, + 148, + 234, + 64, + 80, + 73, + 178, + 70, + 35, + 52, + 55, + 159, + 181, + 233, + 249, + 243, + 127, + 84, + 124, + 42, + 233, + 137, + 147, + 89, + 158, + 26, + 22, + 128, + 8, + 199, + 216, + 236, + 194, + 122, + 93, + 53, + 84, + 167, + 5, + 51, + 39, + 218, + 128, + 234, + 177, + 7, + 78, + 134, + 123, + 186, + 203, + 95, + 237, + 103, + 254, + 138, + 157, + 64, + 123, + 83, + 11, + 157, + 181, + 63, + 193, + 32, + 48, + 230, + 87, + 253, + 104, + 224, + 36, + 128, + 237, + 57, + 178, + 93, + 35, + 85, + 120, + 224, + 166, + 140, + 238, + 61, + 0, + 0, + 0, + 0, + 118, + 225, + 15, + 157, + 173, + 196, + 110, + 225, + 219, + 37, + 97, + 124, + 27, + 143, + 172, + 25, + 109, + 110, + 163, + 132, + 182, + 75, + 194, + 248, + 192, + 170, + 205, + 101, + 54, + 30, + 89, + 51, + 64, + 255, + 86, + 174, + 155, + 218, + 55, + 210, + 237, + 59, + 56, + 79, + 45, + 145, + 245, + 42, + 91, + 112, + 250, + 183, + 128, + 85, + 155, + 203, + 246, + 180, + 148, + 86, + 108, + 60, + 178, + 102, + 26, + 221, + 189, + 251, + 193, + 248, + 220, + 135, + 183, + 25, + 211, + 26, + 119, + 179, + 30, + 127, + 1, + 82, + 17, + 226, + 218, + 119, + 112, + 158, + 172, + 150, + 127, + 3, + 90, + 34, + 235, + 85, + 44, + 195, + 228, + 200, + 247, + 230, + 133, + 180, + 129, + 7, + 138, + 41, + 65, + 173, + 71, + 76, + 55, + 76, + 72, + 209, + 236, + 105, + 41, + 173, + 154, + 136, + 38, + 48, + 216, + 120, + 100, + 205, + 174, + 153, + 107, + 80, + 117, + 188, + 10, + 44, + 3, + 93, + 5, + 177, + 195, + 247, + 200, + 212, + 181, + 22, + 199, + 73, + 110, + 51, + 166, + 53, + 24, + 210, + 169, + 168, + 238, + 102, + 61, + 254, + 152, + 135, + 50, + 99, + 67, + 162, + 83, + 31, + 53, + 67, + 92, + 130, + 245, + 233, + 145, + 231, + 131, + 8, + 158, + 122, + 88, + 45, + 255, + 6, + 46, + 204, + 240, + 155, + 180, + 68, + 214, + 171, + 194, + 165, + 217, + 54, + 25, + 128, + 184, + 74, + 111, + 97, + 183, + 215, + 175, + 203, + 122, + 178, + 217, + 42, + 117, + 47, + 2, + 15, + 20, + 83, + 116, + 238, + 27, + 206, + 130, + 90, + 143, + 152, + 244, + 187, + 128, + 5, + 47, + 158, + 225, + 121, + 89, + 127, + 238, + 228, + 153, + 213, + 35, + 129, + 239, + 52, + 44, + 28, + 52, + 17, + 77, + 96, + 66, + 240, + 66, + 253, + 241, + 247, + 185, + 65, + 135, + 22, + 182, + 220, + 92, + 51, + 215, + 160, + 42, + 210, + 216, + 61, + 234, + 120, + 21, + 88, + 156, + 153, + 26, + 197, + 71, + 188, + 123, + 185, + 49, + 93, + 116, + 36, + 199, + 233, + 224, + 114, + 177, + 8, + 239, + 239, + 106, + 45, + 142, + 147, + 28, + 204, + 129, + 14, + 220, + 102, + 76, + 107, + 170, + 135, + 67, + 246, + 113, + 162, + 34, + 138, + 7, + 67, + 45, + 23, + 157, + 203, + 11, + 39, + 235, + 42, + 4, + 186, + 48, + 15, + 101, + 198, + 70, + 238, + 106, + 91, + 134, + 68, + 167, + 62, + 240, + 165, + 168, + 163, + 43, + 128, + 201, + 223, + 93, + 97, + 198, + 66, + 171, + 213, + 82, + 20, + 221, + 52, + 93, + 137, + 6, + 17, + 60, + 245, + 112, + 240, + 51, + 104, + 176, + 90, + 254, + 13, + 198, + 187, + 241, + 144, + 29, + 158, + 144, + 236, + 107, + 127, + 159, + 113, + 41, + 143, + 221, + 140, + 95, + 110, + 210, + 17, + 132, + 75, + 179, + 109, + 242, + 170, + 188, + 240, + 50, + 0, + 113, + 149, + 68, + 225, + 126, + 8, + 159, + 196, + 31, + 116, + 233, + 37, + 16, + 233, + 31, + 145, + 132, + 191, + 105, + 112, + 139, + 34, + 178, + 85, + 234, + 94, + 196, + 180, + 229, + 195, + 4, + 30, + 40, + 166, + 114, + 255, + 39, + 59, + 169, + 218, + 70, + 71, + 223, + 59, + 73, + 218, + 69, + 179, + 111, + 234, + 51, + 82, + 96, + 119, + 232, + 119, + 1, + 11, + 158, + 150, + 14, + 150, + 94, + 60, + 195, + 243, + 40, + 221, + 204, + 110, + 243, + 248, + 173, + 18, + 133, + 25, + 162, + 143, + 115, + 173, + 54, + 217, + 5, + 76, + 57, + 68, + 222, + 105, + 88, + 56, + 168, + 136, + 87, + 165, + 104, + 34, + 154, + 192, + 30, + 195, + 149, + 93, + 197, + 230, + 244, + 33, + 179, + 7, + 251, + 188, + 226, + 239, + 115, + 131, + 148, + 14, + 124, + 30, + 79, + 43, + 29, + 98, + 57, + 202, + 18, + 255, + 249, + 96, + 223, + 154, + 143, + 129, + 208, + 7, + 84, + 164, + 177, + 123, + 34, + 69, + 190, + 230, + 212, + 241, + 42, + 176, + 162, + 16, + 37, + 45, + 121, + 53, + 68, + 81, + 15, + 212, + 75, + 204, + 207, + 126, + 134, + 169, + 185, + 159, + 137, + 52, + 98, + 186, + 232, + 72, + 20, + 91, + 231, + 213, + 142, + 211, + 193, + 229, + 248, + 50, + 206, + 120, + 35, + 23, + 175, + 4, + 85, + 246, + 160, + 153, + 149, + 92, + 109, + 252, + 227, + 189, + 98, + 97, + 56, + 152, + 3, + 29, + 78, + 121, + 12, + 128, + 184, + 205, + 152, + 214, + 206, + 44, + 151, + 75, + 21, + 9, + 246, + 55, + 99, + 232, + 249, + 170, + 163, + 66, + 52, + 207, + 213, + 163, + 59, + 82, + 14, + 134, + 90, + 46, + 120, + 103, + 85, + 179, + 58, + 151, + 23, + 78, + 76, + 118, + 24, + 211, + 151, + 83, + 121, + 175, + 225, + 178, + 118, + 50, + 33, + 24, + 187, + 87, + 87, + 249, + 180, + 202, + 140, + 220, + 213, + 182, + 250, + 61, + 218, + 43, + 12, + 137, + 78, + 125, + 122, + 104, + 65, + 224, + 161, + 77, + 32, + 156, + 215, + 172, + 47, + 1, + 23, + 6, + 226, + 100, + 97, + 231, + 237, + 249, + 186, + 194, + 140, + 133, + 204, + 35, + 131, + 24, + 86, + 171, + 165, + 40, + 32, + 74, + 170, + 181, + 251, + 111, + 203, + 201, + 141, + 142, + 196, + 84, + 77, + 36, + 9, + 49, + 59, + 197, + 6, + 172, + 224, + 224, + 103, + 208, + 150, + 1, + 104, + 77, + 96, + 181, + 252, + 27, + 22, + 84, + 243, + 134, + 205, + 113, + 146, + 250, + 187, + 144, + 157, + 103, + 123, + 58, + 80, + 2, + 13, + 219, + 95, + 159, + 214, + 254, + 62, + 227, + 160, + 31, + 49, + 126, + 19, + 24, + 202, + 194, + 101, + 249, + 197, + 95, + 190, + 220, + 164, + 35, + 200, + 61, + 171, + 190, + 8, + 151, + 102, + 219, + 126, + 118, + 105, + 70, + 165, + 83, + 8, + 58, + 211, + 178, + 7, + 167, + 37, + 6, + 147, + 241, + 83, + 231, + 156, + 108, + 136, + 194, + 253, + 16, + 254, + 35, + 242, + 141, + 62, + 137, + 63, + 232, + 72, + 104, + 48, + 117, + 147, + 77, + 81, + 9, + 229, + 172, + 94, + 148, + 127, + 36, + 120, + 164, + 9, + 197, + 119, + 57, + 210, + 224, + 22, + 69, + 164, + 1, + 25, + 216, + 100, + 171, + 212, + 189, + 18, + 74, + 219, + 32, + 201, + 111, + 186, + 92, + 191, + 142, + 181, + 193, + 73, + 58, + 33, + 151, + 63, + 219, + 46, + 10, + 228, + 254, + 79, + 118, + 146, + 31, + 64, + 235, + 82, + 181, + 141, + 142, + 36, + 84, + 130, + 19, + 255, + 113, + 227, + 111, + 137, + 144, + 236, + 242, + 203, + 96, + 174, + 15, + 189, + 129, + 161, + 146, + 102, + 164, + 192, + 238, + 16, + 69, + 207, + 115, + 208, + 239, + 2, + 22, + 166, + 14, + 13, + 139, + 125, + 43, + 108, + 247, + 11, + 202, + 99, + 106, + 253, + 126, + 247, + 60, + 139, + 159, + 248, + 161, + 80, + 186, + 153, + 221, + 38, + 91, + 150, + 64, + 230, + 241, + 91, + 37, + 144, + 16, + 84, + 184, + 75, + 53, + 53, + 196, + 61, + 212, + 58, + 89, + 167, + 92, + 28, + 105, + 209, + 189, + 19, + 244, + 10, + 152, + 114, + 136, + 124, + 121, + 125, + 21, + 188, + 211, + 176, + 112, + 202, + 50, + 191, + 237, + 17, + 23, + 222, + 145, + 103, + 246, + 209, + 12, + 145, + 66, + 69, + 90, + 231, + 163, + 74, + 199, + 60, + 134, + 43, + 187, + 74, + 103, + 36, + 38, + 138, + 205, + 233, + 67, + 252, + 44, + 230, + 222, + 39, + 9, + 135, + 162, + 81, + 232, + 136, + 63, + 0, + 0, + 0, + 0, + 232, + 219, + 251, + 185, + 145, + 177, + 134, + 168, + 121, + 106, + 125, + 17, + 99, + 101, + 124, + 138, + 139, + 190, + 135, + 51, + 242, + 212, + 250, + 34, + 26, + 15, + 1, + 155, + 135, + 204, + 137, + 207, + 111, + 23, + 114, + 118, + 22, + 125, + 15, + 103, + 254, + 166, + 244, + 222, + 228, + 169, + 245, + 69, + 12, + 114, + 14, + 252, + 117, + 24, + 115, + 237, + 157, + 195, + 136, + 84, + 79, + 159, + 98, + 68, + 167, + 68, + 153, + 253, + 222, + 46, + 228, + 236, + 54, + 245, + 31, + 85, + 44, + 250, + 30, + 206, + 196, + 33, + 229, + 119, + 189, + 75, + 152, + 102, + 85, + 144, + 99, + 223, + 200, + 83, + 235, + 139, + 32, + 136, + 16, + 50, + 89, + 226, + 109, + 35, + 177, + 57, + 150, + 154, + 171, + 54, + 151, + 1, + 67, + 237, + 108, + 184, + 58, + 135, + 17, + 169, + 210, + 92, + 234, + 16, + 158, + 62, + 197, + 136, + 118, + 229, + 62, + 49, + 15, + 143, + 67, + 32, + 231, + 84, + 184, + 153, + 253, + 91, + 185, + 2, + 21, + 128, + 66, + 187, + 108, + 234, + 63, + 170, + 132, + 49, + 196, + 19, + 25, + 242, + 76, + 71, + 241, + 41, + 183, + 254, + 136, + 67, + 202, + 239, + 96, + 152, + 49, + 86, + 122, + 151, + 48, + 205, + 146, + 76, + 203, + 116, + 235, + 38, + 182, + 101, + 3, + 253, + 77, + 220, + 209, + 161, + 167, + 204, + 57, + 122, + 92, + 117, + 64, + 16, + 33, + 100, + 168, + 203, + 218, + 221, + 178, + 196, + 219, + 70, + 90, + 31, + 32, + 255, + 35, + 117, + 93, + 238, + 203, + 174, + 166, + 87, + 86, + 109, + 46, + 3, + 190, + 182, + 213, + 186, + 199, + 220, + 168, + 171, + 47, + 7, + 83, + 18, + 53, + 8, + 82, + 137, + 221, + 211, + 169, + 48, + 164, + 185, + 212, + 33, + 76, + 98, + 47, + 152, + 125, + 123, + 251, + 202, + 149, + 160, + 0, + 115, + 236, + 202, + 125, + 98, + 4, + 17, + 134, + 219, + 30, + 30, + 135, + 64, + 246, + 197, + 124, + 249, + 143, + 175, + 1, + 232, + 103, + 116, + 250, + 81, + 250, + 183, + 114, + 5, + 18, + 108, + 137, + 188, + 107, + 6, + 244, + 173, + 131, + 221, + 15, + 20, + 153, + 210, + 14, + 143, + 113, + 9, + 245, + 54, + 8, + 99, + 136, + 39, + 224, + 184, + 115, + 158, + 50, + 228, + 153, + 142, + 218, + 63, + 98, + 55, + 163, + 85, + 31, + 38, + 75, + 142, + 228, + 159, + 81, + 129, + 229, + 4, + 185, + 90, + 30, + 189, + 192, + 48, + 99, + 172, + 40, + 235, + 152, + 21, + 181, + 40, + 16, + 65, + 93, + 243, + 235, + 248, + 36, + 153, + 150, + 233, + 204, + 66, + 109, + 80, + 214, + 77, + 108, + 203, + 62, + 150, + 151, + 114, + 71, + 252, + 234, + 99, + 175, + 39, + 17, + 218, + 227, + 69, + 62, + 66, + 11, + 158, + 197, + 251, + 114, + 244, + 184, + 234, + 154, + 47, + 67, + 83, + 128, + 32, + 66, + 200, + 104, + 251, + 185, + 113, + 17, + 145, + 196, + 96, + 249, + 74, + 63, + 217, + 100, + 137, + 183, + 141, + 140, + 82, + 76, + 52, + 245, + 56, + 49, + 37, + 29, + 227, + 202, + 156, + 7, + 236, + 203, + 7, + 239, + 55, + 48, + 190, + 150, + 93, + 77, + 175, + 126, + 134, + 182, + 22, + 172, + 218, + 92, + 6, + 68, + 1, + 167, + 191, + 61, + 107, + 218, + 174, + 213, + 176, + 33, + 23, + 207, + 191, + 32, + 140, + 39, + 100, + 219, + 53, + 94, + 14, + 166, + 36, + 182, + 213, + 93, + 157, + 43, + 22, + 213, + 201, + 195, + 205, + 46, + 112, + 186, + 167, + 83, + 97, + 82, + 124, + 168, + 216, + 72, + 115, + 169, + 67, + 160, + 168, + 82, + 250, + 217, + 194, + 47, + 235, + 49, + 25, + 212, + 82, + 187, + 240, + 135, + 78, + 83, + 43, + 124, + 247, + 42, + 65, + 1, + 230, + 194, + 154, + 250, + 95, + 216, + 149, + 251, + 196, + 48, + 78, + 0, + 125, + 73, + 36, + 125, + 108, + 161, + 255, + 134, + 213, + 60, + 60, + 14, + 129, + 212, + 231, + 245, + 56, + 173, + 141, + 136, + 41, + 69, + 86, + 115, + 144, + 95, + 89, + 114, + 11, + 183, + 130, + 137, + 178, + 206, + 232, + 244, + 163, + 38, + 51, + 15, + 26, + 244, + 111, + 229, + 10, + 28, + 180, + 30, + 179, + 101, + 222, + 99, + 162, + 141, + 5, + 152, + 27, + 151, + 10, + 153, + 128, + 127, + 209, + 98, + 57, + 6, + 187, + 31, + 40, + 238, + 96, + 228, + 145, + 115, + 163, + 108, + 197, + 155, + 120, + 151, + 124, + 226, + 18, + 234, + 109, + 10, + 201, + 17, + 212, + 16, + 198, + 16, + 79, + 248, + 29, + 235, + 246, + 129, + 119, + 150, + 231, + 105, + 172, + 109, + 94, + 37, + 206, + 66, + 198, + 205, + 21, + 185, + 127, + 180, + 127, + 196, + 110, + 92, + 164, + 63, + 215, + 70, + 171, + 62, + 76, + 174, + 112, + 197, + 245, + 215, + 26, + 184, + 228, + 63, + 193, + 67, + 93, + 162, + 2, + 203, + 9, + 74, + 217, + 48, + 176, + 51, + 179, + 77, + 161, + 219, + 104, + 182, + 24, + 193, + 103, + 183, + 131, + 41, + 188, + 76, + 58, + 80, + 214, + 49, + 43, + 184, + 13, + 202, + 146, + 106, + 81, + 32, + 130, + 130, + 138, + 219, + 59, + 251, + 224, + 166, + 42, + 19, + 59, + 93, + 147, + 9, + 52, + 92, + 8, + 225, + 239, + 167, + 177, + 152, + 133, + 218, + 160, + 112, + 94, + 33, + 25, + 237, + 157, + 169, + 77, + 5, + 70, + 82, + 244, + 124, + 44, + 47, + 229, + 148, + 247, + 212, + 92, + 142, + 248, + 213, + 199, + 102, + 35, + 46, + 126, + 31, + 73, + 83, + 111, + 247, + 146, + 168, + 214, + 198, + 139, + 124, + 132, + 46, + 80, + 135, + 61, + 87, + 58, + 250, + 44, + 191, + 225, + 1, + 149, + 165, + 238, + 0, + 14, + 77, + 53, + 251, + 183, + 52, + 95, + 134, + 166, + 220, + 132, + 125, + 31, + 65, + 71, + 245, + 75, + 169, + 156, + 14, + 242, + 208, + 246, + 115, + 227, + 56, + 45, + 136, + 90, + 34, + 34, + 137, + 193, + 202, + 249, + 114, + 120, + 179, + 147, + 15, + 105, + 91, + 72, + 244, + 208, + 137, + 20, + 30, + 192, + 97, + 207, + 229, + 121, + 24, + 165, + 152, + 104, + 240, + 126, + 99, + 209, + 234, + 113, + 98, + 74, + 2, + 170, + 153, + 243, + 123, + 192, + 228, + 226, + 147, + 27, + 31, + 91, + 14, + 216, + 151, + 15, + 230, + 3, + 108, + 182, + 159, + 105, + 17, + 167, + 119, + 178, + 234, + 30, + 109, + 189, + 235, + 133, + 133, + 102, + 16, + 60, + 252, + 12, + 109, + 45, + 20, + 215, + 150, + 148, + 88, + 181, + 185, + 12, + 176, + 110, + 66, + 181, + 201, + 4, + 63, + 164, + 33, + 223, + 196, + 29, + 59, + 208, + 197, + 134, + 211, + 11, + 62, + 63, + 170, + 97, + 67, + 46, + 66, + 186, + 184, + 151, + 223, + 121, + 48, + 195, + 55, + 162, + 203, + 122, + 78, + 200, + 182, + 107, + 166, + 19, + 77, + 210, + 188, + 28, + 76, + 73, + 84, + 199, + 183, + 240, + 45, + 173, + 202, + 225, + 197, + 118, + 49, + 88, + 23, + 42, + 219, + 72, + 255, + 241, + 32, + 241, + 134, + 155, + 93, + 224, + 110, + 64, + 166, + 89, + 116, + 79, + 167, + 194, + 156, + 148, + 92, + 123, + 229, + 254, + 33, + 106, + 13, + 37, + 218, + 211, + 144, + 230, + 82, + 135, + 120, + 61, + 169, + 62, + 1, + 87, + 212, + 47, + 233, + 140, + 47, + 150, + 243, + 131, + 46, + 13, + 27, + 88, + 213, + 180, + 98, + 50, + 168, + 165, + 138, + 233, + 83, + 28, + 0, + 0, + 0, + 0, + 145, + 145, + 104, + 174, + 99, + 37, + 160, + 135, + 242, + 180, + 200, + 41, + 135, + 76, + 49, + 212, + 22, + 221, + 89, + 122, + 228, + 105, + 145, + 83, + 117, + 248, + 249, + 253, + 79, + 159, + 19, + 115, + 222, + 14, + 123, + 221, + 44, + 186, + 179, + 244, + 189, + 43, + 219, + 90, + 200, + 211, + 34, + 167, + 89, + 66, + 74, + 9, + 171, + 246, + 130, + 32, + 58, + 103, + 234, + 142, + 158, + 62, + 39, + 230, + 15, + 175, + 79, + 72, + 253, + 27, + 135, + 97, + 108, + 138, + 239, + 207, + 25, + 114, + 22, + 50, + 136, + 227, + 126, + 156, + 122, + 87, + 182, + 181, + 235, + 198, + 222, + 27, + 209, + 161, + 52, + 149, + 64, + 48, + 92, + 59, + 178, + 132, + 148, + 18, + 35, + 21, + 252, + 188, + 86, + 237, + 5, + 65, + 199, + 124, + 109, + 239, + 53, + 200, + 165, + 198, + 164, + 89, + 205, + 104, + 125, + 123, + 63, + 23, + 236, + 234, + 87, + 185, + 30, + 94, + 159, + 144, + 143, + 207, + 247, + 62, + 250, + 55, + 14, + 195, + 107, + 166, + 102, + 109, + 153, + 18, + 174, + 68, + 8, + 131, + 198, + 234, + 50, + 228, + 44, + 100, + 163, + 117, + 68, + 202, + 81, + 193, + 140, + 227, + 192, + 80, + 228, + 77, + 181, + 168, + 29, + 176, + 36, + 57, + 117, + 30, + 214, + 141, + 189, + 55, + 71, + 28, + 213, + 153, + 227, + 69, + 24, + 241, + 114, + 212, + 112, + 95, + 128, + 96, + 184, + 118, + 17, + 241, + 208, + 216, + 100, + 9, + 41, + 37, + 245, + 152, + 65, + 139, + 7, + 44, + 137, + 162, + 150, + 189, + 225, + 12, + 172, + 218, + 11, + 130, + 61, + 75, + 99, + 44, + 207, + 255, + 171, + 5, + 94, + 110, + 195, + 171, + 43, + 150, + 58, + 86, + 186, + 7, + 82, + 248, + 72, + 179, + 154, + 209, + 217, + 34, + 242, + 127, + 250, + 246, + 126, + 46, + 107, + 103, + 22, + 128, + 153, + 211, + 222, + 169, + 8, + 66, + 182, + 7, + 125, + 186, + 79, + 250, + 236, + 43, + 39, + 84, + 30, + 159, + 239, + 125, + 143, + 14, + 135, + 211, + 181, + 105, + 109, + 93, + 36, + 248, + 5, + 243, + 214, + 76, + 205, + 218, + 71, + 221, + 165, + 116, + 50, + 37, + 92, + 137, + 163, + 180, + 52, + 39, + 81, + 0, + 252, + 14, + 192, + 145, + 148, + 160, + 100, + 200, + 89, + 200, + 245, + 89, + 49, + 102, + 7, + 237, + 249, + 79, + 150, + 124, + 145, + 225, + 227, + 132, + 104, + 28, + 114, + 21, + 0, + 178, + 128, + 161, + 200, + 155, + 17, + 48, + 160, + 53, + 43, + 87, + 74, + 187, + 186, + 198, + 34, + 21, + 72, + 114, + 234, + 60, + 217, + 227, + 130, + 146, + 172, + 27, + 123, + 111, + 61, + 138, + 19, + 193, + 207, + 62, + 219, + 232, + 94, + 175, + 179, + 70, + 135, + 141, + 65, + 57, + 22, + 28, + 41, + 151, + 228, + 168, + 225, + 190, + 117, + 57, + 137, + 16, + 0, + 193, + 112, + 237, + 145, + 80, + 24, + 67, + 99, + 228, + 208, + 106, + 242, + 117, + 184, + 196, + 200, + 18, + 82, + 74, + 89, + 131, + 58, + 228, + 171, + 55, + 242, + 205, + 58, + 166, + 154, + 99, + 79, + 94, + 99, + 158, + 222, + 207, + 11, + 48, + 44, + 123, + 195, + 25, + 189, + 234, + 171, + 183, + 25, + 179, + 102, + 223, + 136, + 34, + 14, + 113, + 122, + 150, + 198, + 88, + 235, + 7, + 174, + 246, + 158, + 255, + 87, + 11, + 15, + 110, + 63, + 165, + 253, + 218, + 247, + 140, + 108, + 75, + 159, + 34, + 86, + 44, + 117, + 172, + 199, + 189, + 29, + 2, + 53, + 9, + 213, + 43, + 164, + 152, + 189, + 133, + 209, + 96, + 68, + 120, + 64, + 241, + 44, + 214, + 178, + 69, + 228, + 255, + 35, + 212, + 140, + 81, + 244, + 237, + 253, + 92, + 101, + 124, + 149, + 242, + 151, + 200, + 93, + 219, + 6, + 89, + 53, + 117, + 115, + 161, + 204, + 136, + 226, + 48, + 164, + 38, + 16, + 132, + 108, + 15, + 129, + 21, + 4, + 161, + 187, + 114, + 238, + 47, + 42, + 227, + 134, + 129, + 216, + 87, + 78, + 168, + 73, + 198, + 38, + 6, + 60, + 62, + 223, + 251, + 173, + 175, + 183, + 85, + 95, + 27, + 127, + 124, + 206, + 138, + 23, + 210, + 106, + 211, + 218, + 186, + 251, + 66, + 178, + 20, + 9, + 246, + 122, + 61, + 152, + 103, + 18, + 147, + 237, + 159, + 235, + 110, + 124, + 14, + 131, + 192, + 142, + 186, + 75, + 233, + 31, + 43, + 35, + 71, + 37, + 76, + 201, + 201, + 180, + 221, + 161, + 103, + 70, + 105, + 105, + 78, + 215, + 248, + 1, + 224, + 162, + 0, + 248, + 29, + 51, + 145, + 144, + 179, + 193, + 37, + 88, + 154, + 80, + 180, + 48, + 52, + 137, + 150, + 194, + 75, + 24, + 7, + 170, + 229, + 234, + 179, + 98, + 204, + 123, + 34, + 10, + 98, + 14, + 218, + 243, + 159, + 159, + 75, + 155, + 49, + 109, + 255, + 83, + 24, + 252, + 110, + 59, + 182, + 198, + 9, + 209, + 56, + 87, + 152, + 185, + 150, + 165, + 44, + 113, + 191, + 52, + 189, + 25, + 17, + 65, + 69, + 224, + 236, + 208, + 212, + 136, + 66, + 34, + 96, + 64, + 107, + 179, + 241, + 40, + 197, + 23, + 168, + 229, + 173, + 134, + 57, + 141, + 3, + 116, + 141, + 69, + 42, + 229, + 28, + 45, + 132, + 144, + 228, + 212, + 121, + 1, + 117, + 188, + 215, + 243, + 193, + 116, + 254, + 98, + 80, + 28, + 80, + 88, + 55, + 246, + 222, + 201, + 166, + 158, + 112, + 59, + 18, + 86, + 89, + 170, + 131, + 62, + 247, + 223, + 123, + 199, + 10, + 78, + 234, + 175, + 164, + 188, + 94, + 103, + 141, + 45, + 207, + 15, + 35, + 14, + 27, + 131, + 114, + 159, + 138, + 235, + 220, + 109, + 62, + 35, + 245, + 252, + 175, + 75, + 91, + 137, + 87, + 178, + 166, + 24, + 198, + 218, + 8, + 234, + 114, + 18, + 33, + 123, + 227, + 122, + 143, + 65, + 132, + 144, + 1, + 208, + 21, + 248, + 175, + 34, + 161, + 48, + 134, + 179, + 48, + 88, + 40, + 198, + 200, + 161, + 213, + 87, + 89, + 201, + 123, + 165, + 237, + 1, + 82, + 52, + 124, + 105, + 252, + 144, + 37, + 164, + 148, + 1, + 180, + 204, + 58, + 243, + 0, + 4, + 19, + 98, + 145, + 108, + 189, + 23, + 105, + 149, + 64, + 134, + 248, + 253, + 238, + 116, + 76, + 53, + 199, + 229, + 221, + 93, + 105, + 223, + 186, + 183, + 231, + 78, + 43, + 223, + 73, + 188, + 159, + 23, + 96, + 45, + 14, + 127, + 206, + 88, + 246, + 134, + 51, + 201, + 103, + 238, + 157, + 59, + 211, + 38, + 180, + 170, + 66, + 78, + 26, + 115, + 96, + 188, + 101, + 226, + 241, + 212, + 203, + 16, + 69, + 28, + 226, + 129, + 212, + 116, + 76, + 244, + 44, + 141, + 177, + 101, + 189, + 229, + 31, + 151, + 9, + 45, + 54, + 6, + 152, + 69, + 152, + 60, + 255, + 175, + 22, + 173, + 110, + 199, + 184, + 95, + 218, + 15, + 145, + 206, + 75, + 103, + 63, + 187, + 179, + 158, + 194, + 42, + 34, + 246, + 108, + 216, + 150, + 62, + 69, + 73, + 7, + 86, + 235, + 237, + 94, + 155, + 131, + 124, + 207, + 243, + 45, + 142, + 123, + 59, + 4, + 31, + 234, + 83, + 170, + 106, + 18, + 170, + 87, + 251, + 131, + 194, + 249, + 9, + 55, + 10, + 208, + 152, + 166, + 98, + 126, + 162, + 193, + 136, + 240, + 51, + 80, + 224, + 94, + 193, + 228, + 40, + 119, + 80, + 117, + 64, + 217, + 37, + 141, + 185, + 36, + 180, + 28, + 209, + 138, + 70, + 168, + 25, + 163, + 215, + 57, + 113, + 13, + 43, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 44, + 0, + 0, + 0, + 45, + 0, + 0, + 0, + 46, + 0, + 0, + 0, + 43, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 47, + 0, + 0, + 0, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 79, + 112, + 116, + 105, + 111, + 110, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 32, + 96, + 78, + 111, + 110, + 101, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 0, + 68, + 94, + 16, + 0, + 0, + 0, + 0, + 0, + 117, + 110, + 101, + 120, + 112, + 101, + 99, + 116, + 101, + 100, + 32, + 101, + 110, + 100, + 32, + 111, + 102, + 32, + 102, + 105, + 108, + 101, + 111, + 116, + 104, + 101, + 114, + 32, + 111, + 115, + 32, + 101, + 114, + 114, + 111, + 114, + 111, + 112, + 101, + 114, + 97, + 116, + 105, + 111, + 110, + 32, + 105, + 110, + 116, + 101, + 114, + 114, + 117, + 112, + 116, + 101, + 100, + 119, + 114, + 105, + 116, + 101, + 32, + 122, + 101, + 114, + 111, + 116, + 105, + 109, + 101, + 100, + 32, + 111, + 117, + 116, + 105, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 100, + 97, + 116, + 97, + 105, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 105, + 110, + 112, + 117, + 116, + 32, + 112, + 97, + 114, + 97, + 109, + 101, + 116, + 101, + 114, + 111, + 112, + 101, + 114, + 97, + 116, + 105, + 111, + 110, + 32, + 119, + 111, + 117, + 108, + 100, + 32, + 98, + 108, + 111, + 99, + 107, + 101, + 110, + 116, + 105, + 116, + 121, + 32, + 97, + 108, + 114, + 101, + 97, + 100, + 121, + 32, + 101, + 120, + 105, + 115, + 116, + 115, + 98, + 114, + 111, + 107, + 101, + 110, + 32, + 112, + 105, + 112, + 101, + 97, + 100, + 100, + 114, + 101, + 115, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 118, + 97, + 105, + 108, + 97, + 98, + 108, + 101, + 97, + 100, + 100, + 114, + 101, + 115, + 115, + 32, + 105, + 110, + 32, + 117, + 115, + 101, + 110, + 111, + 116, + 32, + 99, + 111, + 110, + 110, + 101, + 99, + 116, + 101, + 100, + 99, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 32, + 97, + 98, + 111, + 114, + 116, + 101, + 100, + 99, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 32, + 114, + 101, + 115, + 101, + 116, + 99, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 32, + 114, + 101, + 102, + 117, + 115, + 101, + 100, + 112, + 101, + 114, + 109, + 105, + 115, + 115, + 105, + 111, + 110, + 32, + 100, + 101, + 110, + 105, + 101, + 100, + 101, + 110, + 116, + 105, + 116, + 121, + 32, + 110, + 111, + 116, + 32, + 102, + 111, + 117, + 110, + 100, + 32, + 40, + 111, + 115, + 32, + 101, + 114, + 114, + 111, + 114, + 32, + 41, + 0, + 0, + 0, + 68, + 94, + 16, + 0, + 0, + 0, + 0, + 0, + 177, + 95, + 16, + 0, + 11, + 0, + 0, + 0, + 188, + 95, + 16, + 0, + 1, + 0, + 0, + 0, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 115, + 116, + 100, + 47, + 115, + 114, + 99, + 47, + 112, + 97, + 110, + 105, + 99, + 107, + 105, + 110, + 103, + 46, + 114, + 115, + 216, + 95, + 16, + 0, + 28, + 0, + 0, + 0, + 235, + 1, + 0, + 0, + 31, + 0, + 0, + 0, + 216, + 95, + 16, + 0, + 28, + 0, + 0, + 0, + 236, + 1, + 0, + 0, + 30, + 0, + 0, + 0, + 48, + 0, + 0, + 0, + 16, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 49, + 0, + 0, + 0, + 50, + 0, + 0, + 0, + 43, + 0, + 0, + 0, + 8, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 51, + 0, + 0, + 0, + 52, + 0, + 0, + 0, + 53, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 54, + 0, + 0, + 0, + 43, + 0, + 0, + 0, + 8, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 55, + 0, + 0, + 0, + 85, + 110, + 101, + 120, + 112, + 101, + 99, + 116, + 101, + 100, + 69, + 111, + 102, + 79, + 116, + 104, + 101, + 114, + 73, + 110, + 116, + 101, + 114, + 114, + 117, + 112, + 116, + 101, + 100, + 87, + 114, + 105, + 116, + 101, + 90, + 101, + 114, + 111, + 84, + 105, + 109, + 101, + 100, + 79, + 117, + 116, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 68, + 97, + 116, + 97, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 73, + 110, + 112, + 117, + 116, + 87, + 111, + 117, + 108, + 100, + 66, + 108, + 111, + 99, + 107, + 65, + 108, + 114, + 101, + 97, + 100, + 121, + 69, + 120, + 105, + 115, + 116, + 115, + 66, + 114, + 111, + 107, + 101, + 110, + 80, + 105, + 112, + 101, + 65, + 100, + 100, + 114, + 78, + 111, + 116, + 65, + 118, + 97, + 105, + 108, + 97, + 98, + 108, + 101, + 65, + 100, + 100, + 114, + 73, + 110, + 85, + 115, + 101, + 78, + 111, + 116, + 67, + 111, + 110, + 110, + 101, + 99, + 116, + 101, + 100, + 67, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 65, + 98, + 111, + 114, + 116, + 101, + 100, + 67, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 82, + 101, + 115, + 101, + 116, + 67, + 111, + 110, + 110, + 101, + 99, + 116, + 105, + 111, + 110, + 82, + 101, + 102, + 117, + 115, + 101, + 100, + 80, + 101, + 114, + 109, + 105, + 115, + 115, + 105, + 111, + 110, + 68, + 101, + 110, + 105, + 101, + 100, + 78, + 111, + 116, + 70, + 111, + 117, + 110, + 100, + 111, + 112, + 101, + 114, + 97, + 116, + 105, + 111, + 110, + 32, + 115, + 117, + 99, + 99, + 101, + 115, + 115, + 102, + 117, + 108, + 56, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 57, + 0, + 0, + 0, + 58, + 0, + 0, + 0, + 59, + 0, + 0, + 0, + 47, + 114, + 117, + 115, + 116, + 99, + 47, + 50, + 102, + 100, + 55, + 51, + 102, + 97, + 98, + 101, + 52, + 54, + 57, + 51, + 53, + 55, + 97, + 49, + 50, + 99, + 50, + 99, + 57, + 55, + 52, + 99, + 49, + 52, + 48, + 102, + 54, + 55, + 101, + 55, + 99, + 100, + 100, + 55, + 54, + 100, + 48, + 47, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 99, + 111, + 114, + 101, + 47, + 115, + 114, + 99, + 47, + 102, + 109, + 116, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 92, + 97, + 16, + 0, + 75, + 0, + 0, + 0, + 90, + 1, + 0, + 0, + 19, + 0, + 0, + 0, + 56, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 60, + 0, + 0, + 0, + 97, + 32, + 102, + 111, + 114, + 109, + 97, + 116, + 116, + 105, + 110, + 103, + 32, + 116, + 114, + 97, + 105, + 116, + 32, + 105, + 109, + 112, + 108, + 101, + 109, + 101, + 110, + 116, + 97, + 116, + 105, + 111, + 110, + 32, + 114, + 101, + 116, + 117, + 114, + 110, + 101, + 100, + 32, + 97, + 110, + 32, + 101, + 114, + 114, + 111, + 114, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 97, + 108, + 108, + 111, + 99, + 47, + 115, + 114, + 99, + 47, + 102, + 109, + 116, + 46, + 114, + 115, + 0, + 251, + 97, + 16, + 0, + 24, + 0, + 0, + 0, + 66, + 2, + 0, + 0, + 28, + 0, + 0, + 0, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 97, + 108, + 108, + 111, + 99, + 47, + 115, + 114, + 99, + 47, + 114, + 97, + 119, + 95, + 118, + 101, + 99, + 46, + 114, + 115, + 99, + 97, + 112, + 97, + 99, + 105, + 116, + 121, + 32, + 111, + 118, + 101, + 114, + 102, + 108, + 111, + 119, + 0, + 0, + 0, + 36, + 98, + 16, + 0, + 28, + 0, + 0, + 0, + 24, + 2, + 0, + 0, + 5, + 0, + 0, + 0, + 96, + 46, + 46, + 0, + 101, + 98, + 16, + 0, + 2, + 0, + 0, + 0, + 99, + 97, + 108, + 108, + 101, + 100, + 32, + 96, + 79, + 112, + 116, + 105, + 111, + 110, + 58, + 58, + 117, + 110, + 119, + 114, + 97, + 112, + 40, + 41, + 96, + 32, + 111, + 110, + 32, + 97, + 32, + 96, + 78, + 111, + 110, + 101, + 96, + 32, + 118, + 97, + 108, + 117, + 101, + 58, + 32, + 0, + 0, + 0, + 100, + 98, + 16, + 0, + 0, + 0, + 0, + 0, + 155, + 98, + 16, + 0, + 2, + 0, + 0, + 0, + 67, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 1, + 0, + 0, + 0, + 68, + 0, + 0, + 0, + 105, + 110, + 100, + 101, + 120, + 32, + 111, + 117, + 116, + 32, + 111, + 102, + 32, + 98, + 111, + 117, + 110, + 100, + 115, + 58, + 32, + 116, + 104, + 101, + 32, + 108, + 101, + 110, + 32, + 105, + 115, + 32, + 32, + 98, + 117, + 116, + 32, + 116, + 104, + 101, + 32, + 105, + 110, + 100, + 101, + 120, + 32, + 105, + 115, + 32, + 0, + 0, + 192, + 98, + 16, + 0, + 32, + 0, + 0, + 0, + 224, + 98, + 16, + 0, + 18, + 0, + 0, + 0, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 99, + 111, + 114, + 101, + 47, + 115, + 114, + 99, + 47, + 102, + 109, + 116, + 47, + 98, + 117, + 105, + 108, + 100, + 101, + 114, + 115, + 46, + 114, + 115, + 67, + 0, + 0, + 0, + 12, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 69, + 0, + 0, + 0, + 70, + 0, + 0, + 0, + 71, + 0, + 0, + 0, + 32, + 32, + 32, + 32, + 4, + 99, + 16, + 0, + 32, + 0, + 0, + 0, + 50, + 0, + 0, + 0, + 33, + 0, + 0, + 0, + 4, + 99, + 16, + 0, + 32, + 0, + 0, + 0, + 51, + 0, + 0, + 0, + 18, + 0, + 0, + 0, + 32, + 123, + 10, + 44, + 10, + 44, + 32, + 32, + 123, + 32, + 125, + 32, + 125, + 40, + 10, + 40, + 44, + 41, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 99, + 111, + 114, + 101, + 47, + 115, + 114, + 99, + 47, + 102, + 109, + 116, + 47, + 110, + 117, + 109, + 46, + 114, + 115, + 0, + 0, + 0, + 114, + 99, + 16, + 0, + 27, + 0, + 0, + 0, + 101, + 0, + 0, + 0, + 20, + 0, + 0, + 0, + 48, + 120, + 48, + 48, + 48, + 49, + 48, + 50, + 48, + 51, + 48, + 52, + 48, + 53, + 48, + 54, + 48, + 55, + 48, + 56, + 48, + 57, + 49, + 48, + 49, + 49, + 49, + 50, + 49, + 51, + 49, + 52, + 49, + 53, + 49, + 54, + 49, + 55, + 49, + 56, + 49, + 57, + 50, + 48, + 50, + 49, + 50, + 50, + 50, + 51, + 50, + 52, + 50, + 53, + 50, + 54, + 50, + 55, + 50, + 56, + 50, + 57, + 51, + 48, + 51, + 49, + 51, + 50, + 51, + 51, + 51, + 52, + 51, + 53, + 51, + 54, + 51, + 55, + 51, + 56, + 51, + 57, + 52, + 48, + 52, + 49, + 52, + 50, + 52, + 51, + 52, + 52, + 52, + 53, + 52, + 54, + 52, + 55, + 52, + 56, + 52, + 57, + 53, + 48, + 53, + 49, + 53, + 50, + 53, + 51, + 53, + 52, + 53, + 53, + 53, + 54, + 53, + 55, + 53, + 56, + 53, + 57, + 54, + 48, + 54, + 49, + 54, + 50, + 54, + 51, + 54, + 52, + 54, + 53, + 54, + 54, + 54, + 55, + 54, + 56, + 54, + 57, + 55, + 48, + 55, + 49, + 55, + 50, + 55, + 51, + 55, + 52, + 55, + 53, + 55, + 54, + 55, + 55, + 55, + 56, + 55, + 57, + 56, + 48, + 56, + 49, + 56, + 50, + 56, + 51, + 56, + 52, + 56, + 53, + 56, + 54, + 56, + 55, + 56, + 56, + 56, + 57, + 57, + 48, + 57, + 49, + 57, + 50, + 57, + 51, + 57, + 52, + 57, + 53, + 57, + 54, + 57, + 55, + 57, + 56, + 57, + 57, + 0, + 0, + 67, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 4, + 0, + 0, + 0, + 72, + 0, + 0, + 0, + 73, + 0, + 0, + 0, + 74, + 0, + 0, + 0, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 99, + 111, + 114, + 101, + 47, + 115, + 114, + 99, + 47, + 102, + 109, + 116, + 47, + 109, + 111, + 100, + 46, + 114, + 115, + 0, + 132, + 100, + 16, + 0, + 27, + 0, + 0, + 0, + 16, + 8, + 0, + 0, + 30, + 0, + 0, + 0, + 132, + 100, + 16, + 0, + 27, + 0, + 0, + 0, + 23, + 8, + 0, + 0, + 22, + 0, + 0, + 0, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 99, + 111, + 114, + 101, + 47, + 115, + 114, + 99, + 47, + 115, + 108, + 105, + 99, + 101, + 47, + 109, + 101, + 109, + 99, + 104, + 114, + 46, + 114, + 115, + 192, + 100, + 16, + 0, + 32, + 0, + 0, + 0, + 90, + 0, + 0, + 0, + 5, + 0, + 0, + 0, + 114, + 97, + 110, + 103, + 101, + 32, + 115, + 116, + 97, + 114, + 116, + 32, + 105, + 110, + 100, + 101, + 120, + 32, + 32, + 111, + 117, + 116, + 32, + 111, + 102, + 32, + 114, + 97, + 110, + 103, + 101, + 32, + 102, + 111, + 114, + 32, + 115, + 108, + 105, + 99, + 101, + 32, + 111, + 102, + 32, + 108, + 101, + 110, + 103, + 116, + 104, + 32, + 240, + 100, + 16, + 0, + 18, + 0, + 0, + 0, + 2, + 101, + 16, + 0, + 34, + 0, + 0, + 0, + 114, + 97, + 110, + 103, + 101, + 32, + 101, + 110, + 100, + 32, + 105, + 110, + 100, + 101, + 120, + 32, + 52, + 101, + 16, + 0, + 16, + 0, + 0, + 0, + 2, + 101, + 16, + 0, + 34, + 0, + 0, + 0, + 115, + 108, + 105, + 99, + 101, + 32, + 105, + 110, + 100, + 101, + 120, + 32, + 115, + 116, + 97, + 114, + 116, + 115, + 32, + 97, + 116, + 32, + 32, + 98, + 117, + 116, + 32, + 101, + 110, + 100, + 115, + 32, + 97, + 116, + 32, + 0, + 84, + 101, + 16, + 0, + 22, + 0, + 0, + 0, + 106, + 101, + 16, + 0, + 13, + 0, + 0, + 0, + 91, + 46, + 46, + 46, + 93, + 98, + 121, + 116, + 101, + 32, + 105, + 110, + 100, + 101, + 120, + 32, + 32, + 105, + 115, + 32, + 111, + 117, + 116, + 32, + 111, + 102, + 32, + 98, + 111, + 117, + 110, + 100, + 115, + 32, + 111, + 102, + 32, + 96, + 0, + 0, + 141, + 101, + 16, + 0, + 11, + 0, + 0, + 0, + 152, + 101, + 16, + 0, + 22, + 0, + 0, + 0, + 100, + 98, + 16, + 0, + 1, + 0, + 0, + 0, + 98, + 101, + 103, + 105, + 110, + 32, + 60, + 61, + 32, + 101, + 110, + 100, + 32, + 40, + 32, + 60, + 61, + 32, + 41, + 32, + 119, + 104, + 101, + 110, + 32, + 115, + 108, + 105, + 99, + 105, + 110, + 103, + 32, + 96, + 0, + 0, + 200, + 101, + 16, + 0, + 14, + 0, + 0, + 0, + 214, + 101, + 16, + 0, + 4, + 0, + 0, + 0, + 218, + 101, + 16, + 0, + 16, + 0, + 0, + 0, + 100, + 98, + 16, + 0, + 1, + 0, + 0, + 0, + 32, + 105, + 115, + 32, + 110, + 111, + 116, + 32, + 97, + 32, + 99, + 104, + 97, + 114, + 32, + 98, + 111, + 117, + 110, + 100, + 97, + 114, + 121, + 59, + 32, + 105, + 116, + 32, + 105, + 115, + 32, + 105, + 110, + 115, + 105, + 100, + 101, + 32, + 32, + 40, + 98, + 121, + 116, + 101, + 115, + 32, + 41, + 32, + 111, + 102, + 32, + 96, + 141, + 101, + 16, + 0, + 11, + 0, + 0, + 0, + 12, + 102, + 16, + 0, + 38, + 0, + 0, + 0, + 50, + 102, + 16, + 0, + 8, + 0, + 0, + 0, + 58, + 102, + 16, + 0, + 6, + 0, + 0, + 0, + 100, + 98, + 16, + 0, + 1, + 0, + 0, + 0, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 99, + 111, + 114, + 101, + 47, + 115, + 114, + 99, + 47, + 117, + 110, + 105, + 99, + 111, + 100, + 101, + 47, + 112, + 114, + 105, + 110, + 116, + 97, + 98, + 108, + 101, + 46, + 114, + 115, + 0, + 0, + 0, + 104, + 102, + 16, + 0, + 37, + 0, + 0, + 0, + 10, + 0, + 0, + 0, + 28, + 0, + 0, + 0, + 104, + 102, + 16, + 0, + 37, + 0, + 0, + 0, + 26, + 0, + 0, + 0, + 54, + 0, + 0, + 0, + 0, + 1, + 3, + 5, + 5, + 6, + 6, + 3, + 7, + 6, + 8, + 8, + 9, + 17, + 10, + 28, + 11, + 25, + 12, + 20, + 13, + 16, + 14, + 13, + 15, + 4, + 16, + 3, + 18, + 18, + 19, + 9, + 22, + 1, + 23, + 5, + 24, + 2, + 25, + 3, + 26, + 7, + 28, + 2, + 29, + 1, + 31, + 22, + 32, + 3, + 43, + 3, + 44, + 2, + 45, + 11, + 46, + 1, + 48, + 3, + 49, + 2, + 50, + 1, + 167, + 2, + 169, + 2, + 170, + 4, + 171, + 8, + 250, + 2, + 251, + 5, + 253, + 4, + 254, + 3, + 255, + 9, + 173, + 120, + 121, + 139, + 141, + 162, + 48, + 87, + 88, + 139, + 140, + 144, + 28, + 29, + 221, + 14, + 15, + 75, + 76, + 251, + 252, + 46, + 47, + 63, + 92, + 93, + 95, + 181, + 226, + 132, + 141, + 142, + 145, + 146, + 169, + 177, + 186, + 187, + 197, + 198, + 201, + 202, + 222, + 228, + 229, + 255, + 0, + 4, + 17, + 18, + 41, + 49, + 52, + 55, + 58, + 59, + 61, + 73, + 74, + 93, + 132, + 142, + 146, + 169, + 177, + 180, + 186, + 187, + 198, + 202, + 206, + 207, + 228, + 229, + 0, + 4, + 13, + 14, + 17, + 18, + 41, + 49, + 52, + 58, + 59, + 69, + 70, + 73, + 74, + 94, + 100, + 101, + 132, + 145, + 155, + 157, + 201, + 206, + 207, + 13, + 17, + 41, + 69, + 73, + 87, + 100, + 101, + 141, + 145, + 169, + 180, + 186, + 187, + 197, + 201, + 223, + 228, + 229, + 240, + 13, + 17, + 69, + 73, + 100, + 101, + 128, + 132, + 178, + 188, + 190, + 191, + 213, + 215, + 240, + 241, + 131, + 133, + 139, + 164, + 166, + 190, + 191, + 197, + 199, + 206, + 207, + 218, + 219, + 72, + 152, + 189, + 205, + 198, + 206, + 207, + 73, + 78, + 79, + 87, + 89, + 94, + 95, + 137, + 142, + 143, + 177, + 182, + 183, + 191, + 193, + 198, + 199, + 215, + 17, + 22, + 23, + 91, + 92, + 246, + 247, + 254, + 255, + 128, + 13, + 109, + 113, + 222, + 223, + 14, + 15, + 31, + 110, + 111, + 28, + 29, + 95, + 125, + 126, + 174, + 175, + 187, + 188, + 250, + 22, + 23, + 30, + 31, + 70, + 71, + 78, + 79, + 88, + 90, + 92, + 94, + 126, + 127, + 181, + 197, + 212, + 213, + 220, + 240, + 241, + 245, + 114, + 115, + 143, + 116, + 117, + 150, + 47, + 95, + 38, + 46, + 47, + 167, + 175, + 183, + 191, + 199, + 207, + 215, + 223, + 154, + 64, + 151, + 152, + 48, + 143, + 31, + 192, + 193, + 206, + 255, + 78, + 79, + 90, + 91, + 7, + 8, + 15, + 16, + 39, + 47, + 238, + 239, + 110, + 111, + 55, + 61, + 63, + 66, + 69, + 144, + 145, + 254, + 255, + 83, + 103, + 117, + 200, + 201, + 208, + 209, + 216, + 217, + 231, + 254, + 255, + 0, + 32, + 95, + 34, + 130, + 223, + 4, + 130, + 68, + 8, + 27, + 4, + 6, + 17, + 129, + 172, + 14, + 128, + 171, + 53, + 40, + 11, + 128, + 224, + 3, + 25, + 8, + 1, + 4, + 47, + 4, + 52, + 4, + 7, + 3, + 1, + 7, + 6, + 7, + 17, + 10, + 80, + 15, + 18, + 7, + 85, + 7, + 3, + 4, + 28, + 10, + 9, + 3, + 8, + 3, + 7, + 3, + 2, + 3, + 3, + 3, + 12, + 4, + 5, + 3, + 11, + 6, + 1, + 14, + 21, + 5, + 58, + 3, + 17, + 7, + 6, + 5, + 16, + 7, + 87, + 7, + 2, + 7, + 21, + 13, + 80, + 4, + 67, + 3, + 45, + 3, + 1, + 4, + 17, + 6, + 15, + 12, + 58, + 4, + 29, + 37, + 95, + 32, + 109, + 4, + 106, + 37, + 128, + 200, + 5, + 130, + 176, + 3, + 26, + 6, + 130, + 253, + 3, + 89, + 7, + 21, + 11, + 23, + 9, + 20, + 12, + 20, + 12, + 106, + 6, + 10, + 6, + 26, + 6, + 89, + 7, + 43, + 5, + 70, + 10, + 44, + 4, + 12, + 4, + 1, + 3, + 49, + 11, + 44, + 4, + 26, + 6, + 11, + 3, + 128, + 172, + 6, + 10, + 6, + 33, + 63, + 76, + 4, + 45, + 3, + 116, + 8, + 60, + 3, + 15, + 3, + 60, + 7, + 56, + 8, + 43, + 5, + 130, + 255, + 17, + 24, + 8, + 47, + 17, + 45, + 3, + 32, + 16, + 33, + 15, + 128, + 140, + 4, + 130, + 151, + 25, + 11, + 21, + 136, + 148, + 5, + 47, + 5, + 59, + 7, + 2, + 14, + 24, + 9, + 128, + 179, + 45, + 116, + 12, + 128, + 214, + 26, + 12, + 5, + 128, + 255, + 5, + 128, + 223, + 12, + 238, + 13, + 3, + 132, + 141, + 3, + 55, + 9, + 129, + 92, + 20, + 128, + 184, + 8, + 128, + 203, + 42, + 56, + 3, + 10, + 6, + 56, + 8, + 70, + 8, + 12, + 6, + 116, + 11, + 30, + 3, + 90, + 4, + 89, + 9, + 128, + 131, + 24, + 28, + 10, + 22, + 9, + 76, + 4, + 128, + 138, + 6, + 171, + 164, + 12, + 23, + 4, + 49, + 161, + 4, + 129, + 218, + 38, + 7, + 12, + 5, + 5, + 128, + 165, + 17, + 129, + 109, + 16, + 120, + 40, + 42, + 6, + 76, + 4, + 128, + 141, + 4, + 128, + 190, + 3, + 27, + 3, + 15, + 13, + 0, + 6, + 1, + 1, + 3, + 1, + 4, + 2, + 8, + 8, + 9, + 2, + 10, + 5, + 11, + 2, + 14, + 4, + 16, + 1, + 17, + 2, + 18, + 5, + 19, + 17, + 20, + 1, + 21, + 2, + 23, + 2, + 25, + 13, + 28, + 5, + 29, + 8, + 36, + 1, + 106, + 3, + 107, + 2, + 188, + 2, + 209, + 2, + 212, + 12, + 213, + 9, + 214, + 2, + 215, + 2, + 218, + 1, + 224, + 5, + 225, + 2, + 232, + 2, + 238, + 32, + 240, + 4, + 248, + 2, + 249, + 2, + 250, + 2, + 251, + 1, + 12, + 39, + 59, + 62, + 78, + 79, + 143, + 158, + 158, + 159, + 6, + 7, + 9, + 54, + 61, + 62, + 86, + 243, + 208, + 209, + 4, + 20, + 24, + 54, + 55, + 86, + 87, + 127, + 170, + 174, + 175, + 189, + 53, + 224, + 18, + 135, + 137, + 142, + 158, + 4, + 13, + 14, + 17, + 18, + 41, + 49, + 52, + 58, + 69, + 70, + 73, + 74, + 78, + 79, + 100, + 101, + 92, + 182, + 183, + 27, + 28, + 7, + 8, + 10, + 11, + 20, + 23, + 54, + 57, + 58, + 168, + 169, + 216, + 217, + 9, + 55, + 144, + 145, + 168, + 7, + 10, + 59, + 62, + 102, + 105, + 143, + 146, + 111, + 95, + 238, + 239, + 90, + 98, + 154, + 155, + 39, + 40, + 85, + 157, + 160, + 161, + 163, + 164, + 167, + 168, + 173, + 186, + 188, + 196, + 6, + 11, + 12, + 21, + 29, + 58, + 63, + 69, + 81, + 166, + 167, + 204, + 205, + 160, + 7, + 25, + 26, + 34, + 37, + 62, + 63, + 197, + 198, + 4, + 32, + 35, + 37, + 38, + 40, + 51, + 56, + 58, + 72, + 74, + 76, + 80, + 83, + 85, + 86, + 88, + 90, + 92, + 94, + 96, + 99, + 101, + 102, + 107, + 115, + 120, + 125, + 127, + 138, + 164, + 170, + 175, + 176, + 192, + 208, + 174, + 175, + 121, + 204, + 110, + 111, + 147, + 94, + 34, + 123, + 5, + 3, + 4, + 45, + 3, + 102, + 3, + 1, + 47, + 46, + 128, + 130, + 29, + 3, + 49, + 15, + 28, + 4, + 36, + 9, + 30, + 5, + 43, + 5, + 68, + 4, + 14, + 42, + 128, + 170, + 6, + 36, + 4, + 36, + 4, + 40, + 8, + 52, + 11, + 1, + 128, + 144, + 129, + 55, + 9, + 22, + 10, + 8, + 128, + 152, + 57, + 3, + 99, + 8, + 9, + 48, + 22, + 5, + 33, + 3, + 27, + 5, + 1, + 64, + 56, + 4, + 75, + 5, + 47, + 4, + 10, + 7, + 9, + 7, + 64, + 32, + 39, + 4, + 12, + 9, + 54, + 3, + 58, + 5, + 26, + 7, + 4, + 12, + 7, + 80, + 73, + 55, + 51, + 13, + 51, + 7, + 46, + 8, + 10, + 129, + 38, + 82, + 78, + 40, + 8, + 42, + 86, + 28, + 20, + 23, + 9, + 78, + 4, + 30, + 15, + 67, + 14, + 25, + 7, + 10, + 6, + 72, + 8, + 39, + 9, + 117, + 11, + 63, + 65, + 42, + 6, + 59, + 5, + 10, + 6, + 81, + 6, + 1, + 5, + 16, + 3, + 5, + 128, + 139, + 98, + 30, + 72, + 8, + 10, + 128, + 166, + 94, + 34, + 69, + 11, + 10, + 6, + 13, + 19, + 57, + 7, + 10, + 54, + 44, + 4, + 16, + 128, + 192, + 60, + 100, + 83, + 12, + 72, + 9, + 10, + 70, + 69, + 27, + 72, + 8, + 83, + 29, + 57, + 129, + 7, + 70, + 10, + 29, + 3, + 71, + 73, + 55, + 3, + 14, + 8, + 10, + 6, + 57, + 7, + 10, + 129, + 54, + 25, + 128, + 183, + 1, + 15, + 50, + 13, + 131, + 155, + 102, + 117, + 11, + 128, + 196, + 138, + 188, + 132, + 47, + 143, + 209, + 130, + 71, + 161, + 185, + 130, + 57, + 7, + 42, + 4, + 2, + 96, + 38, + 10, + 70, + 10, + 40, + 5, + 19, + 130, + 176, + 91, + 101, + 75, + 4, + 57, + 7, + 17, + 64, + 5, + 11, + 2, + 14, + 151, + 248, + 8, + 132, + 214, + 42, + 9, + 162, + 247, + 129, + 31, + 49, + 3, + 17, + 4, + 8, + 129, + 140, + 137, + 4, + 107, + 5, + 13, + 3, + 9, + 7, + 16, + 147, + 96, + 128, + 246, + 10, + 115, + 8, + 110, + 23, + 70, + 128, + 154, + 20, + 12, + 87, + 9, + 25, + 128, + 135, + 129, + 71, + 3, + 133, + 66, + 15, + 21, + 133, + 80, + 43, + 128, + 213, + 45, + 3, + 26, + 4, + 2, + 129, + 112, + 58, + 5, + 1, + 133, + 0, + 128, + 215, + 41, + 76, + 4, + 10, + 4, + 2, + 131, + 17, + 68, + 76, + 61, + 128, + 194, + 60, + 6, + 1, + 4, + 85, + 5, + 27, + 52, + 2, + 129, + 14, + 44, + 4, + 100, + 12, + 86, + 10, + 128, + 174, + 56, + 29, + 13, + 44, + 4, + 9, + 7, + 2, + 14, + 6, + 128, + 154, + 131, + 216, + 8, + 13, + 3, + 13, + 3, + 116, + 12, + 89, + 7, + 12, + 20, + 12, + 4, + 56, + 8, + 10, + 6, + 40, + 8, + 34, + 78, + 129, + 84, + 12, + 21, + 3, + 3, + 5, + 7, + 9, + 25, + 7, + 7, + 9, + 3, + 13, + 7, + 41, + 128, + 203, + 37, + 10, + 132, + 6, + 108, + 105, + 98, + 114, + 97, + 114, + 121, + 47, + 99, + 111, + 114, + 101, + 47, + 115, + 114, + 99, + 47, + 117, + 110, + 105, + 99, + 111, + 100, + 101, + 47, + 117, + 110, + 105, + 99, + 111, + 100, + 101, + 95, + 100, + 97, + 116, + 97, + 46, + 114, + 115, + 0, + 247, + 107, + 16, + 0, + 40, + 0, + 0, + 0, + 75, + 0, + 0, + 0, + 40, + 0, + 0, + 0, + 247, + 107, + 16, + 0, + 40, + 0, + 0, + 0, + 87, + 0, + 0, + 0, + 22, + 0, + 0, + 0, + 247, + 107, + 16, + 0, + 40, + 0, + 0, + 0, + 82, + 0, + 0, + 0, + 62, + 0, + 0, + 0, + 69, + 114, + 114, + 111, + 114, + 0, + 0, + 0, + 0, + 3, + 0, + 0, + 131, + 4, + 32, + 0, + 145, + 5, + 96, + 0, + 93, + 19, + 160, + 0, + 18, + 23, + 160, + 30, + 12, + 32, + 224, + 30, + 239, + 44, + 32, + 43, + 42, + 48, + 160, + 43, + 111, + 166, + 96, + 44, + 2, + 168, + 224, + 44, + 30, + 251, + 224, + 45, + 0, + 254, + 160, + 53, + 158, + 255, + 224, + 53, + 253, + 1, + 97, + 54, + 1, + 10, + 161, + 54, + 36, + 13, + 97, + 55, + 171, + 14, + 225, + 56, + 47, + 24, + 33, + 57, + 48, + 28, + 97, + 70, + 243, + 30, + 161, + 74, + 240, + 106, + 97, + 78, + 79, + 111, + 161, + 78, + 157, + 188, + 33, + 79, + 101, + 209, + 225, + 79, + 0, + 218, + 33, + 80, + 0, + 224, + 225, + 81, + 48, + 225, + 97, + 83, + 236, + 226, + 161, + 84, + 208, + 232, + 225, + 84, + 32, + 0, + 46, + 85, + 240, + 1, + 191, + 85, + 0, + 112, + 0, + 7, + 0, + 45, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 1, + 72, + 11, + 48, + 21, + 16, + 1, + 101, + 7, + 2, + 6, + 2, + 2, + 1, + 4, + 35, + 1, + 30, + 27, + 91, + 11, + 58, + 9, + 9, + 1, + 24, + 4, + 1, + 9, + 1, + 3, + 1, + 5, + 43, + 3, + 119, + 15, + 1, + 32, + 55, + 1, + 1, + 1, + 4, + 8, + 4, + 1, + 3, + 7, + 10, + 2, + 29, + 1, + 58, + 1, + 1, + 1, + 2, + 4, + 8, + 1, + 9, + 1, + 10, + 2, + 26, + 1, + 2, + 2, + 57, + 1, + 4, + 2, + 4, + 2, + 2, + 3, + 3, + 1, + 30, + 2, + 3, + 1, + 11, + 2, + 57, + 1, + 4, + 5, + 1, + 2, + 4, + 1, + 20, + 2, + 22, + 6, + 1, + 1, + 58, + 1, + 1, + 2, + 1, + 4, + 8, + 1, + 7, + 3, + 10, + 2, + 30, + 1, + 59, + 1, + 1, + 1, + 12, + 1, + 9, + 1, + 40, + 1, + 3, + 1, + 57, + 3, + 5, + 3, + 1, + 4, + 7, + 2, + 11, + 2, + 29, + 1, + 58, + 1, + 2, + 1, + 2, + 1, + 3, + 1, + 5, + 2, + 7, + 2, + 11, + 2, + 28, + 2, + 57, + 2, + 1, + 1, + 2, + 4, + 8, + 1, + 9, + 1, + 10, + 2, + 29, + 1, + 72, + 1, + 4, + 1, + 2, + 3, + 1, + 1, + 8, + 1, + 81, + 1, + 2, + 7, + 12, + 8, + 98, + 1, + 2, + 9, + 11, + 6, + 74, + 2, + 27, + 1, + 1, + 1, + 1, + 1, + 55, + 14, + 1, + 5, + 1, + 2, + 5, + 11, + 1, + 36, + 9, + 1, + 102, + 4, + 1, + 6, + 1, + 2, + 2, + 2, + 25, + 2, + 4, + 3, + 16, + 4, + 13, + 1, + 2, + 2, + 6, + 1, + 15, + 1, + 0, + 3, + 0, + 3, + 29, + 3, + 29, + 2, + 30, + 2, + 64, + 2, + 1, + 7, + 8, + 1, + 2, + 11, + 9, + 1, + 45, + 3, + 119, + 2, + 34, + 1, + 118, + 3, + 4, + 2, + 9, + 1, + 6, + 3, + 219, + 2, + 2, + 1, + 58, + 1, + 1, + 7, + 1, + 1, + 1, + 1, + 2, + 8, + 6, + 10, + 2, + 1, + 48, + 17, + 63, + 4, + 48, + 7, + 1, + 1, + 5, + 1, + 40, + 9, + 12, + 2, + 32, + 4, + 2, + 2, + 1, + 3, + 56, + 1, + 1, + 2, + 3, + 1, + 1, + 3, + 58, + 8, + 2, + 2, + 152, + 3, + 1, + 13, + 1, + 7, + 4, + 1, + 6, + 1, + 3, + 2, + 198, + 58, + 1, + 5, + 0, + 1, + 195, + 33, + 0, + 3, + 141, + 1, + 96, + 32, + 0, + 6, + 105, + 2, + 0, + 4, + 1, + 10, + 32, + 2, + 80, + 2, + 0, + 1, + 3, + 1, + 4, + 1, + 25, + 2, + 5, + 1, + 151, + 2, + 26, + 18, + 13, + 1, + 38, + 8, + 25, + 11, + 46, + 3, + 48, + 1, + 2, + 4, + 2, + 2, + 39, + 1, + 67, + 6, + 2, + 2, + 2, + 2, + 12, + 1, + 8, + 1, + 47, + 1, + 51, + 1, + 1, + 3, + 2, + 2, + 5, + 2, + 1, + 1, + 42, + 2, + 8, + 1, + 238, + 1, + 2, + 1, + 4, + 1, + 0, + 1, + 0, + 16, + 16, + 16, + 0, + 2, + 0, + 1, + 226, + 1, + 149, + 5, + 0, + 3, + 1, + 2, + 5, + 4, + 40, + 3, + 4, + 1, + 165, + 2, + 0, + 4, + 0, + 2, + 153, + 11, + 176, + 1, + 54, + 15, + 56, + 3, + 49, + 4, + 2, + 2, + 69, + 3, + 36, + 5, + 1, + 8, + 62, + 1, + 12, + 2, + 52, + 9, + 10, + 4, + 2, + 1, + 95, + 3, + 2, + 1, + 1, + 2, + 6, + 1, + 160, + 1, + 3, + 8, + 21, + 2, + 57, + 2, + 1, + 1, + 1, + 1, + 22, + 1, + 14, + 7, + 3, + 5, + 195, + 8, + 2, + 3, + 1, + 1, + 23, + 1, + 81, + 1, + 2, + 6, + 1, + 1, + 2, + 1, + 1, + 2, + 1, + 2, + 235, + 1, + 2, + 4, + 6, + 2, + 1, + 2, + 27, + 2, + 85, + 8, + 2, + 1, + 1, + 2, + 106, + 1, + 1, + 1, + 2, + 6, + 1, + 1, + 101, + 3, + 2, + 4, + 1, + 5, + 0, + 9, + 1, + 2, + 245, + 1, + 10, + 2, + 1, + 1, + 4, + 1, + 144, + 4, + 2, + 2, + 4, + 1, + 32, + 10, + 40, + 6, + 2, + 4, + 8, + 1, + 9, + 6, + 2, + 3, + 46, + 13, + 1, + 2, + 0, + 7, + 1, + 6, + 1, + 1, + 82, + 22, + 2, + 7, + 1, + 2, + 1, + 2, + 122, + 6, + 3, + 1, + 1, + 2, + 1, + 7, + 1, + 1, + 72, + 2, + 3, + 1, + 1, + 1, + 0, + 2, + 0, + 5, + 59, + 7, + 0, + 1, + 63, + 4, + 81, + 1, + 0, + 2, + 0, + 1, + 1, + 3, + 4, + 5, + 8, + 8, + 2, + 7, + 30, + 4, + 148, + 3, + 0, + 55, + 4, + 50, + 8, + 1, + 14, + 1, + 22, + 5, + 1, + 15, + 0, + 7, + 1, + 17, + 2, + 7, + 1, + 2, + 1, + 5, + 0, + 7, + 0, + 4, + 0, + 7, + 109, + 7, + 0, + 96, + 128, + 240, + 0, + 123, + 9, + 112, + 114, + 111, + 100, + 117, + 99, + 101, + 114, + 115, + 2, + 8, + 108, + 97, + 110, + 103, + 117, + 97, + 103, + 101, + 1, + 4, + 82, + 117, + 115, + 116, + 0, + 12, + 112, + 114, + 111, + 99, + 101, + 115, + 115, + 101, + 100, + 45, + 98, + 121, + 3, + 5, + 114, + 117, + 115, + 116, + 99, + 29, + 49, + 46, + 53, + 49, + 46, + 48, + 32, + 40, + 50, + 102, + 100, + 55, + 51, + 102, + 97, + 98, + 101, + 32, + 50, + 48, + 50, + 49, + 45, + 48, + 51, + 45, + 50, + 51, + 41, + 6, + 119, + 97, + 108, + 114, + 117, + 115, + 6, + 48, + 46, + 49, + 56, + 46, + 48, + 12, + 119, + 97, + 115, + 109, + 45, + 98, + 105, + 110, + 100, + 103, + 101, + 110, + 18, + 48, + 46, + 50, + 46, + 55, + 51, + 32, + 40, + 51, + 99, + 101, + 102, + 101, + 50, + 99, + 56, + 50, + 41 +]); +await init(wasm1); +const importMeta1 = { + url: "https://deno.land/x/esbuild/mod.js", + main: import.meta.main +}; +var __defProp = Object.defineProperty; +var __export = (target, all)=>{ + for(var name in all)__defProp(target, name, { + get: all[name], + enumerable: true + }); +}; +var mod_exports = {}; +__export(mod_exports, { + analyzeMetafile: ()=>analyzeMetafile, + analyzeMetafileSync: ()=>analyzeMetafileSync, + build: ()=>build, + buildSync: ()=>buildSync, + context: ()=>context, + formatMessages: ()=>formatMessages, + formatMessagesSync: ()=>formatMessagesSync, + initialize: ()=>initialize, + stop: ()=>stop, + transform: ()=>transform, + transformSync: ()=>transformSync, + version: ()=>version +}); +function encodePacket(packet) { + let visit = (value)=>{ + if (value === null) { + bb.write8(0); + } else if (typeof value === "boolean") { + bb.write8(1); + bb.write8(+value); + } else if (typeof value === "number") { + bb.write8(2); + bb.write32(value | 0); + } else if (typeof value === "string") { + bb.write8(3); + bb.write(encodeUTF8(value)); + } else if (value instanceof Uint8Array) { + bb.write8(4); + bb.write(value); + } else if (value instanceof Array) { + bb.write8(5); + bb.write32(value.length); + for (let item of value){ + visit(item); + } + } else { + let keys = Object.keys(value); + bb.write8(6); + bb.write32(keys.length); + for (let key of keys){ + bb.write(encodeUTF8(key)); + visit(value[key]); + } + } + }; + let bb = new ByteBuffer(); + bb.write32(0); + bb.write32(packet.id << 1 | +!packet.isRequest); + visit(packet.value); + writeUInt32LE(bb.buf, bb.len - 4, 0); + return bb.buf.subarray(0, bb.len); +} +function decodePacket(bytes) { + let visit = ()=>{ + switch(bb.read8()){ + case 0: + return null; + case 1: + return !!bb.read8(); + case 2: + return bb.read32(); + case 3: + return decodeUTF8(bb.read()); + case 4: + return bb.read(); + case 5: + { + let count = bb.read32(); + let value2 = []; + for(let i = 0; i < count; i++){ + value2.push(visit()); + } + return value2; + } + case 6: + { + let count1 = bb.read32(); + let value21 = {}; + for(let i1 = 0; i1 < count1; i1++){ + value21[decodeUTF8(bb.read())] = visit(); + } + return value21; + } + default: + throw new Error("Invalid packet"); + } + }; + let bb = new ByteBuffer(bytes); + let id = bb.read32(); + let isRequest = (id & 1) === 0; + id >>>= 1; + let value = visit(); + if (bb.ptr !== bytes.length) { + throw new Error("Invalid packet"); + } + return { + id, + isRequest, + value + }; +} +var ByteBuffer = class { + constructor(buf = new Uint8Array(1024)){ + this.buf = buf; + } + len = 0; + ptr = 0; + _write(delta) { + if (this.len + delta > this.buf.length) { + let clone = new Uint8Array((this.len + delta) * 2); + clone.set(this.buf); + this.buf = clone; + } + this.len += delta; + return this.len - delta; + } + write8(value) { + let offset = this._write(1); + this.buf[offset] = value; + } + write32(value) { + let offset = this._write(4); + writeUInt32LE(this.buf, value, offset); + } + write(bytes) { + let offset = this._write(4 + bytes.length); + writeUInt32LE(this.buf, bytes.length, offset); + this.buf.set(bytes, offset + 4); + } + _read(delta) { + if (this.ptr + delta > this.buf.length) { + throw new Error("Invalid packet"); + } + this.ptr += delta; + return this.ptr - delta; + } + read8() { + return this.buf[this._read(1)]; + } + read32() { + return readUInt32LE(this.buf, this._read(4)); + } + read() { + let length = this.read32(); + let bytes = new Uint8Array(length); + let ptr = this._read(bytes.length); + bytes.set(this.buf.subarray(ptr, ptr + length)); + return bytes; + } +}; +var encodeUTF8; +var decodeUTF8; +var encodeInvariant; +if (typeof TextEncoder !== "undefined" && typeof TextDecoder !== "undefined") { + let encoder = new TextEncoder(); + let decoder = new TextDecoder(); + encodeUTF8 = (text)=>encoder.encode(text); + decodeUTF8 = (bytes)=>decoder.decode(bytes); + encodeInvariant = 'new TextEncoder().encode("")'; +} else if (typeof Buffer !== "undefined") { + encodeUTF8 = (text)=>Buffer.from(text); + decodeUTF8 = (bytes)=>{ + let { buffer , byteOffset , byteLength } = bytes; + return Buffer.from(buffer, byteOffset, byteLength).toString(); + }; + encodeInvariant = 'Buffer.from("")'; +} else { + throw new Error("No UTF-8 codec found"); +} +if (!(encodeUTF8("") instanceof Uint8Array)) throw new Error(`Invariant violation: "${encodeInvariant} instanceof Uint8Array" is incorrectly false + +This indicates that your JavaScript environment is broken. You cannot use +esbuild in this environment because esbuild relies on this invariant. This +is not a problem with esbuild. You need to fix your environment instead. +`); +function readUInt32LE(buffer, offset) { + return buffer[offset++] | buffer[offset++] << 8 | buffer[offset++] << 16 | buffer[offset++] << 24; +} +function writeUInt32LE(buffer, value, offset) { + buffer[offset++] = value; + buffer[offset++] = value >> 8; + buffer[offset++] = value >> 16; + buffer[offset++] = value >> 24; +} +var quote = JSON.stringify; +var buildLogLevelDefault = "warning"; +var transformLogLevelDefault = "silent"; +function validateTarget(target) { + validateStringValue(target, "target"); + if (target.indexOf(",") >= 0) throw new Error(`Invalid target: ${target}`); + return target; +} +var canBeAnything = ()=>null; +var mustBeBoolean = (value)=>typeof value === "boolean" ? null : "a boolean"; +var mustBeString = (value)=>typeof value === "string" ? null : "a string"; +var mustBeRegExp = (value)=>value instanceof RegExp ? null : "a RegExp object"; +var mustBeInteger = (value)=>typeof value === "number" && value === (value | 0) ? null : "an integer"; +var mustBeFunction = (value)=>typeof value === "function" ? null : "a function"; +var mustBeArray = (value)=>Array.isArray(value) ? null : "an array"; +var mustBeObject = (value)=>typeof value === "object" && value !== null && !Array.isArray(value) ? null : "an object"; +var mustBeEntryPoints = (value)=>typeof value === "object" && value !== null ? null : "an array or an object"; +var mustBeWebAssemblyModule = (value)=>value instanceof WebAssembly.Module ? null : "a WebAssembly.Module"; +var mustBeObjectOrNull = (value)=>typeof value === "object" && !Array.isArray(value) ? null : "an object or null"; +var mustBeStringOrBoolean = (value)=>typeof value === "string" || typeof value === "boolean" ? null : "a string or a boolean"; +var mustBeStringOrObject = (value)=>typeof value === "string" || typeof value === "object" && value !== null && !Array.isArray(value) ? null : "a string or an object"; +var mustBeStringOrArray = (value)=>typeof value === "string" || Array.isArray(value) ? null : "a string or an array"; +var mustBeStringOrUint8Array = (value)=>typeof value === "string" || value instanceof Uint8Array ? null : "a string or a Uint8Array"; +var mustBeStringOrURL = (value)=>typeof value === "string" || value instanceof URL ? null : "a string or a URL"; +function getFlag(object, keys, key, mustBeFn) { + let value = object[key]; + keys[key + ""] = true; + if (value === void 0) return void 0; + let mustBe = mustBeFn(value); + if (mustBe !== null) throw new Error(`${quote(key)} must be ${mustBe}`); + return value; +} +function checkForInvalidFlags(object, keys, where) { + for(let key in object){ + if (!(key in keys)) { + throw new Error(`Invalid option ${where}: ${quote(key)}`); + } + } +} +function validateInitializeOptions(options) { + let keys = Object.create(null); + let wasmURL = getFlag(options, keys, "wasmURL", mustBeStringOrURL); + let wasmModule = getFlag(options, keys, "wasmModule", mustBeWebAssemblyModule); + let worker = getFlag(options, keys, "worker", mustBeBoolean); + checkForInvalidFlags(options, keys, "in initialize() call"); + return { + wasmURL, + wasmModule, + worker + }; +} +function validateMangleCache(mangleCache) { + let validated; + if (mangleCache !== void 0) { + validated = Object.create(null); + for(let key in mangleCache){ + let value = mangleCache[key]; + if (typeof value === "string" || value === false) { + validated[key] = value; + } else { + throw new Error(`Expected ${quote(key)} in mangle cache to map to either a string or false`); + } + } + } + return validated; +} +function pushLogFlags(flags, options, keys, isTTY, logLevelDefault) { + let color = getFlag(options, keys, "color", mustBeBoolean); + let logLevel = getFlag(options, keys, "logLevel", mustBeString); + let logLimit = getFlag(options, keys, "logLimit", mustBeInteger); + if (color !== void 0) flags.push(`--color=${color}`); + else if (isTTY) flags.push(`--color=true`); + flags.push(`--log-level=${logLevel || logLevelDefault}`); + flags.push(`--log-limit=${logLimit || 0}`); +} +function validateStringValue(value, what, key) { + if (typeof value !== "string") { + throw new Error(`Expected value for ${what}${key !== void 0 ? " " + quote(key) : ""} to be a string, got ${typeof value} instead`); + } + return value; +} +function pushCommonFlags(flags, options, keys) { + let legalComments = getFlag(options, keys, "legalComments", mustBeString); + let sourceRoot = getFlag(options, keys, "sourceRoot", mustBeString); + let sourcesContent = getFlag(options, keys, "sourcesContent", mustBeBoolean); + let target = getFlag(options, keys, "target", mustBeStringOrArray); + let format = getFlag(options, keys, "format", mustBeString); + let globalName = getFlag(options, keys, "globalName", mustBeString); + let mangleProps = getFlag(options, keys, "mangleProps", mustBeRegExp); + let reserveProps = getFlag(options, keys, "reserveProps", mustBeRegExp); + let mangleQuoted = getFlag(options, keys, "mangleQuoted", mustBeBoolean); + let minify = getFlag(options, keys, "minify", mustBeBoolean); + let minifySyntax = getFlag(options, keys, "minifySyntax", mustBeBoolean); + let minifyWhitespace = getFlag(options, keys, "minifyWhitespace", mustBeBoolean); + let minifyIdentifiers = getFlag(options, keys, "minifyIdentifiers", mustBeBoolean); + let drop = getFlag(options, keys, "drop", mustBeArray); + let charset = getFlag(options, keys, "charset", mustBeString); + let treeShaking = getFlag(options, keys, "treeShaking", mustBeBoolean); + let ignoreAnnotations = getFlag(options, keys, "ignoreAnnotations", mustBeBoolean); + let jsx = getFlag(options, keys, "jsx", mustBeString); + let jsxFactory = getFlag(options, keys, "jsxFactory", mustBeString); + let jsxFragment = getFlag(options, keys, "jsxFragment", mustBeString); + let jsxImportSource = getFlag(options, keys, "jsxImportSource", mustBeString); + let jsxDev = getFlag(options, keys, "jsxDev", mustBeBoolean); + let jsxSideEffects = getFlag(options, keys, "jsxSideEffects", mustBeBoolean); + let define = getFlag(options, keys, "define", mustBeObject); + let logOverride = getFlag(options, keys, "logOverride", mustBeObject); + let supported = getFlag(options, keys, "supported", mustBeObject); + let pure = getFlag(options, keys, "pure", mustBeArray); + let keepNames = getFlag(options, keys, "keepNames", mustBeBoolean); + let platform = getFlag(options, keys, "platform", mustBeString); + if (legalComments) flags.push(`--legal-comments=${legalComments}`); + if (sourceRoot !== void 0) flags.push(`--source-root=${sourceRoot}`); + if (sourcesContent !== void 0) flags.push(`--sources-content=${sourcesContent}`); + if (target) { + if (Array.isArray(target)) flags.push(`--target=${Array.from(target).map(validateTarget).join(",")}`); + else flags.push(`--target=${validateTarget(target)}`); + } + if (format) flags.push(`--format=${format}`); + if (globalName) flags.push(`--global-name=${globalName}`); + if (platform) flags.push(`--platform=${platform}`); + if (minify) flags.push("--minify"); + if (minifySyntax) flags.push("--minify-syntax"); + if (minifyWhitespace) flags.push("--minify-whitespace"); + if (minifyIdentifiers) flags.push("--minify-identifiers"); + if (charset) flags.push(`--charset=${charset}`); + if (treeShaking !== void 0) flags.push(`--tree-shaking=${treeShaking}`); + if (ignoreAnnotations) flags.push(`--ignore-annotations`); + if (drop) for (let what of drop)flags.push(`--drop:${validateStringValue(what, "drop")}`); + if (mangleProps) flags.push(`--mangle-props=${mangleProps.source}`); + if (reserveProps) flags.push(`--reserve-props=${reserveProps.source}`); + if (mangleQuoted !== void 0) flags.push(`--mangle-quoted=${mangleQuoted}`); + if (jsx) flags.push(`--jsx=${jsx}`); + if (jsxFactory) flags.push(`--jsx-factory=${jsxFactory}`); + if (jsxFragment) flags.push(`--jsx-fragment=${jsxFragment}`); + if (jsxImportSource) flags.push(`--jsx-import-source=${jsxImportSource}`); + if (jsxDev) flags.push(`--jsx-dev`); + if (jsxSideEffects) flags.push(`--jsx-side-effects`); + if (define) { + for(let key in define){ + if (key.indexOf("=") >= 0) throw new Error(`Invalid define: ${key}`); + flags.push(`--define:${key}=${validateStringValue(define[key], "define", key)}`); + } + } + if (logOverride) { + for(let key1 in logOverride){ + if (key1.indexOf("=") >= 0) throw new Error(`Invalid log override: ${key1}`); + flags.push(`--log-override:${key1}=${validateStringValue(logOverride[key1], "log override", key1)}`); + } + } + if (supported) { + for(let key2 in supported){ + if (key2.indexOf("=") >= 0) throw new Error(`Invalid supported: ${key2}`); + const value = supported[key2]; + if (typeof value !== "boolean") throw new Error(`Expected value for supported ${quote(key2)} to be a boolean, got ${typeof value} instead`); + flags.push(`--supported:${key2}=${value}`); + } + } + if (pure) for (let fn of pure)flags.push(`--pure:${validateStringValue(fn, "pure")}`); + if (keepNames) flags.push(`--keep-names`); +} +function flagsForBuildOptions(callName, options, isTTY, logLevelDefault, writeDefault) { + let flags = []; + let entries = []; + let keys = Object.create(null); + let stdinContents = null; + let stdinResolveDir = null; + pushLogFlags(flags, options, keys, isTTY, logLevelDefault); + pushCommonFlags(flags, options, keys); + let sourcemap = getFlag(options, keys, "sourcemap", mustBeStringOrBoolean); + let bundle = getFlag(options, keys, "bundle", mustBeBoolean); + let splitting = getFlag(options, keys, "splitting", mustBeBoolean); + let preserveSymlinks = getFlag(options, keys, "preserveSymlinks", mustBeBoolean); + let metafile = getFlag(options, keys, "metafile", mustBeBoolean); + let outfile = getFlag(options, keys, "outfile", mustBeString); + let outdir = getFlag(options, keys, "outdir", mustBeString); + let outbase = getFlag(options, keys, "outbase", mustBeString); + let tsconfig = getFlag(options, keys, "tsconfig", mustBeString); + let resolveExtensions = getFlag(options, keys, "resolveExtensions", mustBeArray); + let nodePathsInput = getFlag(options, keys, "nodePaths", mustBeArray); + let mainFields = getFlag(options, keys, "mainFields", mustBeArray); + let conditions = getFlag(options, keys, "conditions", mustBeArray); + let external = getFlag(options, keys, "external", mustBeArray); + let packages = getFlag(options, keys, "packages", mustBeString); + let alias = getFlag(options, keys, "alias", mustBeObject); + let loader = getFlag(options, keys, "loader", mustBeObject); + let outExtension = getFlag(options, keys, "outExtension", mustBeObject); + let publicPath = getFlag(options, keys, "publicPath", mustBeString); + let entryNames = getFlag(options, keys, "entryNames", mustBeString); + let chunkNames = getFlag(options, keys, "chunkNames", mustBeString); + let assetNames = getFlag(options, keys, "assetNames", mustBeString); + let inject = getFlag(options, keys, "inject", mustBeArray); + let banner = getFlag(options, keys, "banner", mustBeObject); + let footer = getFlag(options, keys, "footer", mustBeObject); + let entryPoints = getFlag(options, keys, "entryPoints", mustBeEntryPoints); + let absWorkingDir = getFlag(options, keys, "absWorkingDir", mustBeString); + let stdin = getFlag(options, keys, "stdin", mustBeObject); + let write = getFlag(options, keys, "write", mustBeBoolean) ?? writeDefault; + let allowOverwrite = getFlag(options, keys, "allowOverwrite", mustBeBoolean); + let mangleCache = getFlag(options, keys, "mangleCache", mustBeObject); + keys.plugins = true; + checkForInvalidFlags(options, keys, `in ${callName}() call`); + if (sourcemap) flags.push(`--sourcemap${sourcemap === true ? "" : `=${sourcemap}`}`); + if (bundle) flags.push("--bundle"); + if (allowOverwrite) flags.push("--allow-overwrite"); + if (splitting) flags.push("--splitting"); + if (preserveSymlinks) flags.push("--preserve-symlinks"); + if (metafile) flags.push(`--metafile`); + if (outfile) flags.push(`--outfile=${outfile}`); + if (outdir) flags.push(`--outdir=${outdir}`); + if (outbase) flags.push(`--outbase=${outbase}`); + if (tsconfig) flags.push(`--tsconfig=${tsconfig}`); + if (packages) flags.push(`--packages=${packages}`); + if (resolveExtensions) { + let values = []; + for (let value of resolveExtensions){ + validateStringValue(value, "resolve extension"); + if (value.indexOf(",") >= 0) throw new Error(`Invalid resolve extension: ${value}`); + values.push(value); + } + flags.push(`--resolve-extensions=${values.join(",")}`); + } + if (publicPath) flags.push(`--public-path=${publicPath}`); + if (entryNames) flags.push(`--entry-names=${entryNames}`); + if (chunkNames) flags.push(`--chunk-names=${chunkNames}`); + if (assetNames) flags.push(`--asset-names=${assetNames}`); + if (mainFields) { + let values1 = []; + for (let value1 of mainFields){ + validateStringValue(value1, "main field"); + if (value1.indexOf(",") >= 0) throw new Error(`Invalid main field: ${value1}`); + values1.push(value1); + } + flags.push(`--main-fields=${values1.join(",")}`); + } + if (conditions) { + let values2 = []; + for (let value2 of conditions){ + validateStringValue(value2, "condition"); + if (value2.indexOf(",") >= 0) throw new Error(`Invalid condition: ${value2}`); + values2.push(value2); + } + flags.push(`--conditions=${values2.join(",")}`); + } + if (external) for (let name of external)flags.push(`--external:${validateStringValue(name, "external")}`); + if (alias) { + for(let old in alias){ + if (old.indexOf("=") >= 0) throw new Error(`Invalid package name in alias: ${old}`); + flags.push(`--alias:${old}=${validateStringValue(alias[old], "alias", old)}`); + } + } + if (banner) { + for(let type in banner){ + if (type.indexOf("=") >= 0) throw new Error(`Invalid banner file type: ${type}`); + flags.push(`--banner:${type}=${validateStringValue(banner[type], "banner", type)}`); + } + } + if (footer) { + for(let type1 in footer){ + if (type1.indexOf("=") >= 0) throw new Error(`Invalid footer file type: ${type1}`); + flags.push(`--footer:${type1}=${validateStringValue(footer[type1], "footer", type1)}`); + } + } + if (inject) for (let path of inject)flags.push(`--inject:${validateStringValue(path, "inject")}`); + if (loader) { + for(let ext in loader){ + if (ext.indexOf("=") >= 0) throw new Error(`Invalid loader extension: ${ext}`); + flags.push(`--loader:${ext}=${validateStringValue(loader[ext], "loader", ext)}`); + } + } + if (outExtension) { + for(let ext1 in outExtension){ + if (ext1.indexOf("=") >= 0) throw new Error(`Invalid out extension: ${ext1}`); + flags.push(`--out-extension:${ext1}=${validateStringValue(outExtension[ext1], "out extension", ext1)}`); + } + } + if (entryPoints) { + if (Array.isArray(entryPoints)) { + for(let i = 0, n = entryPoints.length; i < n; i++){ + let entryPoint = entryPoints[i]; + if (typeof entryPoint === "object" && entryPoint !== null) { + let entryPointKeys = Object.create(null); + let input = getFlag(entryPoint, entryPointKeys, "in", mustBeString); + let output = getFlag(entryPoint, entryPointKeys, "out", mustBeString); + checkForInvalidFlags(entryPoint, entryPointKeys, "in entry point at index " + i); + if (input === void 0) throw new Error('Missing property "in" for entry point at index ' + i); + if (output === void 0) throw new Error('Missing property "out" for entry point at index ' + i); + entries.push([ + output, + input + ]); + } else { + entries.push([ + "", + validateStringValue(entryPoint, "entry point at index " + i) + ]); + } + } + } else { + for(let key in entryPoints){ + entries.push([ + key, + validateStringValue(entryPoints[key], "entry point", key) + ]); + } + } + } + if (stdin) { + let stdinKeys = Object.create(null); + let contents = getFlag(stdin, stdinKeys, "contents", mustBeStringOrUint8Array); + let resolveDir = getFlag(stdin, stdinKeys, "resolveDir", mustBeString); + let sourcefile = getFlag(stdin, stdinKeys, "sourcefile", mustBeString); + let loader2 = getFlag(stdin, stdinKeys, "loader", mustBeString); + checkForInvalidFlags(stdin, stdinKeys, 'in "stdin" object'); + if (sourcefile) flags.push(`--sourcefile=${sourcefile}`); + if (loader2) flags.push(`--loader=${loader2}`); + if (resolveDir) stdinResolveDir = resolveDir; + if (typeof contents === "string") stdinContents = encodeUTF8(contents); + else if (contents instanceof Uint8Array) stdinContents = contents; + } + let nodePaths = []; + if (nodePathsInput) { + for (let value3 of nodePathsInput){ + value3 += ""; + nodePaths.push(value3); + } + } + return { + entries, + flags, + write, + stdinContents, + stdinResolveDir, + absWorkingDir, + nodePaths, + mangleCache: validateMangleCache(mangleCache) + }; +} +function flagsForTransformOptions(callName, options, isTTY, logLevelDefault) { + let flags = []; + let keys = Object.create(null); + pushLogFlags(flags, options, keys, isTTY, logLevelDefault); + pushCommonFlags(flags, options, keys); + let sourcemap = getFlag(options, keys, "sourcemap", mustBeStringOrBoolean); + let tsconfigRaw = getFlag(options, keys, "tsconfigRaw", mustBeStringOrObject); + let sourcefile = getFlag(options, keys, "sourcefile", mustBeString); + let loader = getFlag(options, keys, "loader", mustBeString); + let banner = getFlag(options, keys, "banner", mustBeString); + let footer = getFlag(options, keys, "footer", mustBeString); + let mangleCache = getFlag(options, keys, "mangleCache", mustBeObject); + checkForInvalidFlags(options, keys, `in ${callName}() call`); + if (sourcemap) flags.push(`--sourcemap=${sourcemap === true ? "external" : sourcemap}`); + if (tsconfigRaw) flags.push(`--tsconfig-raw=${typeof tsconfigRaw === "string" ? tsconfigRaw : JSON.stringify(tsconfigRaw)}`); + if (sourcefile) flags.push(`--sourcefile=${sourcefile}`); + if (loader) flags.push(`--loader=${loader}`); + if (banner) flags.push(`--banner=${banner}`); + if (footer) flags.push(`--footer=${footer}`); + return { + flags, + mangleCache: validateMangleCache(mangleCache) + }; +} +function createChannel(streamIn) { + const requestCallbacksByKey = {}; + const closeData = { + didClose: false, + reason: "" + }; + let responseCallbacks = {}; + let nextRequestID = 0; + let nextBuildKey = 0; + let stdout = new Uint8Array(16 * 1024); + let stdoutUsed = 0; + let readFromStdout = (chunk)=>{ + let limit = stdoutUsed + chunk.length; + if (limit > stdout.length) { + let swap = new Uint8Array(limit * 2); + swap.set(stdout); + stdout = swap; + } + stdout.set(chunk, stdoutUsed); + stdoutUsed += chunk.length; + let offset = 0; + while(offset + 4 <= stdoutUsed){ + let length = readUInt32LE(stdout, offset); + if (offset + 4 + length > stdoutUsed) { + break; + } + offset += 4; + handleIncomingPacket(stdout.subarray(offset, offset + length)); + offset += length; + } + if (offset > 0) { + stdout.copyWithin(0, offset, stdoutUsed); + stdoutUsed -= offset; + } + }; + let afterClose = (error)=>{ + closeData.didClose = true; + if (error) closeData.reason = ": " + (error.message || error); + const text = "The service was stopped" + closeData.reason; + for(let id in responseCallbacks){ + responseCallbacks[id](text, null); + } + responseCallbacks = {}; + }; + let sendRequest = (refs, value, callback)=>{ + if (closeData.didClose) return callback("The service is no longer running" + closeData.reason, null); + let id = nextRequestID++; + responseCallbacks[id] = (error, response)=>{ + try { + callback(error, response); + } finally{ + if (refs) refs.unref(); + } + }; + if (refs) refs.ref(); + streamIn.writeToStdin(encodePacket({ + id, + isRequest: true, + value + })); + }; + let sendResponse = (id, value)=>{ + if (closeData.didClose) throw new Error("The service is no longer running" + closeData.reason); + streamIn.writeToStdin(encodePacket({ + id, + isRequest: false, + value + })); + }; + let handleRequest = async (id, request)=>{ + try { + if (request.command === "ping") { + sendResponse(id, {}); + return; + } + if (typeof request.key === "number") { + const requestCallbacks = requestCallbacksByKey[request.key]; + if (requestCallbacks) { + const callback = requestCallbacks[request.command]; + if (callback) { + await callback(id, request); + return; + } + } + } + throw new Error(`Invalid command: ` + request.command); + } catch (e) { + sendResponse(id, { + errors: [ + extractErrorMessageV8(e, streamIn, null, void 0, "") + ] + }); + } + }; + let isFirstPacket = true; + let handleIncomingPacket = (bytes)=>{ + if (isFirstPacket) { + isFirstPacket = false; + let binaryVersion = String.fromCharCode(...bytes); + if (binaryVersion !== "0.17.4") { + throw new Error(`Cannot start service: Host version "${"0.17.4"}" does not match binary version ${quote(binaryVersion)}`); + } + return; + } + let packet = decodePacket(bytes); + if (packet.isRequest) { + handleRequest(packet.id, packet.value); + } else { + let callback = responseCallbacks[packet.id]; + delete responseCallbacks[packet.id]; + if (packet.value.error) callback(packet.value.error, {}); + else callback(null, packet.value); + } + }; + let buildOrContext = ({ callName , refs , options , isTTY , defaultWD: defaultWD2 , callback })=>{ + let refCount = 0; + const buildKey = nextBuildKey++; + const requestCallbacks = {}; + const buildRefs = { + ref () { + if (++refCount === 1) { + if (refs) refs.ref(); + } + }, + unref () { + if (--refCount === 0) { + delete requestCallbacksByKey[buildKey]; + if (refs) refs.unref(); + } + } + }; + requestCallbacksByKey[buildKey] = requestCallbacks; + buildRefs.ref(); + buildOrContextImpl(callName, buildKey, sendRequest, sendResponse, buildRefs, streamIn, requestCallbacks, options, isTTY, defaultWD2, (err, res)=>{ + try { + callback(err, res); + } finally{ + buildRefs.unref(); + } + }); + }; + let transform2 = ({ callName , refs , input , options , isTTY , fs , callback })=>{ + const details = createObjectStash(); + let start = (inputPath)=>{ + try { + if (typeof input !== "string" && !(input instanceof Uint8Array)) throw new Error('The input to "transform" must be a string or a Uint8Array'); + let { flags , mangleCache } = flagsForTransformOptions(callName, options, isTTY, transformLogLevelDefault); + let request = { + command: "transform", + flags, + inputFS: inputPath !== null, + input: inputPath !== null ? encodeUTF8(inputPath) : typeof input === "string" ? encodeUTF8(input) : input + }; + if (mangleCache) request.mangleCache = mangleCache; + sendRequest(refs, request, (error, response)=>{ + if (error) return callback(new Error(error), null); + let errors = replaceDetailsInMessages(response.errors, details); + let warnings = replaceDetailsInMessages(response.warnings, details); + let outstanding = 1; + let next = ()=>{ + if (--outstanding === 0) { + let result = { + warnings, + code: response.code, + map: response.map, + mangleCache: void 0, + legalComments: void 0 + }; + if ("legalComments" in response) result.legalComments = response?.legalComments; + if (response.mangleCache) result.mangleCache = response?.mangleCache; + callback(null, result); + } + }; + if (errors.length > 0) return callback(failureErrorWithLog("Transform failed", errors, warnings), null); + if (response.codeFS) { + outstanding++; + fs.readFile(response.code, (err, contents)=>{ + if (err !== null) { + callback(err, null); + } else { + response.code = contents; + next(); + } + }); + } + if (response.mapFS) { + outstanding++; + fs.readFile(response.map, (err, contents)=>{ + if (err !== null) { + callback(err, null); + } else { + response.map = contents; + next(); + } + }); + } + next(); + }); + } catch (e) { + let flags1 = []; + try { + pushLogFlags(flags1, options, {}, isTTY, transformLogLevelDefault); + } catch {} + const error = extractErrorMessageV8(e, streamIn, details, void 0, ""); + sendRequest(refs, { + command: "error", + flags: flags1, + error + }, ()=>{ + error.detail = details.load(error.detail); + callback(failureErrorWithLog("Transform failed", [ + error + ], []), null); + }); + } + }; + if ((typeof input === "string" || input instanceof Uint8Array) && input.length > 1024 * 1024) { + let next = start; + start = ()=>fs.writeFile(input, next); + } + start(null); + }; + let formatMessages2 = ({ callName , refs , messages , options , callback })=>{ + let result = sanitizeMessages(messages, "messages", null, ""); + if (!options) throw new Error(`Missing second argument in ${callName}() call`); + let keys = {}; + let kind = getFlag(options, keys, "kind", mustBeString); + let color = getFlag(options, keys, "color", mustBeBoolean); + let terminalWidth = getFlag(options, keys, "terminalWidth", mustBeInteger); + checkForInvalidFlags(options, keys, `in ${callName}() call`); + if (kind === void 0) throw new Error(`Missing "kind" in ${callName}() call`); + if (kind !== "error" && kind !== "warning") throw new Error(`Expected "kind" to be "error" or "warning" in ${callName}() call`); + let request = { + command: "format-msgs", + messages: result, + isWarning: kind === "warning" + }; + if (color !== void 0) request.color = color; + if (terminalWidth !== void 0) request.terminalWidth = terminalWidth; + sendRequest(refs, request, (error, response)=>{ + if (error) return callback(new Error(error), null); + callback(null, response.messages); + }); + }; + let analyzeMetafile2 = ({ callName , refs , metafile , options , callback })=>{ + if (options === void 0) options = {}; + let keys = {}; + let color = getFlag(options, keys, "color", mustBeBoolean); + let verbose = getFlag(options, keys, "verbose", mustBeBoolean); + checkForInvalidFlags(options, keys, `in ${callName}() call`); + let request = { + command: "analyze-metafile", + metafile + }; + if (color !== void 0) request.color = color; + if (verbose !== void 0) request.verbose = verbose; + sendRequest(refs, request, (error, response)=>{ + if (error) return callback(new Error(error), null); + callback(null, response.result); + }); + }; + return { + readFromStdout, + afterClose, + service: { + buildOrContext, + transform: transform2, + formatMessages: formatMessages2, + analyzeMetafile: analyzeMetafile2 + } + }; +} +function buildOrContextImpl(callName, buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, options, isTTY, defaultWD2, callback) { + const details = createObjectStash(); + const isContext = callName === "context"; + const handleError = (e, pluginName)=>{ + const flags = []; + try { + pushLogFlags(flags, options, {}, isTTY, buildLogLevelDefault); + } catch {} + const message = extractErrorMessageV8(e, streamIn, details, void 0, pluginName); + sendRequest(refs, { + command: "error", + flags, + error: message + }, ()=>{ + message.detail = details.load(message.detail); + callback(failureErrorWithLog(isContext ? "Context failed" : "Build failed", [ + message + ], []), null); + }); + }; + let plugins; + if (typeof options === "object") { + const value = options.plugins; + if (value !== void 0) { + if (!Array.isArray(value)) return handleError(new Error(`"plugins" must be an array`), ""); + plugins = value; + } + } + if (plugins && plugins.length > 0) { + if (streamIn.isSync) return handleError(new Error("Cannot use plugins in synchronous API calls"), ""); + handlePlugins(buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, options, plugins, details).then((result)=>{ + if (!result.ok) return handleError(result.error, result.pluginName); + try { + buildOrContextContinue(result.requestPlugins, result.runOnEndCallbacks, result.scheduleOnDisposeCallbacks); + } catch (e) { + handleError(e, ""); + } + }, (e)=>handleError(e, "")); + return; + } + try { + buildOrContextContinue(null, (result, done)=>done([], []), ()=>{}); + } catch (e) { + handleError(e, ""); + } + function buildOrContextContinue(requestPlugins, runOnEndCallbacks, scheduleOnDisposeCallbacks) { + const writeDefault = streamIn.hasFS; + const { entries , flags , write , stdinContents , stdinResolveDir , absWorkingDir , nodePaths , mangleCache } = flagsForBuildOptions(callName, options, isTTY, buildLogLevelDefault, writeDefault); + if (write && !streamIn.hasFS) throw new Error(`The "write" option is unavailable in this environment`); + const request = { + command: "build", + key: buildKey, + entries, + flags, + write, + stdinContents, + stdinResolveDir, + absWorkingDir: absWorkingDir || defaultWD2, + nodePaths, + context: isContext + }; + if (requestPlugins) request.plugins = requestPlugins; + if (mangleCache) request.mangleCache = mangleCache; + const buildResponseToResult = (response, callback2)=>{ + const result = { + errors: replaceDetailsInMessages(response.errors, details), + warnings: replaceDetailsInMessages(response.warnings, details), + outputFiles: void 0, + metafile: void 0, + mangleCache: void 0 + }; + const originalErrors = result.errors.slice(); + const originalWarnings = result.warnings.slice(); + if (response.outputFiles) result.outputFiles = response.outputFiles.map(convertOutputFiles); + if (response.metafile) result.metafile = JSON.parse(response.metafile); + if (response.mangleCache) result.mangleCache = response.mangleCache; + if (response.writeToStdout !== void 0) console.log(decodeUTF8(response.writeToStdout).replace(/\n$/, "")); + runOnEndCallbacks(result, (onEndErrors, onEndWarnings)=>{ + if (originalErrors.length > 0 || onEndErrors.length > 0) { + const error = failureErrorWithLog("Build failed", originalErrors.concat(onEndErrors), originalWarnings.concat(onEndWarnings)); + return callback2(error, null, onEndErrors, onEndWarnings); + } + callback2(null, result, onEndErrors, onEndWarnings); + }); + }; + let latestResultPromise; + let provideLatestResult; + if (isContext) requestCallbacks["on-end"] = (id, request2)=>new Promise((resolve)=>{ + buildResponseToResult(request2, (err, result, onEndErrors, onEndWarnings)=>{ + const response = { + errors: onEndErrors, + warnings: onEndWarnings + }; + if (provideLatestResult) provideLatestResult(err, result); + latestResultPromise = void 0; + provideLatestResult = void 0; + sendResponse(id, response); + resolve(); + }); + }); + sendRequest(refs, request, (error, response)=>{ + if (error) return callback(new Error(error), null); + if (!isContext) { + return buildResponseToResult(response, (err, res)=>{ + scheduleOnDisposeCallbacks(); + return callback(err, res); + }); + } + if (response.errors.length > 0) { + return callback(failureErrorWithLog("Context failed", response.errors, response.warnings), null); + } + let didDispose = false; + const result = { + rebuild: ()=>{ + if (!latestResultPromise) latestResultPromise = new Promise((resolve, reject)=>{ + let settlePromise; + provideLatestResult = (err, result2)=>{ + if (!settlePromise) settlePromise = ()=>err ? reject(err) : resolve(result2); + }; + const triggerAnotherBuild = ()=>{ + const request2 = { + command: "rebuild", + key: buildKey + }; + sendRequest(refs, request2, (error2, response2)=>{ + if (error2) { + reject(new Error(error2)); + } else if (settlePromise) { + settlePromise(); + } else { + triggerAnotherBuild(); + } + }); + }; + triggerAnotherBuild(); + }); + return latestResultPromise; + }, + watch: (options2 = {})=>new Promise((resolve, reject)=>{ + if (!streamIn.hasFS) throw new Error(`Cannot use the "watch" API in this environment`); + const keys = {}; + checkForInvalidFlags(options2, keys, `in watch() call`); + const request2 = { + command: "watch", + key: buildKey + }; + sendRequest(refs, request2, (error2)=>{ + if (error2) reject(new Error(error2)); + else resolve(void 0); + }); + }), + serve: (options2 = {})=>new Promise((resolve, reject)=>{ + if (!streamIn.hasFS) throw new Error(`Cannot use the "serve" API in this environment`); + const keys = {}; + const port = getFlag(options2, keys, "port", mustBeInteger); + const host = getFlag(options2, keys, "host", mustBeString); + const servedir = getFlag(options2, keys, "servedir", mustBeString); + const keyfile = getFlag(options2, keys, "keyfile", mustBeString); + const certfile = getFlag(options2, keys, "certfile", mustBeString); + const onRequest = getFlag(options2, keys, "onRequest", mustBeFunction); + checkForInvalidFlags(options2, keys, `in serve() call`); + const request2 = { + command: "serve", + key: buildKey, + onRequest: !!onRequest + }; + if (port !== void 0) request2.port = port; + if (host !== void 0) request2.host = host; + if (servedir !== void 0) request2.servedir = servedir; + if (keyfile !== void 0) request2.keyfile = keyfile; + if (certfile !== void 0) request2.certfile = certfile; + sendRequest(refs, request2, (error2, response2)=>{ + if (error2) return reject(new Error(error2)); + if (onRequest) { + requestCallbacks["serve-request"] = (id, request3)=>{ + onRequest(request3.args); + sendResponse(id, {}); + }; + } + resolve(response2); + }); + }), + cancel: ()=>new Promise((resolve)=>{ + if (didDispose) return resolve(); + const request2 = { + command: "cancel", + key: buildKey + }; + sendRequest(refs, request2, ()=>{ + resolve(); + }); + }), + dispose: ()=>new Promise((resolve)=>{ + if (didDispose) return resolve(); + didDispose = true; + const request2 = { + command: "dispose", + key: buildKey + }; + sendRequest(refs, request2, ()=>{ + resolve(); + scheduleOnDisposeCallbacks(); + refs.unref(); + }); + }) + }; + refs.ref(); + callback(null, result); + }); + } +} +var handlePlugins = async (buildKey, sendRequest, sendResponse, refs, streamIn, requestCallbacks, initialOptions, plugins, details)=>{ + let onStartCallbacks = []; + let onEndCallbacks = []; + let onResolveCallbacks = {}; + let onLoadCallbacks = {}; + let onDisposeCallbacks = []; + let nextCallbackID = 0; + let i = 0; + let requestPlugins = []; + let isSetupDone = false; + plugins = [ + ...plugins + ]; + for (let item of plugins){ + let keys = {}; + if (typeof item !== "object") throw new Error(`Plugin at index ${i} must be an object`); + const name = getFlag(item, keys, "name", mustBeString); + if (typeof name !== "string" || name === "") throw new Error(`Plugin at index ${i} is missing a name`); + try { + let setup = getFlag(item, keys, "setup", mustBeFunction); + if (typeof setup !== "function") throw new Error(`Plugin is missing a setup function`); + checkForInvalidFlags(item, keys, `on plugin ${quote(name)}`); + let plugin = { + name, + onStart: false, + onEnd: false, + onResolve: [], + onLoad: [] + }; + i++; + let resolve = (path, options = {})=>{ + if (!isSetupDone) throw new Error('Cannot call "resolve" before plugin setup has completed'); + if (typeof path !== "string") throw new Error(`The path to resolve must be a string`); + let keys2 = Object.create(null); + let pluginName = getFlag(options, keys2, "pluginName", mustBeString); + let importer = getFlag(options, keys2, "importer", mustBeString); + let namespace = getFlag(options, keys2, "namespace", mustBeString); + let resolveDir = getFlag(options, keys2, "resolveDir", mustBeString); + let kind = getFlag(options, keys2, "kind", mustBeString); + let pluginData = getFlag(options, keys2, "pluginData", canBeAnything); + checkForInvalidFlags(options, keys2, "in resolve() call"); + return new Promise((resolve2, reject)=>{ + const request = { + command: "resolve", + path, + key: buildKey, + pluginName: name + }; + if (pluginName != null) request.pluginName = pluginName; + if (importer != null) request.importer = importer; + if (namespace != null) request.namespace = namespace; + if (resolveDir != null) request.resolveDir = resolveDir; + if (kind != null) request.kind = kind; + else throw new Error(`Must specify "kind" when calling "resolve"`); + if (pluginData != null) request.pluginData = details.store(pluginData); + sendRequest(refs, request, (error, response)=>{ + if (error !== null) reject(new Error(error)); + else resolve2({ + errors: replaceDetailsInMessages(response.errors, details), + warnings: replaceDetailsInMessages(response.warnings, details), + path: response.path, + external: response.external, + sideEffects: response.sideEffects, + namespace: response.namespace, + suffix: response.suffix, + pluginData: details.load(response.pluginData) + }); + }); + }); + }; + let promise = setup({ + initialOptions, + resolve, + onStart (callback) { + let registeredText = `This error came from the "onStart" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onStart"); + onStartCallbacks.push({ + name, + callback, + note: registeredNote + }); + plugin.onStart = true; + }, + onEnd (callback) { + let registeredText = `This error came from the "onEnd" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onEnd"); + onEndCallbacks.push({ + name, + callback, + note: registeredNote + }); + plugin.onEnd = true; + }, + onResolve (options, callback) { + let registeredText = `This error came from the "onResolve" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onResolve"); + let keys2 = {}; + let filter = getFlag(options, keys2, "filter", mustBeRegExp); + let namespace = getFlag(options, keys2, "namespace", mustBeString); + checkForInvalidFlags(options, keys2, `in onResolve() call for plugin ${quote(name)}`); + if (filter == null) throw new Error(`onResolve() call is missing a filter`); + let id = nextCallbackID++; + onResolveCallbacks[id] = { + name, + callback, + note: registeredNote + }; + plugin.onResolve.push({ + id, + filter: filter.source, + namespace: namespace || "" + }); + }, + onLoad (options, callback) { + let registeredText = `This error came from the "onLoad" callback registered here:`; + let registeredNote = extractCallerV8(new Error(registeredText), streamIn, "onLoad"); + let keys2 = {}; + let filter = getFlag(options, keys2, "filter", mustBeRegExp); + let namespace = getFlag(options, keys2, "namespace", mustBeString); + checkForInvalidFlags(options, keys2, `in onLoad() call for plugin ${quote(name)}`); + if (filter == null) throw new Error(`onLoad() call is missing a filter`); + let id = nextCallbackID++; + onLoadCallbacks[id] = { + name, + callback, + note: registeredNote + }; + plugin.onLoad.push({ + id, + filter: filter.source, + namespace: namespace || "" + }); + }, + onDispose (callback) { + onDisposeCallbacks.push(callback); + }, + esbuild: streamIn.esbuild + }); + if (promise) await promise; + requestPlugins.push(plugin); + } catch (e) { + return { + ok: false, + error: e, + pluginName: name + }; + } + } + requestCallbacks["on-start"] = async (id, request)=>{ + let response = { + errors: [], + warnings: [] + }; + await Promise.all(onStartCallbacks.map(async ({ name , callback , note })=>{ + try { + let result = await callback(); + if (result != null) { + if (typeof result !== "object") throw new Error(`Expected onStart() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let errors = getFlag(result, keys, "errors", mustBeArray); + let warnings = getFlag(result, keys, "warnings", mustBeArray); + checkForInvalidFlags(result, keys, `from onStart() callback in plugin ${quote(name)}`); + if (errors != null) response.errors.push(...sanitizeMessages(errors, "errors", details, name)); + if (warnings != null) response.warnings.push(...sanitizeMessages(warnings, "warnings", details, name)); + } + } catch (e) { + response.errors.push(extractErrorMessageV8(e, streamIn, details, note && note(), name)); + } + })); + sendResponse(id, response); + }; + requestCallbacks["on-resolve"] = async (id, request)=>{ + let response = {}, name = "", callback, note; + for (let id2 of request.ids){ + try { + ({ name , callback , note } = onResolveCallbacks[id2]); + let result = await callback({ + path: request.path, + importer: request.importer, + namespace: request.namespace, + resolveDir: request.resolveDir, + kind: request.kind, + pluginData: details.load(request.pluginData) + }); + if (result != null) { + if (typeof result !== "object") throw new Error(`Expected onResolve() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let pluginName = getFlag(result, keys, "pluginName", mustBeString); + let path = getFlag(result, keys, "path", mustBeString); + let namespace = getFlag(result, keys, "namespace", mustBeString); + let suffix = getFlag(result, keys, "suffix", mustBeString); + let external = getFlag(result, keys, "external", mustBeBoolean); + let sideEffects = getFlag(result, keys, "sideEffects", mustBeBoolean); + let pluginData = getFlag(result, keys, "pluginData", canBeAnything); + let errors = getFlag(result, keys, "errors", mustBeArray); + let warnings = getFlag(result, keys, "warnings", mustBeArray); + let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray); + let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray); + checkForInvalidFlags(result, keys, `from onResolve() callback in plugin ${quote(name)}`); + response.id = id2; + if (pluginName != null) response.pluginName = pluginName; + if (path != null) response.path = path; + if (namespace != null) response.namespace = namespace; + if (suffix != null) response.suffix = suffix; + if (external != null) response.external = external; + if (sideEffects != null) response.sideEffects = sideEffects; + if (pluginData != null) response.pluginData = details.store(pluginData); + if (errors != null) response.errors = sanitizeMessages(errors, "errors", details, name); + if (warnings != null) response.warnings = sanitizeMessages(warnings, "warnings", details, name); + if (watchFiles != null) response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles"); + if (watchDirs != null) response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs"); + break; + } + } catch (e) { + response = { + id: id2, + errors: [ + extractErrorMessageV8(e, streamIn, details, note && note(), name) + ] + }; + break; + } + } + sendResponse(id, response); + }; + requestCallbacks["on-load"] = async (id, request)=>{ + let response = {}, name = "", callback, note; + for (let id2 of request.ids){ + try { + ({ name , callback , note } = onLoadCallbacks[id2]); + let result = await callback({ + path: request.path, + namespace: request.namespace, + suffix: request.suffix, + pluginData: details.load(request.pluginData) + }); + if (result != null) { + if (typeof result !== "object") throw new Error(`Expected onLoad() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let pluginName = getFlag(result, keys, "pluginName", mustBeString); + let contents = getFlag(result, keys, "contents", mustBeStringOrUint8Array); + let resolveDir = getFlag(result, keys, "resolveDir", mustBeString); + let pluginData = getFlag(result, keys, "pluginData", canBeAnything); + let loader = getFlag(result, keys, "loader", mustBeString); + let errors = getFlag(result, keys, "errors", mustBeArray); + let warnings = getFlag(result, keys, "warnings", mustBeArray); + let watchFiles = getFlag(result, keys, "watchFiles", mustBeArray); + let watchDirs = getFlag(result, keys, "watchDirs", mustBeArray); + checkForInvalidFlags(result, keys, `from onLoad() callback in plugin ${quote(name)}`); + response.id = id2; + if (pluginName != null) response.pluginName = pluginName; + if (contents instanceof Uint8Array) response.contents = contents; + else if (contents != null) response.contents = encodeUTF8(contents); + if (resolveDir != null) response.resolveDir = resolveDir; + if (pluginData != null) response.pluginData = details.store(pluginData); + if (loader != null) response.loader = loader; + if (errors != null) response.errors = sanitizeMessages(errors, "errors", details, name); + if (warnings != null) response.warnings = sanitizeMessages(warnings, "warnings", details, name); + if (watchFiles != null) response.watchFiles = sanitizeStringArray(watchFiles, "watchFiles"); + if (watchDirs != null) response.watchDirs = sanitizeStringArray(watchDirs, "watchDirs"); + break; + } + } catch (e) { + response = { + id: id2, + errors: [ + extractErrorMessageV8(e, streamIn, details, note && note(), name) + ] + }; + break; + } + } + sendResponse(id, response); + }; + let runOnEndCallbacks = (result, done)=>done([], []); + if (onEndCallbacks.length > 0) { + runOnEndCallbacks = (result, done)=>{ + (async ()=>{ + const onEndErrors = []; + const onEndWarnings = []; + for (const { name , callback , note } of onEndCallbacks){ + let newErrors; + let newWarnings; + try { + const value = await callback(result); + if (value != null) { + if (typeof value !== "object") throw new Error(`Expected onEnd() callback in plugin ${quote(name)} to return an object`); + let keys = {}; + let errors = getFlag(value, keys, "errors", mustBeArray); + let warnings = getFlag(value, keys, "warnings", mustBeArray); + checkForInvalidFlags(value, keys, `from onEnd() callback in plugin ${quote(name)}`); + if (errors != null) newErrors = sanitizeMessages(errors, "errors", details, name); + if (warnings != null) newWarnings = sanitizeMessages(warnings, "warnings", details, name); + } + } catch (e) { + newErrors = [ + extractErrorMessageV8(e, streamIn, details, note && note(), name) + ]; + } + if (newErrors) { + onEndErrors.push(...newErrors); + try { + result.errors.push(...newErrors); + } catch {} + } + if (newWarnings) { + onEndWarnings.push(...newWarnings); + try { + result.warnings.push(...newWarnings); + } catch {} + } + } + done(onEndErrors, onEndWarnings); + })(); + }; + } + let scheduleOnDisposeCallbacks = ()=>{ + for (const cb of onDisposeCallbacks){ + setTimeout(()=>cb(), 0); + } + }; + isSetupDone = true; + return { + ok: true, + requestPlugins, + runOnEndCallbacks, + scheduleOnDisposeCallbacks + }; +}; +function createObjectStash() { + const map = new Map(); + let nextID = 0; + return { + load (id) { + return map.get(id); + }, + store (value) { + if (value === void 0) return -1; + const id = nextID++; + map.set(id, value); + return id; + } + }; +} +function extractCallerV8(e, streamIn, ident) { + let note; + let tried = false; + return ()=>{ + if (tried) return note; + tried = true; + try { + let lines = (e.stack + "").split("\n"); + lines.splice(1, 1); + let location = parseStackLinesV8(streamIn, lines, ident); + if (location) { + note = { + text: e.message, + location + }; + return note; + } + } catch {} + }; +} +function extractErrorMessageV8(e, streamIn, stash, note, pluginName) { + let text = "Internal error"; + let location = null; + try { + text = (e && e.message || e) + ""; + } catch {} + try { + location = parseStackLinesV8(streamIn, (e.stack + "").split("\n"), ""); + } catch {} + return { + id: "", + pluginName, + text, + location, + notes: note ? [ + note + ] : [], + detail: stash ? stash.store(e) : -1 + }; +} +function parseStackLinesV8(streamIn, lines, ident) { + let at = " at "; + if (streamIn.readFileSync && !lines[0].startsWith(at) && lines[1].startsWith(at)) { + for(let i = 1; i < lines.length; i++){ + let line = lines[i]; + if (!line.startsWith(at)) continue; + line = line.slice(at.length); + while(true){ + let match = /^(?:new |async )?\S+ \((.*)\)$/.exec(line); + if (match) { + line = match[1]; + continue; + } + match = /^eval at \S+ \((.*)\)(?:, \S+:\d+:\d+)?$/.exec(line); + if (match) { + line = match[1]; + continue; + } + match = /^(\S+):(\d+):(\d+)$/.exec(line); + if (match) { + let contents; + try { + contents = streamIn.readFileSync(match[1], "utf8"); + } catch { + break; + } + let lineText = contents.split(/\r\n|\r|\n|\u2028|\u2029/)[+match[2] - 1] || ""; + let column = +match[3] - 1; + let length = lineText.slice(column, column + ident.length) === ident ? ident.length : 0; + return { + file: match[1], + namespace: "file", + line: +match[2], + column: encodeUTF8(lineText.slice(0, column)).length, + length: encodeUTF8(lineText.slice(column, column + length)).length, + lineText: lineText + "\n" + lines.slice(1).join("\n"), + suggestion: "" + }; + } + break; + } + } + } + return null; +} +function failureErrorWithLog(text, errors, warnings) { + let limit = 5; + let summary = errors.length < 1 ? "" : ` with ${errors.length} error${errors.length < 2 ? "" : "s"}:` + errors.slice(0, limit + 1).map((e, i)=>{ + if (i === limit) return "\n..."; + if (!e.location) return ` +error: ${e.text}`; + let { file , line , column } = e.location; + let pluginText = e.pluginName ? `[plugin: ${e.pluginName}] ` : ""; + return ` +${file}:${line}:${column}: ERROR: ${pluginText}${e.text}`; + }).join(""); + let error = new Error(`${text}${summary}`); + error.errors = errors; + error.warnings = warnings; + return error; +} +function replaceDetailsInMessages(messages, stash) { + for (const message of messages){ + message.detail = stash.load(message.detail); + } + return messages; +} +function sanitizeLocation(location, where) { + if (location == null) return null; + let keys = {}; + let file = getFlag(location, keys, "file", mustBeString); + let namespace = getFlag(location, keys, "namespace", mustBeString); + let line = getFlag(location, keys, "line", mustBeInteger); + let column = getFlag(location, keys, "column", mustBeInteger); + let length = getFlag(location, keys, "length", mustBeInteger); + let lineText = getFlag(location, keys, "lineText", mustBeString); + let suggestion = getFlag(location, keys, "suggestion", mustBeString); + checkForInvalidFlags(location, keys, where); + return { + file: file || "", + namespace: namespace || "", + line: line || 0, + column: column || 0, + length: length || 0, + lineText: lineText || "", + suggestion: suggestion || "" + }; +} +function sanitizeMessages(messages, property, stash, fallbackPluginName) { + let messagesClone = []; + let index = 0; + for (const message of messages){ + let keys = {}; + let id = getFlag(message, keys, "id", mustBeString); + let pluginName = getFlag(message, keys, "pluginName", mustBeString); + let text = getFlag(message, keys, "text", mustBeString); + let location = getFlag(message, keys, "location", mustBeObjectOrNull); + let notes = getFlag(message, keys, "notes", mustBeArray); + let detail = getFlag(message, keys, "detail", canBeAnything); + let where = `in element ${index} of "${property}"`; + checkForInvalidFlags(message, keys, where); + let notesClone = []; + if (notes) { + for (const note of notes){ + let noteKeys = {}; + let noteText = getFlag(note, noteKeys, "text", mustBeString); + let noteLocation = getFlag(note, noteKeys, "location", mustBeObjectOrNull); + checkForInvalidFlags(note, noteKeys, where); + notesClone.push({ + text: noteText || "", + location: sanitizeLocation(noteLocation, where) + }); + } + } + messagesClone.push({ + id: id || "", + pluginName: pluginName || fallbackPluginName, + text: text || "", + location: sanitizeLocation(location, where), + notes: notesClone, + detail: stash ? stash.store(detail) : -1 + }); + index++; + } + return messagesClone; +} +function sanitizeStringArray(values, property) { + const result = []; + for (const value of values){ + if (typeof value !== "string") throw new Error(`${quote(property)} must be an array of strings`); + result.push(value); + } + return result; +} +function convertOutputFiles({ path , contents }) { + let text = null; + return { + path, + contents, + get text () { + const binary = this.contents; + if (text === null || binary !== contents) { + contents = binary; + text = decodeUTF8(binary); + } + return text; + } + }; +} +var version = "0.17.4"; +var build = (options)=>ensureServiceIsRunning().then((service)=>service.build(options)); +var context = (options)=>ensureServiceIsRunning().then((service)=>service.context(options)); +var transform = (input, options)=>ensureServiceIsRunning().then((service)=>service.transform(input, options)); +var formatMessages = (messages, options)=>ensureServiceIsRunning().then((service)=>service.formatMessages(messages, options)); +var analyzeMetafile = (metafile, options)=>ensureServiceIsRunning().then((service)=>service.analyzeMetafile(metafile, options)); +var buildSync = ()=>{ + throw new Error(`The "buildSync" API does not work in Deno`); +}; +var transformSync = ()=>{ + throw new Error(`The "transformSync" API does not work in Deno`); +}; +var formatMessagesSync = ()=>{ + throw new Error(`The "formatMessagesSync" API does not work in Deno`); +}; +var analyzeMetafileSync = ()=>{ + throw new Error(`The "analyzeMetafileSync" API does not work in Deno`); +}; +var stop = ()=>{ + if (stopService) stopService(); +}; +var initializeWasCalled = false; +var initialize = async (options)=>{ + options = validateInitializeOptions(options || {}); + if (options.wasmURL) throw new Error(`The "wasmURL" option only works in the browser`); + if (options.wasmModule) throw new Error(`The "wasmModule" option only works in the browser`); + if (options.worker) throw new Error(`The "worker" option only works in the browser`); + if (initializeWasCalled) throw new Error('Cannot call "initialize" more than once'); + await ensureServiceIsRunning(); + initializeWasCalled = true; +}; +async function installFromNPM(name, subpath) { + const { finalPath , finalDir } = getCachePath(name); + try { + await Deno.stat(finalPath); + return finalPath; + } catch (e) {} + const npmRegistry = Deno.env.get("NPM_CONFIG_REGISTRY") || "https://registry.npmjs.org"; + const url = `${npmRegistry}/${name}/-/${name.replace("@esbuild/", "")}-${version}.tgz`; + const buffer = await fetch(url).then((r)=>r.arrayBuffer()); + const executable = extractFileFromTarGzip(new Uint8Array(buffer), subpath); + await Deno.mkdir(finalDir, { + recursive: true, + mode: 448 + }); + await Deno.writeFile(finalPath, executable, { + mode: 493 + }); + return finalPath; +} +function getCachePath(name) { + let baseDir; + switch(Deno.build.os){ + case "darwin": + baseDir = Deno.env.get("HOME"); + if (baseDir) baseDir += "/Library/Caches"; + break; + case "windows": + baseDir = Deno.env.get("LOCALAPPDATA"); + if (!baseDir) { + baseDir = Deno.env.get("USERPROFILE"); + if (baseDir) baseDir += "/AppData/Local"; + } + if (baseDir) baseDir += "/Cache"; + break; + case "linux": + const xdg = Deno.env.get("XDG_CACHE_HOME"); + if (xdg && xdg[0] === "/") baseDir = xdg; + break; + } + if (!baseDir) { + baseDir = Deno.env.get("HOME"); + if (baseDir) baseDir += "/.cache"; + } + if (!baseDir) throw new Error("Failed to find cache directory"); + const finalDir = baseDir + `/esbuild/bin`; + const finalPath = finalDir + `/${name.replace("/", "-")}@${version}`; + return { + finalPath, + finalDir + }; +} +function extractFileFromTarGzip(buffer, file) { + try { + buffer = gunzip(buffer); + } catch (err) { + throw new Error(`Invalid gzip data in archive: ${err && err.message || err}`); + } + let str = (i, n)=>String.fromCharCode(...buffer.subarray(i, i + n)).replace(/\0.*$/, ""); + let offset = 0; + file = `package/${file}`; + while(offset < buffer.length){ + let name = str(offset, 100); + let size = parseInt(str(offset + 124, 12), 8); + offset += 512; + if (!isNaN(size)) { + if (name === file) return buffer.subarray(offset, offset + size); + offset += size + 511 & ~511; + } + } + throw new Error(`Could not find ${JSON.stringify(file)} in archive`); +} +async function install() { + const overridePath = Deno.env.get("ESBUILD_BINARY_PATH"); + if (overridePath) return overridePath; + const platformKey = Deno.build.target; + const knownWindowsPackages = { + "x86_64-pc-windows-msvc": "@esbuild/win32-x64" + }; + const knownUnixlikePackages = { + "aarch64-apple-darwin": "@esbuild/darwin-arm64", + "aarch64-unknown-linux-gnu": "@esbuild/linux-arm64", + "x86_64-apple-darwin": "@esbuild/darwin-x64", + "x86_64-unknown-linux-gnu": "@esbuild/linux-x64", + "x86_64-unknown-freebsd": "@esbuild/freebsd-x64" + }; + if (platformKey in knownWindowsPackages) { + return await installFromNPM(knownWindowsPackages[platformKey], "esbuild.exe"); + } else if (platformKey in knownUnixlikePackages) { + return await installFromNPM(knownUnixlikePackages[platformKey], "bin/esbuild"); + } else { + throw new Error(`Unsupported platform: ${platformKey}`); + } +} +var defaultWD = Deno.cwd(); +var longLivedService; +var stopService; +var ensureServiceIsRunning = ()=>{ + if (!longLivedService) { + longLivedService = (async ()=>{ + const binPath = await install(); + const isTTY = Deno.isatty(Deno.stderr.rid); + const child = Deno.run({ + cmd: [ + binPath, + `--service=${version}` + ], + cwd: defaultWD, + stdin: "piped", + stdout: "piped", + stderr: "inherit" + }); + stopService = ()=>{ + child.stdin.close(); + child.stdout.close(); + child.close(); + initializeWasCalled = false; + longLivedService = void 0; + stopService = void 0; + }; + let writeQueue = []; + let isQueueLocked = false; + const startWriteFromQueueWorker = ()=>{ + if (isQueueLocked || writeQueue.length === 0) return; + isQueueLocked = true; + child.stdin.write(writeQueue[0]).then((bytesWritten)=>{ + isQueueLocked = false; + if (bytesWritten === writeQueue[0].length) writeQueue.shift(); + else writeQueue[0] = writeQueue[0].subarray(bytesWritten); + startWriteFromQueueWorker(); + }); + }; + const { readFromStdout , afterClose , service } = createChannel({ + writeToStdin (bytes) { + writeQueue.push(bytes); + startWriteFromQueueWorker(); + }, + isSync: false, + hasFS: true, + esbuild: mod_exports + }); + const stdoutBuffer = new Uint8Array(4 * 1024 * 1024); + const readMoreStdout = ()=>child.stdout.read(stdoutBuffer).then((n)=>{ + if (n === null) { + afterClose(null); + } else { + readFromStdout(stdoutBuffer.subarray(0, n)); + readMoreStdout(); + } + }).catch((e)=>{ + if (e instanceof Deno.errors.Interrupted || e instanceof Deno.errors.BadResource) { + afterClose(e); + } else { + throw e; + } + }); + readMoreStdout(); + return { + build: (options)=>new Promise((resolve, reject)=>{ + service.buildOrContext({ + callName: "build", + refs: null, + options, + isTTY, + defaultWD, + callback: (err, res)=>err ? reject(err) : resolve(res) + }); + }), + context: (options)=>new Promise((resolve, reject)=>service.buildOrContext({ + callName: "context", + refs: null, + options, + isTTY, + defaultWD, + callback: (err, res)=>err ? reject(err) : resolve(res) + })), + transform: (input, options)=>new Promise((resolve, reject)=>service.transform({ + callName: "transform", + refs: null, + input, + options: options || {}, + isTTY, + fs: { + readFile (tempFile, callback) { + Deno.readFile(tempFile).then((bytes)=>{ + let text = new TextDecoder().decode(bytes); + try { + Deno.remove(tempFile); + } catch (e) {} + callback(null, text); + }, (err)=>callback(err, null)); + }, + writeFile (contents, callback) { + Deno.makeTempFile().then((tempFile)=>Deno.writeFile(tempFile, typeof contents === "string" ? new TextEncoder().encode(contents) : contents).then(()=>callback(tempFile), ()=>callback(null)), ()=>callback(null)); + } + }, + callback: (err, res)=>err ? reject(err) : resolve(res) + })), + formatMessages: (messages, options)=>new Promise((resolve, reject)=>service.formatMessages({ + callName: "formatMessages", + refs: null, + messages, + options, + callback: (err, res)=>err ? reject(err) : resolve(res) + })), + analyzeMetafile: (metafile, options)=>new Promise((resolve, reject)=>service.analyzeMetafile({ + callName: "analyzeMetafile", + refs: null, + metafile: typeof metafile === "string" ? metafile : JSON.stringify(metafile), + options, + callback: (err, res)=>err ? reject(err) : resolve(res) + })) + }; + })(); + } + return longLivedService; +}; +if (importMeta1.main) { + Deno.run({ + cmd: [ + await install() + ].concat(Deno.args), + cwd: defaultWD, + stdin: "inherit", + stdout: "inherit", + stderr: "inherit" + }).status().then(({ code })=>{ + Deno.exit(code); + }); +} +export { analyzeMetafile as analyzeMetafile, analyzeMetafileSync as analyzeMetafileSync, build as build, buildSync as buildSync, context as context, formatMessages as formatMessages, formatMessagesSync as formatMessagesSync, initialize as initialize, stop as stop, transform as transform, transformSync as transformSync, version as version }; diff --git a/deno/std/http/file_server.js b/deno/std/http/file_server.js new file mode 100644 index 00000000..bf92cac5 --- /dev/null +++ b/deno/std/http/file_server.js @@ -0,0 +1,17169 @@ +#!/usr/bin/env -S deno run --allow-net --allow-read +// deno-fmt-ignore-file +// deno-lint-ignore-file +// This code was bundled using `deno bundle` and it's not recommended to edit it manually + +const osType = (()=>{ + const { Deno: Deno1 } = globalThis; + if (typeof Deno1?.build?.os === "string") { + return Deno1.build.os; + } + const { navigator } = globalThis; + if (navigator?.appVersion?.includes?.("Win")) { + return "windows"; + } + return "linux"; +})(); +const isWindows = osType === "windows"; +const CHAR_FORWARD_SLASH = 47; +function assertPath(path) { + if (typeof path !== "string") { + throw new TypeError(`Path must be a string. Received ${JSON.stringify(path)}`); + } +} +function isPosixPathSeparator(code) { + return code === 47; +} +function isPathSeparator(code) { + return isPosixPathSeparator(code) || code === 92; +} +function isWindowsDeviceRoot(code) { + return code >= 97 && code <= 122 || code >= 65 && code <= 90; +} +function normalizeString(path, allowAboveRoot, separator, isPathSeparator) { + let res = ""; + let lastSegmentLength = 0; + let lastSlash = -1; + let dots = 0; + let code; + for(let i = 0, len = path.length; i <= len; ++i){ + if (i < len) code = path.charCodeAt(i); + else if (isPathSeparator(code)) break; + else code = CHAR_FORWARD_SLASH; + if (isPathSeparator(code)) { + if (lastSlash === i - 1 || dots === 1) {} else if (lastSlash !== i - 1 && dots === 2) { + if (res.length < 2 || lastSegmentLength !== 2 || res.charCodeAt(res.length - 1) !== 46 || res.charCodeAt(res.length - 2) !== 46) { + if (res.length > 2) { + const lastSlashIndex = res.lastIndexOf(separator); + if (lastSlashIndex === -1) { + res = ""; + lastSegmentLength = 0; + } else { + res = res.slice(0, lastSlashIndex); + lastSegmentLength = res.length - 1 - res.lastIndexOf(separator); + } + lastSlash = i; + dots = 0; + continue; + } else if (res.length === 2 || res.length === 1) { + res = ""; + lastSegmentLength = 0; + lastSlash = i; + dots = 0; + continue; + } + } + if (allowAboveRoot) { + if (res.length > 0) res += `${separator}..`; + else res = ".."; + lastSegmentLength = 2; + } + } else { + if (res.length > 0) res += separator + path.slice(lastSlash + 1, i); + else res = path.slice(lastSlash + 1, i); + lastSegmentLength = i - lastSlash - 1; + } + lastSlash = i; + dots = 0; + } else if (code === 46 && dots !== -1) { + ++dots; + } else { + dots = -1; + } + } + return res; +} +function _format(sep, pathObject) { + const dir = pathObject.dir || pathObject.root; + const base = pathObject.base || (pathObject.name || "") + (pathObject.ext || ""); + if (!dir) return base; + if (dir === pathObject.root) return dir + base; + return dir + sep + base; +} +const WHITESPACE_ENCODINGS = { + "\u0009": "%09", + "\u000A": "%0A", + "\u000B": "%0B", + "\u000C": "%0C", + "\u000D": "%0D", + "\u0020": "%20" +}; +function encodeWhitespace(string) { + return string.replaceAll(/[\s]/g, (c)=>{ + return WHITESPACE_ENCODINGS[c] ?? c; + }); +} +class DenoStdInternalError extends Error { + constructor(message){ + super(message); + this.name = "DenoStdInternalError"; + } +} +function assert(expr, msg = "") { + if (!expr) { + throw new DenoStdInternalError(msg); + } +} +const sep = "\\"; +const delimiter = ";"; +function resolve(...pathSegments) { + let resolvedDevice = ""; + let resolvedTail = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1; i--){ + let path; + const { Deno: Deno1 } = globalThis; + if (i >= 0) { + path = pathSegments[i]; + } else if (!resolvedDevice) { + if (typeof Deno1?.cwd !== "function") { + throw new TypeError("Resolved a drive-letter-less path without a CWD."); + } + path = Deno1.cwd(); + } else { + if (typeof Deno1?.env?.get !== "function" || typeof Deno1?.cwd !== "function") { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno1.cwd(); + if (path === undefined || path.slice(0, 3).toLowerCase() !== `${resolvedDevice.toLowerCase()}\\`) { + path = `${resolvedDevice}\\`; + } + } + assertPath(path); + const len = path.length; + if (len === 0) continue; + let rootEnd = 0; + let device = ""; + let isAbsolute = false; + const code = path.charCodeAt(0); + if (len > 1) { + if (isPathSeparator(code)) { + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + last = j; + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + device = `\\\\${firstPart}\\${path.slice(last)}`; + rootEnd = j; + } else if (j !== last) { + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + if (path.charCodeAt(1) === 58) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + rootEnd = 1; + isAbsolute = true; + } + if (device.length > 0 && resolvedDevice.length > 0 && device.toLowerCase() !== resolvedDevice.toLowerCase()) { + continue; + } + if (resolvedDevice.length === 0 && device.length > 0) { + resolvedDevice = device; + } + if (!resolvedAbsolute) { + resolvedTail = `${path.slice(rootEnd)}\\${resolvedTail}`; + resolvedAbsolute = isAbsolute; + } + if (resolvedAbsolute && resolvedDevice.length > 0) break; + } + resolvedTail = normalizeString(resolvedTail, !resolvedAbsolute, "\\", isPathSeparator); + return resolvedDevice + (resolvedAbsolute ? "\\" : "") + resolvedTail || "."; +} +function normalize(path) { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = 0; + let device; + let isAbsolute = false; + const code = path.charCodeAt(0); + if (len > 1) { + if (isPathSeparator(code)) { + isAbsolute = true; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + const firstPart = path.slice(last, j); + last = j; + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + return `\\\\${firstPart}\\${path.slice(last)}\\`; + } else if (j !== last) { + device = `\\\\${firstPart}\\${path.slice(last, j)}`; + rootEnd = j; + } + } + } + } else { + rootEnd = 1; + } + } else if (isWindowsDeviceRoot(code)) { + if (path.charCodeAt(1) === 58) { + device = path.slice(0, 2); + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + isAbsolute = true; + rootEnd = 3; + } + } + } + } + } else if (isPathSeparator(code)) { + return "\\"; + } + let tail; + if (rootEnd < len) { + tail = normalizeString(path.slice(rootEnd), !isAbsolute, "\\", isPathSeparator); + } else { + tail = ""; + } + if (tail.length === 0 && !isAbsolute) tail = "."; + if (tail.length > 0 && isPathSeparator(path.charCodeAt(len - 1))) { + tail += "\\"; + } + if (device === undefined) { + if (isAbsolute) { + if (tail.length > 0) return `\\${tail}`; + else return "\\"; + } else if (tail.length > 0) { + return tail; + } else { + return ""; + } + } else if (isAbsolute) { + if (tail.length > 0) return `${device}\\${tail}`; + else return `${device}\\`; + } else if (tail.length > 0) { + return device + tail; + } else { + return device; + } +} +function isAbsolute(path) { + assertPath(path); + const len = path.length; + if (len === 0) return false; + const code = path.charCodeAt(0); + if (isPathSeparator(code)) { + return true; + } else if (isWindowsDeviceRoot(code)) { + if (len > 2 && path.charCodeAt(1) === 58) { + if (isPathSeparator(path.charCodeAt(2))) return true; + } + } + return false; +} +function join(...paths) { + const pathsCount = paths.length; + if (pathsCount === 0) return "."; + let joined; + let firstPart = null; + for(let i = 0; i < pathsCount; ++i){ + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (joined === undefined) joined = firstPart = path; + else joined += `\\${path}`; + } + } + if (joined === undefined) return "."; + let needsReplace = true; + let slashCount = 0; + assert(firstPart != null); + if (isPathSeparator(firstPart.charCodeAt(0))) { + ++slashCount; + const firstLen = firstPart.length; + if (firstLen > 1) { + if (isPathSeparator(firstPart.charCodeAt(1))) { + ++slashCount; + if (firstLen > 2) { + if (isPathSeparator(firstPart.charCodeAt(2))) ++slashCount; + else { + needsReplace = false; + } + } + } + } + } + if (needsReplace) { + for(; slashCount < joined.length; ++slashCount){ + if (!isPathSeparator(joined.charCodeAt(slashCount))) break; + } + if (slashCount >= 2) joined = `\\${joined.slice(slashCount)}`; + } + return normalize(joined); +} +function relative(from, to) { + assertPath(from); + assertPath(to); + if (from === to) return ""; + const fromOrig = resolve(from); + const toOrig = resolve(to); + if (fromOrig === toOrig) return ""; + from = fromOrig.toLowerCase(); + to = toOrig.toLowerCase(); + if (from === to) return ""; + let fromStart = 0; + let fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (from.charCodeAt(fromStart) !== 92) break; + } + for(; fromEnd - 1 > fromStart; --fromEnd){ + if (from.charCodeAt(fromEnd - 1) !== 92) break; + } + const fromLen = fromEnd - fromStart; + let toStart = 0; + let toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (to.charCodeAt(toStart) !== 92) break; + } + for(; toEnd - 1 > toStart; --toEnd){ + if (to.charCodeAt(toEnd - 1) !== 92) break; + } + const toLen = toEnd - toStart; + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === 92) { + return toOrig.slice(toStart + i + 1); + } else if (i === 2) { + return toOrig.slice(toStart + i); + } + } + if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === 92) { + lastCommonSep = i; + } else if (i === 2) { + lastCommonSep = 3; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === 92) lastCommonSep = i; + } + if (i !== length && lastCommonSep === -1) { + return toOrig; + } + let out = ""; + if (lastCommonSep === -1) lastCommonSep = 0; + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || from.charCodeAt(i) === 92) { + if (out.length === 0) out += ".."; + else out += "\\.."; + } + } + if (out.length > 0) { + return out + toOrig.slice(toStart + lastCommonSep, toEnd); + } else { + toStart += lastCommonSep; + if (toOrig.charCodeAt(toStart) === 92) ++toStart; + return toOrig.slice(toStart, toEnd); + } +} +function toNamespacedPath(path) { + if (typeof path !== "string") return path; + if (path.length === 0) return ""; + const resolvedPath = resolve(path); + if (resolvedPath.length >= 3) { + if (resolvedPath.charCodeAt(0) === 92) { + if (resolvedPath.charCodeAt(1) === 92) { + const code = resolvedPath.charCodeAt(2); + if (code !== 63 && code !== 46) { + return `\\\\?\\UNC\\${resolvedPath.slice(2)}`; + } + } + } else if (isWindowsDeviceRoot(resolvedPath.charCodeAt(0))) { + if (resolvedPath.charCodeAt(1) === 58 && resolvedPath.charCodeAt(2) === 92) { + return `\\\\?\\${resolvedPath}`; + } + } + } + return path; +} +function dirname(path) { + assertPath(path); + const len = path.length; + if (len === 0) return "."; + let rootEnd = -1; + let end = -1; + let matchedSlash = true; + let offset = 0; + const code = path.charCodeAt(0); + if (len > 1) { + if (isPathSeparator(code)) { + rootEnd = offset = 1; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + return path; + } + if (j !== last) { + rootEnd = offset = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + if (path.charCodeAt(1) === 58) { + rootEnd = offset = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) rootEnd = offset = 3; + } + } + } + } else if (isPathSeparator(code)) { + return path; + } + for(let i = len - 1; i >= offset; --i){ + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + end = i; + break; + } + } else { + matchedSlash = false; + } + } + if (end === -1) { + if (rootEnd === -1) return "."; + else end = rootEnd; + } + return path.slice(0, end); +} +function basename(path, ext = "") { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (path.length >= 2) { + const drive = path.charCodeAt(0); + if (isWindowsDeviceRoot(drive)) { + if (path.charCodeAt(1) === 58) start = 2; + } + } + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for(i = path.length - 1; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + matchedSlash = false; + firstNonSlashEnd = i + 1; + end = firstNonSlashEnd; + } + if (extIdx >= 0) { + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + end = i; + } + } else { + extIdx = -1; + } + } + } + } + if (end === -1) return ""; + if (start === end) end = firstNonSlashEnd; + return path.slice(start, end); + } else { + for(i = path.length - 1; i >= start; --i){ + if (isPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) return ""; + return path.slice(start, end); + } +} +function extname(path) { + assertPath(path); + let start = 0; + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let preDotState = 0; + if (path.length >= 2 && path.charCodeAt(1) === 58 && isWindowsDeviceRoot(path.charCodeAt(0))) { + start = startPart = 2; + } + for(let i = path.length - 1; i >= start; --i){ + const code = path.charCodeAt(i); + if (isPathSeparator(code)) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +function format(pathObject) { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError(`The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`); + } + return _format("\\", pathObject); +} +function parse(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + const len = path.length; + if (len === 0) return ret; + let rootEnd = 0; + let code = path.charCodeAt(0); + if (len > 1) { + if (isPathSeparator(code)) { + rootEnd = 1; + if (isPathSeparator(path.charCodeAt(1))) { + let j = 2; + let last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (!isPathSeparator(path.charCodeAt(j))) break; + } + if (j < len && j !== last) { + last = j; + for(; j < len; ++j){ + if (isPathSeparator(path.charCodeAt(j))) break; + } + if (j === len) { + rootEnd = j; + } else if (j !== last) { + rootEnd = j + 1; + } + } + } + } + } else if (isWindowsDeviceRoot(code)) { + if (path.charCodeAt(1) === 58) { + rootEnd = 2; + if (len > 2) { + if (isPathSeparator(path.charCodeAt(2))) { + if (len === 3) { + ret.root = ret.dir = path; + return ret; + } + rootEnd = 3; + } + } else { + ret.root = ret.dir = path; + return ret; + } + } + } + } else if (isPathSeparator(code)) { + ret.root = ret.dir = path; + return ret; + } + if (rootEnd > 0) ret.root = path.slice(0, rootEnd); + let startDot = -1; + let startPart = rootEnd; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + let preDotState = 0; + for(; i >= rootEnd; --i){ + code = path.charCodeAt(i); + if (isPathSeparator(code)) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + ret.base = ret.name = path.slice(startPart, end); + } + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + ret.ext = path.slice(startDot, end); + } + if (startPart > 0 && startPart !== rootEnd) { + ret.dir = path.slice(0, startPart - 1); + } else ret.dir = ret.root; + return ret; +} +function fromFileUrl(url) { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + let path = decodeURIComponent(url.pathname.replace(/\//g, "\\").replace(/%(?![0-9A-Fa-f]{2})/g, "%25")).replace(/^\\*([A-Za-z]:)(\\|$)/, "$1\\"); + if (url.hostname != "") { + path = `\\\\${url.hostname}${path}`; + } + return path; +} +function toFileUrl(path) { + if (!isAbsolute(path)) { + throw new TypeError("Must be an absolute path."); + } + const [, hostname, pathname] = path.match(/^(?:[/\\]{2}([^/\\]+)(?=[/\\](?:[^/\\]|$)))?(.*)/); + const url = new URL("file:///"); + url.pathname = encodeWhitespace(pathname.replace(/%/g, "%25")); + if (hostname != null && hostname != "localhost") { + url.hostname = hostname; + if (!url.hostname) { + throw new TypeError("Invalid hostname."); + } + } + return url; +} +const mod = { + sep: sep, + delimiter: delimiter, + resolve: resolve, + normalize: normalize, + isAbsolute: isAbsolute, + join: join, + relative: relative, + toNamespacedPath: toNamespacedPath, + dirname: dirname, + basename: basename, + extname: extname, + format: format, + parse: parse, + fromFileUrl: fromFileUrl, + toFileUrl: toFileUrl +}; +const sep1 = "/"; +const delimiter1 = ":"; +function resolve1(...pathSegments) { + let resolvedPath = ""; + let resolvedAbsolute = false; + for(let i = pathSegments.length - 1; i >= -1 && !resolvedAbsolute; i--){ + let path; + if (i >= 0) path = pathSegments[i]; + else { + const { Deno: Deno1 } = globalThis; + if (typeof Deno1?.cwd !== "function") { + throw new TypeError("Resolved a relative path without a CWD."); + } + path = Deno1.cwd(); + } + assertPath(path); + if (path.length === 0) { + continue; + } + resolvedPath = `${path}/${resolvedPath}`; + resolvedAbsolute = path.charCodeAt(0) === CHAR_FORWARD_SLASH; + } + resolvedPath = normalizeString(resolvedPath, !resolvedAbsolute, "/", isPosixPathSeparator); + if (resolvedAbsolute) { + if (resolvedPath.length > 0) return `/${resolvedPath}`; + else return "/"; + } else if (resolvedPath.length > 0) return resolvedPath; + else return "."; +} +function normalize1(path) { + assertPath(path); + if (path.length === 0) return "."; + const isAbsolute = path.charCodeAt(0) === 47; + const trailingSeparator = path.charCodeAt(path.length - 1) === 47; + path = normalizeString(path, !isAbsolute, "/", isPosixPathSeparator); + if (path.length === 0 && !isAbsolute) path = "."; + if (path.length > 0 && trailingSeparator) path += "/"; + if (isAbsolute) return `/${path}`; + return path; +} +function isAbsolute1(path) { + assertPath(path); + return path.length > 0 && path.charCodeAt(0) === 47; +} +function join1(...paths) { + if (paths.length === 0) return "."; + let joined; + for(let i = 0, len = paths.length; i < len; ++i){ + const path = paths[i]; + assertPath(path); + if (path.length > 0) { + if (!joined) joined = path; + else joined += `/${path}`; + } + } + if (!joined) return "."; + return normalize1(joined); +} +function relative1(from, to) { + assertPath(from); + assertPath(to); + if (from === to) return ""; + from = resolve1(from); + to = resolve1(to); + if (from === to) return ""; + let fromStart = 1; + const fromEnd = from.length; + for(; fromStart < fromEnd; ++fromStart){ + if (from.charCodeAt(fromStart) !== 47) break; + } + const fromLen = fromEnd - fromStart; + let toStart = 1; + const toEnd = to.length; + for(; toStart < toEnd; ++toStart){ + if (to.charCodeAt(toStart) !== 47) break; + } + const toLen = toEnd - toStart; + const length = fromLen < toLen ? fromLen : toLen; + let lastCommonSep = -1; + let i = 0; + for(; i <= length; ++i){ + if (i === length) { + if (toLen > length) { + if (to.charCodeAt(toStart + i) === 47) { + return to.slice(toStart + i + 1); + } else if (i === 0) { + return to.slice(toStart + i); + } + } else if (fromLen > length) { + if (from.charCodeAt(fromStart + i) === 47) { + lastCommonSep = i; + } else if (i === 0) { + lastCommonSep = 0; + } + } + break; + } + const fromCode = from.charCodeAt(fromStart + i); + const toCode = to.charCodeAt(toStart + i); + if (fromCode !== toCode) break; + else if (fromCode === 47) lastCommonSep = i; + } + let out = ""; + for(i = fromStart + lastCommonSep + 1; i <= fromEnd; ++i){ + if (i === fromEnd || from.charCodeAt(i) === 47) { + if (out.length === 0) out += ".."; + else out += "/.."; + } + } + if (out.length > 0) return out + to.slice(toStart + lastCommonSep); + else { + toStart += lastCommonSep; + if (to.charCodeAt(toStart) === 47) ++toStart; + return to.slice(toStart); + } +} +function toNamespacedPath1(path) { + return path; +} +function dirname1(path) { + assertPath(path); + if (path.length === 0) return "."; + const hasRoot = path.charCodeAt(0) === 47; + let end = -1; + let matchedSlash = true; + for(let i = path.length - 1; i >= 1; --i){ + if (path.charCodeAt(i) === 47) { + if (!matchedSlash) { + end = i; + break; + } + } else { + matchedSlash = false; + } + } + if (end === -1) return hasRoot ? "/" : "."; + if (hasRoot && end === 1) return "//"; + return path.slice(0, end); +} +function basename1(path, ext = "") { + if (ext !== undefined && typeof ext !== "string") { + throw new TypeError('"ext" argument must be a string'); + } + assertPath(path); + let start = 0; + let end = -1; + let matchedSlash = true; + let i; + if (ext !== undefined && ext.length > 0 && ext.length <= path.length) { + if (ext.length === path.length && ext === path) return ""; + let extIdx = ext.length - 1; + let firstNonSlashEnd = -1; + for(i = path.length - 1; i >= 0; --i){ + const code = path.charCodeAt(i); + if (isPosixPathSeparator(code)) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else { + if (firstNonSlashEnd === -1) { + matchedSlash = false; + firstNonSlashEnd = i + 1; + end = firstNonSlashEnd; + } + if (extIdx >= 0) { + if (code === ext.charCodeAt(extIdx)) { + if (--extIdx === -1) { + end = i; + } + } else { + extIdx = -1; + } + } + } + } + if (end === -1) return ""; + if (start === end) end = firstNonSlashEnd; + return path.slice(start, end); + } else { + for(i = path.length - 1; i >= 0; --i){ + if (isPosixPathSeparator(path.charCodeAt(i))) { + if (!matchedSlash) { + start = i + 1; + break; + } + } else if (end === -1) { + matchedSlash = false; + end = i + 1; + } + } + if (end === -1) return ""; + return path.slice(start, end); + } +} +function extname1(path) { + assertPath(path); + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let preDotState = 0; + for(let i = path.length - 1; i >= 0; --i){ + const code = path.charCodeAt(i); + if (code === 47) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + return ""; + } + return path.slice(startDot, end); +} +function format1(pathObject) { + if (pathObject === null || typeof pathObject !== "object") { + throw new TypeError(`The "pathObject" argument must be of type Object. Received type ${typeof pathObject}`); + } + return _format("/", pathObject); +} +function parse1(path) { + assertPath(path); + const ret = { + root: "", + dir: "", + base: "", + ext: "", + name: "" + }; + if (path.length === 0) return ret; + const isAbsolute = path.charCodeAt(0) === 47; + let start; + if (isAbsolute) { + ret.root = "/"; + start = 1; + } else { + start = 0; + } + let startDot = -1; + let startPart = 0; + let end = -1; + let matchedSlash = true; + let i = path.length - 1; + let preDotState = 0; + for(; i >= start; --i){ + const code = path.charCodeAt(i); + if (code === 47) { + if (!matchedSlash) { + startPart = i + 1; + break; + } + continue; + } + if (end === -1) { + matchedSlash = false; + end = i + 1; + } + if (code === 46) { + if (startDot === -1) startDot = i; + else if (preDotState !== 1) preDotState = 1; + } else if (startDot !== -1) { + preDotState = -1; + } + } + if (startDot === -1 || end === -1 || preDotState === 0 || preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) { + if (end !== -1) { + if (startPart === 0 && isAbsolute) { + ret.base = ret.name = path.slice(1, end); + } else { + ret.base = ret.name = path.slice(startPart, end); + } + } + } else { + if (startPart === 0 && isAbsolute) { + ret.name = path.slice(1, startDot); + ret.base = path.slice(1, end); + } else { + ret.name = path.slice(startPart, startDot); + ret.base = path.slice(startPart, end); + } + ret.ext = path.slice(startDot, end); + } + if (startPart > 0) ret.dir = path.slice(0, startPart - 1); + else if (isAbsolute) ret.dir = "/"; + return ret; +} +function fromFileUrl1(url) { + url = url instanceof URL ? url : new URL(url); + if (url.protocol != "file:") { + throw new TypeError("Must be a file URL."); + } + return decodeURIComponent(url.pathname.replace(/%(?![0-9A-Fa-f]{2})/g, "%25")); +} +function toFileUrl1(path) { + if (!isAbsolute1(path)) { + throw new TypeError("Must be an absolute path."); + } + const url = new URL("file:///"); + url.pathname = encodeWhitespace(path.replace(/%/g, "%25").replace(/\\/g, "%5C")); + return url; +} +const mod1 = { + sep: sep1, + delimiter: delimiter1, + resolve: resolve1, + normalize: normalize1, + isAbsolute: isAbsolute1, + join: join1, + relative: relative1, + toNamespacedPath: toNamespacedPath1, + dirname: dirname1, + basename: basename1, + extname: extname1, + format: format1, + parse: parse1, + fromFileUrl: fromFileUrl1, + toFileUrl: toFileUrl1 +}; +const path = isWindows ? mod : mod1; +const { join: join2 , normalize: normalize2 } = path; +const path1 = isWindows ? mod : mod1; +const { basename: basename2 , delimiter: delimiter2 , dirname: dirname2 , extname: extname2 , format: format2 , fromFileUrl: fromFileUrl2 , isAbsolute: isAbsolute2 , join: join3 , normalize: normalize3 , parse: parse2 , relative: relative2 , resolve: resolve2 , sep: sep2 , toFileUrl: toFileUrl2 , toNamespacedPath: toNamespacedPath2 } = path1; +const extensions = new Map(); +function consumeToken(v) { + const notPos = indexOf(v, isNotTokenChar); + if (notPos == -1) { + return [ + v, + "" + ]; + } + if (notPos == 0) { + return [ + "", + v + ]; + } + return [ + v.slice(0, notPos), + v.slice(notPos) + ]; +} +function consumeValue(v) { + if (!v) { + return [ + "", + v + ]; + } + if (v[0] !== `"`) { + return consumeToken(v); + } + let value = ""; + for(let i = 1; i < v.length; i++){ + const r = v[i]; + if (r === `"`) { + return [ + value, + v.slice(i + 1) + ]; + } + if (r === "\\" && i + 1 < v.length && isTSpecial(v[i + 1])) { + value += v[i + 1]; + i++; + continue; + } + if (r === "\r" || r === "\n") { + return [ + "", + v + ]; + } + value += v[i]; + } + return [ + "", + v + ]; +} +function consumeMediaParam(v) { + let rest = v.trimStart(); + if (!rest.startsWith(";")) { + return [ + "", + "", + v + ]; + } + rest = rest.slice(1); + rest = rest.trimStart(); + let param; + [param, rest] = consumeToken(rest); + param = param.toLowerCase(); + if (!param) { + return [ + "", + "", + v + ]; + } + rest = rest.slice(1); + rest = rest.trimStart(); + const [value, rest2] = consumeValue(rest); + if (value == "" && rest2 === rest) { + return [ + "", + "", + v + ]; + } + rest = rest2; + return [ + param, + value, + rest + ]; +} +function decode2331Encoding(v) { + const sv = v.split(`'`, 3); + if (sv.length !== 3) { + return undefined; + } + const charset = sv[0].toLowerCase(); + if (!charset) { + return undefined; + } + if (charset != "us-ascii" && charset != "utf-8") { + return undefined; + } + const encv = decodeURI(sv[2]); + if (!encv) { + return undefined; + } + return encv; +} +function indexOf(s, fn) { + let i = -1; + for (const v of s){ + i++; + if (fn(v)) { + return i; + } + } + return -1; +} +function isIterator(obj) { + if (obj == null) { + return false; + } + return typeof obj[Symbol.iterator] === "function"; +} +function isToken(s) { + if (!s) { + return false; + } + return indexOf(s, isNotTokenChar) < 0; +} +function isNotTokenChar(r) { + return !isTokenChar(r); +} +function isTokenChar(r) { + const code = r.charCodeAt(0); + return code > 0x20 && code < 0x7f && !isTSpecial(r); +} +function isTSpecial(r) { + return `()<>@,;:\\"/[]?=`.includes(r[0]); +} +const CHAR_CODE_SPACE = " ".charCodeAt(0); +const CHAR_CODE_TILDE = "~".charCodeAt(0); +function needsEncoding(s) { + for (const b of s){ + const charCode = b.charCodeAt(0); + if ((charCode < CHAR_CODE_SPACE || charCode > CHAR_CODE_TILDE) && b !== "\t") { + return true; + } + } + return false; +} +function parseMediaType(v) { + const [base] = v.split(";"); + const mediaType = base.toLowerCase().trim(); + const params = {}; + const continuation = new Map(); + v = v.slice(base.length); + while(v.length){ + v = v.trimStart(); + if (v.length === 0) { + break; + } + const [key, value, rest] = consumeMediaParam(v); + if (!key) { + if (rest.trim() === ";") { + break; + } + throw new TypeError("Invalid media parameter."); + } + let pmap = params; + const [baseName, rest2] = key.split("*"); + if (baseName && rest2 != null) { + if (!continuation.has(baseName)) { + continuation.set(baseName, {}); + } + pmap = continuation.get(baseName); + } + if (key in pmap) { + throw new TypeError("Duplicate key parsed."); + } + pmap[key] = value; + v = rest; + } + let str = ""; + for (const [key1, pieceMap] of continuation){ + const singlePartKey = `${key1}*`; + const v1 = pieceMap[singlePartKey]; + if (v1) { + const decv = decode2331Encoding(v1); + if (decv) { + params[key1] = decv; + } + continue; + } + str = ""; + let valid = false; + for(let n = 0;; n++){ + const simplePart = `${key1}*${n}`; + let v2 = pieceMap[simplePart]; + if (v2) { + valid = true; + str += v2; + continue; + } + const encodedPart = `${simplePart}*`; + v2 = pieceMap[encodedPart]; + if (!v2) { + break; + } + valid = true; + if (n === 0) { + const decv1 = decode2331Encoding(v2); + if (decv1) { + str += decv1; + } + } else { + const decv2 = decodeURI(v2); + str += decv2; + } + } + if (valid) { + params[key1] = str; + } + } + return Object.keys(params).length ? [ + mediaType, + params + ] : [ + mediaType, + undefined + ]; +} +const __default = { + "application/1d-interleaved-parityfec": { + "source": "iana" + }, + "application/3gpdash-qoe-report+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/3gpp-ims+xml": { + "source": "iana", + "compressible": true + }, + "application/3gpphal+json": { + "source": "iana", + "compressible": true + }, + "application/3gpphalforms+json": { + "source": "iana", + "compressible": true + }, + "application/a2l": { + "source": "iana" + }, + "application/ace+cbor": { + "source": "iana" + }, + "application/activemessage": { + "source": "iana" + }, + "application/activity+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-costmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-directory+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcost+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointcostparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointprop+json": { + "source": "iana", + "compressible": true + }, + "application/alto-endpointpropparams+json": { + "source": "iana", + "compressible": true + }, + "application/alto-error+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmap+json": { + "source": "iana", + "compressible": true + }, + "application/alto-networkmapfilter+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamcontrol+json": { + "source": "iana", + "compressible": true + }, + "application/alto-updatestreamparams+json": { + "source": "iana", + "compressible": true + }, + "application/aml": { + "source": "iana" + }, + "application/andrew-inset": { + "source": "iana", + "extensions": [ + "ez" + ] + }, + "application/applefile": { + "source": "iana" + }, + "application/applixware": { + "source": "apache", + "extensions": [ + "aw" + ] + }, + "application/at+jwt": { + "source": "iana" + }, + "application/atf": { + "source": "iana" + }, + "application/atfx": { + "source": "iana" + }, + "application/atom+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "atom" + ] + }, + "application/atomcat+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "atomcat" + ] + }, + "application/atomdeleted+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "atomdeleted" + ] + }, + "application/atomicmail": { + "source": "iana" + }, + "application/atomsvc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "atomsvc" + ] + }, + "application/atsc-dwd+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "dwd" + ] + }, + "application/atsc-dynamic-event-message": { + "source": "iana" + }, + "application/atsc-held+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "held" + ] + }, + "application/atsc-rdt+json": { + "source": "iana", + "compressible": true + }, + "application/atsc-rsat+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rsat" + ] + }, + "application/atxml": { + "source": "iana" + }, + "application/auth-policy+xml": { + "source": "iana", + "compressible": true + }, + "application/bacnet-xdd+zip": { + "source": "iana", + "compressible": false + }, + "application/batch-smtp": { + "source": "iana" + }, + "application/bdoc": { + "compressible": false, + "extensions": [ + "bdoc" + ] + }, + "application/beep+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/calendar+json": { + "source": "iana", + "compressible": true + }, + "application/calendar+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xcs" + ] + }, + "application/call-completion": { + "source": "iana" + }, + "application/cals-1840": { + "source": "iana" + }, + "application/captive+json": { + "source": "iana", + "compressible": true + }, + "application/cbor": { + "source": "iana" + }, + "application/cbor-seq": { + "source": "iana" + }, + "application/cccex": { + "source": "iana" + }, + "application/ccmp+xml": { + "source": "iana", + "compressible": true + }, + "application/ccxml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ccxml" + ] + }, + "application/cdfx+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "cdfx" + ] + }, + "application/cdmi-capability": { + "source": "iana", + "extensions": [ + "cdmia" + ] + }, + "application/cdmi-container": { + "source": "iana", + "extensions": [ + "cdmic" + ] + }, + "application/cdmi-domain": { + "source": "iana", + "extensions": [ + "cdmid" + ] + }, + "application/cdmi-object": { + "source": "iana", + "extensions": [ + "cdmio" + ] + }, + "application/cdmi-queue": { + "source": "iana", + "extensions": [ + "cdmiq" + ] + }, + "application/cdni": { + "source": "iana" + }, + "application/cea": { + "source": "iana" + }, + "application/cea-2018+xml": { + "source": "iana", + "compressible": true + }, + "application/cellml+xml": { + "source": "iana", + "compressible": true + }, + "application/cfw": { + "source": "iana" + }, + "application/city+json": { + "source": "iana", + "compressible": true + }, + "application/clr": { + "source": "iana" + }, + "application/clue+xml": { + "source": "iana", + "compressible": true + }, + "application/clue_info+xml": { + "source": "iana", + "compressible": true + }, + "application/cms": { + "source": "iana" + }, + "application/cnrp+xml": { + "source": "iana", + "compressible": true + }, + "application/coap-group+json": { + "source": "iana", + "compressible": true + }, + "application/coap-payload": { + "source": "iana" + }, + "application/commonground": { + "source": "iana" + }, + "application/conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/cose": { + "source": "iana" + }, + "application/cose-key": { + "source": "iana" + }, + "application/cose-key-set": { + "source": "iana" + }, + "application/cpl+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "cpl" + ] + }, + "application/csrattrs": { + "source": "iana" + }, + "application/csta+xml": { + "source": "iana", + "compressible": true + }, + "application/cstadata+xml": { + "source": "iana", + "compressible": true + }, + "application/csvm+json": { + "source": "iana", + "compressible": true + }, + "application/cu-seeme": { + "source": "apache", + "extensions": [ + "cu" + ] + }, + "application/cwt": { + "source": "iana" + }, + "application/cybercash": { + "source": "iana" + }, + "application/dart": { + "compressible": true + }, + "application/dash+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mpd" + ] + }, + "application/dash-patch+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mpp" + ] + }, + "application/dashdelta": { + "source": "iana" + }, + "application/davmount+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "davmount" + ] + }, + "application/dca-rft": { + "source": "iana" + }, + "application/dcd": { + "source": "iana" + }, + "application/dec-dx": { + "source": "iana" + }, + "application/dialog-info+xml": { + "source": "iana", + "compressible": true + }, + "application/dicom": { + "source": "iana" + }, + "application/dicom+json": { + "source": "iana", + "compressible": true + }, + "application/dicom+xml": { + "source": "iana", + "compressible": true + }, + "application/dii": { + "source": "iana" + }, + "application/dit": { + "source": "iana" + }, + "application/dns": { + "source": "iana" + }, + "application/dns+json": { + "source": "iana", + "compressible": true + }, + "application/dns-message": { + "source": "iana" + }, + "application/docbook+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "dbk" + ] + }, + "application/dots+cbor": { + "source": "iana" + }, + "application/dskpp+xml": { + "source": "iana", + "compressible": true + }, + "application/dssc+der": { + "source": "iana", + "extensions": [ + "dssc" + ] + }, + "application/dssc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xdssc" + ] + }, + "application/dvcs": { + "source": "iana" + }, + "application/ecmascript": { + "source": "iana", + "compressible": true, + "extensions": [ + "es", + "ecma" + ] + }, + "application/edi-consent": { + "source": "iana" + }, + "application/edi-x12": { + "source": "iana", + "compressible": false + }, + "application/edifact": { + "source": "iana", + "compressible": false + }, + "application/efi": { + "source": "iana" + }, + "application/elm+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/elm+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.cap+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/emergencycalldata.comment+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.control+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.deviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.ecall.msd": { + "source": "iana" + }, + "application/emergencycalldata.providerinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.serviceinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.subscriberinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/emergencycalldata.veds+xml": { + "source": "iana", + "compressible": true + }, + "application/emma+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "emma" + ] + }, + "application/emotionml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "emotionml" + ] + }, + "application/encaprtp": { + "source": "iana" + }, + "application/epp+xml": { + "source": "iana", + "compressible": true + }, + "application/epub+zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "epub" + ] + }, + "application/eshop": { + "source": "iana" + }, + "application/exi": { + "source": "iana", + "extensions": [ + "exi" + ] + }, + "application/expect-ct-report+json": { + "source": "iana", + "compressible": true + }, + "application/express": { + "source": "iana", + "extensions": [ + "exp" + ] + }, + "application/fastinfoset": { + "source": "iana" + }, + "application/fastsoap": { + "source": "iana" + }, + "application/fdt+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "fdt" + ] + }, + "application/fhir+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fhir+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/fido.trusted-apps+json": { + "compressible": true + }, + "application/fits": { + "source": "iana" + }, + "application/flexfec": { + "source": "iana" + }, + "application/font-sfnt": { + "source": "iana" + }, + "application/font-tdpfr": { + "source": "iana", + "extensions": [ + "pfr" + ] + }, + "application/font-woff": { + "source": "iana", + "compressible": false + }, + "application/framework-attributes+xml": { + "source": "iana", + "compressible": true + }, + "application/geo+json": { + "source": "iana", + "compressible": true, + "extensions": [ + "geojson" + ] + }, + "application/geo+json-seq": { + "source": "iana" + }, + "application/geopackage+sqlite3": { + "source": "iana" + }, + "application/geoxacml+xml": { + "source": "iana", + "compressible": true + }, + "application/gltf-buffer": { + "source": "iana" + }, + "application/gml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "gml" + ] + }, + "application/gpx+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "gpx" + ] + }, + "application/gxf": { + "source": "apache", + "extensions": [ + "gxf" + ] + }, + "application/gzip": { + "source": "iana", + "compressible": false, + "extensions": [ + "gz" + ] + }, + "application/h224": { + "source": "iana" + }, + "application/held+xml": { + "source": "iana", + "compressible": true + }, + "application/hjson": { + "extensions": [ + "hjson" + ] + }, + "application/http": { + "source": "iana" + }, + "application/hyperstudio": { + "source": "iana", + "extensions": [ + "stk" + ] + }, + "application/ibe-key-request+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pkg-reply+xml": { + "source": "iana", + "compressible": true + }, + "application/ibe-pp-data": { + "source": "iana" + }, + "application/iges": { + "source": "iana" + }, + "application/im-iscomposing+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/index": { + "source": "iana" + }, + "application/index.cmd": { + "source": "iana" + }, + "application/index.obj": { + "source": "iana" + }, + "application/index.response": { + "source": "iana" + }, + "application/index.vnd": { + "source": "iana" + }, + "application/inkml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ink", + "inkml" + ] + }, + "application/iotp": { + "source": "iana" + }, + "application/ipfix": { + "source": "iana", + "extensions": [ + "ipfix" + ] + }, + "application/ipp": { + "source": "iana" + }, + "application/isup": { + "source": "iana" + }, + "application/its+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "its" + ] + }, + "application/java-archive": { + "source": "apache", + "compressible": false, + "extensions": [ + "jar", + "war", + "ear" + ] + }, + "application/java-serialized-object": { + "source": "apache", + "compressible": false, + "extensions": [ + "ser" + ] + }, + "application/java-vm": { + "source": "apache", + "compressible": false, + "extensions": [ + "class" + ] + }, + "application/javascript": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "js", + "mjs" + ] + }, + "application/jf2feed+json": { + "source": "iana", + "compressible": true + }, + "application/jose": { + "source": "iana" + }, + "application/jose+json": { + "source": "iana", + "compressible": true + }, + "application/jrd+json": { + "source": "iana", + "compressible": true + }, + "application/jscalendar+json": { + "source": "iana", + "compressible": true + }, + "application/json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "json", + "map" + ] + }, + "application/json-patch+json": { + "source": "iana", + "compressible": true + }, + "application/json-seq": { + "source": "iana" + }, + "application/json5": { + "extensions": [ + "json5" + ] + }, + "application/jsonml+json": { + "source": "apache", + "compressible": true, + "extensions": [ + "jsonml" + ] + }, + "application/jwk+json": { + "source": "iana", + "compressible": true + }, + "application/jwk-set+json": { + "source": "iana", + "compressible": true + }, + "application/jwt": { + "source": "iana" + }, + "application/kpml-request+xml": { + "source": "iana", + "compressible": true + }, + "application/kpml-response+xml": { + "source": "iana", + "compressible": true + }, + "application/ld+json": { + "source": "iana", + "compressible": true, + "extensions": [ + "jsonld" + ] + }, + "application/lgr+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "lgr" + ] + }, + "application/link-format": { + "source": "iana" + }, + "application/load-control+xml": { + "source": "iana", + "compressible": true + }, + "application/lost+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "lostxml" + ] + }, + "application/lostsync+xml": { + "source": "iana", + "compressible": true + }, + "application/lpf+zip": { + "source": "iana", + "compressible": false + }, + "application/lxf": { + "source": "iana" + }, + "application/mac-binhex40": { + "source": "iana", + "extensions": [ + "hqx" + ] + }, + "application/mac-compactpro": { + "source": "apache", + "extensions": [ + "cpt" + ] + }, + "application/macwriteii": { + "source": "iana" + }, + "application/mads+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mads" + ] + }, + "application/manifest+json": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "webmanifest" + ] + }, + "application/marc": { + "source": "iana", + "extensions": [ + "mrc" + ] + }, + "application/marcxml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mrcx" + ] + }, + "application/mathematica": { + "source": "iana", + "extensions": [ + "ma", + "nb", + "mb" + ] + }, + "application/mathml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mathml" + ] + }, + "application/mathml-content+xml": { + "source": "iana", + "compressible": true + }, + "application/mathml-presentation+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-associated-procedure-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-deregister+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-envelope+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-msk-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-protection-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-reception-report+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-register-response+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-schedule+xml": { + "source": "iana", + "compressible": true + }, + "application/mbms-user-service-description+xml": { + "source": "iana", + "compressible": true + }, + "application/mbox": { + "source": "iana", + "extensions": [ + "mbox" + ] + }, + "application/media-policy-dataset+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mpf" + ] + }, + "application/media_control+xml": { + "source": "iana", + "compressible": true + }, + "application/mediaservercontrol+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mscml" + ] + }, + "application/merge-patch+json": { + "source": "iana", + "compressible": true + }, + "application/metalink+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "metalink" + ] + }, + "application/metalink4+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "meta4" + ] + }, + "application/mets+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mets" + ] + }, + "application/mf4": { + "source": "iana" + }, + "application/mikey": { + "source": "iana" + }, + "application/mipc": { + "source": "iana" + }, + "application/missing-blocks+cbor-seq": { + "source": "iana" + }, + "application/mmt-aei+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "maei" + ] + }, + "application/mmt-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "musd" + ] + }, + "application/mods+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mods" + ] + }, + "application/moss-keys": { + "source": "iana" + }, + "application/moss-signature": { + "source": "iana" + }, + "application/mosskey-data": { + "source": "iana" + }, + "application/mosskey-request": { + "source": "iana" + }, + "application/mp21": { + "source": "iana", + "extensions": [ + "m21", + "mp21" + ] + }, + "application/mp4": { + "source": "iana", + "extensions": [ + "mp4s", + "m4p" + ] + }, + "application/mpeg4-generic": { + "source": "iana" + }, + "application/mpeg4-iod": { + "source": "iana" + }, + "application/mpeg4-iod-xmt": { + "source": "iana" + }, + "application/mrb-consumer+xml": { + "source": "iana", + "compressible": true + }, + "application/mrb-publish+xml": { + "source": "iana", + "compressible": true + }, + "application/msc-ivr+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msc-mixer+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/msword": { + "source": "iana", + "compressible": false, + "extensions": [ + "doc", + "dot" + ] + }, + "application/mud+json": { + "source": "iana", + "compressible": true + }, + "application/multipart-core": { + "source": "iana" + }, + "application/mxf": { + "source": "iana", + "extensions": [ + "mxf" + ] + }, + "application/n-quads": { + "source": "iana", + "extensions": [ + "nq" + ] + }, + "application/n-triples": { + "source": "iana", + "extensions": [ + "nt" + ] + }, + "application/nasdata": { + "source": "iana" + }, + "application/news-checkgroups": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-groupinfo": { + "source": "iana", + "charset": "US-ASCII" + }, + "application/news-transmission": { + "source": "iana" + }, + "application/nlsml+xml": { + "source": "iana", + "compressible": true + }, + "application/node": { + "source": "iana", + "extensions": [ + "cjs" + ] + }, + "application/nss": { + "source": "iana" + }, + "application/oauth-authz-req+jwt": { + "source": "iana" + }, + "application/oblivious-dns-message": { + "source": "iana" + }, + "application/ocsp-request": { + "source": "iana" + }, + "application/ocsp-response": { + "source": "iana" + }, + "application/octet-stream": { + "source": "iana", + "compressible": false, + "extensions": [ + "bin", + "dms", + "lrf", + "mar", + "so", + "dist", + "distz", + "pkg", + "bpk", + "dump", + "elc", + "deploy", + "exe", + "dll", + "deb", + "dmg", + "iso", + "img", + "msi", + "msp", + "msm", + "buffer" + ] + }, + "application/oda": { + "source": "iana", + "extensions": [ + "oda" + ] + }, + "application/odm+xml": { + "source": "iana", + "compressible": true + }, + "application/odx": { + "source": "iana" + }, + "application/oebps-package+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "opf" + ] + }, + "application/ogg": { + "source": "iana", + "compressible": false, + "extensions": [ + "ogx" + ] + }, + "application/omdoc+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "omdoc" + ] + }, + "application/onenote": { + "source": "apache", + "extensions": [ + "onetoc", + "onetoc2", + "onetmp", + "onepkg" + ] + }, + "application/opc-nodeset+xml": { + "source": "iana", + "compressible": true + }, + "application/oscore": { + "source": "iana" + }, + "application/oxps": { + "source": "iana", + "extensions": [ + "oxps" + ] + }, + "application/p21": { + "source": "iana" + }, + "application/p21+zip": { + "source": "iana", + "compressible": false + }, + "application/p2p-overlay+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "relo" + ] + }, + "application/parityfec": { + "source": "iana" + }, + "application/passport": { + "source": "iana" + }, + "application/patch-ops-error+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xer" + ] + }, + "application/pdf": { + "source": "iana", + "compressible": false, + "extensions": [ + "pdf" + ] + }, + "application/pdx": { + "source": "iana" + }, + "application/pem-certificate-chain": { + "source": "iana" + }, + "application/pgp-encrypted": { + "source": "iana", + "compressible": false, + "extensions": [ + "pgp" + ] + }, + "application/pgp-keys": { + "source": "iana", + "extensions": [ + "asc" + ] + }, + "application/pgp-signature": { + "source": "iana", + "extensions": [ + "asc", + "sig" + ] + }, + "application/pics-rules": { + "source": "apache", + "extensions": [ + "prf" + ] + }, + "application/pidf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pidf-diff+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/pkcs10": { + "source": "iana", + "extensions": [ + "p10" + ] + }, + "application/pkcs12": { + "source": "iana" + }, + "application/pkcs7-mime": { + "source": "iana", + "extensions": [ + "p7m", + "p7c" + ] + }, + "application/pkcs7-signature": { + "source": "iana", + "extensions": [ + "p7s" + ] + }, + "application/pkcs8": { + "source": "iana", + "extensions": [ + "p8" + ] + }, + "application/pkcs8-encrypted": { + "source": "iana" + }, + "application/pkix-attr-cert": { + "source": "iana", + "extensions": [ + "ac" + ] + }, + "application/pkix-cert": { + "source": "iana", + "extensions": [ + "cer" + ] + }, + "application/pkix-crl": { + "source": "iana", + "extensions": [ + "crl" + ] + }, + "application/pkix-pkipath": { + "source": "iana", + "extensions": [ + "pkipath" + ] + }, + "application/pkixcmp": { + "source": "iana", + "extensions": [ + "pki" + ] + }, + "application/pls+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "pls" + ] + }, + "application/poc-settings+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/postscript": { + "source": "iana", + "compressible": true, + "extensions": [ + "ai", + "eps", + "ps" + ] + }, + "application/ppsp-tracker+json": { + "source": "iana", + "compressible": true + }, + "application/problem+json": { + "source": "iana", + "compressible": true + }, + "application/problem+xml": { + "source": "iana", + "compressible": true + }, + "application/provenance+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "provx" + ] + }, + "application/prs.alvestrand.titrax-sheet": { + "source": "iana" + }, + "application/prs.cww": { + "source": "iana", + "extensions": [ + "cww" + ] + }, + "application/prs.cyn": { + "source": "iana", + "charset": "7-BIT" + }, + "application/prs.hpub+zip": { + "source": "iana", + "compressible": false + }, + "application/prs.nprend": { + "source": "iana" + }, + "application/prs.plucker": { + "source": "iana" + }, + "application/prs.rdf-xml-crypt": { + "source": "iana" + }, + "application/prs.xsf+xml": { + "source": "iana", + "compressible": true + }, + "application/pskc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "pskcxml" + ] + }, + "application/pvd+json": { + "source": "iana", + "compressible": true + }, + "application/qsig": { + "source": "iana" + }, + "application/raml+yaml": { + "compressible": true, + "extensions": [ + "raml" + ] + }, + "application/raptorfec": { + "source": "iana" + }, + "application/rdap+json": { + "source": "iana", + "compressible": true + }, + "application/rdf+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rdf", + "owl" + ] + }, + "application/reginfo+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rif" + ] + }, + "application/relax-ng-compact-syntax": { + "source": "iana", + "extensions": [ + "rnc" + ] + }, + "application/remote-printing": { + "source": "iana" + }, + "application/reputon+json": { + "source": "iana", + "compressible": true + }, + "application/resource-lists+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rl" + ] + }, + "application/resource-lists-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rld" + ] + }, + "application/rfc+xml": { + "source": "iana", + "compressible": true + }, + "application/riscos": { + "source": "iana" + }, + "application/rlmi+xml": { + "source": "iana", + "compressible": true + }, + "application/rls-services+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rs" + ] + }, + "application/route-apd+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rapd" + ] + }, + "application/route-s-tsid+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sls" + ] + }, + "application/route-usd+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rusd" + ] + }, + "application/rpki-ghostbusters": { + "source": "iana", + "extensions": [ + "gbr" + ] + }, + "application/rpki-manifest": { + "source": "iana", + "extensions": [ + "mft" + ] + }, + "application/rpki-publication": { + "source": "iana" + }, + "application/rpki-roa": { + "source": "iana", + "extensions": [ + "roa" + ] + }, + "application/rpki-updown": { + "source": "iana" + }, + "application/rsd+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "rsd" + ] + }, + "application/rss+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "rss" + ] + }, + "application/rtf": { + "source": "iana", + "compressible": true, + "extensions": [ + "rtf" + ] + }, + "application/rtploopback": { + "source": "iana" + }, + "application/rtx": { + "source": "iana" + }, + "application/samlassertion+xml": { + "source": "iana", + "compressible": true + }, + "application/samlmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/sarif+json": { + "source": "iana", + "compressible": true + }, + "application/sarif-external-properties+json": { + "source": "iana", + "compressible": true + }, + "application/sbe": { + "source": "iana" + }, + "application/sbml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sbml" + ] + }, + "application/scaip+xml": { + "source": "iana", + "compressible": true + }, + "application/scim+json": { + "source": "iana", + "compressible": true + }, + "application/scvp-cv-request": { + "source": "iana", + "extensions": [ + "scq" + ] + }, + "application/scvp-cv-response": { + "source": "iana", + "extensions": [ + "scs" + ] + }, + "application/scvp-vp-request": { + "source": "iana", + "extensions": [ + "spq" + ] + }, + "application/scvp-vp-response": { + "source": "iana", + "extensions": [ + "spp" + ] + }, + "application/sdp": { + "source": "iana", + "extensions": [ + "sdp" + ] + }, + "application/secevent+jwt": { + "source": "iana" + }, + "application/senml+cbor": { + "source": "iana" + }, + "application/senml+json": { + "source": "iana", + "compressible": true + }, + "application/senml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "senmlx" + ] + }, + "application/senml-etch+cbor": { + "source": "iana" + }, + "application/senml-etch+json": { + "source": "iana", + "compressible": true + }, + "application/senml-exi": { + "source": "iana" + }, + "application/sensml+cbor": { + "source": "iana" + }, + "application/sensml+json": { + "source": "iana", + "compressible": true + }, + "application/sensml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sensmlx" + ] + }, + "application/sensml-exi": { + "source": "iana" + }, + "application/sep+xml": { + "source": "iana", + "compressible": true + }, + "application/sep-exi": { + "source": "iana" + }, + "application/session-info": { + "source": "iana" + }, + "application/set-payment": { + "source": "iana" + }, + "application/set-payment-initiation": { + "source": "iana", + "extensions": [ + "setpay" + ] + }, + "application/set-registration": { + "source": "iana" + }, + "application/set-registration-initiation": { + "source": "iana", + "extensions": [ + "setreg" + ] + }, + "application/sgml": { + "source": "iana" + }, + "application/sgml-open-catalog": { + "source": "iana" + }, + "application/shf+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "shf" + ] + }, + "application/sieve": { + "source": "iana", + "extensions": [ + "siv", + "sieve" + ] + }, + "application/simple-filter+xml": { + "source": "iana", + "compressible": true + }, + "application/simple-message-summary": { + "source": "iana" + }, + "application/simplesymbolcontainer": { + "source": "iana" + }, + "application/sipc": { + "source": "iana" + }, + "application/slate": { + "source": "iana" + }, + "application/smil": { + "source": "iana" + }, + "application/smil+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "smi", + "smil" + ] + }, + "application/smpte336m": { + "source": "iana" + }, + "application/soap+fastinfoset": { + "source": "iana" + }, + "application/soap+xml": { + "source": "iana", + "compressible": true + }, + "application/sparql-query": { + "source": "iana", + "extensions": [ + "rq" + ] + }, + "application/sparql-results+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "srx" + ] + }, + "application/spdx+json": { + "source": "iana", + "compressible": true + }, + "application/spirits-event+xml": { + "source": "iana", + "compressible": true + }, + "application/sql": { + "source": "iana" + }, + "application/srgs": { + "source": "iana", + "extensions": [ + "gram" + ] + }, + "application/srgs+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "grxml" + ] + }, + "application/sru+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sru" + ] + }, + "application/ssdl+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "ssdl" + ] + }, + "application/ssml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ssml" + ] + }, + "application/stix+json": { + "source": "iana", + "compressible": true + }, + "application/swid+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "swidtag" + ] + }, + "application/tamp-apex-update": { + "source": "iana" + }, + "application/tamp-apex-update-confirm": { + "source": "iana" + }, + "application/tamp-community-update": { + "source": "iana" + }, + "application/tamp-community-update-confirm": { + "source": "iana" + }, + "application/tamp-error": { + "source": "iana" + }, + "application/tamp-sequence-adjust": { + "source": "iana" + }, + "application/tamp-sequence-adjust-confirm": { + "source": "iana" + }, + "application/tamp-status-query": { + "source": "iana" + }, + "application/tamp-status-response": { + "source": "iana" + }, + "application/tamp-update": { + "source": "iana" + }, + "application/tamp-update-confirm": { + "source": "iana" + }, + "application/tar": { + "compressible": true + }, + "application/taxii+json": { + "source": "iana", + "compressible": true + }, + "application/td+json": { + "source": "iana", + "compressible": true + }, + "application/tei+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "tei", + "teicorpus" + ] + }, + "application/tetra_isi": { + "source": "iana" + }, + "application/thraud+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "tfi" + ] + }, + "application/timestamp-query": { + "source": "iana" + }, + "application/timestamp-reply": { + "source": "iana" + }, + "application/timestamped-data": { + "source": "iana", + "extensions": [ + "tsd" + ] + }, + "application/tlsrpt+gzip": { + "source": "iana" + }, + "application/tlsrpt+json": { + "source": "iana", + "compressible": true + }, + "application/tnauthlist": { + "source": "iana" + }, + "application/token-introspection+jwt": { + "source": "iana" + }, + "application/toml": { + "compressible": true, + "extensions": [ + "toml" + ] + }, + "application/trickle-ice-sdpfrag": { + "source": "iana" + }, + "application/trig": { + "source": "iana", + "extensions": [ + "trig" + ] + }, + "application/ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ttml" + ] + }, + "application/tve-trigger": { + "source": "iana" + }, + "application/tzif": { + "source": "iana" + }, + "application/tzif-leap": { + "source": "iana" + }, + "application/ubjson": { + "compressible": false, + "extensions": [ + "ubj" + ] + }, + "application/ulpfec": { + "source": "iana" + }, + "application/urc-grpsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/urc-ressheet+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "rsheet" + ] + }, + "application/urc-targetdesc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "td" + ] + }, + "application/urc-uisocketdesc+xml": { + "source": "iana", + "compressible": true + }, + "application/vcard+json": { + "source": "iana", + "compressible": true + }, + "application/vcard+xml": { + "source": "iana", + "compressible": true + }, + "application/vemmi": { + "source": "iana" + }, + "application/vividence.scriptfile": { + "source": "apache" + }, + "application/vnd.1000minds.decision-model+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "1km" + ] + }, + "application/vnd.3gpp-prose+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-prose-pc3ch+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp-v2x-local-service-information": { + "source": "iana" + }, + "application/vnd.3gpp.5gnas": { + "source": "iana" + }, + "application/vnd.3gpp.access-transfer-events+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.bsf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gmop+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.gtpc": { + "source": "iana" + }, + "application/vnd.3gpp.interworking-data": { + "source": "iana" + }, + "application/vnd.3gpp.lpp": { + "source": "iana" + }, + "application/vnd.3gpp.mc-signalling-ear": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-payload": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-signalling": { + "source": "iana" + }, + "application/vnd.3gpp.mcdata-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcdata-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-floor-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-signed+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-ue-init-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcptt-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-command+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-affiliation-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-location-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-mbms-usage-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-service-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-transmission-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-ue-config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mcvideo-user-profile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.mid-call+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ngap": { + "source": "iana" + }, + "application/vnd.3gpp.pfcp": { + "source": "iana" + }, + "application/vnd.3gpp.pic-bw-large": { + "source": "iana", + "extensions": [ + "plb" + ] + }, + "application/vnd.3gpp.pic-bw-small": { + "source": "iana", + "extensions": [ + "psb" + ] + }, + "application/vnd.3gpp.pic-bw-var": { + "source": "iana", + "extensions": [ + "pvb" + ] + }, + "application/vnd.3gpp.s1ap": { + "source": "iana" + }, + "application/vnd.3gpp.sms": { + "source": "iana" + }, + "application/vnd.3gpp.sms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-ext+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.srvcc-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.state-and-event-info+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp.ussd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.bcmcsinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.3gpp2.sms": { + "source": "iana" + }, + "application/vnd.3gpp2.tcap": { + "source": "iana", + "extensions": [ + "tcap" + ] + }, + "application/vnd.3lightssoftware.imagescal": { + "source": "iana" + }, + "application/vnd.3m.post-it-notes": { + "source": "iana", + "extensions": [ + "pwn" + ] + }, + "application/vnd.accpac.simply.aso": { + "source": "iana", + "extensions": [ + "aso" + ] + }, + "application/vnd.accpac.simply.imp": { + "source": "iana", + "extensions": [ + "imp" + ] + }, + "application/vnd.acucobol": { + "source": "iana", + "extensions": [ + "acu" + ] + }, + "application/vnd.acucorp": { + "source": "iana", + "extensions": [ + "atc", + "acutc" + ] + }, + "application/vnd.adobe.air-application-installer-package+zip": { + "source": "apache", + "compressible": false, + "extensions": [ + "air" + ] + }, + "application/vnd.adobe.flash.movie": { + "source": "iana" + }, + "application/vnd.adobe.formscentral.fcdt": { + "source": "iana", + "extensions": [ + "fcdt" + ] + }, + "application/vnd.adobe.fxp": { + "source": "iana", + "extensions": [ + "fxp", + "fxpl" + ] + }, + "application/vnd.adobe.partial-upload": { + "source": "iana" + }, + "application/vnd.adobe.xdp+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xdp" + ] + }, + "application/vnd.adobe.xfdf": { + "source": "iana", + "extensions": [ + "xfdf" + ] + }, + "application/vnd.aether.imp": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata": { + "source": "iana" + }, + "application/vnd.afpc.afplinedata-pagedef": { + "source": "iana" + }, + "application/vnd.afpc.cmoca-cmresource": { + "source": "iana" + }, + "application/vnd.afpc.foca-charset": { + "source": "iana" + }, + "application/vnd.afpc.foca-codedfont": { + "source": "iana" + }, + "application/vnd.afpc.foca-codepage": { + "source": "iana" + }, + "application/vnd.afpc.modca": { + "source": "iana" + }, + "application/vnd.afpc.modca-cmtable": { + "source": "iana" + }, + "application/vnd.afpc.modca-formdef": { + "source": "iana" + }, + "application/vnd.afpc.modca-mediummap": { + "source": "iana" + }, + "application/vnd.afpc.modca-objectcontainer": { + "source": "iana" + }, + "application/vnd.afpc.modca-overlay": { + "source": "iana" + }, + "application/vnd.afpc.modca-pagesegment": { + "source": "iana" + }, + "application/vnd.age": { + "source": "iana", + "extensions": [ + "age" + ] + }, + "application/vnd.ah-barcode": { + "source": "iana" + }, + "application/vnd.ahead.space": { + "source": "iana", + "extensions": [ + "ahead" + ] + }, + "application/vnd.airzip.filesecure.azf": { + "source": "iana", + "extensions": [ + "azf" + ] + }, + "application/vnd.airzip.filesecure.azs": { + "source": "iana", + "extensions": [ + "azs" + ] + }, + "application/vnd.amadeus+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.amazon.ebook": { + "source": "apache", + "extensions": [ + "azw" + ] + }, + "application/vnd.amazon.mobi8-ebook": { + "source": "iana" + }, + "application/vnd.americandynamics.acc": { + "source": "iana", + "extensions": [ + "acc" + ] + }, + "application/vnd.amiga.ami": { + "source": "iana", + "extensions": [ + "ami" + ] + }, + "application/vnd.amundsen.maze+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.android.ota": { + "source": "iana" + }, + "application/vnd.android.package-archive": { + "source": "apache", + "compressible": false, + "extensions": [ + "apk" + ] + }, + "application/vnd.anki": { + "source": "iana" + }, + "application/vnd.anser-web-certificate-issue-initiation": { + "source": "iana", + "extensions": [ + "cii" + ] + }, + "application/vnd.anser-web-funds-transfer-initiation": { + "source": "apache", + "extensions": [ + "fti" + ] + }, + "application/vnd.antix.game-component": { + "source": "iana", + "extensions": [ + "atx" + ] + }, + "application/vnd.apache.arrow.file": { + "source": "iana" + }, + "application/vnd.apache.arrow.stream": { + "source": "iana" + }, + "application/vnd.apache.thrift.binary": { + "source": "iana" + }, + "application/vnd.apache.thrift.compact": { + "source": "iana" + }, + "application/vnd.apache.thrift.json": { + "source": "iana" + }, + "application/vnd.api+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.aplextor.warrp+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apothekende.reservation+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.apple.installer+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mpkg" + ] + }, + "application/vnd.apple.keynote": { + "source": "iana", + "extensions": [ + "key" + ] + }, + "application/vnd.apple.mpegurl": { + "source": "iana", + "extensions": [ + "m3u8" + ] + }, + "application/vnd.apple.numbers": { + "source": "iana", + "extensions": [ + "numbers" + ] + }, + "application/vnd.apple.pages": { + "source": "iana", + "extensions": [ + "pages" + ] + }, + "application/vnd.apple.pkpass": { + "compressible": false, + "extensions": [ + "pkpass" + ] + }, + "application/vnd.arastra.swi": { + "source": "iana" + }, + "application/vnd.aristanetworks.swi": { + "source": "iana", + "extensions": [ + "swi" + ] + }, + "application/vnd.artisan+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.artsquare": { + "source": "iana" + }, + "application/vnd.astraea-software.iota": { + "source": "iana", + "extensions": [ + "iota" + ] + }, + "application/vnd.audiograph": { + "source": "iana", + "extensions": [ + "aep" + ] + }, + "application/vnd.autopackage": { + "source": "iana" + }, + "application/vnd.avalon+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.avistar+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.balsamiq.bmml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "bmml" + ] + }, + "application/vnd.balsamiq.bmpr": { + "source": "iana" + }, + "application/vnd.banana-accounting": { + "source": "iana" + }, + "application/vnd.bbf.usp.error": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg": { + "source": "iana" + }, + "application/vnd.bbf.usp.msg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bekitzur-stech+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.bint.med-content": { + "source": "iana" + }, + "application/vnd.biopax.rdf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.blink-idb-value-wrapper": { + "source": "iana" + }, + "application/vnd.blueice.multipass": { + "source": "iana", + "extensions": [ + "mpm" + ] + }, + "application/vnd.bluetooth.ep.oob": { + "source": "iana" + }, + "application/vnd.bluetooth.le.oob": { + "source": "iana" + }, + "application/vnd.bmi": { + "source": "iana", + "extensions": [ + "bmi" + ] + }, + "application/vnd.bpf": { + "source": "iana" + }, + "application/vnd.bpf3": { + "source": "iana" + }, + "application/vnd.businessobjects": { + "source": "iana", + "extensions": [ + "rep" + ] + }, + "application/vnd.byu.uapi+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cab-jscript": { + "source": "iana" + }, + "application/vnd.canon-cpdl": { + "source": "iana" + }, + "application/vnd.canon-lips": { + "source": "iana" + }, + "application/vnd.capasystems-pg+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cendio.thinlinc.clientconf": { + "source": "iana" + }, + "application/vnd.century-systems.tcp_stream": { + "source": "iana" + }, + "application/vnd.chemdraw+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "cdxml" + ] + }, + "application/vnd.chess-pgn": { + "source": "iana" + }, + "application/vnd.chipnuts.karaoke-mmd": { + "source": "iana", + "extensions": [ + "mmd" + ] + }, + "application/vnd.ciedi": { + "source": "iana" + }, + "application/vnd.cinderella": { + "source": "iana", + "extensions": [ + "cdy" + ] + }, + "application/vnd.cirpack.isdn-ext": { + "source": "iana" + }, + "application/vnd.citationstyles.style+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "csl" + ] + }, + "application/vnd.claymore": { + "source": "iana", + "extensions": [ + "cla" + ] + }, + "application/vnd.cloanto.rp9": { + "source": "iana", + "extensions": [ + "rp9" + ] + }, + "application/vnd.clonk.c4group": { + "source": "iana", + "extensions": [ + "c4g", + "c4d", + "c4f", + "c4p", + "c4u" + ] + }, + "application/vnd.cluetrust.cartomobile-config": { + "source": "iana", + "extensions": [ + "c11amc" + ] + }, + "application/vnd.cluetrust.cartomobile-config-pkg": { + "source": "iana", + "extensions": [ + "c11amz" + ] + }, + "application/vnd.coffeescript": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.document-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.presentation-template": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet": { + "source": "iana" + }, + "application/vnd.collabio.xodocuments.spreadsheet-template": { + "source": "iana" + }, + "application/vnd.collection+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.doc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.collection.next+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.comicbook+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.comicbook-rar": { + "source": "iana" + }, + "application/vnd.commerce-battelle": { + "source": "iana" + }, + "application/vnd.commonspace": { + "source": "iana", + "extensions": [ + "csp" + ] + }, + "application/vnd.contact.cmsg": { + "source": "iana", + "extensions": [ + "cdbcmsg" + ] + }, + "application/vnd.coreos.ignition+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cosmocaller": { + "source": "iana", + "extensions": [ + "cmc" + ] + }, + "application/vnd.crick.clicker": { + "source": "iana", + "extensions": [ + "clkx" + ] + }, + "application/vnd.crick.clicker.keyboard": { + "source": "iana", + "extensions": [ + "clkk" + ] + }, + "application/vnd.crick.clicker.palette": { + "source": "iana", + "extensions": [ + "clkp" + ] + }, + "application/vnd.crick.clicker.template": { + "source": "iana", + "extensions": [ + "clkt" + ] + }, + "application/vnd.crick.clicker.wordbank": { + "source": "iana", + "extensions": [ + "clkw" + ] + }, + "application/vnd.criticaltools.wbs+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wbs" + ] + }, + "application/vnd.cryptii.pipe+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.crypto-shade-file": { + "source": "iana" + }, + "application/vnd.cryptomator.encrypted": { + "source": "iana" + }, + "application/vnd.cryptomator.vault": { + "source": "iana" + }, + "application/vnd.ctc-posml": { + "source": "iana", + "extensions": [ + "pml" + ] + }, + "application/vnd.ctct.ws+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cups-pdf": { + "source": "iana" + }, + "application/vnd.cups-postscript": { + "source": "iana" + }, + "application/vnd.cups-ppd": { + "source": "iana", + "extensions": [ + "ppd" + ] + }, + "application/vnd.cups-raster": { + "source": "iana" + }, + "application/vnd.cups-raw": { + "source": "iana" + }, + "application/vnd.curl": { + "source": "iana" + }, + "application/vnd.curl.car": { + "source": "apache", + "extensions": [ + "car" + ] + }, + "application/vnd.curl.pcurl": { + "source": "apache", + "extensions": [ + "pcurl" + ] + }, + "application/vnd.cyan.dean.root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.cybank": { + "source": "iana" + }, + "application/vnd.cyclonedx+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.cyclonedx+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.d2l.coursepackage1p0+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.d3m-dataset": { + "source": "iana" + }, + "application/vnd.d3m-problem": { + "source": "iana" + }, + "application/vnd.dart": { + "source": "iana", + "compressible": true, + "extensions": [ + "dart" + ] + }, + "application/vnd.data-vision.rdz": { + "source": "iana", + "extensions": [ + "rdz" + ] + }, + "application/vnd.datapackage+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dataresource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dbf": { + "source": "iana", + "extensions": [ + "dbf" + ] + }, + "application/vnd.debian.binary-package": { + "source": "iana" + }, + "application/vnd.dece.data": { + "source": "iana", + "extensions": [ + "uvf", + "uvvf", + "uvd", + "uvvd" + ] + }, + "application/vnd.dece.ttml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "uvt", + "uvvt" + ] + }, + "application/vnd.dece.unspecified": { + "source": "iana", + "extensions": [ + "uvx", + "uvvx" + ] + }, + "application/vnd.dece.zip": { + "source": "iana", + "extensions": [ + "uvz", + "uvvz" + ] + }, + "application/vnd.denovo.fcselayout-link": { + "source": "iana", + "extensions": [ + "fe_launch" + ] + }, + "application/vnd.desmume.movie": { + "source": "iana" + }, + "application/vnd.dir-bi.plate-dl-nosuffix": { + "source": "iana" + }, + "application/vnd.dm.delegation+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dna": { + "source": "iana", + "extensions": [ + "dna" + ] + }, + "application/vnd.document+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.dolby.mlp": { + "source": "apache", + "extensions": [ + "mlp" + ] + }, + "application/vnd.dolby.mobile.1": { + "source": "iana" + }, + "application/vnd.dolby.mobile.2": { + "source": "iana" + }, + "application/vnd.doremir.scorecloud-binary-document": { + "source": "iana" + }, + "application/vnd.dpgraph": { + "source": "iana", + "extensions": [ + "dpg" + ] + }, + "application/vnd.dreamfactory": { + "source": "iana", + "extensions": [ + "dfac" + ] + }, + "application/vnd.drive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ds-keypoint": { + "source": "apache", + "extensions": [ + "kpxx" + ] + }, + "application/vnd.dtg.local": { + "source": "iana" + }, + "application/vnd.dtg.local.flash": { + "source": "iana" + }, + "application/vnd.dtg.local.html": { + "source": "iana" + }, + "application/vnd.dvb.ait": { + "source": "iana", + "extensions": [ + "ait" + ] + }, + "application/vnd.dvb.dvbisl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.dvbj": { + "source": "iana" + }, + "application/vnd.dvb.esgcontainer": { + "source": "iana" + }, + "application/vnd.dvb.ipdcdftnotifaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgaccess2": { + "source": "iana" + }, + "application/vnd.dvb.ipdcesgpdd": { + "source": "iana" + }, + "application/vnd.dvb.ipdcroaming": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-base": { + "source": "iana" + }, + "application/vnd.dvb.iptv.alfec-enhancement": { + "source": "iana" + }, + "application/vnd.dvb.notif-aggregate-root+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-container+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-generic+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-msglist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-ia-registration-response+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.notif-init+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.dvb.pfr": { + "source": "iana" + }, + "application/vnd.dvb.service": { + "source": "iana", + "extensions": [ + "svc" + ] + }, + "application/vnd.dxr": { + "source": "iana" + }, + "application/vnd.dynageo": { + "source": "iana", + "extensions": [ + "geo" + ] + }, + "application/vnd.dzr": { + "source": "iana" + }, + "application/vnd.easykaraoke.cdgdownload": { + "source": "iana" + }, + "application/vnd.ecdis-update": { + "source": "iana" + }, + "application/vnd.ecip.rlp": { + "source": "iana" + }, + "application/vnd.eclipse.ditto+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ecowin.chart": { + "source": "iana", + "extensions": [ + "mag" + ] + }, + "application/vnd.ecowin.filerequest": { + "source": "iana" + }, + "application/vnd.ecowin.fileupdate": { + "source": "iana" + }, + "application/vnd.ecowin.series": { + "source": "iana" + }, + "application/vnd.ecowin.seriesrequest": { + "source": "iana" + }, + "application/vnd.ecowin.seriesupdate": { + "source": "iana" + }, + "application/vnd.efi.img": { + "source": "iana" + }, + "application/vnd.efi.iso": { + "source": "iana" + }, + "application/vnd.emclient.accessrequest+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.enliven": { + "source": "iana", + "extensions": [ + "nml" + ] + }, + "application/vnd.enphase.envoy": { + "source": "iana" + }, + "application/vnd.eprints.data+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.epson.esf": { + "source": "iana", + "extensions": [ + "esf" + ] + }, + "application/vnd.epson.msf": { + "source": "iana", + "extensions": [ + "msf" + ] + }, + "application/vnd.epson.quickanime": { + "source": "iana", + "extensions": [ + "qam" + ] + }, + "application/vnd.epson.salt": { + "source": "iana", + "extensions": [ + "slt" + ] + }, + "application/vnd.epson.ssf": { + "source": "iana", + "extensions": [ + "ssf" + ] + }, + "application/vnd.ericsson.quickcall": { + "source": "iana" + }, + "application/vnd.espass-espass+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.eszigno3+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "es3", + "et3" + ] + }, + "application/vnd.etsi.aoc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.asic-e+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.asic-s+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.etsi.cug+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvcommand+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-bc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-cod+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsad-npvr+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvservice+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvsync+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.iptvueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mcid+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.mheg5": { + "source": "iana" + }, + "application/vnd.etsi.overload-control-policy-dataset+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.pstn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.sci+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.simservs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.timestamp-token": { + "source": "iana" + }, + "application/vnd.etsi.tsl+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.etsi.tsl.der": { + "source": "iana" + }, + "application/vnd.eu.kasparian.car+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.eudora.data": { + "source": "iana" + }, + "application/vnd.evolv.ecig.profile": { + "source": "iana" + }, + "application/vnd.evolv.ecig.settings": { + "source": "iana" + }, + "application/vnd.evolv.ecig.theme": { + "source": "iana" + }, + "application/vnd.exstream-empower+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.exstream-package": { + "source": "iana" + }, + "application/vnd.ezpix-album": { + "source": "iana", + "extensions": [ + "ez2" + ] + }, + "application/vnd.ezpix-package": { + "source": "iana", + "extensions": [ + "ez3" + ] + }, + "application/vnd.f-secure.mobile": { + "source": "iana" + }, + "application/vnd.familysearch.gedcom+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.fastcopy-disk-image": { + "source": "iana" + }, + "application/vnd.fdf": { + "source": "iana", + "extensions": [ + "fdf" + ] + }, + "application/vnd.fdsn.mseed": { + "source": "iana", + "extensions": [ + "mseed" + ] + }, + "application/vnd.fdsn.seed": { + "source": "iana", + "extensions": [ + "seed", + "dataless" + ] + }, + "application/vnd.ffsns": { + "source": "iana" + }, + "application/vnd.ficlab.flb+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.filmit.zfc": { + "source": "iana" + }, + "application/vnd.fints": { + "source": "iana" + }, + "application/vnd.firemonkeys.cloudcell": { + "source": "iana" + }, + "application/vnd.flographit": { + "source": "iana", + "extensions": [ + "gph" + ] + }, + "application/vnd.fluxtime.clip": { + "source": "iana", + "extensions": [ + "ftc" + ] + }, + "application/vnd.font-fontforge-sfd": { + "source": "iana" + }, + "application/vnd.framemaker": { + "source": "iana", + "extensions": [ + "fm", + "frame", + "maker", + "book" + ] + }, + "application/vnd.frogans.fnc": { + "source": "iana", + "extensions": [ + "fnc" + ] + }, + "application/vnd.frogans.ltf": { + "source": "iana", + "extensions": [ + "ltf" + ] + }, + "application/vnd.fsc.weblaunch": { + "source": "iana", + "extensions": [ + "fsc" + ] + }, + "application/vnd.fujifilm.fb.docuworks": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.binder": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujifilm.fb.jfi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.fujitsu.oasys": { + "source": "iana", + "extensions": [ + "oas" + ] + }, + "application/vnd.fujitsu.oasys2": { + "source": "iana", + "extensions": [ + "oa2" + ] + }, + "application/vnd.fujitsu.oasys3": { + "source": "iana", + "extensions": [ + "oa3" + ] + }, + "application/vnd.fujitsu.oasysgp": { + "source": "iana", + "extensions": [ + "fg5" + ] + }, + "application/vnd.fujitsu.oasysprs": { + "source": "iana", + "extensions": [ + "bh2" + ] + }, + "application/vnd.fujixerox.art-ex": { + "source": "iana" + }, + "application/vnd.fujixerox.art4": { + "source": "iana" + }, + "application/vnd.fujixerox.ddd": { + "source": "iana", + "extensions": [ + "ddd" + ] + }, + "application/vnd.fujixerox.docuworks": { + "source": "iana", + "extensions": [ + "xdw" + ] + }, + "application/vnd.fujixerox.docuworks.binder": { + "source": "iana", + "extensions": [ + "xbd" + ] + }, + "application/vnd.fujixerox.docuworks.container": { + "source": "iana" + }, + "application/vnd.fujixerox.hbpl": { + "source": "iana" + }, + "application/vnd.fut-misnet": { + "source": "iana" + }, + "application/vnd.futoin+cbor": { + "source": "iana" + }, + "application/vnd.futoin+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.fuzzysheet": { + "source": "iana", + "extensions": [ + "fzs" + ] + }, + "application/vnd.genomatix.tuxedo": { + "source": "iana", + "extensions": [ + "txd" + ] + }, + "application/vnd.gentics.grd+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geo+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.geocube+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.geogebra.file": { + "source": "iana", + "extensions": [ + "ggb" + ] + }, + "application/vnd.geogebra.slides": { + "source": "iana" + }, + "application/vnd.geogebra.tool": { + "source": "iana", + "extensions": [ + "ggt" + ] + }, + "application/vnd.geometry-explorer": { + "source": "iana", + "extensions": [ + "gex", + "gre" + ] + }, + "application/vnd.geonext": { + "source": "iana", + "extensions": [ + "gxt" + ] + }, + "application/vnd.geoplan": { + "source": "iana", + "extensions": [ + "g2w" + ] + }, + "application/vnd.geospace": { + "source": "iana", + "extensions": [ + "g3w" + ] + }, + "application/vnd.gerber": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt": { + "source": "iana" + }, + "application/vnd.globalplatform.card-content-mgt-response": { + "source": "iana" + }, + "application/vnd.gmx": { + "source": "iana", + "extensions": [ + "gmx" + ] + }, + "application/vnd.google-apps.document": { + "compressible": false, + "extensions": [ + "gdoc" + ] + }, + "application/vnd.google-apps.presentation": { + "compressible": false, + "extensions": [ + "gslides" + ] + }, + "application/vnd.google-apps.spreadsheet": { + "compressible": false, + "extensions": [ + "gsheet" + ] + }, + "application/vnd.google-earth.kml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "kml" + ] + }, + "application/vnd.google-earth.kmz": { + "source": "iana", + "compressible": false, + "extensions": [ + "kmz" + ] + }, + "application/vnd.gov.sk.e-form+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.gov.sk.e-form+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.gov.sk.xmldatacontainer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.grafeq": { + "source": "iana", + "extensions": [ + "gqf", + "gqs" + ] + }, + "application/vnd.gridmp": { + "source": "iana" + }, + "application/vnd.groove-account": { + "source": "iana", + "extensions": [ + "gac" + ] + }, + "application/vnd.groove-help": { + "source": "iana", + "extensions": [ + "ghf" + ] + }, + "application/vnd.groove-identity-message": { + "source": "iana", + "extensions": [ + "gim" + ] + }, + "application/vnd.groove-injector": { + "source": "iana", + "extensions": [ + "grv" + ] + }, + "application/vnd.groove-tool-message": { + "source": "iana", + "extensions": [ + "gtm" + ] + }, + "application/vnd.groove-tool-template": { + "source": "iana", + "extensions": [ + "tpl" + ] + }, + "application/vnd.groove-vcard": { + "source": "iana", + "extensions": [ + "vcg" + ] + }, + "application/vnd.hal+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hal+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "hal" + ] + }, + "application/vnd.handheld-entertainment+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "zmm" + ] + }, + "application/vnd.hbci": { + "source": "iana", + "extensions": [ + "hbci" + ] + }, + "application/vnd.hc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hcl-bireports": { + "source": "iana" + }, + "application/vnd.hdt": { + "source": "iana" + }, + "application/vnd.heroku+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hhe.lesson-player": { + "source": "iana", + "extensions": [ + "les" + ] + }, + "application/vnd.hl7cda+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hl7v2+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.hp-hpgl": { + "source": "iana", + "extensions": [ + "hpgl" + ] + }, + "application/vnd.hp-hpid": { + "source": "iana", + "extensions": [ + "hpid" + ] + }, + "application/vnd.hp-hps": { + "source": "iana", + "extensions": [ + "hps" + ] + }, + "application/vnd.hp-jlyt": { + "source": "iana", + "extensions": [ + "jlt" + ] + }, + "application/vnd.hp-pcl": { + "source": "iana", + "extensions": [ + "pcl" + ] + }, + "application/vnd.hp-pclxl": { + "source": "iana", + "extensions": [ + "pclxl" + ] + }, + "application/vnd.httphone": { + "source": "iana" + }, + "application/vnd.hydrostatix.sof-data": { + "source": "iana", + "extensions": [ + "sfd-hdstx" + ] + }, + "application/vnd.hyper+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyper-item+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hyperdrive+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.hzn-3d-crossword": { + "source": "iana" + }, + "application/vnd.ibm.afplinedata": { + "source": "iana" + }, + "application/vnd.ibm.electronic-media": { + "source": "iana" + }, + "application/vnd.ibm.minipay": { + "source": "iana", + "extensions": [ + "mpy" + ] + }, + "application/vnd.ibm.modcap": { + "source": "iana", + "extensions": [ + "afp", + "listafp", + "list3820" + ] + }, + "application/vnd.ibm.rights-management": { + "source": "iana", + "extensions": [ + "irm" + ] + }, + "application/vnd.ibm.secure-container": { + "source": "iana", + "extensions": [ + "sc" + ] + }, + "application/vnd.iccprofile": { + "source": "iana", + "extensions": [ + "icc", + "icm" + ] + }, + "application/vnd.ieee.1905": { + "source": "iana" + }, + "application/vnd.igloader": { + "source": "iana", + "extensions": [ + "igl" + ] + }, + "application/vnd.imagemeter.folder+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.imagemeter.image+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.immervision-ivp": { + "source": "iana", + "extensions": [ + "ivp" + ] + }, + "application/vnd.immervision-ivu": { + "source": "iana", + "extensions": [ + "ivu" + ] + }, + "application/vnd.ims.imsccv1p1": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p2": { + "source": "iana" + }, + "application/vnd.ims.imsccv1p3": { + "source": "iana" + }, + "application/vnd.ims.lis.v2.result+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolconsumerprofile+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolproxy.id+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ims.lti.v2.toolsettings.simple+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.informedcontrol.rms+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.informix-visionary": { + "source": "iana" + }, + "application/vnd.infotech.project": { + "source": "iana" + }, + "application/vnd.infotech.project+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.innopath.wamp.notification": { + "source": "iana" + }, + "application/vnd.insors.igm": { + "source": "iana", + "extensions": [ + "igm" + ] + }, + "application/vnd.intercon.formnet": { + "source": "iana", + "extensions": [ + "xpw", + "xpx" + ] + }, + "application/vnd.intergeo": { + "source": "iana", + "extensions": [ + "i2g" + ] + }, + "application/vnd.intertrust.digibox": { + "source": "iana" + }, + "application/vnd.intertrust.nncp": { + "source": "iana" + }, + "application/vnd.intu.qbo": { + "source": "iana", + "extensions": [ + "qbo" + ] + }, + "application/vnd.intu.qfx": { + "source": "iana", + "extensions": [ + "qfx" + ] + }, + "application/vnd.iptc.g2.catalogitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.conceptitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.knowledgeitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.newsmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.packageitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.iptc.g2.planningitem+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ipunplugged.rcprofile": { + "source": "iana", + "extensions": [ + "rcprofile" + ] + }, + "application/vnd.irepository.package+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "irp" + ] + }, + "application/vnd.is-xpr": { + "source": "iana", + "extensions": [ + "xpr" + ] + }, + "application/vnd.isac.fcs": { + "source": "iana", + "extensions": [ + "fcs" + ] + }, + "application/vnd.iso11783-10+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.jam": { + "source": "iana", + "extensions": [ + "jam" + ] + }, + "application/vnd.japannet-directory-service": { + "source": "iana" + }, + "application/vnd.japannet-jpnstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-payment-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-registration": { + "source": "iana" + }, + "application/vnd.japannet-registration-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-setstore-wakeup": { + "source": "iana" + }, + "application/vnd.japannet-verification": { + "source": "iana" + }, + "application/vnd.japannet-verification-wakeup": { + "source": "iana" + }, + "application/vnd.jcp.javame.midlet-rms": { + "source": "iana", + "extensions": [ + "rms" + ] + }, + "application/vnd.jisp": { + "source": "iana", + "extensions": [ + "jisp" + ] + }, + "application/vnd.joost.joda-archive": { + "source": "iana", + "extensions": [ + "joda" + ] + }, + "application/vnd.jsk.isdn-ngn": { + "source": "iana" + }, + "application/vnd.kahootz": { + "source": "iana", + "extensions": [ + "ktz", + "ktr" + ] + }, + "application/vnd.kde.karbon": { + "source": "iana", + "extensions": [ + "karbon" + ] + }, + "application/vnd.kde.kchart": { + "source": "iana", + "extensions": [ + "chrt" + ] + }, + "application/vnd.kde.kformula": { + "source": "iana", + "extensions": [ + "kfo" + ] + }, + "application/vnd.kde.kivio": { + "source": "iana", + "extensions": [ + "flw" + ] + }, + "application/vnd.kde.kontour": { + "source": "iana", + "extensions": [ + "kon" + ] + }, + "application/vnd.kde.kpresenter": { + "source": "iana", + "extensions": [ + "kpr", + "kpt" + ] + }, + "application/vnd.kde.kspread": { + "source": "iana", + "extensions": [ + "ksp" + ] + }, + "application/vnd.kde.kword": { + "source": "iana", + "extensions": [ + "kwd", + "kwt" + ] + }, + "application/vnd.kenameaapp": { + "source": "iana", + "extensions": [ + "htke" + ] + }, + "application/vnd.kidspiration": { + "source": "iana", + "extensions": [ + "kia" + ] + }, + "application/vnd.kinar": { + "source": "iana", + "extensions": [ + "kne", + "knp" + ] + }, + "application/vnd.koan": { + "source": "iana", + "extensions": [ + "skp", + "skd", + "skt", + "skm" + ] + }, + "application/vnd.kodak-descriptor": { + "source": "iana", + "extensions": [ + "sse" + ] + }, + "application/vnd.las": { + "source": "iana" + }, + "application/vnd.las.las+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.las.las+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "lasxml" + ] + }, + "application/vnd.laszip": { + "source": "iana" + }, + "application/vnd.leap+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.liberty-request+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.llamagraphics.life-balance.desktop": { + "source": "iana", + "extensions": [ + "lbd" + ] + }, + "application/vnd.llamagraphics.life-balance.exchange+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "lbe" + ] + }, + "application/vnd.logipipe.circuit+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.loom": { + "source": "iana" + }, + "application/vnd.lotus-1-2-3": { + "source": "iana", + "extensions": [ + "123" + ] + }, + "application/vnd.lotus-approach": { + "source": "iana", + "extensions": [ + "apr" + ] + }, + "application/vnd.lotus-freelance": { + "source": "iana", + "extensions": [ + "pre" + ] + }, + "application/vnd.lotus-notes": { + "source": "iana", + "extensions": [ + "nsf" + ] + }, + "application/vnd.lotus-organizer": { + "source": "iana", + "extensions": [ + "org" + ] + }, + "application/vnd.lotus-screencam": { + "source": "iana", + "extensions": [ + "scm" + ] + }, + "application/vnd.lotus-wordpro": { + "source": "iana", + "extensions": [ + "lwp" + ] + }, + "application/vnd.macports.portpkg": { + "source": "iana", + "extensions": [ + "portpkg" + ] + }, + "application/vnd.mapbox-vector-tile": { + "source": "iana", + "extensions": [ + "mvt" + ] + }, + "application/vnd.marlin.drm.actiontoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.conftoken+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.license+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.marlin.drm.mdcf": { + "source": "iana" + }, + "application/vnd.mason+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.maxar.archive.3tz+zip": { + "source": "iana", + "compressible": false + }, + "application/vnd.maxmind.maxmind-db": { + "source": "iana" + }, + "application/vnd.mcd": { + "source": "iana", + "extensions": [ + "mcd" + ] + }, + "application/vnd.medcalcdata": { + "source": "iana", + "extensions": [ + "mc1" + ] + }, + "application/vnd.mediastation.cdkey": { + "source": "iana", + "extensions": [ + "cdkey" + ] + }, + "application/vnd.meridian-slingshot": { + "source": "iana" + }, + "application/vnd.mfer": { + "source": "iana", + "extensions": [ + "mwf" + ] + }, + "application/vnd.mfmp": { + "source": "iana", + "extensions": [ + "mfm" + ] + }, + "application/vnd.micro+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.micrografx.flo": { + "source": "iana", + "extensions": [ + "flo" + ] + }, + "application/vnd.micrografx.igx": { + "source": "iana", + "extensions": [ + "igx" + ] + }, + "application/vnd.microsoft.portable-executable": { + "source": "iana" + }, + "application/vnd.microsoft.windows.thumbnail-cache": { + "source": "iana" + }, + "application/vnd.miele+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.mif": { + "source": "iana", + "extensions": [ + "mif" + ] + }, + "application/vnd.minisoft-hp3000-save": { + "source": "iana" + }, + "application/vnd.mitsubishi.misty-guard.trustweb": { + "source": "iana" + }, + "application/vnd.mobius.daf": { + "source": "iana", + "extensions": [ + "daf" + ] + }, + "application/vnd.mobius.dis": { + "source": "iana", + "extensions": [ + "dis" + ] + }, + "application/vnd.mobius.mbk": { + "source": "iana", + "extensions": [ + "mbk" + ] + }, + "application/vnd.mobius.mqy": { + "source": "iana", + "extensions": [ + "mqy" + ] + }, + "application/vnd.mobius.msl": { + "source": "iana", + "extensions": [ + "msl" + ] + }, + "application/vnd.mobius.plc": { + "source": "iana", + "extensions": [ + "plc" + ] + }, + "application/vnd.mobius.txf": { + "source": "iana", + "extensions": [ + "txf" + ] + }, + "application/vnd.mophun.application": { + "source": "iana", + "extensions": [ + "mpn" + ] + }, + "application/vnd.mophun.certificate": { + "source": "iana", + "extensions": [ + "mpc" + ] + }, + "application/vnd.motorola.flexsuite": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.adsi": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.fis": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.gotap": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.kmr": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.ttc": { + "source": "iana" + }, + "application/vnd.motorola.flexsuite.wem": { + "source": "iana" + }, + "application/vnd.motorola.iprm": { + "source": "iana" + }, + "application/vnd.mozilla.xul+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xul" + ] + }, + "application/vnd.ms-3mfdocument": { + "source": "iana" + }, + "application/vnd.ms-artgalry": { + "source": "iana", + "extensions": [ + "cil" + ] + }, + "application/vnd.ms-asf": { + "source": "iana" + }, + "application/vnd.ms-cab-compressed": { + "source": "iana", + "extensions": [ + "cab" + ] + }, + "application/vnd.ms-color.iccprofile": { + "source": "apache" + }, + "application/vnd.ms-excel": { + "source": "iana", + "compressible": false, + "extensions": [ + "xls", + "xlm", + "xla", + "xlc", + "xlt", + "xlw" + ] + }, + "application/vnd.ms-excel.addin.macroenabled.12": { + "source": "iana", + "extensions": [ + "xlam" + ] + }, + "application/vnd.ms-excel.sheet.binary.macroenabled.12": { + "source": "iana", + "extensions": [ + "xlsb" + ] + }, + "application/vnd.ms-excel.sheet.macroenabled.12": { + "source": "iana", + "extensions": [ + "xlsm" + ] + }, + "application/vnd.ms-excel.template.macroenabled.12": { + "source": "iana", + "extensions": [ + "xltm" + ] + }, + "application/vnd.ms-fontobject": { + "source": "iana", + "compressible": true, + "extensions": [ + "eot" + ] + }, + "application/vnd.ms-htmlhelp": { + "source": "iana", + "extensions": [ + "chm" + ] + }, + "application/vnd.ms-ims": { + "source": "iana", + "extensions": [ + "ims" + ] + }, + "application/vnd.ms-lrm": { + "source": "iana", + "extensions": [ + "lrm" + ] + }, + "application/vnd.ms-office.activex+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-officetheme": { + "source": "iana", + "extensions": [ + "thmx" + ] + }, + "application/vnd.ms-opentype": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-outlook": { + "compressible": false, + "extensions": [ + "msg" + ] + }, + "application/vnd.ms-package.obfuscated-opentype": { + "source": "apache" + }, + "application/vnd.ms-pki.seccat": { + "source": "apache", + "extensions": [ + "cat" + ] + }, + "application/vnd.ms-pki.stl": { + "source": "apache", + "extensions": [ + "stl" + ] + }, + "application/vnd.ms-playready.initiator+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-powerpoint": { + "source": "iana", + "compressible": false, + "extensions": [ + "ppt", + "pps", + "pot" + ] + }, + "application/vnd.ms-powerpoint.addin.macroenabled.12": { + "source": "iana", + "extensions": [ + "ppam" + ] + }, + "application/vnd.ms-powerpoint.presentation.macroenabled.12": { + "source": "iana", + "extensions": [ + "pptm" + ] + }, + "application/vnd.ms-powerpoint.slide.macroenabled.12": { + "source": "iana", + "extensions": [ + "sldm" + ] + }, + "application/vnd.ms-powerpoint.slideshow.macroenabled.12": { + "source": "iana", + "extensions": [ + "ppsm" + ] + }, + "application/vnd.ms-powerpoint.template.macroenabled.12": { + "source": "iana", + "extensions": [ + "potm" + ] + }, + "application/vnd.ms-printdevicecapabilities+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-printing.printticket+xml": { + "source": "apache", + "compressible": true + }, + "application/vnd.ms-printschematicket+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.ms-project": { + "source": "iana", + "extensions": [ + "mpp", + "mpt" + ] + }, + "application/vnd.ms-tnef": { + "source": "iana" + }, + "application/vnd.ms-windows.devicepairing": { + "source": "iana" + }, + "application/vnd.ms-windows.nwprinting.oob": { + "source": "iana" + }, + "application/vnd.ms-windows.printerpairing": { + "source": "iana" + }, + "application/vnd.ms-windows.wsd.oob": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.lic-resp": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-chlg-req": { + "source": "iana" + }, + "application/vnd.ms-wmdrm.meter-resp": { + "source": "iana" + }, + "application/vnd.ms-word.document.macroenabled.12": { + "source": "iana", + "extensions": [ + "docm" + ] + }, + "application/vnd.ms-word.template.macroenabled.12": { + "source": "iana", + "extensions": [ + "dotm" + ] + }, + "application/vnd.ms-works": { + "source": "iana", + "extensions": [ + "wps", + "wks", + "wcm", + "wdb" + ] + }, + "application/vnd.ms-wpl": { + "source": "iana", + "extensions": [ + "wpl" + ] + }, + "application/vnd.ms-xpsdocument": { + "source": "iana", + "compressible": false, + "extensions": [ + "xps" + ] + }, + "application/vnd.msa-disk-image": { + "source": "iana" + }, + "application/vnd.mseq": { + "source": "iana", + "extensions": [ + "mseq" + ] + }, + "application/vnd.msign": { + "source": "iana" + }, + "application/vnd.multiad.creator": { + "source": "iana" + }, + "application/vnd.multiad.creator.cif": { + "source": "iana" + }, + "application/vnd.music-niff": { + "source": "iana" + }, + "application/vnd.musician": { + "source": "iana", + "extensions": [ + "mus" + ] + }, + "application/vnd.muvee.style": { + "source": "iana", + "extensions": [ + "msty" + ] + }, + "application/vnd.mynfc": { + "source": "iana", + "extensions": [ + "taglet" + ] + }, + "application/vnd.nacamar.ybrid+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.ncd.control": { + "source": "iana" + }, + "application/vnd.ncd.reference": { + "source": "iana" + }, + "application/vnd.nearst.inv+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.nebumind.line": { + "source": "iana" + }, + "application/vnd.nervana": { + "source": "iana" + }, + "application/vnd.netfpx": { + "source": "iana" + }, + "application/vnd.neurolanguage.nlu": { + "source": "iana", + "extensions": [ + "nlu" + ] + }, + "application/vnd.nimn": { + "source": "iana" + }, + "application/vnd.nintendo.nitro.rom": { + "source": "iana" + }, + "application/vnd.nintendo.snes.rom": { + "source": "iana" + }, + "application/vnd.nitf": { + "source": "iana", + "extensions": [ + "ntf", + "nitf" + ] + }, + "application/vnd.noblenet-directory": { + "source": "iana", + "extensions": [ + "nnd" + ] + }, + "application/vnd.noblenet-sealer": { + "source": "iana", + "extensions": [ + "nns" + ] + }, + "application/vnd.noblenet-web": { + "source": "iana", + "extensions": [ + "nnw" + ] + }, + "application/vnd.nokia.catalogs": { + "source": "iana" + }, + "application/vnd.nokia.conml+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.conml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.iptv.config+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.isds-radio-presets": { + "source": "iana" + }, + "application/vnd.nokia.landmark+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.landmark+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.landmarkcollection+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.n-gage.ac+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "ac" + ] + }, + "application/vnd.nokia.n-gage.data": { + "source": "iana", + "extensions": [ + "ngdat" + ] + }, + "application/vnd.nokia.n-gage.symbian.install": { + "source": "iana", + "extensions": [ + "n-gage" + ] + }, + "application/vnd.nokia.ncd": { + "source": "iana" + }, + "application/vnd.nokia.pcd+wbxml": { + "source": "iana" + }, + "application/vnd.nokia.pcd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.nokia.radio-preset": { + "source": "iana", + "extensions": [ + "rpst" + ] + }, + "application/vnd.nokia.radio-presets": { + "source": "iana", + "extensions": [ + "rpss" + ] + }, + "application/vnd.novadigm.edm": { + "source": "iana", + "extensions": [ + "edm" + ] + }, + "application/vnd.novadigm.edx": { + "source": "iana", + "extensions": [ + "edx" + ] + }, + "application/vnd.novadigm.ext": { + "source": "iana", + "extensions": [ + "ext" + ] + }, + "application/vnd.ntt-local.content-share": { + "source": "iana" + }, + "application/vnd.ntt-local.file-transfer": { + "source": "iana" + }, + "application/vnd.ntt-local.ogw_remote-access": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_remote": { + "source": "iana" + }, + "application/vnd.ntt-local.sip-ta_tcp_stream": { + "source": "iana" + }, + "application/vnd.oasis.opendocument.chart": { + "source": "iana", + "extensions": [ + "odc" + ] + }, + "application/vnd.oasis.opendocument.chart-template": { + "source": "iana", + "extensions": [ + "otc" + ] + }, + "application/vnd.oasis.opendocument.database": { + "source": "iana", + "extensions": [ + "odb" + ] + }, + "application/vnd.oasis.opendocument.formula": { + "source": "iana", + "extensions": [ + "odf" + ] + }, + "application/vnd.oasis.opendocument.formula-template": { + "source": "iana", + "extensions": [ + "odft" + ] + }, + "application/vnd.oasis.opendocument.graphics": { + "source": "iana", + "compressible": false, + "extensions": [ + "odg" + ] + }, + "application/vnd.oasis.opendocument.graphics-template": { + "source": "iana", + "extensions": [ + "otg" + ] + }, + "application/vnd.oasis.opendocument.image": { + "source": "iana", + "extensions": [ + "odi" + ] + }, + "application/vnd.oasis.opendocument.image-template": { + "source": "iana", + "extensions": [ + "oti" + ] + }, + "application/vnd.oasis.opendocument.presentation": { + "source": "iana", + "compressible": false, + "extensions": [ + "odp" + ] + }, + "application/vnd.oasis.opendocument.presentation-template": { + "source": "iana", + "extensions": [ + "otp" + ] + }, + "application/vnd.oasis.opendocument.spreadsheet": { + "source": "iana", + "compressible": false, + "extensions": [ + "ods" + ] + }, + "application/vnd.oasis.opendocument.spreadsheet-template": { + "source": "iana", + "extensions": [ + "ots" + ] + }, + "application/vnd.oasis.opendocument.text": { + "source": "iana", + "compressible": false, + "extensions": [ + "odt" + ] + }, + "application/vnd.oasis.opendocument.text-master": { + "source": "iana", + "extensions": [ + "odm" + ] + }, + "application/vnd.oasis.opendocument.text-template": { + "source": "iana", + "extensions": [ + "ott" + ] + }, + "application/vnd.oasis.opendocument.text-web": { + "source": "iana", + "extensions": [ + "oth" + ] + }, + "application/vnd.obn": { + "source": "iana" + }, + "application/vnd.ocf+cbor": { + "source": "iana" + }, + "application/vnd.oci.image.manifest.v1+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oftn.l10n+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessdownload+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.contentaccessstreaming+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.cspg-hexbinary": { + "source": "iana" + }, + "application/vnd.oipf.dae.svg+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.dae.xhtml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.mippvcontrolmessage+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.pae.gem": { + "source": "iana" + }, + "application/vnd.oipf.spdiscovery+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.spdlist+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.ueprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oipf.userprofile+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.olpc-sugar": { + "source": "iana", + "extensions": [ + "xo" + ] + }, + "application/vnd.oma-scws-config": { + "source": "iana" + }, + "application/vnd.oma-scws-http-request": { + "source": "iana" + }, + "application/vnd.oma-scws-http-response": { + "source": "iana" + }, + "application/vnd.oma.bcast.associated-procedure-parameter+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.drm-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.imd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.ltkm": { + "source": "iana" + }, + "application/vnd.oma.bcast.notification+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.provisioningtrigger": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgboot": { + "source": "iana" + }, + "application/vnd.oma.bcast.sgdd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sgdu": { + "source": "iana" + }, + "application/vnd.oma.bcast.simple-symbol-container": { + "source": "iana" + }, + "application/vnd.oma.bcast.smartcard-trigger+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.sprov+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.bcast.stkm": { + "source": "iana" + }, + "application/vnd.oma.cab-address-book+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-feature-handler+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-pcc+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-subs-invite+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.cab-user-prefs+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.dcd": { + "source": "iana" + }, + "application/vnd.oma.dcdc": { + "source": "iana" + }, + "application/vnd.oma.dd2+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "dd2" + ] + }, + "application/vnd.oma.drm.risd+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.group-usage-list+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+cbor": { + "source": "iana" + }, + "application/vnd.oma.lwm2m+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.lwm2m+tlv": { + "source": "iana" + }, + "application/vnd.oma.pal+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.detailed-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.final-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.groups+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.invocation-descriptor+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.poc.optimized-progress-report+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.push": { + "source": "iana" + }, + "application/vnd.oma.scidm.messages+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oma.xcap-directory+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.omads-email+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-file+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omads-folder+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.omaloc-supl-init": { + "source": "iana" + }, + "application/vnd.onepager": { + "source": "iana" + }, + "application/vnd.onepagertamp": { + "source": "iana" + }, + "application/vnd.onepagertamx": { + "source": "iana" + }, + "application/vnd.onepagertat": { + "source": "iana" + }, + "application/vnd.onepagertatp": { + "source": "iana" + }, + "application/vnd.onepagertatx": { + "source": "iana" + }, + "application/vnd.openblox.game+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "obgx" + ] + }, + "application/vnd.openblox.game-binary": { + "source": "iana" + }, + "application/vnd.openeye.oeb": { + "source": "iana" + }, + "application/vnd.openofficeorg.extension": { + "source": "apache", + "extensions": [ + "oxt" + ] + }, + "application/vnd.openstreetmap.data+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "osm" + ] + }, + "application/vnd.opentimestamps.ots": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.custom-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.customxmlproperties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawing+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.extended-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation": { + "source": "iana", + "compressible": false, + "extensions": [ + "pptx" + ] + }, + "application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.presprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide": { + "source": "iana", + "extensions": [ + "sldx" + ] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slide+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow": { + "source": "iana", + "extensions": [ + "ppsx" + ] + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.tags+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.template": { + "source": "iana", + "extensions": [ + "potx" + ] + }, + "application/vnd.openxmlformats-officedocument.presentationml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": { + "source": "iana", + "compressible": false, + "extensions": [ + "xlsx" + ] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template": { + "source": "iana", + "extensions": [ + "xltx" + ] + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.theme+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.themeoverride+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.vmldrawing": { + "source": "iana" + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document": { + "source": "iana", + "compressible": false, + "extensions": [ + "docx" + ] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template": { + "source": "iana", + "extensions": [ + "dotx" + ] + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.core-properties+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.openxmlformats-package.relationships+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oracle.resource+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.orange.indata": { + "source": "iana" + }, + "application/vnd.osa.netdeploy": { + "source": "iana" + }, + "application/vnd.osgeo.mapguide.package": { + "source": "iana", + "extensions": [ + "mgp" + ] + }, + "application/vnd.osgi.bundle": { + "source": "iana" + }, + "application/vnd.osgi.dp": { + "source": "iana", + "extensions": [ + "dp" + ] + }, + "application/vnd.osgi.subsystem": { + "source": "iana", + "extensions": [ + "esa" + ] + }, + "application/vnd.otps.ct-kip+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.oxli.countgraph": { + "source": "iana" + }, + "application/vnd.pagerduty+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.palm": { + "source": "iana", + "extensions": [ + "pdb", + "pqa", + "oprc" + ] + }, + "application/vnd.panoply": { + "source": "iana" + }, + "application/vnd.paos.xml": { + "source": "iana" + }, + "application/vnd.patentdive": { + "source": "iana" + }, + "application/vnd.patientecommsdoc": { + "source": "iana" + }, + "application/vnd.pawaafile": { + "source": "iana", + "extensions": [ + "paw" + ] + }, + "application/vnd.pcos": { + "source": "iana" + }, + "application/vnd.pg.format": { + "source": "iana", + "extensions": [ + "str" + ] + }, + "application/vnd.pg.osasli": { + "source": "iana", + "extensions": [ + "ei6" + ] + }, + "application/vnd.piaccess.application-licence": { + "source": "iana" + }, + "application/vnd.picsel": { + "source": "iana", + "extensions": [ + "efif" + ] + }, + "application/vnd.pmi.widget": { + "source": "iana", + "extensions": [ + "wg" + ] + }, + "application/vnd.poc.group-advertisement+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.pocketlearn": { + "source": "iana", + "extensions": [ + "plf" + ] + }, + "application/vnd.powerbuilder6": { + "source": "iana", + "extensions": [ + "pbd" + ] + }, + "application/vnd.powerbuilder6-s": { + "source": "iana" + }, + "application/vnd.powerbuilder7": { + "source": "iana" + }, + "application/vnd.powerbuilder7-s": { + "source": "iana" + }, + "application/vnd.powerbuilder75": { + "source": "iana" + }, + "application/vnd.powerbuilder75-s": { + "source": "iana" + }, + "application/vnd.preminet": { + "source": "iana" + }, + "application/vnd.previewsystems.box": { + "source": "iana", + "extensions": [ + "box" + ] + }, + "application/vnd.proteus.magazine": { + "source": "iana", + "extensions": [ + "mgz" + ] + }, + "application/vnd.psfs": { + "source": "iana" + }, + "application/vnd.publishare-delta-tree": { + "source": "iana", + "extensions": [ + "qps" + ] + }, + "application/vnd.pvi.ptid1": { + "source": "iana", + "extensions": [ + "ptid" + ] + }, + "application/vnd.pwg-multiplexed": { + "source": "iana" + }, + "application/vnd.pwg-xhtml-print+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.qualcomm.brew-app-res": { + "source": "iana" + }, + "application/vnd.quarantainenet": { + "source": "iana" + }, + "application/vnd.quark.quarkxpress": { + "source": "iana", + "extensions": [ + "qxd", + "qxt", + "qwd", + "qwt", + "qxl", + "qxb" + ] + }, + "application/vnd.quobject-quoxdocument": { + "source": "iana" + }, + "application/vnd.radisys.moml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-conn+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-audit-stream+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-conf+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-base+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-detect+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-fax-sendrecv+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-group+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-speech+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.radisys.msml-dialog-transform+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.rainstor.data": { + "source": "iana" + }, + "application/vnd.rapid": { + "source": "iana" + }, + "application/vnd.rar": { + "source": "iana", + "extensions": [ + "rar" + ] + }, + "application/vnd.realvnc.bed": { + "source": "iana", + "extensions": [ + "bed" + ] + }, + "application/vnd.recordare.musicxml": { + "source": "iana", + "extensions": [ + "mxl" + ] + }, + "application/vnd.recordare.musicxml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "musicxml" + ] + }, + "application/vnd.renlearn.rlprint": { + "source": "iana" + }, + "application/vnd.resilient.logic": { + "source": "iana" + }, + "application/vnd.restful+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.rig.cryptonote": { + "source": "iana", + "extensions": [ + "cryptonote" + ] + }, + "application/vnd.rim.cod": { + "source": "apache", + "extensions": [ + "cod" + ] + }, + "application/vnd.rn-realmedia": { + "source": "apache", + "extensions": [ + "rm" + ] + }, + "application/vnd.rn-realmedia-vbr": { + "source": "apache", + "extensions": [ + "rmvb" + ] + }, + "application/vnd.route66.link66+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "link66" + ] + }, + "application/vnd.rs-274x": { + "source": "iana" + }, + "application/vnd.ruckus.download": { + "source": "iana" + }, + "application/vnd.s3sms": { + "source": "iana" + }, + "application/vnd.sailingtracker.track": { + "source": "iana", + "extensions": [ + "st" + ] + }, + "application/vnd.sar": { + "source": "iana" + }, + "application/vnd.sbm.cid": { + "source": "iana" + }, + "application/vnd.sbm.mid2": { + "source": "iana" + }, + "application/vnd.scribus": { + "source": "iana" + }, + "application/vnd.sealed.3df": { + "source": "iana" + }, + "application/vnd.sealed.csf": { + "source": "iana" + }, + "application/vnd.sealed.doc": { + "source": "iana" + }, + "application/vnd.sealed.eml": { + "source": "iana" + }, + "application/vnd.sealed.mht": { + "source": "iana" + }, + "application/vnd.sealed.net": { + "source": "iana" + }, + "application/vnd.sealed.ppt": { + "source": "iana" + }, + "application/vnd.sealed.tiff": { + "source": "iana" + }, + "application/vnd.sealed.xls": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.html": { + "source": "iana" + }, + "application/vnd.sealedmedia.softseal.pdf": { + "source": "iana" + }, + "application/vnd.seemail": { + "source": "iana", + "extensions": [ + "see" + ] + }, + "application/vnd.seis+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.sema": { + "source": "iana", + "extensions": [ + "sema" + ] + }, + "application/vnd.semd": { + "source": "iana", + "extensions": [ + "semd" + ] + }, + "application/vnd.semf": { + "source": "iana", + "extensions": [ + "semf" + ] + }, + "application/vnd.shade-save-file": { + "source": "iana" + }, + "application/vnd.shana.informed.formdata": { + "source": "iana", + "extensions": [ + "ifm" + ] + }, + "application/vnd.shana.informed.formtemplate": { + "source": "iana", + "extensions": [ + "itp" + ] + }, + "application/vnd.shana.informed.interchange": { + "source": "iana", + "extensions": [ + "iif" + ] + }, + "application/vnd.shana.informed.package": { + "source": "iana", + "extensions": [ + "ipk" + ] + }, + "application/vnd.shootproof+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shopkick+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.shp": { + "source": "iana" + }, + "application/vnd.shx": { + "source": "iana" + }, + "application/vnd.sigrok.session": { + "source": "iana" + }, + "application/vnd.simtech-mindmapper": { + "source": "iana", + "extensions": [ + "twd", + "twds" + ] + }, + "application/vnd.siren+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.smaf": { + "source": "iana", + "extensions": [ + "mmf" + ] + }, + "application/vnd.smart.notebook": { + "source": "iana" + }, + "application/vnd.smart.teacher": { + "source": "iana", + "extensions": [ + "teacher" + ] + }, + "application/vnd.snesdev-page-table": { + "source": "iana" + }, + "application/vnd.software602.filler.form+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "fo" + ] + }, + "application/vnd.software602.filler.form-xml-zip": { + "source": "iana" + }, + "application/vnd.solent.sdkm+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "sdkm", + "sdkd" + ] + }, + "application/vnd.spotfire.dxp": { + "source": "iana", + "extensions": [ + "dxp" + ] + }, + "application/vnd.spotfire.sfs": { + "source": "iana", + "extensions": [ + "sfs" + ] + }, + "application/vnd.sqlite3": { + "source": "iana" + }, + "application/vnd.sss-cod": { + "source": "iana" + }, + "application/vnd.sss-dtf": { + "source": "iana" + }, + "application/vnd.sss-ntf": { + "source": "iana" + }, + "application/vnd.stardivision.calc": { + "source": "apache", + "extensions": [ + "sdc" + ] + }, + "application/vnd.stardivision.draw": { + "source": "apache", + "extensions": [ + "sda" + ] + }, + "application/vnd.stardivision.impress": { + "source": "apache", + "extensions": [ + "sdd" + ] + }, + "application/vnd.stardivision.math": { + "source": "apache", + "extensions": [ + "smf" + ] + }, + "application/vnd.stardivision.writer": { + "source": "apache", + "extensions": [ + "sdw", + "vor" + ] + }, + "application/vnd.stardivision.writer-global": { + "source": "apache", + "extensions": [ + "sgl" + ] + }, + "application/vnd.stepmania.package": { + "source": "iana", + "extensions": [ + "smzip" + ] + }, + "application/vnd.stepmania.stepchart": { + "source": "iana", + "extensions": [ + "sm" + ] + }, + "application/vnd.street-stream": { + "source": "iana" + }, + "application/vnd.sun.wadl+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wadl" + ] + }, + "application/vnd.sun.xml.calc": { + "source": "apache", + "extensions": [ + "sxc" + ] + }, + "application/vnd.sun.xml.calc.template": { + "source": "apache", + "extensions": [ + "stc" + ] + }, + "application/vnd.sun.xml.draw": { + "source": "apache", + "extensions": [ + "sxd" + ] + }, + "application/vnd.sun.xml.draw.template": { + "source": "apache", + "extensions": [ + "std" + ] + }, + "application/vnd.sun.xml.impress": { + "source": "apache", + "extensions": [ + "sxi" + ] + }, + "application/vnd.sun.xml.impress.template": { + "source": "apache", + "extensions": [ + "sti" + ] + }, + "application/vnd.sun.xml.math": { + "source": "apache", + "extensions": [ + "sxm" + ] + }, + "application/vnd.sun.xml.writer": { + "source": "apache", + "extensions": [ + "sxw" + ] + }, + "application/vnd.sun.xml.writer.global": { + "source": "apache", + "extensions": [ + "sxg" + ] + }, + "application/vnd.sun.xml.writer.template": { + "source": "apache", + "extensions": [ + "stw" + ] + }, + "application/vnd.sus-calendar": { + "source": "iana", + "extensions": [ + "sus", + "susp" + ] + }, + "application/vnd.svd": { + "source": "iana", + "extensions": [ + "svd" + ] + }, + "application/vnd.swiftview-ics": { + "source": "iana" + }, + "application/vnd.sycle+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.syft+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.symbian.install": { + "source": "apache", + "extensions": [ + "sis", + "sisx" + ] + }, + "application/vnd.syncml+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "xsm" + ] + }, + "application/vnd.syncml.dm+wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": [ + "bdm" + ] + }, + "application/vnd.syncml.dm+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "xdm" + ] + }, + "application/vnd.syncml.dm.notification": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmddf+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "ddf" + ] + }, + "application/vnd.syncml.dmtnds+wbxml": { + "source": "iana" + }, + "application/vnd.syncml.dmtnds+xml": { + "source": "iana", + "charset": "UTF-8", + "compressible": true + }, + "application/vnd.syncml.ds.notification": { + "source": "iana" + }, + "application/vnd.tableschema+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tao.intent-module-archive": { + "source": "iana", + "extensions": [ + "tao" + ] + }, + "application/vnd.tcpdump.pcap": { + "source": "iana", + "extensions": [ + "pcap", + "cap", + "dmp" + ] + }, + "application/vnd.think-cell.ppttc+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.tmd.mediaflex.api+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.tml": { + "source": "iana" + }, + "application/vnd.tmobile-livetv": { + "source": "iana", + "extensions": [ + "tmo" + ] + }, + "application/vnd.tri.onesource": { + "source": "iana" + }, + "application/vnd.trid.tpt": { + "source": "iana", + "extensions": [ + "tpt" + ] + }, + "application/vnd.triscape.mxs": { + "source": "iana", + "extensions": [ + "mxs" + ] + }, + "application/vnd.trueapp": { + "source": "iana", + "extensions": [ + "tra" + ] + }, + "application/vnd.truedoc": { + "source": "iana" + }, + "application/vnd.ubisoft.webplayer": { + "source": "iana" + }, + "application/vnd.ufdl": { + "source": "iana", + "extensions": [ + "ufd", + "ufdl" + ] + }, + "application/vnd.uiq.theme": { + "source": "iana", + "extensions": [ + "utz" + ] + }, + "application/vnd.umajin": { + "source": "iana", + "extensions": [ + "umj" + ] + }, + "application/vnd.unity": { + "source": "iana", + "extensions": [ + "unityweb" + ] + }, + "application/vnd.uoml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "uoml" + ] + }, + "application/vnd.uplanet.alert": { + "source": "iana" + }, + "application/vnd.uplanet.alert-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice": { + "source": "iana" + }, + "application/vnd.uplanet.bearer-choice-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop": { + "source": "iana" + }, + "application/vnd.uplanet.cacheop-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.channel": { + "source": "iana" + }, + "application/vnd.uplanet.channel-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.list": { + "source": "iana" + }, + "application/vnd.uplanet.list-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd": { + "source": "iana" + }, + "application/vnd.uplanet.listcmd-wbxml": { + "source": "iana" + }, + "application/vnd.uplanet.signal": { + "source": "iana" + }, + "application/vnd.uri-map": { + "source": "iana" + }, + "application/vnd.valve.source.material": { + "source": "iana" + }, + "application/vnd.vcx": { + "source": "iana", + "extensions": [ + "vcx" + ] + }, + "application/vnd.vd-study": { + "source": "iana" + }, + "application/vnd.vectorworks": { + "source": "iana" + }, + "application/vnd.vel+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.verimatrix.vcas": { + "source": "iana" + }, + "application/vnd.veritone.aion+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.veryant.thin": { + "source": "iana" + }, + "application/vnd.ves.encrypted": { + "source": "iana" + }, + "application/vnd.vidsoft.vidconference": { + "source": "iana" + }, + "application/vnd.visio": { + "source": "iana", + "extensions": [ + "vsd", + "vst", + "vss", + "vsw" + ] + }, + "application/vnd.visionary": { + "source": "iana", + "extensions": [ + "vis" + ] + }, + "application/vnd.vividence.scriptfile": { + "source": "iana" + }, + "application/vnd.vsf": { + "source": "iana", + "extensions": [ + "vsf" + ] + }, + "application/vnd.wap.sic": { + "source": "iana" + }, + "application/vnd.wap.slc": { + "source": "iana" + }, + "application/vnd.wap.wbxml": { + "source": "iana", + "charset": "UTF-8", + "extensions": [ + "wbxml" + ] + }, + "application/vnd.wap.wmlc": { + "source": "iana", + "extensions": [ + "wmlc" + ] + }, + "application/vnd.wap.wmlscriptc": { + "source": "iana", + "extensions": [ + "wmlsc" + ] + }, + "application/vnd.webturbo": { + "source": "iana", + "extensions": [ + "wtb" + ] + }, + "application/vnd.wfa.dpp": { + "source": "iana" + }, + "application/vnd.wfa.p2p": { + "source": "iana" + }, + "application/vnd.wfa.wsc": { + "source": "iana" + }, + "application/vnd.windows.devicepairing": { + "source": "iana" + }, + "application/vnd.wmc": { + "source": "iana" + }, + "application/vnd.wmf.bootstrap": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica": { + "source": "iana" + }, + "application/vnd.wolfram.mathematica.package": { + "source": "iana" + }, + "application/vnd.wolfram.player": { + "source": "iana", + "extensions": [ + "nbp" + ] + }, + "application/vnd.wordperfect": { + "source": "iana", + "extensions": [ + "wpd" + ] + }, + "application/vnd.wqd": { + "source": "iana", + "extensions": [ + "wqd" + ] + }, + "application/vnd.wrq-hp3000-labelled": { + "source": "iana" + }, + "application/vnd.wt.stf": { + "source": "iana", + "extensions": [ + "stf" + ] + }, + "application/vnd.wv.csp+wbxml": { + "source": "iana" + }, + "application/vnd.wv.csp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.wv.ssp+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xacml+json": { + "source": "iana", + "compressible": true + }, + "application/vnd.xara": { + "source": "iana", + "extensions": [ + "xar" + ] + }, + "application/vnd.xfdl": { + "source": "iana", + "extensions": [ + "xfdl" + ] + }, + "application/vnd.xfdl.webform": { + "source": "iana" + }, + "application/vnd.xmi+xml": { + "source": "iana", + "compressible": true + }, + "application/vnd.xmpie.cpkg": { + "source": "iana" + }, + "application/vnd.xmpie.dpkg": { + "source": "iana" + }, + "application/vnd.xmpie.plan": { + "source": "iana" + }, + "application/vnd.xmpie.ppkg": { + "source": "iana" + }, + "application/vnd.xmpie.xlim": { + "source": "iana" + }, + "application/vnd.yamaha.hv-dic": { + "source": "iana", + "extensions": [ + "hvd" + ] + }, + "application/vnd.yamaha.hv-script": { + "source": "iana", + "extensions": [ + "hvs" + ] + }, + "application/vnd.yamaha.hv-voice": { + "source": "iana", + "extensions": [ + "hvp" + ] + }, + "application/vnd.yamaha.openscoreformat": { + "source": "iana", + "extensions": [ + "osf" + ] + }, + "application/vnd.yamaha.openscoreformat.osfpvg+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "osfpvg" + ] + }, + "application/vnd.yamaha.remote-setup": { + "source": "iana" + }, + "application/vnd.yamaha.smaf-audio": { + "source": "iana", + "extensions": [ + "saf" + ] + }, + "application/vnd.yamaha.smaf-phrase": { + "source": "iana", + "extensions": [ + "spf" + ] + }, + "application/vnd.yamaha.through-ngn": { + "source": "iana" + }, + "application/vnd.yamaha.tunnel-udpencap": { + "source": "iana" + }, + "application/vnd.yaoweme": { + "source": "iana" + }, + "application/vnd.yellowriver-custom-menu": { + "source": "iana", + "extensions": [ + "cmp" + ] + }, + "application/vnd.youtube.yt": { + "source": "iana" + }, + "application/vnd.zul": { + "source": "iana", + "extensions": [ + "zir", + "zirz" + ] + }, + "application/vnd.zzazz.deck+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "zaz" + ] + }, + "application/voicexml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "vxml" + ] + }, + "application/voucher-cms+json": { + "source": "iana", + "compressible": true + }, + "application/vq-rtcpxr": { + "source": "iana" + }, + "application/wasm": { + "source": "iana", + "compressible": true, + "extensions": [ + "wasm" + ] + }, + "application/watcherinfo+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wif" + ] + }, + "application/webpush-options+json": { + "source": "iana", + "compressible": true + }, + "application/whoispp-query": { + "source": "iana" + }, + "application/whoispp-response": { + "source": "iana" + }, + "application/widget": { + "source": "iana", + "extensions": [ + "wgt" + ] + }, + "application/winhlp": { + "source": "apache", + "extensions": [ + "hlp" + ] + }, + "application/wita": { + "source": "iana" + }, + "application/wordperfect5.1": { + "source": "iana" + }, + "application/wsdl+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wsdl" + ] + }, + "application/wspolicy+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "wspolicy" + ] + }, + "application/x-7z-compressed": { + "source": "apache", + "compressible": false, + "extensions": [ + "7z" + ] + }, + "application/x-abiword": { + "source": "apache", + "extensions": [ + "abw" + ] + }, + "application/x-ace-compressed": { + "source": "apache", + "extensions": [ + "ace" + ] + }, + "application/x-amf": { + "source": "apache" + }, + "application/x-apple-diskimage": { + "source": "apache", + "extensions": [ + "dmg" + ] + }, + "application/x-arj": { + "compressible": false, + "extensions": [ + "arj" + ] + }, + "application/x-authorware-bin": { + "source": "apache", + "extensions": [ + "aab", + "x32", + "u32", + "vox" + ] + }, + "application/x-authorware-map": { + "source": "apache", + "extensions": [ + "aam" + ] + }, + "application/x-authorware-seg": { + "source": "apache", + "extensions": [ + "aas" + ] + }, + "application/x-bcpio": { + "source": "apache", + "extensions": [ + "bcpio" + ] + }, + "application/x-bdoc": { + "compressible": false, + "extensions": [ + "bdoc" + ] + }, + "application/x-bittorrent": { + "source": "apache", + "extensions": [ + "torrent" + ] + }, + "application/x-blorb": { + "source": "apache", + "extensions": [ + "blb", + "blorb" + ] + }, + "application/x-bzip": { + "source": "apache", + "compressible": false, + "extensions": [ + "bz" + ] + }, + "application/x-bzip2": { + "source": "apache", + "compressible": false, + "extensions": [ + "bz2", + "boz" + ] + }, + "application/x-cbr": { + "source": "apache", + "extensions": [ + "cbr", + "cba", + "cbt", + "cbz", + "cb7" + ] + }, + "application/x-cdlink": { + "source": "apache", + "extensions": [ + "vcd" + ] + }, + "application/x-cfs-compressed": { + "source": "apache", + "extensions": [ + "cfs" + ] + }, + "application/x-chat": { + "source": "apache", + "extensions": [ + "chat" + ] + }, + "application/x-chess-pgn": { + "source": "apache", + "extensions": [ + "pgn" + ] + }, + "application/x-chrome-extension": { + "extensions": [ + "crx" + ] + }, + "application/x-cocoa": { + "source": "nginx", + "extensions": [ + "cco" + ] + }, + "application/x-compress": { + "source": "apache" + }, + "application/x-conference": { + "source": "apache", + "extensions": [ + "nsc" + ] + }, + "application/x-cpio": { + "source": "apache", + "extensions": [ + "cpio" + ] + }, + "application/x-csh": { + "source": "apache", + "extensions": [ + "csh" + ] + }, + "application/x-deb": { + "compressible": false + }, + "application/x-debian-package": { + "source": "apache", + "extensions": [ + "deb", + "udeb" + ] + }, + "application/x-dgc-compressed": { + "source": "apache", + "extensions": [ + "dgc" + ] + }, + "application/x-director": { + "source": "apache", + "extensions": [ + "dir", + "dcr", + "dxr", + "cst", + "cct", + "cxt", + "w3d", + "fgd", + "swa" + ] + }, + "application/x-doom": { + "source": "apache", + "extensions": [ + "wad" + ] + }, + "application/x-dtbncx+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "ncx" + ] + }, + "application/x-dtbook+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "dtb" + ] + }, + "application/x-dtbresource+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "res" + ] + }, + "application/x-dvi": { + "source": "apache", + "compressible": false, + "extensions": [ + "dvi" + ] + }, + "application/x-envoy": { + "source": "apache", + "extensions": [ + "evy" + ] + }, + "application/x-eva": { + "source": "apache", + "extensions": [ + "eva" + ] + }, + "application/x-font-bdf": { + "source": "apache", + "extensions": [ + "bdf" + ] + }, + "application/x-font-dos": { + "source": "apache" + }, + "application/x-font-framemaker": { + "source": "apache" + }, + "application/x-font-ghostscript": { + "source": "apache", + "extensions": [ + "gsf" + ] + }, + "application/x-font-libgrx": { + "source": "apache" + }, + "application/x-font-linux-psf": { + "source": "apache", + "extensions": [ + "psf" + ] + }, + "application/x-font-pcf": { + "source": "apache", + "extensions": [ + "pcf" + ] + }, + "application/x-font-snf": { + "source": "apache", + "extensions": [ + "snf" + ] + }, + "application/x-font-speedo": { + "source": "apache" + }, + "application/x-font-sunos-news": { + "source": "apache" + }, + "application/x-font-type1": { + "source": "apache", + "extensions": [ + "pfa", + "pfb", + "pfm", + "afm" + ] + }, + "application/x-font-vfont": { + "source": "apache" + }, + "application/x-freearc": { + "source": "apache", + "extensions": [ + "arc" + ] + }, + "application/x-futuresplash": { + "source": "apache", + "extensions": [ + "spl" + ] + }, + "application/x-gca-compressed": { + "source": "apache", + "extensions": [ + "gca" + ] + }, + "application/x-glulx": { + "source": "apache", + "extensions": [ + "ulx" + ] + }, + "application/x-gnumeric": { + "source": "apache", + "extensions": [ + "gnumeric" + ] + }, + "application/x-gramps-xml": { + "source": "apache", + "extensions": [ + "gramps" + ] + }, + "application/x-gtar": { + "source": "apache", + "extensions": [ + "gtar" + ] + }, + "application/x-gzip": { + "source": "apache" + }, + "application/x-hdf": { + "source": "apache", + "extensions": [ + "hdf" + ] + }, + "application/x-httpd-php": { + "compressible": true, + "extensions": [ + "php" + ] + }, + "application/x-install-instructions": { + "source": "apache", + "extensions": [ + "install" + ] + }, + "application/x-iso9660-image": { + "source": "apache", + "extensions": [ + "iso" + ] + }, + "application/x-iwork-keynote-sffkey": { + "extensions": [ + "key" + ] + }, + "application/x-iwork-numbers-sffnumbers": { + "extensions": [ + "numbers" + ] + }, + "application/x-iwork-pages-sffpages": { + "extensions": [ + "pages" + ] + }, + "application/x-java-archive-diff": { + "source": "nginx", + "extensions": [ + "jardiff" + ] + }, + "application/x-java-jnlp-file": { + "source": "apache", + "compressible": false, + "extensions": [ + "jnlp" + ] + }, + "application/x-javascript": { + "compressible": true + }, + "application/x-keepass2": { + "extensions": [ + "kdbx" + ] + }, + "application/x-latex": { + "source": "apache", + "compressible": false, + "extensions": [ + "latex" + ] + }, + "application/x-lua-bytecode": { + "extensions": [ + "luac" + ] + }, + "application/x-lzh-compressed": { + "source": "apache", + "extensions": [ + "lzh", + "lha" + ] + }, + "application/x-makeself": { + "source": "nginx", + "extensions": [ + "run" + ] + }, + "application/x-mie": { + "source": "apache", + "extensions": [ + "mie" + ] + }, + "application/x-mobipocket-ebook": { + "source": "apache", + "extensions": [ + "prc", + "mobi" + ] + }, + "application/x-mpegurl": { + "compressible": false + }, + "application/x-ms-application": { + "source": "apache", + "extensions": [ + "application" + ] + }, + "application/x-ms-shortcut": { + "source": "apache", + "extensions": [ + "lnk" + ] + }, + "application/x-ms-wmd": { + "source": "apache", + "extensions": [ + "wmd" + ] + }, + "application/x-ms-wmz": { + "source": "apache", + "extensions": [ + "wmz" + ] + }, + "application/x-ms-xbap": { + "source": "apache", + "extensions": [ + "xbap" + ] + }, + "application/x-msaccess": { + "source": "apache", + "extensions": [ + "mdb" + ] + }, + "application/x-msbinder": { + "source": "apache", + "extensions": [ + "obd" + ] + }, + "application/x-mscardfile": { + "source": "apache", + "extensions": [ + "crd" + ] + }, + "application/x-msclip": { + "source": "apache", + "extensions": [ + "clp" + ] + }, + "application/x-msdos-program": { + "extensions": [ + "exe" + ] + }, + "application/x-msdownload": { + "source": "apache", + "extensions": [ + "exe", + "dll", + "com", + "bat", + "msi" + ] + }, + "application/x-msmediaview": { + "source": "apache", + "extensions": [ + "mvb", + "m13", + "m14" + ] + }, + "application/x-msmetafile": { + "source": "apache", + "extensions": [ + "wmf", + "wmz", + "emf", + "emz" + ] + }, + "application/x-msmoney": { + "source": "apache", + "extensions": [ + "mny" + ] + }, + "application/x-mspublisher": { + "source": "apache", + "extensions": [ + "pub" + ] + }, + "application/x-msschedule": { + "source": "apache", + "extensions": [ + "scd" + ] + }, + "application/x-msterminal": { + "source": "apache", + "extensions": [ + "trm" + ] + }, + "application/x-mswrite": { + "source": "apache", + "extensions": [ + "wri" + ] + }, + "application/x-netcdf": { + "source": "apache", + "extensions": [ + "nc", + "cdf" + ] + }, + "application/x-ns-proxy-autoconfig": { + "compressible": true, + "extensions": [ + "pac" + ] + }, + "application/x-nzb": { + "source": "apache", + "extensions": [ + "nzb" + ] + }, + "application/x-perl": { + "source": "nginx", + "extensions": [ + "pl", + "pm" + ] + }, + "application/x-pilot": { + "source": "nginx", + "extensions": [ + "prc", + "pdb" + ] + }, + "application/x-pkcs12": { + "source": "apache", + "compressible": false, + "extensions": [ + "p12", + "pfx" + ] + }, + "application/x-pkcs7-certificates": { + "source": "apache", + "extensions": [ + "p7b", + "spc" + ] + }, + "application/x-pkcs7-certreqresp": { + "source": "apache", + "extensions": [ + "p7r" + ] + }, + "application/x-pki-message": { + "source": "iana" + }, + "application/x-rar-compressed": { + "source": "apache", + "compressible": false, + "extensions": [ + "rar" + ] + }, + "application/x-redhat-package-manager": { + "source": "nginx", + "extensions": [ + "rpm" + ] + }, + "application/x-research-info-systems": { + "source": "apache", + "extensions": [ + "ris" + ] + }, + "application/x-sea": { + "source": "nginx", + "extensions": [ + "sea" + ] + }, + "application/x-sh": { + "source": "apache", + "compressible": true, + "extensions": [ + "sh" + ] + }, + "application/x-shar": { + "source": "apache", + "extensions": [ + "shar" + ] + }, + "application/x-shockwave-flash": { + "source": "apache", + "compressible": false, + "extensions": [ + "swf" + ] + }, + "application/x-silverlight-app": { + "source": "apache", + "extensions": [ + "xap" + ] + }, + "application/x-sql": { + "source": "apache", + "extensions": [ + "sql" + ] + }, + "application/x-stuffit": { + "source": "apache", + "compressible": false, + "extensions": [ + "sit" + ] + }, + "application/x-stuffitx": { + "source": "apache", + "extensions": [ + "sitx" + ] + }, + "application/x-subrip": { + "source": "apache", + "extensions": [ + "srt" + ] + }, + "application/x-sv4cpio": { + "source": "apache", + "extensions": [ + "sv4cpio" + ] + }, + "application/x-sv4crc": { + "source": "apache", + "extensions": [ + "sv4crc" + ] + }, + "application/x-t3vm-image": { + "source": "apache", + "extensions": [ + "t3" + ] + }, + "application/x-tads": { + "source": "apache", + "extensions": [ + "gam" + ] + }, + "application/x-tar": { + "source": "apache", + "compressible": true, + "extensions": [ + "tar" + ] + }, + "application/x-tcl": { + "source": "apache", + "extensions": [ + "tcl", + "tk" + ] + }, + "application/x-tex": { + "source": "apache", + "extensions": [ + "tex" + ] + }, + "application/x-tex-tfm": { + "source": "apache", + "extensions": [ + "tfm" + ] + }, + "application/x-texinfo": { + "source": "apache", + "extensions": [ + "texinfo", + "texi" + ] + }, + "application/x-tgif": { + "source": "apache", + "extensions": [ + "obj" + ] + }, + "application/x-ustar": { + "source": "apache", + "extensions": [ + "ustar" + ] + }, + "application/x-virtualbox-hdd": { + "compressible": true, + "extensions": [ + "hdd" + ] + }, + "application/x-virtualbox-ova": { + "compressible": true, + "extensions": [ + "ova" + ] + }, + "application/x-virtualbox-ovf": { + "compressible": true, + "extensions": [ + "ovf" + ] + }, + "application/x-virtualbox-vbox": { + "compressible": true, + "extensions": [ + "vbox" + ] + }, + "application/x-virtualbox-vbox-extpack": { + "compressible": false, + "extensions": [ + "vbox-extpack" + ] + }, + "application/x-virtualbox-vdi": { + "compressible": true, + "extensions": [ + "vdi" + ] + }, + "application/x-virtualbox-vhd": { + "compressible": true, + "extensions": [ + "vhd" + ] + }, + "application/x-virtualbox-vmdk": { + "compressible": true, + "extensions": [ + "vmdk" + ] + }, + "application/x-wais-source": { + "source": "apache", + "extensions": [ + "src" + ] + }, + "application/x-web-app-manifest+json": { + "compressible": true, + "extensions": [ + "webapp" + ] + }, + "application/x-www-form-urlencoded": { + "source": "iana", + "compressible": true + }, + "application/x-x509-ca-cert": { + "source": "iana", + "extensions": [ + "der", + "crt", + "pem" + ] + }, + "application/x-x509-ca-ra-cert": { + "source": "iana" + }, + "application/x-x509-next-ca-cert": { + "source": "iana" + }, + "application/x-xfig": { + "source": "apache", + "extensions": [ + "fig" + ] + }, + "application/x-xliff+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "xlf" + ] + }, + "application/x-xpinstall": { + "source": "apache", + "compressible": false, + "extensions": [ + "xpi" + ] + }, + "application/x-xz": { + "source": "apache", + "extensions": [ + "xz" + ] + }, + "application/x-zmachine": { + "source": "apache", + "extensions": [ + "z1", + "z2", + "z3", + "z4", + "z5", + "z6", + "z7", + "z8" + ] + }, + "application/x400-bp": { + "source": "iana" + }, + "application/xacml+xml": { + "source": "iana", + "compressible": true + }, + "application/xaml+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "xaml" + ] + }, + "application/xcap-att+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xav" + ] + }, + "application/xcap-caps+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xca" + ] + }, + "application/xcap-diff+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xdf" + ] + }, + "application/xcap-el+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xel" + ] + }, + "application/xcap-error+xml": { + "source": "iana", + "compressible": true + }, + "application/xcap-ns+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xns" + ] + }, + "application/xcon-conference-info+xml": { + "source": "iana", + "compressible": true + }, + "application/xcon-conference-info-diff+xml": { + "source": "iana", + "compressible": true + }, + "application/xenc+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xenc" + ] + }, + "application/xhtml+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xhtml", + "xht" + ] + }, + "application/xhtml-voice+xml": { + "source": "apache", + "compressible": true + }, + "application/xliff+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xlf" + ] + }, + "application/xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xml", + "xsl", + "xsd", + "rng" + ] + }, + "application/xml-dtd": { + "source": "iana", + "compressible": true, + "extensions": [ + "dtd" + ] + }, + "application/xml-external-parsed-entity": { + "source": "iana" + }, + "application/xml-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/xmpp+xml": { + "source": "iana", + "compressible": true + }, + "application/xop+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xop" + ] + }, + "application/xproc+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "xpl" + ] + }, + "application/xslt+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xsl", + "xslt" + ] + }, + "application/xspf+xml": { + "source": "apache", + "compressible": true, + "extensions": [ + "xspf" + ] + }, + "application/xv+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "mxml", + "xhvml", + "xvml", + "xvm" + ] + }, + "application/yang": { + "source": "iana", + "extensions": [ + "yang" + ] + }, + "application/yang-data+json": { + "source": "iana", + "compressible": true + }, + "application/yang-data+xml": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+json": { + "source": "iana", + "compressible": true + }, + "application/yang-patch+xml": { + "source": "iana", + "compressible": true + }, + "application/yin+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "yin" + ] + }, + "application/zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "zip" + ] + }, + "application/zlib": { + "source": "iana" + }, + "application/zstd": { + "source": "iana" + }, + "audio/1d-interleaved-parityfec": { + "source": "iana" + }, + "audio/32kadpcm": { + "source": "iana" + }, + "audio/3gpp": { + "source": "iana", + "compressible": false, + "extensions": [ + "3gpp" + ] + }, + "audio/3gpp2": { + "source": "iana" + }, + "audio/aac": { + "source": "iana" + }, + "audio/ac3": { + "source": "iana" + }, + "audio/adpcm": { + "source": "apache", + "extensions": [ + "adp" + ] + }, + "audio/amr": { + "source": "iana", + "extensions": [ + "amr" + ] + }, + "audio/amr-wb": { + "source": "iana" + }, + "audio/amr-wb+": { + "source": "iana" + }, + "audio/aptx": { + "source": "iana" + }, + "audio/asc": { + "source": "iana" + }, + "audio/atrac-advanced-lossless": { + "source": "iana" + }, + "audio/atrac-x": { + "source": "iana" + }, + "audio/atrac3": { + "source": "iana" + }, + "audio/basic": { + "source": "iana", + "compressible": false, + "extensions": [ + "au", + "snd" + ] + }, + "audio/bv16": { + "source": "iana" + }, + "audio/bv32": { + "source": "iana" + }, + "audio/clearmode": { + "source": "iana" + }, + "audio/cn": { + "source": "iana" + }, + "audio/dat12": { + "source": "iana" + }, + "audio/dls": { + "source": "iana" + }, + "audio/dsr-es201108": { + "source": "iana" + }, + "audio/dsr-es202050": { + "source": "iana" + }, + "audio/dsr-es202211": { + "source": "iana" + }, + "audio/dsr-es202212": { + "source": "iana" + }, + "audio/dv": { + "source": "iana" + }, + "audio/dvi4": { + "source": "iana" + }, + "audio/eac3": { + "source": "iana" + }, + "audio/encaprtp": { + "source": "iana" + }, + "audio/evrc": { + "source": "iana" + }, + "audio/evrc-qcp": { + "source": "iana" + }, + "audio/evrc0": { + "source": "iana" + }, + "audio/evrc1": { + "source": "iana" + }, + "audio/evrcb": { + "source": "iana" + }, + "audio/evrcb0": { + "source": "iana" + }, + "audio/evrcb1": { + "source": "iana" + }, + "audio/evrcnw": { + "source": "iana" + }, + "audio/evrcnw0": { + "source": "iana" + }, + "audio/evrcnw1": { + "source": "iana" + }, + "audio/evrcwb": { + "source": "iana" + }, + "audio/evrcwb0": { + "source": "iana" + }, + "audio/evrcwb1": { + "source": "iana" + }, + "audio/evs": { + "source": "iana" + }, + "audio/flexfec": { + "source": "iana" + }, + "audio/fwdred": { + "source": "iana" + }, + "audio/g711-0": { + "source": "iana" + }, + "audio/g719": { + "source": "iana" + }, + "audio/g722": { + "source": "iana" + }, + "audio/g7221": { + "source": "iana" + }, + "audio/g723": { + "source": "iana" + }, + "audio/g726-16": { + "source": "iana" + }, + "audio/g726-24": { + "source": "iana" + }, + "audio/g726-32": { + "source": "iana" + }, + "audio/g726-40": { + "source": "iana" + }, + "audio/g728": { + "source": "iana" + }, + "audio/g729": { + "source": "iana" + }, + "audio/g7291": { + "source": "iana" + }, + "audio/g729d": { + "source": "iana" + }, + "audio/g729e": { + "source": "iana" + }, + "audio/gsm": { + "source": "iana" + }, + "audio/gsm-efr": { + "source": "iana" + }, + "audio/gsm-hr-08": { + "source": "iana" + }, + "audio/ilbc": { + "source": "iana" + }, + "audio/ip-mr_v2.5": { + "source": "iana" + }, + "audio/isac": { + "source": "apache" + }, + "audio/l16": { + "source": "iana" + }, + "audio/l20": { + "source": "iana" + }, + "audio/l24": { + "source": "iana", + "compressible": false + }, + "audio/l8": { + "source": "iana" + }, + "audio/lpc": { + "source": "iana" + }, + "audio/melp": { + "source": "iana" + }, + "audio/melp1200": { + "source": "iana" + }, + "audio/melp2400": { + "source": "iana" + }, + "audio/melp600": { + "source": "iana" + }, + "audio/mhas": { + "source": "iana" + }, + "audio/midi": { + "source": "apache", + "extensions": [ + "mid", + "midi", + "kar", + "rmi" + ] + }, + "audio/mobile-xmf": { + "source": "iana", + "extensions": [ + "mxmf" + ] + }, + "audio/mp3": { + "compressible": false, + "extensions": [ + "mp3" + ] + }, + "audio/mp4": { + "source": "iana", + "compressible": false, + "extensions": [ + "m4a", + "mp4a" + ] + }, + "audio/mp4a-latm": { + "source": "iana" + }, + "audio/mpa": { + "source": "iana" + }, + "audio/mpa-robust": { + "source": "iana" + }, + "audio/mpeg": { + "source": "iana", + "compressible": false, + "extensions": [ + "mpga", + "mp2", + "mp2a", + "mp3", + "m2a", + "m3a" + ] + }, + "audio/mpeg4-generic": { + "source": "iana" + }, + "audio/musepack": { + "source": "apache" + }, + "audio/ogg": { + "source": "iana", + "compressible": false, + "extensions": [ + "oga", + "ogg", + "spx", + "opus" + ] + }, + "audio/opus": { + "source": "iana" + }, + "audio/parityfec": { + "source": "iana" + }, + "audio/pcma": { + "source": "iana" + }, + "audio/pcma-wb": { + "source": "iana" + }, + "audio/pcmu": { + "source": "iana" + }, + "audio/pcmu-wb": { + "source": "iana" + }, + "audio/prs.sid": { + "source": "iana" + }, + "audio/qcelp": { + "source": "iana" + }, + "audio/raptorfec": { + "source": "iana" + }, + "audio/red": { + "source": "iana" + }, + "audio/rtp-enc-aescm128": { + "source": "iana" + }, + "audio/rtp-midi": { + "source": "iana" + }, + "audio/rtploopback": { + "source": "iana" + }, + "audio/rtx": { + "source": "iana" + }, + "audio/s3m": { + "source": "apache", + "extensions": [ + "s3m" + ] + }, + "audio/scip": { + "source": "iana" + }, + "audio/silk": { + "source": "apache", + "extensions": [ + "sil" + ] + }, + "audio/smv": { + "source": "iana" + }, + "audio/smv-qcp": { + "source": "iana" + }, + "audio/smv0": { + "source": "iana" + }, + "audio/sofa": { + "source": "iana" + }, + "audio/sp-midi": { + "source": "iana" + }, + "audio/speex": { + "source": "iana" + }, + "audio/t140c": { + "source": "iana" + }, + "audio/t38": { + "source": "iana" + }, + "audio/telephone-event": { + "source": "iana" + }, + "audio/tetra_acelp": { + "source": "iana" + }, + "audio/tetra_acelp_bb": { + "source": "iana" + }, + "audio/tone": { + "source": "iana" + }, + "audio/tsvcis": { + "source": "iana" + }, + "audio/uemclip": { + "source": "iana" + }, + "audio/ulpfec": { + "source": "iana" + }, + "audio/usac": { + "source": "iana" + }, + "audio/vdvi": { + "source": "iana" + }, + "audio/vmr-wb": { + "source": "iana" + }, + "audio/vnd.3gpp.iufp": { + "source": "iana" + }, + "audio/vnd.4sb": { + "source": "iana" + }, + "audio/vnd.audiokoz": { + "source": "iana" + }, + "audio/vnd.celp": { + "source": "iana" + }, + "audio/vnd.cisco.nse": { + "source": "iana" + }, + "audio/vnd.cmles.radio-events": { + "source": "iana" + }, + "audio/vnd.cns.anp1": { + "source": "iana" + }, + "audio/vnd.cns.inf1": { + "source": "iana" + }, + "audio/vnd.dece.audio": { + "source": "iana", + "extensions": [ + "uva", + "uvva" + ] + }, + "audio/vnd.digital-winds": { + "source": "iana", + "extensions": [ + "eol" + ] + }, + "audio/vnd.dlna.adts": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.1": { + "source": "iana" + }, + "audio/vnd.dolby.heaac.2": { + "source": "iana" + }, + "audio/vnd.dolby.mlp": { + "source": "iana" + }, + "audio/vnd.dolby.mps": { + "source": "iana" + }, + "audio/vnd.dolby.pl2": { + "source": "iana" + }, + "audio/vnd.dolby.pl2x": { + "source": "iana" + }, + "audio/vnd.dolby.pl2z": { + "source": "iana" + }, + "audio/vnd.dolby.pulse.1": { + "source": "iana" + }, + "audio/vnd.dra": { + "source": "iana", + "extensions": [ + "dra" + ] + }, + "audio/vnd.dts": { + "source": "iana", + "extensions": [ + "dts" + ] + }, + "audio/vnd.dts.hd": { + "source": "iana", + "extensions": [ + "dtshd" + ] + }, + "audio/vnd.dts.uhd": { + "source": "iana" + }, + "audio/vnd.dvb.file": { + "source": "iana" + }, + "audio/vnd.everad.plj": { + "source": "iana" + }, + "audio/vnd.hns.audio": { + "source": "iana" + }, + "audio/vnd.lucent.voice": { + "source": "iana", + "extensions": [ + "lvp" + ] + }, + "audio/vnd.ms-playready.media.pya": { + "source": "iana", + "extensions": [ + "pya" + ] + }, + "audio/vnd.nokia.mobile-xmf": { + "source": "iana" + }, + "audio/vnd.nortel.vbk": { + "source": "iana" + }, + "audio/vnd.nuera.ecelp4800": { + "source": "iana", + "extensions": [ + "ecelp4800" + ] + }, + "audio/vnd.nuera.ecelp7470": { + "source": "iana", + "extensions": [ + "ecelp7470" + ] + }, + "audio/vnd.nuera.ecelp9600": { + "source": "iana", + "extensions": [ + "ecelp9600" + ] + }, + "audio/vnd.octel.sbc": { + "source": "iana" + }, + "audio/vnd.presonus.multitrack": { + "source": "iana" + }, + "audio/vnd.qcelp": { + "source": "iana" + }, + "audio/vnd.rhetorex.32kadpcm": { + "source": "iana" + }, + "audio/vnd.rip": { + "source": "iana", + "extensions": [ + "rip" + ] + }, + "audio/vnd.rn-realaudio": { + "compressible": false + }, + "audio/vnd.sealedmedia.softseal.mpeg": { + "source": "iana" + }, + "audio/vnd.vmx.cvsd": { + "source": "iana" + }, + "audio/vnd.wave": { + "compressible": false + }, + "audio/vorbis": { + "source": "iana", + "compressible": false + }, + "audio/vorbis-config": { + "source": "iana" + }, + "audio/wav": { + "compressible": false, + "extensions": [ + "wav" + ] + }, + "audio/wave": { + "compressible": false, + "extensions": [ + "wav" + ] + }, + "audio/webm": { + "source": "apache", + "compressible": false, + "extensions": [ + "weba" + ] + }, + "audio/x-aac": { + "source": "apache", + "compressible": false, + "extensions": [ + "aac" + ] + }, + "audio/x-aiff": { + "source": "apache", + "extensions": [ + "aif", + "aiff", + "aifc" + ] + }, + "audio/x-caf": { + "source": "apache", + "compressible": false, + "extensions": [ + "caf" + ] + }, + "audio/x-flac": { + "source": "apache", + "extensions": [ + "flac" + ] + }, + "audio/x-m4a": { + "source": "nginx", + "extensions": [ + "m4a" + ] + }, + "audio/x-matroska": { + "source": "apache", + "extensions": [ + "mka" + ] + }, + "audio/x-mpegurl": { + "source": "apache", + "extensions": [ + "m3u" + ] + }, + "audio/x-ms-wax": { + "source": "apache", + "extensions": [ + "wax" + ] + }, + "audio/x-ms-wma": { + "source": "apache", + "extensions": [ + "wma" + ] + }, + "audio/x-pn-realaudio": { + "source": "apache", + "extensions": [ + "ram", + "ra" + ] + }, + "audio/x-pn-realaudio-plugin": { + "source": "apache", + "extensions": [ + "rmp" + ] + }, + "audio/x-realaudio": { + "source": "nginx", + "extensions": [ + "ra" + ] + }, + "audio/x-tta": { + "source": "apache" + }, + "audio/x-wav": { + "source": "apache", + "extensions": [ + "wav" + ] + }, + "audio/xm": { + "source": "apache", + "extensions": [ + "xm" + ] + }, + "chemical/x-cdx": { + "source": "apache", + "extensions": [ + "cdx" + ] + }, + "chemical/x-cif": { + "source": "apache", + "extensions": [ + "cif" + ] + }, + "chemical/x-cmdf": { + "source": "apache", + "extensions": [ + "cmdf" + ] + }, + "chemical/x-cml": { + "source": "apache", + "extensions": [ + "cml" + ] + }, + "chemical/x-csml": { + "source": "apache", + "extensions": [ + "csml" + ] + }, + "chemical/x-pdb": { + "source": "apache" + }, + "chemical/x-xyz": { + "source": "apache", + "extensions": [ + "xyz" + ] + }, + "font/collection": { + "source": "iana", + "extensions": [ + "ttc" + ] + }, + "font/otf": { + "source": "iana", + "compressible": true, + "extensions": [ + "otf" + ] + }, + "font/sfnt": { + "source": "iana" + }, + "font/ttf": { + "source": "iana", + "compressible": true, + "extensions": [ + "ttf" + ] + }, + "font/woff": { + "source": "iana", + "extensions": [ + "woff" + ] + }, + "font/woff2": { + "source": "iana", + "extensions": [ + "woff2" + ] + }, + "image/aces": { + "source": "iana", + "extensions": [ + "exr" + ] + }, + "image/apng": { + "compressible": false, + "extensions": [ + "apng" + ] + }, + "image/avci": { + "source": "iana", + "extensions": [ + "avci" + ] + }, + "image/avcs": { + "source": "iana", + "extensions": [ + "avcs" + ] + }, + "image/avif": { + "source": "iana", + "compressible": false, + "extensions": [ + "avif" + ] + }, + "image/bmp": { + "source": "iana", + "compressible": true, + "extensions": [ + "bmp" + ] + }, + "image/cgm": { + "source": "iana", + "extensions": [ + "cgm" + ] + }, + "image/dicom-rle": { + "source": "iana", + "extensions": [ + "drle" + ] + }, + "image/emf": { + "source": "iana", + "extensions": [ + "emf" + ] + }, + "image/fits": { + "source": "iana", + "extensions": [ + "fits" + ] + }, + "image/g3fax": { + "source": "iana", + "extensions": [ + "g3" + ] + }, + "image/gif": { + "source": "iana", + "compressible": false, + "extensions": [ + "gif" + ] + }, + "image/heic": { + "source": "iana", + "extensions": [ + "heic" + ] + }, + "image/heic-sequence": { + "source": "iana", + "extensions": [ + "heics" + ] + }, + "image/heif": { + "source": "iana", + "extensions": [ + "heif" + ] + }, + "image/heif-sequence": { + "source": "iana", + "extensions": [ + "heifs" + ] + }, + "image/hej2k": { + "source": "iana", + "extensions": [ + "hej2" + ] + }, + "image/hsj2": { + "source": "iana", + "extensions": [ + "hsj2" + ] + }, + "image/ief": { + "source": "iana", + "extensions": [ + "ief" + ] + }, + "image/jls": { + "source": "iana", + "extensions": [ + "jls" + ] + }, + "image/jp2": { + "source": "iana", + "compressible": false, + "extensions": [ + "jp2", + "jpg2" + ] + }, + "image/jpeg": { + "source": "iana", + "compressible": false, + "extensions": [ + "jpeg", + "jpg", + "jpe" + ] + }, + "image/jph": { + "source": "iana", + "extensions": [ + "jph" + ] + }, + "image/jphc": { + "source": "iana", + "extensions": [ + "jhc" + ] + }, + "image/jpm": { + "source": "iana", + "compressible": false, + "extensions": [ + "jpm" + ] + }, + "image/jpx": { + "source": "iana", + "compressible": false, + "extensions": [ + "jpx", + "jpf" + ] + }, + "image/jxr": { + "source": "iana", + "extensions": [ + "jxr" + ] + }, + "image/jxra": { + "source": "iana", + "extensions": [ + "jxra" + ] + }, + "image/jxrs": { + "source": "iana", + "extensions": [ + "jxrs" + ] + }, + "image/jxs": { + "source": "iana", + "extensions": [ + "jxs" + ] + }, + "image/jxsc": { + "source": "iana", + "extensions": [ + "jxsc" + ] + }, + "image/jxsi": { + "source": "iana", + "extensions": [ + "jxsi" + ] + }, + "image/jxss": { + "source": "iana", + "extensions": [ + "jxss" + ] + }, + "image/ktx": { + "source": "iana", + "extensions": [ + "ktx" + ] + }, + "image/ktx2": { + "source": "iana", + "extensions": [ + "ktx2" + ] + }, + "image/naplps": { + "source": "iana" + }, + "image/pjpeg": { + "compressible": false + }, + "image/png": { + "source": "iana", + "compressible": false, + "extensions": [ + "png" + ] + }, + "image/prs.btif": { + "source": "iana", + "extensions": [ + "btif" + ] + }, + "image/prs.pti": { + "source": "iana", + "extensions": [ + "pti" + ] + }, + "image/pwg-raster": { + "source": "iana" + }, + "image/sgi": { + "source": "apache", + "extensions": [ + "sgi" + ] + }, + "image/svg+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "svg", + "svgz" + ] + }, + "image/t38": { + "source": "iana", + "extensions": [ + "t38" + ] + }, + "image/tiff": { + "source": "iana", + "compressible": false, + "extensions": [ + "tif", + "tiff" + ] + }, + "image/tiff-fx": { + "source": "iana", + "extensions": [ + "tfx" + ] + }, + "image/vnd.adobe.photoshop": { + "source": "iana", + "compressible": true, + "extensions": [ + "psd" + ] + }, + "image/vnd.airzip.accelerator.azv": { + "source": "iana", + "extensions": [ + "azv" + ] + }, + "image/vnd.cns.inf2": { + "source": "iana" + }, + "image/vnd.dece.graphic": { + "source": "iana", + "extensions": [ + "uvi", + "uvvi", + "uvg", + "uvvg" + ] + }, + "image/vnd.djvu": { + "source": "iana", + "extensions": [ + "djvu", + "djv" + ] + }, + "image/vnd.dvb.subtitle": { + "source": "iana", + "extensions": [ + "sub" + ] + }, + "image/vnd.dwg": { + "source": "iana", + "extensions": [ + "dwg" + ] + }, + "image/vnd.dxf": { + "source": "iana", + "extensions": [ + "dxf" + ] + }, + "image/vnd.fastbidsheet": { + "source": "iana", + "extensions": [ + "fbs" + ] + }, + "image/vnd.fpx": { + "source": "iana", + "extensions": [ + "fpx" + ] + }, + "image/vnd.fst": { + "source": "iana", + "extensions": [ + "fst" + ] + }, + "image/vnd.fujixerox.edmics-mmr": { + "source": "iana", + "extensions": [ + "mmr" + ] + }, + "image/vnd.fujixerox.edmics-rlc": { + "source": "iana", + "extensions": [ + "rlc" + ] + }, + "image/vnd.globalgraphics.pgb": { + "source": "iana" + }, + "image/vnd.microsoft.icon": { + "source": "iana", + "compressible": true, + "extensions": [ + "ico" + ] + }, + "image/vnd.mix": { + "source": "iana" + }, + "image/vnd.mozilla.apng": { + "source": "iana" + }, + "image/vnd.ms-dds": { + "compressible": true, + "extensions": [ + "dds" + ] + }, + "image/vnd.ms-modi": { + "source": "iana", + "extensions": [ + "mdi" + ] + }, + "image/vnd.ms-photo": { + "source": "apache", + "extensions": [ + "wdp" + ] + }, + "image/vnd.net-fpx": { + "source": "iana", + "extensions": [ + "npx" + ] + }, + "image/vnd.pco.b16": { + "source": "iana", + "extensions": [ + "b16" + ] + }, + "image/vnd.radiance": { + "source": "iana" + }, + "image/vnd.sealed.png": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.gif": { + "source": "iana" + }, + "image/vnd.sealedmedia.softseal.jpg": { + "source": "iana" + }, + "image/vnd.svf": { + "source": "iana" + }, + "image/vnd.tencent.tap": { + "source": "iana", + "extensions": [ + "tap" + ] + }, + "image/vnd.valve.source.texture": { + "source": "iana", + "extensions": [ + "vtf" + ] + }, + "image/vnd.wap.wbmp": { + "source": "iana", + "extensions": [ + "wbmp" + ] + }, + "image/vnd.xiff": { + "source": "iana", + "extensions": [ + "xif" + ] + }, + "image/vnd.zbrush.pcx": { + "source": "iana", + "extensions": [ + "pcx" + ] + }, + "image/webp": { + "source": "apache", + "extensions": [ + "webp" + ] + }, + "image/wmf": { + "source": "iana", + "extensions": [ + "wmf" + ] + }, + "image/x-3ds": { + "source": "apache", + "extensions": [ + "3ds" + ] + }, + "image/x-cmu-raster": { + "source": "apache", + "extensions": [ + "ras" + ] + }, + "image/x-cmx": { + "source": "apache", + "extensions": [ + "cmx" + ] + }, + "image/x-freehand": { + "source": "apache", + "extensions": [ + "fh", + "fhc", + "fh4", + "fh5", + "fh7" + ] + }, + "image/x-icon": { + "source": "apache", + "compressible": true, + "extensions": [ + "ico" + ] + }, + "image/x-jng": { + "source": "nginx", + "extensions": [ + "jng" + ] + }, + "image/x-mrsid-image": { + "source": "apache", + "extensions": [ + "sid" + ] + }, + "image/x-ms-bmp": { + "source": "nginx", + "compressible": true, + "extensions": [ + "bmp" + ] + }, + "image/x-pcx": { + "source": "apache", + "extensions": [ + "pcx" + ] + }, + "image/x-pict": { + "source": "apache", + "extensions": [ + "pic", + "pct" + ] + }, + "image/x-portable-anymap": { + "source": "apache", + "extensions": [ + "pnm" + ] + }, + "image/x-portable-bitmap": { + "source": "apache", + "extensions": [ + "pbm" + ] + }, + "image/x-portable-graymap": { + "source": "apache", + "extensions": [ + "pgm" + ] + }, + "image/x-portable-pixmap": { + "source": "apache", + "extensions": [ + "ppm" + ] + }, + "image/x-rgb": { + "source": "apache", + "extensions": [ + "rgb" + ] + }, + "image/x-tga": { + "source": "apache", + "extensions": [ + "tga" + ] + }, + "image/x-xbitmap": { + "source": "apache", + "extensions": [ + "xbm" + ] + }, + "image/x-xcf": { + "compressible": false + }, + "image/x-xpixmap": { + "source": "apache", + "extensions": [ + "xpm" + ] + }, + "image/x-xwindowdump": { + "source": "apache", + "extensions": [ + "xwd" + ] + }, + "message/cpim": { + "source": "iana" + }, + "message/delivery-status": { + "source": "iana" + }, + "message/disposition-notification": { + "source": "iana", + "extensions": [ + "disposition-notification" + ] + }, + "message/external-body": { + "source": "iana" + }, + "message/feedback-report": { + "source": "iana" + }, + "message/global": { + "source": "iana", + "extensions": [ + "u8msg" + ] + }, + "message/global-delivery-status": { + "source": "iana", + "extensions": [ + "u8dsn" + ] + }, + "message/global-disposition-notification": { + "source": "iana", + "extensions": [ + "u8mdn" + ] + }, + "message/global-headers": { + "source": "iana", + "extensions": [ + "u8hdr" + ] + }, + "message/http": { + "source": "iana", + "compressible": false + }, + "message/imdn+xml": { + "source": "iana", + "compressible": true + }, + "message/news": { + "source": "iana" + }, + "message/partial": { + "source": "iana", + "compressible": false + }, + "message/rfc822": { + "source": "iana", + "compressible": true, + "extensions": [ + "eml", + "mime" + ] + }, + "message/s-http": { + "source": "iana" + }, + "message/sip": { + "source": "iana" + }, + "message/sipfrag": { + "source": "iana" + }, + "message/tracking-status": { + "source": "iana" + }, + "message/vnd.si.simp": { + "source": "iana" + }, + "message/vnd.wfa.wsc": { + "source": "iana", + "extensions": [ + "wsc" + ] + }, + "model/3mf": { + "source": "iana", + "extensions": [ + "3mf" + ] + }, + "model/e57": { + "source": "iana" + }, + "model/gltf+json": { + "source": "iana", + "compressible": true, + "extensions": [ + "gltf" + ] + }, + "model/gltf-binary": { + "source": "iana", + "compressible": true, + "extensions": [ + "glb" + ] + }, + "model/iges": { + "source": "iana", + "compressible": false, + "extensions": [ + "igs", + "iges" + ] + }, + "model/mesh": { + "source": "iana", + "compressible": false, + "extensions": [ + "msh", + "mesh", + "silo" + ] + }, + "model/mtl": { + "source": "iana", + "extensions": [ + "mtl" + ] + }, + "model/obj": { + "source": "iana", + "extensions": [ + "obj" + ] + }, + "model/step": { + "source": "iana" + }, + "model/step+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "stpx" + ] + }, + "model/step+zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "stpz" + ] + }, + "model/step-xml+zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "stpxz" + ] + }, + "model/stl": { + "source": "iana", + "extensions": [ + "stl" + ] + }, + "model/vnd.collada+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "dae" + ] + }, + "model/vnd.dwf": { + "source": "iana", + "extensions": [ + "dwf" + ] + }, + "model/vnd.flatland.3dml": { + "source": "iana" + }, + "model/vnd.gdl": { + "source": "iana", + "extensions": [ + "gdl" + ] + }, + "model/vnd.gs-gdl": { + "source": "apache" + }, + "model/vnd.gs.gdl": { + "source": "iana" + }, + "model/vnd.gtw": { + "source": "iana", + "extensions": [ + "gtw" + ] + }, + "model/vnd.moml+xml": { + "source": "iana", + "compressible": true + }, + "model/vnd.mts": { + "source": "iana", + "extensions": [ + "mts" + ] + }, + "model/vnd.opengex": { + "source": "iana", + "extensions": [ + "ogex" + ] + }, + "model/vnd.parasolid.transmit.binary": { + "source": "iana", + "extensions": [ + "x_b" + ] + }, + "model/vnd.parasolid.transmit.text": { + "source": "iana", + "extensions": [ + "x_t" + ] + }, + "model/vnd.pytha.pyox": { + "source": "iana" + }, + "model/vnd.rosette.annotated-data-model": { + "source": "iana" + }, + "model/vnd.sap.vds": { + "source": "iana", + "extensions": [ + "vds" + ] + }, + "model/vnd.usdz+zip": { + "source": "iana", + "compressible": false, + "extensions": [ + "usdz" + ] + }, + "model/vnd.valve.source.compiled-map": { + "source": "iana", + "extensions": [ + "bsp" + ] + }, + "model/vnd.vtu": { + "source": "iana", + "extensions": [ + "vtu" + ] + }, + "model/vrml": { + "source": "iana", + "compressible": false, + "extensions": [ + "wrl", + "vrml" + ] + }, + "model/x3d+binary": { + "source": "apache", + "compressible": false, + "extensions": [ + "x3db", + "x3dbz" + ] + }, + "model/x3d+fastinfoset": { + "source": "iana", + "extensions": [ + "x3db" + ] + }, + "model/x3d+vrml": { + "source": "apache", + "compressible": false, + "extensions": [ + "x3dv", + "x3dvz" + ] + }, + "model/x3d+xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "x3d", + "x3dz" + ] + }, + "model/x3d-vrml": { + "source": "iana", + "extensions": [ + "x3dv" + ] + }, + "multipart/alternative": { + "source": "iana", + "compressible": false + }, + "multipart/appledouble": { + "source": "iana" + }, + "multipart/byteranges": { + "source": "iana" + }, + "multipart/digest": { + "source": "iana" + }, + "multipart/encrypted": { + "source": "iana", + "compressible": false + }, + "multipart/form-data": { + "source": "iana", + "compressible": false + }, + "multipart/header-set": { + "source": "iana" + }, + "multipart/mixed": { + "source": "iana" + }, + "multipart/multilingual": { + "source": "iana" + }, + "multipart/parallel": { + "source": "iana" + }, + "multipart/related": { + "source": "iana", + "compressible": false + }, + "multipart/report": { + "source": "iana" + }, + "multipart/signed": { + "source": "iana", + "compressible": false + }, + "multipart/vnd.bint.med-plus": { + "source": "iana" + }, + "multipart/voice-message": { + "source": "iana" + }, + "multipart/x-mixed-replace": { + "source": "iana" + }, + "text/1d-interleaved-parityfec": { + "source": "iana" + }, + "text/cache-manifest": { + "source": "iana", + "compressible": true, + "extensions": [ + "appcache", + "manifest" + ] + }, + "text/calendar": { + "source": "iana", + "extensions": [ + "ics", + "ifb" + ] + }, + "text/calender": { + "compressible": true + }, + "text/cmd": { + "compressible": true + }, + "text/coffeescript": { + "extensions": [ + "coffee", + "litcoffee" + ] + }, + "text/cql": { + "source": "iana" + }, + "text/cql-expression": { + "source": "iana" + }, + "text/cql-identifier": { + "source": "iana" + }, + "text/css": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "css" + ] + }, + "text/csv": { + "source": "iana", + "compressible": true, + "extensions": [ + "csv" + ] + }, + "text/csv-schema": { + "source": "iana" + }, + "text/directory": { + "source": "iana" + }, + "text/dns": { + "source": "iana" + }, + "text/ecmascript": { + "source": "iana" + }, + "text/encaprtp": { + "source": "iana" + }, + "text/enriched": { + "source": "iana" + }, + "text/fhirpath": { + "source": "iana" + }, + "text/flexfec": { + "source": "iana" + }, + "text/fwdred": { + "source": "iana" + }, + "text/gff3": { + "source": "iana" + }, + "text/grammar-ref-list": { + "source": "iana" + }, + "text/html": { + "source": "iana", + "compressible": true, + "extensions": [ + "html", + "htm", + "shtml" + ] + }, + "text/jade": { + "extensions": [ + "jade" + ] + }, + "text/javascript": { + "source": "iana", + "compressible": true + }, + "text/jcr-cnd": { + "source": "iana" + }, + "text/jsx": { + "compressible": true, + "extensions": [ + "jsx" + ] + }, + "text/less": { + "compressible": true, + "extensions": [ + "less" + ] + }, + "text/markdown": { + "source": "iana", + "compressible": true, + "extensions": [ + "markdown", + "md" + ] + }, + "text/mathml": { + "source": "nginx", + "extensions": [ + "mml" + ] + }, + "text/mdx": { + "compressible": true, + "extensions": [ + "mdx" + ] + }, + "text/mizar": { + "source": "iana" + }, + "text/n3": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "n3" + ] + }, + "text/parameters": { + "source": "iana", + "charset": "UTF-8" + }, + "text/parityfec": { + "source": "iana" + }, + "text/plain": { + "source": "iana", + "compressible": true, + "extensions": [ + "txt", + "text", + "conf", + "def", + "list", + "log", + "in", + "ini" + ] + }, + "text/provenance-notation": { + "source": "iana", + "charset": "UTF-8" + }, + "text/prs.fallenstein.rst": { + "source": "iana" + }, + "text/prs.lines.tag": { + "source": "iana", + "extensions": [ + "dsc" + ] + }, + "text/prs.prop.logic": { + "source": "iana" + }, + "text/raptorfec": { + "source": "iana" + }, + "text/red": { + "source": "iana" + }, + "text/rfc822-headers": { + "source": "iana" + }, + "text/richtext": { + "source": "iana", + "compressible": true, + "extensions": [ + "rtx" + ] + }, + "text/rtf": { + "source": "iana", + "compressible": true, + "extensions": [ + "rtf" + ] + }, + "text/rtp-enc-aescm128": { + "source": "iana" + }, + "text/rtploopback": { + "source": "iana" + }, + "text/rtx": { + "source": "iana" + }, + "text/sgml": { + "source": "iana", + "extensions": [ + "sgml", + "sgm" + ] + }, + "text/shaclc": { + "source": "iana" + }, + "text/shex": { + "source": "iana", + "extensions": [ + "shex" + ] + }, + "text/slim": { + "extensions": [ + "slim", + "slm" + ] + }, + "text/spdx": { + "source": "iana", + "extensions": [ + "spdx" + ] + }, + "text/strings": { + "source": "iana" + }, + "text/stylus": { + "extensions": [ + "stylus", + "styl" + ] + }, + "text/t140": { + "source": "iana" + }, + "text/tab-separated-values": { + "source": "iana", + "compressible": true, + "extensions": [ + "tsv" + ] + }, + "text/troff": { + "source": "iana", + "extensions": [ + "t", + "tr", + "roff", + "man", + "me", + "ms" + ] + }, + "text/turtle": { + "source": "iana", + "charset": "UTF-8", + "extensions": [ + "ttl" + ] + }, + "text/ulpfec": { + "source": "iana" + }, + "text/uri-list": { + "source": "iana", + "compressible": true, + "extensions": [ + "uri", + "uris", + "urls" + ] + }, + "text/vcard": { + "source": "iana", + "compressible": true, + "extensions": [ + "vcard" + ] + }, + "text/vnd.a": { + "source": "iana" + }, + "text/vnd.abc": { + "source": "iana" + }, + "text/vnd.ascii-art": { + "source": "iana" + }, + "text/vnd.curl": { + "source": "iana", + "extensions": [ + "curl" + ] + }, + "text/vnd.curl.dcurl": { + "source": "apache", + "extensions": [ + "dcurl" + ] + }, + "text/vnd.curl.mcurl": { + "source": "apache", + "extensions": [ + "mcurl" + ] + }, + "text/vnd.curl.scurl": { + "source": "apache", + "extensions": [ + "scurl" + ] + }, + "text/vnd.debian.copyright": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.dmclientscript": { + "source": "iana" + }, + "text/vnd.dvb.subtitle": { + "source": "iana", + "extensions": [ + "sub" + ] + }, + "text/vnd.esmertec.theme-descriptor": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.familysearch.gedcom": { + "source": "iana", + "extensions": [ + "ged" + ] + }, + "text/vnd.ficlab.flt": { + "source": "iana" + }, + "text/vnd.fly": { + "source": "iana", + "extensions": [ + "fly" + ] + }, + "text/vnd.fmi.flexstor": { + "source": "iana", + "extensions": [ + "flx" + ] + }, + "text/vnd.gml": { + "source": "iana" + }, + "text/vnd.graphviz": { + "source": "iana", + "extensions": [ + "gv" + ] + }, + "text/vnd.hans": { + "source": "iana" + }, + "text/vnd.hgl": { + "source": "iana" + }, + "text/vnd.in3d.3dml": { + "source": "iana", + "extensions": [ + "3dml" + ] + }, + "text/vnd.in3d.spot": { + "source": "iana", + "extensions": [ + "spot" + ] + }, + "text/vnd.iptc.newsml": { + "source": "iana" + }, + "text/vnd.iptc.nitf": { + "source": "iana" + }, + "text/vnd.latex-z": { + "source": "iana" + }, + "text/vnd.motorola.reflex": { + "source": "iana" + }, + "text/vnd.ms-mediapackage": { + "source": "iana" + }, + "text/vnd.net2phone.commcenter.command": { + "source": "iana" + }, + "text/vnd.radisys.msml-basic-layout": { + "source": "iana" + }, + "text/vnd.senx.warpscript": { + "source": "iana" + }, + "text/vnd.si.uricatalogue": { + "source": "iana" + }, + "text/vnd.sosi": { + "source": "iana" + }, + "text/vnd.sun.j2me.app-descriptor": { + "source": "iana", + "charset": "UTF-8", + "extensions": [ + "jad" + ] + }, + "text/vnd.trolltech.linguist": { + "source": "iana", + "charset": "UTF-8" + }, + "text/vnd.wap.si": { + "source": "iana" + }, + "text/vnd.wap.sl": { + "source": "iana" + }, + "text/vnd.wap.wml": { + "source": "iana", + "extensions": [ + "wml" + ] + }, + "text/vnd.wap.wmlscript": { + "source": "iana", + "extensions": [ + "wmls" + ] + }, + "text/vtt": { + "source": "iana", + "charset": "UTF-8", + "compressible": true, + "extensions": [ + "vtt" + ] + }, + "text/x-asm": { + "source": "apache", + "extensions": [ + "s", + "asm" + ] + }, + "text/x-c": { + "source": "apache", + "extensions": [ + "c", + "cc", + "cxx", + "cpp", + "h", + "hh", + "dic" + ] + }, + "text/x-component": { + "source": "nginx", + "extensions": [ + "htc" + ] + }, + "text/x-fortran": { + "source": "apache", + "extensions": [ + "f", + "for", + "f77", + "f90" + ] + }, + "text/x-gwt-rpc": { + "compressible": true + }, + "text/x-handlebars-template": { + "extensions": [ + "hbs" + ] + }, + "text/x-java-source": { + "source": "apache", + "extensions": [ + "java" + ] + }, + "text/x-jquery-tmpl": { + "compressible": true + }, + "text/x-lua": { + "extensions": [ + "lua" + ] + }, + "text/x-markdown": { + "compressible": true, + "extensions": [ + "mkd" + ] + }, + "text/x-nfo": { + "source": "apache", + "extensions": [ + "nfo" + ] + }, + "text/x-opml": { + "source": "apache", + "extensions": [ + "opml" + ] + }, + "text/x-org": { + "compressible": true, + "extensions": [ + "org" + ] + }, + "text/x-pascal": { + "source": "apache", + "extensions": [ + "p", + "pas" + ] + }, + "text/x-processing": { + "compressible": true, + "extensions": [ + "pde" + ] + }, + "text/x-sass": { + "extensions": [ + "sass" + ] + }, + "text/x-scss": { + "extensions": [ + "scss" + ] + }, + "text/x-setext": { + "source": "apache", + "extensions": [ + "etx" + ] + }, + "text/x-sfv": { + "source": "apache", + "extensions": [ + "sfv" + ] + }, + "text/x-suse-ymp": { + "compressible": true, + "extensions": [ + "ymp" + ] + }, + "text/x-uuencode": { + "source": "apache", + "extensions": [ + "uu" + ] + }, + "text/x-vcalendar": { + "source": "apache", + "extensions": [ + "vcs" + ] + }, + "text/x-vcard": { + "source": "apache", + "extensions": [ + "vcf" + ] + }, + "text/xml": { + "source": "iana", + "compressible": true, + "extensions": [ + "xml" + ] + }, + "text/xml-external-parsed-entity": { + "source": "iana" + }, + "text/yaml": { + "compressible": true, + "extensions": [ + "yaml", + "yml" + ] + }, + "video/1d-interleaved-parityfec": { + "source": "iana" + }, + "video/3gpp": { + "source": "iana", + "extensions": [ + "3gp", + "3gpp" + ] + }, + "video/3gpp-tt": { + "source": "iana" + }, + "video/3gpp2": { + "source": "iana", + "extensions": [ + "3g2" + ] + }, + "video/av1": { + "source": "iana" + }, + "video/bmpeg": { + "source": "iana" + }, + "video/bt656": { + "source": "iana" + }, + "video/celb": { + "source": "iana" + }, + "video/dv": { + "source": "iana" + }, + "video/encaprtp": { + "source": "iana" + }, + "video/ffv1": { + "source": "iana" + }, + "video/flexfec": { + "source": "iana" + }, + "video/h261": { + "source": "iana", + "extensions": [ + "h261" + ] + }, + "video/h263": { + "source": "iana", + "extensions": [ + "h263" + ] + }, + "video/h263-1998": { + "source": "iana" + }, + "video/h263-2000": { + "source": "iana" + }, + "video/h264": { + "source": "iana", + "extensions": [ + "h264" + ] + }, + "video/h264-rcdo": { + "source": "iana" + }, + "video/h264-svc": { + "source": "iana" + }, + "video/h265": { + "source": "iana" + }, + "video/iso.segment": { + "source": "iana", + "extensions": [ + "m4s" + ] + }, + "video/jpeg": { + "source": "iana", + "extensions": [ + "jpgv" + ] + }, + "video/jpeg2000": { + "source": "iana" + }, + "video/jpm": { + "source": "apache", + "extensions": [ + "jpm", + "jpgm" + ] + }, + "video/jxsv": { + "source": "iana" + }, + "video/mj2": { + "source": "iana", + "extensions": [ + "mj2", + "mjp2" + ] + }, + "video/mp1s": { + "source": "iana" + }, + "video/mp2p": { + "source": "iana" + }, + "video/mp2t": { + "source": "iana", + "extensions": [ + "ts" + ] + }, + "video/mp4": { + "source": "iana", + "compressible": false, + "extensions": [ + "mp4", + "mp4v", + "mpg4" + ] + }, + "video/mp4v-es": { + "source": "iana" + }, + "video/mpeg": { + "source": "iana", + "compressible": false, + "extensions": [ + "mpeg", + "mpg", + "mpe", + "m1v", + "m2v" + ] + }, + "video/mpeg4-generic": { + "source": "iana" + }, + "video/mpv": { + "source": "iana" + }, + "video/nv": { + "source": "iana" + }, + "video/ogg": { + "source": "iana", + "compressible": false, + "extensions": [ + "ogv" + ] + }, + "video/parityfec": { + "source": "iana" + }, + "video/pointer": { + "source": "iana" + }, + "video/quicktime": { + "source": "iana", + "compressible": false, + "extensions": [ + "qt", + "mov" + ] + }, + "video/raptorfec": { + "source": "iana" + }, + "video/raw": { + "source": "iana" + }, + "video/rtp-enc-aescm128": { + "source": "iana" + }, + "video/rtploopback": { + "source": "iana" + }, + "video/rtx": { + "source": "iana" + }, + "video/scip": { + "source": "iana" + }, + "video/smpte291": { + "source": "iana" + }, + "video/smpte292m": { + "source": "iana" + }, + "video/ulpfec": { + "source": "iana" + }, + "video/vc1": { + "source": "iana" + }, + "video/vc2": { + "source": "iana" + }, + "video/vnd.cctv": { + "source": "iana" + }, + "video/vnd.dece.hd": { + "source": "iana", + "extensions": [ + "uvh", + "uvvh" + ] + }, + "video/vnd.dece.mobile": { + "source": "iana", + "extensions": [ + "uvm", + "uvvm" + ] + }, + "video/vnd.dece.mp4": { + "source": "iana" + }, + "video/vnd.dece.pd": { + "source": "iana", + "extensions": [ + "uvp", + "uvvp" + ] + }, + "video/vnd.dece.sd": { + "source": "iana", + "extensions": [ + "uvs", + "uvvs" + ] + }, + "video/vnd.dece.video": { + "source": "iana", + "extensions": [ + "uvv", + "uvvv" + ] + }, + "video/vnd.directv.mpeg": { + "source": "iana" + }, + "video/vnd.directv.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dlna.mpeg-tts": { + "source": "iana" + }, + "video/vnd.dvb.file": { + "source": "iana", + "extensions": [ + "dvb" + ] + }, + "video/vnd.fvt": { + "source": "iana", + "extensions": [ + "fvt" + ] + }, + "video/vnd.hns.video": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.1dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-1010": { + "source": "iana" + }, + "video/vnd.iptvforum.2dparityfec-2005": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsavc": { + "source": "iana" + }, + "video/vnd.iptvforum.ttsmpeg2": { + "source": "iana" + }, + "video/vnd.motorola.video": { + "source": "iana" + }, + "video/vnd.motorola.videop": { + "source": "iana" + }, + "video/vnd.mpegurl": { + "source": "iana", + "extensions": [ + "mxu", + "m4u" + ] + }, + "video/vnd.ms-playready.media.pyv": { + "source": "iana", + "extensions": [ + "pyv" + ] + }, + "video/vnd.nokia.interleaved-multimedia": { + "source": "iana" + }, + "video/vnd.nokia.mp4vr": { + "source": "iana" + }, + "video/vnd.nokia.videovoip": { + "source": "iana" + }, + "video/vnd.objectvideo": { + "source": "iana" + }, + "video/vnd.radgamettools.bink": { + "source": "iana" + }, + "video/vnd.radgamettools.smacker": { + "source": "iana" + }, + "video/vnd.sealed.mpeg1": { + "source": "iana" + }, + "video/vnd.sealed.mpeg4": { + "source": "iana" + }, + "video/vnd.sealed.swf": { + "source": "iana" + }, + "video/vnd.sealedmedia.softseal.mov": { + "source": "iana" + }, + "video/vnd.uvvu.mp4": { + "source": "iana", + "extensions": [ + "uvu", + "uvvu" + ] + }, + "video/vnd.vivo": { + "source": "iana", + "extensions": [ + "viv" + ] + }, + "video/vnd.youtube.yt": { + "source": "iana" + }, + "video/vp8": { + "source": "iana" + }, + "video/vp9": { + "source": "iana" + }, + "video/webm": { + "source": "apache", + "compressible": false, + "extensions": [ + "webm" + ] + }, + "video/x-f4v": { + "source": "apache", + "extensions": [ + "f4v" + ] + }, + "video/x-fli": { + "source": "apache", + "extensions": [ + "fli" + ] + }, + "video/x-flv": { + "source": "apache", + "compressible": false, + "extensions": [ + "flv" + ] + }, + "video/x-m4v": { + "source": "apache", + "extensions": [ + "m4v" + ] + }, + "video/x-matroska": { + "source": "apache", + "compressible": false, + "extensions": [ + "mkv", + "mk3d", + "mks" + ] + }, + "video/x-mng": { + "source": "apache", + "extensions": [ + "mng" + ] + }, + "video/x-ms-asf": { + "source": "apache", + "extensions": [ + "asf", + "asx" + ] + }, + "video/x-ms-vob": { + "source": "apache", + "extensions": [ + "vob" + ] + }, + "video/x-ms-wm": { + "source": "apache", + "extensions": [ + "wm" + ] + }, + "video/x-ms-wmv": { + "source": "apache", + "compressible": false, + "extensions": [ + "wmv" + ] + }, + "video/x-ms-wmx": { + "source": "apache", + "extensions": [ + "wmx" + ] + }, + "video/x-ms-wvx": { + "source": "apache", + "extensions": [ + "wvx" + ] + }, + "video/x-msvideo": { + "source": "apache", + "extensions": [ + "avi" + ] + }, + "video/x-sgi-movie": { + "source": "apache", + "extensions": [ + "movie" + ] + }, + "video/x-smv": { + "source": "apache", + "extensions": [ + "smv" + ] + }, + "x-conference/x-cooltalk": { + "source": "apache", + "extensions": [ + "ice" + ] + }, + "x-shader/x-fragment": { + "compressible": true + }, + "x-shader/x-vertex": { + "compressible": true + } +}; +const types = new Map(); +(function populateMaps() { + const preference = [ + "nginx", + "apache", + undefined, + "iana" + ]; + for (const type of Object.keys(__default)){ + const mime = __default[type]; + const exts = mime.extensions; + if (!exts || !exts.length) { + continue; + } + extensions.set(type, exts); + for (const ext of exts){ + const current = types.get(ext); + if (current) { + const from = preference.indexOf(__default[current].source); + const to = preference.indexOf(mime.source); + if (current !== "application/octet-stream" && (from > to || from === to && current.startsWith("application/"))) { + continue; + } + } + types.set(ext, type); + } + } +})(); +function typeByExtension(extension) { + extension = extension.startsWith(".") ? extension.slice(1) : extension; + return types.get(extension.toLowerCase()); +} +function getCharset(type) { + try { + const [mediaType, params] = parseMediaType(type); + if (params && params["charset"]) { + return params["charset"]; + } + const entry = __default[mediaType]; + if (entry && entry.charset) { + return entry.charset; + } + if (mediaType.startsWith("text/")) { + return "UTF-8"; + } + } catch {} + return undefined; +} +function formatMediaType(type, param) { + let b = ""; + const [major, sub] = type.split("/"); + if (!sub) { + if (!isToken(type)) { + return ""; + } + b += type.toLowerCase(); + } else { + if (!isToken(major) || !isToken(sub)) { + return ""; + } + b += `${major.toLowerCase()}/${sub.toLowerCase()}`; + } + if (param) { + param = isIterator(param) ? Object.fromEntries(param) : param; + const attrs = Object.keys(param); + attrs.sort(); + for (const attribute of attrs){ + if (!isToken(attribute)) { + return ""; + } + const value = param[attribute]; + b += `; ${attribute.toLowerCase()}`; + const needEnc = needsEncoding(value); + if (needEnc) { + b += "*"; + } + b += "="; + if (needEnc) { + b += `utf-8''${encodeURIComponent(value)}`; + continue; + } + if (isToken(value)) { + b += value; + continue; + } + b += `"${value.replace(/["\\]/gi, (m)=>`\\${m}`)}"`; + } + } + return b; +} +function contentType(extensionOrType) { + try { + const [mediaType, params = {}] = extensionOrType.includes("/") ? parseMediaType(extensionOrType) : [ + typeByExtension(extensionOrType), + undefined + ]; + if (!mediaType) { + return undefined; + } + if (!("charset" in params)) { + const charset = getCharset(mediaType); + if (charset) { + params.charset = charset; + } + } + return formatMediaType(mediaType, params); + } catch {} + return undefined; +} +function deferred() { + let methods; + let state = "pending"; + const promise = new Promise((resolve, reject)=>{ + methods = { + async resolve (value) { + await value; + state = "fulfilled"; + resolve(value); + }, + reject (reason) { + state = "rejected"; + reject(reason); + } + }; + }); + Object.defineProperty(promise, "state", { + get: ()=>state + }); + return Object.assign(promise, methods); +} +function delay(ms, options = {}) { + const { signal , persistent } = options; + if (signal?.aborted) { + return Promise.reject(new DOMException("Delay was aborted.", "AbortError")); + } + return new Promise((resolve, reject)=>{ + const abort = ()=>{ + clearTimeout(i); + reject(new DOMException("Delay was aborted.", "AbortError")); + }; + const done = ()=>{ + signal?.removeEventListener("abort", abort); + resolve(); + }; + const i = setTimeout(done, ms); + signal?.addEventListener("abort", abort, { + once: true + }); + if (persistent === false) { + try { + Deno.unrefTimer(i); + } catch (error) { + if (!(error instanceof ReferenceError)) { + throw error; + } + console.error("`persistent` option is only available in Deno"); + } + } + }); +} +class MuxAsyncIterator { + #iteratorCount = 0; + #yields = []; + #throws = []; + #signal = deferred(); + add(iterable) { + ++this.#iteratorCount; + this.#callIteratorNext(iterable[Symbol.asyncIterator]()); + } + async #callIteratorNext(iterator) { + try { + const { value , done } = await iterator.next(); + if (done) { + --this.#iteratorCount; + } else { + this.#yields.push({ + iterator, + value + }); + } + } catch (e) { + this.#throws.push(e); + } + this.#signal.resolve(); + } + async *iterate() { + while(this.#iteratorCount > 0){ + await this.#signal; + for(let i = 0; i < this.#yields.length; i++){ + const { iterator , value } = this.#yields[i]; + yield value; + this.#callIteratorNext(iterator); + } + if (this.#throws.length) { + for (const e of this.#throws){ + throw e; + } + this.#throws.length = 0; + } + this.#yields.length = 0; + this.#signal = deferred(); + } + } + [Symbol.asyncIterator]() { + return this.iterate(); + } +} +const ERROR_SERVER_CLOSED = "Server closed"; +const INITIAL_ACCEPT_BACKOFF_DELAY = 5; +const MAX_ACCEPT_BACKOFF_DELAY = 1000; +class Server { + #port; + #host; + #handler; + #closed = false; + #listeners = new Set(); + #acceptBackoffDelayAbortController = new AbortController(); + #httpConnections = new Set(); + #onError; + constructor(serverInit){ + this.#port = serverInit.port; + this.#host = serverInit.hostname; + this.#handler = serverInit.handler; + this.#onError = serverInit.onError ?? function(error) { + console.error(error); + return new Response("Internal Server Error", { + status: 500 + }); + }; + } + async serve(listener) { + if (this.#closed) { + throw new Deno.errors.Http(ERROR_SERVER_CLOSED); + } + this.#trackListener(listener); + try { + return await this.#accept(listener); + } finally{ + this.#untrackListener(listener); + try { + listener.close(); + } catch {} + } + } + async listenAndServe() { + if (this.#closed) { + throw new Deno.errors.Http(ERROR_SERVER_CLOSED); + } + const listener = Deno.listen({ + port: this.#port ?? 80, + hostname: this.#host ?? "0.0.0.0", + transport: "tcp" + }); + return await this.serve(listener); + } + async listenAndServeTls(certFile, keyFile) { + if (this.#closed) { + throw new Deno.errors.Http(ERROR_SERVER_CLOSED); + } + const listener = Deno.listenTls({ + port: this.#port ?? 443, + hostname: this.#host ?? "0.0.0.0", + certFile, + keyFile, + transport: "tcp" + }); + return await this.serve(listener); + } + close() { + if (this.#closed) { + throw new Deno.errors.Http(ERROR_SERVER_CLOSED); + } + this.#closed = true; + for (const listener of this.#listeners){ + try { + listener.close(); + } catch {} + } + this.#listeners.clear(); + this.#acceptBackoffDelayAbortController.abort(); + for (const httpConn of this.#httpConnections){ + this.#closeHttpConn(httpConn); + } + this.#httpConnections.clear(); + } + get closed() { + return this.#closed; + } + get addrs() { + return Array.from(this.#listeners).map((listener)=>listener.addr); + } + async #respond(requestEvent, connInfo) { + let response; + try { + response = await this.#handler(requestEvent.request, connInfo); + if (response.bodyUsed && response.body !== null) { + throw new TypeError("Response body already consumed."); + } + } catch (error) { + response = await this.#onError(error); + } + try { + await requestEvent.respondWith(response); + } catch {} + } + async #serveHttp(httpConn, connInfo1) { + while(!this.#closed){ + let requestEvent1; + try { + requestEvent1 = await httpConn.nextRequest(); + } catch { + break; + } + if (requestEvent1 === null) { + break; + } + this.#respond(requestEvent1, connInfo1); + } + this.#closeHttpConn(httpConn); + } + async #accept(listener) { + let acceptBackoffDelay; + while(!this.#closed){ + let conn; + try { + conn = await listener.accept(); + } catch (error1) { + if (error1 instanceof Deno.errors.BadResource || error1 instanceof Deno.errors.InvalidData || error1 instanceof Deno.errors.UnexpectedEof || error1 instanceof Deno.errors.ConnectionReset || error1 instanceof Deno.errors.NotConnected) { + if (!acceptBackoffDelay) { + acceptBackoffDelay = INITIAL_ACCEPT_BACKOFF_DELAY; + } else { + acceptBackoffDelay *= 2; + } + if (acceptBackoffDelay >= 1000) { + acceptBackoffDelay = MAX_ACCEPT_BACKOFF_DELAY; + } + try { + await delay(acceptBackoffDelay, { + signal: this.#acceptBackoffDelayAbortController.signal + }); + } catch (err) { + if (!(err instanceof DOMException && err.name === "AbortError")) { + throw err; + } + } + continue; + } + throw error1; + } + acceptBackoffDelay = undefined; + let httpConn1; + try { + httpConn1 = Deno.serveHttp(conn); + } catch { + continue; + } + this.#trackHttpConnection(httpConn1); + const connInfo2 = { + localAddr: conn.localAddr, + remoteAddr: conn.remoteAddr + }; + this.#serveHttp(httpConn1, connInfo2); + } + } + #closeHttpConn(httpConn2) { + this.#untrackHttpConnection(httpConn2); + try { + httpConn2.close(); + } catch {} + } + #trackListener(listener1) { + this.#listeners.add(listener1); + } + #untrackListener(listener2) { + this.#listeners.delete(listener2); + } + #trackHttpConnection(httpConn3) { + this.#httpConnections.add(httpConn3); + } + #untrackHttpConnection(httpConn4) { + this.#httpConnections.delete(httpConn4); + } +} +function hostnameForDisplay(hostname) { + return hostname === "0.0.0.0" ? "localhost" : hostname; +} +async function serve(handler, options = {}) { + let port = options.port ?? 8000; + const hostname = options.hostname ?? "0.0.0.0"; + const server = new Server({ + port, + hostname, + handler, + onError: options.onError + }); + options?.signal?.addEventListener("abort", ()=>server.close(), { + once: true + }); + const s = server.listenAndServe(); + port = server.addrs[0].port; + if ("onListen" in options) { + options.onListen?.({ + port, + hostname + }); + } else { + console.log(`Listening on http://${hostnameForDisplay(hostname)}:${port}/`); + } + return await s; +} +async function serveTls(handler, options) { + if (!options.key && !options.keyFile) { + throw new Error("TLS config is given, but 'key' is missing."); + } + if (!options.cert && !options.certFile) { + throw new Error("TLS config is given, but 'cert' is missing."); + } + let port = options.port ?? 8443; + const hostname = options.hostname ?? "0.0.0.0"; + const server = new Server({ + port, + hostname, + handler, + onError: options.onError + }); + options?.signal?.addEventListener("abort", ()=>server.close(), { + once: true + }); + const key = options.key || Deno.readTextFileSync(options.keyFile); + const cert = options.cert || Deno.readTextFileSync(options.certFile); + const listener = Deno.listenTls({ + port, + hostname, + cert, + key, + transport: "tcp" + }); + const s = server.serve(listener); + port = server.addrs[0].port; + if ("onListen" in options) { + options.onListen?.({ + port, + hostname + }); + } else { + console.log(`Listening on https://${hostnameForDisplay(hostname)}:${port}/`); + } + return await s; +} +var Status; +(function(Status) { + Status[Status["Continue"] = 100] = "Continue"; + Status[Status["SwitchingProtocols"] = 101] = "SwitchingProtocols"; + Status[Status["Processing"] = 102] = "Processing"; + Status[Status["EarlyHints"] = 103] = "EarlyHints"; + Status[Status["OK"] = 200] = "OK"; + Status[Status["Created"] = 201] = "Created"; + Status[Status["Accepted"] = 202] = "Accepted"; + Status[Status["NonAuthoritativeInfo"] = 203] = "NonAuthoritativeInfo"; + Status[Status["NoContent"] = 204] = "NoContent"; + Status[Status["ResetContent"] = 205] = "ResetContent"; + Status[Status["PartialContent"] = 206] = "PartialContent"; + Status[Status["MultiStatus"] = 207] = "MultiStatus"; + Status[Status["AlreadyReported"] = 208] = "AlreadyReported"; + Status[Status["IMUsed"] = 226] = "IMUsed"; + Status[Status["MultipleChoices"] = 300] = "MultipleChoices"; + Status[Status["MovedPermanently"] = 301] = "MovedPermanently"; + Status[Status["Found"] = 302] = "Found"; + Status[Status["SeeOther"] = 303] = "SeeOther"; + Status[Status["NotModified"] = 304] = "NotModified"; + Status[Status["UseProxy"] = 305] = "UseProxy"; + Status[Status["TemporaryRedirect"] = 307] = "TemporaryRedirect"; + Status[Status["PermanentRedirect"] = 308] = "PermanentRedirect"; + Status[Status["BadRequest"] = 400] = "BadRequest"; + Status[Status["Unauthorized"] = 401] = "Unauthorized"; + Status[Status["PaymentRequired"] = 402] = "PaymentRequired"; + Status[Status["Forbidden"] = 403] = "Forbidden"; + Status[Status["NotFound"] = 404] = "NotFound"; + Status[Status["MethodNotAllowed"] = 405] = "MethodNotAllowed"; + Status[Status["NotAcceptable"] = 406] = "NotAcceptable"; + Status[Status["ProxyAuthRequired"] = 407] = "ProxyAuthRequired"; + Status[Status["RequestTimeout"] = 408] = "RequestTimeout"; + Status[Status["Conflict"] = 409] = "Conflict"; + Status[Status["Gone"] = 410] = "Gone"; + Status[Status["LengthRequired"] = 411] = "LengthRequired"; + Status[Status["PreconditionFailed"] = 412] = "PreconditionFailed"; + Status[Status["RequestEntityTooLarge"] = 413] = "RequestEntityTooLarge"; + Status[Status["RequestURITooLong"] = 414] = "RequestURITooLong"; + Status[Status["UnsupportedMediaType"] = 415] = "UnsupportedMediaType"; + Status[Status["RequestedRangeNotSatisfiable"] = 416] = "RequestedRangeNotSatisfiable"; + Status[Status["ExpectationFailed"] = 417] = "ExpectationFailed"; + Status[Status["Teapot"] = 418] = "Teapot"; + Status[Status["MisdirectedRequest"] = 421] = "MisdirectedRequest"; + Status[Status["UnprocessableEntity"] = 422] = "UnprocessableEntity"; + Status[Status["Locked"] = 423] = "Locked"; + Status[Status["FailedDependency"] = 424] = "FailedDependency"; + Status[Status["TooEarly"] = 425] = "TooEarly"; + Status[Status["UpgradeRequired"] = 426] = "UpgradeRequired"; + Status[Status["PreconditionRequired"] = 428] = "PreconditionRequired"; + Status[Status["TooManyRequests"] = 429] = "TooManyRequests"; + Status[Status["RequestHeaderFieldsTooLarge"] = 431] = "RequestHeaderFieldsTooLarge"; + Status[Status["UnavailableForLegalReasons"] = 451] = "UnavailableForLegalReasons"; + Status[Status["InternalServerError"] = 500] = "InternalServerError"; + Status[Status["NotImplemented"] = 501] = "NotImplemented"; + Status[Status["BadGateway"] = 502] = "BadGateway"; + Status[Status["ServiceUnavailable"] = 503] = "ServiceUnavailable"; + Status[Status["GatewayTimeout"] = 504] = "GatewayTimeout"; + Status[Status["HTTPVersionNotSupported"] = 505] = "HTTPVersionNotSupported"; + Status[Status["VariantAlsoNegotiates"] = 506] = "VariantAlsoNegotiates"; + Status[Status["InsufficientStorage"] = 507] = "InsufficientStorage"; + Status[Status["LoopDetected"] = 508] = "LoopDetected"; + Status[Status["NotExtended"] = 510] = "NotExtended"; + Status[Status["NetworkAuthenticationRequired"] = 511] = "NetworkAuthenticationRequired"; +})(Status || (Status = {})); +const STATUS_TEXT = { + [Status.Accepted]: "Accepted", + [Status.AlreadyReported]: "Already Reported", + [Status.BadGateway]: "Bad Gateway", + [Status.BadRequest]: "Bad Request", + [Status.Conflict]: "Conflict", + [Status.Continue]: "Continue", + [Status.Created]: "Created", + [Status.EarlyHints]: "Early Hints", + [Status.ExpectationFailed]: "Expectation Failed", + [Status.FailedDependency]: "Failed Dependency", + [Status.Forbidden]: "Forbidden", + [Status.Found]: "Found", + [Status.GatewayTimeout]: "Gateway Timeout", + [Status.Gone]: "Gone", + [Status.HTTPVersionNotSupported]: "HTTP Version Not Supported", + [Status.IMUsed]: "IM Used", + [Status.InsufficientStorage]: "Insufficient Storage", + [Status.InternalServerError]: "Internal Server Error", + [Status.LengthRequired]: "Length Required", + [Status.Locked]: "Locked", + [Status.LoopDetected]: "Loop Detected", + [Status.MethodNotAllowed]: "Method Not Allowed", + [Status.MisdirectedRequest]: "Misdirected Request", + [Status.MovedPermanently]: "Moved Permanently", + [Status.MultiStatus]: "Multi Status", + [Status.MultipleChoices]: "Multiple Choices", + [Status.NetworkAuthenticationRequired]: "Network Authentication Required", + [Status.NoContent]: "No Content", + [Status.NonAuthoritativeInfo]: "Non Authoritative Info", + [Status.NotAcceptable]: "Not Acceptable", + [Status.NotExtended]: "Not Extended", + [Status.NotFound]: "Not Found", + [Status.NotImplemented]: "Not Implemented", + [Status.NotModified]: "Not Modified", + [Status.OK]: "OK", + [Status.PartialContent]: "Partial Content", + [Status.PaymentRequired]: "Payment Required", + [Status.PermanentRedirect]: "Permanent Redirect", + [Status.PreconditionFailed]: "Precondition Failed", + [Status.PreconditionRequired]: "Precondition Required", + [Status.Processing]: "Processing", + [Status.ProxyAuthRequired]: "Proxy Auth Required", + [Status.RequestEntityTooLarge]: "Request Entity Too Large", + [Status.RequestHeaderFieldsTooLarge]: "Request Header Fields Too Large", + [Status.RequestTimeout]: "Request Timeout", + [Status.RequestURITooLong]: "Request URI Too Long", + [Status.RequestedRangeNotSatisfiable]: "Requested Range Not Satisfiable", + [Status.ResetContent]: "Reset Content", + [Status.SeeOther]: "See Other", + [Status.ServiceUnavailable]: "Service Unavailable", + [Status.SwitchingProtocols]: "Switching Protocols", + [Status.Teapot]: "I'm a teapot", + [Status.TemporaryRedirect]: "Temporary Redirect", + [Status.TooEarly]: "Too Early", + [Status.TooManyRequests]: "Too Many Requests", + [Status.Unauthorized]: "Unauthorized", + [Status.UnavailableForLegalReasons]: "Unavailable For Legal Reasons", + [Status.UnprocessableEntity]: "Unprocessable Entity", + [Status.UnsupportedMediaType]: "Unsupported Media Type", + [Status.UpgradeRequired]: "Upgrade Required", + [Status.UseProxy]: "Use Proxy", + [Status.VariantAlsoNegotiates]: "Variant Also Negotiates" +}; +const { hasOwn } = Object; +function get(obj, key) { + if (hasOwn(obj, key)) { + return obj[key]; + } +} +function getForce(obj, key) { + const v = get(obj, key); + assert(v != null); + return v; +} +function isNumber(x) { + if (typeof x === "number") return true; + if (/^0x[0-9a-f]+$/i.test(String(x))) return true; + return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(String(x)); +} +function hasKey(obj, keys) { + let o = obj; + keys.slice(0, -1).forEach((key)=>{ + o = get(o, key) ?? {}; + }); + const key = keys[keys.length - 1]; + return hasOwn(o, key); +} +function parse3(args, { "--": doubleDash = false , alias ={} , boolean: __boolean = false , default: defaults = {} , stopEarly =false , string =[] , collect =[] , negatable =[] , unknown =(i)=>i } = {}) { + const aliases = {}; + const flags = { + bools: {}, + strings: {}, + unknownFn: unknown, + allBools: false, + collect: {}, + negatable: {} + }; + if (alias !== undefined) { + for(const key in alias){ + const val = getForce(alias, key); + if (typeof val === "string") { + aliases[key] = [ + val + ]; + } else { + aliases[key] = val; + } + for (const alias1 of getForce(aliases, key)){ + aliases[alias1] = [ + key + ].concat(aliases[key].filter((y)=>alias1 !== y)); + } + } + } + if (__boolean !== undefined) { + if (typeof __boolean === "boolean") { + flags.allBools = !!__boolean; + } else { + const booleanArgs = typeof __boolean === "string" ? [ + __boolean + ] : __boolean; + for (const key1 of booleanArgs.filter(Boolean)){ + flags.bools[key1] = true; + const alias2 = get(aliases, key1); + if (alias2) { + for (const al of alias2){ + flags.bools[al] = true; + } + } + } + } + } + if (string !== undefined) { + const stringArgs = typeof string === "string" ? [ + string + ] : string; + for (const key2 of stringArgs.filter(Boolean)){ + flags.strings[key2] = true; + const alias3 = get(aliases, key2); + if (alias3) { + for (const al1 of alias3){ + flags.strings[al1] = true; + } + } + } + } + if (collect !== undefined) { + const collectArgs = typeof collect === "string" ? [ + collect + ] : collect; + for (const key3 of collectArgs.filter(Boolean)){ + flags.collect[key3] = true; + const alias4 = get(aliases, key3); + if (alias4) { + for (const al2 of alias4){ + flags.collect[al2] = true; + } + } + } + } + if (negatable !== undefined) { + const negatableArgs = typeof negatable === "string" ? [ + negatable + ] : negatable; + for (const key4 of negatableArgs.filter(Boolean)){ + flags.negatable[key4] = true; + const alias5 = get(aliases, key4); + if (alias5) { + for (const al3 of alias5){ + flags.negatable[al3] = true; + } + } + } + } + const argv = { + _: [] + }; + function argDefined(key, arg) { + return flags.allBools && /^--[^=]+$/.test(arg) || get(flags.bools, key) || !!get(flags.strings, key) || !!get(aliases, key); + } + function setKey(obj, name, value, collect = true) { + let o = obj; + const keys = name.split("."); + keys.slice(0, -1).forEach(function(key) { + if (get(o, key) === undefined) { + o[key] = {}; + } + o = get(o, key); + }); + const key = keys[keys.length - 1]; + const collectable = collect && !!get(flags.collect, name); + if (!collectable) { + o[key] = value; + } else if (get(o, key) === undefined) { + o[key] = [ + value + ]; + } else if (Array.isArray(get(o, key))) { + o[key].push(value); + } else { + o[key] = [ + get(o, key), + value + ]; + } + } + function setArg(key, val, arg = undefined, collect) { + if (arg && flags.unknownFn && !argDefined(key, arg)) { + if (flags.unknownFn(arg, key, val) === false) return; + } + const value = !get(flags.strings, key) && isNumber(val) ? Number(val) : val; + setKey(argv, key, value, collect); + const alias = get(aliases, key); + if (alias) { + for (const x of alias){ + setKey(argv, x, value, collect); + } + } + } + function aliasIsBoolean(key) { + return getForce(aliases, key).some((x)=>typeof get(flags.bools, x) === "boolean"); + } + let notFlags = []; + if (args.includes("--")) { + notFlags = args.slice(args.indexOf("--") + 1); + args = args.slice(0, args.indexOf("--")); + } + for(let i = 0; i < args.length; i++){ + const arg = args[i]; + if (/^--.+=/.test(arg)) { + const m = arg.match(/^--([^=]+)=(.*)$/s); + assert(m != null); + const [, key5, value] = m; + if (flags.bools[key5]) { + const booleanValue = value !== "false"; + setArg(key5, booleanValue, arg); + } else { + setArg(key5, value, arg); + } + } else if (/^--no-.+/.test(arg) && get(flags.negatable, arg.replace(/^--no-/, ""))) { + const m1 = arg.match(/^--no-(.+)/); + assert(m1 != null); + setArg(m1[1], false, arg, false); + } else if (/^--.+/.test(arg)) { + const m2 = arg.match(/^--(.+)/); + assert(m2 != null); + const [, key6] = m2; + const next = args[i + 1]; + if (next !== undefined && !/^-/.test(next) && !get(flags.bools, key6) && !flags.allBools && (get(aliases, key6) ? !aliasIsBoolean(key6) : true)) { + setArg(key6, next, arg); + i++; + } else if (/^(true|false)$/.test(next)) { + setArg(key6, next === "true", arg); + i++; + } else { + setArg(key6, get(flags.strings, key6) ? "" : true, arg); + } + } else if (/^-[^-]+/.test(arg)) { + const letters = arg.slice(1, -1).split(""); + let broken = false; + for(let j = 0; j < letters.length; j++){ + const next1 = arg.slice(j + 2); + if (next1 === "-") { + setArg(letters[j], next1, arg); + continue; + } + if (/[A-Za-z]/.test(letters[j]) && /=/.test(next1)) { + setArg(letters[j], next1.split(/=(.+)/)[1], arg); + broken = true; + break; + } + if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next1)) { + setArg(letters[j], next1, arg); + broken = true; + break; + } + if (letters[j + 1] && letters[j + 1].match(/\W/)) { + setArg(letters[j], arg.slice(j + 2), arg); + broken = true; + break; + } else { + setArg(letters[j], get(flags.strings, letters[j]) ? "" : true, arg); + } + } + const [key7] = arg.slice(-1); + if (!broken && key7 !== "-") { + if (args[i + 1] && !/^(-|--)[^-]/.test(args[i + 1]) && !get(flags.bools, key7) && (get(aliases, key7) ? !aliasIsBoolean(key7) : true)) { + setArg(key7, args[i + 1], arg); + i++; + } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { + setArg(key7, args[i + 1] === "true", arg); + i++; + } else { + setArg(key7, get(flags.strings, key7) ? "" : true, arg); + } + } + } else { + if (!flags.unknownFn || flags.unknownFn(arg) !== false) { + argv._.push(flags.strings["_"] ?? !isNumber(arg) ? arg : Number(arg)); + } + if (stopEarly) { + argv._.push(...args.slice(i + 1)); + break; + } + } + } + for (const [key8, value1] of Object.entries(defaults)){ + if (!hasKey(argv, key8.split("."))) { + setKey(argv, key8, value1); + if (aliases[key8]) { + for (const x of aliases[key8]){ + setKey(argv, x, value1); + } + } + } + } + for (const key9 of Object.keys(flags.bools)){ + if (!hasKey(argv, key9.split("."))) { + const value2 = get(flags.collect, key9) ? [] : false; + setKey(argv, key9, value2, false); + } + } + for (const key10 of Object.keys(flags.strings)){ + if (!hasKey(argv, key10.split(".")) && get(flags.collect, key10)) { + setKey(argv, key10, [], false); + } + } + if (doubleDash) { + argv["--"] = []; + for (const key11 of notFlags){ + argv["--"].push(key11); + } + } else { + for (const key12 of notFlags){ + argv._.push(key12); + } + } + return argv; +} +const { Deno: Deno1 } = globalThis; +const noColor = typeof Deno1?.noColor === "boolean" ? Deno1.noColor : true; +let enabled = !noColor; +function code(open, close) { + return { + open: `\x1b[${open.join(";")}m`, + close: `\x1b[${close}m`, + regexp: new RegExp(`\\x1b\\[${close}m`, "g") + }; +} +function run(str, code) { + return enabled ? `${code.open}${str.replace(code.regexp, code.open)}${code.close}` : str; +} +function red(str) { + return run(str, code([ + 31 + ], 39)); +} +new RegExp([ + "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", + "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))" +].join("|"), "g"); +function filterInPlace(array, predicate) { + let outputIndex = 0; + for (const cur of array){ + if (!predicate(cur)) { + continue; + } + array[outputIndex] = cur; + outputIndex += 1; + } + array.splice(outputIndex); + return array; +} +const { hasOwn: hasOwn1 } = Object; +function deepMerge(record, other, options) { + return deepMergeInternal(record, other, new Set(), options); +} +function deepMergeInternal(record, other, seen, options) { + const result = {}; + const keys = new Set([ + ...getKeys(record), + ...getKeys(other) + ]); + for (const key of keys){ + if (key === "__proto__") { + continue; + } + const a = record[key]; + if (!hasOwn1(other, key)) { + result[key] = a; + continue; + } + const b = other[key]; + if (isNonNullObject(a) && isNonNullObject(b) && !seen.has(a) && !seen.has(b)) { + seen.add(a); + seen.add(b); + result[key] = mergeObjects(a, b, seen, options); + continue; + } + result[key] = b; + } + return result; +} +function mergeObjects(left, right, seen, options = { + arrays: "merge", + sets: "merge", + maps: "merge" +}) { + if (isMergeable(left) && isMergeable(right)) { + return deepMergeInternal(left, right, seen, options); + } + if (isIterable(left) && isIterable(right)) { + if (Array.isArray(left) && Array.isArray(right)) { + if (options.arrays === "merge") { + return left.concat(right); + } + return right; + } + if (left instanceof Map && right instanceof Map) { + if (options.maps === "merge") { + return new Map([ + ...left, + ...right + ]); + } + return right; + } + if (left instanceof Set && right instanceof Set) { + if (options.sets === "merge") { + return new Set([ + ...left, + ...right + ]); + } + return right; + } + } + return right; +} +function isMergeable(value) { + return Object.getPrototypeOf(value) === Object.prototype; +} +function isIterable(value) { + return typeof value[Symbol.iterator] === "function"; +} +function isNonNullObject(value) { + return value !== null && typeof value === "object"; +} +function getKeys(record) { + const ret = Object.getOwnPropertySymbols(record); + filterInPlace(ret, (key)=>Object.prototype.propertyIsEnumerable.call(record, key)); + ret.push(...Object.keys(record)); + return ret; +} +function compareEtag(a, b) { + if (a === b) { + return true; + } + if (a.startsWith("W/") && !b.startsWith("W/")) { + return a.slice(2) === b; + } + if (!a.startsWith("W/") && b.startsWith("W/")) { + return a === b.slice(2); + } + return false; +} +function createCommonResponse(status, body, init) { + if (body === undefined) { + body = STATUS_TEXT[status]; + } + init = deepMerge({ + status, + statusText: STATUS_TEXT[status] + }, init ?? {}); + return new Response(body, init); +} +const hexTable = new TextEncoder().encode("0123456789abcdef"); +function encode(src) { + const dst = new Uint8Array(src.length * 2); + for(let i = 0; i < dst.length; i++){ + const v = src[i]; + dst[i * 2] = hexTable[v >> 4]; + dst[i * 2 + 1] = hexTable[v & 0x0f]; + } + return dst; +} +const base64abc = [ + "A", + "B", + "C", + "D", + "E", + "F", + "G", + "H", + "I", + "J", + "K", + "L", + "M", + "N", + "O", + "P", + "Q", + "R", + "S", + "T", + "U", + "V", + "W", + "X", + "Y", + "Z", + "a", + "b", + "c", + "d", + "e", + "f", + "g", + "h", + "i", + "j", + "k", + "l", + "m", + "n", + "o", + "p", + "q", + "r", + "s", + "t", + "u", + "v", + "w", + "x", + "y", + "z", + "0", + "1", + "2", + "3", + "4", + "5", + "6", + "7", + "8", + "9", + "+", + "/" +]; +function encode1(data) { + const uint8 = typeof data === "string" ? new TextEncoder().encode(data) : data instanceof Uint8Array ? data : new Uint8Array(data); + let result = "", i; + const l = uint8.length; + for(i = 2; i < l; i += 3){ + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4 | uint8[i - 1] >> 4]; + result += base64abc[(uint8[i - 1] & 0x0f) << 2 | uint8[i] >> 6]; + result += base64abc[uint8[i] & 0x3f]; + } + if (i === l + 1) { + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4]; + result += "=="; + } + if (i === l) { + result += base64abc[uint8[i - 2] >> 2]; + result += base64abc[(uint8[i - 2] & 0x03) << 4 | uint8[i - 1] >> 4]; + result += base64abc[(uint8[i - 1] & 0x0f) << 2]; + result += "="; + } + return result; +} +const decoder = new TextDecoder(); +function toHashString(hash, encoding = "hex") { + switch(encoding){ + case "hex": + return decoder.decode(encode(new Uint8Array(hash))); + case "base64": + return encode1(hash); + } +} +let wasm; +const heap = new Array(32).fill(undefined); +heap.push(undefined, null, true, false); +function getObject(idx) { + return heap[idx]; +} +let heap_next = heap.length; +function dropObject(idx) { + if (idx < 36) return; + heap[idx] = heap_next; + heap_next = idx; +} +function takeObject(idx) { + const ret = getObject(idx); + dropObject(idx); + return ret; +} +function addHeapObject(obj) { + if (heap_next === heap.length) heap.push(heap.length + 1); + const idx = heap_next; + heap_next = heap[idx]; + heap[idx] = obj; + return idx; +} +const cachedTextDecoder = new TextDecoder("utf-8", { + ignoreBOM: true, + fatal: true +}); +cachedTextDecoder.decode(); +let cachedUint8Memory0 = new Uint8Array(); +function getUint8Memory0() { + if (cachedUint8Memory0.byteLength === 0) { + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + } + return cachedUint8Memory0; +} +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} +let WASM_VECTOR_LEN = 0; +const cachedTextEncoder = new TextEncoder("utf-8"); +const encodeString = function(arg, view) { + return cachedTextEncoder.encodeInto(arg, view); +}; +function passStringToWasm0(arg, malloc, realloc) { + if (realloc === undefined) { + const buf = cachedTextEncoder.encode(arg); + const ptr = malloc(buf.length); + getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf); + WASM_VECTOR_LEN = buf.length; + return ptr; + } + let len = arg.length; + let ptr1 = malloc(len); + const mem = getUint8Memory0(); + let offset = 0; + for(; offset < len; offset++){ + const code = arg.charCodeAt(offset); + if (code > 0x7F) break; + mem[ptr1 + offset] = code; + } + if (offset !== len) { + if (offset !== 0) { + arg = arg.slice(offset); + } + ptr1 = realloc(ptr1, len, len = offset + arg.length * 3); + const view = getUint8Memory0().subarray(ptr1 + offset, ptr1 + len); + const ret = encodeString(arg, view); + offset += ret.written; + } + WASM_VECTOR_LEN = offset; + return ptr1; +} +function isLikeNone(x) { + return x === undefined || x === null; +} +let cachedInt32Memory0 = new Int32Array(); +function getInt32Memory0() { + if (cachedInt32Memory0.byteLength === 0) { + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + } + return cachedInt32Memory0; +} +function getArrayU8FromWasm0(ptr, len) { + return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len); +} +function digest(algorithm, data, length) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(algorithm, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.digest(retptr, ptr0, len0, addHeapObject(data), !isLikeNone(length), isLikeNone(length) ? 0 : length); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v1 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v1; + } finally{ + wasm.__wbindgen_add_to_stack_pointer(16); + } +} +const DigestContextFinalization = new FinalizationRegistry((ptr)=>wasm.__wbg_digestcontext_free(ptr)); +class DigestContext { + static __wrap(ptr) { + const obj = Object.create(DigestContext.prototype); + obj.ptr = ptr; + DigestContextFinalization.register(obj, obj.ptr, obj); + return obj; + } + __destroy_into_raw() { + const ptr = this.ptr; + this.ptr = 0; + DigestContextFinalization.unregister(this); + return ptr; + } + free() { + const ptr = this.__destroy_into_raw(); + wasm.__wbg_digestcontext_free(ptr); + } + constructor(algorithm){ + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + const ptr0 = passStringToWasm0(algorithm, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + wasm.digestcontext_new(retptr, ptr0, len0); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + if (r2) { + throw takeObject(r1); + } + return DigestContext.__wrap(r0); + } finally{ + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + update(data) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.digestcontext_update(retptr, this.ptr, addHeapObject(data)); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally{ + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + digest(length) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.digestcontext_digest(retptr, this.ptr, !isLikeNone(length), isLikeNone(length) ? 0 : length); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v0 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v0; + } finally{ + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + digestAndReset(length) { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.digestcontext_digestAndReset(retptr, this.ptr, !isLikeNone(length), isLikeNone(length) ? 0 : length); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v0 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v0; + } finally{ + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + digestAndDrop(length) { + try { + const ptr = this.__destroy_into_raw(); + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.digestcontext_digestAndDrop(retptr, ptr, !isLikeNone(length), isLikeNone(length) ? 0 : length); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + var r2 = getInt32Memory0()[retptr / 4 + 2]; + var r3 = getInt32Memory0()[retptr / 4 + 3]; + if (r3) { + throw takeObject(r2); + } + var v0 = getArrayU8FromWasm0(r0, r1).slice(); + wasm.__wbindgen_free(r0, r1 * 1); + return v0; + } finally{ + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + reset() { + try { + const retptr = wasm.__wbindgen_add_to_stack_pointer(-16); + wasm.digestcontext_reset(retptr, this.ptr); + var r0 = getInt32Memory0()[retptr / 4 + 0]; + var r1 = getInt32Memory0()[retptr / 4 + 1]; + if (r1) { + throw takeObject(r0); + } + } finally{ + wasm.__wbindgen_add_to_stack_pointer(16); + } + } + clone() { + const ret = wasm.digestcontext_clone(this.ptr); + return DigestContext.__wrap(ret); + } +} +const imports = { + __wbindgen_placeholder__: { + __wbg_new_db254ae0a1bb0ff5: function(arg0, arg1) { + const ret = new TypeError(getStringFromWasm0(arg0, arg1)); + return addHeapObject(ret); + }, + __wbindgen_object_drop_ref: function(arg0) { + takeObject(arg0); + }, + __wbg_byteLength_87a0436a74adc26c: function(arg0) { + const ret = getObject(arg0).byteLength; + return ret; + }, + __wbg_byteOffset_4477d54710af6f9b: function(arg0) { + const ret = getObject(arg0).byteOffset; + return ret; + }, + __wbg_buffer_21310ea17257b0b4: function(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }, + __wbg_newwithbyteoffsetandlength_d9aa266703cb98be: function(arg0, arg1, arg2) { + const ret = new Uint8Array(getObject(arg0), arg1 >>> 0, arg2 >>> 0); + return addHeapObject(ret); + }, + __wbg_length_9e1ae1900cb0fbd5: function(arg0) { + const ret = getObject(arg0).length; + return ret; + }, + __wbindgen_memory: function() { + const ret = wasm.memory; + return addHeapObject(ret); + }, + __wbg_buffer_3f3d764d4747d564: function(arg0) { + const ret = getObject(arg0).buffer; + return addHeapObject(ret); + }, + __wbg_new_8c3f0052272a457a: function(arg0) { + const ret = new Uint8Array(getObject(arg0)); + return addHeapObject(ret); + }, + __wbg_set_83db9690f9353e79: function(arg0, arg1, arg2) { + getObject(arg0).set(getObject(arg1), arg2 >>> 0); + }, + __wbindgen_throw: function(arg0, arg1) { + throw new Error(getStringFromWasm0(arg0, arg1)); + } + } +}; +function instantiate() { + return instantiateWithInstance().exports; +} +let instanceWithExports; +function instantiateWithInstance() { + if (instanceWithExports == null) { + const instance = instantiateInstance(); + wasm = instance.exports; + cachedInt32Memory0 = new Int32Array(wasm.memory.buffer); + cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer); + instanceWithExports = { + instance, + exports: { + digest, + DigestContext + } + }; + } + return instanceWithExports; +} +function instantiateInstance() { + const wasmBytes = base64decode("\ +AGFzbQEAAAABrIGAgAAZYAAAYAABf2ABfwBgAX8Bf2ABfwF+YAJ/fwBgAn9/AX9gA39/fwBgA39/fw\ +F/YAR/f39/AGAEf39/fwF/YAV/f39/fwBgBX9/f39/AX9gBn9/f39/fwBgBn9/f39/fwF/YAV/f39+\ +fwBgB39/f35/f38Bf2ADf39+AGAFf39+f38AYAV/f31/fwBgBX9/fH9/AGACf34AYAR/fn9/AGAEf3\ +1/fwBgBH98f38AAqSFgIAADBhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmdfbmV3X2RiMjU0\ +YWUwYTFiYjBmZjUABhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18aX193YmluZGdlbl9vYmplY3RfZH\ +JvcF9yZWYAAhhfX3diaW5kZ2VuX3BsYWNlaG9sZGVyX18hX193YmdfYnl0ZUxlbmd0aF84N2EwNDM2\ +YTc0YWRjMjZjAAMYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fIV9fd2JnX2J5dGVPZmZzZXRfNDQ3N2\ +Q1NDcxMGFmNmY5YgADGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXx1fX3diZ19idWZmZXJfMjEzMTBl\ +YTE3MjU3YjBiNAADGF9fd2JpbmRnZW5fcGxhY2Vob2xkZXJfXzFfX3diZ19uZXd3aXRoYnl0ZW9mZn\ +NldGFuZGxlbmd0aF9kOWFhMjY2NzAzY2I5OGJlAAgYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9f\ +d2JnX2xlbmd0aF85ZTFhZTE5MDBjYjBmYmQ1AAMYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEV9fd2\ +JpbmRnZW5fbWVtb3J5AAEYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fHV9fd2JnX2J1ZmZlcl8zZjNk\ +NzY0ZDQ3NDdkNTY0AAMYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX25ld184YzNmMDA1Mj\ +I3MmE0NTdhAAMYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fGl9fd2JnX3NldF84M2RiOTY5MGY5MzUz\ +ZTc5AAcYX193YmluZGdlbl9wbGFjZWhvbGRlcl9fEF9fd2JpbmRnZW5fdGhyb3cABQOPgYCAAI0BCw\ +cLBwMJEQUHBwUHDwMHBQgFEAUHBQIHBQIGBwYHFQgHDgcHBwYBAQEBBwgHBwcBBwcHAQgHBwcHBwUC\ +BwcHBwcBAQcHBQ0IBwkHCQEBAQEBBQkNCwkFBQUFBQUGBgcHBwcCAggHBwUCCgAFAgMCAg4MCwwLCx\ +MUEgkICAYGBQcHAAYDAAAFCAgIBAACBIWAgIAAAXABFRUFg4CAgAABABEGiYCAgAABfwFBgIDAAAsH\ +uYKAgAAOBm1lbW9yeQIABmRpZ2VzdABSGF9fd2JnX2RpZ2VzdGNvbnRleHRfZnJlZQBuEWRpZ2VzdG\ +NvbnRleHRfbmV3AFYUZGlnZXN0Y29udGV4dF91cGRhdGUAcRRkaWdlc3Rjb250ZXh0X2RpZ2VzdABV\ +HGRpZ2VzdGNvbnRleHRfZGlnZXN0QW5kUmVzZXQAVxtkaWdlc3Rjb250ZXh0X2RpZ2VzdEFuZERyb3\ +AAXhNkaWdlc3Rjb250ZXh0X3Jlc2V0ACETZGlnZXN0Y29udGV4dF9jbG9uZQAQH19fd2JpbmRnZW5f\ +YWRkX3RvX3N0YWNrX3BvaW50ZXIAjwERX193YmluZGdlbl9tYWxsb2MAeRJfX3diaW5kZ2VuX3JlYW\ +xsb2MAhgEPX193YmluZGdlbl9mcmVlAIoBCaaAgIAAAQBBAQsUiAGJASiOAX1ffn98hwGFAYABgQGC\ +AYMBhAGYAWlolgEK//KIgACNAYZ2AhF/An4jAEHAKGsiBSQAAkACQAJAAkACQAJAAkACQAJAAkACQA\ +JAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABDhgAAQIDBAUGBwgJCgsMDQ4PEBES\ +ExQVFhcAC0HQARAZIgZFDRggBUHQE2pBOGogAkE4aikDADcDACAFQdATakEwaiACQTBqKQMANwMAIA\ +VB0BNqQShqIAJBKGopAwA3AwAgBUHQE2pBIGogAkEgaikDADcDACAFQdATakEYaiACQRhqKQMANwMA\ +IAVB0BNqQRBqIAJBEGopAwA3AwAgBUHQE2pBCGogAkEIaikDADcDACAFIAIpAwA3A9ATIAIpA0AhFi\ +AFQdATakHIAGogAkHIAGoQYiAFIBY3A5AUIAYgBUHQE2pB0AEQlAEaDBcLQdABEBkiBkUNFyAFQdAT\ +akE4aiACQThqKQMANwMAIAVB0BNqQTBqIAJBMGopAwA3AwAgBUHQE2pBKGogAkEoaikDADcDACAFQd\ +ATakEgaiACQSBqKQMANwMAIAVB0BNqQRhqIAJBGGopAwA3AwAgBUHQE2pBEGogAkEQaikDADcDACAF\ +QdATakEIaiACQQhqKQMANwMAIAUgAikDADcD0BMgAikDQCEWIAVB0BNqQcgAaiACQcgAahBiIAUgFj\ +cDkBQgBiAFQdATakHQARCUARoMFgtB0AEQGSIGRQ0WIAVB0BNqQThqIAJBOGopAwA3AwAgBUHQE2pB\ +MGogAkEwaikDADcDACAFQdATakEoaiACQShqKQMANwMAIAVB0BNqQSBqIAJBIGopAwA3AwAgBUHQE2\ +pBGGogAkEYaikDADcDACAFQdATakEQaiACQRBqKQMANwMAIAVB0BNqQQhqIAJBCGopAwA3AwAgBSAC\ +KQMANwPQEyACKQNAIRYgBUHQE2pByABqIAJByABqEGIgBSAWNwOQFCAGIAVB0BNqQdABEJQBGgwVC0\ +HwABAZIgZFDRUgBUHQE2pBIGogAkEgaikDADcDACAFQdATakEYaiACQRhqKQMANwMAIAVB0BNqQRBq\ +IAJBEGopAwA3AwAgBSACKQMINwPYEyACKQMAIRYgBUHQE2pBKGogAkEoahBRIAUgFjcD0BMgBiAFQd\ +ATakHwABCUARoMFAtB+A4QGSIGRQ0UIAVB0BNqQYgBaiACQYgBaikDADcDACAFQdATakGAAWogAkGA\ +AWopAwA3AwAgBUHQE2pB+ABqIAJB+ABqKQMANwMAIAVB0BNqQRBqIAJBEGopAwA3AwAgBUHQE2pBGG\ +ogAkEYaikDADcDACAFQdATakEgaiACQSBqKQMANwMAIAVB0BNqQTBqIAJBMGopAwA3AwAgBUHQE2pB\ +OGogAkE4aikDADcDACAFQdATakHAAGogAkHAAGopAwA3AwAgBUHQE2pByABqIAJByABqKQMANwMAIA\ +VB0BNqQdAAaiACQdAAaikDADcDACAFQdATakHYAGogAkHYAGopAwA3AwAgBUHQE2pB4ABqIAJB4ABq\ +KQMANwMAIAUgAikDcDcDwBQgBSACKQMINwPYEyAFIAIpAyg3A/gTIAIpAwAhFkEAIQcgBUEANgLgFC\ +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\ +AwA3AAAgAkEIaiAJKQMANwAADBYLIAUgBkHYAhCUASIBQfgOakEMakIANwIAIAFB+A5qQRRqQgA3Ag\ +AgAUH4DmpBHGpCADcCACABQgA3AvwOIAFBADYC+A4gAUH4DmogAUH4DmpBBHJBf3NqQSRqQQdJGkEg\ +IQQgAUEgNgL4DiABQdATakEQaiABQfgOakEQaikDADcDACABQdATakEIaiABQfgOakEIaikDADcDAC\ +ABQdATakEYaiABQfgOakEYaikDADcDACABQdATakEgaiABQfgOakEgaigCADYCACABQfgmakEIaiIJ\ +IAFB0BNqQQxqKQIANwMAIAFB+CZqQRBqIgMgAUHQE2pBFGopAgA3AwAgAUH4JmpBGGoiCCABQdATak\ +EcaikCADcDACABIAEpA/gONwPQEyABIAEpAtQTNwP4JiABQdATaiABQdgCEJQBGiABQdATaiABQZgV\ +aiABQfgmahBBQSAQGSICRQ0WIAIgASkD+CY3AAAgAkEYaiAIKQMANwAAIAJBEGogAykDADcAACACQQ\ +hqIAkpAwA3AAAMFQsgBSAGQbgCEJQBIgFB+A5qQQxqQgA3AgAgAUH4DmpBFGpCADcCACABQfgOakEc\ +akIANwIAIAFB+A5qQSRqQgA3AgAgAUH4DmpBLGpCADcCACABQgA3AvwOIAFBADYC+A4gAUH4DmogAU\ +H4DmpBBHJBf3NqQTRqQQdJGkEwIQQgAUEwNgL4DiABQdATakEQaiABQfgOakEQaikDADcDACABQdAT\ +akEIaiABQfgOakEIaikDADcDACABQdATakEYaiABQfgOakEYaikDADcDACABQdATakEgaiABQfgOak\ +EgaikDADcDACABQdATakEoaiABQfgOakEoaikDADcDACABQdATakEwaiABQfgOakEwaigCADYCACAB\ +QfgmakEIaiIJIAFB0BNqQQxqKQIANwMAIAFB+CZqQRBqIgMgAUHQE2pBFGopAgA3AwAgAUH4JmpBGG\ +oiCCABQdATakEcaikCADcDACABQfgmakEgaiIHIAFB0BNqQSRqKQIANwMAIAFB+CZqQShqIgwgAUHQ\ +E2pBLGopAgA3AwAgASABKQP4DjcD0BMgASABKQLUEzcD+CYgAUHQE2ogAUG4AhCUARogAUHQE2ogAU\ +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\ +ACQRBqIAMoAgA2AAAgAkEIaiAJKQMANwAADA8LIAUgBkHgAhCUASIBQYQPakIANwIAIAFBjA9qQgA3\ +AgAgAUGUD2pBADYCACABQgA3AvwOIAFBADYC+A5BBCECIAFB+A5qIAFB+A5qQQRyQX9zakEgaiEEA0\ +AgAkF/aiICDQALAkAgBEEHSQ0AQRghAgNAIAJBeGoiAg0ACwtBHCEEIAFBHDYC+A4gAUHQE2pBEGog\ +AUH4DmpBEGopAwA3AwAgAUHQE2pBCGogAUH4DmpBCGopAwA3AwAgAUHQE2pBGGogAUH4DmpBGGopAw\ +A3AwAgAUH4JmpBCGoiCSABQdwTaikCADcDACABQfgmakEQaiIDIAFB5BNqKQIANwMAIAFB+CZqQRhq\ +IgggAUHQE2pBHGooAgA2AgAgASABKQP4DjcD0BMgASABKQLUEzcD+CYgAUHQE2ogAUHgAhCUARogAU\ +HQE2ogAUGYFWogAUH4JmoQOUEcEBkiAkUNDyACIAEpA/gmNwAAIAJBGGogCCgCADYAACACQRBqIAMp\ +AwA3AAAgAkEIaiAJKQMANwAADA4LIAUgBkHYAhCUASIBQfgOakEMakIANwIAIAFB+A5qQRRqQgA3Ag\ +AgAUH4DmpBHGpCADcCACABQgA3AvwOIAFBADYC+A4gAUH4DmogAUH4DmpBBHJBf3NqQSRqQQdJGkEg\ +IQQgAUEgNgL4DiABQdATakEQaiABQfgOakEQaikDADcDACABQdATakEIaiABQfgOakEIaikDADcDAC\ +ABQdATakEYaiABQfgOakEYaikDADcDACABQdATakEgaiABQfgOakEgaigCADYCACABQfgmakEIaiIJ\ +IAFB0BNqQQxqKQIANwMAIAFB+CZqQRBqIgMgAUHQE2pBFGopAgA3AwAgAUH4JmpBGGoiCCABQdATak\ +EcaikCADcDACABIAEpA/gONwPQEyABIAEpAtQTNwP4JiABQdATaiABQdgCEJQBGiABQdATaiABQZgV\ +aiABQfgmahBCQSAQGSICRQ0OIAIgASkD+CY3AAAgAkEYaiAIKQMANwAAIAJBEGogAykDADcAACACQQ\ +hqIAkpAwA3AAAMDQsgBSAGQbgCEJQBIgFB+A5qQQxqQgA3AgAgAUH4DmpBFGpCADcCACABQfgOakEc\ +akIANwIAIAFB+A5qQSRqQgA3AgAgAUH4DmpBLGpCADcCACABQgA3AvwOIAFBADYC+A4gAUH4DmogAU\ +H4DmpBBHJBf3NqQTRqQQdJGkEwIQQgAUEwNgL4DiABQdATakEQaiABQfgOakEQaikDADcDACABQdAT\ +akEIaiABQfgOakEIaikDADcDACABQdATakEYaiABQfgOakEYaikDADcDACABQdATakEgaiABQfgOak\ +EgaikDADcDACABQdATakEoaiABQfgOakEoaikDADcDACABQdATakEwaiABQfgOakEwaigCADYCACAB\ +QfgmakEIaiIJIAFB0BNqQQxqKQIANwMAIAFB+CZqQRBqIgMgAUHQE2pBFGopAgA3AwAgAUH4JmpBGG\ +oiCCABQdATakEcaikCADcDACABQfgmakEgaiIHIAFB0BNqQSRqKQIANwMAIAFB+CZqQShqIgwgAUHQ\ +E2pBLGopAgA3AwAgASABKQP4DjcD0BMgASABKQLUEzcD+CYgAUHQE2ogAUG4AhCUARogAUHQE2ogAU\ +GYFWogAUH4JmoQSkEwEBkiAkUNDSACIAEpA/gmNwAAIAJBKGogDCkDADcAACACQSBqIAcpAwA3AAAg\ +AkEYaiAIKQMANwAAIAJBEGogAykDADcAACACQQhqIAkpAwA3AAAMDAsgBSAGQZgCEJQBIgFB+A5qQQ\ +xqQgA3AgAgAUH4DmpBFGpCADcCACABQfgOakEcakIANwIAIAFB+A5qQSRqQgA3AgAgAUH4DmpBLGpC\ +ADcCACABQfgOakE0akIANwIAIAFB+A5qQTxqQgA3AgAgAUIANwL8DiABQQA2AvgOIAFB+A5qIAFB+A\ +5qQQRyQX9zakHEAGpBB0kaQcAAIQQgAUHAADYC+A4gAUHQE2ogAUH4DmpBxAAQlAEaIAFB+CZqQThq\ +IgkgAUHQE2pBPGopAgA3AwAgAUH4JmpBMGoiAyABQdATakE0aikCADcDACABQfgmakEoaiIIIAFB0B\ +NqQSxqKQIANwMAIAFB+CZqQSBqIgcgAUHQE2pBJGopAgA3AwAgAUH4JmpBGGoiDCABQdATakEcaikC\ +ADcDACABQfgmakEQaiILIAFB0BNqQRRqKQIANwMAIAFB+CZqQQhqIg0gAUHQE2pBDGopAgA3AwAgAS\ +ABKQLUEzcD+CYgAUHQE2ogAUGYAhCUARogAUHQE2ogAUGYFWogAUH4JmoQTEHAABAZIgJFDQwgAiAB\ +KQP4JjcAACACQThqIAkpAwA3AAAgAkEwaiADKQMANwAAIAJBKGogCCkDADcAACACQSBqIAcpAwA3AA\ +AgAkEYaiAMKQMANwAAIAJBEGogCykDADcAACACQQhqIA0pAwA3AAAMCwsgBSAGQfAAEJQBIQRBBCEC\ +A0AgAkF/aiICDQALAkBBG0EHSQ0AQRghAgNAIAJBeGoiAg0ACwsgBEHQE2ogBEHwABCUARogBEH4Jm\ +pBDGpCADcCACAEQfgmakEUakIANwIAIARB+CZqQRxqQgA3AgAgBEIANwL8JiAEQQA2AvgmIARB+CZq\ +IARB+CZqQQRyQX9zakEkakEHSRogBEEgNgL4JiAEQfgOakEQaiIBIARB+CZqQRBqKQMANwMAIARB+A\ +5qQQhqIgkgBEH4JmpBCGopAwA3AwAgBEH4DmpBGGoiAyAEQfgmakEYaikDADcDACAEQfgOakEgaiAE\ +QfgmakEgaigCADYCACAEQcglakEIaiICIARB+A5qQQxqKQIANwMAIARByCVqQRBqIgggBEH4DmpBFG\ +opAgA3AwAgBEHIJWpBGGoiByAEQfgOakEcaikCADcDACAEIAQpA/gmNwP4DiAEIAQpAvwONwPIJSAE\ +QdATaiAEQfgTaiAEQcglahAnIAMgBygCADYCACABIAgpAwA3AwAgCSACKQMANwMAIAQgBCkDyCU3A/\ +gOQRwQGSICRQ0LIAIgBCkD+A43AAAgAkEYaiADKAIANgAAIAJBEGogASkDADcAACACQQhqIAkpAwA3\ +AAAgBhAiQRwhBAwNCyAFIAZB8AAQlAEiAUHQE2ogAUHwABCUARogAUH4JmpBDGpCADcCACABQfgmak\ +EUakIANwIAIAFB+CZqQRxqQgA3AgAgAUIANwL8JiABQQA2AvgmIAFB+CZqIAFB+CZqQQRyQX9zakEk\ +akEHSRpBICEEIAFBIDYC+CYgAUH4DmpBEGoiCSABQfgmakEQaikDADcDACABQfgOakEIaiIDIAFB+C\ +ZqQQhqKQMANwMAIAFB+A5qQRhqIgggAUH4JmpBGGopAwA3AwAgAUH4DmpBIGogAUH4JmpBIGooAgA2\ +AgAgAUHIJWpBCGoiAiABQfgOakEMaikCADcDACABQcglakEQaiIHIAFB+A5qQRRqKQIANwMAIAFByC\ +VqQRhqIgwgAUH4DmpBHGopAgA3AwAgASABKQP4JjcD+A4gASABKQL8DjcDyCUgAUHQE2ogAUH4E2og\ +AUHIJWoQJyAIIAwpAwA3AwAgCSAHKQMANwMAIAMgAikDADcDACABIAEpA8glNwP4DkEgEBkiAkUNCi\ +ACIAEpA/gONwAAIAJBGGogCCkDADcAACACQRBqIAkpAwA3AAAgAkEIaiADKQMANwAADAkLIAUgBkHY\ +ARCUASIBQdATaiABQdgBEJQBGiABQfgmakEMakIANwIAIAFB+CZqQRRqQgA3AgAgAUH4JmpBHGpCAD\ +cCACABQfgmakEkakIANwIAIAFB+CZqQSxqQgA3AgAgAUH4JmpBNGpCADcCACABQfgmakE8akIANwIA\ +IAFCADcC/CYgAUEANgL4JiABQfgmaiABQfgmakEEckF/c2pBxABqQQdJGiABQcAANgL4JiABQfgOai\ +ABQfgmakHEABCUARogAUGAJmogAUH4DmpBPGopAgA3AwBBMCEEIAFByCVqQTBqIAFB+A5qQTRqKQIA\ +NwMAIAFByCVqQShqIgIgAUH4DmpBLGopAgA3AwAgAUHIJWpBIGoiCSABQfgOakEkaikCADcDACABQc\ +glakEYaiIDIAFB+A5qQRxqKQIANwMAIAFByCVqQRBqIgggAUH4DmpBFGopAgA3AwAgAUHIJWpBCGoi\ +ByABQfgOakEMaikCADcDACABIAEpAvwONwPIJSABQdATaiABQaAUaiABQcglahAjIAFB+A5qQShqIg\ +wgAikDADcDACABQfgOakEgaiILIAkpAwA3AwAgAUH4DmpBGGoiCSADKQMANwMAIAFB+A5qQRBqIgMg\ +CCkDADcDACABQfgOakEIaiIIIAcpAwA3AwAgASABKQPIJTcD+A5BMBAZIgJFDQkgAiABKQP4DjcAAC\ +ACQShqIAwpAwA3AAAgAkEgaiALKQMANwAAIAJBGGogCSkDADcAACACQRBqIAMpAwA3AAAgAkEIaiAI\ +KQMANwAADAgLIAUgBkHYARCUASIBQdATaiABQdgBEJQBGiABQfgmakEMakIANwIAIAFB+CZqQRRqQg\ +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\ +ZCgICAgIDgP4MgDEIIhkKAgICA8B+DhIQgDEIIiEKAgID4D4MgDEIYiEKAgPwHg4QgDEIoiEKA/gOD\ +IAxCOIiEhIQ3AwAgAyABKQAIIgxCOIYgDEIohkKAgICAgIDA/wCDhCAMQhiGQoCAgICA4D+DIAxCCI\ +ZCgICAgPAfg4SEIAxCCIhCgICA+A+DIAxCGIhCgID8B4OEIAxCKIhCgP4DgyAMQjiIhISENwMIIAMg\ +ASkAECIMQjiGIAxCKIZCgICAgICAwP8Ag4QgDEIYhkKAgICAgOA/gyAMQgiGQoCAgIDwH4OEhCAMQg\ +iIQoCAgPgPgyAMQhiIQoCA/AeDhCAMQiiIQoD+A4MgDEI4iISEhDcDECADIAEpABgiDEI4hiAMQiiG\ +QoCAgICAgMD/AIOEIAxCGIZCgICAgIDgP4MgDEIIhkKAgICA8B+DhIQgDEIIiEKAgID4D4MgDEIYiE\ +KAgPwHg4QgDEIoiEKA/gODIAxCOIiEhIQ3AxggAyABKQAgIgxCOIYgDEIohkKAgICAgIDA/wCDhCAM\ +QhiGQoCAgICA4D+DIAxCCIZCgICAgPAfg4SEIAxCCIhCgICA+A+DIAxCGIhCgID8B4OEIAxCKIhCgP\ +4DgyAMQjiIhISENwMgIAMgASkAKCIMQjiGIAxCKIZCgICAgICAwP8Ag4QgDEIYhkKAgICAgOA/gyAM\ +QgiGQoCAgIDwH4OEhCAMQgiIQoCAgPgPgyAMQhiIQoCA/AeDhCAMQiiIQoD+A4MgDEI4iISEhDcDKC\ +ADIAEpAEAiDEI4hiAMQiiGQoCAgICAgMD/AIOEIAxCGIZCgICAgIDgP4MgDEIIhkKAgICA8B+DhIQg\ +DEIIiEKAgID4D4MgDEIYiEKAgPwHg4QgDEIoiEKA/gODIAxCOIiEhIQiDTcDQCADIAEpADgiDEI4hi\ +AMQiiGQoCAgICAgMD/AIOEIAxCGIZCgICAgIDgP4MgDEIIhkKAgICA8B+DhIQgDEIIiEKAgID4D4Mg\ +DEIYiEKAgPwHg4QgDEIoiEKA/gODIAxCOIiEhIQiDjcDOCADIAEpADAiDEI4hiAMQiiGQoCAgICAgM\ +D/AIOEIAxCGIZCgICAgIDgP4MgDEIIhkKAgICA8B+DhIQgDEIIiEKAgID4D4MgDEIYiEKAgPwHg4Qg\ +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\ +VBqAZqECMgBUGAAmpBKGoiCSABKQMANwMAIAVBgAJqQSBqIgogAykDADcDACAFQYACakEYaiIDIAYp\ +AwA3AwAgBUGAAmpBEGoiBiAHKQMANwMAIAVBgAJqQQhqIgcgCCkDADcDACAFIAUpA6gGNwOAAiACQc\ +gAakIANwMAIAJCADcDQCACQThqQQApA+COQDcDACACQTBqQQApA9iOQDcDACACQShqQQApA9COQDcD\ +ACACQSBqQQApA8iOQDcDACACQRhqQQApA8COQDcDACACQRBqQQApA7iOQDcDACACQQhqQQApA7COQD\ +cDACACQQApA6iOQDcDACACQdABakEAOgAAQTAQGSIBRQ0LIAEgBSkDgAI3AAAgAUEoaiAJKQMANwAA\ +IAFBIGogCikDADcAACABQRhqIAMpAwA3AAAgAUEQaiAGKQMANwAAIAFBCGogBykDADcAAAwKCyAFQd\ +gHakEMakIANwIAIAVB2AdqQRRqQgA3AgAgBUHYB2pBHGpCADcCACAFQdgHakEkakIANwIAIAVB2Adq\ +QSxqQgA3AgAgBUHYB2pBNGpCADcCACAFQdgHakE8akIANwIAIAVCADcC3AcgBUEANgLYByAFQdgHai\ +AFQdgHakEEckF/c2pBxABqQQdJGkHAACEEIAVBwAA2AtgHIAVBgAJqIAVB2AdqQcQAEJQBGiAFQagG\ +akE4aiIBIAVBgAJqQTxqKQIANwMAIAVBqAZqQTBqIgMgBUGAAmpBNGopAgA3AwAgBUGoBmpBKGoiBi\ +AFQYACakEsaikCADcDACAFQagGakEgaiIHIAVBgAJqQSRqKQIANwMAIAVBqAZqQRhqIgggBUGAAmpB\ +HGopAgA3AwAgBUGoBmpBEGoiCSAFQYACakEUaikCADcDACAFQagGakEIaiIKIAVBgAJqQQxqKQIANw\ +MAIAUgBSkChAI3A6gGIAIgAkHQAGogBUGoBmoQIyAFQYACakE4aiILIAEpAwA3AwAgBUGAAmpBMGoi\ +DCADKQMANwMAIAVBgAJqQShqIgMgBikDADcDACAFQYACakEgaiIGIAcpAwA3AwAgBUGAAmpBGGoiBy\ +AIKQMANwMAIAVBgAJqQRBqIgggCSkDADcDACAFQYACakEIaiIJIAopAwA3AwAgBSAFKQOoBjcDgAIg\ +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\ +hqKQMANwMAIAFBCGpBMGogAkEwaikDADcDACABQQhqQShqIAJBKGopAwA3AwAgAUEIakEgaiACQSBq\ +KQMANwMAIAFBCGpBGGogAkEYaikDADcDACABQQhqQRBqIAJBEGopAwA3AwAgAUEIakEIaiACQQhqKQ\ +MANwMAIAEgAikDADcDCCACKQNAIQsgAUEIakHIAGogAkHIAGoQYiABIAs3A0ggBCABQQhqQdABEJQB\ +GgwXC0HQARAZIgRFDRkgAUEIakE4aiACQThqKQMANwMAIAFBCGpBMGogAkEwaikDADcDACABQQhqQS\ +hqIAJBKGopAwA3AwAgAUEIakEgaiACQSBqKQMANwMAIAFBCGpBGGogAkEYaikDADcDACABQQhqQRBq\ +IAJBEGopAwA3AwAgAUEIakEIaiACQQhqKQMANwMAIAEgAikDADcDCCACKQNAIQsgAUEIakHIAGogAk\ +HIAGoQYiABIAs3A0ggBCABQQhqQdABEJQBGgwWC0HQARAZIgRFDRggAUEIakE4aiACQThqKQMANwMA\ +IAFBCGpBMGogAkEwaikDADcDACABQQhqQShqIAJBKGopAwA3AwAgAUEIakEgaiACQSBqKQMANwMAIA\ +FBCGpBGGogAkEYaikDADcDACABQQhqQRBqIAJBEGopAwA3AwAgAUEIakEIaiACQQhqKQMANwMAIAEg\ +AikDADcDCCACKQNAIQsgAUEIakHIAGogAkHIAGoQYiABIAs3A0ggBCABQQhqQdABEJQBGgwVC0HwAB\ +AZIgRFDRcgAUEIakEgaiACQSBqKQMANwMAIAFBCGpBGGogAkEYaikDADcDACABQQhqQRBqIAJBEGop\ +AwA3AwAgASACKQMINwMQIAIpAwAhCyABQQhqQShqIAJBKGoQUSABIAs3AwggBCABQQhqQfAAEJQBGg\ +wUC0H4DhAZIgRFDRYgAUEIakGIAWogAkGIAWopAwA3AwAgAUEIakGAAWogAkGAAWopAwA3AwAgAUEI\ +akH4AGogAkH4AGopAwA3AwAgASACKQNwNwN4IAFBCGpBEGogAkEQaikDADcDACABQQhqQRhqIAJBGG\ +opAwA3AwAgAUEIakEgaiACQSBqKQMANwMAIAEgAikDCDcDECACKQMAIQsgAUEIakHgAGogAkHgAGop\ +AwA3AwAgAUEIakHYAGogAkHYAGopAwA3AwAgAUEIakHQAGogAkHQAGopAwA3AwAgAUEIakHIAGogAk\ +HIAGopAwA3AwAgAUEIakHAAGogAkHAAGopAwA3AwAgAUEIakE4aiACQThqKQMANwMAIAFBCGpBMGog\ +AkEwaikDADcDACABIAIpAyg3AzAgAi0AaiEFIAItAGkhBiACLQBoIQcgAUEANgKYAQJAIAIoApABIg\ +hFDQAgAkGUAWoiCUEIaikAACEMIAlBEGopAAAhDSAJKQAAIQ4gAUG0AWogCUEYaikAADcCACABQawB\ +aiANNwIAIAFBpAFqIAw3AgAgAUEIakGUAWogDjcCACACQbQBaiIKIAkgCEEFdGoiCUYNACAKQQhqKQ\ +AAIQwgCkEQaikAACENIAopAAAhDiABQdQBaiAKQRhqKQAANwIAIAFBzAFqIA03AgAgAUHEAWogDDcC\ +ACABQQhqQbQBaiAONwIAIAJB1AFqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQf\ +QBaiAKQRhqKQAANwIAIAFB7AFqIA03AgAgAUHkAWogDDcCACABQQhqQdQBaiAONwIAIAJB9AFqIgog\ +CUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQZQCaiAKQRhqKQAANwIAIAFBjAJqIA03Ag\ +AgAUGEAmogDDcCACABQQhqQfQBaiAONwIAIAJBlAJqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACEN\ +IAopAAAhDiABQbQCaiAKQRhqKQAANwIAIAFBrAJqIA03AgAgAUGkAmogDDcCACABQQhqQZQCaiAONw\ +IAIAJBtAJqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQdQCaiAKQRhqKQAANwIA\ +IAFBzAJqIA03AgAgAUHEAmogDDcCACABQQhqQbQCaiAONwIAIAJB1AJqIgogCUYNACAKQQhqKQAAIQ\ +wgCkEQaikAACENIAopAAAhDiABQfQCaiAKQRhqKQAANwIAIAFB7AJqIA03AgAgAUHkAmogDDcCACAB\ +QQhqQdQCaiAONwIAIAJB9AJqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQZQDai\ +AKQRhqKQAANwIAIAFBjANqIA03AgAgAUGEA2ogDDcCACABQQhqQfQCaiAONwIAIAJBlANqIgogCUYN\ +ACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQbQDaiAKQRhqKQAANwIAIAFBrANqIA03AgAgAU\ +GkA2ogDDcCACABQQhqQZQDaiAONwIAIAJBtANqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAop\ +AAAhDiABQdQDaiAKQRhqKQAANwIAIAFBzANqIA03AgAgAUHEA2ogDDcCACABQQhqQbQDaiAONwIAIA\ +JB1ANqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQfQDaiAKQRhqKQAANwIAIAFB\ +7ANqIA03AgAgAUHkA2ogDDcCACABQQhqQdQDaiAONwIAIAJB9ANqIgogCUYNACAKQQhqKQAAIQwgCk\ +EQaikAACENIAopAAAhDiABQZQEaiAKQRhqKQAANwIAIAFBjARqIA03AgAgAUGEBGogDDcCACABQQhq\ +QfQDaiAONwIAIAJBlARqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQbQEaiAKQR\ +hqKQAANwIAIAFBrARqIA03AgAgAUGkBGogDDcCACABQQhqQZQEaiAONwIAIAJBtARqIgogCUYNACAK\ +QQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQdQEaiAKQRhqKQAANwIAIAFBzARqIA03AgAgAUHEBG\ +ogDDcCACABQQhqQbQEaiAONwIAIAJB1ARqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAh\ +DiABQfQEaiAKQRhqKQAANwIAIAFB7ARqIA03AgAgAUHkBGogDDcCACABQQhqQdQEaiAONwIAIAJB9A\ +RqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQZQFaiAKQRhqKQAANwIAIAFBjAVq\ +IA03AgAgAUGEBWogDDcCACABQQhqQfQEaiAONwIAIAJBlAVqIgogCUYNACAKQQhqKQAAIQwgCkEQai\ +kAACENIAopAAAhDiABQbQFaiAKQRhqKQAANwIAIAFBrAVqIA03AgAgAUGkBWogDDcCACABQQhqQZQF\ +aiAONwIAIAJBtAVqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQdQFaiAKQRhqKQ\ +AANwIAIAFBzAVqIA03AgAgAUHEBWogDDcCACABQQhqQbQFaiAONwIAIAJB1AVqIgogCUYNACAKQQhq\ +KQAAIQwgCkEQaikAACENIAopAAAhDiABQfQFaiAKQRhqKQAANwIAIAFB7AVqIA03AgAgAUHkBWogDD\ +cCACABQQhqQdQFaiAONwIAIAJB9AVqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiAB\ +QZQGaiAKQRhqKQAANwIAIAFBjAZqIA03AgAgAUGEBmogDDcCACABQQhqQfQFaiAONwIAIAJBlAZqIg\ +ogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQbQGaiAKQRhqKQAANwIAIAFBrAZqIA03\ +AgAgAUGkBmogDDcCACABQQhqQZQGaiAONwIAIAJBtAZqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAAC\ +ENIAopAAAhDiABQdQGaiAKQRhqKQAANwIAIAFBzAZqIA03AgAgAUHEBmogDDcCACABQQhqQbQGaiAO\ +NwIAIAJB1AZqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQfQGaiAKQRhqKQAANw\ +IAIAFB7AZqIA03AgAgAUHkBmogDDcCACABQQhqQdQGaiAONwIAIAJB9AZqIgogCUYNACAKQQhqKQAA\ +IQwgCkEQaikAACENIAopAAAhDiABQZQHaiAKQRhqKQAANwIAIAFBjAdqIA03AgAgAUGEB2ogDDcCAC\ +ABQQhqQfQGaiAONwIAIAJBlAdqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQbQH\ +aiAKQRhqKQAANwIAIAFBrAdqIA03AgAgAUGkB2ogDDcCACABQQhqQZQHaiAONwIAIAJBtAdqIgogCU\ +YNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQdQHaiAKQRhqKQAANwIAIAFBzAdqIA03AgAg\ +AUHEB2ogDDcCACABQQhqQbQHaiAONwIAIAJB1AdqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIA\ +opAAAhDiABQfQHaiAKQRhqKQAANwIAIAFB7AdqIA03AgAgAUHkB2ogDDcCACABQQhqQdQHaiAONwIA\ +IAJB9AdqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQZQIaiAKQRhqKQAANwIAIA\ +FBjAhqIA03AgAgAUGECGogDDcCACABQQhqQfQHaiAONwIAIAJBlAhqIgogCUYNACAKQQhqKQAAIQwg\ +CkEQaikAACENIAopAAAhDiABQbQIaiAKQRhqKQAANwIAIAFBrAhqIA03AgAgAUGkCGogDDcCACABQQ\ +hqQZQIaiAONwIAIAJBtAhqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQdQIaiAK\ +QRhqKQAANwIAIAFBzAhqIA03AgAgAUHECGogDDcCACABQQhqQbQIaiAONwIAIAJB1AhqIgogCUYNAC\ +AKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQfQIaiAKQRhqKQAANwIAIAFB7AhqIA03AgAgAUHk\ +CGogDDcCACABQQhqQdQIaiAONwIAIAJB9AhqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAA\ +AhDiABQZQJaiAKQRhqKQAANwIAIAFBjAlqIA03AgAgAUGECWogDDcCACABQQhqQfQIaiAONwIAIAJB\ +lAlqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQbQJaiAKQRhqKQAANwIAIAFBrA\ +lqIA03AgAgAUGkCWogDDcCACABQQhqQZQJaiAONwIAIAJBtAlqIgogCUYNACAKQQhqKQAAIQwgCkEQ\ +aikAACENIAopAAAhDiABQdQJaiAKQRhqKQAANwIAIAFBzAlqIA03AgAgAUHECWogDDcCACABQQhqQb\ +QJaiAONwIAIAJB1AlqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQfQJaiAKQRhq\ +KQAANwIAIAFB7AlqIA03AgAgAUHkCWogDDcCACABQQhqQdQJaiAONwIAIAJB9AlqIgogCUYNACAKQQ\ +hqKQAAIQwgCkEQaikAACENIAopAAAhDiABQZQKaiAKQRhqKQAANwIAIAFBjApqIA03AgAgAUGECmog\ +DDcCACABQQhqQfQJaiAONwIAIAJBlApqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDi\ +ABQbQKaiAKQRhqKQAANwIAIAFBrApqIA03AgAgAUGkCmogDDcCACABQQhqQZQKaiAONwIAIAJBtApq\ +IgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQdQKaiAKQRhqKQAANwIAIAFBzApqIA\ +03AgAgAUHECmogDDcCACABQQhqQbQKaiAONwIAIAJB1ApqIgogCUYNACAKQQhqKQAAIQwgCkEQaikA\ +ACENIAopAAAhDiABQfQKaiAKQRhqKQAANwIAIAFB7ApqIA03AgAgAUHkCmogDDcCACABQQhqQdQKai\ +AONwIAIAJB9ApqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQZQLaiAKQRhqKQAA\ +NwIAIAFBjAtqIA03AgAgAUGEC2ogDDcCACABQQhqQfQKaiAONwIAIAJBlAtqIgogCUYNACAKQQhqKQ\ +AAIQwgCkEQaikAACENIAopAAAhDiABQbQLaiAKQRhqKQAANwIAIAFBrAtqIA03AgAgAUGkC2ogDDcC\ +ACABQQhqQZQLaiAONwIAIAJBtAtqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQd\ +QLaiAKQRhqKQAANwIAIAFBzAtqIA03AgAgAUHEC2ogDDcCACABQQhqQbQLaiAONwIAIAJB1AtqIgog\ +CUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQfQLaiAKQRhqKQAANwIAIAFB7AtqIA03Ag\ +AgAUHkC2ogDDcCACABQQhqQdQLaiAONwIAIAJB9AtqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACEN\ +IAopAAAhDiABQZQMaiAKQRhqKQAANwIAIAFBjAxqIA03AgAgAUGEDGogDDcCACABQQhqQfQLaiAONw\ +IAIAJBlAxqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQbQMaiAKQRhqKQAANwIA\ +IAFBrAxqIA03AgAgAUGkDGogDDcCACABQQhqQZQMaiAONwIAIAJBtAxqIgogCUYNACAKQQhqKQAAIQ\ +wgCkEQaikAACENIAopAAAhDiABQdQMaiAKQRhqKQAANwIAIAFBzAxqIA03AgAgAUHEDGogDDcCACAB\ +QQhqQbQMaiAONwIAIAJB1AxqIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQfQMai\ +AKQRhqKQAANwIAIAFB7AxqIA03AgAgAUHkDGogDDcCACABQQhqQdQMaiAONwIAIAJB9AxqIgogCUYN\ +ACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQZQNaiAKQRhqKQAANwIAIAFBjA1qIA03AgAgAU\ +GEDWogDDcCACABQQhqQfQMaiAONwIAIAJBlA1qIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAop\ +AAAhDiABQbQNaiAKQRhqKQAANwIAIAFBrA1qIA03AgAgAUGkDWogDDcCACABQQhqQZQNaiAONwIAIA\ +JBtA1qIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQdQNaiAKQRhqKQAANwIAIAFB\ +zA1qIA03AgAgAUHEDWogDDcCACABQQhqQbQNaiAONwIAIAJB1A1qIgogCUYNACAKQQhqKQAAIQwgCk\ +EQaikAACENIAopAAAhDiABQfQNaiAKQRhqKQAANwIAIAFB7A1qIA03AgAgAUHkDWogDDcCACABQQhq\ +QdQNaiAONwIAIAJB9A1qIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQZQOaiAKQR\ +hqKQAANwIAIAFBjA5qIA03AgAgAUGEDmogDDcCACABQQhqQfQNaiAONwIAIAJBlA5qIgogCUYNACAK\ +QQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQbQOaiAKQRhqKQAANwIAIAFBrA5qIA03AgAgAUGkDm\ +ogDDcCACABQQhqQZQOaiAONwIAIAJBtA5qIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAh\ +DiABQdQOaiAKQRhqKQAANwIAIAFBzA5qIA03AgAgAUHEDmogDDcCACABQQhqQbQOaiAONwIAIAJB1A\ +5qIgogCUYNACAKQQhqKQAAIQwgCkEQaikAACENIAopAAAhDiABQfQOaiAKQRhqKQAANwIAIAFB7A5q\ +IA03AgAgAUHkDmogDDcCACABQQhqQdQOaiAONwIAIAJB9A5qIAlHDRgLIAEgBToAciABIAY6AHEgAS\ +AHOgBwIAEgCzcDCCABIAhB////P3EiAkE3IAJBN0kbNgKYASAEIAFBCGpB+A4QlAEaDBMLQeACEBki\ +BEUNFSABQQhqIAJByAEQlAEaIAFBCGpByAFqIAJByAFqEGMgBCABQQhqQeACEJQBGgwSC0HYAhAZIg\ +RFDRQgAUEIaiACQcgBEJQBGiABQQhqQcgBaiACQcgBahBkIAQgAUEIakHYAhCUARoMEQtBuAIQGSIE\ +RQ0TIAFBCGogAkHIARCUARogAUEIakHIAWogAkHIAWoQZSAEIAFBCGpBuAIQlAEaDBALQZgCEBkiBE\ +UNEiABQQhqIAJByAEQlAEaIAFBCGpByAFqIAJByAFqEGYgBCABQQhqQZgCEJQBGgwPC0HgABAZIgRF\ +DREgAUEIakEQaiACQRBqKQMANwMAIAEgAikDCDcDECACKQMAIQsgAUEIakEYaiACQRhqEFEgASALNw\ +MIIAQgAUEIakHgABCUARoMDgtB4AAQGSIERQ0QIAFBCGpBEGogAkEQaikDADcDACABIAIpAwg3AxAg\ +AikDACELIAFBCGpBGGogAkEYahBRIAEgCzcDCCAEIAFBCGpB4AAQlAEaDA0LQegAEBkiBEUNDyABQQ\ +hqQRhqIAJBGGooAgA2AgAgAUEIakEQaiACQRBqKQMANwMAIAEgAikDCDcDECACKQMAIQsgAUEIakEg\ +aiACQSBqEFEgASALNwMIIAQgAUEIakHoABCUARoMDAtB6AAQGSIERQ0OIAFBCGpBGGogAkEYaigCAD\ +YCACABQQhqQRBqIAJBEGopAwA3AwAgASACKQMINwMQIAIpAwAhCyABQQhqQSBqIAJBIGoQUSABIAs3\ +AwggBCABQQhqQegAEJQBGgwLC0HgAhAZIgRFDQ0gAUEIaiACQcgBEJQBGiABQQhqQcgBaiACQcgBah\ +BjIAQgAUEIakHgAhCUARoMCgtB2AIQGSIERQ0MIAFBCGogAkHIARCUARogAUEIakHIAWogAkHIAWoQ\ +ZCAEIAFBCGpB2AIQlAEaDAkLQbgCEBkiBEUNCyABQQhqIAJByAEQlAEaIAFBCGpByAFqIAJByAFqEG\ +UgBCABQQhqQbgCEJQBGgwIC0GYAhAZIgRFDQogAUEIaiACQcgBEJQBGiABQQhqQcgBaiACQcgBahBm\ +IAQgAUEIakGYAhCUARoMBwtB8AAQGSIERQ0JIAFBCGpBIGogAkEgaikDADcDACABQQhqQRhqIAJBGG\ +opAwA3AwAgAUEIakEQaiACQRBqKQMANwMAIAEgAikDCDcDECACKQMAIQsgAUEIakEoaiACQShqEFEg\ +ASALNwMIIAQgAUEIakHwABCUARoMBgtB8AAQGSIERQ0IIAFBCGpBIGogAkEgaikDADcDACABQQhqQR\ +hqIAJBGGopAwA3AwAgAUEIakEQaiACQRBqKQMANwMAIAEgAikDCDcDECACKQMAIQsgAUEIakEoaiAC\ +QShqEFEgASALNwMIIAQgAUEIakHwABCUARoMBQtB2AEQGSIERQ0HIAFBCGpBOGogAkE4aikDADcDAC\ +ABQQhqQTBqIAJBMGopAwA3AwAgAUEIakEoaiACQShqKQMANwMAIAFBCGpBIGogAkEgaikDADcDACAB\ +QQhqQRhqIAJBGGopAwA3AwAgAUEIakEQaiACQRBqKQMANwMAIAFBCGpBCGogAkEIaikDADcDACABIA\ +IpAwA3AwggAkHIAGopAwAhCyACKQNAIQwgAUEIakHQAGogAkHQAGoQYiABQQhqQcgAaiALNwMAIAEg\ +DDcDSCAEIAFBCGpB2AEQlAEaDAQLQdgBEBkiBEUNBiABQQhqQThqIAJBOGopAwA3AwAgAUEIakEwai\ +ACQTBqKQMANwMAIAFBCGpBKGogAkEoaikDADcDACABQQhqQSBqIAJBIGopAwA3AwAgAUEIakEYaiAC\ +QRhqKQMANwMAIAFBCGpBEGogAkEQaikDADcDACABQQhqQQhqIAJBCGopAwA3AwAgASACKQMANwMIIA\ +JByABqKQMAIQsgAikDQCEMIAFBCGpB0ABqIAJB0ABqEGIgAUEIakHIAGogCzcDACABIAw3A0ggBCAB\ +QQhqQdgBEJQBGgwDC0H4AhAZIgRFDQUgAUEIaiACQcgBEJQBGiABQQhqQcgBaiACQcgBahBnIAQgAU\ +EIakH4AhCUARoMAgtB2AIQGSIERQ0EIAFBCGogAkHIARCUARogAUEIakHIAWogAkHIAWoQZCAEIAFB\ +CGpB2AIQlAEaDAELQegAEBkiBEUNAyABQQhqQRBqIAJBEGopAwA3AwAgAUEIakEYaiACQRhqKQMANw\ +MAIAEgAikDCDcDECACKQMAIQsgAUEIakEgaiACQSBqEFEgASALNwMIIAQgAUEIakHoABCUARoLIAAg\ +ACgCAEF/ajYCAEEMEBkiAEUNAiAAIAQ2AgggACADNgIEIABBADYCACABQYAPaiQAIAAPCxCQAQALEJ\ +EBAAsACxCNAQAL1TwCE38CfiMAQYACayIEJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC\ +QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAk\ +ACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJA\ +IAAOGAABAgMEBQYHCAkKCwwNDg8QERITFBUWFwALIAFByABqIQVBgAEgAUHIAWotAAAiAGsiBiADTw\ +0XAkAgAEUNACAFIABqIAIgBhCUARogASABKQNAQoABfDcDQCABIAVCABASIAMgBmshAyACIAZqIQIL\ +IAMgA0EHdiADQQBHIANB/wBxRXFrIgBBB3QiB2shAyAARQ1GIAchBiACIQADQCABIAEpA0BCgAF8Nw\ +NAIAEgAEIAEBIgAEGAAWohACAGQYB/aiIGDQAMRwsLIAFByABqIQVBgAEgAUHIAWotAAAiAGsiBiAD\ +Tw0XAkAgAEUNACAFIABqIAIgBhCUARogASABKQNAQoABfDcDQCABIAVCABASIAMgBmshAyACIAZqIQ\ +ILIAMgA0EHdiADQQBHIANB/wBxRXFrIgBBB3QiB2shAyAARQ1EIAchBiACIQADQCABIAEpA0BCgAF8\ +NwNAIAEgAEIAEBIgAEGAAWohACAGQYB/aiIGDQAMRQsLIAFByABqIQVBgAEgAUHIAWotAAAiAGsiBi\ +ADTw0XAkAgAEUNACAFIABqIAIgBhCUARogASABKQNAQoABfDcDQCABIAVCABASIAMgBmshAyACIAZq\ +IQILIAMgA0EHdiADQQBHIANB/wBxRXFrIgBBB3QiB2shAyAARQ1CIAchBiACIQADQCABIAEpA0BCgA\ +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\ +wiBWshACADQYcBTQ0aIARB8ABqIAIgBxBIDBoLIAFBIGohBQJAQcAAIAFB4ABqLQAAIgBrIgYgA0sN\ +AAJAIABFDQAgBSAAaiACIAYQlAEaIAEgASkDAEIBfDcDACABQQhqIAUQFiADIAZrIQMgAiAGaiECCy\ +ADQT9xIQcgAiADQUBxIgBqIQggA0E/TQ0YIAEgASkDACADQQZ2rXw3AwAgAUEIaiEGA0AgBiACEBYg\ +AkHAAGohAiAAQUBqIgANAAwZCwsgBSAAaiACIAMQlAEaIAAgA2ohBwwYCyAFIABqIAIgAxCUARogAS\ +AAIANqOgDIAQwvCyAFIABqIAIgAxCUARogASAAIANqOgDIAQwuCyAFIABqIAIgAxCUARogASAAIANq\ +OgDIAQwtCyAFIABqIAIgAxCUARogASAAIANqOgBoDCwLIAQgCzYCjAEgBCAJNgKIASAEIAw2AoQBIA\ +QgCDYCgAEgBCANNgJ8IAQgCjYCeCAEIA42AnQgBCAPNgJwQbCRwAAgBEHwAGpBpIfAAEGUh8AAEGEA\ +CyAGIABqIAIgAxCUARogASAAIANqOgDYAgwqCyAGIABqIAIgAxCUARogASAAIANqOgDQAgwpCyAGIA\ +BqIAIgAxCUARogASAAIANqOgCwAgwoCyAGIABqIAIgAxCUARogASAAIANqOgCQAgwnCyAFIABqIAIg\ +AxCUARogASAAIANqOgBYDCYLIAYgAGogAiADEJQBGiABIAAgA2o6AFgMJQsgBSAAaiACIAMQlAEaIA\ +EgACADajoAYAwkCyAGIABqIAIgAxCUARogASAAIANqOgBgDCMLIAYgAGogAiADEJQBGiABIAAgA2o6\ +ANgCDCILIAYgAGogAiADEJQBGiABIAAgA2o6ANACDCELIAYgAGogAiADEJQBGiABIAAgA2o6ALACDC\ +ALIAYgAGogAiADEJQBGiABIAAgA2o6AJACDB8LIAYgAGogAiADEJQBGiABIAAgA2o6AGgMHgsgBiAA\ +aiACIAMQlAEaIAEgACADajoAaAwdCyAGIABqIAIgAxCUARogASAAIANqOgDQAQwcCyAGIABqIAIgAx\ +CUARogASAAIANqOgDQAQwbCyAGIABqIAIgAxCUARogASAAIANqOgDwAgwaCyAGIABqIAIgAxCUARog\ +ASAAIANqOgDQAgwZCyAFIAggBxCUARoLIAEgBzoAYAwXCwJAIABBiQFPDQAgBiACIAVqIAAQlAEaIA\ +EgADoA0AIMFwsgAEGIAUGAgMAAEIsBAAsCQCAAQakBTw0AIAYgAiAFaiAAEJQBGiABIAA6APACDBYL\ +IABBqAFBgIDAABCLAQALIAYgBSAAEJQBGiABIAA6ANABDBQLIAYgBSAAEJQBGiABIAA6ANABDBMLIA\ +YgBSAAEJQBGiABIAA6AGgMEgsgBiAFIAAQlAEaIAEgADoAaAwRCwJAIABByQBPDQAgBiACIAVqIAAQ\ +lAEaIAEgADoAkAIMEQsgAEHIAEGAgMAAEIsBAAsCQCAAQekATw0AIAYgAiAFaiAAEJQBGiABIAA6AL\ +ACDBALIABB6ABBgIDAABCLAQALAkAgAEGJAU8NACAGIAIgBWogABCUARogASAAOgDQAgwPCyAAQYgB\ +QYCAwAAQiwEACwJAIABBkQFPDQAgBiACIAVqIAAQlAEaIAEgADoA2AIMDgsgAEGQAUGAgMAAEIsBAA\ +sgBiAFIAAQlAEaIAEgADoAYAwMCyAFIAggBxCUARogASAHOgBgDAsLIAYgBSAAEJQBGiABIAA6AFgM\ +CgsgBSAIIAcQlAEaIAEgBzoAWAwJCwJAIABByQBPDQAgBiACIAVqIAAQlAEaIAEgADoAkAIMCQsgAE\ +HIAEGAgMAAEIsBAAsCQCAAQekATw0AIAYgAiAFaiAAEJQBGiABIAA6ALACDAgLIABB6ABBgIDAABCL\ +AQALAkAgAEGJAU8NACAGIAIgBWogABCUARogASAAOgDQAgwHCyAAQYgBQYCAwAAQiwEACwJAIABBkQ\ +FPDQAgBiACIAVqIAAQlAEaIAEgADoA2AIMBgsgAEGQAUGAgMAAEIsBAAsCQAJAAkACQAJAAkACQAJA\ +AkAgA0GBCEkNACABQZQBaiEOIAFB8ABqIQcgASkDACEYIARBKGohCiAEQQhqIQwgBEHwAGpBKGohCS\ +AEQfAAakEIaiELIARBIGohDQNAIBhCCoYhF0F/IANBAXZndkEBaiEGA0AgBiIAQQF2IQYgFyAAQX9q\ +rYNCAFINAAsgAEEKdq0hFwJAAkAgAEGBCEkNACADIABJDQQgAS0AaiEIIARB8ABqQThqIg9CADcDAC\ +AEQfAAakEwaiIQQgA3AwAgCUIANwMAIARB8ABqQSBqIhFCADcDACAEQfAAakEYaiISQgA3AwAgBEHw\ +AGpBEGoiE0IANwMAIAtCADcDACAEQgA3A3AgAiAAIAcgGCAIIARB8ABqQcAAEB4hBiAEQeABakEYak\ +IANwMAIARB4AFqQRBqQgA3AwAgBEHgAWpBCGpCADcDACAEQgA3A+ABAkAgBkEDSQ0AA0AgBkEFdCIG\ +QcEATw0HIARB8ABqIAYgByAIIARB4AFqQSAQLSIGQQV0IgVBwQBPDQggBUEhTw0JIARB8ABqIARB4A\ +FqIAUQlAEaIAZBAksNAAsLIARBOGogDykDADcDACAEQTBqIBApAwA3AwAgCiAJKQMANwMAIA0gESkD\ +ADcDACAEQRhqIgggEikDADcDACAEQRBqIg8gEykDADcDACAMIAspAwA3AwAgBCAEKQNwNwMAIAEgAS\ +kDABAqIAEoApABIgVBN08NCCAOIAVBBXRqIgZBGGogCCkDADcAACAGQRBqIA8pAwA3AAAgBkEIaiAM\ +KQMANwAAIAYgBCkDADcAACABIAVBAWo2ApABIAEgASkDACAXQgGIfBAqIAEoApABIgVBN08NCSAOIA\ +VBBXRqIgZBGGogDUEYaikAADcAACAGIA0pAAA3AAAgBkEQaiANQRBqKQAANwAAIAZBCGogDUEIaikA\ +ADcAACABIAVBAWo2ApABDAELIAlCADcDACAJQQhqIg9CADcDACAJQRBqIhBCADcDACAJQRhqIhFCAD\ +cDACAJQSBqIhJCADcDACAJQShqIhNCADcDACAJQTBqIhRCADcDACAJQThqIhVCADcDACALIAcpAwA3\ +AwAgC0EIaiIGIAdBCGopAwA3AwAgC0EQaiIFIAdBEGopAwA3AwAgC0EYaiIIIAdBGGopAwA3AwAgBE\ +EAOwHYASAEIBg3A3AgBCABLQBqOgDaASAEQfAAaiACIAAQNyEWIAwgCykDADcDACAMQQhqIAYpAwA3\ +AwAgDEEQaiAFKQMANwMAIAxBGGogCCkDADcDACAKIAkpAwA3AwAgCkEIaiAPKQMANwMAIApBEGogEC\ +kDADcDACAKQRhqIBEpAwA3AwAgCkEgaiASKQMANwMAIApBKGogEykDADcDACAKQTBqIBQpAwA3AwAg\ +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\ +AgBUEQaiISIAZBEGopAgA3AgAgBUEIaiAGQQhqKQIANwIAIAUgBikCADcCACAEIAFB8ABqIgYpAwA3\ +AwAgESAGQQhqKQMANwMAIAwgBkEQaiIRKQMANwMAIAogBkEYaiITKQMANwMAIAIgFjcDYCACIBU3A1\ +ggAiAUNwNQIAIgFzcDSCACIAg6AGkgAkHAADoAaCACQgA3AwAgDUUNAkECIAdrIQ0gB0EFdCABakHU\ +AGohAQJAA0AgDw0BIAkgCikCADcDACALIAwpAgA3AwAgAkHwAGpBCGoiByAEQQhqIg4pAgA3AwAgAi\ +AEKQIANwNwIAJB8ABqIAVBwABCACAIEBggBykDACEUIAspAwAhFSAJKQMAIRYgAikDcCEXIBAgAUEY\ +aikCADcCACASIAFBEGopAgA3AgAgBUEIaiABQQhqKQIANwIAIAUgASkCADcCACAEIAYpAwA3AwAgDi\ +AGQQhqKQMANwMAIAwgESkDADcDACAKIBMpAwA3AwAgAiAWNwNgIAIgFTcDWCACIBQ3A1AgAiAXNwNI\ +IAIgCDoAaSACQcAAOgBoIAJCADcDACABQWBqIQEgDUEBaiINQQFGDQQMAAsLQQAgDWshDQsgDSADQY\ +CGwAAQawALIAcgA0HwhcAAEGsACyAAIAJB8AAQlAEaCyAAQQA6AHAgAkGwAWokAAugDQICfwR+IwBB\ +kAJrIgMkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgAkF9ag\ +4JAwwKCwEFDAIADAsCQCABQZeAwABBCxCVAUUNACABQaKAwABBCxCVAQ0MQdABEBkiAUUNFiADQZAB\ +aiICQTAQcyABIAJByAAQlAEhAiADQQA2AgAgAyADQQRyQQBBgAEQkwFBf3NqQYQBakEHSRogA0GAAT\ +YCACADQYgBaiADQYQBEJQBGiACQcgAaiADQYgBakEEckGAARCUARogAkHIAWpBADoAAEECIQIMFAtB\ +0AEQGSIBRQ0VIANBkAFqIgJBIBBzIAEgAkHIABCUASECIANBADYCACADIANBBHJBAEGAARCTAUF/c2\ +pBhAFqQQdJGiADQYABNgIAIANBiAFqIANBhAEQlAEaIAJByABqIANBiAFqQQRyQYABEJQBGiACQcgB\ +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\ +AkHQAGpBEGopAwAiCDcDACACIAIpA1giCTcDCCADQSBqIAU3AwAgA0EYaiAGNwMAIANBEGogBzcDAC\ +ADQQhqIAg3AwAgAyAJNwMAIANB6ABqQQA6AAAMFAsgAUEIaigCACIDQgA3AwAgAyADKQNwNwMIIANB\ +EGogA0H4AGopAwA3AwAgA0EYaiADQYABaikDADcDACADQSBqIANBiAFqKQMANwMAIANBKGpBAEHCAB\ +CTARogAygCkAFFDRMgA0EANgKQAQwTCyABQQhqKAIAQQBByAEQkwFB2AJqQQA6AAAMEgsgAUEIaigC\ +AEEAQcgBEJMBQdACakEAOgAADBELIAFBCGooAgBBAEHIARCTAUGwAmpBADoAAAwQCyABQQhqKAIAQQ\ +BByAEQkwFBkAJqQQA6AAAMDwsgAUEIaigCACIDQv6568XpjpWZEDcDECADQoHGlLqW8ermbzcDCCAD\ +QgA3AwAgA0HYAGpBADoAAAwOCyABQQhqKAIAIgNC/rnrxemOlZkQNwMQIANCgcaUupbx6uZvNwMIIA\ +NCADcDACADQdgAakEAOgAADA0LIAFBCGooAgAiA0IANwMAIANBACkDkI1ANwMIIANBEGpBACkDmI1A\ +NwMAIANBGGpBACgCoI1ANgIAIANB4ABqQQA6AAAMDAsgAUEIaigCACIDQfDDy558NgIYIANC/rnrxe\ +mOlZkQNwMQIANCgcaUupbx6uZvNwMIIANCADcDACADQeAAakEAOgAADAsLIAFBCGooAgBBAEHIARCT\ +AUHYAmpBADoAAAwKCyABQQhqKAIAQQBByAEQkwFB0AJqQQA6AAAMCQsgAUEIaigCAEEAQcgBEJMBQb\ +ACakEAOgAADAgLIAFBCGooAgBBAEHIARCTAUGQAmpBADoAAAwHCyABQQhqKAIAIgNCADcDACADQQAp\ +A8iNQDcDCCADQRBqQQApA9CNQDcDACADQRhqQQApA9iNQDcDACADQSBqQQApA+CNQDcDACADQegAak\ +EAOgAADAYLIAFBCGooAgAiA0IANwMAIANBACkDqI1ANwMIIANBEGpBACkDsI1ANwMAIANBGGpBACkD\ +uI1ANwMAIANBIGpBACkDwI1ANwMAIANB6ABqQQA6AAAMBQsgAUEIaigCACIDQgA3A0AgA0EAKQOojk\ +A3AwAgA0HIAGpCADcDACADQQhqQQApA7COQDcDACADQRBqQQApA7iOQDcDACADQRhqQQApA8COQDcD\ +ACADQSBqQQApA8iOQDcDACADQShqQQApA9COQDcDACADQTBqQQApA9iOQDcDACADQThqQQApA+COQD\ +cDACADQdABakEAOgAADAQLIAFBCGooAgAiA0IANwNAIANBACkD6I1ANwMAIANByABqQgA3AwAgA0EI\ +akEAKQPwjUA3AwAgA0EQakEAKQP4jUA3AwAgA0EYakEAKQOAjkA3AwAgA0EgakEAKQOIjkA3AwAgA0\ +EoakEAKQOQjkA3AwAgA0EwakEAKQOYjkA3AwAgA0E4akEAKQOgjkA3AwAgA0HQAWpBADoAAAwDCyAB\ +QQhqKAIAQQBByAEQkwFB8AJqQQA6AAAMAgsgAUEIaigCAEEAQcgBEJMBQdACakEAOgAADAELIAFBCG\ +ooAgAiA0IANwMAIANBACkD4NFANwMIIANBEGpBACkD6NFANwMAIANBGGpBACkD8NFANwMAIANB4ABq\ +QQA6AAALIAFBADYCACAAQgA3AwAgAkGgAWokAA8LEJABAAsQkQEAC4oMAQd/IABBeGoiASAAQXxqKA\ +IAIgJBeHEiAGohAwJAAkACQCACQQFxDQAgAkEDcUUNASABKAIAIgIgAGohAAJAIAEgAmsiAUEAKAKE\ +1kBHDQAgAygCBEEDcUEDRw0BQQAgADYC/NVAIAMgAygCBEF+cTYCBCABIABBAXI2AgQgASAAaiAANg\ +IADwsCQAJAIAJBgAJJDQAgASgCGCEEAkACQCABKAIMIgUgAUcNACABQRRBECABQRRqIgUoAgAiBhtq\ +KAIAIgINAUEAIQUMAwsgASgCCCICIAU2AgwgBSACNgIIDAILIAUgAUEQaiAGGyEGA0AgBiEHAkAgAi\ +IFQRRqIgYoAgAiAg0AIAVBEGohBiAFKAIQIQILIAINAAsgB0EANgIADAELAkAgAUEMaigCACIFIAFB\ +CGooAgAiBkYNACAGIAU2AgwgBSAGNgIIDAILQQBBACgC7NJAQX4gAkEDdndxNgLs0kAMAQsgBEUNAA\ +JAAkAgASgCHEECdEH81MAAaiICKAIAIAFGDQAgBEEQQRQgBCgCECABRhtqIAU2AgAgBUUNAgwBCyAC\ +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\ +AJhCEIAkACQCAEQThxQThGDQAgASAINwA4IANBCGogAUEBEBUMAQsgA0EIaiABQQEQFSADQeAAakEM\ +akIANwIAIANB4ABqQRRqQgA3AgAgA0HgAGpBHGpCADcCACADQeAAakEkakIANwIAIANB4ABqQSxqQg\ +A3AgAgA0HgAGpBNGpCADcCACADQZwBakIANwIAIANCADcCZCADQQA2AmAgA0HgAGogA0HgAGpBBHJB\ +f3NqQcQAakEHSRogA0HAADYCYCADQagBaiADQeAAakHEABCUARogA0HQAGogA0GoAWpBNGopAgA3Aw\ +AgA0HIAGogA0GoAWpBLGopAgA3AwAgA0HAAGogA0GoAWpBJGopAgA3AwAgA0E4aiADQagBakEcaikC\ +ADcDACADQTBqIANBqAFqQRRqKQIANwMAIANBKGogA0GoAWpBDGopAgA3AwAgAyADKQKsATcDICADIA\ +g3A1ggA0EIaiADQSBqQQEQFQsgAUEAOgBAIAIgAygCCCIBQRh0IAFBCHRBgID8B3FyIAFBCHZBgP4D\ +cSABQRh2cnI2AAAgAiADKAIMIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/gNxIAFBGHZycjYABCACIA\ +MoAhAiAUEYdCABQQh0QYCA/AdxciABQQh2QYD+A3EgAUEYdnJyNgAIIAIgAygCFCIBQRh0IAFBCHRB\ +gID8B3FyIAFBCHZBgP4DcSABQRh2cnI2AAwgAiADKAIYIgFBGHQgAUEIdEGAgPwHcXIgAUEIdkGA/g\ +NxIAFBGHZycjYAECADQfABaiQAC/8GARd/IwBB0AFrIgIkAAJAAkACQCAAKAKQASIDIAF7pyIETQ0A\ +IANBf2ohBSAAQfAAaiEGIANBBXQgAGpB1ABqIQcgAkEgakEoaiEIIAJBIGpBCGohCSACQZABakEgai\ +EKIAJBEGohCyACQRhqIQwgA0F+akE3SSENA0AgACAFNgKQASACQQhqIgMgB0EoaikAADcDACALIAdB\ +MGopAAA3AwAgDCAHQThqKQAANwMAIAIgB0EgaikAADcDACAFRQ0CIAAgBUF/aiIONgKQASAALQBqIQ\ +8gCiACKQMANwAAIApBCGogAykDADcAACAKQRBqIAspAwA3AAAgCkEYaiAMKQMANwAAIAJBkAFqQRhq\ +IgMgB0EYaiIQKQAANwMAIAJBkAFqQRBqIhEgB0EQaiISKQAANwMAIAJBkAFqQQhqIhMgB0EIaiIUKQ\ +AANwMAIAkgBikDADcDACAJQQhqIAZBCGoiFSkDADcDACAJQRBqIAZBEGoiFikDADcDACAJQRhqIAZB\ +GGoiFykDADcDACACIAcpAAA3A5ABIAhBOGogAkGQAWpBOGopAwA3AAAgCEEwaiACQZABakEwaikDAD\ +cAACAIQShqIAJBkAFqQShqKQMANwAAIAhBIGogCikDADcAACAIQRhqIAMpAwA3AAAgCEEQaiARKQMA\ +NwAAIAhBCGogEykDADcAACAIIAIpA5ABNwAAIAJBwAA6AIgBIAIgD0EEciIPOgCJASACQgA3AyAgAy\ +AXKQIANwMAIBEgFikCADcDACATIBUpAgA3AwAgAiAGKQIANwOQASACQZABaiAIQcAAQgAgDxAYIAMo\ +AgAhAyARKAIAIREgEygCACETIAIoAqwBIQ8gAigCpAEhFSACKAKcASEWIAIoApQBIRcgAigCkAEhGC\ +ANRQ0DIAcgGDYCACAHQRxqIA82AgAgECADNgIAIAdBFGogFTYCACASIBE2AgAgB0EMaiAWNgIAIBQg\ +EzYCACAHQQRqIBc2AgAgACAFNgKQASAHQWBqIQcgDiEFIA4gBE8NAAsLIAJB0AFqJAAPC0HYkMAAQS\ +tBwIXAABByAAsgAiAPNgKsASACIAM2AqgBIAIgFTYCpAEgAiARNgKgASACIBY2ApwBIAIgEzYCmAEg\ +AiAXNgKUASACIBg2ApABQbCRwAAgAkGQAWpBpIfAAEGUh8AAEGEAC5wFAQp/IwBBMGsiAyQAIANBJG\ +ogATYCACADQQM6ACggA0KAgICAgAQ3AwggAyAANgIgQQAhBCADQQA2AhggA0EANgIQAkACQAJAAkAg\ +AigCCCIFDQAgAkEUaigCACIARQ0BIAIoAhAhASAAQQN0IQYgAEF/akH/////AXFBAWohBCACKAIAIQ\ +ADQAJAIABBBGooAgAiB0UNACADKAIgIAAoAgAgByADKAIkKAIMEQgADQQLIAEoAgAgA0EIaiABQQRq\ +KAIAEQYADQMgAUEIaiEBIABBCGohACAGQXhqIgYNAAwCCwsgAkEMaigCACIBRQ0AIAFBBXQhCCABQX\ +9qQf///z9xQQFqIQQgAigCACEAQQAhBgNAAkAgAEEEaigCACIBRQ0AIAMoAiAgACgCACABIAMoAiQo\ +AgwRCAANAwsgAyAFIAZqIgFBHGotAAA6ACggAyABQQRqKQIAQiCJNwMIIAFBGGooAgAhCSACKAIQIQ\ +pBACELQQAhBwJAAkACQCABQRRqKAIADgMBAAIBCyAJQQN0IQxBACEHIAogDGoiDEEEaigCAEEERw0B\ +IAwoAgAoAgAhCQtBASEHCyADIAk2AhQgAyAHNgIQIAFBEGooAgAhBwJAAkACQCABQQxqKAIADgMBAA\ +IBCyAHQQN0IQkgCiAJaiIJQQRqKAIAQQRHDQEgCSgCACgCACEHC0EBIQsLIAMgBzYCHCADIAs2Ahgg\ +CiABKAIAQQN0aiIBKAIAIANBCGogASgCBBEGAA0CIABBCGohACAIIAZBIGoiBkcNAAsLAkAgBCACKA\ +IETw0AIAMoAiAgAigCACAEQQN0aiIBKAIAIAEoAgQgAygCJCgCDBEIAA0BC0EAIQEMAQtBASEBCyAD\ +QTBqJAAgAQuaBAIDfwJ+IwBB8AFrIgMkACAAKQMAIQYgASABLQBAIgRqIgVBgAE6AAAgA0EIakEQai\ +AAQRhqKAIANgIAIANBEGogAEEQaikCADcDACADIAApAgg3AwggBkIJhiEGIAStQgOGIQcCQCAEQT9z\ +IgBFDQAgBUEBakEAIAAQkwEaCyAGIAeEIQYCQAJAIARBOHFBOEYNACABIAY3ADggA0EIaiABEBMMAQ\ +sgA0EIaiABEBMgA0HgAGpBDGpCADcCACADQeAAakEUakIANwIAIANB4ABqQRxqQgA3AgAgA0HgAGpB\ +JGpCADcCACADQeAAakEsakIANwIAIANB4ABqQTRqQgA3AgAgA0GcAWpCADcCACADQgA3AmQgA0EANg\ +JgIANB4ABqIANB4ABqQQRyQX9zakHEAGpBB0kaIANBwAA2AmAgA0GoAWogA0HgAGpBxAAQlAEaIANB\ +0ABqIANBqAFqQTRqKQIANwMAIANByABqIANBqAFqQSxqKQIANwMAIANBwABqIANBqAFqQSRqKQIANw\ +MAIANBOGogA0GoAWpBHGopAgA3AwAgA0EwaiADQagBakEUaikCADcDACADQShqIANBqAFqQQxqKQIA\ +NwMAIAMgAykCrAE3AyAgAyAGNwNYIANBCGogA0EgahATCyABQQA6AEAgAiADKAIINgAAIAIgAykCDD\ +cABCACIAMpAhQ3AAwgA0HwAWokAAuKBAEKfyMAQTBrIgYkAEEAIQcgBkEANgIIAkAgAUFAcSIIRQ0A\ +QQEhByAGQQE2AgggBiAANgIAIAhBwABGDQBBAiEHIAZBAjYCCCAGIABBwABqNgIEIAhBgAFGDQAgBi\ +AAQYABajYCEEGwkcAAIAZBEGpBoIbAAEGUh8AAEGEACyABQT9xIQkCQCAHIAVBBXYiASAHIAFJGyIB\ +RQ0AIANBBHIhCiABQQV0IQtBACEDIAYhDANAIAwoAgAhASAGQRBqQRhqIg0gAkEYaikCADcDACAGQR\ +BqQRBqIg4gAkEQaikCADcDACAGQRBqQQhqIg8gAkEIaikCADcDACAGIAIpAgA3AxAgBkEQaiABQcAA\ +QgAgChAYIAQgA2oiAUEYaiANKQMANwAAIAFBEGogDikDADcAACABQQhqIA8pAwA3AAAgASAGKQMQNw\ +AAIAxBBGohDCALIANBIGoiA0cNAAsLAkACQAJAAkAgCUUNACAHQQV0IgIgBUsNASAFIAJrIgFBH00N\ +AiAJQSBHDQMgBCACaiICIAAgCGoiASkAADcAACACQRhqIAFBGGopAAA3AAAgAkEQaiABQRBqKQAANw\ +AAIAJBCGogAUEIaikAADcAACAHQQFqIQcLIAZBMGokACAHDwsgAiAFQcCEwAAQjAEAC0EgIAFBwITA\ +ABCLAQALQSAgCUHQhMAAEGoAC/IDAgN/An4jAEHgAWsiAyQAIAApAwAhBiABIAEtAEAiBGoiBUGAAT\ +oAACADQQhqIABBEGopAgA3AwAgAyAAKQIINwMAIAZCCYYhBiAErUIDhiEHAkAgBEE/cyIARQ0AIAVB\ +AWpBACAAEJMBGgsgBiAHhCEGAkACQCAEQThxQThGDQAgASAGNwA4IAMgARAdDAELIAMgARAdIANB0A\ +BqQQxqQgA3AgAgA0HQAGpBFGpCADcCACADQdAAakEcakIANwIAIANB0ABqQSRqQgA3AgAgA0HQAGpB\ +LGpCADcCACADQdAAakE0akIANwIAIANBjAFqQgA3AgAgA0IANwJUIANBADYCUCADQdAAaiADQdAAak\ +EEckF/c2pBxABqQQdJGiADQcAANgJQIANBmAFqIANB0ABqQcQAEJQBGiADQcAAaiADQZgBakE0aikC\ +ADcDACADQThqIANBmAFqQSxqKQIANwMAIANBMGogA0GYAWpBJGopAgA3AwAgA0EoaiADQZgBakEcai\ +kCADcDACADQSBqIANBmAFqQRRqKQIANwMAIANBGGogA0GYAWpBDGopAgA3AwAgAyADKQKcATcDECAD\ +IAY3A0ggAyADQRBqEB0LIAFBADoAQCACIAMpAwA3AAAgAiADKQMINwAIIANB4AFqJAAL8gMCA38Cfi\ +MAQeABayIDJAAgACkDACEGIAEgAS0AQCIEaiIFQYABOgAAIANBCGogAEEQaikCADcDACADIAApAgg3\ +AwAgBkIJhiEGIAStQgOGIQcCQCAEQT9zIgBFDQAgBUEBakEAIAAQkwEaCyAGIAeEIQYCQAJAIARBOH\ +FBOEYNACABIAY3ADggAyABEBsMAQsgAyABEBsgA0HQAGpBDGpCADcCACADQdAAakEUakIANwIAIANB\ +0ABqQRxqQgA3AgAgA0HQAGpBJGpCADcCACADQdAAakEsakIANwIAIANB0ABqQTRqQgA3AgAgA0GMAW\ +pCADcCACADQgA3AlQgA0EANgJQIANB0ABqIANB0ABqQQRyQX9zakHEAGpBB0kaIANBwAA2AlAgA0GY\ +AWogA0HQAGpBxAAQlAEaIANBwABqIANBmAFqQTRqKQIANwMAIANBOGogA0GYAWpBLGopAgA3AwAgA0\ +EwaiADQZgBakEkaikCADcDACADQShqIANBmAFqQRxqKQIANwMAIANBIGogA0GYAWpBFGopAgA3AwAg\ +A0EYaiADQZgBakEMaikCADcDACADIAMpApwBNwMQIAMgBjcDSCADIANBEGoQGwsgAUEAOgBAIAIgAy\ +kDADcAACACIAMpAwg3AAggA0HgAWokAAvnAwIEfwJ+IwBB0AFrIgMkACABIAEtAEAiBGoiBUEBOgAA\ +IAApAwBCCYYhByAErUIDhiEIAkAgBEE/cyIGRQ0AIAVBAWpBACAGEJMBGgsgByAIhCEHAkACQCAEQT\ +hxQThGDQAgASAHNwA4IABBCGogARAWDAELIABBCGoiBCABEBYgA0HAAGpBDGpCADcCACADQcAAakEU\ +akIANwIAIANBwABqQRxqQgA3AgAgA0HAAGpBJGpCADcCACADQcAAakEsakIANwIAIANBwABqQTRqQg\ +A3AgAgA0H8AGpCADcCACADQgA3AkQgA0EANgJAIANBwABqIANBwABqQQRyQX9zakHEAGpBB0kaIANB\ +wAA2AkAgA0GIAWogA0HAAGpBxAAQlAEaIANBMGogA0GIAWpBNGopAgA3AwAgA0EoaiADQYgBakEsai\ +kCADcDACADQSBqIANBiAFqQSRqKQIANwMAIANBGGogA0GIAWpBHGopAgA3AwAgA0EQaiADQYgBakEU\ +aikCADcDACADQQhqIANBiAFqQQxqKQIANwMAIAMgAykCjAE3AwAgAyAHNwM4IAQgAxAWCyABQQA6AE\ +AgAiAAKQMINwAAIAIgAEEQaikDADcACCACIABBGGopAwA3ABAgA0HQAWokAAuAAwEFfwJAAkACQCAB\ +QQlJDQBBACECQc3/eyABQRAgAUEQSxsiAWsgAE0NASABQRAgAEELakF4cSAAQQtJGyIDakEMahAZIg\ +BFDQEgAEF4aiECAkACQCABQX9qIgQgAHENACACIQEMAQsgAEF8aiIFKAIAIgZBeHEgBCAAakEAIAFr\ +cUF4aiIAQQAgASAAIAJrQRBLG2oiASACayIAayEEAkAgBkEDcUUNACABIAEoAgRBAXEgBHJBAnI2Ag\ +QgASAEaiIEIAQoAgRBAXI2AgQgBSAFKAIAQQFxIAByQQJyNgIAIAIgAGoiBCAEKAIEQQFyNgIEIAIg\ +ABAkDAELIAIoAgAhAiABIAQ2AgQgASACIABqNgIACyABKAIEIgBBA3FFDQIgAEF4cSICIANBEGpNDQ\ +IgASAAQQFxIANyQQJyNgIEIAEgA2oiACACIANrIgNBA3I2AgQgASACaiICIAIoAgRBAXI2AgQgACAD\ +ECQMAgsgABAZIQILIAIPCyABQQhqC4sDAQJ/IwBBkAFrIgAkAAJAQfAAEBkiAUUNACAAQQxqQgA3Ag\ +AgAEEUakIANwIAIABBHGpCADcCACAAQSRqQgA3AgAgAEEsakIANwIAIABBNGpCADcCACAAQTxqQgA3\ +AgAgAEIANwIEIABBADYCACAAIABBBHJBf3NqQcQAakEHSRogAEHAADYCACAAQcgAaiAAQcQAEJQBGi\ +ABQeAAaiAAQcgAakE8aikCADcAACABQdgAaiAAQcgAakE0aikCADcAACABQdAAaiAAQcgAakEsaikC\ +ADcAACABQcgAaiAAQcgAakEkaikCADcAACABQcAAaiAAQcgAakEcaikCADcAACABQThqIABByABqQR\ +RqKQIANwAAIAFBMGogAEHIAGpBDGopAgA3AAAgASAAKQJMNwAoIAFCADcDACABQegAakEAOgAAIAFB\ +ACkDyI1ANwMIIAFBEGpBACkD0I1ANwMAIAFBGGpBACkD2I1ANwMAIAFBIGpBACkD4I1ANwMAIABBkA\ +FqJAAgAQ8LAAuLAwECfyMAQZABayIAJAACQEHwABAZIgFFDQAgAEEMakIANwIAIABBFGpCADcCACAA\ +QRxqQgA3AgAgAEEkakIANwIAIABBLGpCADcCACAAQTRqQgA3AgAgAEE8akIANwIAIABCADcCBCAAQQ\ +A2AgAgACAAQQRyQX9zakHEAGpBB0kaIABBwAA2AgAgAEHIAGogAEHEABCUARogAUHgAGogAEHIAGpB\ +PGopAgA3AAAgAUHYAGogAEHIAGpBNGopAgA3AAAgAUHQAGogAEHIAGpBLGopAgA3AAAgAUHIAGogAE\ +HIAGpBJGopAgA3AAAgAUHAAGogAEHIAGpBHGopAgA3AAAgAUE4aiAAQcgAakEUaikCADcAACABQTBq\ +IABByABqQQxqKQIANwAAIAEgACkCTDcAKCABQgA3AwAgAUHoAGpBADoAACABQQApA6iNQDcDCCABQR\ +BqQQApA7CNQDcDACABQRhqQQApA7iNQDcDACABQSBqQQApA8CNQDcDACAAQZABaiQAIAEPCwAL+wIB\ +An8jAEGQAWsiACQAAkBB6AAQGSIBRQ0AIABBDGpCADcCACAAQRRqQgA3AgAgAEEcakIANwIAIABBJG\ +pCADcCACAAQSxqQgA3AgAgAEE0akIANwIAIABBPGpCADcCACAAQgA3AgQgAEEANgIAIAAgAEEEckF/\ +c2pBxABqQQdJGiAAQcAANgIAIABByABqIABBxAAQlAEaIAFB2ABqIABByABqQTxqKQIANwAAIAFB0A\ +BqIABByABqQTRqKQIANwAAIAFByABqIABByABqQSxqKQIANwAAIAFBwABqIABByABqQSRqKQIANwAA\ +IAFBOGogAEHIAGpBHGopAgA3AAAgAUEwaiAAQcgAakEUaikCADcAACABQShqIABByABqQQxqKQIANw\ +AAIAEgACkCTDcAICABQgA3AwAgAUHgAGpBADoAACABQQApA5CNQDcDCCABQRBqQQApA5iNQDcDACAB\ +QRhqQQAoAqCNQDYCACAAQZABaiQAIAEPCwAL+wIBAn8jAEGQAWsiACQAAkBB6AAQGSIBRQ0AIAFCAD\ +cDACABQQApA+DRQDcDCCABQRBqQQApA+jRQDcDACABQRhqQQApA/DRQDcDACAAQQxqQgA3AgAgAEEU\ +akIANwIAIABBHGpCADcCACAAQSRqQgA3AgAgAEEsakIANwIAIABBNGpCADcCACAAQTxqQgA3AgAgAE\ +IANwIEIABBADYCACAAIABBBHJBf3NqQcQAakEHSRogAEHAADYCACAAQcgAaiAAQcQAEJQBGiABQdgA\ +aiAAQcgAakE8aikCADcAACABQdAAaiAAQcgAakE0aikCADcAACABQcgAaiAAQcgAakEsaikCADcAAC\ +ABQcAAaiAAQcgAakEkaikCADcAACABQThqIABByABqQRxqKQIANwAAIAFBMGogAEHIAGpBFGopAgA3\ +AAAgAUEoaiAAQcgAakEMaikCADcAACABIAApAkw3ACAgAUHgAGpBADoAACAAQZABaiQAIAEPCwALqQ\ +MBAX8gAiACLQCoASIDakEAQagBIANrEJMBIQMgAkEAOgCoASADQR86AAAgAiACLQCnAUGAAXI6AKcB\ +IAEgASkDACACKQAAhTcDACABIAEpAwggAikACIU3AwggASABKQMQIAIpABCFNwMQIAEgASkDGCACKQ\ +AYhTcDGCABIAEpAyAgAikAIIU3AyAgASABKQMoIAIpACiFNwMoIAEgASkDMCACKQAwhTcDMCABIAEp\ +AzggAikAOIU3AzggASABKQNAIAIpAECFNwNAIAEgASkDSCACKQBIhTcDSCABIAEpA1AgAikAUIU3A1\ +AgASABKQNYIAIpAFiFNwNYIAEgASkDYCACKQBghTcDYCABIAEpA2ggAikAaIU3A2ggASABKQNwIAIp\ +AHCFNwNwIAEgASkDeCACKQB4hTcDeCABIAEpA4ABIAIpAIABhTcDgAEgASABKQOIASACKQCIAYU3A4\ +gBIAEgASkDkAEgAikAkAGFNwOQASABIAEpA5gBIAIpAJgBhTcDmAEgASABKQOgASACKQCgAYU3A6AB\ +IAEQJSAAIAFByAEQlAEaC+8CAQN/AkACQAJAAkAgAC0AaCIDRQ0AAkAgA0HBAE8NACAAQShqIgQgA2\ +ogAUHAACADayIDIAIgAyACSRsiAxCUARogACAALQBoIANqIgU6AGggASADaiEBAkAgAiADayICDQBB\ +ACECDAMLIABBCGogBEHAACAAKQMAIAAtAGogAEHpAGoiAy0AAEVyEBggBEEAQcEAEJMBGiADIAMtAA\ +BBAWo6AAAMAQsgA0HAAEGghMAAEIwBAAtBACEDIAJBwQBJDQEgAEEIaiEEIABB6QBqIgMtAAAhBQNA\ +IAQgAUHAACAAKQMAIAAtAGogBUH/AXFFchAYIAMgAy0AAEEBaiIFOgAAIAFBwABqIQEgAkFAaiICQc\ +AASw0ACyAALQBoIQULIAVB/wFxIgNBwQBPDQELIAAgA2pBKGogAUHAACADayIDIAIgAyACSRsiAhCU\ +ARogACAALQBoIAJqOgBoIAAPCyADQcAAQaCEwAAQjAEAC50DAQJ/IwBBEGsiAyQAIAEgAS0AkAEiBG\ +pBAEGQASAEaxCTASEEIAFBADoAkAEgBEEBOgAAIAEgAS0AjwFBgAFyOgCPASAAIAApAwAgASkAAIU3\ +AwAgACAAKQMIIAEpAAiFNwMIIAAgACkDECABKQAQhTcDECAAIAApAxggASkAGIU3AxggACAAKQMgIA\ +EpACCFNwMgIAAgACkDKCABKQAohTcDKCAAIAApAzAgASkAMIU3AzAgACAAKQM4IAEpADiFNwM4IAAg\ +ACkDQCABKQBAhTcDQCAAIAApA0ggASkASIU3A0ggACAAKQNQIAEpAFCFNwNQIAAgACkDWCABKQBYhT\ +cDWCAAIAApA2AgASkAYIU3A2AgACAAKQNoIAEpAGiFNwNoIAAgACkDcCABKQBwhTcDcCAAIAApA3gg\ +ASkAeIU3A3ggACAAKQOAASABKQCAAYU3A4ABIAAgACkDiAEgASkAiAGFNwOIASAAECUgAiAAKQMANw\ +AAIAIgACkDCDcACCACIAApAxA3ABAgAiAAKQMYPgAYIANBEGokAAudAwECfyMAQRBrIgMkACABIAEt\ +AJABIgRqQQBBkAEgBGsQkwEhBCABQQA6AJABIARBBjoAACABIAEtAI8BQYABcjoAjwEgACAAKQMAIA\ +EpAACFNwMAIAAgACkDCCABKQAIhTcDCCAAIAApAxAgASkAEIU3AxAgACAAKQMYIAEpABiFNwMYIAAg\ +ACkDICABKQAghTcDICAAIAApAyggASkAKIU3AyggACAAKQMwIAEpADCFNwMwIAAgACkDOCABKQA4hT\ +cDOCAAIAApA0AgASkAQIU3A0AgACAAKQNIIAEpAEiFNwNIIAAgACkDUCABKQBQhTcDUCAAIAApA1gg\ +ASkAWIU3A1ggACAAKQNgIAEpAGCFNwNgIAAgACkDaCABKQBohTcDaCAAIAApA3AgASkAcIU3A3AgAC\ +AAKQN4IAEpAHiFNwN4IAAgACkDgAEgASkAgAGFNwOAASAAIAApA4gBIAEpAIgBhTcDiAEgABAlIAIg\ +ACkDADcAACACIAApAwg3AAggAiAAKQMQNwAQIAIgACkDGD4AGCADQRBqJAALlgMBBH8jAEGQBGsiAy\ +QAAkAgAkUNACACQagBbCEEIANB4AJqQQRyIQUgA0GwAWogA0GwAWpBBHIiBkF/c2pBrAFqQQdJGgNA\ +IAAoAgAhAiADQQA2ArABIAZBAEGoARCTARogA0GoATYCsAEgA0HgAmogA0GwAWpBrAEQlAEaIANBCG\ +ogBUGoARCUARogAyACKQMANwMIIAMgAikDCDcDECADIAIpAxA3AxggAyACKQMYNwMgIAMgAikDIDcD\ +KCADIAIpAyg3AzAgAyACKQMwNwM4IAMgAikDODcDQCADIAIpA0A3A0ggAyACKQNINwNQIAMgAikDUD\ +cDWCADIAIpA1g3A2AgAyACKQNgNwNoIAMgAikDaDcDcCADIAIpA3A3A3ggAyACKQN4NwOAASADIAIp\ +A4ABNwOIASADIAIpA4gBNwOQASADIAIpA5ABNwOYASADIAIpA5gBNwOgASADIAIpA6ABNwOoASACEC\ +UgASADQQhqQagBEJQBGiABQagBaiEBIARB2H5qIgQNAAsLIANBkARqJAAL+gIBAn8jAEGQAWsiACQA\ +AkBB6AAQGSIBRQ0AIABBDGpCADcCACAAQRRqQgA3AgAgAEEcakIANwIAIABBJGpCADcCACAAQSxqQg\ +A3AgAgAEE0akIANwIAIABBPGpCADcCACAAQgA3AgQgAEEANgIAIAAgAEEEckF/c2pBxABqQQdJGiAA\ +QcAANgIAIABByABqIABBxAAQlAEaIAFB2ABqIABByABqQTxqKQIANwAAIAFB0ABqIABByABqQTRqKQ\ +IANwAAIAFByABqIABByABqQSxqKQIANwAAIAFBwABqIABByABqQSRqKQIANwAAIAFBOGogAEHIAGpB\ +HGopAgA3AAAgAUEwaiAAQcgAakEUaikCADcAACABQShqIABByABqQQxqKQIANwAAIAEgACkCTDcAIC\ +ABQfDDy558NgIYIAFC/rnrxemOlZkQNwMQIAFCgcaUupbx6uZvNwMIIAFCADcDACABQeAAakEAOgAA\ +IABBkAFqJAAgAQ8LAAvkAgEEfyMAQZAEayIDJAAgAyAANgIEIABByAFqIQQCQAJAAkACQAJAIABB8A\ +JqLQAAIgVFDQBBqAEgBWsiBiACSw0BIAEgBCAFaiAGEJQBIAZqIQEgAiAGayECCyACIAJBqAFuIgZB\ +qAFsIgVJDQEgA0EEaiABIAYQOgJAIAIgBWsiAg0AQQAhAgwECyADQQA2ArABIANBsAFqIANBsAFqQQ\ +RyQQBBqAEQkwFBf3NqQawBakEHSRogA0GoATYCsAEgA0HgAmogA0GwAWpBrAEQlAEaIANBCGogA0Hg\ +AmpBBHJBqAEQlAEaIANBBGogA0EIakEBEDogAkGpAU8NAiABIAVqIANBCGogAhCUARogBCADQQhqQa\ +gBEJQBGgwDCyABIAQgBWogAhCUARogBSACaiECDAILQeiMwABBI0HIjMAAEHIACyACQagBQdiMwAAQ\ +iwEACyAAIAI6APACIANBkARqJAAL5AIBBH8jAEGwA2siAyQAIAMgADYCBCAAQcgBaiEEAkACQAJAAk\ +ACQCAAQdACai0AACIFRQ0AQYgBIAVrIgYgAksNASABIAQgBWogBhCUASAGaiEBIAIgBmshAgsgAiAC\ +QYgBbiIGQYgBbCIFSQ0BIANBBGogASAGEEMCQCACIAVrIgINAEEAIQIMBAsgA0EANgKQASADQZABai\ +ADQZABakEEckEAQYgBEJMBQX9zakGMAWpBB0kaIANBiAE2ApABIANBoAJqIANBkAFqQYwBEJQBGiAD\ +QQhqIANBoAJqQQRyQYgBEJQBGiADQQRqIANBCGpBARBDIAJBiQFPDQIgASAFaiADQQhqIAIQlAEaIA\ +QgA0EIakGIARCUARoMAwsgASAEIAVqIAIQlAEaIAUgAmohAgwCC0HojMAAQSNByIzAABByAAsgAkGI\ +AUHYjMAAEIsBAAsgACACOgDQAiADQbADaiQAC5EDAQF/AkAgAkUNACABIAJBqAFsaiEDIAAoAgAhAg\ +NAIAIgAikDACABKQAAhTcDACACIAIpAwggASkACIU3AwggAiACKQMQIAEpABCFNwMQIAIgAikDGCAB\ +KQAYhTcDGCACIAIpAyAgASkAIIU3AyAgAiACKQMoIAEpACiFNwMoIAIgAikDMCABKQAwhTcDMCACIA\ +IpAzggASkAOIU3AzggAiACKQNAIAEpAECFNwNAIAIgAikDSCABKQBIhTcDSCACIAIpA1AgASkAUIU3\ +A1AgAiACKQNYIAEpAFiFNwNYIAIgAikDYCABKQBghTcDYCACIAIpA2ggASkAaIU3A2ggAiACKQNwIA\ +EpAHCFNwNwIAIgAikDeCABKQB4hTcDeCACIAIpA4ABIAEpAIABhTcDgAEgAiACKQOIASABKQCIAYU3\ +A4gBIAIgAikDkAEgASkAkAGFNwOQASACIAIpA5gBIAEpAJgBhTcDmAEgAiACKQOgASABKQCgAYU3A6\ +ABIAIQJSABQagBaiIBIANHDQALCwvuAgECfyMAQZABayIAJAACQEHgABAZIgFFDQAgAEEMakIANwIA\ +IABBFGpCADcCACAAQRxqQgA3AgAgAEEkakIANwIAIABBLGpCADcCACAAQTRqQgA3AgAgAEE8akIANw\ +IAIABCADcCBCAAQQA2AgAgACAAQQRyQX9zakHEAGpBB0kaIABBwAA2AgAgAEHIAGogAEHEABCUARog\ +AUHQAGogAEHIAGpBPGopAgA3AAAgAUHIAGogAEHIAGpBNGopAgA3AAAgAUHAAGogAEHIAGpBLGopAg\ +A3AAAgAUE4aiAAQcgAakEkaikCADcAACABQTBqIABByABqQRxqKQIANwAAIAFBKGogAEHIAGpBFGop\ +AgA3AAAgAUEgaiAAQcgAakEMaikCADcAACABIAApAkw3ABggAUL+uevF6Y6VmRA3AxAgAUKBxpS6lv\ +Hq5m83AwggAUIANwMAIAFB2ABqQQA6AAAgAEGQAWokACABDwsAC7wCAQh/AkACQCACQQ9LDQAgACED\ +DAELIABBACAAa0EDcSIEaiEFAkAgBEUNACAAIQMgASEGA0AgAyAGLQAAOgAAIAZBAWohBiADQQFqIg\ +MgBUkNAAsLIAUgAiAEayIHQXxxIghqIQMCQAJAIAEgBGoiCUEDcSIGRQ0AIAhBAUgNASAJQXxxIgpB\ +BGohAUEAIAZBA3QiAmtBGHEhBCAKKAIAIQYDQCAFIAYgAnYgASgCACIGIAR0cjYCACABQQRqIQEgBU\ +EEaiIFIANJDQAMAgsLIAhBAUgNACAJIQEDQCAFIAEoAgA2AgAgAUEEaiEBIAVBBGoiBSADSQ0ACwsg\ +B0EDcSECIAkgCGohAQsCQCACRQ0AIAMgAmohBQNAIAMgAS0AADoAACABQQFqIQEgA0EBaiIDIAVJDQ\ +ALCyAAC/oCAQF/IAEgAS0AiAEiA2pBAEGIASADaxCTASEDIAFBADoAiAEgA0EBOgAAIAEgAS0AhwFB\ +gAFyOgCHASAAIAApAwAgASkAAIU3AwAgACAAKQMIIAEpAAiFNwMIIAAgACkDECABKQAQhTcDECAAIA\ +ApAxggASkAGIU3AxggACAAKQMgIAEpACCFNwMgIAAgACkDKCABKQAohTcDKCAAIAApAzAgASkAMIU3\ +AzAgACAAKQM4IAEpADiFNwM4IAAgACkDQCABKQBAhTcDQCAAIAApA0ggASkASIU3A0ggACAAKQNQIA\ +EpAFCFNwNQIAAgACkDWCABKQBYhTcDWCAAIAApA2AgASkAYIU3A2AgACAAKQNoIAEpAGiFNwNoIAAg\ +ACkDcCABKQBwhTcDcCAAIAApA3ggASkAeIU3A3ggACAAKQOAASABKQCAAYU3A4ABIAAQJSACIAApAw\ +A3AAAgAiAAKQMINwAIIAIgACkDEDcAECACIAApAxg3ABgL+gIBAX8gASABLQCIASIDakEAQYgBIANr\ +EJMBIQMgAUEAOgCIASADQQY6AAAgASABLQCHAUGAAXI6AIcBIAAgACkDACABKQAAhTcDACAAIAApAw\ +ggASkACIU3AwggACAAKQMQIAEpABCFNwMQIAAgACkDGCABKQAYhTcDGCAAIAApAyAgASkAIIU3AyAg\ +ACAAKQMoIAEpACiFNwMoIAAgACkDMCABKQAwhTcDMCAAIAApAzggASkAOIU3AzggACAAKQNAIAEpAE\ +CFNwNAIAAgACkDSCABKQBIhTcDSCAAIAApA1AgASkAUIU3A1AgACAAKQNYIAEpAFiFNwNYIAAgACkD\ +YCABKQBghTcDYCAAIAApA2ggASkAaIU3A2ggACAAKQNwIAEpAHCFNwNwIAAgACkDeCABKQB4hTcDeC\ +AAIAApA4ABIAEpAIABhTcDgAEgABAlIAIgACkDADcAACACIAApAwg3AAggAiAAKQMQNwAQIAIgACkD\ +GDcAGAvmAgEEfyMAQbADayIDJAACQCACRQ0AIAJBiAFsIQQgA0GgAmpBBHIhBSADQZABaiADQZABak\ +EEciIGQX9zakGMAWpBB0kaA0AgACgCACECIANBADYCkAEgBkEAQYgBEJMBGiADQYgBNgKQASADQaAC\ +aiADQZABakGMARCUARogA0EIaiAFQYgBEJQBGiADIAIpAwA3AwggAyACKQMINwMQIAMgAikDEDcDGC\ +ADIAIpAxg3AyAgAyACKQMgNwMoIAMgAikDKDcDMCADIAIpAzA3AzggAyACKQM4NwNAIAMgAikDQDcD\ +SCADIAIpA0g3A1AgAyACKQNQNwNYIAMgAikDWDcDYCADIAIpA2A3A2ggAyACKQNoNwNwIAMgAikDcD\ +cDeCADIAIpA3g3A4ABIAMgAikDgAE3A4gBIAIQJSABIANBCGpBiAEQlAEaIAFBiAFqIQEgBEH4fmoi\ +BA0ACwsgA0GwA2okAAvYAgEBfwJAIAJFDQAgASACQZABbGohAyAAKAIAIQIDQCACIAIpAwAgASkAAI\ +U3AwAgAiACKQMIIAEpAAiFNwMIIAIgAikDECABKQAQhTcDECACIAIpAxggASkAGIU3AxggAiACKQMg\ +IAEpACCFNwMgIAIgAikDKCABKQAohTcDKCACIAIpAzAgASkAMIU3AzAgAiACKQM4IAEpADiFNwM4IA\ +IgAikDQCABKQBAhTcDQCACIAIpA0ggASkASIU3A0ggAiACKQNQIAEpAFCFNwNQIAIgAikDWCABKQBY\ +hTcDWCACIAIpA2AgASkAYIU3A2AgAiACKQNoIAEpAGiFNwNoIAIgAikDcCABKQBwhTcDcCACIAIpA3\ +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\ +cgACAAKQMAIAEpAACFNwMAIAAgACkDCCABKQAIhTcDCCAAIAApAxAgASkAEIU3AxAgACAAKQMYIAEp\ +ABiFNwMYIAAgACkDICABKQAghTcDICAAIAApAyggASkAKIU3AyggACAAKQMwIAEpADCFNwMwIAAgAC\ +kDOCABKQA4hTcDOCAAIAApA0AgASkAQIU3A0AgACAAKQNIIAEpAEiFNwNIIAAgACkDUCABKQBQhTcD\ +UCAAIAApA1ggASkAWIU3A1ggACAAKQNgIAEpAGCFNwNgIAAQJSACIAApAwA3AAAgAiAAKQMINwAIIA\ +IgACkDEDcAECACIAApAxg3ABggAiAAKQMgNwAgIAIgACkDKDcAKAubAgEBfyABIAEtAEgiA2pBAEHI\ +ACADaxCTASEDIAFBADoASCADQQE6AAAgASABLQBHQYABcjoARyAAIAApAwAgASkAAIU3AwAgACAAKQ\ +MIIAEpAAiFNwMIIAAgACkDECABKQAQhTcDECAAIAApAxggASkAGIU3AxggACAAKQMgIAEpACCFNwMg\ +IAAgACkDKCABKQAohTcDKCAAIAApAzAgASkAMIU3AzAgACAAKQM4IAEpADiFNwM4IAAgACkDQCABKQ\ +BAhTcDQCAAECUgAiAAKQMANwAAIAIgACkDCDcACCACIAApAxA3ABAgAiAAKQMYNwAYIAIgACkDIDcA\ +ICACIAApAyg3ACggAiAAKQMwNwAwIAIgACkDODcAOAubAgEBfyABIAEtAEgiA2pBAEHIACADaxCTAS\ +EDIAFBADoASCADQQY6AAAgASABLQBHQYABcjoARyAAIAApAwAgASkAAIU3AwAgACAAKQMIIAEpAAiF\ +NwMIIAAgACkDECABKQAQhTcDECAAIAApAxggASkAGIU3AxggACAAKQMgIAEpACCFNwMgIAAgACkDKC\ +ABKQAohTcDKCAAIAApAzAgASkAMIU3AzAgACAAKQM4IAEpADiFNwM4IAAgACkDQCABKQBAhTcDQCAA\ +ECUgAiAAKQMANwAAIAIgACkDCDcACCACIAApAxA3ABAgAiAAKQMYNwAYIAIgACkDIDcAICACIAApAy\ +g3ACggAiAAKQMwNwAwIAIgACkDODcAOAuIAgECfyMAQZACayIAJAACQEHYARAZIgFFDQAgAEEANgIA\ +IAAgAEEEckEAQYABEJMBQX9zakGEAWpBB0kaIABBgAE2AgAgAEGIAWogAEGEARCUARogAUHQAGogAE\ +GIAWpBBHJBgAEQlAEaIAFByABqQgA3AwAgAUIANwNAIAFB0AFqQQA6AAAgAUEAKQPojUA3AwAgAUEI\ +akEAKQPwjUA3AwAgAUEQakEAKQP4jUA3AwAgAUEYakEAKQOAjkA3AwAgAUEgakEAKQOIjkA3AwAgAU\ +EoakEAKQOQjkA3AwAgAUEwakEAKQOYjkA3AwAgAUE4akEAKQOgjkA3AwAgAEGQAmokACABDwsAC4gC\ +AQJ/IwBBkAJrIgAkAAJAQdgBEBkiAUUNACAAQQA2AgAgACAAQQRyQQBBgAEQkwFBf3NqQYQBakEHSR\ +ogAEGAATYCACAAQYgBaiAAQYQBEJQBGiABQdAAaiAAQYgBakEEckGAARCUARogAUHIAGpCADcDACAB\ +QgA3A0AgAUHQAWpBADoAACABQQApA6iOQDcDACABQQhqQQApA7COQDcDACABQRBqQQApA7iOQDcDAC\ +ABQRhqQQApA8COQDcDACABQSBqQQApA8iOQDcDACABQShqQQApA9COQDcDACABQTBqQQApA9iOQDcD\ +ACABQThqQQApA+COQDcDACAAQZACaiQAIAEPCwALggIBAX8CQCACRQ0AIAEgAkHoAGxqIQMgACgCAC\ +ECA0AgAiACKQMAIAEpAACFNwMAIAIgAikDCCABKQAIhTcDCCACIAIpAxAgASkAEIU3AxAgAiACKQMY\ +IAEpABiFNwMYIAIgAikDICABKQAghTcDICACIAIpAyggASkAKIU3AyggAiACKQMwIAEpADCFNwMwIA\ +IgAikDOCABKQA4hTcDOCACIAIpA0AgASkAQIU3A0AgAiACKQNIIAEpAEiFNwNIIAIgAikDUCABKQBQ\ +hTcDUCACIAIpA1ggASkAWIU3A1ggAiACKQNgIAEpAGCFNwNgIAIQJSABQegAaiIBIANHDQALCwvnAQ\ +EHfyMAQRBrIgMkACACEAIhBCACEAMhBSACEAQhBgJAAkAgBEGBgARJDQBBACEHIAQhCANAIAMgBiAF\ +IAdqIAhBgIAEIAhBgIAESRsQBSIJEF0CQCAJQSRJDQAgCRABCyAAIAEgAygCACIJIAMoAggQESAHQY\ +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\ +BSgCBCEDAkACQCAFKAIADQAgACAENgIEIAAgAzYCAAwBCyADIAQQACEEIABBADYCACAAIAQ2AgQLAk\ +AgAUEERw0AIAIoApABRQ0AIAJBADYCkAELIAIQIiAFQRBqJAALfgEBfyMAQcAAayIEJAAgBEErNgIM\ +IAQgADYCCCAEIAI2AhQgBCABNgIQIARBLGpBAjYCACAEQTxqQQE2AgAgBEICNwIcIARB1IjAADYCGC\ +AEQQI2AjQgBCAEQTBqNgIoIAQgBEEQajYCOCAEIARBCGo2AjAgBEEYaiADEHcAC3UBAn8jAEGQAmsi\ +AiQAQQAhAyACQQA2AgADQCACIANqQQRqIAEgA2ooAAA2AgAgAiADQQRqIgM2AgAgA0GAAUcNAAsgAk\ +GIAWogAkGEARCUARogACACQYgBakEEckGAARCUASABLQCAAToAgAEgAkGQAmokAAt1AQJ/IwBBsAJr\ +IgIkAEEAIQMgAkEANgIAA0AgAiADakEEaiABIANqKAAANgIAIAIgA0EEaiIDNgIAIANBkAFHDQALIA\ +JBmAFqIAJBlAEQlAEaIAAgAkGYAWpBBHJBkAEQlAEgAS0AkAE6AJABIAJBsAJqJAALdQECfyMAQaAC\ +ayICJABBACEDIAJBADYCAANAIAIgA2pBBGogASADaigAADYCACACIANBBGoiAzYCACADQYgBRw0ACy\ +ACQZABaiACQYwBEJQBGiAAIAJBkAFqQQRyQYgBEJQBIAEtAIgBOgCIASACQaACaiQAC3MBAn8jAEHg\ +AWsiAiQAQQAhAyACQQA2AgADQCACIANqQQRqIAEgA2ooAAA2AgAgAiADQQRqIgM2AgAgA0HoAEcNAA\ +sgAkHwAGogAkHsABCUARogACACQfAAakEEckHoABCUASABLQBoOgBoIAJB4AFqJAALcwECfyMAQaAB\ +ayICJABBACEDIAJBADYCAANAIAIgA2pBBGogASADaigAADYCACACIANBBGoiAzYCACADQcgARw0ACy\ +ACQdAAaiACQcwAEJQBGiAAIAJB0ABqQQRyQcgAEJQBIAEtAEg6AEggAkGgAWokAAt1AQJ/IwBB4AJr\ +IgIkAEEAIQMgAkEANgIAA0AgAiADakEEaiABIANqKAAANgIAIAIgA0EEaiIDNgIAIANBqAFHDQALIA\ +JBsAFqIAJBrAEQlAEaIAAgAkGwAWpBBHJBqAEQlAEgAS0AqAE6AKgBIAJB4AJqJAALewECfyMAQTBr\ +IgIkACACQRRqQQI2AgAgAkH0h8AANgIQIAJBAjYCDCACQdSHwAA2AgggAUEcaigCACEDIAEoAhghAS\ +ACQQI2AiwgAkICNwIcIAJB1IjAADYCGCACIAJBCGo2AiggASADIAJBGGoQKyEBIAJBMGokACABC3sB\ +An8jAEEwayICJAAgAkEUakECNgIAIAJB9IfAADYCECACQQI2AgwgAkHUh8AANgIIIAFBHGooAgAhAy\ +ABKAIYIQEgAkECNgIsIAJCAjcCHCACQdSIwAA2AhggAiACQQhqNgIoIAEgAyACQRhqECshASACQTBq\ +JAAgAQtsAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpBAzYCACADQgM3Ag\ +wgA0HQi8AANgIIIANBAzYCJCADIANBIGo2AhggAyADNgIoIAMgA0EEajYCICADQQhqIAIQdwALbAEB\ +fyMAQTBrIgMkACADIAE2AgQgAyAANgIAIANBHGpBAjYCACADQSxqQQM2AgAgA0ICNwIMIANBsIjAAD\ +YCCCADQQM2AiQgAyADQSBqNgIYIAMgAzYCKCADIANBBGo2AiAgA0EIaiACEHcAC2wBAX8jAEEwayID\ +JAAgAyABNgIEIAMgADYCACADQRxqQQI2AgAgA0EsakEDNgIAIANCAjcCDCADQeCKwAA2AgggA0EDNg\ +IkIAMgA0EgajYCGCADIANBBGo2AiggAyADNgIgIANBCGogAhB3AAtsAQF/IwBBMGsiAyQAIAMgATYC\ +BCADIAA2AgAgA0EcakECNgIAIANBLGpBAzYCACADQgI3AgwgA0GAi8AANgIIIANBAzYCJCADIANBIG\ +o2AhggAyADQQRqNgIoIAMgAzYCICADQQhqIAIQdwALVwECfwJAAkAgAEUNACAAKAIADQEgAEEANgIA\ +IAAoAgghASAAKAIEIQIgABAiAkAgAkEERw0AIAEoApABRQ0AIAFBADYCkAELIAEQIg8LEJABAAsQkQ\ +EAC1gBAn9BAEEAKALo0kAiAUEBajYC6NJAQQBBACgCsNZAQQFqIgI2ArDWQAJAIAFBAEgNACACQQJL\ +DQBBACgC5NJAQX9MDQAgAkEBSw0AIABFDQAQlwEACwALSgEDf0EAIQMCQCACRQ0AAkADQCAALQAAIg\ +QgAS0AACIFRw0BIABBAWohACABQQFqIQEgAkF/aiICRQ0CDAALCyAEIAVrIQMLIAMLRgACQAJAIAFF\ +DQAgASgCAA0BIAFBfzYCACABQQRqKAIAIAFBCGooAgAgAhBQIAFBADYCACAAQgA3AwAPCxCQAQALEJ\ +EBAAtHAQF/IwBBIGsiAyQAIANBFGpBADYCACADQdiQwAA2AhAgA0IBNwIEIAMgATYCHCADIAA2Ahgg\ +AyADQRhqNgIAIAMgAhB3AAuLAQAgAEIANwNAIABC+cL4m5Gjs/DbADcDOCAAQuv6htq/tfbBHzcDMC\ +AAQp/Y+dnCkdqCm383AyggAELRhZrv+s+Uh9EANwMgIABC8e30+KWn/aelfzcDGCAAQqvw0/Sv7ry3\ +PDcDECAAQrvOqqbY0Ouzu383AwggACABrUKIkveV/8z5hOoAhTcDAAtFAQJ/IwBBEGsiASQAAkAgAC\ +gCCCICDQBB2JDAAEErQaCRwAAQcgALIAEgACgCDDYCCCABIAA2AgQgASACNgIAIAEQewALQgEBfwJA\ +AkACQCACQYCAxABGDQBBASEEIAAgAiABKAIQEQYADQELIAMNAUEAIQQLIAQPCyAAIANBACABKAIMEQ\ +gACz8BAX8jAEEgayIAJAAgAEEcakEANgIAIABB2JDAADYCGCAAQgE3AgwgAEGUgsAANgIIIABBCGpB\ +nILAABB3AAs+AQF/IwBBIGsiAiQAIAJBAToAGCACIAE2AhQgAiAANgIQIAJBwIjAADYCDCACQdiQwA\ +A2AgggAkEIahB0AAs9AQJ/IAAoAgAiAUEUaigCACECAkACQCABKAIEDgIAAAELIAINACAAKAIELQAQ\ +EG8ACyAAKAIELQAQEG8ACzMAAkAgAEH8////B0sNAAJAIAANAEEEDwsgACAAQf3///8HSUECdBAxIg\ +BFDQAgAA8LAAtSACAAQsfMo9jW0Ouzu383AwggAEIANwMAIABBIGpCq7OP/JGjs/DbADcDACAAQRhq\ +Qv+kuYjFkdqCm383AwAgAEEQakLy5rvjo6f9p6V/NwMACywBAX8jAEEQayIBJAAgAUEIaiAAQQhqKA\ +IANgIAIAEgACkCADcDACABEHgACyYAAkAgAA0AQeiOwABBMBCSAQALIAAgAiADIAQgBSABKAIQEQwA\ +CyQAAkAgAA0AQeiOwABBMBCSAQALIAAgAiADIAQgASgCEBEKAAskAAJAIAANAEHojsAAQTAQkgEACy\ +AAIAIgAyAEIAEoAhARCQALJAACQCAADQBB6I7AAEEwEJIBAAsgACACIAMgBCABKAIQEQoACyQAAkAg\ +AA0AQeiOwABBMBCSAQALIAAgAiADIAQgASgCEBEJAAskAAJAIAANAEHojsAAQTAQkgEACyAAIAIgAy\ +AEIAEoAhARCQALJAACQCAADQBB6I7AAEEwEJIBAAsgACACIAMgBCABKAIQERcACyQAAkAgAA0AQeiO\ +wABBMBCSAQALIAAgAiADIAQgASgCEBEYAAskAAJAIAANAEHojsAAQTAQkgEACyAAIAIgAyAEIAEoAh\ +ARFgALIgACQCAADQBB6I7AAEEwEJIBAAsgACACIAMgASgCEBEHAAsgAAJAAkAgAUH8////B0sNACAA\ +IAIQJiIBDQELAAsgAQsgAAJAIAANAEHojsAAQTAQkgEACyAAIAIgASgCEBEGAAsUACAAKAIAIAEgAC\ +gCBCgCDBEGAAsQACABIAAoAgAgACgCBBAcCw4AAkAgAUUNACAAECILCwsAIAAgASACEG0ACwsAIAAg\ +ASACEGwACxEAQayCwABBL0G4g8AAEHIACw0AIAAoAgAaA38MAAsLCwAgACMAaiQAIwALDQBB+NHAAE\ +EbEJIBAAsOAEGT0sAAQc8AEJIBAAsJACAAIAEQCwALCgAgACABIAIQUwsKACAAIAEgAhBACwoAIAAg\ +ASACEHALDABCuInPl4nG0fhMCwMAAAsCAAsL7NKAgAABAEGAgMAAC+JS6AUQAF0AAACVAAAACQAAAE\ +JMQUtFMkJCTEFLRTJCLTI1NkJMQUtFMkItMzg0QkxBS0UyU0JMQUtFM0tFQ0NBSy0yMjRLRUNDQUst\ +MjU2S0VDQ0FLLTM4NEtFQ0NBSy01MTJNRDRNRDVSSVBFTUQtMTYwU0hBLTFTSEEtMjI0U0hBLTI1Nl\ +NIQS0zODRTSEEtNTEyVElHRVJ1bnN1cHBvcnRlZCBhbGdvcml0aG1ub24tZGVmYXVsdCBsZW5ndGgg\ +c3BlY2lmaWVkIGZvciBub24tZXh0ZW5kYWJsZSBhbGdvcml0aG1saWJyYXJ5L2FsbG9jL3NyYy9yYX\ +dfdmVjLnJzY2FwYWNpdHkgb3ZlcmZsb3cAAgEQABEAAADmABAAHAAAAAYCAAAFAAAAQXJyYXlWZWM6\ +IGNhcGFjaXR5IGV4Y2VlZGVkIGluIGV4dGVuZC9mcm9tX2l0ZXJDOlxVc2Vyc1xheWFtZVwuY2FyZ2\ +9ccmVnaXN0cnlcc3JjXGdpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyM1xhcnJheXZlYy0wLjcuMlxz\ +cmNcYXJyYXl2ZWMucnNbARAAXQAAAAEEAAAFAAAAQzpcVXNlcnNcYXlhbWVcLmNhcmdvXHJlZ2lzdH\ +J5XHNyY1xnaXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjNcYmxha2UzLTEuMy4xXHNyY1xsaWIucnMA\ +AMgBEABWAAAAuQEAAAkAAADIARAAVgAAAF8CAAAKAAAAyAEQAFYAAACNAgAACQAAAMgBEABWAAAAjQ\ +IAADQAAADIARAAVgAAALkCAAAfAAAAyAEQAFYAAADdAgAACgAAAMgBEABWAAAA1gIAAAkAAADIARAA\ +VgAAAAEDAAAZAAAAyAEQAFYAAAADAwAACQAAAMgBEABWAAAAAwMAADgAAADIARAAVgAAAPgDAAAeAA\ +AAyAEQAFYAAACqBAAAFgAAAMgBEABWAAAAvAQAABYAAADIARAAVgAAAO0EAAASAAAAyAEQAFYAAAD3\ +BAAAEgAAAMgBEABWAAAAaQUAACEAAAARAAAABAAAAAQAAAASAAAAQzpcVXNlcnNcYXlhbWVcLmNhcm\ +dvXHJlZ2lzdHJ5XHNyY1xnaXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjNcYXJyYXl2ZWMtMC43LjJc\ +c3JjXGFycmF5dmVjX2ltcGwucnMAADADEABiAAAAJwAAAAkAAAARAAAAIAAAAAEAAAATAAAAEQAAAA\ +QAAAAEAAAAEgAAAENhcGFjaXR5RXJyb3IAAADEAxAADQAAAGluc3VmZmljaWVudCBjYXBhY2l0eQAA\ +ANwDEAAVAAAAKWluZGV4IG91dCBvZiBib3VuZHM6IHRoZSBsZW4gaXMgIGJ1dCB0aGUgaW5kZXggaX\ +MgAP0DEAAgAAAAHQQQABIAAAARAAAAAAAAAAEAAAAUAAAAOiAAAFgIEAAAAAAAUAQQAAIAAAAwMDAx\ +MDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMD\ +MxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2\ +MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4OD\ +k5MDkxOTI5Mzk0OTU5Njk3OTg5OXJhbmdlIHN0YXJ0IGluZGV4ICBvdXQgb2YgcmFuZ2UgZm9yIHNs\ +aWNlIG9mIGxlbmd0aCAsBRAAEgAAAD4FEAAiAAAAcmFuZ2UgZW5kIGluZGV4IHAFEAAQAAAAPgUQAC\ +IAAABzb3VyY2Ugc2xpY2UgbGVuZ3RoICgpIGRvZXMgbm90IG1hdGNoIGRlc3RpbmF0aW9uIHNsaWNl\ +IGxlbmd0aCAokAUQABUAAAClBRAAKwAAAPwDEAABAAAAQzpcVXNlcnNcYXlhbWVcLmNhcmdvXHJlZ2\ +lzdHJ5XHNyY1xnaXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjNcYmxvY2stYnVmZmVyLTAuMTAuMFxz\ +cmNcbGliLnJzAAAA6AUQAF0AAAA/AQAAHgAAAOgFEABdAAAA/AAAACcAAABhc3NlcnRpb24gZmFpbG\ +VkOiBtaWQgPD0gc2VsZi5sZW4oKQAAAAAAASNFZ4mrze/+3LqYdlQyEPDh0sMAAAAAZ+YJaoWuZ7ty\ +8248OvVPpX9SDlGMaAWbq9mDHxnN4FvYngXBB9V8NhfdcDA5WQ73MQvA/xEVWGinj/lkpE/6vgjJvP\ +Nn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN\ +4FvYngXBXZ27ywfVfDYqKZpiF91wMFoBWZE5WQ732OwvFTELwP9nJjNnERVYaIdKtI6nj/lkDS4M26\ +RP+r4dSLVHY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGRlc3Ryb3llZCBhbHJlYWR5AQAA\ +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\ +lDd5aCZ+3gylvu8/x5yAA2dZ9Atm2StTma0AaIxXoxsK6DbyEfOIZKyuYBJTCf0WI0/2b7O/3dJHwg\ +cuvi7OLTtvZK3gjqx75NmZzEi5qwl+WsSbqXB89mR4yzdSp8xXOTGxNYHpNhziyCsQwcugm5VXWd0h\ +F9k92vfxLkkm3GrTvaKbzswlRx1cGiJP72gk0TxVhPJ2JbUeM6HCaBywEuyAfpy3/jExkJ7fjJRgDI\ ++dhJMmP7iOPtm8+AnvFsEZpTgRhXJNVr9/MDUaj3R6715rcVz5x+1N7G19sauygCQVzlRJlO214l1E\ +e2MPyquCuIEV0qIdMpu4sJ9bOWAukU6rWPWgLdVyGUe2e1rJCjwOdY+wFKvYNMZ9OJO7nzS9+kLZ4p\ +SKuMMh7E/FIsWLqWjPMDsl3Yf7290cqDroJgwUK0u7Ca2qVr6F+5P6lxN2cELrLYUjFJyVhThB5UtJ\ +eGSCq+ZmmO0y3copUrhTySrBEswHuo8g2ZsYgjvjdPG/oIgHwD5VRNyNBwH9RXzn7srZBUOjoG2Sc8\ +KwC/ojCAhKOufsADIO1tMgLGhkCpaX0op4OKevUwy196xXnn63nkRGi16bzcBQ+0c6PiDleIbnga16\ +D26L3NupyHL6NkwbzRapeL12aWXuIhqzzD5eWqYxCQkI1pSESzGJi7ih4+rodk47TcO4kx+b2vGdW7\ +X9ygRWPKZZSbJv4ohuxRnD9gAV0et0lQoQZA5E2xy3b35XBsv+0rVe/yGBJBozZacAgHDMtEYJhPdR\ +RN5w4oqA5D2VbNZVBfU9eRJcGW7wpy8SMyyB+lY3NvOaDD782riWdFIwEQMlR2mLrc/ofhssO0pZbw\ +bnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZW\ +N0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdADnz4CAAARuYW1l\ +AdzPgIAAmQEARWpzX3N5czo6VHlwZUVycm9yOjpuZXc6Ol9fd2JnX25ld19kYjI1NGFlMGExYmIwZm\ +Y1OjpoYTI0ZWExODBiNTMzNGVmMAE7d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX29iamVjdF9kcm9w\ +X3JlZjo6aDE5ZDUwMGYzZTBmNDllNTECVWpzX3N5czo6VWludDhBcnJheTo6Ynl0ZV9sZW5ndGg6Ol\ +9fd2JnX2J5dGVMZW5ndGhfODdhMDQzNmE3NGFkYzI2Yzo6aDIzYjEzYTM1M2UzNzgwNDIDVWpzX3N5\ +czo6VWludDhBcnJheTo6Ynl0ZV9vZmZzZXQ6Ol9fd2JnX2J5dGVPZmZzZXRfNDQ3N2Q1NDcxMGFmNm\ +Y5Yjo6aGU4ZWUxMDAwODAyY2Y4ZDQETGpzX3N5czo6VWludDhBcnJheTo6YnVmZmVyOjpfX3diZ19i\ +dWZmZXJfMjEzMTBlYTE3MjU3YjBiNDo6aGQyODBkYTQzODQ1ZDc4NGEFeWpzX3N5czo6VWludDhBcn\ +JheTo6bmV3X3dpdGhfYnl0ZV9vZmZzZXRfYW5kX2xlbmd0aDo6X193YmdfbmV3d2l0aGJ5dGVvZmZz\ +ZXRhbmRsZW5ndGhfZDlhYTI2NjcwM2NiOThiZTo6aDIyMDMxMzZjNzkxZGI0ZWEGTGpzX3N5czo6VW\ +ludDhBcnJheTo6bGVuZ3RoOjpfX3diZ19sZW5ndGhfOWUxYWUxOTAwY2IwZmJkNTo6aDFlYmRmMmI3\ +NWFkMTNiNWIHMndhc21fYmluZGdlbjo6X193YmluZGdlbl9tZW1vcnk6Omg0ZGMyNzVjOGQxYzk5NT\ +cyCFVqc19zeXM6OldlYkFzc2VtYmx5OjpNZW1vcnk6OmJ1ZmZlcjo6X193YmdfYnVmZmVyXzNmM2Q3\ +NjRkNDc0N2Q1NjQ6OmhmYjkxMmFkZTU5OTgwMjI5CUZqc19zeXM6OlVpbnQ4QXJyYXk6Om5ldzo6X1\ +93YmdfbmV3XzhjM2YwMDUyMjcyYTQ1N2E6Omg3OWM2MDkzMmI0ZGIzMjc4CkZqc19zeXM6OlVpbnQ4\ +QXJyYXk6OnNldDo6X193Ymdfc2V0XzgzZGI5NjkwZjkzNTNlNzk6Omg3ODI5MjAwOTM4ODkwMzFkCz\ +F3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fdGhyb3c6OmgwY2ExZmFiODliODNiMzgzDEBkZW5vX3N0\ +ZF93YXNtX2NyeXB0bzo6ZGlnZXN0OjpDb250ZXh0OjpkaWdlc3Q6OmhmMTg3OTkzNzQ4MmU1ODQ3DS\ +xzaGEyOjpzaGE1MTI6OmNvbXByZXNzNTEyOjpoZWM3NGU0Nzc0YTdlMDQwYQ5KZGVub19zdGRfd2Fz\ +bV9jcnlwdG86OmRpZ2VzdDo6Q29udGV4dDo6ZGlnZXN0X2FuZF9yZXNldDo6aDZhNGZkMjI1ZjY3ND\ +ljMGQPLHNoYTI6OnNoYTI1Njo6Y29tcHJlc3MyNTY6Omg0NjllNDIyNzljM2Y4MmQ1EBNkaWdlc3Rj\ +b250ZXh0X2Nsb25lEUBkZW5vX3N0ZF93YXNtX2NyeXB0bzo6ZGlnZXN0OjpDb250ZXh0Ojp1cGRhdG\ +U6OmhhNmVkYjg4YTFmMDk0OGYxEjNibGFrZTI6OkJsYWtlMmJWYXJDb3JlOjpjb21wcmVzczo6aGIw\ +YmNjYTI1NzQzZTJiZGQTKXJpcGVtZDo6YzE2MDo6Y29tcHJlc3M6OmgwMjMzNjA1NjhlMTc3ZWE5FD\ +NibGFrZTI6OkJsYWtlMnNWYXJDb3JlOjpjb21wcmVzczo6aDdhOTlhN2EzMWUwNTc2ZGQVK3NoYTE6\ +OmNvbXByZXNzOjpjb21wcmVzczo6aDY3NmE4YzFhODBiMDA2Y2QWLHRpZ2VyOjpjb21wcmVzczo6Y2\ +9tcHJlc3M6Omg4ZTkxMGYxOTdiYjdkYjc5Fy1ibGFrZTM6Ok91dHB1dFJlYWRlcjo6ZmlsbDo6aDBm\ +NDU2NzBlZDUyOWE3ODgYNmJsYWtlMzo6cG9ydGFibGU6OmNvbXByZXNzX2luX3BsYWNlOjpoODJhND\ +gzNWJhNzhhZTk5ORk6ZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6bWFsbG9jOjpoYTk2\ +ZmNlZmJiNDRkNmRhNRplPGRpZ2VzdDo6Y29yZV9hcGk6OndyYXBwZXI6OkNvcmVXcmFwcGVyPFQ+IG\ +FzIGRpZ2VzdDo6VXBkYXRlPjo6dXBkYXRlOjp7e2Nsb3N1cmV9fTo6aDdkOGMwMGE0OWNjNTAyYTkb\ +aDxtZDU6Ok1kNUNvcmUgYXMgZGlnZXN0Ojpjb3JlX2FwaTo6Rml4ZWRPdXRwdXRDb3JlPjo6ZmluYW\ +xpemVfZml4ZWRfY29yZTo6e3tjbG9zdXJlfX06OmgyZWRlNTY0ZDNiOWQ5YWE1HCxjb3JlOjpmbXQ6\ +OkZvcm1hdHRlcjo6cGFkOjpoOGM3NTNlNDk0ZjdiNTY5ZB0gbWQ0Ojpjb21wcmVzczo6aGEwODdhNj\ +g2M2E2ZDVkNjceMGJsYWtlMzo6Y29tcHJlc3Nfc3VidHJlZV93aWRlOjpoNGUwOTU3MTJmOGIxNGVj\ +NB8vYmxha2UzOjpIYXNoZXI6OmZpbmFsaXplX3hvZjo6aDFkYmIzNWJlN2MzYTViYjMgPWRlbm9fc3\ +RkX3dhc21fY3J5cHRvOjpkaWdlc3Q6OkNvbnRleHQ6Om5ldzo6aGMxMDI1YzRlNmI0MDc0YTYhE2Rp\ +Z2VzdGNvbnRleHRfcmVzZXQiOGRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46OmZyZWU6Om\ +hhNDczN2I3Zjg0OTcwYWRkI3I8c2hhMjo6Y29yZV9hcGk6OlNoYTUxMlZhckNvcmUgYXMgZGlnZXN0\ +Ojpjb3JlX2FwaTo6VmFyaWFibGVPdXRwdXRDb3JlPjo6ZmluYWxpemVfdmFyaWFibGVfY29yZTo6aD\ +k3OGVkYTNlNWJmNGQ4NWMkQWRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46OmRpc3Bvc2Vf\ +Y2h1bms6OmgzYjZjNGU3NGZhOGFhMDRiJSBrZWNjYWs6OmYxNjAwOjpoZmUyMWFkMGU3YjIxYzU5Zi\ +YOX19ydXN0X3JlYWxsb2MncjxzaGEyOjpjb3JlX2FwaTo6U2hhMjU2VmFyQ29yZSBhcyBkaWdlc3Q6\ +OmNvcmVfYXBpOjpWYXJpYWJsZU91dHB1dENvcmU+OjpmaW5hbGl6ZV92YXJpYWJsZV9jb3JlOjpoZG\ +Y0OWFhZTRhMjkzNDMwMihOY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNw\ +bGF5IGZvciB1MzI+OjpmbXQ6OmhjNTBhMWM5YjgyZWI0NDQ2KV08c2hhMTo6U2hhMUNvcmUgYXMgZG\ +lnZXN0Ojpjb3JlX2FwaTo6Rml4ZWRPdXRwdXRDb3JlPjo6ZmluYWxpemVfZml4ZWRfY29yZTo6aDE2\ +OGNiNTBiZmNiMDBjMjIqMWJsYWtlMzo6SGFzaGVyOjptZXJnZV9jdl9zdGFjazo6aDBhOWM0YzI2ZT\ +NhMjQwNjIrI2NvcmU6OmZtdDo6d3JpdGU6OmhlZDhmZTdkMDk1NDc5ZWEyLGQ8cmlwZW1kOjpSaXBl\ +bWQxNjBDb3JlIGFzIGRpZ2VzdDo6Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2\ +ZpeGVkX2NvcmU6Omg2ZDgyNWIxODgxMDU1NzYxLTRibGFrZTM6OmNvbXByZXNzX3BhcmVudHNfcGFy\ +YWxsZWw6OmhiNmY2ZWMwODM2NzU5MTdkLls8bWQ0OjpNZDRDb3JlIGFzIGRpZ2VzdDo6Y29yZV9hcG\ +k6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2NvcmU6Omg3Y2Q3OTY3ZGQ2NmYzYjE2\ +L1s8bWQ1OjpNZDVDb3JlIGFzIGRpZ2VzdDo6Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbm\ +FsaXplX2ZpeGVkX2NvcmU6OmhkMDc3MjcxM2EyZjQxMjRjMF88dGlnZXI6OlRpZ2VyQ29yZSBhcyBk\ +aWdlc3Q6OmNvcmVfYXBpOjpGaXhlZE91dHB1dENvcmU+OjpmaW5hbGl6ZV9maXhlZF9jb3JlOjpoMT\ +MyMDkyM2MxNjg2NDg5NDEwZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjptYWxsb2M6OmgwMDU3MzU2N2Ez\ +MzM4ZGY4Mkw8YWxsb2M6OmJveGVkOjpCb3g8VD4gYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46Om\ +RlZmF1bHQ6OmhmYzgzZjY4NGNmNDdhNDk5M0w8YWxsb2M6OmJveGVkOjpCb3g8VD4gYXMgY29yZTo6\ +ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmhkNDBmYWU0Njk0NWI4YmRiNEw8YWxsb2M6OmJveG\ +VkOjpCb3g8VD4gYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6Omg3ODlhOGRmODA0\ +N2Q5OTI2NUw8YWxsb2M6OmJveGVkOjpCb3g8VD4gYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46Om\ +RlZmF1bHQ6OmhjZmY3OWViMDgzNzBkN2Q3NmQ8c2hhMzo6U2hha2UxMjhDb3JlIGFzIGRpZ2VzdDo6\ +Y29yZV9hcGk6OkV4dGVuZGFibGVPdXRwdXRDb3JlPjo6ZmluYWxpemVfeG9mX2NvcmU6OmhlZTc0Mz\ +IyYjBmN2JkZGUzNy1ibGFrZTM6OkNodW5rU3RhdGU6OnVwZGF0ZTo6aDkwMmE0MzQyNTZlMTU2YTg4\ +YjxzaGEzOjpLZWNjYWsyMjRDb3JlIGFzIGRpZ2VzdDo6Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT\ +46OmZpbmFsaXplX2ZpeGVkX2NvcmU6OmhhM2Q0YmJkOTdmMTliNDc0OWE8c2hhMzo6U2hhM18yMjRD\ +b3JlIGFzIGRpZ2VzdDo6Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2\ +NvcmU6Omg2YzUxODIxMTA2ZjRkY2I3OnI8ZGlnZXN0Ojpjb3JlX2FwaTo6eG9mX3JlYWRlcjo6WG9m\ +UmVhZGVyQ29yZVdyYXBwZXI8VD4gYXMgZGlnZXN0OjpYb2ZSZWFkZXI+OjpyZWFkOjp7e2Nsb3N1cm\ +V9fTo6aDA2NGY5YTJkMDBkYTMxYjc7TDxhbGxvYzo6Ym94ZWQ6OkJveDxUPiBhcyBjb3JlOjpkZWZh\ +dWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdDo6aGJlOTBmMmE5NTExZmExMjI8ZTxkaWdlc3Q6OmNvcmVfYX\ +BpOjp4b2ZfcmVhZGVyOjpYb2ZSZWFkZXJDb3JlV3JhcHBlcjxUPiBhcyBkaWdlc3Q6OlhvZlJlYWRl\ +cj46OnJlYWQ6OmgwNmVkNDFlZjliZTlkN2UyPWU8ZGlnZXN0Ojpjb3JlX2FwaTo6eG9mX3JlYWRlcj\ +o6WG9mUmVhZGVyQ29yZVdyYXBwZXI8VD4gYXMgZGlnZXN0OjpYb2ZSZWFkZXI+OjpyZWFkOjpoODlk\ +ODFhYjFhNzA2ZjM0ZT5lPGRpZ2VzdDo6Y29yZV9hcGk6OndyYXBwZXI6OkNvcmVXcmFwcGVyPFQ+IG\ +FzIGRpZ2VzdDo6VXBkYXRlPjo6dXBkYXRlOjp7e2Nsb3N1cmV9fTo6aDVlYzI3NGIxNDg2YmExZDU/\ +TDxhbGxvYzo6Ym94ZWQ6OkJveDxUPiBhcyBjb3JlOjpkZWZhdWx0OjpEZWZhdWx0Pjo6ZGVmYXVsdD\ +o6aDdmY2U4YTYzZWRhYTJhOWJAMWNvbXBpbGVyX2J1aWx0aW5zOjptZW06Om1lbWNweTo6aDQ1ZWI1\ +MzYwMWQ5ZDZiZjBBYjxzaGEzOjpLZWNjYWsyNTZDb3JlIGFzIGRpZ2VzdDo6Y29yZV9hcGk6OkZpeG\ +VkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2NvcmU6Omg3ZTJhZGJiN2E5ZDdmYjg5QmE8c2hh\ +Mzo6U2hhM18yNTZDb3JlIGFzIGRpZ2VzdDo6Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbm\ +FsaXplX2ZpeGVkX2NvcmU6OmgyMDg1ZWRlMDE5ZmMzYTBmQ3I8ZGlnZXN0Ojpjb3JlX2FwaTo6eG9m\ +X3JlYWRlcjo6WG9mUmVhZGVyQ29yZVdyYXBwZXI8VD4gYXMgZGlnZXN0OjpYb2ZSZWFkZXI+OjpyZW\ +FkOjp7e2Nsb3N1cmV9fTo6aGQyM2ExZTdiODUwNTA5ZGFEZTxkaWdlc3Q6OmNvcmVfYXBpOjp3cmFw\ +cGVyOjpDb3JlV3JhcHBlcjxUPiBhcyBkaWdlc3Q6OlVwZGF0ZT46OnVwZGF0ZTo6e3tjbG9zdXJlfX\ +06OmgzMDMxY2Q2MjU1Mjg0ZjJjRWQ8c2hhMzo6U2hha2UyNTZDb3JlIGFzIGRpZ2VzdDo6Y29yZV9h\ +cGk6OkV4dGVuZGFibGVPdXRwdXRDb3JlPjo6ZmluYWxpemVfeG9mX2NvcmU6Omg2NGM2NDQxNjZkZT\ +UzOGEwRkZkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjppbnNlcnRfbGFyZ2VfY2h1bms6\ +OmhiMTI5OTBmOTI1MzhmYmJmR0ZkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+Ojp1bmxpbm\ +tfbGFyZ2VfY2h1bms6OmhiZThkMzZhOWY0MDYwY2VlSGU8ZGlnZXN0Ojpjb3JlX2FwaTo6d3JhcHBl\ +cjo6Q29yZVdyYXBwZXI8VD4gYXMgZGlnZXN0OjpVcGRhdGU+Ojp1cGRhdGU6Ont7Y2xvc3VyZX19Oj\ +poMmViZGVhYWU5NjQ4MjIzNEliPHNoYTM6OktlY2NhazM4NENvcmUgYXMgZGlnZXN0Ojpjb3JlX2Fw\ +aTo6Rml4ZWRPdXRwdXRDb3JlPjo6ZmluYWxpemVfZml4ZWRfY29yZTo6aDNhNDNlOTFlYzE3NDQ1OT\ +lKYTxzaGEzOjpTaGEzXzM4NENvcmUgYXMgZGlnZXN0Ojpjb3JlX2FwaTo6Rml4ZWRPdXRwdXRDb3Jl\ +Pjo6ZmluYWxpemVfZml4ZWRfY29yZTo6aGJhNjUxNDU3MWI2Y2RjNmZLYjxzaGEzOjpLZWNjYWs1MT\ +JDb3JlIGFzIGRpZ2VzdDo6Y29yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVk\ +X2NvcmU6OmhlNzk0NWIzODYxYWMzOTQ1TGE8c2hhMzo6U2hhM181MTJDb3JlIGFzIGRpZ2VzdDo6Y2\ +9yZV9hcGk6OkZpeGVkT3V0cHV0Q29yZT46OmZpbmFsaXplX2ZpeGVkX2NvcmU6Omg1YTJlMGFiNjNh\ +NWU0ZjdkTUw8YWxsb2M6OmJveGVkOjpCb3g8VD4gYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46Om\ +RlZmF1bHQ6OmhhODkyMWQ4NTQxNWI0NjFmTkw8YWxsb2M6OmJveGVkOjpCb3g8VD4gYXMgY29yZTo6\ +ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmgwOGVmYWY3YTE5NjNlODFkT2U8ZGlnZXN0Ojpjb3\ +JlX2FwaTo6d3JhcHBlcjo6Q29yZVdyYXBwZXI8VD4gYXMgZGlnZXN0OjpVcGRhdGU+Ojp1cGRhdGU6\ +Ont7Y2xvc3VyZX19OjpoMzdiMDQ1ZmVkZGI1MGJiN1A+ZGVub19zdGRfd2FzbV9jcnlwdG86OkRpZ2\ +VzdENvbnRleHQ6OnVwZGF0ZTo6aDc1NWQzNWU2MWE1Nzk4NWJRWzxibG9ja19idWZmZXI6OkJsb2Nr\ +QnVmZmVyPEJsb2NrU2l6ZSxLaW5kPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDYzN2\ +MxYzYyY2EwMTU4YjZSBmRpZ2VzdFMxY29tcGlsZXJfYnVpbHRpbnM6Om1lbTo6bWVtc2V0OjpoNWI4\ +Yjk5OGE0YjJmYjIwNVRlPGRpZ2VzdDo6Y29yZV9hcGk6OndyYXBwZXI6OkNvcmVXcmFwcGVyPFQ+IG\ +FzIGRpZ2VzdDo6VXBkYXRlPjo6dXBkYXRlOjp7e2Nsb3N1cmV9fTo6aGNiMzJhYzkzM2VjMjU3NjJV\ +FGRpZ2VzdGNvbnRleHRfZGlnZXN0VhFkaWdlc3Rjb250ZXh0X25ld1ccZGlnZXN0Y29udGV4dF9kaW\ +dlc3RBbmRSZXNldFhMPGFsbG9jOjpib3hlZDo6Qm94PFQ+IGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1\ +bHQ+OjpkZWZhdWx0OjpoN2M1MjFjNjZmY2M1ZjBlMFlMPGFsbG9jOjpib3hlZDo6Qm94PFQ+IGFzIG\ +NvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoNmNhZTQ4Yzk0ZTYxNTBjMlpMPGFsbG9j\ +Ojpib3hlZDo6Qm94PFQ+IGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoMzMwZj\ +QzMmYxYjk4MWI2M1tMPGFsbG9jOjpib3hlZDo6Qm94PFQ+IGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1\ +bHQ+OjpkZWZhdWx0OjpoZmI3NmVkNGYzYTc0YmQ4MVxMPGFsbG9jOjpib3hlZDo6Qm94PFQ+IGFzIG\ +NvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoNzg0ZDY4ZGM2YjUxYzk4YV0tanNfc3lz\ +OjpVaW50OEFycmF5Ojp0b192ZWM6Omg3NWRkMjNlM2E1NTk4ZDYwXhtkaWdlc3Rjb250ZXh0X2RpZ2\ +VzdEFuZERyb3BfP3dhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Omludm9rZTNfbXV0Ojpo\ +YzlhM2Q4ZWUxMDQzNGU1ZGBHZGVub19zdGRfd2FzbV9jcnlwdG86OkRpZ2VzdENvbnRleHQ6OmRpZ2\ +VzdF9hbmRfZHJvcDo6aGExMmMwYTFmNzcwYTAyMTNhLmNvcmU6OnJlc3VsdDo6dW53cmFwX2ZhaWxl\ +ZDo6aDJkYzcwNmQ5NDhjMjI5NjBiWzxibG9ja19idWZmZXI6OkJsb2NrQnVmZmVyPEJsb2NrU2l6ZS\ +xLaW5kPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGVjZWMwNDk3NDVlZDQxNDFjWzxi\ +bG9ja19idWZmZXI6OkJsb2NrQnVmZmVyPEJsb2NrU2l6ZSxLaW5kPiBhcyBjb3JlOjpjbG9uZTo6Q2\ +xvbmU+OjpjbG9uZTo6aDcxNGFjYzM4NDMzYTExOGRkWzxibG9ja19idWZmZXI6OkJsb2NrQnVmZmVy\ +PEJsb2NrU2l6ZSxLaW5kPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDczNjBkYjk1OG\ +EzNThjODVlWzxibG9ja19idWZmZXI6OkJsb2NrQnVmZmVyPEJsb2NrU2l6ZSxLaW5kPiBhcyBjb3Jl\ +OjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDkwZTQwNmVmZjNkZDIxMDRmWzxibG9ja19idWZmZXI6Ok\ +Jsb2NrQnVmZmVyPEJsb2NrU2l6ZSxLaW5kPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6\ +aGM3OWM0NTFlMDkyY2I5ZDFnWzxibG9ja19idWZmZXI6OkJsb2NrQnVmZmVyPEJsb2NrU2l6ZSxLaW\ +5kPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aDJmODE4MGNiMDg5YzJmOThoUDxhcnJh\ +eXZlYzo6ZXJyb3JzOjpDYXBhY2l0eUVycm9yPFQ+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Om\ +gxY2JhMzA5MjAwMTQ1OThlaVA8YXJyYXl2ZWM6OmVycm9yczo6Q2FwYWNpdHlFcnJvcjxUPiBhcyBj\ +b3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWMwZWJhZDlkMDgyZTU1OGpOY29yZTo6c2xpY2U6OjxpbX\ +BsIFtUXT46OmNvcHlfZnJvbV9zbGljZTo6bGVuX21pc21hdGNoX2ZhaWw6OmhmM2JiYWJjMDIwNDg2\ +NGJjazZjb3JlOjpwYW5pY2tpbmc6OnBhbmljX2JvdW5kc19jaGVjazo6aDFmYjdhNmRmMTAzMzEyNz\ +lsRGNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2Vfc3RhcnRfaW5kZXhfbGVuX2ZhaWxfcnQ6OmhiMzE3\ +Y2E4MzMyMDQ2NWE2bUJjb3JlOjpzbGljZTo6aW5kZXg6OnNsaWNlX2VuZF9pbmRleF9sZW5fZmFpbF\ +9ydDo6aGZjZjkzZGQzNWYwMTEyYmRuGF9fd2JnX2RpZ2VzdGNvbnRleHRfZnJlZW83c3RkOjpwYW5p\ +Y2tpbmc6OnJ1c3RfcGFuaWNfd2l0aF9ob29rOjpoNzBhMGUxOTVmNGRiMmEyOXAxY29tcGlsZXJfYn\ +VpbHRpbnM6Om1lbTo6bWVtY21wOjpoMTI4NWI4NDEyMGRmNWRjZHEUZGlnZXN0Y29udGV4dF91cGRh\ +dGVyKWNvcmU6OnBhbmlja2luZzo6cGFuaWM6Omg4YWYwNDYzOTdhMmJmNjVkczpibGFrZTI6OkJsYW\ +tlMmJWYXJDb3JlOjpuZXdfd2l0aF9wYXJhbXM6Omg0NGYxNTNlOTYwYjIwOTM5dBFydXN0X2JlZ2lu\ +X3Vud2luZHVDY29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZF9pbnRlZ3JhbDo6d3JpdGVfcHJlZml4Oj\ +poNjBiMWI1MDNlNjZmMzJiMXY0YWxsb2M6OnJhd192ZWM6OmNhcGFjaXR5X292ZXJmbG93OjpoNGIy\ +NzVjYjNjMTBiMGE3OHctY29yZTo6cGFuaWNraW5nOjpwYW5pY19mbXQ6Omg3NTFiZTgwNzc5ZDQyYj\ +UzeENzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6e3tjbG9zdXJlfX06OmhkY2Zj\ +ODE5Y2U4MzY4MjlleRFfX3diaW5kZ2VuX21hbGxvY3o6Ymxha2UyOjpCbGFrZTJzVmFyQ29yZTo6bm\ +V3X3dpdGhfcGFyYW1zOjpoMjNlMzIwMWM5ZmYyMzMyOXtJc3RkOjpzeXNfY29tbW9uOjpiYWNrdHJh\ +Y2U6Ol9fcnVzdF9lbmRfc2hvcnRfYmFja3RyYWNlOjpoNTNjYWJhZmFiNWIwOWFkYXw/d2FzbV9iaW\ +5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlNF9tdXQ6Omg5NjlhZjNlZGJiNzM4YjVmfT93\ +YXNtX2JpbmRnZW46OmNvbnZlcnQ6OmNsb3N1cmVzOjppbnZva2UzX211dDo6aDA1OTZjYWRlZDYzNz\ +JlYWZ+P3dhc21fYmluZGdlbjo6Y29udmVydDo6Y2xvc3VyZXM6Omludm9rZTNfbXV0OjpoNDIxN2Nj\ +NDEwYzk0OWE2YX8/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6Om\ +hiYzBkZTg4ZTYzNTRlYTJigAE/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tl\ +M19tdXQ6OmgxOGYyY2JiNjE4MmUwZmYwgQE/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlcz\ +o6aW52b2tlM19tdXQ6Omg0MmUzZjhmYjQzNjIwOGU0ggE/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojpj\ +bG9zdXJlczo6aW52b2tlM19tdXQ6OmhjYTZjYzM2N2Y0OWE3MjM2gwE/d2FzbV9iaW5kZ2VuOjpjb2\ +52ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmgzZjliODQxZjE0MmQ5OGU4hAE/d2FzbV9iaW5k\ +Z2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6Omg3MDhjYmY5YTQyNWUzMDM5hQE/d2\ +FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlMl9tdXQ6Omg3ZjAxNzJhNWUyYjY1\ +YzY5hgESX193YmluZGdlbl9yZWFsbG9jhwE/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlcz\ +o6aW52b2tlMV9tdXQ6OmgxZmMwOTdmZjY0ZTNhOTY5iAEwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+\ +OjpmbXQ6OmhmZjRhZjFiNGE4MTM5OTZhiQEyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdD\ +o6aDY0ZGQyZjhhMzhjZWIxMDOKAQ9fX3diaW5kZ2VuX2ZyZWWLAT9jb3JlOjpzbGljZTo6aW5kZXg6\ +OnNsaWNlX2VuZF9pbmRleF9sZW5fZmFpbDo6aDNkYjQ3NmIwZDA5OTk0ZDKMAUFjb3JlOjpzbGljZT\ +o6aW5kZXg6OnNsaWNlX3N0YXJ0X2luZGV4X2xlbl9mYWlsOjpoMTM2Y2NhZDc2NDEzNjgxMI0BM2Fy\ +cmF5dmVjOjphcnJheXZlYzo6ZXh0ZW5kX3BhbmljOjpoNjRmY2MxNjMwYmVhY2NhN44BOWNvcmU6Om\ +9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoZTAyMWRiYmY2ZmFhYTA2ZI8BH19fd2Jp\ +bmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXKQATF3YXNtX2JpbmRnZW46Ol9fcnQ6OnRocm93X251bG\ +w6OmgxYWMxZTJjMTFkOWRlMDlikQEyd2FzbV9iaW5kZ2VuOjpfX3J0Ojpib3Jyb3dfZmFpbDo6aDc4\ +ZDIwNzFkNmMwNWI5ODSSASp3YXNtX2JpbmRnZW46OnRocm93X3N0cjo6aDNmMjIyOWZlMzAzMjI2OW\ +STAQZtZW1zZXSUAQZtZW1jcHmVAQZtZW1jbXCWATE8VCBhcyBjb3JlOjphbnk6OkFueT46OnR5cGVf\ +aWQ6OmgxM2M3ODU5NjY4OGY2N2IylwEKcnVzdF9wYW5pY5gBb2NvcmU6OnB0cjo6ZHJvcF9pbl9wbG\ +FjZTwmY29yZTo6aXRlcjo6YWRhcHRlcnM6OmNvcGllZDo6Q29waWVkPGNvcmU6OnNsaWNlOjppdGVy\ +OjpJdGVyPHU4Pj4+OjpoMDVmYTBmOTcxYjQ2YjBlNwDvgICAAAlwcm9kdWNlcnMCCGxhbmd1YWdlAQ\ +RSdXN0AAxwcm9jZXNzZWQtYnkDBXJ1c3RjHTEuNjUuMCAoODk3ZTM3NTUzIDIwMjItMTEtMDIpBndh\ +bHJ1cwYwLjE5LjAMd2FzbS1iaW5kZ2VuBjAuMi44Mw==\ +"); + const wasmModule = new WebAssembly.Module(wasmBytes); + return new WebAssembly.Instance(wasmModule, imports); +} +function base64decode(b64) { + const binString = atob(b64); + const size = binString.length; + const bytes = new Uint8Array(size); + for(let i = 0; i < size; i++){ + bytes[i] = binString.charCodeAt(i); + } + return bytes; +} +const digestAlgorithms = [ + "BLAKE2B-256", + "BLAKE2B-384", + "BLAKE2B", + "BLAKE2S", + "BLAKE3", + "KECCAK-224", + "KECCAK-256", + "KECCAK-384", + "KECCAK-512", + "SHA-384", + "SHA3-224", + "SHA3-256", + "SHA3-384", + "SHA3-512", + "SHAKE128", + "SHAKE256", + "TIGER", + "RIPEMD-160", + "SHA-224", + "SHA-256", + "SHA-512", + "MD4", + "MD5", + "SHA-1" +]; +function timingSafeEqual(a, b) { + if (a.byteLength !== b.byteLength) { + return false; + } + if (!(a instanceof DataView)) { + a = new DataView(ArrayBuffer.isView(a) ? a.buffer : a); + } + if (!(b instanceof DataView)) { + b = new DataView(ArrayBuffer.isView(b) ? b.buffer : b); + } + assert(a instanceof DataView); + assert(b instanceof DataView); + const length = a.byteLength; + let out = 0; + let i = -1; + while(++i < length){ + out |= a.getUint8(i) ^ b.getUint8(i); + } + return out === 0; +} +function swap32(val) { + return (val & 0xff) << 24 | (val & 0xff00) << 8 | val >> 8 & 0xff00 | val >> 24 & 0xff; +} +function n16(n) { + return n & 0xffff; +} +function n32(n) { + return n >>> 0; +} +function add32WithCarry(a, b) { + const added = n32(a) + n32(b); + return [ + n32(added), + added > 0xffffffff ? 1 : 0 + ]; +} +function mul32WithCarry(a, b) { + const al = n16(a); + const ah = n16(a >>> 16); + const bl = n16(b); + const bh = n16(b >>> 16); + const [t, tc] = add32WithCarry(al * bh, ah * bl); + const [n, nc] = add32WithCarry(al * bl, n32(t << 16)); + const carry = nc + (tc << 16) + n16(t >>> 16) + ah * bh; + return [ + n, + carry + ]; +} +function mul32(a, b) { + const al = n16(a); + const ah = a - al; + return n32(n32(ah * b) + al * b); +} +function mul64([ah, al], [bh, bl]) { + const [n, c] = mul32WithCarry(al, bl); + return [ + n32(mul32(al, bh) + mul32(ah, bl) + c), + n + ]; +} +const prime32 = 16777619; +const fnv32 = (data)=>{ + let hash = 2166136261; + data.forEach((c)=>{ + hash = mul32(hash, prime32); + hash ^= c; + }); + return Uint32Array.from([ + swap32(hash) + ]).buffer; +}; +const fnv32a = (data)=>{ + let hash = 2166136261; + data.forEach((c)=>{ + hash ^= c; + hash = mul32(hash, prime32); + }); + return Uint32Array.from([ + swap32(hash) + ]).buffer; +}; +const prime64Lo = 435; +const prime64Hi = 256; +const fnv64 = (data)=>{ + let hashLo = 2216829733; + let hashHi = 3421674724; + data.forEach((c)=>{ + [hashHi, hashLo] = mul64([ + hashHi, + hashLo + ], [ + prime64Hi, + prime64Lo + ]); + hashLo ^= c; + }); + return new Uint32Array([ + swap32(hashHi >>> 0), + swap32(hashLo >>> 0) + ]).buffer; +}; +const fnv64a = (data)=>{ + let hashLo = 2216829733; + let hashHi = 3421674724; + data.forEach((c)=>{ + hashLo ^= c; + [hashHi, hashLo] = mul64([ + hashHi, + hashLo + ], [ + prime64Hi, + prime64Lo + ]); + }); + return new Uint32Array([ + swap32(hashHi >>> 0), + swap32(hashLo >>> 0) + ]).buffer; +}; +const fnv = (name, buf)=>{ + if (!buf) { + throw new TypeError("no data provided for hashing"); + } + switch(name){ + case "FNV32": + return fnv32(buf); + case "FNV64": + return fnv64(buf); + case "FNV32A": + return fnv32a(buf); + case "FNV64A": + return fnv64a(buf); + default: + throw new TypeError(`unsupported fnv digest: ${name}`); + } +}; +const webCrypto = ((crypto1)=>({ + getRandomValues: crypto1.getRandomValues?.bind(crypto1), + randomUUID: crypto1.randomUUID?.bind(crypto1), + subtle: { + decrypt: crypto1.subtle?.decrypt?.bind(crypto1.subtle), + deriveBits: crypto1.subtle?.deriveBits?.bind(crypto1.subtle), + deriveKey: crypto1.subtle?.deriveKey?.bind(crypto1.subtle), + digest: crypto1.subtle?.digest?.bind(crypto1.subtle), + encrypt: crypto1.subtle?.encrypt?.bind(crypto1.subtle), + exportKey: crypto1.subtle?.exportKey?.bind(crypto1.subtle), + generateKey: crypto1.subtle?.generateKey?.bind(crypto1.subtle), + importKey: crypto1.subtle?.importKey?.bind(crypto1.subtle), + sign: crypto1.subtle?.sign?.bind(crypto1.subtle), + unwrapKey: crypto1.subtle?.unwrapKey?.bind(crypto1.subtle), + verify: crypto1.subtle?.verify?.bind(crypto1.subtle), + wrapKey: crypto1.subtle?.wrapKey?.bind(crypto1.subtle) + } + }))(globalThis.crypto); +const bufferSourceBytes = (data)=>{ + let bytes; + if (data instanceof Uint8Array) { + bytes = data; + } else if (ArrayBuffer.isView(data)) { + bytes = new Uint8Array(data.buffer, data.byteOffset, data.byteLength); + } else if (data instanceof ArrayBuffer) { + bytes = new Uint8Array(data); + } + return bytes; +}; +const stdCrypto = ((x)=>x)({ + ...webCrypto, + subtle: { + ...webCrypto.subtle, + async digest (algorithm, data) { + const { name , length } = normalizeAlgorithm(algorithm); + const bytes = bufferSourceBytes(data); + if (FNVAlgorithms.includes(name)) { + return fnv(name, bytes); + } + if (webCryptoDigestAlgorithms.includes(name) && bytes) { + return webCrypto.subtle.digest(algorithm, bytes); + } else if (digestAlgorithms.includes(name)) { + if (bytes) { + return stdCrypto.subtle.digestSync(algorithm, bytes); + } else if (data[Symbol.iterator]) { + return stdCrypto.subtle.digestSync(algorithm, data); + } else if (data[Symbol.asyncIterator]) { + const wasmCrypto = instantiate(); + const context = new wasmCrypto.DigestContext(name); + for await (const chunk of data){ + const chunkBytes = bufferSourceBytes(chunk); + if (!chunkBytes) { + throw new TypeError("data contained chunk of the wrong type"); + } + context.update(chunkBytes); + } + return context.digestAndDrop(length).buffer; + } else { + throw new TypeError("data must be a BufferSource or [Async]Iterable"); + } + } else if (webCrypto.subtle?.digest) { + return webCrypto.subtle.digest(algorithm, data); + } else { + throw new TypeError(`unsupported digest algorithm: ${algorithm}`); + } + }, + digestSync (algorithm, data) { + algorithm = normalizeAlgorithm(algorithm); + const bytes = bufferSourceBytes(data); + if (FNVAlgorithms.includes(algorithm.name)) { + return fnv(algorithm.name, bytes); + } + const wasmCrypto = instantiate(); + if (bytes) { + return wasmCrypto.digest(algorithm.name, bytes, algorithm.length).buffer; + } else if (data[Symbol.iterator]) { + const context = new wasmCrypto.DigestContext(algorithm.name); + for (const chunk of data){ + const chunkBytes = bufferSourceBytes(chunk); + if (!chunkBytes) { + throw new TypeError("data contained chunk of the wrong type"); + } + context.update(chunkBytes); + } + return context.digestAndDrop(algorithm.length).buffer; + } else { + throw new TypeError("data must be a BufferSource or Iterable"); + } + }, + timingSafeEqual + } +}); +const FNVAlgorithms = [ + "FNV32", + "FNV32A", + "FNV64", + "FNV64A" +]; +const webCryptoDigestAlgorithms = [ + "SHA-384", + "SHA-256", + "SHA-512", + "SHA-1" +]; +const normalizeAlgorithm = (algorithm)=>typeof algorithm === "string" ? { + name: algorithm.toUpperCase() + } : { + ...algorithm, + name: algorithm.name.toUpperCase() + }; +function convertBase64ToBase64url(b64) { + return b64.replace(/=/g, "").replace(/\+/g, "-").replace(/\//g, "_"); +} +function encode2(data) { + return convertBase64ToBase64url(encode1(data)); +} +const encoder = new TextEncoder(); +function importKey(key) { + if (typeof key === "string") { + key = encoder.encode(key); + } else if (Array.isArray(key)) { + key = new Uint8Array(key); + } + return crypto.subtle.importKey("raw", key, { + name: "HMAC", + hash: { + name: "SHA-256" + } + }, true, [ + "sign", + "verify" + ]); +} +function sign(data, key) { + if (typeof data === "string") { + data = encoder.encode(data); + } else if (Array.isArray(data)) { + data = Uint8Array.from(data); + } + return crypto.subtle.sign("HMAC", key, data); +} +async function compare(a, b) { + const key = new Uint8Array(32); + globalThis.crypto.getRandomValues(key); + const cryptoKey = await importKey(key); + const ah = await sign(a, cryptoKey); + const bh = await sign(b, cryptoKey); + return timingSafeEqual(ah, bh); +} +class KeyStack { + #cryptoKeys = new Map(); + #keys; + async #toCryptoKey(key) { + if (!this.#cryptoKeys.has(key)) { + this.#cryptoKeys.set(key, await importKey(key)); + } + return this.#cryptoKeys.get(key); + } + get length() { + return this.#keys.length; + } + constructor(keys){ + const values = Array.isArray(keys) ? keys : [ + ...keys + ]; + if (!values.length) { + throw new TypeError("keys must contain at least one value"); + } + this.#keys = values; + } + async sign(data) { + const key = await this.#toCryptoKey(this.#keys[0]); + return encode2(await sign(data, key)); + } + async verify(data, digest) { + return await this.indexOf(data, digest) > -1; + } + async indexOf(data, digest) { + for(let i = 0; i < this.#keys.length; i++){ + const cryptoKey = await this.#toCryptoKey(this.#keys[i]); + if (await compare(digest, encode2(await sign(data, cryptoKey)))) { + return i; + } + } + return -1; + } + [Symbol.for("Deno.customInspect")](inspect) { + const { length } = this; + return `${this.constructor.name} ${inspect({ + length + })}`; + } + [Symbol.for("nodejs.util.inspect.custom")](depth, options, inspect) { + if (depth < 0) { + return options.stylize(`[${this.constructor.name}]`, "special"); + } + const newOptions = Object.assign({}, options, { + depth: options.depth === null ? null : options.depth - 1 + }); + const { length } = this; + return `${options.stylize(this.constructor.name, "special")} ${inspect({ + length + }, newOptions)}`; + } +} +const encoder1 = new TextEncoder(); +async function createHash(algorithm, data) { + if (typeof data === "string") { + data = encoder1.encode(data); + } + return await stdCrypto.subtle.digest(algorithm, data); +} +const VERSION = "0.173.0"; +const importMeta = { + url: "https://deno.land/std/http/file_server.ts", + main: import.meta.main +}; +const encoder2 = new TextEncoder(); +function modeToString(isDir, maybeMode) { + const modeMap = [ + "---", + "--x", + "-w-", + "-wx", + "r--", + "r-x", + "rw-", + "rwx" + ]; + if (maybeMode === null) { + return "(unknown mode)"; + } + const mode = maybeMode.toString(8); + if (mode.length < 3) { + return "(unknown mode)"; + } + let output = ""; + mode.split("").reverse().slice(0, 3).forEach((v)=>{ + output = `${modeMap[+v]} ${output}`; + }); + output = `${isDir ? "d" : "-"} ${output}`; + return output; +} +function fileLenToString(len) { + const multiplier = 1024; + let base = 1; + const suffix = [ + "B", + "K", + "M", + "G", + "T" + ]; + let suffixIndex = 0; + while(base * 1024 < len){ + if (suffixIndex >= suffix.length - 1) { + break; + } + base *= multiplier; + suffixIndex++; + } + return `${(len / base).toFixed(2)}${suffix[suffixIndex]}`; +} +async function serveFile(req, filePath, { etagAlgorithm , fileInfo } = {}) { + try { + fileInfo ??= await Deno.stat(filePath); + } catch (error) { + if (error instanceof Deno.errors.NotFound) { + await req.body?.cancel(); + return createCommonResponse(Status.NotFound); + } else { + throw error; + } + } + if (fileInfo.isDirectory) { + await req.body?.cancel(); + return createCommonResponse(Status.NotFound); + } + const file = await Deno.open(filePath); + const headers = setBaseHeaders(); + const contentTypeValue = contentType(extname2(filePath)); + if (contentTypeValue) { + headers.set("content-type", contentTypeValue); + } + if (fileInfo.atime instanceof Date) { + const date = new Date(fileInfo.atime); + headers.set("date", date.toUTCString()); + } + if (fileInfo.mtime instanceof Date) { + const lastModified = new Date(fileInfo.mtime); + headers.set("last-modified", lastModified.toUTCString()); + const etag = toHashString(await createHash(etagAlgorithm ?? "FNV32A", `${lastModified.toJSON()}${fileInfo.size}`)); + headers.set("etag", etag); + const ifNoneMatch = req.headers.get("if-none-match"); + const ifModifiedSince = req.headers.get("if-modified-since"); + if (ifNoneMatch && compareEtag(ifNoneMatch, etag) || ifNoneMatch === null && ifModifiedSince && fileInfo.mtime.getTime() < new Date(ifModifiedSince).getTime() + 1000) { + file.close(); + return createCommonResponse(Status.NotModified, null, { + headers + }); + } + } + const range = req.headers.get("range"); + const rangeRe = /bytes=(\d+)-(\d+)?/; + const parsed = rangeRe.exec(range); + const start = parsed && parsed[1] ? +parsed[1] : 0; + const end = parsed && parsed[2] ? +parsed[2] : fileInfo.size - 1; + if (range && parsed) { + headers.set("content-range", `bytes ${start}-${end}/${fileInfo.size}`); + } + const maxRange = fileInfo.size - 1; + if (range && (!parsed || typeof start !== "number" || start > end || start > maxRange || end > maxRange)) { + file.close(); + return createCommonResponse(Status.RequestedRangeNotSatisfiable, undefined, { + headers + }); + } + const contentLength = end - start + 1; + headers.set("content-length", `${contentLength}`); + if (range && parsed) { + await file.seek(start, Deno.SeekMode.Start); + return createCommonResponse(Status.PartialContent, file.readable, { + headers + }); + } + return createCommonResponse(Status.OK, file.readable, { + headers + }); +} +async function serveDirIndex(dirPath, options) { + const showDotfiles = options.dotfiles; + const dirUrl = `/${mod1.relative(options.target, dirPath)}`; + const listEntry = []; + if (dirUrl !== "/") { + const prevPath = mod1.join(dirPath, ".."); + const fileInfo = await Deno.stat(prevPath); + listEntry.push({ + mode: modeToString(true, fileInfo.mode), + size: "", + name: "../", + url: mod1.join(dirUrl, "..") + }); + } + for await (const entry of Deno.readDir(dirPath)){ + if (!showDotfiles && entry.name[0] === ".") { + continue; + } + const filePath = mod1.join(dirPath, entry.name); + const fileUrl = encodeURIComponent(mod1.join(dirUrl, entry.name)).replaceAll("%2F", "/"); + const fileInfo1 = await Deno.stat(filePath); + listEntry.push({ + mode: modeToString(entry.isDirectory, fileInfo1.mode), + size: entry.isFile ? fileLenToString(fileInfo1.size ?? 0) : "", + name: `${entry.name}${entry.isDirectory ? "/" : ""}`, + url: `${fileUrl}${entry.isDirectory ? "/" : ""}` + }); + } + listEntry.sort((a, b)=>a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1); + const formattedDirUrl = `${dirUrl.replace(/\/$/, "")}/`; + const page = encoder2.encode(dirViewerTemplate(formattedDirUrl, listEntry)); + const headers = setBaseHeaders(); + headers.set("content-type", "text/html"); + return createCommonResponse(Status.OK, page, { + headers + }); +} +function serveFallback(_req, e) { + if (e instanceof URIError) { + return Promise.resolve(createCommonResponse(Status.BadRequest)); + } else if (e instanceof Deno.errors.NotFound) { + return Promise.resolve(createCommonResponse(Status.NotFound)); + } + return Promise.resolve(createCommonResponse(Status.InternalServerError)); +} +function serverLog(req, status) { + const d = new Date().toISOString(); + const dateFmt = `[${d.slice(0, 10)} ${d.slice(11, 19)}]`; + const normalizedUrl = normalizeURL(req.url); + const s = `${dateFmt} [${req.method}] ${normalizedUrl} ${status}`; + console.debug(s); +} +function setBaseHeaders() { + const headers = new Headers(); + headers.set("server", "deno"); + headers.set("accept-ranges", "bytes"); + headers.set("date", new Date().toUTCString()); + return headers; +} +function dirViewerTemplate(dirname, entries) { + const paths = dirname.split("/"); + return ` + + + + + + + Deno File Server + + + +
+

Index of + home${paths.map((path, index, array)=>{ + if (path === "") return ""; + const link = array.slice(0, index + 1).join("/"); + return `${path}`; + }).join("/")} +

+ + + + + + + + + ${entries.map((entry)=>` + + + + + + `).join("")} +
ModeSizeName
+ ${entry.mode} + + ${entry.size} + + ${entry.name} +
+
+ + + `; +} +async function serveDir(req, opts = {}) { + let response = undefined; + const target = opts.fsRoot || "."; + const urlRoot = opts.urlRoot; + const showIndex = opts.showIndex ?? true; + try { + let normalizedPath = normalizeURL(req.url); + if (urlRoot) { + if (normalizedPath.startsWith("/" + urlRoot)) { + normalizedPath = normalizedPath.replace(urlRoot, ""); + } else { + throw new Deno.errors.NotFound(); + } + } + const fsPath = mod1.join(target, normalizedPath); + const fileInfo = await Deno.stat(fsPath); + if (fileInfo.isDirectory) { + if (showIndex) { + try { + const path = mod1.join(fsPath, "index.html"); + const indexFileInfo = await Deno.lstat(path); + if (indexFileInfo.isFile) { + response = await serveFile(req, path, { + etagAlgorithm: opts.etagAlgorithm, + fileInfo: indexFileInfo + }); + } + } catch (e) { + if (!(e instanceof Deno.errors.NotFound)) { + throw e; + } + } + } + if (!response && opts.showDirListing) { + response = await serveDirIndex(fsPath, { + dotfiles: opts.showDotfiles || false, + target + }); + } + if (!response) { + throw new Deno.errors.NotFound(); + } + } else { + response = await serveFile(req, fsPath, { + etagAlgorithm: opts.etagAlgorithm, + fileInfo + }); + } + } catch (e1) { + const err = e1 instanceof Error ? e1 : new Error("[non-error thrown]"); + if (!opts.quiet) console.error(red(err.message)); + response = await serveFallback(req, err); + } + if (opts.enableCors) { + assert(response); + response.headers.append("access-control-allow-origin", "*"); + response.headers.append("access-control-allow-headers", "Origin, X-Requested-With, Content-Type, Accept, Range"); + } + if (!opts.quiet) serverLog(req, response.status); + if (opts.headers) { + for (const header of opts.headers){ + const headerSplit = header.split(":"); + const name = headerSplit[0]; + const value = headerSplit.slice(1).join(":"); + response.headers.append(name, value); + } + } + return response; +} +function normalizeURL(url) { + return mod1.normalize(decodeURIComponent(new URL(url).pathname)); +} +function main() { + const serverArgs = parse3(Deno.args, { + string: [ + "port", + "host", + "cert", + "key", + "header" + ], + boolean: [ + "help", + "dir-listing", + "dotfiles", + "cors", + "verbose", + "version" + ], + negatable: [ + "dir-listing", + "dotfiles", + "cors" + ], + collect: [ + "header" + ], + default: { + "dir-listing": true, + dotfiles: true, + cors: true, + verbose: false, + version: false, + host: "0.0.0.0", + port: "4507", + cert: "", + key: "" + }, + alias: { + p: "port", + c: "cert", + k: "key", + h: "help", + v: "verbose", + V: "version", + H: "header" + } + }); + const port = Number(serverArgs.port); + const headers = serverArgs.header || []; + const host = serverArgs.host; + const certFile = serverArgs.cert; + const keyFile = serverArgs.key; + if (serverArgs.help) { + printUsage(); + Deno.exit(); + } + if (serverArgs.version) { + console.log(`Deno File Server ${VERSION}`); + Deno.exit(); + } + if (keyFile || certFile) { + if (keyFile === "" || certFile === "") { + console.log("--key and --cert are required for TLS"); + printUsage(); + Deno.exit(1); + } + } + const wild = serverArgs._; + const target = mod1.resolve(wild[0] ?? ""); + const handler = (req)=>{ + return serveDir(req, { + fsRoot: target, + showDirListing: serverArgs["dir-listing"], + showDotfiles: serverArgs.dotfiles, + enableCors: serverArgs.cors, + quiet: !serverArgs.verbose, + headers + }); + }; + const useTls = !!(keyFile && certFile); + if (useTls) { + serveTls(handler, { + port, + hostname: host, + certFile, + keyFile + }); + } else { + serve(handler, { + port, + hostname: host + }); + } +} +function printUsage() { + console.log(`Deno File Server ${VERSION} + Serves a local directory in HTTP. + +INSTALL: + deno install --allow-net --allow-read https://deno.land/std/http/file_server.ts + +USAGE: + file_server [path] [options] + +OPTIONS: + -h, --help Prints help information + -p, --port Set port + --cors Enable CORS via the "Access-Control-Allow-Origin" header + --host Hostname (default is 0.0.0.0) + -c, --cert TLS certificate file (enables TLS) + -k, --key TLS key file (enables TLS) + -H, --header
Sets a header on every request. + (e.g. --header "Cache-Control: no-cache") + This option can be specified multiple times. + --no-dir-listing Disable directory listing + --no-dotfiles Do not show dotfiles + --no-cors Disable cross-origin resource sharing + -v, --verbose Print request level logs + -V, --version Print version information + + All TLS options are required when one is provided.`); +} +if (importMeta.main) { + main(); +} +export { serveFile as serveFile }; +export { serveDir as serveDir }; diff --git a/dist/README.md b/dist/README.md new file mode 100644 index 00000000..eda425e1 --- /dev/null +++ b/dist/README.md @@ -0,0 +1,12 @@ +# Octavia +🎻 Event-driven multi-standard MIDI state-tracking library. Working with MIDI should be simple, while faithful and professional. + +Made with ❤️ by Lightingale Community. + +Visit [our GitHub repo](https://github.com/ltgcgo/octavia/) for more info, or see the [demo in action](https://ltgcgo.github.io/octavia/test/). + +## Files +Only files ending in `.mjs` are meant to be used as a library. + +* `state.mjs`: MIDI processing core +* `basic.mjs`: The bare minimum to get you started on writing visualizers \ No newline at end of file diff --git a/dist/basic.mjs b/dist/basic.mjs new file mode 100644 index 00000000..20ad5886 --- /dev/null +++ b/dist/basic.mjs @@ -0,0 +1,141 @@ +var G=Object.create;var O=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var z=(e,i)=>()=>(i||e((i={exports:{}}).exports,i),i.exports);var K=(e,i,o,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of F(i))!X.call(e,t)&&t!==o&&O(e,t,{get:()=>i[t],enumerable:!(a=_(i,t))||a.enumerable});return e};var q=(e,i,o)=>(o=e!=null?G(V(e)):{},K(i||!e||!e.__esModule?O(o,"default",{value:e,enumerable:!0}):o,e));var N=z((ze,x)=>{(function(){"use strict";let e={fatal:!0},i=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(a,t){if(a instanceof Uint8Array)return o.Uint8(a);if(typeof a=="string")return o.Base64(a);if(a instanceof HTMLElement&&a.type==="file")return o.addListener(a,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(a,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(a===void 0||!(a instanceof HTMLElement)||a.tagName!=="INPUT"||a.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},a.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let l=new FileReader;l.readAsArrayBuffer(r.target.files[0]),l.onload=function(f){t(o.Uint8(new Uint8Array(f.target.result)))}})},Base64:function(a){let t=function(f){var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(f=f.replace(/^.*?base64,/,""),f=String(f).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(f))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");f+="==".slice(2-(3&f.length));let p,b="",s,n,h=0;for(;h>16&255):n===64?String.fromCharCode(p>>16&255,p>>8&255):String.fromCharCode(p>>16&255,p>>8&255,255&p);return b}(a=String(a));var r=t.length;let l=new Uint8Array(new ArrayBuffer(r));for(let f=0;f{n[c]=this.readInt(1)});for(let u=0;u191||g>127&&g<160)throw new RangeError(`Invalid code point: ${g}`)}h=!0,console.debug(`String byte sequence in ${i[u].encoding}`)}catch(c){console.debug(`SMF string ${c}`)}return d||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let s=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)s=this.readInt(1);else{let h=[];for(;128<=this.data.getUint8(this.pointer);)h.push(this.readInt(1)-128);var n=this.readInt(1);for(let d=1;d<=h.length;d++)s+=h[h.length-d]*Math.pow(128,d);s+=n}return s}};if(t.data=new DataView(l.buffer,l.byteOffset,l.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let r={};r.formatType=t.readInt(2),r.tracks=t.readInt(2),r.track=[];var l=t.readInt(1),f=t.readInt(1);128<=l?(r.timeDivision=[],r.timeDivision[0]=l-128,r.timeDivision[1]=f):r.timeDivision=256*l+f;for(let s=1;s<=r.tracks;s++){r.track[s-1]={event:[]};var $,p=t.readInt(4);if(p===-1)break;if(p!==1297379947)return!1;t.readInt(4);let n=0,h=!1,d,u;for(;!h&&(n++,r.track[s-1].event[n-1]={},r.track[s-1].event[n-1].deltaTime=t.readIntVLV(),(d=t.readInt(1))!==-1);)if(128<=d?u=d:(d=u,t.movePointer(-1)),d===255){r.track[s-1].event[n-1].type=255,r.track[s-1].event[n-1].metaType=t.readInt(1);var b=t.readIntVLV();switch(r.track[s-1].event[n-1].metaType){case 47:case-1:h=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[s-1].event[n-1].data=t.readStr(b);break;case 33:case 89:case 81:r.track[s-1].event[n-1].data=t.readInt(b);break;case 84:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1),r.track[s-1].event[n-1].data[2]=t.readInt(1),r.track[s-1].event[n-1].data[3]=t.readInt(1),r.track[s-1].event[n-1].data[4]=t.readInt(1);break;case 88:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1),r.track[s-1].event[n-1].data[2]=t.readInt(1),r.track[s-1].event[n-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].metaType,t,b)),this.customInterpreter!==null&&r.track[s-1].event[n-1].data!==!1||(t.readInt(b),r.track[s-1].event[n-1].data=t.readInt(b),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((d=d.toString(16).split(""))[1]||d.unshift("0"),r.track[s-1].event[n-1].type=parseInt(d[0],16),r.track[s-1].event[n-1].channel=parseInt(d[1],16),r.track[s-1].event[n-1].type){case 15:this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].type,t,!1)),this.customInterpreter!==null&&r.track[s-1].event[n-1].data!==!1||($=t.readIntVLV(),r.track[s-1].event[n-1].data=t.readInt($),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1);break;case 12:case 13:r.track[s-1].event[n-1].data=t.readInt(1);break;case-1:h=!0;break;default:if(this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].metaType,t,!1)),this.customInterpreter===null||r.track[s-1].event[n-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof x<"u")x.exports=o;else{let a=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;a.MidiParser=o}})()});var k=class{#e={};addEventListener(e,i){this.#e[e]||(this.#e[e]=[]),this.#e[e].unshift(i)}removeEventListener(e,i){if(this.#e[e]){let o=this.#e[e].indexOf(i);o>-1&&this.#e[e].splice(o,1),this.#e[e].length<1&&delete this.#e[e]}}dispatchEvent(e,i){let o=new Event(e),a=this;o.data=i,this.#e[e]?.length>0&&this.#e[e].forEach(function(t){try{t?.call(a,o)}catch(r){console.error(r)}}),this[`on${e}`]&&this[`on${e}`](o)}};var D=class{#e={};context;set(e,i){this.#e[e]=i}has(e){return!!this.#e[e]}async read(e,i){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#e[e].call(this.context||this,i)}};var Q=function(e,i){let o=!0;return i.forEach((a,t)=>{o=o&&e[t]==a}),o},P=function(e){let i=0;return e.forEach(o=>{i*=256,i+=o}),i},w=new TextDecoder,I=new D;I.set("s7e",async function(e){let i=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",a=[0,0,0,0],t=32,r=0,l=0,f=!0,$=[],p=0;for(;f;){let b=i.subarray(r);([()=>{w.decode(b.subarray(0,4))=="YSFC"?(r+=80,l=1):r++},()=>{if(Q(b.subarray(0,4),a))$.forEach((s,n,h)=>{let d=P(i.subarray(s.start+4,s.start+8));s.length=d}),l=2;else{let s=w.decode(b.subarray(0,4)),n=P(b.subarray(4,8));$.push({type:s,start:n}),r+=8}},()=>{let s=$[p],n=i.subarray(s.start,s.start+s.length),h=32;switch(s.type){case"ENVC":{let d=t;for(;d=$.length&&(l=3,f=!1)}][l]||(()=>{f=!1}))()}return o});var j=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]);var Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),W={};`hi*, +ka,か +ki,き +ku,く +ke,け +ko,こ +ky,き! +kw,くl +tsu,つ +ts,つl +sa,さ +si,すぃ +su,す +se,せ +so,そ +shi,し +sh,し! +ta,た +ti,てぃ +tu,とぅ +te,て +to,と +tchy,ち! +tchi,ち +na,な +ni,に +nu,ぬ +ne,ね +no,の +ny,に! +nn,ん +ha,は +hi,ひ +hu,ほぅ +he,へ +ho,ほ +hy,ひ! +fa,ふぁ +fi,ふぃ +fu,ふ +fe,ふぇ +fo,ふぉ +ma,ま +mi,み +mu,む +me,め +mo,も +my,み! +mm, +ra,ら +ri,り +ru,る +re,れ +ro,ろ +ry,り! +wa,わ +wi,うぃ +we,うぇ +wo,を +nga,ガ +ngi,ギ +ngu,グ +nge,ゲ +ngo,ゴ +ngy,ギ! +ng, +ga,が +gi,ぎ +gu,ぐ +ge,げ +go,ご +gy,ぎ! +gw,ぐl +za,ざ +zi,ずぃ +zu,ず +ze,ぜ +zo,ぞ +ja,じゃ +ji,じ +ju,じゅ +je,じぇ +jo,じょ +jy,じ! +da,だ +di,でぃ +du,どぅ +de,で +do,ど +dy,で! +ba,ば +bi,び +bu,ぶ +be,べ +bo,ぼ +by,び! +va,ゔぁ +vi,ゔぃ +vu,ゔ +ve,ゔぇ +vo,ゔぉ +pa,ぱ +pi,ぴ +pu,ぷ +pe,ペ +po,ぽ +py,ぴ! +!ya,ゃ +!yu,ゅ +!ye,ぇ +!yo,ょ +ya,や +yu,ゆ +ye,いぇ +yo,よ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +la,ぁ +li,ぃ +lu,ぅ +le,ぇ +lo,ぉ +a,あ +i,い +u,う +e,え +o,お +*,っ +~, +^, +_,`.split(` +`).forEach(e=>{let i=e.split(",");W[i[0]]=i[1]});var A=function(e,i,o){let a=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let r=0;r127)return console.debug(`Early termination: ${a}`),a.pop(),i.backOne(),i.backOne(),new Uint8Array(a)}}}return new Uint8Array(a)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var m={length:S.length};S.forEach((e,i)=>{m[e]=i});var U={length:v.length};v.forEach((e,i)=>{U[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var M=q(N(),1);var L=class{#e=!1;constructor(e,i,o,a){this.#e=e,this.start=i,this.end=o,this.data=a}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},T=class extends L{constructor(e,i,o){super(!0,e,i,o)}},B=class extends L{constructor(e,i){super(!1,e,e,i)}},C=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let a=0;ae);a++){if(this[a].endt.#e&&(o.push(r),t.#e=r.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],a=-1,t=Math.ceil(Math.sqrt(this.length)),r=!0;for(let l=0;l=e&&(a=l):a=a<0?l:a;for(;r;)this[a]?.end=e&&o.push(this[a]):r=!1,a++;return o}};var ee=0xffffffffffff,H=function(e){let i=new C,o=this,a=e.timeDivision,t=120,r=new C,l=0,f=0;r.push(new T(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,r[r.length-1]&&r.push(new T(l,0xffffffffffff,[t,0])))})}),r.fresh(),r.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;r.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return r.forEach(function(s){let n=s.start,h=n/b/a*60+p;b=s.data[0],p=h-n/b/a*60,s.data[1]=p}),console.debug("All tempo changes: ",r),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=r.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/a*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};M.default.customInterpreter=A;var at=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#a=.5;#l=120;#t=4;#o=4;#r=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#a=.5,this.#l=120,this.#t=4,this.#o=4,this.#r=0,this.#c=0}async loadFile(e){this.#e=H(M.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#a}get noteOverall(){return this.noteProgress-this.#r}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,a=new Set,t=this,r=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?a.add(c.part*128+c.data[0]):a.has(c.part*128+c.data[0])&&o++),u.data.type==8&&a.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{r.push(g);break}}g?.reply&&delete g.reply}),r?.length>0&&this.dispatchEvent("meta",r);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=m.length*c;if(y>=0){let E=4*.25**(p[R+m[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+m[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let a=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(r){(a.#i[r.meta]||console.debug).call(a,r.meta,r.data)})}),this.device.addEventListener("mode",function(t){a.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){a.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){a.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){a.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){a.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){a.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,r){a.#s?.length<1&&(a.#s=r)},this.#i[81]=function(t,r){let l=a.noteProgress,f=a.#a||.5;a.#l=6e7/r,a.#a=r/1e6,a.#r+=l*(f/a.#a)-l},this.#i[88]=function(t,r){let l=a.noteProgress,f=a.noteOverall,$=a.noteBar,p=a.noteBeat,b=a.#t,s=a.#o;a.#t=r[0],a.#o=1<=b&&(b()=>(i||e((i={exports:{}}).exports,i),i.exports);var F=(e,i,o,s)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of P(i))!C.call(e,t)&&t!==o&&E(e,t,{get:()=>i[t],enumerable:!(s=A(i,t))||s.enumerable});return e};var V=(e,i,o)=>(o=e!=null?D(O(e)):{},F(i||!e||!e.__esModule?E(o,"default",{value:e,enumerable:!0}):o,e));var T=S((q,I)=>{(function(){"use strict";let e={fatal:!0},i=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(s,t){if(s instanceof Uint8Array)return o.Uint8(s);if(typeof s=="string")return o.Base64(s);if(s instanceof HTMLElement&&s.type==="file")return o.addListener(s,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(s,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(s===void 0||!(s instanceof HTMLElement)||s.tagName!=="INPUT"||s.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},s.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let c=new FileReader;c.readAsArrayBuffer(r.target.files[0]),c.onload=function(l){t(o.Uint8(new Uint8Array(l.target.result)))}})},Base64:function(s){let t=function(l){var v="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(l=l.replace(/^.*?base64,/,""),l=String(l).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(l))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");l+="==".slice(2-(3&l.length));let h,u="",n,a,d=0;for(;d>16&255):a===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return u}(s=String(s));var r=t.length;let c=new Uint8Array(new ArrayBuffer(r));for(let l=0;l{a[p]=this.readInt(1)});for(let g=0;g191||m>127&&m<160)throw new RangeError(`Invalid code point: ${m}`)}d=!0,console.debug(`String byte sequence in ${i[g].encoding}`)}catch(p){console.debug(`SMF string ${p}`)}return f||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let n=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)n=this.readInt(1);else{let d=[];for(;128<=this.data.getUint8(this.pointer);)d.push(this.readInt(1)-128);var a=this.readInt(1);for(let f=1;f<=d.length;f++)n+=d[d.length-f]*Math.pow(128,f);n+=a}return n}};if(t.data=new DataView(c.buffer,c.byteOffset,c.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let r={};r.formatType=t.readInt(2),r.tracks=t.readInt(2),r.track=[];var c=t.readInt(1),l=t.readInt(1);128<=c?(r.timeDivision=[],r.timeDivision[0]=c-128,r.timeDivision[1]=l):r.timeDivision=256*c+l;for(let n=1;n<=r.tracks;n++){r.track[n-1]={event:[]};var v,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let a=0,d=!1,f,g;for(;!d&&(a++,r.track[n-1].event[a-1]={},r.track[n-1].event[a-1].deltaTime=t.readIntVLV(),(f=t.readInt(1))!==-1);)if(128<=f?g=f:(f=g,t.movePointer(-1)),f===255){r.track[n-1].event[a-1].type=255,r.track[n-1].event[a-1].metaType=t.readInt(1);var u=t.readIntVLV();switch(r.track[n-1].event[a-1].metaType){case 47:case-1:d=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[n-1].event[a-1].data=t.readStr(u);break;case 33:case 89:case 81:r.track[n-1].event[a-1].data=t.readInt(u);break;case 84:r.track[n-1].event[a-1].data=[],r.track[n-1].event[a-1].data[0]=t.readInt(1),r.track[n-1].event[a-1].data[1]=t.readInt(1),r.track[n-1].event[a-1].data[2]=t.readInt(1),r.track[n-1].event[a-1].data[3]=t.readInt(1),r.track[n-1].event[a-1].data[4]=t.readInt(1);break;case 88:r.track[n-1].event[a-1].data=[],r.track[n-1].event[a-1].data[0]=t.readInt(1),r.track[n-1].event[a-1].data[1]=t.readInt(1),r.track[n-1].event[a-1].data[2]=t.readInt(1),r.track[n-1].event[a-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(r.track[n-1].event[a-1].data=this.customInterpreter(r.track[n-1].event[a-1].metaType,t,u)),this.customInterpreter!==null&&r.track[n-1].event[a-1].data!==!1||(t.readInt(u),r.track[n-1].event[a-1].data=t.readInt(u),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((f=f.toString(16).split(""))[1]||f.unshift("0"),r.track[n-1].event[a-1].type=parseInt(f[0],16),r.track[n-1].event[a-1].channel=parseInt(f[1],16),r.track[n-1].event[a-1].type){case 15:this.customInterpreter!==null&&(r.track[n-1].event[a-1].data=this.customInterpreter(r.track[n-1].event[a-1].type,t,!1)),this.customInterpreter!==null&&r.track[n-1].event[a-1].data!==!1||(v=t.readIntVLV(),r.track[n-1].event[a-1].data=t.readInt(v),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[n-1].event[a-1].data=[],r.track[n-1].event[a-1].data[0]=t.readInt(1),r.track[n-1].event[a-1].data[1]=t.readInt(1);break;case 12:case 13:r.track[n-1].event[a-1].data=t.readInt(1);break;case-1:d=!0;break;default:if(this.customInterpreter!==null&&(r.track[n-1].event[a-1].data=this.customInterpreter(r.track[n-1].event[a-1].metaType,t,!1)),this.customInterpreter===null||r.track[n-1].event[a-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof I<"u")I.exports=o;else{let s=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;s.MidiParser=o}})()});var b=class{#e={};addEventListener(e,i){this.#e[e]||(this.#e[e]=[]),this.#e[e].unshift(i)}removeEventListener(e,i){if(this.#e[e]){let o=this.#e[e].indexOf(i);o>-1&&this.#e[e].splice(o,1),this.#e[e].length<1&&delete this.#e[e]}}dispatchEvent(e,i){let o=new Event(e),s=this;o.data=i,this.#e[e]?.length>0&&this.#e[e].forEach(function(t){try{t?.call(s,o)}catch(r){console.error(r)}}),this[`on${e}`]&&this[`on${e}`](o)}};var y=V(T(),1);var x=class{#e=!1;constructor(e,i,o,s){this.#e=e,this.start=i,this.end=o,this.data=s}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},k=class extends x{constructor(e,i,o){super(!0,e,i,o)}},L=class extends x{constructor(e,i){super(!1,e,e,i)}},w=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let s=0;se);s++){if(this[s].endt.#e&&(o.push(r),t.#e=r.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],s=-1,t=Math.ceil(Math.sqrt(this.length)),r=!0;for(let c=0;c=e&&(s=c):s=s<0?c:s;for(;r;)this[s]?.end=e&&o.push(this[s]):r=!1,s++;return o}};var B=0xffffffffffff,M=function(e){let i=new w,o=this,s=e.timeDivision,t=120,r=new w,c=0,l=0;r.push(new k(0,B,[120,0])),e.track.forEach(function(n){c=0,n.event.forEach(function(a){c+=a.deltaTime,a.type==255&&a?.metaType==81&&(t=6e7/a.data,r[r.length-1]&&r.push(new k(c,0xffffffffffff,[t,0])))})}),r.fresh(),r.forEach(function(n,a,d){a>0&&(d[a-1].end=n.start)});let v=120;r.forEach(function(n,a,d){a>0&&(n.end==n.start?d.splice(d.indexOf(n),1):v==n.data[0]&&(d[a-1].end=n.end,d.splice(d.indexOf(n),1)),v=n.data[0])});let h=0,u=120;return r.forEach(function(n){let a=n.start,d=a/u/s*60+h;u=n.data[0],h=d-a/u/s*60,n.data[1]=h}),console.debug("All tempo changes: ",r),t=120,c=0,l=0,e.track.forEach(function(n,a){c=0,l=0;let d=a+1;n.event.forEach(function(f,g){c+=f.deltaTime;let p=r.step(c,!0)[0];p&&(t=p.data[0],l=p.data[1]);let m={type:f.type,data:f.data,track:d,part:0};f.type>14?m.meta=f.metaType:m.part=f.channel,i.push(new L(c/t/s*60+l,m))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};var U=function(e,i,o){let s=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let r=0;r127)return console.debug(`Early termination: ${s}`),s.pop(),i.backOne(),i.backOne(),new Uint8Array(s)}}}return new Uint8Array(s)};y.default.customInterpreter=U;var J=function(e,i=0){let o=e[0]>>4,s=e[0]&15,t={track:(i&15)+240,type:o,data:e.slice(1)};if(o<15)return t.part=s,t;if(o==12)t.data=e[1];else{if(s==0)return t;console.warn(`Unknown special event channel ${s}.`)}},ee=function(e){let i=e.type,o=e.part;if(i==255)return;let s=3;i==12?s=2:i==15&&(s=e.data.length+1);let t=new Uint8Array(s);return i!=15?t[0]=e.type*16+e.part:t[0]=240,i==12?t[1]=e.data:e.data.forEach?e.data.forEach((r,c)=>{t[c+1]=r}):console.debug(`Type ${i} value ${e.data.constructor.name} cannot be iterated.`),t},te=function(){return new BroadcastChannel("cc.ltgc.octavia:MainInput")},re=function(){return new BroadcastChannel("cc.ltgc.octavia:MainOutput")},ne=class extends b{#e;#a=!0;#r=0;#n=0;#t=-1;get currentTime(){return this.#r/1e3}get duration(){return this.#e?this.#e[this.#e.length-1].end+4:0}async load(e){e?this.#e=M(y.default.parse(new Uint8Array(await e.arrayBuffer()))):(this.pause(),this.#r=0)}pause(){if(this.#t>-1){clearInterval(this.#t);for(let e=0;e<16;e++)this.dispatchEvent("midi",{delay:0,data:{part:e,type:11,data:[123,0]}});this.dispatchEvent("pause"),this.#t=-1}}async play(){this.#t<0&&(this.#n=Date.now(),this.#t=setInterval(()=>{let e=Date.now(),i=this.#r,o=e-this.#n;this.#r+=o,this.#e.step(this.currentTime)?.forEach(t=>{this.dispatchEvent("midi",{delay:Math.round(t.start*1e3-i),data:t.data})}),this.#n=e},12.5),this.dispatchEvent("play"))}constructor(e){super(),e&&this.load(e)}};export{ne as SimpleMidiEventEmitter,ee as fromJson,te as getBridge,re as getBridgeOut,J as toJson}; diff --git a/dist/cambiare.mjs b/dist/cambiare.mjs new file mode 100644 index 00000000..0eac2b61 --- /dev/null +++ b/dist/cambiare.mjs @@ -0,0 +1,156 @@ +var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var Me=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Te(n))!Ce.call(e,t)&&t!==l&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,l)=>(l=e!=null?Se(Me(e)):{},Oe(n||!e||!e.__esModule?j(l,"default",{value:e,enumerable:!0}):l,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],l={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return l.Uint8(o);if(typeof o=="string")return l.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return l.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(i){if(!i.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(i.target.files[0]),a.onload=function(s){t(l.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var i=t.length;let a=new Uint8Array(new ArrayBuffer(i));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)c+=p[p.length-b]*Math.pow(128,b);c+=f}return c}};if(t.data=new DataView(a.buffer,a.byteOffset,a.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let i={};i.formatType=t.readInt(2),i.tracks=t.readInt(2),i.track=[];var a=t.readInt(1),s=t.readInt(1);128<=a?(i.timeDivision=[],i.timeDivision[0]=a-128,i.timeDivision[1]=s):i.timeDivision=256*a+s;for(let c=1;c<=i.tracks;c++){i.track[c-1]={event:[]};var r,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,i.track[c-1].event[f-1]={},i.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){i.track[c-1].event[f-1].type=255,i.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(i.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:i.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:i.track[c-1].event[f-1].data=t.readInt(d);break;case 84:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1),i.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(t.readInt(d),i.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),i.track[c-1].event[f-1].type=parseInt(b[0],16),i.track[c-1].event[f-1].channel=parseInt(b[1],16),i.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(r=t.readIntVLV(),i.track[c-1].event[f-1].data=t.readInt(r),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:i.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||i.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return i},customInterpreter:null};if(typeof K<"u")K.exports=l;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=l}})()});var A=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),o=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,l)}catch(i){console.error(i)}}),this[`on${e}`]&&this[`on${e}`](l)}};var Z=function(e,n){let l=Math.min(e.length,n.length),o=e.slice(0,l),t=n.slice(0,l),i=0,a=0;for(;a0){let o=this.pool.length,t=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(i==o)i-=t;else{let r=Z(n,this.pool[i]);switch(r){case 0:{a=0;break}case 1:{i+t<=o&&(i+=t);break}case-1:{i!=0&&(i-=t);break}default:console.warn(`Unexpected result ${r}.`)}}t=t>>1,a--}let s=!0;if(i>=this.pool.length)s=!1;else{let r=this;this.pool[i].forEach(function(h,d,c){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[i])>0&&i++}return s||l?i:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...l):this.pool[o].data(n.slice(this.pool[o].length),...l):this.default(n,...l)}};var De=["MSB","PRG","LSB"],B=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},H=class{#t;strictMode=!1;get(e=0,n=0,l=0,o){let t=[e,n,l],i,a=Array.from(arguments);switch(o){case"xg":{e==32?a[2]+=4:e==33||e==35||e==36?a[2]+=5:e==79?a[0]=95:e==80?a[0]=96:e==81?a[0]=97:e==82?a[0]=98:e==83?a[0]=99:e==84&&(a[0]=100);break}case"gs":{e==0&&l<5?a[2]=0:e>125&&l<5&&l!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&l==0&&(a[2]=5);break}case"s90es":{l<8?a[2]+=17:l<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{l<8?a[2]+=28:l<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let s=" ",r="M",h=!1,d=0;switch(a[0]){case 0:{a[2]==127?r="MT-a":a[2]==126?r="MT-b":a[2]==7?r="GM-k":a[2]==5?r="SG-a":a[2]==4?r="SP-l":a[2]==0||o=="gs"&&a[2]<5?r="GM-a":(r="y",h=!0);break}case 8:{o=="sg"?r="GM-s":r="r:";break}case 48:{r=`yM${(a[2]>>3).toString().padStart(2,"0")}`,h=!0;break}case 56:{r="GM-b";break}case 61:case 120:{r="rDrm";break}case 62:{r="kDrm";break}case 63:{if(a[2]<17){let b=a[2];r=b<10?"kP:":"kC:",r+=b%10}else a[2]<34?r=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:r="Ds";break}case 64:{r="ySFX";break}case 67:{r="DX:S";break}case 80:case 81:case 82:case 83:{r=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{r=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{r=`${["DR","PC"][a[2]]}-d`;break}case 96:{r=a[2]==106?"AP-a":"PF",a[2]>63&&(d=63),h=!0;break}case 97:{r="VL:",h=!0,d=112;break}case 98:{r="SG-a";break}case 99:{r="DX",a[2]>63&&(d=63),h=!0;break}case 100:{r="AN",a[2]>63&&(d=63),h=!0;break}case 121:{r=`GM-${a[2]?"":"a"}`,h=!0;break}case 122:{r="lDrm";break}case 126:{r="yDrS";break}case 127:{a[2]==127?r="rDrm":r="yDrm";break}default:a[0]<48?r="r:":r="M"}r.length<4&&(r+=`${(h?l:e)-d}`.padStart(4-r.length,"0")),o=="xg"&&e==16&&(i=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,s=" ");let c=[a[0],a[1],a[2]];for(;!(i?.length>=0);)i=this.#t[a[1]||0][(a[0]<<7)+a[2]],i||(this.strictMode?(i="",s="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,s="^"):a[2]<1?(a[0]=0,s="*"):(a[2]--,s="^"):e==48?(a[0]=0,a[2]=0,s="!"):e==62?(a[1]--,s=" ",a[1]<1&&!i?.length&&(a[0]=0,s="!")):e<63?a[0]==0?(a[2]=0,s="^"):a[2]<1?(a[0]=0,s="*"):a[2]--:e==80?(i=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(i=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(i=`GM2Vox0${l}`,s="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,i=this.#t[a[1]||0][(a[0]<<7)+a[2]],i?s=" ":(i="",s="*")):a[1]==0?(i=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,s="!"):a[0]==0?(a[2]=0,s="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,s="!"):(a[0]=0,s="?"));let f=[a[0],a[1],a[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(i="");let p="??";switch(a[0]){case 0:{a[2]==0?p="GM":a[2]==5||a[2]==7?p="KG":a[2]<120?p="XG":a[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{a[2]<17?p="KR":a[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][a[2]];break}case 96:{p=a[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=a[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=a[2]==127?"MT":n==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&o=="xg"?p="XG":p="GS")}return{name:i||`${B(e||0)} ${B(n||0)} ${B(l||0)}`,iid:c,eid:f,sid:t,ending:s,sect:r,standard:p}}async load(e,n,l){let o=this,t=[],i=0,a=0;e.split(` +`).forEach(function(s,r){let h=s.split(" "),d=[];r==0?h.forEach(function(c,f){t[De.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],i++),a++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${l||"(internal)"}": ${a} total, ${i} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let i=t<<7;for(let a=o[0];a<=o[1];a++){let s=i+a;for(let r=n[0];r<=n[1];r++)delete this.#t[r][s]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,o){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let l=!0;return n.forEach((o,t)=>{l=l&&e[t]==o}),l},ee=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},R=new TextDecoder,U=new J;U.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",o=[0,0,0,0],t=32,i=0,a=0,s=!0,r=[],h=0;for(;s;){let d=n.subarray(i);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(i+=80,a=1):i++},()=>{if(Ie(d.subarray(0,4),o))r.forEach((c,f,p)=>{let b=ee(n.subarray(c.start+4,c.start+8));c.length=b}),a=2;else{let c=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));r.push({type:c,start:f}),i+=8}},()=>{let c=r[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let b=t;for(;b=r.length&&(a=3,s=!1)}][a]||(()=>{s=!1}))()}return l});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ae=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],M=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ie=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},re=function(e){return e>105?Ae[e-106]:e>100?e*1.1-100:e/10},ae=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +ka,か +ki,き +ku,く +ke,け +ko,こ +ky,き! +kw,くl +tsu,つ +ts,つl +sa,さ +si,すぃ +su,す +se,せ +so,そ +shi,し +sh,し! +ta,た +ti,てぃ +tu,とぅ +te,て +to,と +tchy,ち! +tchi,ち +na,な +ni,に +nu,ぬ +ne,ね +no,の +ny,に! +nn,ん +ha,は +hi,ひ +hu,ほぅ +he,へ +ho,ほ +hy,ひ! +fa,ふぁ +fi,ふぃ +fu,ふ +fe,ふぇ +fo,ふぉ +ma,ま +mi,み +mu,む +me,め +mo,も +my,み! +mm, +ra,ら +ri,り +ru,る +re,れ +ro,ろ +ry,り! +wa,わ +wi,うぃ +we,うぇ +wo,を +nga,ガ +ngi,ギ +ngu,グ +nge,ゲ +ngo,ゴ +ngy,ギ! +ng, +ga,が +gi,ぎ +gu,ぐ +ge,げ +go,ご +gy,ぎ! +gw,ぐl +za,ざ +zi,ずぃ +zu,ず +ze,ぜ +zo,ぞ +ja,じゃ +ji,じ +ju,じゅ +je,じぇ +jo,じょ +jy,じ! +da,だ +di,でぃ +du,どぅ +de,で +do,ど +dy,で! +ba,ば +bi,び +bu,ぶ +be,べ +bo,ぼ +by,び! +va,ゔぁ +vi,ゔぃ +vu,ゔ +ve,ゔぇ +vo,ゔぉ +pa,ぱ +pi,ぴ +pu,ぷ +pe,ペ +po,ぽ +py,ぴ! +!ya,ゃ +!yu,ゅ +!ye,ぇ +!yo,ょ +ya,や +yu,ゆ +ye,いぇ +yo,よ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +la,ぁ +li,ぃ +lu,ぅ +le,ぇ +lo,ぉ +a,あ +i,い +u,う +e,え +o,お +*,っ +~, +^, +_,`.split(` +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ue={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ue[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ce=function(e,n,l){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},i=t[0];if(i?.length)return i+=`: ${(t[1]||function(){})(l)||l}`,i},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,l){let o=[],t=l==!1?n.readIntVLV():l;e==0||e==127;for(let i=0;i127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},S=function(e,n){let l=0,o=0;for(let t=0;t>i&1)<<7,s=e[t];s+=a,t%8!=0?(n(s,l,e),l++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],T=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Be=[12,13,16,17,18,19],He=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],l=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(l,t)):o==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",l="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${l}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends A{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#c=new Uint8Array(g.ch);#i=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#a=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#v=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#T=new Uint8Array(g.ch);#H=0;#r=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#M=new Uint8Array(g.ch);#A=new Uint8Array(128);#k=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#U=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#S=0;#m=100;#O=0;#Q=500;#W=0;#C="";#L=0;#Y=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#B=new Uint8Array(g.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#B[n])return(this.#B[n]-1)*16+e;if([2,3].indexOf(this.#S)>-1){if(l==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let l=e*128+n,o=this.#f.lastIndexOf(l);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[l]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let o=e*128+n,t=0;for(this.#v[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,l)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[l]=o;let t=this.#f[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,l,o)=>{let t=n>>7,i=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,i)})}};#J={8:function(e){let n=e.channel,l=e.data[0];this.#u.nOff(n,l)},9:function(e){let n=e.channel;this.#n[n]=1;let l=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,l,o):this.#u.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#f.indexOf(l)>-1&&(this.#d[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let l=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#v[n]=1,this.#u.ano(n);return}case 127:{this.#v[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Be.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let i=this.#e[g.cc*t];(i==56||i==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#H){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[l+u[99]],t=this.#e[l+u[98]];if(o==1){let i=He.indexOf(t);if(i>-1)this.#e[l+u[71+i]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+i}.`),this.dispatchEvent("cc",{part:n,cc:71+i,data:e.data[1]});else{let a=ge.indexOf(t);a>-1?this.#K[n*10+a]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let a=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${a}is not necessary. Consider removing it.`):console.warn(`${a}is not supported.`)}else{let a=this.#i[n]-2;a<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#i[n]]}.`):this.#j[(a*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#i[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[l+u[100]]];this.#e[l+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#r[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.#i[n]=+([32,40].indexOf(e.data[1])>-1)<<1;break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#H||this.#e[l+101]==0&&X[this.#e[l+100]]!=null&&(this.#r[n*g.rpn+X[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#H=1;break}case 100:case 101:{this.#H=0;break}}this.#e[l+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#a[n]=e.data,this.#M[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#f.forEach(function(o){let t=o>>7;l==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:l,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let l=n[0],o=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(l,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#V.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#R.run(n,l,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,l)=>{this.#D.run(n,l,e)},67:(e,n,l)=>{this.#E.run(n,l,e)},68:(e,n,l)=>{this.#z.run(n,l,e)},71:(e,n,l)=>{this.#X.run(n,l,e)},126:(e,n,l)=>{this.#_.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#F.run(n,l,e)}};#_;#F;#E;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,l=this.#e.subarray(n,n+g.cc);return l[u[0]]=l[u[0]]||this.#N,l[u[32]]=l[u[32]]||this.#S,l}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&(this.#e[e*g.cc+u[0]]=T[l])}getPitch(){return this.#I}getProgram(){return this.#a}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,l=this;return l.#f.forEach(function(o,t){let i=Math.floor(o/128),a=o%128;e==i&&l.#d[o]>0&&n.set(a,{v:l.#d[o],s:l.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#C,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let l=Math.floor(n/128);e.#d[n]>e.#T[l]&&(e.#T[l]=e.#d[n])}),this.#T}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,o){e[o]=Math.floor(l*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,l,o){let t=e||this.#N,i=n,a=l||this.#S;x[this.#t]=="ns5r"&&t>0&&t<56&&(a=3);let s=this.userBank.get(t,i,a,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let r=parseInt(s.name.slice(5)),h=r*g.cmt,d="";this.#U.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG +0 127 ${i} ${d}`,!0),s.name=d,s.ending=" "}return(s.ending!=" "||!s.name.length)&&(s=this.baseBank.get(t,i,a,o)),s}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#a[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#M[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,o=3200){let t=this,i;t.#C=" ".repeat(l),e.forEach(a=>{t.#C+=String.fromCharCode(a>31?a:32),a<32&&(i=i||new Set,i.add(a))}),t.#L=Date.now()+3200,t.#C=t.#C.padEnd(32," "),i&&(i=Array.from(i),i.forEach((a,s,r)=>{r[s]=a.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${i.length>1?"s":""}: 0x${i.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let l=this.#b[n];if(l){if(I.indexOf(l)>=0)return this.#e[e*g.cc+u[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#S=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#a.fill(0),this.#d.fill(0),this.#f.fill(0),this.#T.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#C="",this.#h=0,this.#o=0,this.#g.fill(0),this.#l=!1,this.#Y=0,this.#x=!0,this.#c.forEach(function(n,l,o){o[l]=l}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#B.fill(0)),this.#e[g.cc*9]=T[0],this.#e[g.cc*25]=T[0],this.#e[g.cc*41]=T[0],this.#e[g.cc*57]=T[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#U.fill(0),this.#A.fill(0),this.#k.fill(0),this.#M.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=l,this.#o=0,this.#N=fe[0][l],this.#S=fe[1][l];for(let i=0;i0&&this.#e[i*g.cc+u[0]]==T[o]&&(this.#e[i*g.cc]=T[l]);switch(this.initOnReset,l){case m.mt32:{V.forEach((i,a)=>{let s=a+1;this.#n[s]||(this.#a[s]=i,this.#e[s*g.cc+u[91]]=127)});break}}let t;switch(l){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let i=0;i14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(o=>{e.channel=o,l=!0,this.#J[e.type].call(this,e)}),l||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{U.context=this,this.userBank.load(await U.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +062 000 000 +122 000 000 +122 001 000 +122 002 000 +122 003 000 +122 004 000 +122 005 000 +122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let i=t.slice(2).split(":");switch(i[0]){case"hd":{i.slice(1).forEach((a,s)=>{a.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][s]}: ${a}`)});break}case"ln":{i.slice(1).forEach((a,s)=>{a.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][s]}: ${a}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,i){i<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,i){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,i){console.debug(`Track ${i} requests to get assigned to output ${t}.`),e.#B[i]=t+1},this.#y[81]=function(t,i){e.#Q=t/1e3},this.#y[127]=function(t,i){e.#G.run(t,i)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,i){e.#B[i]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#E=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#E.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#E.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let i=[0,0,0,0],a=(s,r)=>{i[r]=s};if(t.subarray(1).forEach((s,r)=>{let h=r+t[0];([a,a,a,a,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(s,r)}),t[0]<4){let s=0;i.forEach(r=>{s=s<<4,s+=r}),s-=1024}}}}).add([76,2,1],t=>{let i="XG ";t[0]<32?(i+="reverb ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}time: ${ie(r)}s`)},r=>{console.debug(`${i}diffusion: ${r}`)},r=>{console.debug(`${i}initial delay: ${r}`)},r=>{console.debug(`${i}HPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${i}LPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${i}width: ${r}`)},r=>{console.debug(`${i}height: ${r}`)},r=>{console.debug(`${i}depth: ${r}`)},r=>{console.debug(`${i}wall type: ${r}`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${i}delay: ${r}`)},r=>{console.debug(`${i}density: ${r}`)},r=>{console.debug(`${i}balance: ${r}`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{}][t[0]+s]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(a)})):t[0]<64?(i+="chorus ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}LFO: ${te[r]}Hz`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{console.debug(`${i}delay offset: ${re(r)}ms`)},r=>{},r=>{console.debug(`${i}low: ${M[r]}Hz`)},r=>{console.debug(`${i}low: ${r-64}dB`)},r=>{console.debug(`${i}high: ${M[r]}Hz`)},r=>{console.debug(`${i}high: ${r-64}dB`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${i}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${i}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+s]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(a)})):t[0]<86?(i+="variation ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${i}sub type: ${r+1}`)}][t[0]-64+s]||function(){})(a)})):t[0]<97?(i+="variation ",t.subarray(1).forEach((a,s)=>{[r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},r=>{console.debug(`${i}to chorus: ${E(r)}dB`)},r=>{console.debug(`${i}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${i}channel: CH${r+1}`)},r=>{console.debug(`${i}mod wheel: ${r-64}`)},r=>{console.debug(`${i}bend wheel: ${r-64}`)},r=>{console.debug(`${i}channel after touch: ${r-64}`)},r=>{console.debug(`${i}AC1: ${r-64}`)},r=>{console.debug(`${i}AC2: ${r-64}`)}][t[0]-86+s](a)})):t[0]>111&&t[0]<118?i+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((i,a)=>{let s=a+t[0];if(s==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][i]}`);else{let r=s-1>>2,h=s-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${i-64}dB`)},()=>{console.debug(`${d}${i} (raw)`)},()=>{console.debug(`${d}${i/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!i]}`)}][h]()}})}).add([76,3],t=>{let i=t[0],a=t[1],s=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+i,!1,d),console.info(`${s}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+i,!0,d),console.debug(`${s}sub type: ${d+1}`)}][a+h]||function(){})(r)})}).add([76,6,0],t=>{let i=t[0];i<64?e.setLetterDisplay(t.subarray(1),"XG letter display",i):e.#L=Date.now()}).add([76,7,0],t=>{let i=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let a=t.subarray(1);for(let s=0;s>6-p&1,p++})}).add([76,8],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=t[1],r=g.cc*a,h=`XG CH${a+1} `,d=`Unknown XG part address ${s}.`;t.subarray(2).forEach((c,f)=>{s<1?console.debug(d):s<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#a[a]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[a]=+!c},()=>{},()=>{e.setChType(a,c,m.xg),console.debug(`${h}type: ${P[c]||c}`)},()=>{e.#r[g.rpn*a+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][s+f-1]||(()=>{}))():s<48?console.debug(d):s<111?s>102&&s<105&&(e.#e[r+u[[5,65][s&1]]]=c):s<114?console.debug(d):s<116?console.debug(`${h}EQ ${["bass","treble"][s&1]} gain: ${c-64}dB`):s<118?console.debug(d):s<120?console.debug(`${h}EQ ${["bass","treble"][s&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=t[1],r=`PLG-150VL CH${a+1} `;t.subarray(2).forEach((h,d)=>{let c=d+s;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,i)=>{let a=t[0];t.subarray(1).forEach((s,r)=>{let h=a+r;h==8?console.debug(`MU1000 set LCD contrast to ${s}.`):h>9&&h<16&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][h-10]()})}).add([73,10,0],(t,i)=>{let a=t[0],s=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(a<16)switch(a){case 2:{let r=e.chRedir(0,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${s}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,i,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${s}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${s}unknown switch ${a} invoked.`)}else if(a<32){if(e.#x){let r=e.chRedir(a-16+(e.#Y<<4),i,!0);e.dispatchEvent("channelactive",r)}}else if(a<36){let r=e.chRedir(a-32<<4,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#Y=a-32),console.info(`${s}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=`PLG-100SG CH${a+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ae[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${s}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#E.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#E.add([89,0],(t,i,a)=>{if(e.eprom){let s=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${s} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let b=0;b<7;b++)h[r+7*f+b]+=(d>>6-b&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,i,a)=>{let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${s.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=s)}).add([89,2],(t,i,a)=>{if(e.eprom){let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${s.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[s+7*c+p]+=(h>>6-p&1)<<7;else r[s+7*c+f]=h})}}).add([89,3],(t,i,a)=>{}),this.#E.add([39,48],(t,i,a)=>{}).add([43,0,0],(t,i,a)=>{let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,i,a)=>{}).add([43,2],(t,i,a)=>{let s=e.chRedir(t[0],i,!0),r=t[1],h=g.cc*s,d=`TG300 CH${s+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[s]=+!c},()=>{},()=>{},()=>{e.#r[g.rpn*s+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,i,a)=>{let s=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",s)}).add([43,7,1],(t,i,a)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(s,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,i,a)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#S=3,e.#l=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,i,a)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#l=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let i=t[0];if(i<16){let a="".padStart(i," ");t.subarray(1).forEach((s,r)=>{a+=String.fromCharCode(Math.max(32,s))}),a=a.padEnd(16," "),console.debug(`GS patch name: ${a}`)}else i<48||(i<65?t.subarray(1).forEach((a,s)=>{let r=`GS ${i+s>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${_[a]}`),e.setEffectType(0,40,a)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${a}ms`)},()=>{console.info(`${r}type: ${oe[a]}`),e.setEffectType(1,40,16+a)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(a)}`)},()=>{console.debug(`${r}to delay: ${E(a)}`)}][i+s-48]||(()=>{}))()}):i<80?console.debug(`Unknown GS patch address: ${i}`):i<91?t.subarray(1).forEach((a,s)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[a]}`),e.setEffectType(2,40,32+a)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(a)}`)}][i+s-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${i}`))}).add([66,18,64,2],t=>{let i="GS EQ ";t.subarray(1).forEach((a,s)=>{([()=>{console.debug(`${i}low freq: ${[200,400][a]}Hz`)},()=>{console.debug(`${i}low gain: ${a-64}dB`)},()=>{console.debug(`${i}high freq: ${[3e3,6e3][a]}Hz`)},()=>{console.debug(`${i}high gain: ${a-64}dB`)}][t[0]+s]||function(){console.warn(`Unknown GS EQ address: ${t[0]+s}`)})()})}).add([66,18,64,3],t=>{let i="GS EFX ",a=function(s,r){let h=ce(e.#w.subarray(10,12),r,s);h&&console.debug(`${i}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((s,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+s)},()=>{e.setEffectTypeRaw(3,!0,s),console.info(`${i}type: ${F(e.#w.subarray(10,12))}`)},!1,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,()=>{console.debug(`${i}to reverb: ${E(s)}dB`)},()=>{console.debug(`${i}to chorus: ${E(s)}dB`)},()=>{console.debug(`${i}to delay: ${E(s)}dB`)},!1,()=>{console.debug(`${i}1 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${i}1 depth: ${s-64}`)},()=>{console.debug(`${i}2 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${i}2 depth: ${s-64}`)},()=>{console.debug(`${i}to EQ: ${s?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(s,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let i=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",i);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let i=e.#p[t[0]-1],a=t[1];i.fill(0);let s=t.subarray(2);for(let r=0;r>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,i,a){let s=t[0],r=g.cc*i,h=g.rpn*i,d=`GS CH${i+1} `;s<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#a[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][s+f]()}):s<19||(s<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[i]=+!c},!1,()=>{e.setChType(i,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][s+f-19]||(()=>{}))()}):s<76||console.debug(`Unknown GS part address: ${s}`))},o=function(t,i){let a=t[0],s=`GS CH${i+1} `;a<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[g.cc*i+u[32]]=r},()=>{}][a+h]()}):a<32?console.warn(`Unknown GS misc address: ${a}`):a<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${s}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${s}EFX: o${["ff","n"][r]}`)}][a+h-32]()}):console.warn(`Unknown GS misc address: ${a}`)};this.#R.add([66,18,64,16],(t,i)=>{l(t,e.chRedir(9,i,!0),i)}).add([66,18,64,17],(t,i)=>{l(t,e.chRedir(0,i,!0),i)}).add([66,18,64,18],(t,i)=>{l(t,e.chRedir(1,i,!0),i)}).add([66,18,64,19],(t,i)=>{l(t,e.chRedir(2,i,!0),i)}).add([66,18,64,20],(t,i)=>{l(t,e.chRedir(3,i,!0),i)}).add([66,18,64,21],(t,i)=>{l(t,e.chRedir(4,i,!0),i)}).add([66,18,64,22],(t,i)=>{l(t,e.chRedir(5,i,!0),i)}).add([66,18,64,23],(t,i)=>{l(t,e.chRedir(6,i,!0),i)}).add([66,18,64,24],(t,i)=>{l(t,e.chRedir(7,i,!0),i)}).add([66,18,64,25],(t,i)=>{l(t,e.chRedir(8,i,!0),i)}).add([66,18,64,26],(t,i)=>{l(t,e.chRedir(10,i,!0),i)}).add([66,18,64,27],(t,i)=>{l(t,e.chRedir(11,i,!0),i)}).add([66,18,64,28],(t,i)=>{l(t,e.chRedir(12,i,!0),i)}).add([66,18,64,29],(t,i)=>{l(t,e.chRedir(13,i,!0),i)}).add([66,18,64,30],(t,i)=>{l(t,e.chRedir(14,i,!0),i)}).add([66,18,64,31],(t,i)=>{l(t,e.chRedir(15,i,!0),i)}).add([66,18,64,64],(t,i)=>{o(t,e.chRedir(9,i,!0))}).add([66,18,64,65],(t,i)=>{o(t,e.chRedir(0,i,!0))}).add([66,18,64,66],(t,i)=>{o(t,e.chRedir(1,i,!0))}).add([66,18,64,67],(t,i)=>{o(t,e.chRedir(2,i,!0))}).add([66,18,64,68],(t,i)=>{o(t,e.chRedir(3,i,!0))}).add([66,18,64,69],(t,i)=>{o(t,e.chRedir(4,i,!0))}).add([66,18,64,70],(t,i)=>{o(t,e.chRedir(5,i,!0))}).add([66,18,64,71],(t,i)=>{o(t,e.chRedir(6,i,!0))}).add([66,18,64,72],(t,i)=>{o(t,e.chRedir(7,i,!0))}).add([66,18,64,73],(t,i)=>{o(t,e.chRedir(8,i,!0))}).add([66,18,64,74],(t,i)=>{o(t,e.chRedir(10,i,!0))}).add([66,18,64,75],(t,i)=>{o(t,e.chRedir(11,i,!0))}).add([66,18,64,76],(t,i)=>{o(t,e.chRedir(12,i,!0))}).add([66,18,64,77],(t,i)=>{o(t,e.chRedir(13,i,!0))}).add([66,18,64,78],(t,i)=>{o(t,e.chRedir(14,i,!0))}).add([66,18,64,79],(t,i)=>{o(t,e.chRedir(15,i,!0))}),this.#D.add([54,65],(t,i)=>{e.switchMode("x5d");let a=(t[1]<<7)+t[0],s=(t[3]<<7)+t[2],r=e.chRedir(a&15,i,!0),h=g.cc*r;[()=>{s<1||(s<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=s-1,e.#e[h+u[0]]=82):s<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=s-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#a[r]=be[s-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=s},()=>{s<31&&(e.#e[h+u[10]]=Math.round((s-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(s)},()=>{e.#e[h+u[91]]=D(s)},()=>{e.#r[r*g.rpn+3]=s>8191?s-16320:64+s},()=>{e.#r[r*g.rpn+1]=s>8191?s-16320:64+s},()=>{s>0&&(e.#r[r*g.rpn]=s)},()=>{}][a>>4]()}).add([54,76,0],(t,i)=>{e.switchMode("x5d",!0);let a="",s=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{d+=` +${s} ${r} ${h} ${a.trim().replace("Init Voice","")}`,r++,a="";break}}r>99&&(s=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,i)=>{e.switchMode("x5d",!0);let a="",s=90,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{d+=` +${s} ${r} ${h} ${a.trim().replace("Init Combi","")}`,r++,a="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,i)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,i)=>{e.switchMode("x5d",!0),S(t,(a,s)=>{s>0&&s<3&&e.setEffectType(s-1,44,a)})}).add([54,104],(t,i)=>{e.switchMode("x5d",!0),S(t,function(a,s,r,h){if(s<192){let d=e.chRedir(Math.floor(s/12),i,!0),c=d*g.cc;switch(s%12){case 0:{a<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#a[d]=a):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#a[d]=be[a-128]),a>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=a;break}case 2:{e.#r[d*g.rpn+3]=a>127?a-192:64+a;break}case 3:{e.#r[d*g.rpn+1]=a>127?a-192:64+a;break}case 4:{a<31&&(e.#e[c+u[10]]=Math.round((a-15)*4.2+64));break}case 5:{let f=a>>4,p=a&15;e.#e[c+u[91]]=D(p),e.#e[c+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(a&15,i,!0),p=a>>4;e.#c[d]=a,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(s-192,i,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#A[c+(s-1)*16]=h,([!1,()=>{let f=e.#A[s-1<<4];if(f<3)if(e.#M[s]=1,f==2)for(let p=0;p{e.#r[s*g.rpn+3]=h+40},()=>{e.#r[s*g.rpn+1]=h+14},()=>{e.#r[s*g.rpn]=h},!1,()=>{e.#e[g.cc*s+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*s+u[7]]=h},()=>{e.#e[g.cc*s+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0)}).add([22,18,2],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0),r=t[1]+(t[0]<<7);r<10&&(e.#M[s]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#k[(s-1)*g.cmt+c]=h)})}).add([22,18,3],(t,i,a)=>{if(e.switchMode("mt32"),t[0]){let s=t[1]-16}else{let s=t[1];t.subarray(2).forEach((r,h)=>{let d=h+s;e.#A[d]=r;let c=e.chRedir(1+d>>4,i,!0),f=d&15;([!1,()=>{let p=e.#A[c-1<<4];if(p<3)if(e.#M[c]=1,p==2)for(let b=0;b{e.#r[c*g.rpn+3]=r+40},()=>{e.#r[c*g.rpn+1]=r+14},()=>{e.#r[c*g.rpn]=r},!1,()=>{e.#e[g.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[g.cc*c+u[7]]=r},()=>{e.#e[g.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,i,a)=>{e.switchMode("mt32");let s=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+s,c=e.chRedir(Math.floor(d/246+1),i,!0),f=d%246;f<14&&(e.#k[(c-1)*g.cmt+f]=r),f<10&&(e.#M[c]=1)})}).add([22,18,5],(t,i,a)=>{e.switchMode("mt32");let s=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=s+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME +000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,i,a)=>{e.switchMode("mt32");let s=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=s+h;d>1)*g.cmt+d]=r)})}).add([22,18,16],(t,i,a)=>{e.switchMode("mt32");let s=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+s;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let i=t[1],a=" ".repeat(i);t.subarray(2).forEach(s=>{s>31&&(a+=String.fromCharCode(s))}),e.#C=a.padStart(20," "),e.#L=Date.now()+3200}).add([22,18,82],(t,i)=>{let a=e.chRedir(0,i,!0);for(let s=0;s<16;s++)e.#u.ano(a+s),s&&s<10&&(e.#a[a+s]=V[s-1]);console.info("MT-32 alt reset complete.")}),this.#D.add([66,0],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,i)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,i)=>{let a=t[0];switch(a){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(a<10){let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][a+d]()}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,i)=>{}).add([66,18,0,2],(t,i)=>{}).add([66,18,1],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=a*g.cc,r=t[1],h=`NS5R CH${a+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[s+u[0]]=d||121},()=>{e.#e[s+u[32]]=d},()=>{e.#a[a]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[a]=+!d},()=>{e.setChType(a,d,m.ns5r),console.debug(`${h}type: ${P[d]}`)},()=>{e.#r[g.rpn*a+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[s+u[7]]=d},()=>{e.#e[s+u[11]]=d},()=>{},()=>{},()=>{e.#e[s+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[s+u[93]]=d},()=>{e.#e[s+u[91]]=d},()=>{e.#e[s+u[76]]=d},()=>{e.#e[s+u[77]]=d},()=>{e.#e[s+u[78]]=d},()=>{e.#e[s+u[74]]=d},()=>{e.#e[s+u[71]]=d},()=>{e.#e[s+u[73]]=d},()=>{e.#e[s+u[75]]=d},()=>{e.#e[s+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[s+u[5]]=d},()=>{e.#e[s+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,i)=>{let a=t[0];if(a<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let s=a-32;e.#h=Date.now()+3200,e.#o=10,e.#g.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+s,p=f>>4,b=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#g[b*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1;let a="";S(t,(s,r)=>{r<8?(s>31&&(a+=String.fromCharCode(s)),r==7&&(e.aiEfxName=a)):r<10&&e.setEffectType(r-8,44,s)})}).add([66,53],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(a,s){switch(!0){case s<2944:{let r=e.chRedir(Math.floor(s/92),i,!0),h=r*g.cc;switch(s%92){case 0:{e.#e[h+u[0]]=a||121;break}case 1:{e.#e[h+u[32]]=a;break}case 2:{e.#a[r]=a,a>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(a,i,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*g.rpn+3]=a<40||a>88?a+(a>63?-192:64):a;break}case 9:case 10:{e.#e[h+u[7]]=a;break}case 11:{e.#e[h+u[11]]=a;break}case 14:{e.#e[h+u[10]]=a||128;break}case 19:{e.#e[h+u[93]]=a;break}case 20:{e.#e[h+u[91]]=a;break}case 84:{e.#e[h+u[65]]=a;break}case 85:{e.#e[h+u[5]]=a;break}}break}case s<3096:break;case s<3134:break;case s<8566:break}})}).add([66,54],(t,i)=>{e.switchMode("ns5r",!0);let a="",s=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{s=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` +${s} ${r} ${h} ${a.trim().replace("Init Voice","")}`,r++,a="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,i)=>{e.switchMode("ns5r",!0);let a="",s=88,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%126;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:break;case p==12:break;case p==13:{d+=` +${s} ${r} ${h} ${a.trim().replace("Init Combi","")}`,r++,a="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let i=new Uint8Array(5760);S(t,(a,s,r)=>{if(s<720)for(let h=0;h<8;h++)i[s*8+h]=a>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:i})}).add([76],(t,i,a)=>{e.#D.run([66,...t],i,a)}),this.#V.add([16,0,8,0],(t,i,a)=>{let s=(t[2]<<4)+t[3],r="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#S=s?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,i,a)=>{let s=e.chRedir(t[1],i,!0),r=g.cc*s,h=g.rpn*s,d=(t[3]<<4)+t[4],c=`K11 CH${s+1} `;([()=>{d<128?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[r+u[0]]=0,e.#a[s]=d):(e.setChType(s,e.CH_DRUMS,m.k11),e.#a[s]=d-128)},()=>{let f=e.chRedir(d,i,!0);e.#c[s]=f,s!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[r+u[7]]=d},()=>{e.#n[s]=d},()=>{e.#e[r+u[10]]=d},()=>{e.#r[h+3]=d+40},()=>{e.#r[h+1]=d>>1,e.#r[h+2]=d&1},()=>{e.#e[r+u[91]]=d?127:0},()=>{},()=>{e.#e[r+u[74]]=d},()=>{e.#e[r+u[73]]=d},()=>{e.#e[r+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,i,a)=>{let s=(t[2]<<4)+t[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,i,a)=>{let s=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc;[()=>{s<128?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#a[r]=s):s<160?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#a[r]=s-100):(e.setChType(r,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#a[r]=s-160)},()=>{let d=e.chRedir(s,i,!0);e.#c[r]=d,r!=d&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,i,a)=>{let s=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc,d=r*g.rpn,c=`GMLX CH${r+1} `;[()=>{e.#n[r]=s},()=>{e.#e[h+u[7]]=s},()=>{e.#e[h+u[10]]=s},()=>{e.#e[h+u[91]]=s?127:0},()=>{e.#r[d+3]=s+40},()=>{e.#r[d+1]=s},()=>{e.#r[d]=s},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,i,a)=>{let s=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=s*129/16383*100;break}case 5:{s-64;break}case 6:{console.debug(`SG global reverb: ${s?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[s]}`);break}}break}default:if(t[0]>>4==1){let r=e.chRedir(t[0]&15,i,!0);if(t[1]==2){let h=e.chRedir(s,i,!0);e.#c[r]=h,r!=h&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*r+u[7]]=s)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,i,a)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#E.add([127,0],(t,i,a)=>{e.switchMode("motif");let s=new Uint8Array([127,1,...t]);e.#E.run(s,i,a)}).add([127,1,0,0],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES system ",r=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][r+d]||(()=>{console.info(`Unrecognized ${s}ID: ${r+d}`)}))()})}).add([127,1,0,0,14],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES bulk header ",r=[];r[95]=(h,d,c)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES bulk footer ",r=[];r[95]=(h,d,c)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,i,a)=>{e.switchMode("s90es");let s=e.chRedir(t[0],i,!0),r=g.cc*s,h=t[1],d=`S90/Motif ES bulk CH${s<16?s+1:"U"+(s-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[r+u[0]]=c},()=>{c&&(e.#n[s]=1),e.#e[r+u[32]]=c,e.#i[s]=+([32,40].indexOf(c)>-1)<<1},()=>{c&&(e.#n[s]=1),e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[s]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[r+u[7]]=c},()=>{e.#e[r+u[10]]=c},!1,!1,!1,()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[128]]=c},()=>{},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},!1,()=>{e.#e[r+u[65]]=c},()=>{e.#e[r+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,i,a)=>{e.switchMode("s90es");let s=t[0];t.subarray(1).forEach((r,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=r-64},()=>{let f=M[r]},()=>{let f=r/10},()=>{let f=r}][s+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,l,o){this.#t=e,this.start=n,this.end=l,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,l){super(!0,e,n,l)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let l=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(l.push(i),t.#t=i.index)})}return l}getRange(e,n){e>n&&([e,n]=[n,e]);let l=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),i=!0;for(let a=0;a=e&&(o=a):o=o<0?a:o;for(;i;)this[o]?.end=e&&l.push(this[o]):i=!1,o++;return l}};var _e=0xffffffffffff,ve=function(e){let n=new Q,l=this,o=e.timeDivision,t=120,i=new Q,a=0,s=0;i.push(new q(0,_e,[120,0])),e.track.forEach(function(c){a=0,c.event.forEach(function(f){a+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,i[i.length-1]&&i.push(new q(a,0xffffffffffff,[t,0])))})}),i.fresh(),i.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let r=120;i.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):r==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),r=c.data[0])});let h=0,d=120;return i.forEach(function(c){let f=c.start,p=f/d/o*60+h;d=c.data[0],h=p-f/d/o*60,c.data[1]=h}),console.debug("All tempo changes: ",i),t=120,a=0,s=0,e.track.forEach(function(c,f){a=0,s=0;let p=f+1;c.event.forEach(function(b,y){a+=b.deltaTime;let $=i.step(a,!0)[0];$&&(t=$.data[0],s=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(a/t/o*60+s,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends A{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#c=120;#i=4;#e=4;#b=0;#a=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#i=4,this.#e=4,this.#b=0,this.#a=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#a/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#i)}get noteBeat(){let e=this.noteOverall%this.#i;return e<0&&(e+=this.#i),e}getTimeSig(){return[this.#i,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#a&&(this.#a=e);let n=this.#t?.step(e)||[],l=0,o=new Set,t=this,i=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&l++),y.data.type==8&&o.has($.part*128+$.data[0])&&l++;let w=t.device.runJson($);switch(w?.reply){case"meta":{i.push(w);break}}w?.reply&&delete w.reply}),i?.length>0&&this.dispatchEvent("meta",i);let a=this.device.getActive(),s=[],r=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let C=w[$]-t.#p[$],Y=u.length*$;if(C>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(C-C*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(C-C*t.smoothingDcy**L)}});let p=0;return a.forEach(function(y,$){y&&(s[$]=t.device.getVel($),p+=s[$].size)}),{extraPoly:l,curPoly:p,chInUse:a,chKeyPr:s,chPitch:r,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,l=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=l,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(i){(o.#h[i.meta]||console.debug).call(o,i.meta,i.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,i){o.#o?.length<1&&(o.#o=i)},this.#h[81]=function(t,i){let a=o.noteProgress,s=o.#n||.5;o.#c=6e7/i,o.#n=i/1e6,o.#b+=a*(s/o.#n)-a},this.#h[88]=function(t,i){let a=o.noteProgress,s=o.noteOverall,r=o.noteBar,h=o.noteBeat,d=o.#i,c=o.#e;o.#i=i[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,s=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[l%12]*this.noteHeight;if(o>0)switch(i.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,i.fillRect(a+1,s+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{i.clearRect(a+1+this.noteOutline,s+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let l=super.render(n),o=this,t=this.context,i=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let a=metrics.actualBoundingBoxLeft,s=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${l.eventCount.toString().padStart(3,"0")} ${(l.curPoly+l.extraPoly).toString().padStart(3,"0")}/512 ${l.tSig[0].toString().padStart(2," ")}/${l.tSig[1].toString().padEnd(2," ")} ${(l.noteBar+1).toString().padStart(3," ")}:${Math.floor(l.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(l.tempo).toString().padStart(3," ")}.${Math.floor(l.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(l.master.volume).toString().padStart(3," ")}.${Math.floor(l.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+a,s+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+a,s+o.fontPadding+o.lineHeight*2),l.chKeyPr.forEach((r,h)=>{r.forEach((d,c)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&r.part1?32:16)),c=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+a+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(c.name,o.fontPadding+a+(r>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+r%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(l.chContr[f+u[p]]/-127))})}}l.letter.expire<=i,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let r=0;r<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+r%(this.mode>1?32:16)),o.noteWidth*16*(l.strength[h]/255),o.lineHeight-1)}for(let r in o.eventBuffer)delete o.eventBuffer[r];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let l=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,i=t.part*128+t.note,a=this.eventBuffer[i];this.eventBuffer[i]=t,a?.velo>0&&t.velo==0&&this.eventQueue.push(a)})}},Dt=Fe;export{Dt as default}; diff --git a/dist/state.mjs b/dist/state.mjs new file mode 100644 index 00000000..3617ef3f --- /dev/null +++ b/dist/state.mjs @@ -0,0 +1,156 @@ +var X=function(e,n){let l=Math.min(e.length,n.length),f=e.slice(0,l),t=n.slice(0,l),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(o,c,h){i&&o!=n[c]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||l?a:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...l):this.pool[f].data(n.slice(this.pool[f].length),...l):this.default(n,...l)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),f=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,l)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](l)}};var ce=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},H=class{#t;strictMode=!1;get(e=0,n=0,l=0,f){let t=[e,n,l],a,r=Array.from(arguments);switch(f){case"xg":{e==32?r[2]+=4:e==33||e==35||e==36?r[2]+=5:e==79?r[0]=95:e==80?r[0]=96:e==81?r[0]=97:e==82?r[0]=98:e==83?r[0]=99:e==84&&(r[0]=100);break}case"gs":{e==0&&l<5?r[2]=0:e>125&&l<5&&l!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&l==0&&(r[2]=5);break}case"s90es":{l<8?r[2]+=17:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{l<8?r[2]+=28:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",o=!1,c=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",o=!0);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,o=!0;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(c=63),o=!0;break}case 97:{s="VL:",o=!0,c=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(c=63),o=!0;break}case 100:{s="AN",r[2]>63&&(c=63),o=!0;break}case 121:{s=`GM-${r[2]?"":"a"}`,o=!0;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${(o?l:e)-c}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${l}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<120?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(l||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,l){let f=this,t=[],a=0,r=0;e.split(` +`).forEach(function(i,s){let o=i.split(" "),c=[];s==0?o.forEach(function(h,b){t[ce.indexOf(h)]=b}):o.forEach(async function(h,b){b>2?(f.#t[c[t[1]]]=f.#t[c[t[1]]]||[],(!f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]?.length||n)&&(f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]=o[3],a++),r++):c.push(parseInt(o[b]))})}),n||console.debug(`Map "${l||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,f){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let l=!0;return n.forEach((f,t)=>{l=l&&e[t]==f}),l},V=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],o=0;for(;i;){let c=n.subarray(a);([()=>{v.decode(c.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(c.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(c.subarray(0,4)),b=V(c.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[o],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return l});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +ka,か +ki,き +ku,く +ke,け +ko,こ +ky,き! +kw,くl +tsu,つ +ts,つl +sa,さ +si,すぃ +su,す +se,せ +so,そ +shi,し +sh,し! +ta,た +ti,てぃ +tu,とぅ +te,て +to,と +tchy,ち! +tchi,ち +na,な +ni,に +nu,ぬ +ne,ね +no,の +ny,に! +nn,ん +ha,は +hi,ひ +hu,ほぅ +he,へ +ho,ほ +hy,ひ! +fa,ふぁ +fi,ふぃ +fu,ふ +fe,ふぇ +fo,ふぉ +ma,ま +mi,み +mu,む +me,め +mo,も +my,み! +mm, +ra,ら +ri,り +ru,る +re,れ +ro,ろ +ry,り! +wa,わ +wi,うぃ +we,うぇ +wo,を +nga,ガ +ngi,ギ +ngu,グ +nge,ゲ +ngo,ゴ +ngy,ギ! +ng, +ga,が +gi,ぎ +gu,ぐ +ge,げ +go,ご +gy,ぎ! +gw,ぐl +za,ざ +zi,ずぃ +zu,ず +ze,ぜ +zo,ぞ +ja,じゃ +ji,じ +ju,じゅ +je,じぇ +jo,じょ +jy,じ! +da,だ +di,でぃ +du,どぅ +de,で +do,ど +dy,で! +ba,ば +bi,び +bu,ぶ +be,べ +bo,ぼ +by,び! +va,ゔぁ +vi,ゔぃ +vu,ゔ +ve,ゔぇ +vo,ゔぉ +pa,ぱ +pi,ぴ +pu,ぷ +pe,ペ +po,ぽ +py,ぴ! +!ya,ゃ +!yu,ゅ +!ye,ぇ +!yo,ょ +ya,や +yu,ゆ +ye,いぇ +yo,よ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +la,ぁ +li,ぃ +lu,ぅ +le,ぇ +lo,ぉ +a,あ +i,い +u,う +e,え +o,お +*,っ +~, +^, +_,`.split(` +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,l){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(l)||l}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},m=function(e,n){let l=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,l,e),l++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],C=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};x.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],l=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(l,t)):f==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},le=function(e,n="",l="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${l}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#m=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#l=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#w=new Uint8Array(u.ch);#c=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#x=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#C=new Uint8Array(u.ch);#A=new Uint8Array(128);#E=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#k=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#S=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#k)>-1){if(l==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let l=e*128+n,f=this.#c.lastIndexOf(l);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[l],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#c[f]=0,this.#o[l]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let f=e*128+n,t=0;for(this.#w[e]&&this.#h.ano(e);this.#d[t]>0&&this.#c[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,l)=>{if(n==this.NOTE_HELD){let f=this.#c[l],t=f>>7;e==t&&(this.#d[l]=this.NOTE_IDLE,this.#c[l]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,l)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[l]=f;let t=this.#c[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#c[l],t=f>>7;e==t&&(this.#d[l]=this.NOTE_IDLE,this.#c[l]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#c.forEach((n,l,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,l=e.data[0];this.#h.nOff(n,l)},9:function(e){let n=e.channel;this.#l[n]=1;let l=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,l,f):this.#h.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#c.indexOf(l)>-1&&(this.#o[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#l[n]=1);break}e.data[1]&&(this.#l[n]=1);break}default:{this.#l[n]=1;break}}})();let l=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#w[n]=1,this.#h.ano(n);return}case 127:{this.#w[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[l+d[99]],t=this.#e[l+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[l+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[l+d[100]]];this.#e[l+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.#i[n]=+([32,40].indexOf(e.data[1])>-1)<<1;break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[l+101]==0&&I[this.#e[l+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[l+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#l[n]=1);break}default:this.#l[n]=1}this.#r[n]=e.data,this.#C[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#c.forEach(function(f){let t=f>>7;l==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:l,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let l=n[0],f=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(l,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#F.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#T.run(n,l,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,l)=>{this.#U.run(n,l,e)},67:(e,n,l)=>{this.#y.run(n,l,e)},68:(e,n,l)=>{this.#V.run(n,l,e)},71:(e,n,l)=>{this.#K.run(n,l,e)},126:(e,n,l)=>{this.#I.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#X.run(n,l,e)}};#I;#X;#y;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#l.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,l=this.#e.subarray(n,n+u.cc);return l[d[0]]=l[d[0]]||this.#H,l[d[32]]=l[d[32]]||this.#k,l}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&(this.#e[e*u.cc+d[0]]=C[l])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,l=this;return l.#c.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&l.#o[f]>0&&n.set(r,{v:l.#o[f],s:l.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#m}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#c.forEach(function(n){let l=Math.floor(n/128);e.#o[n]>e.#x[l]&&(e.#x[l]=e.#o[n])}),this.#x}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,f){e[f]=Math.floor(l*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,l,f){let t=e||this.#H,a=n,r=l||this.#k;x[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(x[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),o=s*u.cmt,c="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(c+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${c}`,!0),i.name=c,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],x[this.#t]);if(this.#C[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#E.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,f=3200){let t=this,a;t.#M=" ".repeat(l),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let l=this.#R[n];if(l){if(U.indexOf(l)>=0)return this.#e[e*u.cc+d[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#k=0,this.#O=0,this.#l.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#o.fill(0),this.#c.fill(0),this.#x.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#m=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#S=!0,this.#f.forEach(function(n,l,f){f[l]=l}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=C[0],this.#e[u.cc*25]=C[0],this.#e[u.cc*41]=C[0],this.#e[u.cc*57]=C[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#E.fill(0),this.#C.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=l,this.#p=0,this.#H=se[0][l],this.#k=se[1][l];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==C[f]&&(this.#e[a*u.cc]=C[l]);switch(this.initOnReset,l){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#l[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(l){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(f=>{e.channel=f,l=!0,this.#j[e.type].call(this,e)}),l||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new S,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +062 000 000 +122 000 000 +122 001 000 +122 002 000 +122 003 000 +122 004 000 +122 005 000 +122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${le(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${le(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new S("universal non-realtime"),this.#X=new S("universal realtime"),this.#y=new S("Yamaha"),this.#T=new S("Roland"),this.#U=new S("Korg"),this.#F=new S("Kawai"),this.#K=new S("Akai"),this.#V=new S("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#y.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#y.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let o=s+t[0];([r,r,r,r,c=>{this.#b=c*129/16383*100},c=>{},c=>{}][o]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,o=i-1&3,c=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${c}${a-64}dB`)},()=>{console.debug(`${c}${a} (raw)`)},()=>{console.debug(`${c}${a/10}`)},()=>{console.debug(`${c}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([c=>{e.setEffectTypeRaw(3+a,!1,c),console.info(`${i}main type: ${R[c]}`)},c=>{e.setEffectTypeRaw(3+a,!0,c),console.debug(`${i}sub type: ${c+1}`)}][r+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#m=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,o=`XG CH${r+1} `,c=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(c):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#w[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(c):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(c):i<116?console.debug(`${o}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(c):i<120?console.debug(`${o}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(c)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((o,c)=>{let h=c+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0];t.subarray(1).forEach((i,s)=>{let o=r+s;o==8?console.debug(`MU1000 set LCD contrast to ${i}.`):o>9&&o<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#S=!!i,console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][o-10]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#S?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#S&&e.dispatchEvent("channelmin",s),e.#S&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#S){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let o="",c=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):c+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(o)}`,e.#Y=s+Math.ceil(c/2)+e.#Q,k()&&console.debug(`${i}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#y.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#y.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((c,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(c>>6-$&1)<<7;else o[s+7*b+p]=c})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,c)=>{let h=c>>3,b=c&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(o>>6-p&1)<<7;else s[i+7*h+b]=o})}}).add([89,3],(t,a,r)=>{}),this.#y.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{let h=c+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*i,c=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#w[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${c} AC1 at cc${h}`)},()=>{console.debug(`${c} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#m=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let o=Math.floor(s/16),c=s%16,h=(c*3+o)*7,b=7,p=0;for(h-=c*5,o==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#k=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{let h=c+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,c)}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let o=ee(e.#g.subarray(10,12),s,i);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(o,c){console.warn(`Unknown GS EFX address: ${c}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#m=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#m=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,a,r){let i=t[0],s=u.cc*a,o=u.rpn*a,c=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#w[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${c}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${c}CC 1: cc${h}`)},()=>{console.debug(`${c}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+o]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+o-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{l(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{l(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{l(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{l(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{l(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{l(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{l(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{l(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{l(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{l(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{l(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{l(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{l(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{l(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{l(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{l(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),o=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[o+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=i},()=>{i<31&&(e.#e[o+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(i)},()=>{e.#e[o+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` +${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),m(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),m(t,function(r,i,s,o){if(i<192){let c=e.chRedir(Math.floor(i/12),a,!0),h=c*u.cc;switch(i%12){case 0:{r<128?(e.setChType(c,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[c]=r):(e.setChType(c,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[c]=ne[r-128]),r>0&&(e.#l[c]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[c*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[c*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[c]=r,(b!=c||p)&&(console.info(`X5D Part CH${c+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let c=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((o,c)=>{let h=c+s;e.#A[h+(i-1)*16]=o,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#C[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=o+40},()=>{e.#s[i*u.rpn+1]=o+14},()=>{e.#s[i*u.rpn]=o},!1,()=>{e.#e[u.cc*i+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=o},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#C[i]=1),t.subarray(2).forEach((o,c)=>{let h=c+s;h<14&&(e.#E[(i-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,o)=>{let c=o+i;e.#A[c]=s;let h=e.chRedir(1+c>>4,a,!0),b=c&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#C[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let c=o+i,h=e.chRedir(Math.floor(c/246+1),a,!0),b=c%246;b<14&&(e.#E[(h-1)*u.cmt+b]=s),b<10&&(e.#C[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let c=i+o,h=Math.floor(c/8),b=c&7,p=h*8;e.#q[c]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME +000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,o)=>{let c=i+o;c>1)*u.cmt+c]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,o=function(c,h){e.#f[h-12]=c,s=!0};t.subarray(2).forEach((c,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,o,o,o,o,o,o,o,o,o,()=>{e.#b=c}][b]||(()=>{}))(c,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{[s,s,s,s,()=>{e.#b=o*129/16383*100},()=>o-64,()=>o-64,()=>{},()=>{},()=>{}][r+c]()}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],o=`NS5R CH${r+1} `;t.subarray(2).forEach((c,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=c||121},()=>{e.#e[i+d[32]]=c},()=>{e.#r[r]=c}][b]():b<8||(b<14?[()=>{let p=e.chRedir(c,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#w[r]=+!c},()=>{e.setChType(r,c,g.ns5r),console.debug(`${o}type: ${O[c]}`)},()=>{e.#s[u.rpn*r+3]=c},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=c},()=>{e.#e[i+d[11]]=c},()=>{},()=>{},()=>{e.#e[i+d[10]]=c||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=c},()=>{e.#e[i+d[91]]=c},()=>{e.#e[i+d[76]]=c},()=>{e.#e[i+d[77]]=c},()=>{e.#e[i+d[78]]=c},()=>{e.#e[i+d[74]]=c},()=>{e.#e[i+d[71]]=c},()=>{e.#e[i+d[73]]=c},()=>{e.#e[i+d[75]]=c},()=>{e.#e[i+d[72]]=c}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=c},()=>{e.#e[i+d[65]]=c}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#m=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),o=4;s.forEach(function(c,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";m(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,m(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),o=s*u.cc;switch(i%92){case 0:{e.#e[o+d[0]]=r||121;break}case 1:{e.#e[o+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#l[s]=1);break}case 3:{let c=e.chRedir(r,a,!0);e.#f[s]=c,s!=c&&(console.info(`NS5R CH${s+1} receives from CH${c+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[o+d[7]]=r;break}case 11:{e.#e[o+d[11]]=r;break}case 14:{e.#e[o+d[10]]=r||128;break}case 19:{e.#e[o+d[93]]=r;break}case 20:{e.#e[o+d[91]]=r;break}case 84:{e.#e[o+d[65]]=r;break}case 85:{e.#e[o+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{o=h&127;break}case p==13:{c+=` +${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(c)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{c+=` +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(c)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);m(t,(r,i,s)=>{if(i<720)for(let o=0;o<8;o++)a[i*8+o]=r>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#k=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,o=u.rpn*i,c=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{c<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=c):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=c-128)},()=>{let b=e.chRedir(c,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=c},()=>{e.#l[i]=c},()=>{e.#e[s+d[10]]=c},()=>{e.#s[o+3]=c+40},()=>{e.#s[o+1]=c>>1,e.#s[o+2]=c&1},()=>{e.#e[s+d[91]]=c?127:0},()=>{},()=>{e.#e[s+d[74]]=c},()=>{e.#e[s+d[73]]=c},()=>{e.#e[s+d[72]]=c}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=i-160)},()=>{let c=e.chRedir(i,a,!0);e.#f[s]=c,s!=c&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${c+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,c=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#l[s]=i},()=>{e.#e[o+d[7]]=i},()=>{e.#e[o+d[10]]=i},()=>{e.#e[o+d[91]]=i?127:0},()=>{e.#s[c+3]=i+40},()=>{e.#s[c+1]=i},()=>{e.#s[c]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(i,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#y.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#y.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,c)=>{([()=>{e.#b=o*12900/16383}][s+c]||(()=>{console.info(`Unrecognized ${i}ID: ${s+c}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(o,c,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(o,c,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,o=t[1],c=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(c,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#l[i]=1),e.#e[s+d[32]]=h,e.#i[i]=+([32,40].indexOf(h)>-1)<<1},()=>{h&&(e.#l[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#w[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+o&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; diff --git a/dist/state_skim.mjs b/dist/state_skim.mjs new file mode 100644 index 00000000..51762f5b --- /dev/null +++ b/dist/state_skim.mjs @@ -0,0 +1,151 @@ +var U=function(e,t){let s=Math.min(e.length,t.length),i=e.slice(0,s),r=t.slice(0,s),n=0,a=0;for(;a0){let i=this.pool.length,r=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(n==i)n-=r;else{let c=U(t,this.pool[n]);switch(c){case 0:{a=0;break}case 1:{n+r<=i&&(n+=r);break}case-1:{n!=0&&(n-=r);break}default:console.warn(`Unexpected result ${c}.`)}}r=r>>1,a--}let l=!0;if(n>=this.pool.length)l=!1;else{let c=this;this.pool[n].forEach(function(u,f,b){l&&u!=t[f]&&(l=!1)}),!l&&U(t,this.pool[n])>0&&n++}return l||s?n:-1}else return s?0:-1},this.add=function(t,s){return t.data=s,this.pool.splice(this.point(t,!0),0,t),this},this.default=function(t){console.warn(`No match in "${this.name||"(unknown)"}" for "${t}". Default action not defined.`)},this.get=function(t){let s=this.point(t);if(s>-1)return this.pool[s].data;this.default(t)},this.run=function(t,...s){let i=this.point(t);i>-1?t.subarray?this.pool[i].data(t.subarray(this.pool[i].length),...s):this.pool[i].data(t.slice(this.pool[i].length),...s):this.default(t,...s)}};var T=class{#t={};addEventListener(e,t){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(t)}removeEventListener(e,t){if(this.#t[e]){let s=this.#t[e].indexOf(t);s>-1&&this.#t[e].splice(s,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,t){let s=new Event(e),i=this;s.data=t,this.#t[e]?.length>0&&this.#t[e].forEach(function(r){try{r?.call(i,s)}catch(n){console.error(n)}}),this[`on${e}`]&&this[`on${e}`](s)}};var P=class{#t={};context;set(e,t){this.#t[e]=t}has(e){return!!this.#t[e]}async read(e,t){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,t)}};var K=function(e,t){let s=!0;return t.forEach((i,r)=>{s=s&&e[r]==i}),s},N=function(e){let t=0;return e.forEach(s=>{t*=256,t+=s}),t},M=new TextDecoder,G=new P;G.set("s7e",async function(e){let t=new Uint8Array(await e.slice(0,65536).arrayBuffer()),s="MSB LSB PRG NME",i=[0,0,0,0],r=32,n=0,a=0,l=!0,c=[],u=0;for(;l;){let f=t.subarray(n);([()=>{M.decode(f.subarray(0,4))=="YSFC"?(n+=80,a=1):n++},()=>{if(K(f.subarray(0,4),i))c.forEach((b,g,d)=>{let p=N(t.subarray(b.start+4,b.start+8));b.length=p}),a=2;else{let b=M.decode(f.subarray(0,4)),g=N(f.subarray(4,8));c.push({type:b,start:g}),n+=8}},()=>{let b=c[u],g=t.subarray(b.start,b.start+b.length),d=32;switch(b.type){case"ENVC":{let p=r;for(;p=c.length&&(a=3,l=!1)}][a]||(()=>{l=!1}))()}return s});var F=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]);var X=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),V={};`hi*, +ka,か +ki,き +ku,く +ke,け +ko,こ +ky,き! +kw,くl +tsu,つ +ts,つl +sa,さ +si,すぃ +su,す +se,せ +so,そ +shi,し +sh,し! +ta,た +ti,てぃ +tu,とぅ +te,て +to,と +tchy,ち! +tchi,ち +na,な +ni,に +nu,ぬ +ne,ね +no,の +ny,に! +nn,ん +ha,は +hi,ひ +hu,ほぅ +he,へ +ho,ほ +hy,ひ! +fa,ふぁ +fi,ふぃ +fu,ふ +fe,ふぇ +fo,ふぉ +ma,ま +mi,み +mu,む +me,め +mo,も +my,み! +mm, +ra,ら +ri,り +ru,る +re,れ +ro,ろ +ry,り! +wa,わ +wi,うぃ +we,うぇ +wo,を +nga,ガ +ngi,ギ +ngu,グ +nge,ゲ +ngo,ゴ +ngy,ギ! +ng, +ga,が +gi,ぎ +gu,ぐ +ge,げ +go,ご +gy,ぎ! +gw,ぐl +za,ざ +zi,ずぃ +zu,ず +ze,ぜ +zo,ぞ +ja,じゃ +ji,じ +ju,じゅ +je,じぇ +jo,じょ +jy,じ! +da,だ +di,でぃ +du,どぅ +de,で +do,ど +dy,で! +ba,ば +bi,び +bu,ぶ +be,べ +bo,ぼ +by,び! +va,ゔぁ +vi,ゔぃ +vu,ゔ +ve,ゔぇ +vo,ゔぉ +pa,ぱ +pi,ぴ +pu,ぷ +pe,ペ +po,ぽ +py,ぴ! +!ya,ゃ +!yu,ゅ +!ye,ぇ +!yo,ょ +ya,や +yu,ゆ +ye,いぇ +yo,よ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +la,ぁ +li,ぃ +lu,ぅ +le,ぇ +lo,ぉ +a,あ +i,い +u,う +e,え +o,お +*,っ +~, +^, +_,`.split(` +`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{e==32?a[2]+=4:e==33||e==35||e==36?a[2]+=5:e==79?a[0]=95:e==80?a[0]=96:e==81?a[0]=97:e==82?a[0]=98:e==83?a[0]=99:e==84&&(a[0]=100);break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=!1,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=!0);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=!0;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=!0;break}case 97:{c="VL:",u=!0,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=!0;break}case 100:{c="AN",a[2]>63&&(f=63),u=!0;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=!0;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${(u?s:e)-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<120?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` +`).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],B=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],I={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},H=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#I=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#H=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],H[i][0]),H[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#G.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#B.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#G;#B;#J;buildRchTree(){let e=[];this.#I.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG +0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#H.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#I.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#H.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=B[0][s],this.#u=B[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${I[e.type]?I[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +062 000 000 +122 000 000 +122 001 000 +122 002 000 +122 003 000 +122 004 000 +122 005 000 +122 006 000 `),this.#c[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#i=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#i=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#i=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#i=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#i=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let s=t.slice(2).split(":");switch(s[0]){case"hd":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][r]}: ${i}`)});break}case"ln":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][r]}: ${i}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#i?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#c[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#c[3]=function(t,s){s<1&&this.#w<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#c[4]=function(t,s){this.#s.unshift(`${_(this.#w,""," ")}Instrmnt: ${t}`)},this.#c[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#c[6]=function(t){this.#s.unshift(`${_(this.#w,""," ")}C.Marker: ${t}`)},this.#c[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#c[32]=function(t){this.#w=t[0]+1},this.#c[33]=function(t,s){console.debug(`Track ${s} requests to get assigned to output ${t}.`),e.#S[s]=t+1},this.#c[81]=function(t,s){e.#_=t/1e3},this.#c[127]=function(t,s){e.#R.run(t,s)},this.#R.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#R.add([67,0,1],function(t,s){e.#S[s]=t[0]+1}),this.#P=new w,this.#N=new w,this.#v=new w,this.#M=new w,this.#O=new w,this.#G=new w,this.#B=new w,this.#P.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#i=e.#i||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#N.add([4,1],t=>{e.#T=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#v.add([76,0,0],t=>{switch(t[0]){case 126:{e.switchMode("xg",!0),e.#i=!1,console.info("MIDI reset: XG");break}}}).add([76,6,0],t=>{let s=t[0];s<64?(e.#a=" ".repeat(s),e.#b=Date.now()+3200,t.subarray(1).forEach(function(i){e.#a+=String.fromCharCode(i)}),e.#a=e.#a.padEnd(32," ")):e.#b=Date.now()}).add([76,7,0],t=>{let s=t[0];e.#p=Date.now()+3200,e.#h.fill(0);let i=t.subarray(1);for(let r=0;r>6-f&1,f++})}),this.#v.add([43,7,0],(t,s,i)=>{e.#a=" ".repeat(offset),e.#b=Date.now()+3200,t.subarray(1).forEach(function(r){e.#a+=String.fromCharCode(r)}),e.#a=e.#a.padEnd(32," ")}).add([43,7,1],(t,s,i)=>{e.#p=Date.now()+3200,e.#h.fill(0),t.forEach(function(r,n){let a=Math.floor(n/16),l=n%16,c=(l*3+a)*7,u=7,f=0;for(c-=l*5,a==2&&(u=2);f>6-f&1,f++})}),this.#M.add([66,18,0,0,127],(t,s,i)=>{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#u=3,e.#i=!1,e.#k.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,s,i)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#i=!1,e.#k.fill(0),console.info("MIDI reset: GS");break}}}).add([69,18,16],t=>{switch(t[0]){case 0:{e.#b=Date.now()+3200;let s=t[1];e.#a=" ".repeat(s),t.subarray(2).forEach(function(i){i<128&&(e.#a+=String.fromCharCode(i))});break}case 32:{e.#p=Date.now()+3200,t[1]==0&&(e.#m=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p=Date.now()+3200,e.#g[t[0]-1]?.length||(e.#g[t[0]-1]=new Uint8Array(256));let s=e.#g[t[0]-1],i=t[1];s.fill(0);let r=t.subarray(2);for(let n=0;n>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}}),this.#M.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#i=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,32],t=>{e.switchMode("mt32");let s=t[1],i=" ".repeat(s);t.subarray(2).forEach(r=>{r>31&&(i+=String.fromCharCode(r))}),e.#a=i.padStart(20," "),e.#b=Date.now()+3200}).add([22,18,82],(t,s)=>{let i=e.chRedir(0,s,!0);for(let r=0;r<16;r++)e.#r.ano(i+r),r&&r<10&&(e.#y[i+r]=mt32DefProg[r-1]);console.info("MT-32 alt reset complete.")}),this.#O.add([66,0],(t,s)=>{e.switchMode("ns5r",!0),e.#i=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,s)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#i=!1}).add([66,18,0,0],(t,s)=>{switch(t[0]){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#i=!1;break}}}).add([66,18,8,0],(t,s)=>{}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let s=new Uint8Array(5760);korgFilter(t,(i,r,n)=>{if(r<720)for(let a=0;a<8;a++)s[r*8+a]=i>>7-a&1}),e.dispatchEvent("screen",{type:"ns5r",data:s})}).add([76],(t,s,i)=>{e.#O.run([66,...t],s,i)}),this.#G.add([16,0,8,0],(t,s,i)=>{let r=(t[2]<<4)+t[3],n="K11 ";([()=>{e.switchMode("k11",!0),e.#i=!1,e.#u=r?4:0,console.info("MIDI reset: GMega/K11")}][t[0]]||(()=>{}))()}),this.#B.add([66,93,64],(t,s,i)=>{let r=t[2];switch(t[0]){case 0:{switch(t[1]){case 127:{e.switchMode("sg",!0);break}}break}}})}};export{Ve as OctaviaDevice,o as allocated,h as ccToPos}; diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs new file mode 100644 index 00000000..cc5d32dc --- /dev/null +++ b/dist/xp_basic.mjs @@ -0,0 +1,156 @@ +var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(m=h[o])!=null&&m.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:m}),d++,d>4294967295&&(d=0)}else b.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var m=b.shift();s.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=f&&s.dispatchEvent(u("message",m.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(m.c,"."))};var v={};this.dispatchEvent=function(m){var x,A;if(Object.defineProperty(m,"target",{value:s}),Object.defineProperty(m,"currentTarget",{value:s}),(x=v[m.type])!=null&&x.length)for(var V=v[m.type],ae=0;ae-1&&v[m].splice(ae,1)}!((V=v[m])!=null&&V.length)&&v[m].constructor&&delete v[m]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||m>127&&m<160)throw new RangeError(`Invalid code point: ${m}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof Et<"u")Et.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){E(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){E(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{u==32?a[2]+=4:u==33||u==35||u==36?a[2]+=5:u==79?a[0]=95:u==80?a[0]=96:u==81?a[0]=97:u==82?a[0]=98:u==83?a[0]=99:u==84&&(a[0]=100);break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=!1,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=!0);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=!0;break}case 97:{i="VL:",s=!0,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=!0;break}case 100:{i="AN",a[2]>63&&(f=63),s=!0;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(s?n:u)-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<120?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` +`).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);R();R();var Ge,Ot,Pt=(Ot=class{constructor(){E(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Dt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Pt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Dt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Dt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;y=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});R();var We=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ye=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],gr=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],_e=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],It=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],At=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},Ut=function(u){return u>105?gr[u-106]:u>100?u*1.1-100:u/10},Lt=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),ut={};`hi*, +ka,か +ki,き +ku,く +ke,け +ko,こ +ky,き! +kw,くl +tsu,つ +ts,つl +sa,さ +si,すぃ +su,す +se,せ +so,そ +shi,し +sh,し! +ta,た +ti,てぃ +tu,とぅ +te,て +to,と +tchy,ち! +tchi,ち +na,な +ni,に +nu,ぬ +ne,ね +no,の +ny,に! +nn,ん +ha,は +hi,ひ +hu,ほぅ +he,へ +ho,ほ +hy,ひ! +fa,ふぁ +fi,ふぃ +fu,ふ +fe,ふぇ +fo,ふぉ +ma,ま +mi,み +mu,む +me,め +mo,も +my,み! +mm, +ra,ら +ri,り +ru,る +re,れ +ro,ろ +ry,り! +wa,わ +wi,うぃ +we,うぇ +wo,を +nga,ガ +ngi,ギ +ngu,グ +nge,ゲ +ngo,ゴ +ngy,ギ! +ng, +ga,が +gi,ぎ +gu,ぐ +ge,げ +go,ご +gy,ぎ! +gw,ぐl +za,ざ +zi,ずぃ +zu,ず +ze,ぜ +zo,ぞ +ja,じゃ +ji,じ +ju,じゅ +je,じぇ +jo,じょ +jy,じ! +da,だ +di,でぃ +du,どぅ +de,で +do,ど +dy,で! +ba,ば +bi,び +bu,ぶ +be,べ +bo,ぼ +by,び! +va,ゔぁ +vi,ゔぃ +vu,ゔ +ve,ゔぇ +vo,ゔぉ +pa,ぱ +pi,ぴ +pu,ぷ +pe,ペ +po,ぽ +py,ぴ! +!ya,ゃ +!yu,ゅ +!ye,ぇ +!yo,ょ +ya,や +yu,ゆ +ye,いぇ +yo,よ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +la,ぁ +li,ぃ +lu,ぅ +le,ぇ +lo,ぉ +a,あ +i,い +u,う +e,え +o,お +*,っ +~, +^, +_,`.split(` +`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ie=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Er=[12,13,16,17,18,19],mr=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},P,j,ne,fe,W,de,Yt,U,H,O,p,ue,D,L,J,B,G,we,oe,Ce,S,Fe,et,ce,Ee,ee,Ve,me,Q,ve,te,X,pe,Xe,ze,le,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,Z,he,ge,Pe,De,Ie,Wt,oa=(Wt=class extends it{constructor(){super();E(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,P,0);E(this,j,0);E(this,ne,0);E(this,fe,new Array(11));E(this,U,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,O,new Uint8Array($.ch));E(this,p,new Uint8Array($.ch*$.cc));E(this,ue,new Uint8Array($.ace));E(this,D,new Uint8Array($.ch));E(this,L,new Uint8Array($.ch*$.nn));E(this,J,new Uint8Array($.ch));E(this,B,new Uint16Array($.pl));E(this,G,new Uint8Array($.pl));E(this,we,new Int16Array($.ch));E(this,oe,new Uint8Array($.ch));E(this,Ce,0);E(this,S,new Uint8Array($.ch*$.rpn));E(this,Fe,new Int8Array($.ch*qt.length));E(this,et,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ce,new Uint8Array($.ch));E(this,Ee,new Uint8Array(128));E(this,ee,new Uint8Array($.cmt*8));E(this,Ve,new Uint8Array(1024));E(this,me,new Uint8Array($.cmt*64));E(this,Q,new Uint8Array($.efx*3));E(this,ve,0);E(this,te,0);E(this,X,100);E(this,pe,0);E(this,Xe,500);E(this,ze,0);E(this,le,"");E(this,ke,0);E(this,Ke,0);E(this,re,!0);E(this,I,!1);E(this,tt,void 0);E(this,$t,new Uint8Array(2));E(this,T,[]);E(this,be,new Uint8Array($.ch));E(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,_,[]);E(this,Te,void 0);E(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,J)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,oe)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});E(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,P)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,J)[n]=1,t(this,N).ano(n);return}case 127:{t(this,J)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Er.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(Y()&&console.debug(`${$e[t(this,P)]}, CH${n+1}: ${e.data[1]}`),t(this,P)==0)e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,P)==M.gs)e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,P)==M.gm)e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,P)==M.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let c=0;for(let r=0;r<16;r++){let a=t(this,p)[$.cc*r];(a==56||a==62)&&c++}c>14&&this.switchMode("ag10",!0)}}switch(t(this,P)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,P))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,P)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=mr.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,P)){case M.s90es:case M.motif:{t(this,O)[n]=+([32,40].indexOf(e.data[1])>-1)<<1;break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,P)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,D)[n]=e.data,t(this,ce)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});E(this,ot,{64:(e,n,h)=>{t(this,Pe).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,he).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,he).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,Z).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,De).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});E(this,Re,void 0);E(this,Oe,void 0);E(this,Z,void 0);E(this,he,void 0);E(this,ge,void 0);E(this,Pe,void 0);E(this,De,void 0);E(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new se),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +062 000 000 +122 000 000 +122 001 000 +122 002 000 +122 003 000 +122 004 000 +122 005 000 +122 006 000 `),t(this,_)[1]=function(r){switch(r.slice(0,2)){case"@I":{w(this,I,!0),t(this,T).unshift(`Kar.Info: ${r.slice(2)}`);break}case"@K":{w(this,I,!0),t(this,T).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${r.slice(2)}`);break}case"@L":{w(this,I,!0),t(this,T).unshift(`Language: ${r.slice(2)}`);break}case"@T":{w(this,I,!0),t(this,T).unshift(`Ka.Title: ${r.slice(2)}`);break}case"@V":{w(this,I,!0),t(this,T).unshift(`Kara.Ver: ${r.slice(2)}`);break}case"XF":{let a=r.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,T).unshift(`XGF_Data: ${r}`)}break}default:t(this,I)?r[0]=="\\"?t(this,T).unshift(`@ ${r.slice(1)}`):r[0]=="/"?t(this,T).unshift(r.slice(1)):t(this,T)[0]+=r:(t(this,T)[0]=r,t(this,T).unshift(""))}},t(this,_)[2]=function(r){t(this,T).unshift(`Copyrite: ${r}`)},t(this,_)[3]=function(r,a){a<1&&t(this,pe)<1&&t(this,T).unshift(`TrkTitle: ${r}`)},t(this,_)[4]=function(r,a){t(this,T).unshift(`${Qt(t(this,pe),""," ")}Instrmnt: ${r}`)},t(this,_)[5]=function(r){r.trim()==""?t(this,T).unshift(""):t(this,T)[0]+=`${r}`},t(this,_)[6]=function(r){t(this,T).unshift(`${Qt(t(this,pe),""," ")}C.Marker: ${r}`)},t(this,_)[7]=function(r){t(this,T).unshift(`CuePoint: ${r}`)},t(this,_)[32]=function(r){w(this,pe,r[0]+1)},t(this,_)[33]=function(r,a){console.debug(`Track ${a} requests to get assigned to output ${r}.`),t(e,Se)[a]=r+1},t(this,_)[81]=function(r,a){w(e,Xe,r/1e3)},t(this,_)[127]=function(r,a){t(e,Te).run(r,a)},t(this,Te).default=function(r){console.warn(`Unrecognized sequencer-specific byte sequence: ${r}`)},t(this,Te).add([67,0,1],function(r,a){t(e,Se)[a]=r[0]+1}),w(this,Re,new se("universal non-realtime")),w(this,Oe,new se("universal realtime")),w(this,Z,new se("Yamaha")),w(this,he,new se("Roland")),w(this,ge,new se("Korg")),w(this,Pe,new se("Kawai")),w(this,De,new se("Akai")),w(this,Ie,new se("Casio"));let n=function(r){console.info(`Unrecognized SysEx in "${this.name}" set.`,r)};t(this,Re).default=n,t(this,Oe).default=n,t(this,Z).default=n,t(this,he).default=n,t(this,ge).default=n,t(this,Pe).default=n,t(this,De).default=n,t(this,Ie).default=n,t(this,Re).add([9],r=>{e.switchMode(["gm","?","g2"][r[0]-1],!0),w(e,I,t(e,I)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][r[0]-1]}`),r[0]==2&&e.init()}),t(this,Oe).add([4,1],r=>{w(e,X,((r[1]<<7)+r[0])/16383*100)}).add([4,3],r=>((r[1]<<7)+r[0]-8192)/8192).add([4,4],r=>r[1]-64),t(this,Z).add([76,0,0],r=>{switch(r[0]){case 125:{console.info(`XG drum setup reset: ${r}`);break}case 126:{e.switchMode("xg",!0),w(e,I,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,s)=>{a[s]=i};if(r.subarray(1).forEach((i,s)=>{let f=s+r[0];([o,o,o,o,l=>{w(this,X,l*129/16383*100)},l=>{},l=>{}][f]||(()=>{}))(i,s)}),r[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],r=>{let a="XG ";r[0]<32?(a+="reverb ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${At(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][r[0]+i]||function(){console.warn(`Unknown XG reverb address: ${r[0]}.`)})(o)})):r[0]<64?(a+="chorus ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${It[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Ut(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${_e[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${_e[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][r[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${r[0]}.`)})(o)})):r[0]<86?(a+="variation ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][r[0]-64+i]||function(){})(o)})):r[0]<97?(a+="variation ",r.subarray(1).forEach((o,i)=>{[s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},s=>{console.debug(`${a}to chorus: ${q(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][r[0]-86+i](o)})):r[0]>111&&r[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${r[0]}`)}).add([76,2,64],r=>{r.subarray(1).forEach((a,o)=>{let i=o+r[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,f=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][f]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][f]()}})}).add([76,3],r=>{let a=r[0],o=r[1],i=`XG Insertion ${r[0]+1} `;r.subarray(2).forEach((s,f)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${We[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][o+f]||function(){})(s)})}).add([76,6,0],r=>{let a=r[0];a<64?e.setLetterDisplay(r.subarray(1),"XG letter display",a):w(e,ke,Date.now())}).add([76,7,0],r=>{let a=r[0];w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0);let o=r.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=$.cc*o,f=`XG CH${o+1} `,l=`Unknown XG part address ${i}.`;r.subarray(2).forEach((d,b)=>{i<1?console.debug(l):i<41?([()=>{t(e,p)[s+g[0]]=d},()=>{t(e,p)[s+g[32]]=d},()=>{t(e,D)[o]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,J)[o]=+!d},()=>{},()=>{e.setChType(o,d,M.xg),console.debug(`${f}type: ${Ye[d]||d}`)},()=>{t(e,S)[$.rpn*o+3]=d},!1,!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{t(e,p)[s+g[128]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[76]]=d},()=>{t(e,p)[s+g[77]]=d},()=>{t(e,p)[s+g[78]]=d},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},()=>{t(e,p)[s+g[73]]=d},()=>{t(e,p)[s+g[75]]=d},()=>{t(e,p)[s+g[72]]=d}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(t(e,p)[s+g[[5,65][i&1]]]=d):i<114?console.debug(l):i<116?console.debug(`${f}EQ ${["bass","treble"][i&1]} gain: ${d-64}dB`):i<118?console.debug(l):i<120?console.debug(`${f}EQ ${["bass","treble"][i&1]} freq: ${d}`):console.debug(l)})}).add([76,9],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=`PLG-150VL CH${o+1} `;r.subarray(2).forEach((f,l)=>{let d=l+i;switch(d){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][f]}`);break}case 0:case 27:case 28:break;default:if(d<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][d-3>>1];d&1?d<23?(console.debug(`${s}${b} control source: ${Nt(f)}`),f&&f<96&&e.allocateAce(f)):console.debug(`${s}${b} scale break point: ${f}`):console.debug(`${s}${b} depth: ${f-64}`)}}})}).add([76,10],r=>{}).add([76,16],r=>{}).add([76,17,0,0],r=>{}).add([76,112],r=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][r[0]]} for CH${r[2]+1}.`)}).add([73,0,0],(r,a)=>{let o=r[0];r.subarray(1).forEach((i,s)=>{let f=o+s;f==8?console.debug(`MU1000 set LCD contrast to ${i}.`):f>9&&f<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,re,!!i),console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][f-10]()})}).add([73,10,0],(r,a)=>{let o=r[0],i=`MU1000 RS${t(e,re)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let s=e.chRedir(0,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(r[1]<<5,a,!0);t(e,re)&&e.dispatchEvent("channelmin",s),t(e,re)&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,re)){let s=e.chRedir(o-16+(t(e,Ke)<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(o<36){let s=e.chRedir(o-32<<4,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),w(e,Ke,o-32)),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=`PLG-100SG CH${o+1} `,s=Date.now();if(r[1]==0){let f="",l=0;r.subarray(2).forEach((d,b)=>{b%2==0?f+=Lt[d]||d.toString().padStart("0"):l+=d*13}),s>=t(e,ze)&&t(e,T).unshift("SG Lyric: "),t(e,T)[0]+=`${Bt(f)}`,w(e,ze,s+Math.ceil(l/2)+t(e,Xe)),Y()&&console.debug(`${i}vocals: ${f}`)}else console.warn(`Unknown PLG-100SG data: ${r}`)}),t(this,Z).add([76,48],r=>{}).add([76,49],r=>{}).add([76,50],r=>{}).add([76,51],r=>{}),t(this,Z).add([89,0],(r,a,o)=>{if(e.eprom){let i=r[0],s=(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let f=e.eprom.data;r.subarray(4).forEach((l,d)=>{let b=d>>3,y=d&7;if(y==7)for(let k=0;k<7;k++)f[s+7*b+k]+=(l>>6-k&1)<<7;else f[s+7*b+y]=l})}}).add([89,1],(r,a,o)=>{let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3];Y()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(r,a,o)=>{if(e.eprom){let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;r.subarray(4).forEach((f,l)=>{let d=l>>3,b=l&7;if(b==7)for(let y=0;y<7;y++)s[i+7*d+y]+=(f>>6-y&1)<<7;else s[i+7*d+b]=f})}}).add([89,3],(r,a,o)=>{}),t(this,Z).add([39,48],(r,a,o)=>{}).add([43,0,0],(r,a,o)=>{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,()=>{w(this,X,f*129/16383*100)},()=>f-64,()=>f||128,()=>f,()=>f,()=>{console.debug(`TG300 variation on cc${f}.`)}][d](f,d)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}).add([43,1,0],(r,a,o)=>{}).add([43,2],(r,a,o)=>{let i=e.chRedir(r[0],a,!0),s=r[1],f=$.cc*i,l=`TG300 CH${i+1} `;r.subarray(2).forEach((d,b)=>{b<5?([()=>{},()=>{t(e,p)[f+g[0]]=d},()=>{t(e,p)[f+g[32]]=d},()=>{t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][b+s]||(()=>{}))(d,b+s):b<21||(b<47?([()=>{t(e,J)[i]=+!d},()=>{},()=>{},()=>{t(e,S)[$.rpn*i+3]=d},()=>{},()=>{t(e,p)[f+g[7]]=d},!1,!1,()=>{t(e,p)[f+g[10]]=d||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${d}`)},()=>{console.debug(`${l} AC2 at cc${d}`)},()=>{t(e,p)[f+g[128]]=d},()=>{t(e,p)[f+g[93]]=d},()=>{t(e,p)[f+g[91]]=d},()=>{t(e,p)[f+g[94]]=d},()=>{t(e,p)[f+g[76]]=d},()=>{t(e,p)[f+g[77]]=d},()=>{t(e,p)[f+g[74]]=d},()=>{t(e,p)[f+g[71]]=d},()=>{t(e,p)[f+g[73]]=d},()=>{t(e,p)[f+g[75]]=d},()=>{t(e,p)[f+g[72]]=d},()=>{t(e,p)[f+g[78]]=d}][b+s-21]||(()=>{}))(d,b+s):b<95||([()=>{t(e,p)[f+g[65]]=d},()=>{t(e,p)[f+g[5]]=d}][b+s-95]||(()=>{}))(d,b+s))})}).add([43,7,0],(r,a,o)=>{let i=r[0];e.setLetterDisplay(r.subarray(1),"TG300 letter display",i)}).add([43,7,1],(r,a,o)=>{w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0),r.forEach(function(i,s){let f=Math.floor(s/16),l=s%16,d=(l*3+f)*7,b=7,y=0;for(d-=l*5,f==2&&(b=2);y>6-y&1,y++})}),t(this,he).add([66,18,0,0,127],(r,a,o)=>{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,te,3),w(e,I,!1),t(e,be).fill(0),console.info(`GS system to ${["single","dual"][r[0]]} mode.`)}).add([66,18,64,0],(r,a,o)=>{switch(r[0]){case 127:{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,I,!1),t(e,be).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,b=>{w(this,X,b*129/16383*100)},b=>{},b=>{}][d](f,l)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,64,1],r=>{let a=r[0];if(a<16){let o="".padStart(a," ");r.subarray(1).forEach((i,s)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?r.subarray(1).forEach((o,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${pt[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${o}ms`)},()=>{console.info(`${s}type: ${Ht[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)},()=>{console.debug(`${s}to delay: ${q(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?r.subarray(1).forEach((o,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${Gt[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],r=>{let a="GS EQ ";r.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][r[0]+i]||function(){console.warn(`Unknown GS EQ address: ${r[0]+i}`)})()})}).add([66,18,64,3],r=>{let a="GS EFX ",o=function(i,s){let f=_t(t(e,Q).subarray(10,12),s,i);f&&console.debug(`${a}${bt(t(e,Q).subarray(10,12))} ${f}`)};r.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${bt(t(e,Q).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${q(i)}dB`)},()=>{console.debug(`${a}to chorus: ${q(i)}dB`)},()=>{console.debug(`${a}to delay: ${q(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][r[0]+s]||function(f,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,r[0]+s)})}).add([66,18,65],r=>{}).add([69,18,16],r=>{var a;switch(r[0]){case 0:{let o=r[1];e.setLetterDisplay(r.subarray(2),"GS display text",o);break}case 32:{w(e,ne,Date.now()+3200),r[1]==0&&w(e,j,Math.max(Math.min(r[2]-1,9),0));break}default:if(r[0]<11){t(e,j)>9&&w(e,j,0),w(e,ne,Date.now()+3200),(a=t(e,fe)[r[0]-1])!=null&&a.length||(t(e,fe)[r[0]-1]=new Uint8Array(256));let o=t(e,fe)[r[0]-1],i=r[1];o.fill(0);let s=r.subarray(2);for(let f=0;f>4-v&1,v++})}else console.warn(`Unknown GS display section: ${r[0]}`)}});let h=function(r,a,o){let i=r[0],s=$.cc*a,f=$.rpn*a,l=`GS CH${a+1} `;i<3?r.subarray(1).forEach((d,b)=>{[()=>{t(e,p)[s+g[0]]=d},()=>{t(e,D)[a]=d},()=>{let y=e.chRedir(d,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][i+b]()}):i<19||(i<44?r.subarray(1).forEach((d,b)=>{([()=>{t(e,J)[a]=+!d},!1,()=>{e.setChType(a,d<<1,M.gs),console.debug(`${l}type: ${d?"drum ":"melodic"}${d||""}`)},()=>{t(e,S)[f+3]=d},!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${d}`)},()=>{console.debug(`${l}CC 2: cc${d}`)},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},!1,!1,()=>{t(e,S)[f+1]=d},()=>{t(e,S)[f+2]=d},()=>{t(e,p)[s+g[94]]=d}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},c=function(r,a){let o=r[0],i=`GS CH${a+1} `;o<2?r.subarray(1).forEach((s,f)=>{[()=>{t(e,p)[$.cc*a+g[32]]=s},()=>{}][o+f]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?r.subarray(1).forEach((s,f)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][o+f-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,he).add([66,18,64,16],(r,a)=>{h(r,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(r,a)=>{h(r,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(r,a)=>{h(r,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(r,a)=>{h(r,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(r,a)=>{h(r,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(r,a)=>{h(r,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(r,a)=>{h(r,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(r,a)=>{h(r,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(r,a)=>{h(r,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(r,a)=>{h(r,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(r,a)=>{h(r,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(r,a)=>{h(r,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(r,a)=>{h(r,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(r,a)=>{h(r,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(r,a)=>{h(r,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(r,a)=>{h(r,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(r,a)=>{c(r,e.chRedir(9,a,!0))}).add([66,18,64,65],(r,a)=>{c(r,e.chRedir(0,a,!0))}).add([66,18,64,66],(r,a)=>{c(r,e.chRedir(1,a,!0))}).add([66,18,64,67],(r,a)=>{c(r,e.chRedir(2,a,!0))}).add([66,18,64,68],(r,a)=>{c(r,e.chRedir(3,a,!0))}).add([66,18,64,69],(r,a)=>{c(r,e.chRedir(4,a,!0))}).add([66,18,64,70],(r,a)=>{c(r,e.chRedir(5,a,!0))}).add([66,18,64,71],(r,a)=>{c(r,e.chRedir(6,a,!0))}).add([66,18,64,72],(r,a)=>{c(r,e.chRedir(7,a,!0))}).add([66,18,64,73],(r,a)=>{c(r,e.chRedir(8,a,!0))}).add([66,18,64,74],(r,a)=>{c(r,e.chRedir(10,a,!0))}).add([66,18,64,75],(r,a)=>{c(r,e.chRedir(11,a,!0))}).add([66,18,64,76],(r,a)=>{c(r,e.chRedir(12,a,!0))}).add([66,18,64,77],(r,a)=>{c(r,e.chRedir(13,a,!0))}).add([66,18,64,78],(r,a)=>{c(r,e.chRedir(14,a,!0))}).add([66,18,64,79],(r,a)=>{c(r,e.chRedir(15,a,!0))}),t(this,ge).add([54,65],(r,a)=>{e.switchMode("x5d");let o=(r[1]<<7)+r[0],i=(r[3]<<7)+r[2],s=e.chRedir(o&15,a,!0),f=$.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-1,t(e,p)[f+g[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-101,t(e,p)[f+g[0]]=56):(e.setChType(s,e.CH_DRUMS,M.x5d),t(e,D)[s]=jt[i-229]||0,t(e,p)[f+g[0]]=62))},()=>{t(e,p)[f+g[7]]=i},()=>{i<31&&(t(e,p)[f+g[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,p)[f+g[93]]=Ze(i)},()=>{t(e,p)[f+g[91]]=Ze(i)},()=>{t(e,S)[s*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,S)[s*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,S)[s*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=82,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<16400){let y=b%164;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` +${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=90,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<13600){let y=b%136;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ie(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ie(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,D)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,D)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,he).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,Ee)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,Ee)[i-1<<4];if(b<3)if(t(e,ce)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,ce)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,ee)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,Ee)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,Ee)[d-1<<4];if(y<3)if(t(e,ce)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,ee)[(d-1)*$.cmt+b]=s),b<10&&(t(e,ce)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let m=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME +000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,me)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,le,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,D)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,D)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,J)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,ne,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,m=0,x=y0;)t(e,W,de)[k*32+y*7+(x-m)]=v&1,v=v>>1,m++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ie(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ie(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,D)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` +${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=88,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%126;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:break;case y==12:break;case y==13:{l+=` +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,te,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,Z).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,Z).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=+([32,40].indexOf(d)>-1)<<1},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,J)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,te))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,te),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,te)}return e}getChType(){return t(this,O)}setChType(e,n,h=t(this,P)){n&=15,t(this,O)[e]=n,n>0&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,te);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,me).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,D)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,P)]);if(t(this,ce)[e])switch(t(this,P)){case M.mt32:n.ending="~",n.name="",t(this,ee).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,le," ".repeat(h)),e.forEach(o=>{w(r,le,t(r,le)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,le,t(r,le).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,P,0),w(this,ve,0),w(this,te,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,D).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,oe).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,T,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,le,""),w(this,ne,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,O).fill(this.CH_MELODIC),t(this,O)[9]=this.CH_DRUM1,t(this,O)[25]=this.CH_DRUM3,t(this,O)[41]=this.CH_DRUMS,t(this,O)[57]=this.CH_DRUMS,t(this,O)[73]=this.CH_DRUM5,t(this,O)[89]=this.CH_DRUM7,t(this,O)[105]=this.CH_DRUMS,t(this,O)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,me).fill(0),t(this,Ee).fill(0),t(this,ee).fill(0),t(this,ce).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,P)==0||n){let c=t(this,P);w(this,P,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,te,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,O)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,D)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,oe).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,T).length>100&&t(this,T).splice(100,t(this,T).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},P=new WeakMap,j=new WeakMap,ne=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,O=new WeakMap,p=new WeakMap,ue=new WeakMap,D=new WeakMap,L=new WeakMap,J=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,oe=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,ce=new WeakMap,Ee=new WeakMap,ee=new WeakMap,Ve=new WeakMap,me=new WeakMap,Q=new WeakMap,ve=new WeakMap,te=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,le=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,T=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,Z=new WeakMap,he=new WeakMap,ge=new WeakMap,Pe=new WeakMap,De=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);R();R();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){E(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),mt=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);E(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new mt(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new mt(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let m={type:y.type,data:y.data,track:b,part:0};y.type>14?m.meta=y.metaType:m.part=y.channel,e.push(new rr(a/c/h*60+o,m))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");E(this,qe,void 0);E(this,Ue,"");E(this,Le,[]);E(this,Be,new Uint8ClampedArray(128));E(this,st,new Uint8ClampedArray(128));E(this,xe,.5);E(this,je,120);E(this,F,4);E(this,Ne,4);E(this,ye,0);E(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((m,x)=>{t(this,st)[x]=m}),r.device.newStrength(),n.forEach(function(m){let x=m.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),m.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(m,x,A){A[x]=Math.max(t(r,st)[x],m);let V=A[x]-t(r,Be)[x],ae=g.length*x;if(V>=0){let lt=4*.25**(f[ae+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[ae+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(m,x){m&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; diff --git a/dist/xp_state.mjs b/dist/xp_state.mjs new file mode 100644 index 00000000..3f85d320 --- /dev/null +++ b/dist/xp_state.mjs @@ -0,0 +1,156 @@ +var Rt=Object.defineProperty;var Ot=(u,e,n)=>e in u?Rt(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var C=(u,e,n)=>(Ot(u,typeof e!="symbol"?e+"":e,n),n),st=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(st(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,c)=>(st(u,e,"write to private field"),c?c.call(u,n):e.set(u,n),n);(function(){var u=function(o,i,a){var l,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:a==null?void 0:a.ports}),Object.defineProperty(h,"source",{value:a==null?void 0:a.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),a&&o=="message"&&(h.data=i,a.source&&Object.defineProperty(h,"source",{value:a.source}),(l=a.ports)!=null&&l.length&&Object.defineProperty(h,"ports",{value:a.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],c={},d=function(o){var i,a=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=c[o])!=null&&i.constructor||(c[o]=[]),c[o].push(this);var l=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return l}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(a);B>-1?(e.postMessage({t:"d",c:o,i:l}),n.splice(B,1),(m=c[o])!=null&&m.constructor&&(B=c[o].indexOf(a),B>-1&&c[o].splice(B,1)),c[o].length||delete c[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:l,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:l}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();a.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=l&&a.dispatchEvent(u("message",m.d,{source:a})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(l," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:a}),Object.defineProperty(m,"currentTarget",{value:a}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var a=i.data,l=!1;switch(a.t){case"k":{l=!1,e.postMessage({t:"k"});break}case"m":{var h=c[a.c];if(h!=null&&h.length)for(var f=0;f{switch(c.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),c.addEventListener("error",r=>{s(c.error||r.data||new Error("Blob read error"))}),c.addEventListener("load",()=>{d(c.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{c.readAsArrayBuffer(e);break}case"string":case"text":{c.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,c=16,d=this,s=[];for(;n-1;){let r=d.lastIndexOf(u);s.unshift(d.slice(r+u.length)),d=d.slice(0,r),r==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length0){let c=this.pool.length,d=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(s==c)s-=d;else{let i=rt(e,this.pool[s]);switch(i){case 0:{r=0;break}case 1:{s+d<=c&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,r--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(a,l,h){o&&a!=e[l]&&(o=!1)}),!o&&rt(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let c=this.point(e);c>-1?e.subarray?this.pool[c].data(e.subarray(this.pool[c].length),...n):this.pool[c].data(e.slice(this.pool[c].length),...n):this.default(e,...n)}};var _,at,it=(at=class{constructor(){E(this,_,{})}addEventListener(u,e){t(this,_)[u]||(t(this,_)[u]=[]),t(this,_)[u].unshift(e)}removeEventListener(u,e){if(t(this,_)[u]){let n=t(this,_)[u].indexOf(e);n>-1&&t(this,_)[u].splice(n,1),t(this,_)[u].length<1&&delete t(this,_)[u]}}dispatchEvent(u,e){var d;let n=new Event(u),c=this;n.data=e,((d=t(this,_)[u])==null?void 0:d.length)>0&&t(this,_)[u].forEach(function(s){try{s==null||s.call(c,n)}catch(r){console.error(r)}}),this[`on${u}`]&&this[`on${u}`](n)}},_=new WeakMap,at);var Dt=["MSB","PRG","LSB"],Qe=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...u){E(this,F,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,c){let d=[u,e,n],s,r=Array.from(arguments);switch(c){case"xg":{u==32?r[2]+=4:u==33||u==35||u==36?r[2]+=5:u==79?r[0]=95:u==80?r[0]=96:u==81?r[0]=97:u==82?r[0]=98:u==83?r[0]=99:u==84&&(r[0]=100);break}case"gs":{u==0&&n<5?r[2]=0:u>125&&n<5&&n!=2&&(r[2]=u,r[0]=0);break}case"sg":{u==8&&n==0&&(r[2]=5);break}case"s90es":{n<8?r[2]+=17:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{n<8?r[2]+=28:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let o=" ",i="M",a=!1,l=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||c=="gs"&&r[2]<5?i="GM-a":(i="y",a=!0);break}case 8:{c=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,a=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let y=r[2];i=y<10?"kP:":"kC:",i+=y%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),a=!0;break}case 97:{i="VL:",a=!0,l=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(l=63),a=!0;break}case 100:{i="AN",r[2]>63&&(l=63),a=!0;break}case 121:{i=`GM-${r[2]?"":"a"}`,a=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(a?n:u)-l}`.padStart(4-i.length,"0")),c=="xg"&&u==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[r[0],r[1],r[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):(r[2]--,o="^"):u==48?(r[0]=0,r[2]=0,o="!"):u==62?(r[1]--,o=" ",r[1]<1&&!(s!=null&&s.length)&&(r[0]=0,o="!")):u<63?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):r[2]--:u==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(s=`GM2Vox0${n}`,o="#"):u==122?(r[1]==32?r[1]==0:r[1]%=7,s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s?o=" ":(s="",o="*")):r[1]==0?(s=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):r[0]==0?(r[2]=0,o="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,o="!"):(r[0]=0,o="?"));let f=[r[0],r[1],r[2]];(c=="gs"||c=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(r[0]){case 0:{r[2]==0?g="GM":r[2]==5||r[2]==7?g="KG":r[2]<120?g="XG":r[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{r[2]<17?g="KR":r[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][r[2]];break}case 96:{g=r[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=r[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=r[2]==127?"MT":e==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&c=="xg"?g="XG":g="GS")}return{name:s||`${Qe(u||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(u,e,n){let c=this,d=[],s=0,r=0;u.split(` +`).forEach(function(o,i){let a=o.split(" "),l=[];i==0?a.forEach(function(h,f){d[Dt.indexOf(h)]=f}):a.forEach(async function(h,f){var g;f>2?(t(c,F)[l[d[1]]]=t(c,F)[l[d[1]]]||[],(!((g=t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]])!=null&&g.length)||e)&&(t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]]=a[3],s++),r++):l.push(parseInt(a[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${r} total, ${s} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],c=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let r=c[0];r<=c[1];r++){let o=s+r;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let u=0;u<128;u++)t(this,F).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,c){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,lt=(ot=class{constructor(){E(this,Oe,{});C(this,"context")}set(u,e){t(this,Oe)[u]=e}has(u){return!!t(this,Oe)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Oe)[u].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(u,e){let n=!0;return e.forEach((c,d)=>{n=n&&u[d]==c}),n},ct=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new lt;Ve.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",c=[0,0,0,0],d=32,s=0,r=0,o=!0,i=[],a=0;for(;o;){let l=e.subarray(s);([()=>{Le.decode(l.subarray(0,4))=="YSFC"?(s+=80,r=1):s++},()=>{if(Pt(l.subarray(0,4),c))i.forEach((h,f,g)=>{let y=ct(e.subarray(h.start+4,h.start+8));h.length=y}),r=2;else{let h=Le.decode(l.subarray(0,4)),f=ct(l.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[a],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;y=i.length&&(r=3,o=!1)}][r]||(()=>{o=!1}))()}return n});var Be=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ge=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],At=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],De=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ht=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ft=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},dt=function(u){return u>105?At[u-106]:u>100?u*1.1-100:u/10},ut=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),We={};`hi*, +ka,か +ki,き +ku,く +ke,け +ko,こ +ky,き! +kw,くl +tsu,つ +ts,つl +sa,さ +si,すぃ +su,す +se,せ +so,そ +shi,し +sh,し! +ta,た +ti,てぃ +tu,とぅ +te,て +to,と +tchy,ち! +tchi,ち +na,な +ni,に +nu,ぬ +ne,ね +no,の +ny,に! +nn,ん +ha,は +hi,ひ +hu,ほぅ +he,へ +ho,ほ +hy,ひ! +fa,ふぁ +fi,ふぃ +fu,ふ +fe,ふぇ +fo,ふぉ +ma,ま +mi,み +mu,む +me,め +mo,も +my,み! +mm, +ra,ら +ri,り +ru,る +re,れ +ro,ろ +ry,り! +wa,わ +wi,うぃ +we,うぇ +wo,を +nga,ガ +ngi,ギ +ngu,グ +nge,ゲ +ngo,ゴ +ngy,ギ! +ng, +ga,が +gi,ぎ +gu,ぐ +ge,げ +go,ご +gy,ぎ! +gw,ぐl +za,ざ +zi,ずぃ +zu,ず +ze,ぜ +zo,ぞ +ja,じゃ +ji,じ +ju,じゅ +je,じぇ +jo,じょ +jy,じ! +da,だ +di,でぃ +du,どぅ +de,で +do,ど +dy,で! +ba,ば +bi,び +bu,ぶ +be,べ +bo,ぼ +by,び! +va,ゔぁ +vi,ゔぃ +vu,ゔ +ve,ゔぇ +vo,ゔぉ +pa,ぱ +pi,ぴ +pu,ぷ +pe,ペ +po,ぽ +py,ぴ! +!ya,ゃ +!yu,ゅ +!ye,ぇ +!yo,ょ +ya,や +yu,ゆ +ye,いぇ +yo,よ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +la,ぁ +li,ぃ +lu,ぅ +le,ぇ +lo,ぉ +a,あ +i,い +u,う +e,え +o,お +*,っ +~, +^, +_,`.split(` +`).forEach(u=>{let e=u.split(",");We[e[0]]=e[1]});var bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(c=>{for(;e.indexOf(c)>-1;)e=e.replace(c,c[0])});for(let c in We)e=e.replaceAll(c,We[c]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},Je=function(u){return Ut[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},yt=function(u,e,n){let c=(u[0]-32<<16)+(u[1]<<8)+e,d=Nt[c]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(u=64){return Math.round(2e3*Math.log10(u/64))/100};var wt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(u,e){let n=0,c=0;for(let d=0;d>s&1)<<7,o=u[d];o+=r,d%8!=0?(e(o,n,u),n++):c=u[d]}},Ie=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],_e=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((u,e)=>{x[u]=e});var p={length:_e.length};_e.forEach((u,e)=>{p[u]=e});var Ct={length:qe.length};qe.forEach((u,e)=>{Ct[u]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(u){let e=[],n=0;return u==null||u.forEach(function(c,d){c==247?e.push(u.subarray(n,d)):c==240&&(n=d+1)}),e.length||e.push(u.subarray(0)),q()&&console.debug(e),e},xt=function(u,e="",n="",c=2){return u?`${e}${u.toString().padStart(c,"0")}${n}`:""},$={ch:128,cc:_e.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,b,le,O,A,j,U,L,pe,se,me,v,Pe,Fe,re,ge,W,Ae,$e,V,ye,Y,I,ce,Ue,Ne,ae,we,He,J,D,Xe,tt,M,he,Ee,G,ve,N,Ke,ze,xe,Me,Q,ie,fe,Ce,Te,Re,Mt,ms=(Mt=class extends it{constructor(){super();E(this,z);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,b,new Uint8Array($.ch*$.cc));E(this,le,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,j,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,re,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,W,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Y,0);E(this,I,100);E(this,ce,0);E(this,Ue,500);E(this,Ne,0);E(this,ae,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,M,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));C(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new je("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let c=e*128+n,d=t(this,U).lastIndexOf(c);d>-1&&(t(this,b)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[c],state:this.NOTE_HELD})):t(this,b)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[c],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[c]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let d=e*128+n,s=0;for(t(this,j)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=c,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,c)=>{if(n==this.NOTE_HELD){let d=t(this,U)[c],s=d>>7;e==s&&(t(this,L)[c]=this.NOTE_IDLE,t(this,U)[c]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,c)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[c]=d;let s=t(this,U)[c];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[c],s=d>>7;e==s&&(t(this,L)[c]=this.NOTE_IDLE,t(this,U)[c]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,c,d)=>{let s=n>>7,r=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,r)})}});E(this,Ke,{8:function(e){let n=e.channel,c=e.data[0];t(this,N).nOff(n,c)},9:function(e){let n=e.channel;t(this,P)[n]=1;let c=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,c,d):t(this,N).nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];t(this,U).indexOf(c)>-1&&(t(this,A)[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let c=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,b)[d+p[1]]=0,t(this,b)[d+p[5]]=0,t(this,b)[d+p[64]]=0,t(this,b)[d+p[65]]=0,t(this,b)[d+p[66]]=0,t(this,b)[d+p[67]]=0,t(this,b)[d+p[11]]=127,t(this,b)[d+p[101]]=127,t(this,b)[d+p[100]]=127,t(this,b)[d+p[99]]=127,t(this,b)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,j)[n]=1,t(this,N).ano(n);return}case 127:{t(this,j)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0)e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,b)[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,R)==x.gs)e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,b)[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,R)==x.gm)e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,R)==x.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let d=0;for(let s=0;s<16;s++){let r=t(this,b)[$.cc*s];(r==56||r==62)&&d++}d>14&&this.switchMode("ag10",!0)}}switch(t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,b)[c+p[99]],s=t(this,b)[c+p[98]];if(d==1){let r=Bt.indexOf(s);if(r>-1)t(this,b)[c+p[71+r]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+r}.`),this.dispatchEvent("cc",{part:n,cc:71+r,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Ct[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,b)[c+p[100]]];t(this,b)[c+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,b)[c+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{t(this,T)[n]=+([32,40].indexOf(e.data[1])>-1)<<1;break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,b)[c+101]==0&&et[t(this,b)[c+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,b)[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,b)[c+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,re)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;t(this,U).forEach(function(d){let s=d>>7;c==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:c,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let c=n[0],d=n[1];(t(this,ze)[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(c,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,ce,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,c)=>{t(this,Ce).run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)t(this,ie).run(n,c,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,c)=>{t(this,fe).run(n,c,e)},67:(e,n,c)=>{t(this,Q).run(n,c,e)},68:(e,n,c)=>{t(this,Re).run(n,c,e)},71:(e,n,c)=>{t(this,Te).run(n,c,e)},126:(e,n,c)=>{t(this,xe).run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),t(this,Me).run(n,c,e)}});E(this,xe,void 0);E(this,Me,void 0);E(this,Q,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Ce,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +062 000 000 +122 000 000 +122 001 000 +122 002 000 +122 003 000 +122 004 000 +122 005 000 +122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,M).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,M).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,M).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,M).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,M).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let r=s.slice(2).split(":");switch(r[0]){case"hd":{r.slice(1).forEach((o,i)=>{o.length&&t(this,M).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{r.slice(1).forEach((o,i)=>{o.length&&t(this,M).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,M).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,M).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,M).unshift(s.slice(1)):t(this,M)[0]+=s:(t(this,M)[0]=s,t(this,M).unshift(""))}},t(this,G)[2]=function(s){t(this,M).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,r){r<1&&t(this,ce)<1&&t(this,M).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,r){t(this,M).unshift(`${xt(t(this,ce),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,M).unshift(""):t(this,M)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,M).unshift(`${xt(t(this,ce),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,M).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,ce,s[0]+1)},t(this,G)[33]=function(s,r){console.debug(`Track ${r} requests to get assigned to output ${s}.`),t(e,Ee)[r]=s+1},t(this,G)[81]=function(s,r){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,r){t(e,ve).run(s,r)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,r){t(e,Ee)[r]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Me,new Z("universal realtime")),w(this,Q,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Ce,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Me).default=n,t(this,Q).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Ce).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Me).add([4,1],s=>{w(e,I,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,Q).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let r=[0,0,0,0],o=(i,a)=>{r[a]=i};if(s.subarray(1).forEach((i,a)=>{let l=a+s[0];([o,o,o,o,h=>{w(this,I,h*129/16383*100)},h=>{},h=>{}][l]||(()=>{}))(i,a)}),s[0]<4){let i=0;r.forEach(a=>{i=i<<4,i+=a}),i-=1024}}}}).add([76,2,1],s=>{let r="XG ";s[0]<32?(r+="reverb ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(0,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(0,!0,a),console.debug(`${r}sub type: ${a+1}`)},a=>{console.debug(`${r}time: ${ft(a)}s`)},a=>{console.debug(`${r}diffusion: ${a}`)},a=>{console.debug(`${r}initial delay: ${a}`)},a=>{console.debug(`${r}HPF cutoff: ${De[a]}Hz`)},a=>{console.debug(`${r}LPF cutoff: ${De[a]}Hz`)},a=>{console.debug(`${r}width: ${a}`)},a=>{console.debug(`${r}height: ${a}`)},a=>{console.debug(`${r}depth: ${a}`)},a=>{console.debug(`${r}wall type: ${a}`)},a=>{console.debug(`${r}dry/wet: ${a}`)},a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},!1,!1,a=>{console.debug(`${r}delay: ${a}`)},a=>{console.debug(`${r}density: ${a}`)},a=>{console.debug(`${r}balance: ${a}`)},a=>{},a=>{console.debug(`${r}feedback: ${a}`)},a=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(r+="chorus ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(1,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(1,!0,a),console.debug(`${r}sub type: ${a+1}`)},a=>{console.debug(`${r}LFO: ${ht[a]}Hz`)},a=>{},a=>{console.debug(`${r}feedback: ${a}`)},a=>{console.debug(`${r}delay offset: ${dt(a)}ms`)},a=>{},a=>{console.debug(`${r}low: ${De[a]}Hz`)},a=>{console.debug(`${r}low: ${a-64}dB`)},a=>{console.debug(`${r}high: ${De[a]}Hz`)},a=>{console.debug(`${r}high: ${a-64}dB`)},a=>{console.debug(`${r}dry/wet: ${a}`)},a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},a=>{console.debug(`${r}to reverb: ${X(a)}dB`)},!1,a=>{},a=>{},a=>{},a=>{console.debug(`${r}LFO phase diff: ${(a-64)*3}deg`)},a=>{console.debug(`${r}input mode: ${a?"stereo":"mono"}`)},a=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(r+="variation ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(2,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(2,!0,a),console.debug(`${r}sub type: ${a+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(r+="variation ",s.subarray(1).forEach((o,i)=>{[a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},a=>{console.debug(`${r}to reverb: ${X(a)}dB`)},a=>{console.debug(`${r}to chorus: ${X(a)}dB`)},a=>{console.debug(`${r}connection: ${a?"system":"insertion"}`)},a=>{console.debug(`${r}channel: CH${a+1}`)},a=>{console.debug(`${r}mod wheel: ${a-64}`)},a=>{console.debug(`${r}bend wheel: ${a-64}`)},a=>{console.debug(`${r}channel after touch: ${a-64}`)},a=>{console.debug(`${r}AC1: ${a-64}`)},a=>{console.debug(`${r}AC2: ${a-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?r+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((r,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][r]}`);else{let a=i-1>>2,l=i-1&3,h=`XG EQ ${a} ${["gain","freq","Q","shape"][l]}: `;[()=>{console.debug(`${h}${r-64}dB`)},()=>{console.debug(`${h}${r} (raw)`)},()=>{console.debug(`${h}${r/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!r]}`)}][l]()}})}).add([76,3],s=>{let r=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((a,l)=>{([h=>{e.setEffectTypeRaw(3+r,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+r,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+l]||function(){})(a)})}).add([76,6,0],s=>{let r=s[0];r<64?e.setLetterDisplay(s.subarray(1),"XG letter display",r):w(e,we,Date.now())}).add([76,7,0],s=>{let r=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=s[1],a=$.cc*o,l=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,b)[a+p[0]]=f},()=>{t(e,b)[a+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,j)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${l}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,b)[a+p[7]]=f},!1,!1,()=>{t(e,b)[a+p[10]]=f||128},!1,!1,()=>{t(e,b)[a+p[128]]=f},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[91]]=f},()=>{t(e,b)[a+p[94]]=f},()=>{t(e,b)[a+p[76]]=f},()=>{t(e,b)[a+p[77]]=f},()=>{t(e,b)[a+p[78]]=f},()=>{t(e,b)[a+p[74]]=f},()=>{t(e,b)[a+p[71]]=f},()=>{t(e,b)[a+p[73]]=f},()=>{t(e,b)[a+p[75]]=f},()=>{t(e,b)[a+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,b)[a+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${l}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${l}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=s[1],a=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((l,h)=>{let f=h+i;switch(f){case 1:{console.info(`${a}breath mode: ${["system","breath","velocity","touch EG"][l]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${a}${g} control source: ${pt(l)}`),l&&l<96&&e.allocateAce(l)):console.debug(`${a}${g} scale break point: ${l}`):console.debug(`${a}${g} depth: ${l-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,r)=>{let o=s[0];s.subarray(1).forEach((i,a)=>{let l=o+a;l==8?console.debug(`MU1000 set LCD contrast to ${i}.`):l>9&&l<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!i),console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][l-10]()})}).add([73,10,0],(s,r)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let a=e.chRedir(0,r,!0);t(e,J)&&(e.dispatchEvent("channelmin",a),e.dispatchEvent("channelmax",a+63)),console.info(`${i}Show CH1~64`);break}case 3:{let a=e.chRedir(s[1]<<5,r,!0);t(e,J)&&e.dispatchEvent("channelmin",a),t(e,J)&&e.dispatchEvent("channelmax",a+31),console.info(`${i}Show CH${a+1}~CH${a+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let a=e.chRedir(o-16+(t(e,He)<<4),r,!0);e.dispatchEvent("channelactive",a)}}else if(o<36){let a=e.chRedir(o-32<<4,r,!0);t(e,J)&&(e.dispatchEvent("channelmin",a),e.dispatchEvent("channelmax",a+15),w(e,He,o-32)),console.info(`${i}Show CH${a+1}~CH${a+16}`)}}).add([93,3],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=`PLG-100SG CH${o+1} `,a=Date.now();if(s[1]==0){let l="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?l+=ut[f]||f.toString().padStart("0"):h+=f*13}),a>=t(e,Ne)&&t(e,M).unshift("SG Lyric: "),t(e,M)[0]+=`${bt(l)}`,w(e,Ne,a+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${l}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,Q).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,Q).add([89,0],(s,r,o)=>{if(e.eprom){let i=s[0],a=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${a.toString(16).padStart(6,"0")}, ${i} bytes.`);let l=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)l[a+7*g+S]+=(h>>6-S&1)<<7;else l[a+7*g+y]=h})}}).add([89,1],(s,r,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,r,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let a=e.eprom.data;s.subarray(4).forEach((l,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)a[i+7*f+y]+=(l>>6-y&1)<<7;else a[i+7*f+g]=l})}}).add([89,3],(s,r,o)=>{}),t(this,Q).add([39,48],(s,r,o)=>{}).add([43,0,0],(s,r,o)=>{let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{let f=h+s[0];[a,a,a,a,()=>{w(this,I,l*129/16383*100)},()=>l-64,()=>l||128,()=>l,()=>l,()=>{console.debug(`TG300 variation on cc${l}.`)}][f](l,f)}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}).add([43,1,0],(s,r,o)=>{}).add([43,2],(s,r,o)=>{let i=e.chRedir(s[0],r,!0),a=s[1],l=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,b)[l+p[0]]=f},()=>{t(e,b)[l+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+a]||(()=>{}))(f,g+a):g<21||(g<47?([()=>{t(e,j)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,b)[l+p[7]]=f},!1,!1,()=>{t(e,b)[l+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,b)[l+p[128]]=f},()=>{t(e,b)[l+p[93]]=f},()=>{t(e,b)[l+p[91]]=f},()=>{t(e,b)[l+p[94]]=f},()=>{t(e,b)[l+p[76]]=f},()=>{t(e,b)[l+p[77]]=f},()=>{t(e,b)[l+p[74]]=f},()=>{t(e,b)[l+p[71]]=f},()=>{t(e,b)[l+p[73]]=f},()=>{t(e,b)[l+p[75]]=f},()=>{t(e,b)[l+p[72]]=f},()=>{t(e,b)[l+p[78]]=f}][g+a-21]||(()=>{}))(f,g+a):g<95||([()=>{t(e,b)[l+p[65]]=f},()=>{t(e,b)[l+p[5]]=f}][g+a-95]||(()=>{}))(f,g+a))})}).add([43,7,0],(s,r,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,r,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,a){let l=Math.floor(a/16),h=a%16,f=(h*3+l)*7,g=7,y=0;for(f-=h*5,l==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,r,o)=>{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,Y,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,r,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{let f=h+s[0];[a,a,a,a,g=>{w(this,I,g*129/16383*100)},g=>{},g=>{}][f](l,h)}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}}}).add([66,18,64,1],s=>{let r=s[0];if(r<16){let o="".padStart(r," ");s.subarray(1).forEach((i,a)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else r<48||(r<65?s.subarray(1).forEach((o,i)=>{let a=`GS ${r+i>55?"chorus":"reverb"} `;([()=>{console.info(`${a}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${a}predelay: ${o}ms`)},()=>{console.info(`${a}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${a}to reverb: ${X(o)}`)},()=>{console.debug(`${a}to delay: ${X(o)}`)}][r+i-48]||(()=>{}))()}):r<80?console.debug(`Unknown GS patch address: ${r}`):r<91?s.subarray(1).forEach((o,i)=>{let a="GS delay ";([()=>{console.info(`${a}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${a}to reverb: ${X(o)}`)}][r+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${r}`))}).add([66,18,64,2],s=>{let r="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${r}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${r}low gain: ${o-64}dB`)},()=>{console.debug(`${r}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${r}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let r="GS EFX ",o=function(i,a){let l=yt(t(e,V).subarray(10,12),a,i);l&&console.debug(`${r}${Je(t(e,V).subarray(10,12))} ${l}`)};s.subarray(1).forEach((i,a)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${r}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${r}to reverb: ${X(i)}dB`)},()=>{console.debug(`${r}to chorus: ${X(i)}dB`)},()=>{console.debug(`${r}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${r}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${r}1 depth: ${i-64}`)},()=>{console.debug(`${r}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${r}2 depth: ${i-64}`)},()=>{console.debug(`${r}to EQ: ${i?"ON":"OFF"}`)}][s[0]+a]||function(l,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+a)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var r;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(r=t(e,oe)[s[0]-1])!=null&&r.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let a=s.subarray(2);for(let l=0;l>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let c=function(s,r,o){let i=s[0],a=$.cc*r,l=$.rpn*r,h=`GS CH${r+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,b)[a+p[0]]=f},()=>{t(e,O)[r]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[r]=y,r!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,j)[r]=+!f},!1,()=>{e.setChType(r,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[l+3]=f},!1,()=>{t(e,b)[a+p[7]]=f},!1,!1,()=>{t(e,b)[a+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[91]]=f},!1,!1,()=>{t(e,v)[l+1]=f},()=>{t(e,v)[l+2]=f},()=>{t(e,b)[a+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,r){let o=s[0],i=`GS CH${r+1} `;o<2?s.subarray(1).forEach((a,l)=>{[()=>{t(e,b)[$.cc*r+p[32]]=a},()=>{}][o+l]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((a,l)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][a]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][a]}`)}][o+l-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,r)=>{c(s,e.chRedir(9,r,!0),r)}).add([66,18,64,17],(s,r)=>{c(s,e.chRedir(0,r,!0),r)}).add([66,18,64,18],(s,r)=>{c(s,e.chRedir(1,r,!0),r)}).add([66,18,64,19],(s,r)=>{c(s,e.chRedir(2,r,!0),r)}).add([66,18,64,20],(s,r)=>{c(s,e.chRedir(3,r,!0),r)}).add([66,18,64,21],(s,r)=>{c(s,e.chRedir(4,r,!0),r)}).add([66,18,64,22],(s,r)=>{c(s,e.chRedir(5,r,!0),r)}).add([66,18,64,23],(s,r)=>{c(s,e.chRedir(6,r,!0),r)}).add([66,18,64,24],(s,r)=>{c(s,e.chRedir(7,r,!0),r)}).add([66,18,64,25],(s,r)=>{c(s,e.chRedir(8,r,!0),r)}).add([66,18,64,26],(s,r)=>{c(s,e.chRedir(10,r,!0),r)}).add([66,18,64,27],(s,r)=>{c(s,e.chRedir(11,r,!0),r)}).add([66,18,64,28],(s,r)=>{c(s,e.chRedir(12,r,!0),r)}).add([66,18,64,29],(s,r)=>{c(s,e.chRedir(13,r,!0),r)}).add([66,18,64,30],(s,r)=>{c(s,e.chRedir(14,r,!0),r)}).add([66,18,64,31],(s,r)=>{c(s,e.chRedir(15,r,!0),r)}).add([66,18,64,64],(s,r)=>{d(s,e.chRedir(9,r,!0))}).add([66,18,64,65],(s,r)=>{d(s,e.chRedir(0,r,!0))}).add([66,18,64,66],(s,r)=>{d(s,e.chRedir(1,r,!0))}).add([66,18,64,67],(s,r)=>{d(s,e.chRedir(2,r,!0))}).add([66,18,64,68],(s,r)=>{d(s,e.chRedir(3,r,!0))}).add([66,18,64,69],(s,r)=>{d(s,e.chRedir(4,r,!0))}).add([66,18,64,70],(s,r)=>{d(s,e.chRedir(5,r,!0))}).add([66,18,64,71],(s,r)=>{d(s,e.chRedir(6,r,!0))}).add([66,18,64,72],(s,r)=>{d(s,e.chRedir(7,r,!0))}).add([66,18,64,73],(s,r)=>{d(s,e.chRedir(8,r,!0))}).add([66,18,64,74],(s,r)=>{d(s,e.chRedir(10,r,!0))}).add([66,18,64,75],(s,r)=>{d(s,e.chRedir(11,r,!0))}).add([66,18,64,76],(s,r)=>{d(s,e.chRedir(12,r,!0))}).add([66,18,64,77],(s,r)=>{d(s,e.chRedir(13,r,!0))}).add([66,18,64,78],(s,r)=>{d(s,e.chRedir(14,r,!0))}).add([66,18,64,79],(s,r)=>{d(s,e.chRedir(15,r,!0))}),t(this,fe).add([54,65],(s,r)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],a=e.chRedir(o&15,r,!0),l=$.cc*a;[()=>{i<1||(i<101?(e.setChType(a,e.CH_MELODIC,x.x5d),t(e,O)[a]=i-1,t(e,b)[l+p[0]]=82):i<229?(e.setChType(a,e.CH_MELODIC,x.x5d),t(e,O)[a]=i-101,t(e,b)[l+p[0]]=56):(e.setChType(a,e.CH_DRUMS,x.x5d),t(e,O)[a]=vt[i-229]||0,t(e,b)[l+p[0]]=62))},()=>{t(e,b)[l+p[7]]=i},()=>{i<31&&(t(e,b)[l+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,b)[l+p[93]]=Ie(i)},()=>{t(e,b)[l+p[91]]=Ie(i)},()=>{t(e,v)[a*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[a*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[a*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,r)=>{e.switchMode("x5d",!0);let o="",i=82,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +${i} ${a} ${l} ${o.trim().replace("Init Voice","")}`,a++,o="";break}}a>99&&(i=90,a=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,77,0],(s,r)=>{e.switchMode("x5d",!0);let o="",i=90,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<13600){let y=g%136;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +${i} ${a} ${l} ${o.trim().replace("Init Combi","")}`,a++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,r)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,r)=>{e.switchMode("x5d",!0),ee(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,r)=>{e.switchMode("x5d",!0),ee(s,function(o,i,a,l){if(i<192){let h=e.chRedir(Math.floor(i/12),r,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,x.x5d),t(e,b)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,x.x5d),t(e,b)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,b)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,b)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,b)[f+p[91]]=Ie(y),t(e,b)[f+p[93]]=Ie(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,r,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,r,!0)}})}),t(this,ie).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0),a=s[1];s.subarray(2).forEach((l,h)=>{let f=h+a;t(e,ge)[f+(i-1)*16]=l,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,re)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=l+40},()=>{t(e,v)[i*$.rpn+1]=l+14},()=>{t(e,v)[i*$.rpn]=l},!1,()=>{t(e,b)[$.cc*i+p[91]]=l?127:0},!1,()=>{t(e,b)[$.cc*i+p[7]]=l},()=>{t(e,b)[$.cc*i+p[10]]=Math.ceil(l*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0)}).add([22,18,2],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0),a=s[1]+(s[0]<<7);a<10&&(t(e,re)[i]=1),s.subarray(2).forEach((l,h)=>{let f=h+a;f<14&&(t(e,W)[(i-1)*$.cmt+f]=l)})}).add([22,18,3],(s,r,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((a,l)=>{let h=l+i;t(e,ge)[h]=a;let f=e.chRedir(1+h>>4,r,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,re)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=a+40},()=>{t(e,v)[f*$.rpn+1]=a+14},()=>{t(e,v)[f*$.rpn]=a},!1,()=>{t(e,b)[$.cc*f+p[91]]=a?127:0},!1,()=>{t(e,b)[$.cc*f+p[7]]=a},()=>{t(e,b)[$.cc*f+p[10]]=Math.ceil(a*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,r,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((a,l)=>{let h=l+i,f=e.chRedir(Math.floor(h/246+1),r,!0),g=h%246;g<14&&(t(e,W)[(f-1)*$.cmt+g]=a),g<10&&(t(e,re)[f]=1)})}).add([22,18,5],(s,r,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((a,l)=>{let h=i+l,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=a,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${a.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,a+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME +000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,r,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((a,l)=>{let h=i+l;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=a)})}).add([22,18,16],(s,r,o)=>{e.switchMode("mt32");let i=s[1],a=!1,l=function(h,f){t(e,H)[f-12]=h,a=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,l,l,l,l,l,l,l,l,l,()=>{w(e,I,h)}][g]||(()=>{}))(h,f)}),a&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let r=s[1],o=" ".repeat(r);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,ae,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,r)=>{let o=e.chRedir(0,r,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,r)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,r)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{[a,a,a,a,()=>{w(e,I,l*129/16383*100)},()=>l-64,()=>l-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}}}).add([66,18,0,1],(s,r)=>{}).add([66,18,0,2],(s,r)=>{}).add([66,18,1],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=o*$.cc,a=s[1],l=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=a+f;g<3?[()=>{t(e,b)[i+p[0]]=h||121},()=>{t(e,b)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,r,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,j)[o]=+!h},()=>{e.setChType(o,h,x.ns5r),console.debug(`${l}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,b)[i+p[7]]=h},()=>{t(e,b)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,b)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,b)[i+p[93]]=h},()=>{t(e,b)[i+p[91]]=h},()=>{t(e,b)[i+p[76]]=h},()=>{t(e,b)[i+p[77]]=h},()=>{t(e,b)[i+p[78]]=h},()=>{t(e,b)[i+p[74]]=h},()=>{t(e,b)[i+p[71]]=h},()=>{t(e,b)[i+p[73]]=h},()=>{t(e,b)[i+p[75]]=h},()=>{t(e,b)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,b)[i+p[5]]=h},()=>{t(e,b)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,r)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,te,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let a=s.subarray(1),l=4;a.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";ee(s,(i,a)=>{a<8?(i>31&&(o+=String.fromCharCode(i)),a==7&&(e.aiEfxName=o)):a<10&&e.setEffectType(a-8,44,i)})}).add([66,53],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1),ee(s,function(o,i){switch(!0){case i<2944:{let a=e.chRedir(Math.floor(i/92),r,!0),l=a*$.cc;switch(i%92){case 0:{t(e,b)[l+p[0]]=o||121;break}case 1:{t(e,b)[l+p[32]]=o;break}case 2:{t(e,O)[a]=o,o>0&&(t(e,P)[a]=1);break}case 3:{let h=e.chRedir(o,r,!0);t(e,H)[a]=h,a!=h&&(console.info(`NS5R CH${a+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[a*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,b)[l+p[7]]=o;break}case 11:{t(e,b)[l+p[11]]=o;break}case 14:{t(e,b)[l+p[10]]=o||128;break}case 19:{t(e,b)[l+p[93]]=o;break}case 20:{t(e,b)[l+p[91]]=o;break}case 84:{t(e,b)[l+p[65]]=o;break}case 85:{t(e,b)[l+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,r)=>{e.switchMode("ns5r",!0);let o="",i=80,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{l=f&127;break}case y==13:{h+=` +${i} ${a} ${l} ${o.trim().replace("Init Voice","")}`,a++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(h)}).add([66,55],(s,r)=>{e.switchMode("ns5r",!0);let o="",i=88,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%126;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:break;case y==12:break;case y==13:{h+=` +${i} ${a} ${l} ${o.trim().replace("Init Combi","")}`,a++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let r=new Uint8Array(5760);ee(s,(o,i,a)=>{if(i<720)for(let l=0;l<8;l++)r[i*8+l]=o>>7-l&1}),e.dispatchEvent("screen",{type:"ns5r",data:r})}).add([76],(s,r,o)=>{t(e,fe).run([66,...s],r,o)}),t(this,Ce).add([16,0,8,0],(s,r,o)=>{let i=(s[2]<<4)+s[3],a="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Y,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${a}reverb type: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,r,o)=>{let i=e.chRedir(s[1],r,!0),a=$.cc*i,l=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,b)[a+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,r,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,b)[a+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,b)[a+p[10]]=h},()=>{t(e,v)[l+3]=h+40},()=>{t(e,v)[l+1]=h>>1,t(e,v)[l+2]=h&1},()=>{t(e,b)[a+p[91]]=h?127:0},()=>{},()=>{t(e,b)[a+p[74]]=h},()=>{t(e,b)[a+p[73]]=h},()=>{t(e,b)[a+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,r,o)=>{let i=(s[2]<<4)+s[3],a="GMLX ";([()=>{console.debug(`${a}reverb type: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,r,o)=>{let i=(s[2]<<4)+s[3],a=e.chRedir(s[1],r,!0),l=a*$.cc;[()=>{i<128?(e.setChType(a,e.CH_MELODIC,x.k11),t(e,b)[l+p[0]]=0,t(e,b)[l+p[32]]=0,t(e,O)[a]=i):i<160?(e.setChType(a,e.CH_MELODIC,x.k11),t(e,b)[l+p[0]]=0,t(e,b)[l+p[32]]=7,t(e,O)[a]=i-100):(e.setChType(a,e.CH_DRUMS,x.k11),t(e,b)[l+p[0]]=122,t(e,b)[l+p[32]]=0,t(e,O)[a]=i-160)},()=>{let h=e.chRedir(i,r,!0);t(e,H)[a]=h,a!=h&&(e.buildRchTree(),console.info(`GMLX CH${a+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,r,o)=>{let i=(s[2]<<4)+s[3],a=e.chRedir(s[1],r,!0),l=a*$.cc,h=a*$.rpn,f=`GMLX CH${a+1} `;[()=>{t(e,P)[a]=i},()=>{t(e,b)[l+p[7]]=i},()=>{t(e,b)[l+p[10]]=i},()=>{t(e,b)[l+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,r,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,I,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let a=e.chRedir(s[0]&15,r,!0);if(s[1]==2){let l=e.chRedir(i,r,!0);t(e,H)[a]=l,a!=l&&(e.buildRchTree(),console.info(`SG CH${a+1} receives from CH${l+1}`))}else s[1]==19&&(t(e,b)[$.cc*a+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,r,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,Q).add([127,0],(s,r,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,Q).run(i,r,o)}).add([127,1,0,0],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",a=s[0];s.subarray(1).forEach((l,h)=>{([()=>{w(e,I,l*12900/16383)}][a+h]||(()=>{console.info(`Unrecognized ${i}ID: ${a+h}`)}))()})}).add([127,1,0,0,14],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",a=[];a[95]=(l,h,f)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(a[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",a=[];a[95]=(l,h,f)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(a[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,r,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],r,!0),a=$.cc*i,l=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,b)[a+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,b)[a+p[32]]=f,t(e,T)[i]=+([32,40].indexOf(f)>-1)<<1},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,j)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,b)[a+p[7]]=f},()=>{t(e,b)[a+p[10]]=f},!1,!1,!1,()=>{t(e,b)[a+p[91]]=f},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[94]]=f},()=>{t(e,b)[a+p[128]]=f},()=>{},()=>{t(e,b)[a+p[74]]=f},()=>{t(e,b)[a+p[71]]=f},!1,()=>{t(e,b)[a+p[65]]=f},()=>{t(e,b)[a+p[5]]=f},()=>{}][l+g]||(()=>{}))()})}).add([127,1,54,16],(s,r,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((a,l)=>{let f=`S90/Motif ES EQ${(l>>2)+1} `;([()=>{let g=a-64},()=>{let g=De[a]},()=>{let g=a/10},()=>{let g=a}][i+l&3]||(()=>{}))()})})}chRedir(e,n,c){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Y))>-1){if(c==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,c)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(c)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,c=t(this,b).subarray(n,n+$.cc);return c[p[0]]=c[p[0]]||t(this,ye),c[p[32]]=c[p[32]]||t(this,Y),c}getCcCh(e,n){if(_e.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,b)[$.cc*e+p[n]]}getCcAll(){let e=t(this,b).slice();for(let n=0;n<$.ch;n++){let c=n*$.cc;e[c+p[0]]=e[c+p[0]]||t(this,ye),e[c+p[32]]=e[c+p[32]]||t(this,Y)}return e}getChType(){return t(this,T)}setChType(e,n,c=t(this,R)){n&=15,t(this,T)[e]=n,n>0&&(t(this,b)[e*$.cc+p[0]]=Se[c])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,M).slice()}getVel(e){let n=new Map,c=this;return t(c,U).forEach(function(d,s){let r=Math.floor(d/128),o=d%128;e==r&&t(c,A)[d]>0&&n.set(o,{v:t(c,A)[d],s:t(c,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,ae),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,I)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let c=Math.floor(n/128);t(e,A)[n]>t(e,se)[c]&&(t(e,se)[c]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,d){e[d]=Math.floor(c*t(n,b)[d*$.cc+p[7]]*t(n,b)[d*$.cc+p[11]]*t(n,I)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,c,d){let s=e||t(this,ye),r=n,o=c||t(this,Y);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,r,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let a=parseInt(i.name.slice(5)),l=a*$.cmt,h="";t(this,$e).subarray(l,l+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG +0 127 ${r} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,r,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,b)[e*$.cc+p[0]],t(this,O)[e],t(this,b)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,re)[e])switch(t(this,R)){case x.mt32:n.ending="~",n.name="",t(this,W).subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,d=3200){let s=this,r;w(s,ae," ".repeat(c)),e.forEach(o=>{w(s,ae,t(s,ae)+String.fromCharCode(o>31?o:32)),o<32&&(r=r||new Set,r.add(o))}),w(s,we,Date.now()+3200),w(s,ae,t(s,ae).padEnd(32," ")),r&&(r=Array.from(r),r.forEach((o,i,a)=>{a[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${r.length>1?"s":""}: 0x${r.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c<$.ace;)t(this,le)[c]==e?n=!1:t(this,le)[c]||(n=!1,t(this,le)[c]=e,console.info(`Allocated cc${e} to ACE slot ${c}.`)),c++;c>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,le)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let c=t(this,le)[n];if(c){if(_e.indexOf(c)>=0)return t(this,b)[e*$.cc+p[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Y,0),w(this,ce,0),t(this,P).fill(0),t(this,b).fill(0),t(this,le).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,se).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,I,100),w(this,M,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,ae,""),w(this,te,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,c,d){d[c]=c}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,b)[$.cc*9]=Se[0],t(this,b)[$.cc*25]=Se[0],t(this,b)[$.cc*41]=Se[0],t(this,b)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,W).fill(0),t(this,re).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let c=n*$.cc;t(this,b)[c+p[7]]=100,t(this,b)[c+p[11]]=127,t(this,b)[c+p[10]]=64,t(this,b)[c+p[71]]=64,t(this,b)[c+p[72]]=64,t(this,b)[c+p[73]]=64,t(this,b)[c+p[74]]=64,t(this,b)[c+p[75]]=64,t(this,b)[c+p[76]]=64,t(this,b)[c+p[77]]=64,t(this,b)[c+p[78]]=64,t(this,b)[c+p[91]]=40,t(this,b)[c+p[101]]=127,t(this,b)[c+p[100]]=127,t(this,b)[c+p[99]]=127,t(this,b)[c+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let c=be.indexOf(e);if(c>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,c),w(this,K,0),w(this,ye,Et[0][c]),w(this,Y,Et[1][c]);for(let r=0;r<$.ch;r++)t(this,T)[r]>0&&t(this,b)[r*$.cc+p[0]]==Se[d]&&(t(this,b)[r*$.cc]=Se[c]);switch(this.initOnReset,c){case x.mt32:{Ze.forEach((r,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=r,t(this,b)[i*$.cc+p[91]]=127)});break}}let s;switch(c){case x.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case x.x5d:case x.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let r=0;r<$.efx;r++)t(this,V)[3*r]||(t(this,V)[3*r+1]=s[2*r],t(this,V)[3*r+2]=s[2*r+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,se).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let c=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[c])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${c+1} without any recipient.`)}t(this,M).length>100&&t(this,M).splice(100,t(this,M).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,te=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,b=new WeakMap,le=new WeakMap,O=new WeakMap,A=new WeakMap,j=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,se=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,re=new WeakMap,ge=new WeakMap,W=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Y=new WeakMap,I=new WeakMap,ce=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,ae=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,M=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,xe=new WeakMap,Me=new WeakMap,Q=new WeakMap,ie=new WeakMap,fe=new WeakMap,Ce=new WeakMap,Te=new WeakMap,Re=new WeakMap,Mt);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Ct as dnToPos}; diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..f747cf3d --- /dev/null +++ b/docs/README.md @@ -0,0 +1,26 @@ +# Docs +## Octavia documentation +Here lies documentation of the Octavia project. + +### Support table +* [Implementation sheet](support/implementation.md) +* [SysEx instructions sheet](support/sysex.md) +* [Targets](support/target.md) + +### Implementation +* [Basic messages](impl/basic.md) +* [Control changes](impl/cc.md) +* [RPN/NRPN values](impl/pn.md) +* [Audio Effects](impl/efx.md) + +### SysEx documentation +* [Mutual instructions](sysex/mutual.md) +* [Roland MT-32](sysex/mt32.md) +* [KORG 05/X5/N5](sysex/korgOld.md) + +### API documentation +* [`state.mjs`: the core processing unit](state/README.md) +* [`basic.mjs`: the basis for visualizers](basic/README.md) +* [`bridge.mjs`: the basis for middleware](bridge/README.md) +* [`disp.mjs`: ready-made example visualizers](disp/README.md) +* [`middle.mjs`: ready-made middleware with real-time translation capabilities](middle/README.md) \ No newline at end of file diff --git a/docs/conf.json b/docs/conf.json new file mode 100644 index 00000000..32fe4b7d --- /dev/null +++ b/docs/conf.json @@ -0,0 +1,6 @@ +{ + "site": { + "name": "Octavia Docs", + "favicon": "favicon.svg" + } +} diff --git a/docs/impl/efx.md b/docs/impl/efx.md new file mode 100644 index 00000000..f5a85d7c --- /dev/null +++ b/docs/impl/efx.md @@ -0,0 +1,57 @@ +# Audio Effects +## Audio effects +Octavia supports tracking a range of audio effects applied on supported targets. For maximum compatibility, Octavia has seven available slots reserved for effect sends, which correspond to reverb, chorus, variation and four insertions in order. + +Each slot isn't dedicated to what that slot is primarily used for, but rather allocated and controlled by the CC registers they are assigned to by default (cc91, cc93, cc94, cc16-19). For example, the variation slot (cc94) is taken away by delay effects when in GS mode, while the reverb and chorus slot could be taken away by any effect desired in X5DR or NS5R mode. + +Due to varied setups, each effect also isn't just bound to the CC registers they are assigned to. They can also listen on other CC registers, or even multiple if they wish. + +## Comparison table +### Singular effect +#### Reverb +| Yamaha XG | GS Reverb | GS Insertion | KORG AI² | +| --------- | --------- | ------------ | -------- | +| Hall (1, 2, M, L) | Hall (1, 2) | Hall (1, 2) | Hall (normal,
ensemble, concert) | +| Room (1-3, S, M, L) | Room (1-3) | Room (1, 2) | Room (normal,
large) | +| Stage (1, 2) | | Stage (1, 2) | Stage | +| Plate (XG, GM) | Plate | | Plate (wet, dry) | +| Delay (LCR, LR) | Delay | Delay (stereo) | Delay (stereo) | +| Echo | | | | +| Cross Delay | Panning Delay | Delay (3-tap, 4-tap,
mod, 3D, trem.c.) | Delay (cross, dual, tap 1-3) | +| Early Reflection
(1, 2) | | | Early Reflection
(1-3) | +| Gate (forward, reverse) | | Gate (forward, reverse,
sweep 1-2) | | +| White Room | | | | +| Tunnel | | | | +| Canyon | | | | +| Basement | | | | +| Karaoke (1, 2, 3) | | | | +| | | | Spring | +#### Chorus +| Yamaha XG | GS Chorus | GS Insertion | KORG AI² | +| --------- | --------- | ------------ | -------- | +#### Delay +| Yamaha XG | GS Delay | GS Insertion | KORG AI² | +| --------- | --------- | ------------ | -------- | +#### Miscellaneous +| Yamaha XG | GS Insertion | KORG AI² | +| --------- | ------------ | -------- | +### Dual effect +#### Mutual +* X: Yamaha XG +* G: Roland GS +* A: KORG AI² + +| | Rev | Cho | Ovr | Dst | Enh | Fln | Dly | Rot | Phs | Amp | Cmp | AWa | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | +| Rev | | | | | | | A | | | | | | +| Cho | | | G | G | G | G | GA | | | | | | +| Ovr | | G | G | | | G | XGA | XG | G | | | XG | +| Dst | | G | | | | G | XGA | X | | | X | X | +| Enh | | G | | | | G | G | | | | | | +| Fln | | G | G | G | G | | GA | | | | | | +| Dly | A | GA | XGA | XGA | G | GA | A | A | A | | | | +| Rot | | | XG | X | | | A | X | | X | | | +| Phs | | | G | | | | A | | | | | | +| Amp | | | | | | | | X | | | | | +| Cmp | | | | X | | | | | | | | | +| AWa | | | XG | X | | | | | | | | | diff --git a/docs/impl/pn.md b/docs/impl/pn.md new file mode 100644 index 00000000..059fda0d --- /dev/null +++ b/docs/impl/pn.md @@ -0,0 +1,2 @@ +# RPN/NRPN values +## RPN/NRPN values diff --git a/docs/index.htm b/docs/index.htm new file mode 100644 index 00000000..aed5ef76 --- /dev/null +++ b/docs/index.htm @@ -0,0 +1 @@ +Parchment is loading...
Loading...
diff --git a/docs/index.js b/docs/index.js new file mode 100644 index 00000000..7aaa9880 --- /dev/null +++ b/docs/index.js @@ -0,0 +1 @@ +"use strict";(()=>{var x=function(e,t="&",r="="){let n=new Map;return e.length&&e.slice(1).split(t).forEach(c=>{let h=decodeURIComponent(c),y=h.indexOf(r);y>=0?n.set(h.slice(0,y),h.slice(y+r.length)):n.set(h,null)}),n};var s=function(e,t=document){return t?.querySelector(e)},a=function(e,t=document){return Array.from(t?.querySelectorAll(e))};var g,A=new Worker("./worker.js"),k=[],L=x(location.search),o,v=!1,p,d,D=function(e){for(let t in d)t==e?d[t].removeAttribute("hidden-slowly"):d[t].setAttribute("hidden-slowly","true");d[e]?p.removeAttribute("hidden-slowly"):p.setAttribute("hidden-slowly","true")},f=document,u=f.children[0],O=async function(e){e.preventDefault(),e.stopPropagation();let t=this.getAttribute("parchment");S(),await $(t),k.push(t)},P=function(){location.hash=`#${this.id||""}`},l=function(e){return e?.length||(e?.length==0?e="README":e=L.get("p")||"README"),e.toLowerCase().indexOf(".md")<0?e+".md":e},S=function(){let e=history.state||{};e[l()]={sX:u.scrollLeft,sY:u.scrollTop},history.replaceState(e,"")},T=function(e){a("table",e).forEach(t=>{t.setAttribute("role","grid")}),a("img",e).forEach(t=>{t.setAttribute("decoding","async"),t.setAttribute("loading","lazy")}),a("h1, h2, h3, h4, h5, h6",e).forEach(t=>{t.addEventListener("click",P)}),a("a",e).forEach(t=>{let r=t.getAttribute("href"),n=r.indexOf(":"),c=r.indexOf("/");n>-1&&n<6&&c<8?(t.setAttribute("target","_blank"),t.setAttribute("data-tooltip","This link will be opened in a new tab.")):r[0]=="#"||(t.setAttribute("parchment",r),t.href=`?p=${r}`),t.addEventListener("click",O)})},C=new DOMParser,b=new Map,i,w,j=function(e){return b.has(e)?!0:(A.postMessage({id:e}),!1)};var E=async function(e){for(;o.children.length>0;)i?(i.body.appendChild(o.children[0]),console.debug("Moving the current render result...")):(o.removeChild(o.children[0]),console.debug("Removing the current render result..."));i=e,m();let t=i.body.children.length,r=0;for(let n=0;n{let t=e.data;if(t.ok){let r=C.parseFromString(t.data,"text/html");T(r),b.set(t.id,r),w==t.id&&E(r)}else w==t.id});self.parsedDoms=b;var m=async function(e){i?(self.currentDom=i,f.title=`${s("h1",i)?.innerText||"Untitled"} - ${g?.site?.name||"Parchment"}`):f.title=`${e||"Loading"} - ${g?.site?.name||"Parchment"}`};f.addEventListener("readystatechange",function(){switch(this.readyState){case"interactive":{o=s("main.container"),p=s(".overlay"),d={loading:s("#loading-overlay")},m(),$(l()),k.push(l());break}case"loaded":{m();break}}});fetch("./conf.json").then(e=>e.json()).then(e=>{g=e,m()});addEventListener("beforeunload",()=>{v&&S()});})(); diff --git a/docs/parchment.css b/docs/parchment.css new file mode 100644 index 00000000..5c6fc8ee --- /dev/null +++ b/docs/parchment.css @@ -0,0 +1 @@ +:root{--primary: #039be5}[hidden-slowly]{opacity:0!important;pointer-events:none}blockquote>p{margin-bottom:0}blockquote>blockquote{margin:calc(var(--typography-spacing-vertical) / 2) 0}th{font-weight:700}main,footer{padding:calc(var(--spacing) * 2) 0!important}footer{opacity:.5}.overlay{background-color:var(--background-color);position:fixed;top:0;left:0;height:100%;display:flex;justify-content:center}.overlay-item{position:absolute;top:0}.overlay,.overlay-item{opacity:1;transition:.5s opacity}#loading-overlay{max-width:max-content} diff --git a/docs/pico.css b/docs/pico.css new file mode 100644 index 00000000..4125c0de --- /dev/null +++ b/docs/pico.css @@ -0,0 +1,4 @@ +@charset "UTF-8";/*! + * Pico.css v1.5.7 (https://picocss.com) + * Copyright 2019-2023 - Licensed under MIT + */:root{--font-family:system-ui,-apple-system,"Segoe UI","Roboto","Ubuntu","Cantarell","Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--line-height:1.5;--font-weight:400;--font-size:16px;--border-radius:0.25rem;--border-width:1px;--outline-width:3px;--spacing:1rem;--typography-spacing-vertical:1.5rem;--block-spacing-vertical:calc(var(--spacing) * 2);--block-spacing-horizontal:var(--spacing);--grid-spacing-vertical:0;--grid-spacing-horizontal:var(--spacing);--form-element-spacing-vertical:0.75rem;--form-element-spacing-horizontal:1rem;--nav-element-spacing-vertical:1rem;--nav-element-spacing-horizontal:0.5rem;--nav-link-spacing-vertical:0.5rem;--nav-link-spacing-horizontal:0.5rem;--form-label-font-weight:var(--font-weight);--transition:0.2s ease-in-out;--modal-overlay-backdrop-filter:blur(0.25rem)}@media (min-width:576px){:root{--font-size:17px}}@media (min-width:768px){:root{--font-size:18px}}@media (min-width:992px){:root{--font-size:19px}}@media (min-width:1200px){:root{--font-size:20px}}@media (min-width:576px){body>footer,body>header,body>main,section{--block-spacing-vertical:calc(var(--spacing) * 2.5)}}@media (min-width:768px){body>footer,body>header,body>main,section{--block-spacing-vertical:calc(var(--spacing) * 3)}}@media (min-width:992px){body>footer,body>header,body>main,section{--block-spacing-vertical:calc(var(--spacing) * 3.5)}}@media (min-width:1200px){body>footer,body>header,body>main,section{--block-spacing-vertical:calc(var(--spacing) * 4)}}@media (min-width:576px){article{--block-spacing-horizontal:calc(var(--spacing) * 1.25)}}@media (min-width:768px){article{--block-spacing-horizontal:calc(var(--spacing) * 1.5)}}@media (min-width:992px){article{--block-spacing-horizontal:calc(var(--spacing) * 1.75)}}@media (min-width:1200px){article{--block-spacing-horizontal:calc(var(--spacing) * 2)}}dialog>article{--block-spacing-vertical:calc(var(--spacing) * 2);--block-spacing-horizontal:var(--spacing)}@media (min-width:576px){dialog>article{--block-spacing-vertical:calc(var(--spacing) * 2.5);--block-spacing-horizontal:calc(var(--spacing) * 1.25)}}@media (min-width:768px){dialog>article{--block-spacing-vertical:calc(var(--spacing) * 3);--block-spacing-horizontal:calc(var(--spacing) * 1.5)}}a{--text-decoration:none}a.contrast,a.secondary{--text-decoration:underline}small{--font-size:0.875em}h1,h2,h3,h4,h5,h6{--font-weight:700}h1{--font-size:2rem;--typography-spacing-vertical:3rem}h2{--font-size:1.75rem;--typography-spacing-vertical:2.625rem}h3{--font-size:1.5rem;--typography-spacing-vertical:2.25rem}h4{--font-size:1.25rem;--typography-spacing-vertical:1.874rem}h5{--font-size:1.125rem;--typography-spacing-vertical:1.6875rem}[type=checkbox],[type=radio]{--border-width:2px}[type=checkbox][role=switch]{--border-width:3px}tfoot td,tfoot th,thead td,thead th{--border-width:3px}:not(thead,tfoot)>*>td{--font-size:0.875em}code,kbd,pre,samp{--font-family:"Menlo","Consolas","Roboto Mono","Ubuntu Monospace","Noto Mono","Oxygen Mono","Liberation Mono",monospace,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"}kbd{--font-weight:bolder}:root:not([data-theme=dark]),[data-theme=light]{--background-color:#fff;--color:hsl(205deg, 20%, 32%);--h1-color:hsl(205deg, 30%, 15%);--h2-color:#24333e;--h3-color:hsl(205deg, 25%, 23%);--h4-color:#374956;--h5-color:hsl(205deg, 20%, 32%);--h6-color:#4d606d;--muted-color:hsl(205deg, 10%, 50%);--muted-border-color:hsl(205deg, 20%, 94%);--primary:hsl(195deg, 85%, 41%);--primary-hover:hsl(195deg, 90%, 32%);--primary-focus:rgba(16, 149, 193, 0.125);--primary-inverse:#fff;--secondary:hsl(205deg, 15%, 41%);--secondary-hover:hsl(205deg, 20%, 32%);--secondary-focus:rgba(89, 107, 120, 0.125);--secondary-inverse:#fff;--contrast:hsl(205deg, 30%, 15%);--contrast-hover:#000;--contrast-focus:rgba(89, 107, 120, 0.125);--contrast-inverse:#fff;--mark-background-color:#fff2ca;--mark-color:#543a26;--ins-color:#388e3c;--del-color:#c62828;--blockquote-border-color:var(--muted-border-color);--blockquote-footer-color:var(--muted-color);--button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--form-element-background-color:transparent;--form-element-border-color:hsl(205deg, 14%, 68%);--form-element-color:var(--color);--form-element-placeholder-color:var(--muted-color);--form-element-active-background-color:transparent;--form-element-active-border-color:var(--primary);--form-element-focus-color:var(--primary-focus);--form-element-disabled-background-color:hsl(205deg, 18%, 86%);--form-element-disabled-border-color:hsl(205deg, 14%, 68%);--form-element-disabled-opacity:0.5;--form-element-invalid-border-color:#c62828;--form-element-invalid-active-border-color:#d32f2f;--form-element-invalid-focus-color:rgba(211, 47, 47, 0.125);--form-element-valid-border-color:#388e3c;--form-element-valid-active-border-color:#43a047;--form-element-valid-focus-color:rgba(67, 160, 71, 0.125);--switch-background-color:hsl(205deg, 16%, 77%);--switch-color:var(--primary-inverse);--switch-checked-background-color:var(--primary);--range-border-color:hsl(205deg, 18%, 86%);--range-active-border-color:hsl(205deg, 16%, 77%);--range-thumb-border-color:var(--background-color);--range-thumb-color:var(--secondary);--range-thumb-hover-color:var(--secondary-hover);--range-thumb-active-color:var(--primary);--table-border-color:var(--muted-border-color);--table-row-stripped-background-color:#f6f8f9;--code-background-color:hsl(205deg, 20%, 94%);--code-color:var(--muted-color);--code-kbd-background-color:var(--contrast);--code-kbd-color:var(--contrast-inverse);--code-tag-color:hsl(330deg, 40%, 50%);--code-property-color:hsl(185deg, 40%, 40%);--code-value-color:hsl(40deg, 20%, 50%);--code-comment-color:hsl(205deg, 14%, 68%);--accordion-border-color:var(--muted-border-color);--accordion-close-summary-color:var(--color);--accordion-open-summary-color:var(--muted-color);--card-background-color:var(--background-color);--card-border-color:var(--muted-border-color);--card-box-shadow:0.0145rem 0.029rem 0.174rem rgba(27, 40, 50, 0.01698),0.0335rem 0.067rem 0.402rem rgba(27, 40, 50, 0.024),0.0625rem 0.125rem 0.75rem rgba(27, 40, 50, 0.03),0.1125rem 0.225rem 1.35rem rgba(27, 40, 50, 0.036),0.2085rem 0.417rem 2.502rem rgba(27, 40, 50, 0.04302),0.5rem 1rem 6rem rgba(27, 40, 50, 0.06),0 0 0 0.0625rem rgba(27, 40, 50, 0.015);--card-sectionning-background-color:#fbfbfc;--dropdown-background-color:#fbfbfc;--dropdown-border-color:#e1e6eb;--dropdown-box-shadow:var(--card-box-shadow);--dropdown-color:var(--color);--dropdown-hover-background-color:hsl(205deg, 20%, 94%);--modal-overlay-background-color:rgba(213, 220, 226, 0.7);--progress-background-color:hsl(205deg, 18%, 86%);--progress-color:var(--primary);--loading-spinner-opacity:0.5;--tooltip-background-color:var(--contrast);--tooltip-color:var(--contrast-inverse);--icon-checkbox:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(65, 84, 98)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-close:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(115, 130, 140)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");--icon-date:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(65, 84, 98)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E");--icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(198, 40, 40)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");--icon-minus:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E");--icon-search:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(65, 84, 98)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");--icon-time:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(65, 84, 98)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");--icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(56, 142, 60)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:light}@media only screen and (prefers-color-scheme:dark){:root:not([data-theme]){--background-color:#11191f;--color:hsl(205deg, 16%, 77%);--h1-color:hsl(205deg, 20%, 94%);--h2-color:#e1e6eb;--h3-color:hsl(205deg, 18%, 86%);--h4-color:#c8d1d8;--h5-color:hsl(205deg, 16%, 77%);--h6-color:#afbbc4;--muted-color:hsl(205deg, 10%, 50%);--muted-border-color:#1f2d38;--primary:hsl(195deg, 85%, 41%);--primary-hover:hsl(195deg, 80%, 50%);--primary-focus:rgba(16, 149, 193, 0.25);--primary-inverse:#fff;--secondary:hsl(205deg, 15%, 41%);--secondary-hover:hsl(205deg, 10%, 50%);--secondary-focus:rgba(115, 130, 140, 0.25);--secondary-inverse:#fff;--contrast:hsl(205deg, 20%, 94%);--contrast-hover:#fff;--contrast-focus:rgba(115, 130, 140, 0.25);--contrast-inverse:#000;--mark-background-color:#d1c284;--mark-color:#11191f;--ins-color:#388e3c;--del-color:#c62828;--blockquote-border-color:var(--muted-border-color);--blockquote-footer-color:var(--muted-color);--button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--form-element-background-color:#11191f;--form-element-border-color:#374956;--form-element-color:var(--color);--form-element-placeholder-color:var(--muted-color);--form-element-active-background-color:var(--form-element-background-color);--form-element-active-border-color:var(--primary);--form-element-focus-color:var(--primary-focus);--form-element-disabled-background-color:hsl(205deg, 25%, 23%);--form-element-disabled-border-color:hsl(205deg, 20%, 32%);--form-element-disabled-opacity:0.5;--form-element-invalid-border-color:#b71c1c;--form-element-invalid-active-border-color:#c62828;--form-element-invalid-focus-color:rgba(198, 40, 40, 0.25);--form-element-valid-border-color:#2e7d32;--form-element-valid-active-border-color:#388e3c;--form-element-valid-focus-color:rgba(56, 142, 60, 0.25);--switch-background-color:#374956;--switch-color:var(--primary-inverse);--switch-checked-background-color:var(--primary);--range-border-color:#24333e;--range-active-border-color:hsl(205deg, 25%, 23%);--range-thumb-border-color:var(--background-color);--range-thumb-color:var(--secondary);--range-thumb-hover-color:var(--secondary-hover);--range-thumb-active-color:var(--primary);--table-border-color:var(--muted-border-color);--table-row-stripped-background-color:rgba(115, 130, 140, 0.05);--code-background-color:#18232c;--code-color:var(--muted-color);--code-kbd-background-color:var(--contrast);--code-kbd-color:var(--contrast-inverse);--code-tag-color:hsl(330deg, 30%, 50%);--code-property-color:hsl(185deg, 30%, 50%);--code-value-color:hsl(40deg, 10%, 50%);--code-comment-color:#4d606d;--accordion-border-color:var(--muted-border-color);--accordion-active-summary-color:var(--primary);--accordion-close-summary-color:var(--color);--accordion-open-summary-color:var(--muted-color);--card-background-color:#141e26;--card-border-color:var(--card-background-color);--card-box-shadow:0.0145rem 0.029rem 0.174rem rgba(0, 0, 0, 0.01698),0.0335rem 0.067rem 0.402rem rgba(0, 0, 0, 0.024),0.0625rem 0.125rem 0.75rem rgba(0, 0, 0, 0.03),0.1125rem 0.225rem 1.35rem rgba(0, 0, 0, 0.036),0.2085rem 0.417rem 2.502rem rgba(0, 0, 0, 0.04302),0.5rem 1rem 6rem rgba(0, 0, 0, 0.06),0 0 0 0.0625rem rgba(0, 0, 0, 0.015);--card-sectionning-background-color:#18232c;--dropdown-background-color:hsl(205deg, 30%, 15%);--dropdown-border-color:#24333e;--dropdown-box-shadow:var(--card-box-shadow);--dropdown-color:var(--color);--dropdown-hover-background-color:rgba(36, 51, 62, 0.75);--modal-overlay-background-color:rgba(36, 51, 62, 0.8);--progress-background-color:#24333e;--progress-color:var(--primary);--loading-spinner-opacity:0.5;--tooltip-background-color:var(--contrast);--tooltip-color:var(--contrast-inverse);--icon-checkbox:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(162, 175, 185)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(0, 0, 0)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-close:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(115, 130, 140)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");--icon-date:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(162, 175, 185)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E");--icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(183, 28, 28)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");--icon-minus:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E");--icon-search:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(162, 175, 185)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");--icon-time:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(162, 175, 185)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");--icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}}[data-theme=dark]{--background-color:#11191f;--color:hsl(205deg, 16%, 77%);--h1-color:hsl(205deg, 20%, 94%);--h2-color:#e1e6eb;--h3-color:hsl(205deg, 18%, 86%);--h4-color:#c8d1d8;--h5-color:hsl(205deg, 16%, 77%);--h6-color:#afbbc4;--muted-color:hsl(205deg, 10%, 50%);--muted-border-color:#1f2d38;--primary:hsl(195deg, 85%, 41%);--primary-hover:hsl(195deg, 80%, 50%);--primary-focus:rgba(16, 149, 193, 0.25);--primary-inverse:#fff;--secondary:hsl(205deg, 15%, 41%);--secondary-hover:hsl(205deg, 10%, 50%);--secondary-focus:rgba(115, 130, 140, 0.25);--secondary-inverse:#fff;--contrast:hsl(205deg, 20%, 94%);--contrast-hover:#fff;--contrast-focus:rgba(115, 130, 140, 0.25);--contrast-inverse:#000;--mark-background-color:#d1c284;--mark-color:#11191f;--ins-color:#388e3c;--del-color:#c62828;--blockquote-border-color:var(--muted-border-color);--blockquote-footer-color:var(--muted-color);--button-box-shadow:0 0 0 rgba(0, 0, 0, 0);--button-hover-box-shadow:0 0 0 rgba(0, 0, 0, 0);--form-element-background-color:#11191f;--form-element-border-color:#374956;--form-element-color:var(--color);--form-element-placeholder-color:var(--muted-color);--form-element-active-background-color:var(--form-element-background-color);--form-element-active-border-color:var(--primary);--form-element-focus-color:var(--primary-focus);--form-element-disabled-background-color:hsl(205deg, 25%, 23%);--form-element-disabled-border-color:hsl(205deg, 20%, 32%);--form-element-disabled-opacity:0.5;--form-element-invalid-border-color:#b71c1c;--form-element-invalid-active-border-color:#c62828;--form-element-invalid-focus-color:rgba(198, 40, 40, 0.25);--form-element-valid-border-color:#2e7d32;--form-element-valid-active-border-color:#388e3c;--form-element-valid-focus-color:rgba(56, 142, 60, 0.25);--switch-background-color:#374956;--switch-color:var(--primary-inverse);--switch-checked-background-color:var(--primary);--range-border-color:#24333e;--range-active-border-color:hsl(205deg, 25%, 23%);--range-thumb-border-color:var(--background-color);--range-thumb-color:var(--secondary);--range-thumb-hover-color:var(--secondary-hover);--range-thumb-active-color:var(--primary);--table-border-color:var(--muted-border-color);--table-row-stripped-background-color:rgba(115, 130, 140, 0.05);--code-background-color:#18232c;--code-color:var(--muted-color);--code-kbd-background-color:var(--contrast);--code-kbd-color:var(--contrast-inverse);--code-tag-color:hsl(330deg, 30%, 50%);--code-property-color:hsl(185deg, 30%, 50%);--code-value-color:hsl(40deg, 10%, 50%);--code-comment-color:#4d606d;--accordion-border-color:var(--muted-border-color);--accordion-active-summary-color:var(--primary);--accordion-close-summary-color:var(--color);--accordion-open-summary-color:var(--muted-color);--card-background-color:#141e26;--card-border-color:var(--card-background-color);--card-box-shadow:0.0145rem 0.029rem 0.174rem rgba(0, 0, 0, 0.01698),0.0335rem 0.067rem 0.402rem rgba(0, 0, 0, 0.024),0.0625rem 0.125rem 0.75rem rgba(0, 0, 0, 0.03),0.1125rem 0.225rem 1.35rem rgba(0, 0, 0, 0.036),0.2085rem 0.417rem 2.502rem rgba(0, 0, 0, 0.04302),0.5rem 1rem 6rem rgba(0, 0, 0, 0.06),0 0 0 0.0625rem rgba(0, 0, 0, 0.015);--card-sectionning-background-color:#18232c;--dropdown-background-color:hsl(205deg, 30%, 15%);--dropdown-border-color:#24333e;--dropdown-box-shadow:var(--card-box-shadow);--dropdown-color:var(--color);--dropdown-hover-background-color:rgba(36, 51, 62, 0.75);--modal-overlay-background-color:rgba(36, 51, 62, 0.8);--progress-background-color:#24333e;--progress-color:var(--primary);--loading-spinner-opacity:0.5;--tooltip-background-color:var(--contrast);--tooltip-color:var(--contrast-inverse);--icon-checkbox:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(162, 175, 185)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-chevron-button-inverse:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(0, 0, 0)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C/polyline%3E%3C/svg%3E");--icon-close:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(115, 130, 140)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='18' y1='6' x2='6' y2='18'%3E%3C/line%3E%3Cline x1='6' y1='6' x2='18' y2='18'%3E%3C/line%3E%3C/svg%3E");--icon-date:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(162, 175, 185)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2' ry='2'%3E%3C/rect%3E%3Cline x1='16' y1='2' x2='16' y2='6'%3E%3C/line%3E%3Cline x1='8' y1='2' x2='8' y2='6'%3E%3C/line%3E%3Cline x1='3' y1='10' x2='21' y2='10'%3E%3C/line%3E%3C/svg%3E");--icon-invalid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(183, 28, 28)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cline x1='12' y1='8' x2='12' y2='12'%3E%3C/line%3E%3Cline x1='12' y1='16' x2='12.01' y2='16'%3E%3C/line%3E%3C/svg%3E");--icon-minus:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(255, 255, 255)' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='5' y1='12' x2='19' y2='12'%3E%3C/line%3E%3C/svg%3E");--icon-search:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(162, 175, 185)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'%3E%3C/circle%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'%3E%3C/line%3E%3C/svg%3E");--icon-time:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(162, 175, 185)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpolyline points='12 6 12 12 16 14'%3E%3C/polyline%3E%3C/svg%3E");--icon-valid:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='rgb(46, 125, 50)' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'%3E%3C/polyline%3E%3C/svg%3E");color-scheme:dark}[type=checkbox],[type=radio],[type=range],progress{accent-color:var(--primary)}*,::after,::before{box-sizing:border-box;background-repeat:no-repeat}::after,::before{text-decoration:inherit;vertical-align:inherit}:where(:root){-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--background-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);line-height:var(--line-height);font-family:var(--font-family);text-rendering:optimizeLegibility;overflow-wrap:break-word;cursor:default;-moz-tab-size:4;-o-tab-size:4;tab-size:4}main{display:block}body{width:100%;margin:0}body>footer,body>header,body>main{width:100%;margin-right:auto;margin-left:auto;padding:var(--block-spacing-vertical) 0}.container,.container-fluid{width:100%;margin-right:auto;margin-left:auto;padding-right:var(--spacing);padding-left:var(--spacing)}@media (min-width:576px){.container{max-width:510px;padding-right:0;padding-left:0}}@media (min-width:768px){.container{max-width:700px}}@media (min-width:992px){.container{max-width:920px}}@media (min-width:1200px){.container{max-width:1130px}}section{margin-bottom:var(--block-spacing-vertical)}.grid{grid-column-gap:var(--grid-spacing-horizontal);grid-row-gap:var(--grid-spacing-vertical);display:grid;grid-template-columns:1fr;margin:0}@media (min-width:992px){.grid{grid-template-columns:repeat(auto-fit,minmax(0%,1fr))}}.grid>*{min-width:0}figure{display:block;margin:0;padding:0;overflow-x:auto}figure figcaption{padding:calc(var(--spacing) * .5) 0;color:var(--muted-color)}b,strong{font-weight:bolder}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}address,blockquote,dl,figure,form,ol,p,pre,table,ul{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-style:normal;font-weight:var(--font-weight);font-size:var(--font-size)}[role=link],a{--color:var(--primary);--background-color:transparent;outline:0;background-color:var(--background-color);color:var(--color);-webkit-text-decoration:var(--text-decoration);text-decoration:var(--text-decoration);transition:background-color var(--transition),color var(--transition),box-shadow var(--transition),-webkit-text-decoration var(--transition);transition:background-color var(--transition),color var(--transition),text-decoration var(--transition),box-shadow var(--transition);transition:background-color var(--transition),color var(--transition),text-decoration var(--transition),box-shadow var(--transition),-webkit-text-decoration var(--transition)}[role=link]:is([aria-current],:hover,:active,:focus),a:is([aria-current],:hover,:active,:focus){--color:var(--primary-hover);--text-decoration:underline}[role=link]:focus,a:focus{--background-color:var(--primary-focus)}[role=link].secondary,a.secondary{--color:var(--secondary)}[role=link].secondary:is([aria-current],:hover,:active,:focus),a.secondary:is([aria-current],:hover,:active,:focus){--color:var(--secondary-hover)}[role=link].secondary:focus,a.secondary:focus{--background-color:var(--secondary-focus)}[role=link].contrast,a.contrast{--color:var(--contrast)}[role=link].contrast:is([aria-current],:hover,:active,:focus),a.contrast:is([aria-current],:hover,:active,:focus){--color:var(--contrast-hover)}[role=link].contrast:focus,a.contrast:focus{--background-color:var(--contrast-focus)}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:var(--typography-spacing-vertical);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);font-family:var(--font-family)}h1{--color:var(--h1-color)}h2{--color:var(--h2-color)}h3{--color:var(--h3-color)}h4{--color:var(--h4-color)}h5{--color:var(--h5-color)}h6{--color:var(--h6-color)}:where(address,blockquote,dl,figure,form,ol,p,pre,table,ul)~:is(h1,h2,h3,h4,h5,h6){margin-top:var(--typography-spacing-vertical)}.headings,hgroup{margin-bottom:var(--typography-spacing-vertical)}.headings>*,hgroup>*{margin-bottom:0}.headings>:last-child,hgroup>:last-child{--color:var(--muted-color);--font-weight:unset;font-size:1rem;font-family:unset}p{margin-bottom:var(--typography-spacing-vertical)}small{font-size:var(--font-size)}:where(dl,ol,ul){padding-right:0;padding-left:var(--spacing);-webkit-padding-start:var(--spacing);padding-inline-start:var(--spacing);-webkit-padding-end:0;padding-inline-end:0}:where(dl,ol,ul) li{margin-bottom:calc(var(--typography-spacing-vertical) * .25)}:where(dl,ol,ul) :is(dl,ol,ul){margin:0;margin-top:calc(var(--typography-spacing-vertical) * .25)}ul li{list-style:square}mark{padding:.125rem .25rem;background-color:var(--mark-background-color);color:var(--mark-color);vertical-align:baseline}blockquote{display:block;margin:var(--typography-spacing-vertical) 0;padding:var(--spacing);border-right:none;border-left:.25rem solid var(--blockquote-border-color);-webkit-border-start:0.25rem solid var(--blockquote-border-color);border-inline-start:0.25rem solid var(--blockquote-border-color);-webkit-border-end:none;border-inline-end:none}blockquote footer{margin-top:calc(var(--typography-spacing-vertical) * .5);color:var(--blockquote-footer-color)}abbr[title]{border-bottom:1px dotted;text-decoration:none;cursor:help}ins{color:var(--ins-color);text-decoration:none}del{color:var(--del-color)}::-moz-selection{background-color:var(--primary-focus)}::selection{background-color:var(--primary-focus)}:where(audio,canvas,iframe,img,svg,video){vertical-align:middle}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}:where(iframe){border-style:none}img{max-width:100%;height:auto;border-style:none}:where(svg:not([fill])){fill:currentColor}svg:not(:root){overflow:hidden}button{margin:0;overflow:visible;font-family:inherit;text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}button{display:block;width:100%;margin-bottom:var(--spacing)}[role=button]{display:inline-block;text-decoration:none}[role=button],button,input[type=button],input[type=reset],input[type=submit]{--background-color:var(--primary);--border-color:var(--primary);--color:var(--primary-inverse);--box-shadow:var(--button-box-shadow, 0 0 0 rgba(0, 0, 0, 0));padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:0;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[role=button]:is([aria-current],:hover,:active,:focus),button:is([aria-current],:hover,:active,:focus),input[type=button]:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus),input[type=submit]:is([aria-current],:hover,:active,:focus){--background-color:var(--primary-hover);--border-color:var(--primary-hover);--box-shadow:var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0));--color:var(--primary-inverse)}[role=button]:focus,button:focus,input[type=button]:focus,input[type=reset]:focus,input[type=submit]:focus{--box-shadow:var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--outline-width) var(--primary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).secondary,input[type=reset]{--background-color:var(--secondary);--border-color:var(--secondary);--color:var(--secondary-inverse);cursor:pointer}:is(button,input[type=submit],input[type=button],[role=button]).secondary:is([aria-current],:hover,:active,:focus),input[type=reset]:is([aria-current],:hover,:active,:focus){--background-color:var(--secondary-hover);--border-color:var(--secondary-hover);--color:var(--secondary-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).secondary:focus,input[type=reset]:focus{--box-shadow:var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--outline-width) var(--secondary-focus)}:is(button,input[type=submit],input[type=button],[role=button]).contrast{--background-color:var(--contrast);--border-color:var(--contrast);--color:var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:is([aria-current],:hover,:active,:focus){--background-color:var(--contrast-hover);--border-color:var(--contrast-hover);--color:var(--contrast-inverse)}:is(button,input[type=submit],input[type=button],[role=button]).contrast:focus{--box-shadow:var(--button-hover-box-shadow, 0 0 0 rgba(0, 0, 0, 0)),0 0 0 var(--outline-width) var(--contrast-focus)}:is(button,input[type=submit],input[type=button],[role=button]).outline,input[type=reset].outline{--background-color:transparent;--color:var(--primary)}:is(button,input[type=submit],input[type=button],[role=button]).outline:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--background-color:transparent;--color:var(--primary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary,input[type=reset].outline{--color:var(--secondary)}:is(button,input[type=submit],input[type=button],[role=button]).outline.secondary:is([aria-current],:hover,:active,:focus),input[type=reset].outline:is([aria-current],:hover,:active,:focus){--color:var(--secondary-hover)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast{--color:var(--contrast)}:is(button,input[type=submit],input[type=button],[role=button]).outline.contrast:is([aria-current],:hover,:active,:focus){--color:var(--contrast-hover)}:where(button,[type=submit],[type=button],[type=reset],[role=button])[disabled],:where(fieldset[disabled]) :is(button,[type=submit],[type=button],[type=reset],[role=button]),a[role=button]:not([href]){opacity:.5;pointer-events:none}input,optgroup,select,textarea{margin:0;font-size:1rem;line-height:var(--line-height);font-family:inherit;letter-spacing:inherit}input{overflow:visible}select{text-transform:none}legend{max-width:100%;padding:0;color:inherit;white-space:normal}textarea{overflow:auto}[type=checkbox],[type=radio]{padding:0}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}::-moz-focus-inner{padding:0;border-style:none}:-moz-focusring{outline:0}:-moz-ui-invalid{box-shadow:none}::-ms-expand{display:none}[type=file],[type=range]{padding:0;border-width:0}input:not([type=checkbox],[type=radio],[type=range]){height:calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2)}fieldset{margin:0;margin-bottom:var(--spacing);padding:0;border:0}fieldset legend,label{display:block;margin-bottom:calc(var(--spacing) * .25);font-weight:var(--form-label-font-weight,var(--font-weight))}input:not([type=checkbox],[type=radio]),select,textarea{width:100%}input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal)}input,select,textarea{--background-color:var(--form-element-background-color);--border-color:var(--form-element-border-color);--color:var(--form-element-color);--box-shadow:none;border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:0;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}:where(select,textarea):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[type=checkbox],[type=radio],[readonly]):is(:active,:focus){--background-color:var(--form-element-active-background-color)}:where(select,textarea):is(:active,:focus),input:not([type=submit],[type=button],[type=reset],[role=switch],[readonly]):is(:active,:focus){--border-color:var(--form-element-active-border-color)}input:not([type=submit],[type=button],[type=reset],[type=range],[type=file],[readonly]):focus,select:focus,textarea:focus{--box-shadow:0 0 0 var(--outline-width) var(--form-element-focus-color)}:where(fieldset[disabled]) :is(input:not([type=submit],[type=button],[type=reset]),select,textarea),input:not([type=submit],[type=button],[type=reset])[disabled],select[disabled],textarea[disabled]{--background-color:var(--form-element-disabled-background-color);--border-color:var(--form-element-disabled-border-color);opacity:var(--form-element-disabled-opacity);pointer-events:none}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid]{padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem)!important;padding-left:var(--form-element-spacing-horizontal);-webkit-padding-start:var(--form-element-spacing-horizontal)!important;padding-inline-start:var(--form-element-spacing-horizontal)!important;-webkit-padding-end:calc(var(--form-element-spacing-horizontal) + 1.5rem)!important;padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem)!important;background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=false]{background-image:var(--icon-valid)}:where(input,select,textarea):not([type=checkbox],[type=radio],[type=date],[type=datetime-local],[type=month],[type=time],[type=week])[aria-invalid=true]{background-image:var(--icon-invalid)}:where(input,select,textarea)[aria-invalid=false]{--border-color:var(--form-element-valid-border-color)}:where(input,select,textarea)[aria-invalid=false]:is(:active,:focus){--border-color:var(--form-element-valid-active-border-color)!important;--box-shadow:0 0 0 var(--outline-width) var(--form-element-valid-focus-color)!important}:where(input,select,textarea)[aria-invalid=true]{--border-color:var(--form-element-invalid-border-color)}:where(input,select,textarea)[aria-invalid=true]:is(:active,:focus){--border-color:var(--form-element-invalid-active-border-color)!important;--box-shadow:0 0 0 var(--outline-width) var(--form-element-invalid-focus-color)!important}[dir=rtl] :where(input,select,textarea):not([type=checkbox],[type=radio]):is([aria-invalid],[aria-invalid=true],[aria-invalid=false]){background-position:center left .75rem}input::-webkit-input-placeholder,input::placeholder,select:invalid,textarea::-webkit-input-placeholder,textarea::placeholder{color:var(--form-element-placeholder-color);opacity:1}input:not([type=checkbox],[type=radio]),select,textarea{margin-bottom:var(--spacing)}select::-ms-expand{border:0;background-color:transparent}select:not([multiple],[size]){padding-right:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-left:var(--form-element-spacing-horizontal);-webkit-padding-start:var(--form-element-spacing-horizontal);padding-inline-start:var(--form-element-spacing-horizontal);-webkit-padding-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);padding-inline-end:calc(var(--form-element-spacing-horizontal) + 1.5rem);background-image:var(--icon-chevron);background-position:center right .75rem;background-size:1rem auto;background-repeat:no-repeat}[dir=rtl] select:not([multiple],[size]){background-position:center left .75rem}:where(input,select,textarea,.grid)+small{display:block;width:100%;margin-top:calc(var(--spacing) * -.75);margin-bottom:var(--spacing);color:var(--muted-color)}label>:where(input,select,textarea){margin-top:calc(var(--spacing) * .25)}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:1.25em;height:1.25em;margin-top:-.125em;margin-right:.375em;margin-left:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:.375em;margin-inline-end:.375em;border-width:var(--border-width);font-size:inherit;vertical-align:middle;cursor:pointer}[type=checkbox]::-ms-check,[type=radio]::-ms-check{display:none}[type=checkbox]:checked,[type=checkbox]:checked:active,[type=checkbox]:checked:focus,[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color:var(--primary);--border-color:var(--primary);background-image:var(--icon-checkbox);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=checkbox]~label,[type=radio]~label{display:inline-block;margin-right:.375em;margin-bottom:0;cursor:pointer}[type=checkbox]:indeterminate{--background-color:var(--primary);--border-color:var(--primary);background-image:var(--icon-minus);background-position:center;background-size:.75em auto;background-repeat:no-repeat}[type=radio]{border-radius:50%}[type=radio]:checked,[type=radio]:checked:active,[type=radio]:checked:focus{--background-color:var(--primary-inverse);border-width:.35em;background-image:none}[type=checkbox][role=switch]{--background-color:var(--switch-background-color);--border-color:var(--switch-background-color);--color:var(--switch-color);width:2.25em;height:1.25em;border:var(--border-width) solid var(--border-color);border-radius:1.25em;background-color:var(--background-color);line-height:1.25em}[type=checkbox][role=switch]:focus{--background-color:var(--switch-background-color);--border-color:var(--switch-background-color)}[type=checkbox][role=switch]:checked{--background-color:var(--switch-checked-background-color);--border-color:var(--switch-checked-background-color)}[type=checkbox][role=switch]:before{display:block;width:calc(1.25em - (var(--border-width) * 2));height:100%;border-radius:50%;background-color:var(--color);content:"";transition:margin .1s ease-in-out}[type=checkbox][role=switch]:checked{background-image:none}[type=checkbox][role=switch]:checked::before{margin-left:calc(1.125em - var(--border-width));-webkit-margin-start:calc(1.125em - var(--border-width));margin-inline-start:calc(1.125em - var(--border-width))}[type=checkbox]:checked[aria-invalid=false],[type=checkbox][aria-invalid=false],[type=checkbox][role=switch]:checked[aria-invalid=false],[type=checkbox][role=switch][aria-invalid=false],[type=radio]:checked[aria-invalid=false],[type=radio][aria-invalid=false]{--border-color:var(--form-element-valid-border-color)}[type=checkbox]:checked[aria-invalid=true],[type=checkbox][aria-invalid=true],[type=checkbox][role=switch]:checked[aria-invalid=true],[type=checkbox][role=switch][aria-invalid=true],[type=radio]:checked[aria-invalid=true],[type=radio][aria-invalid=true]{--border-color:var(--form-element-invalid-border-color)}[type=color]::-webkit-color-swatch-wrapper{padding:0}[type=color]::-moz-focus-inner{padding:0}[type=color]::-webkit-color-swatch{border:0;border-radius:calc(var(--border-radius) * .5)}[type=color]::-moz-color-swatch{border:0;border-radius:calc(var(--border-radius) * .5)}input:not([type=checkbox],[type=radio],[type=range],[type=file]):is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){--icon-position:0.75rem;--icon-width:1rem;padding-right:calc(var(--icon-width) + var(--icon-position));background-image:var(--icon-date);background-position:center right var(--icon-position);background-size:var(--icon-width) auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=time]{background-image:var(--icon-time)}[type=date]::-webkit-calendar-picker-indicator,[type=datetime-local]::-webkit-calendar-picker-indicator,[type=month]::-webkit-calendar-picker-indicator,[type=time]::-webkit-calendar-picker-indicator,[type=week]::-webkit-calendar-picker-indicator{width:var(--icon-width);margin-right:calc(var(--icon-width) * -1);margin-left:var(--icon-position);opacity:0}[dir=rtl] :is([type=date],[type=datetime-local],[type=month],[type=time],[type=week]){text-align:right}[type=file]{--color:var(--muted-color);padding:calc(var(--form-element-spacing-vertical) * .5) 0;border:0;border-radius:0;background:0 0}[type=file]::file-selector-button{--background-color:var(--secondary);--border-color:var(--secondary);--color:var(--secondary-inverse);margin-right:calc(var(--spacing)/ 2);margin-left:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:calc(var(--spacing)/ 2);margin-inline-end:calc(var(--spacing)/ 2);padding:calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:0;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::file-selector-button:is(:hover,:active,:focus){--background-color:var(--secondary-hover);--border-color:var(--secondary-hover)}[type=file]::-webkit-file-upload-button{--background-color:var(--secondary);--border-color:var(--secondary);--color:var(--secondary-inverse);margin-right:calc(var(--spacing)/ 2);margin-left:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:calc(var(--spacing)/ 2);margin-inline-end:calc(var(--spacing)/ 2);padding:calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:0;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;-webkit-transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-webkit-file-upload-button:is(:hover,:active,:focus){--background-color:var(--secondary-hover);--border-color:var(--secondary-hover)}[type=file]::-ms-browse{--background-color:var(--secondary);--border-color:var(--secondary);--color:var(--secondary-inverse);margin-right:calc(var(--spacing)/ 2);margin-left:0;margin-inline-start:0;margin-inline-end:calc(var(--spacing)/ 2);padding:calc(var(--form-element-spacing-vertical) * .5) calc(var(--form-element-spacing-horizontal) * .5);border:var(--border-width) solid var(--border-color);border-radius:var(--border-radius);outline:0;background-color:var(--background-color);box-shadow:var(--box-shadow);color:var(--color);font-weight:var(--font-weight);font-size:1rem;line-height:var(--line-height);text-align:center;cursor:pointer;-ms-transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}[type=file]::-ms-browse:is(:hover,:active,:focus){--background-color:var(--secondary-hover);--border-color:var(--secondary-hover)}[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:100%;height:1.25rem;background:0 0}[type=range]::-webkit-slider-runnable-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);-webkit-transition:background-color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-moz-range-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);-moz-transition:background-color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-ms-track{width:100%;height:.25rem;border-radius:var(--border-radius);background-color:var(--range-border-color);-ms-transition:background-color var(--transition),box-shadow var(--transition);transition:background-color var(--transition),box-shadow var(--transition)}[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;-webkit-transition:background-color var(--transition),transform var(--transition);transition:background-color var(--transition),transform var(--transition)}[type=range]::-moz-range-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;-moz-transition:background-color var(--transition),transform var(--transition);transition:background-color var(--transition),transform var(--transition)}[type=range]::-ms-thumb{-webkit-appearance:none;width:1.25rem;height:1.25rem;margin-top:-.5rem;border:2px solid var(--range-thumb-border-color);border-radius:50%;background-color:var(--range-thumb-color);cursor:pointer;-ms-transition:background-color var(--transition),transform var(--transition);transition:background-color var(--transition),transform var(--transition)}[type=range]:focus,[type=range]:hover{--range-border-color:var(--range-active-border-color);--range-thumb-color:var(--range-thumb-hover-color)}[type=range]:active{--range-thumb-color:var(--range-thumb-active-color)}[type=range]:active::-webkit-slider-thumb{transform:scale(1.25)}[type=range]:active::-moz-range-thumb{transform:scale(1.25)}[type=range]:active::-ms-thumb{transform:scale(1.25)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{-webkit-padding-start:calc(var(--form-element-spacing-horizontal) + 1.75rem);padding-inline-start:calc(var(--form-element-spacing-horizontal) + 1.75rem);border-radius:5rem;background-image:var(--icon-search);background-position:center left 1.125rem;background-size:1rem auto;background-repeat:no-repeat}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{-webkit-padding-start:calc(var(--form-element-spacing-horizontal) + 1.75rem)!important;padding-inline-start:calc(var(--form-element-spacing-horizontal) + 1.75rem)!important;background-position:center left 1.125rem,center right .75rem}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=false]{background-image:var(--icon-search),var(--icon-valid)}input:not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid=true]{background-image:var(--icon-search),var(--icon-invalid)}[type=search]::-webkit-search-cancel-button{-webkit-appearance:none;display:none}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search]{background-position:center right 1.125rem}[dir=rtl] :where(input):not([type=checkbox],[type=radio],[type=range],[type=file])[type=search][aria-invalid]{background-position:center right 1.125rem,center left .75rem}:where(table){width:100%;border-collapse:collapse;border-spacing:0;text-indent:0}td,th{padding:calc(var(--spacing)/ 2) var(--spacing);border-bottom:var(--border-width) solid var(--table-border-color);color:var(--color);font-weight:var(--font-weight);font-size:var(--font-size);text-align:left;text-align:start}tfoot td,tfoot th{border-top:var(--border-width) solid var(--table-border-color);border-bottom:0}table[role=grid] tbody tr:nth-child(odd){background-color:var(--table-row-stripped-background-color)}code,kbd,pre,samp{font-size:.875em;font-family:var(--font-family)}pre{-ms-overflow-style:scrollbar;overflow:auto}code,kbd,pre{border-radius:var(--border-radius);background:var(--code-background-color);color:var(--code-color);font-weight:var(--font-weight);line-height:initial}code,kbd{display:inline-block;padding:.375rem .5rem}pre{display:block;margin-bottom:var(--spacing);overflow-x:auto}pre>code{display:block;padding:var(--spacing);background:0 0;font-size:14px;line-height:var(--line-height)}code b{color:var(--code-tag-color);font-weight:var(--font-weight)}code i{color:var(--code-property-color);font-style:normal}code u{color:var(--code-value-color);text-decoration:none}code em{color:var(--code-comment-color);font-style:normal}kbd{background-color:var(--code-kbd-background-color);color:var(--code-kbd-color);vertical-align:baseline}hr{height:0;border:0;border-top:1px solid var(--muted-border-color);color:inherit}[hidden],template{display:none!important}canvas{display:inline-block}details{display:block;margin-bottom:var(--spacing);padding-bottom:var(--spacing);border-bottom:var(--border-width) solid var(--accordion-border-color)}details summary{line-height:1rem;list-style-type:none;cursor:pointer;transition:color var(--transition)}details summary:not([role]){color:var(--accordion-close-summary-color)}details summary::-webkit-details-marker{display:none}details summary::marker{display:none}details summary::-moz-list-bullet{list-style-type:none}details summary::after{display:block;width:1rem;height:1rem;-webkit-margin-start:calc(var(--spacing,1rem) * 0.5);margin-inline-start:calc(var(--spacing,1rem) * .5);float:right;transform:rotate(-90deg);background-image:var(--icon-chevron);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:"";transition:transform var(--transition)}details summary:focus{outline:0}details summary:focus:not([role=button]){color:var(--accordion-active-summary-color)}details summary[role=button]{width:100%;text-align:left}details summary[role=button]::after{height:calc(1rem * var(--line-height,1.5));background-image:var(--icon-chevron-button)}details summary[role=button]:not(.outline).contrast::after{background-image:var(--icon-chevron-button-inverse)}details[open]>summary{margin-bottom:calc(var(--spacing))}details[open]>summary:not([role]):not(:focus){color:var(--accordion-open-summary-color)}details[open]>summary::after{transform:rotate(0)}[dir=rtl] details summary{text-align:right}[dir=rtl] details summary::after{float:left;background-position:left center}article{margin:var(--block-spacing-vertical) 0;padding:var(--block-spacing-vertical) var(--block-spacing-horizontal);border-radius:var(--border-radius);background:var(--card-background-color);box-shadow:var(--card-box-shadow)}article>footer,article>header{margin-right:calc(var(--block-spacing-horizontal) * -1);margin-left:calc(var(--block-spacing-horizontal) * -1);padding:calc(var(--block-spacing-vertical) * .66) var(--block-spacing-horizontal);background-color:var(--card-sectionning-background-color)}article>header{margin-top:calc(var(--block-spacing-vertical) * -1);margin-bottom:var(--block-spacing-vertical);border-bottom:var(--border-width) solid var(--card-border-color);border-top-right-radius:var(--border-radius);border-top-left-radius:var(--border-radius)}article>footer{margin-top:var(--block-spacing-vertical);margin-bottom:calc(var(--block-spacing-vertical) * -1);border-top:var(--border-width) solid var(--card-border-color);border-bottom-right-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}:root{--scrollbar-width:0px}dialog{display:flex;z-index:999;position:fixed;top:0;right:0;bottom:0;left:0;align-items:center;justify-content:center;width:inherit;min-width:100%;height:inherit;min-height:100%;padding:var(--spacing);border:0;-webkit-backdrop-filter:var(--modal-overlay-backdrop-filter);backdrop-filter:var(--modal-overlay-backdrop-filter);background-color:var(--modal-overlay-background-color);color:var(--color)}dialog article{max-height:calc(100vh - var(--spacing) * 2);overflow:auto}@media (min-width:576px){dialog article{max-width:510px}}@media (min-width:768px){dialog article{max-width:700px}}dialog article>footer,dialog article>header{padding:calc(var(--block-spacing-vertical) * .5) var(--block-spacing-horizontal)}dialog article>header .close{margin:0;margin-left:var(--spacing);float:right}dialog article>footer{text-align:right}dialog article>footer [role=button]{margin-bottom:0}dialog article>footer [role=button]:not(:first-of-type){margin-left:calc(var(--spacing) * .5)}dialog article p:last-of-type{margin:0}dialog article .close{display:block;width:1rem;height:1rem;margin-top:calc(var(--block-spacing-vertical) * -.5);margin-bottom:var(--typography-spacing-vertical);margin-left:auto;background-image:var(--icon-close);background-position:center;background-size:auto 1rem;background-repeat:no-repeat;opacity:.5;transition:opacity var(--transition)}dialog article .close:is([aria-current],:hover,:active,:focus){opacity:1}dialog:not([open]),dialog[open=false]{display:none}.modal-is-open{padding-right:var(--scrollbar-width,0);overflow:hidden;pointer-events:none;touch-action:none}.modal-is-open dialog{pointer-events:auto}:where(.modal-is-opening,.modal-is-closing) dialog,:where(.modal-is-opening,.modal-is-closing) dialog>article{animation-duration:.2s;animation-timing-function:ease-in-out;animation-fill-mode:both}:where(.modal-is-opening,.modal-is-closing) dialog{animation-duration:.8s;animation-name:modal-overlay}:where(.modal-is-opening,.modal-is-closing) dialog>article{animation-delay:.2s;animation-name:modal}.modal-is-closing dialog,.modal-is-closing dialog>article{animation-delay:0s;animation-direction:reverse}@keyframes modal-overlay{from{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:transparent}}@keyframes modal{from{transform:translateY(-100%);opacity:0}}:where(nav li)::before{float:left;content:"​"}nav,nav ul{display:flex}nav{justify-content:space-between}nav ol,nav ul{align-items:center;margin-bottom:0;padding:0;list-style:none}nav ol:first-of-type,nav ul:first-of-type{margin-left:calc(var(--nav-element-spacing-horizontal) * -1)}nav ol:last-of-type,nav ul:last-of-type{margin-right:calc(var(--nav-element-spacing-horizontal) * -1)}nav li{display:inline-block;margin:0;padding:var(--nav-element-spacing-vertical) var(--nav-element-spacing-horizontal)}nav li>*{--spacing:0}nav :where(a,[role=link]){display:inline-block;margin:calc(var(--nav-link-spacing-vertical) * -1) calc(var(--nav-link-spacing-horizontal) * -1);padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal);border-radius:var(--border-radius);text-decoration:none}nav :where(a,[role=link]):is([aria-current],:hover,:active,:focus){text-decoration:none}nav[aria-label=breadcrumb]{align-items:center;justify-content:start}nav[aria-label=breadcrumb] ul li:not(:first-child){-webkit-margin-start:var(--nav-link-spacing-horizontal);margin-inline-start:var(--nav-link-spacing-horizontal)}nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{position:absolute;width:calc(var(--nav-link-spacing-horizontal) * 2);-webkit-margin-start:calc(var(--nav-link-spacing-horizontal)/ 2);margin-inline-start:calc(var(--nav-link-spacing-horizontal)/ 2);content:"/";color:var(--muted-color);text-align:center}nav[aria-label=breadcrumb] a[aria-current]{background-color:transparent;color:inherit;text-decoration:none;pointer-events:none}nav [role=button]{margin-right:inherit;margin-left:inherit;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}aside li,aside nav,aside ol,aside ul{display:block}aside li{padding:calc(var(--nav-element-spacing-vertical) * .5) var(--nav-element-spacing-horizontal)}aside li a{display:block}aside li [role=button]{margin:inherit}[dir=rtl] nav[aria-label=breadcrumb] ul li:not(:last-child) ::after{content:"\\"}progress{display:inline-block;vertical-align:baseline}progress{-webkit-appearance:none;-moz-appearance:none;display:inline-block;appearance:none;width:100%;height:.5rem;margin-bottom:calc(var(--spacing) * .5);overflow:hidden;border:0;border-radius:var(--border-radius);background-color:var(--progress-background-color);color:var(--progress-color)}progress::-webkit-progress-bar{border-radius:var(--border-radius);background:0 0}progress[value]::-webkit-progress-value{background-color:var(--progress-color)}progress::-moz-progress-bar{background-color:var(--progress-color)}@media (prefers-reduced-motion:no-preference){progress:indeterminate{background:var(--progress-background-color) linear-gradient(to right,var(--progress-color) 30%,var(--progress-background-color) 30%) top left/150% 150% no-repeat;animation:progress-indeterminate 1s linear infinite}progress:indeterminate[value]::-webkit-progress-value{background-color:transparent}progress:indeterminate::-moz-progress-bar{background-color:transparent}}@media (prefers-reduced-motion:no-preference){[dir=rtl] progress:indeterminate{animation-direction:reverse}}@keyframes progress-indeterminate{0%{background-position:200% 0}100%{background-position:-200% 0}}details[role=list],li[role=list]{position:relative}details[role=list] summary+ul,li[role=list]>ul{display:flex;z-index:99;position:absolute;top:auto;right:0;left:0;flex-direction:column;margin:0;padding:0;border:var(--border-width) solid var(--dropdown-border-color);border-radius:var(--border-radius);border-top-right-radius:0;border-top-left-radius:0;background-color:var(--dropdown-background-color);box-shadow:var(--card-box-shadow);color:var(--dropdown-color);white-space:nowrap}details[role=list] summary+ul li,li[role=list]>ul li{width:100%;margin-bottom:0;padding:calc(var(--form-element-spacing-vertical) * .5) var(--form-element-spacing-horizontal);list-style:none}details[role=list] summary+ul li:first-of-type,li[role=list]>ul li:first-of-type{margin-top:calc(var(--form-element-spacing-vertical) * .5)}details[role=list] summary+ul li:last-of-type,li[role=list]>ul li:last-of-type{margin-bottom:calc(var(--form-element-spacing-vertical) * .5)}details[role=list] summary+ul li a,li[role=list]>ul li a{display:block;margin:calc(var(--form-element-spacing-vertical) * -.5) calc(var(--form-element-spacing-horizontal) * -1);padding:calc(var(--form-element-spacing-vertical) * .5) var(--form-element-spacing-horizontal);overflow:hidden;color:var(--dropdown-color);text-decoration:none;text-overflow:ellipsis}details[role=list] summary+ul li a:hover,li[role=list]>ul li a:hover{background-color:var(--dropdown-hover-background-color)}details[role=list] summary::after,li[role=list]>a::after{display:block;width:1rem;height:calc(1rem * var(--line-height,1.5));-webkit-margin-start:0.5rem;margin-inline-start:.5rem;float:right;transform:rotate(0);background-position:right center;background-size:1rem auto;background-repeat:no-repeat;content:""}details[role=list]{padding:0;border-bottom:none}details[role=list] summary{margin-bottom:0}details[role=list] summary:not([role]){height:calc(1rem * var(--line-height) + var(--form-element-spacing-vertical) * 2 + var(--border-width) * 2);padding:var(--form-element-spacing-vertical) var(--form-element-spacing-horizontal);border:var(--border-width) solid var(--form-element-border-color);border-radius:var(--border-radius);background-color:var(--form-element-background-color);color:var(--form-element-placeholder-color);line-height:inherit;cursor:pointer;transition:background-color var(--transition),border-color var(--transition),color var(--transition),box-shadow var(--transition)}details[role=list] summary:not([role]):active,details[role=list] summary:not([role]):focus{border-color:var(--form-element-active-border-color);background-color:var(--form-element-active-background-color)}details[role=list] summary:not([role]):focus{box-shadow:0 0 0 var(--outline-width) var(--form-element-focus-color)}details[role=list][open] summary{border-bottom-right-radius:0;border-bottom-left-radius:0}details[role=list][open] summary::before{display:block;z-index:1;position:fixed;top:0;right:0;bottom:0;left:0;background:0 0;content:"";cursor:default}nav details[role=list] summary,nav li[role=list] a{display:flex;direction:ltr}nav details[role=list] summary+ul,nav li[role=list]>ul{min-width:-moz-fit-content;min-width:fit-content;border-radius:var(--border-radius)}nav details[role=list] summary+ul li a,nav li[role=list]>ul li a{border-radius:0}nav details[role=list] summary,nav details[role=list] summary:not([role]){height:auto;padding:var(--nav-link-spacing-vertical) var(--nav-link-spacing-horizontal)}nav details[role=list][open] summary{border-radius:var(--border-radius)}nav details[role=list] summary+ul{margin-top:var(--outline-width);-webkit-margin-start:0;margin-inline-start:0}nav details[role=list] summary[role=link]{margin-bottom:calc(var(--nav-link-spacing-vertical) * -1);line-height:var(--line-height)}nav details[role=list] summary[role=link]+ul{margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));-webkit-margin-start:calc(var(--nav-link-spacing-horizontal) * -1);margin-inline-start:calc(var(--nav-link-spacing-horizontal) * -1)}li[role=list] a:active~ul,li[role=list] a:focus~ul,li[role=list]:hover>ul{display:flex}li[role=list]>ul{display:none;margin-top:calc(var(--nav-link-spacing-vertical) + var(--outline-width));-webkit-margin-start:calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal));margin-inline-start:calc(var(--nav-element-spacing-horizontal) - var(--nav-link-spacing-horizontal))}li[role=list]>a::after{background-image:var(--icon-chevron)}[aria-busy=true]{cursor:progress}[aria-busy=true]:not(input,select,textarea)::before{display:inline-block;width:1em;height:1em;border:.1875em solid currentColor;border-radius:1em;border-right-color:transparent;content:"";vertical-align:text-bottom;vertical-align:-.125em;animation:spinner .75s linear infinite;opacity:var(--loading-spinner-opacity)}[aria-busy=true]:not(input,select,textarea):not(:empty)::before{margin-right:calc(var(--spacing) * .5);margin-left:0;-webkit-margin-start:0;margin-inline-start:0;-webkit-margin-end:calc(var(--spacing) * .5);margin-inline-end:calc(var(--spacing) * .5)}[aria-busy=true]:not(input,select,textarea):empty{text-align:center}a[aria-busy=true],button[aria-busy=true],input[type=button][aria-busy=true],input[type=reset][aria-busy=true],input[type=submit][aria-busy=true]{pointer-events:none}@keyframes spinner{to{transform:rotate(360deg)}}[data-tooltip]{position:relative}[data-tooltip]:not(a,button,input){border-bottom:1px dotted;text-decoration:none;cursor:help}[data-tooltip]::after,[data-tooltip]::before,[data-tooltip][data-placement=top]::after,[data-tooltip][data-placement=top]::before{display:block;z-index:99;position:absolute;bottom:100%;left:50%;padding:.25rem .5rem;overflow:hidden;transform:translate(-50%,-.25rem);border-radius:var(--border-radius);background:var(--tooltip-background-color);content:attr(data-tooltip);color:var(--tooltip-color);font-style:normal;font-weight:var(--font-weight);font-size:.875rem;text-decoration:none;text-overflow:ellipsis;white-space:nowrap;opacity:0;pointer-events:none}[data-tooltip]::after,[data-tooltip][data-placement=top]::after{padding:0;transform:translate(-50%,0);border-top:.3rem solid;border-right:.3rem solid transparent;border-left:.3rem solid transparent;border-radius:0;background-color:transparent;content:"";color:var(--tooltip-background-color)}[data-tooltip][data-placement=bottom]::after,[data-tooltip][data-placement=bottom]::before{top:100%;bottom:auto;transform:translate(-50%,.25rem)}[data-tooltip][data-placement=bottom]:after{transform:translate(-50%,-.3rem);border:.3rem solid transparent;border-bottom:.3rem solid}[data-tooltip][data-placement=left]::after,[data-tooltip][data-placement=left]::before{top:50%;right:100%;bottom:auto;left:auto;transform:translate(-.25rem,-50%)}[data-tooltip][data-placement=left]:after{transform:translate(.3rem,-50%);border:.3rem solid transparent;border-left:.3rem solid}[data-tooltip][data-placement=right]::after,[data-tooltip][data-placement=right]::before{top:50%;right:auto;bottom:auto;left:100%;transform:translate(.25rem,-50%)}[data-tooltip][data-placement=right]:after{transform:translate(-.3rem,-50%);border:.3rem solid transparent;border-right:.3rem solid}[data-tooltip]:focus::after,[data-tooltip]:focus::before,[data-tooltip]:hover::after,[data-tooltip]:hover::before{opacity:1}@media (hover:hover) and (pointer:fine){[data-tooltip]:hover::after,[data-tooltip]:hover::before,[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::before{animation-duration:.2s;animation-name:tooltip-slide-top}[data-tooltip]:hover::after,[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover [data-tooltip]:focus::after{animation-name:tooltip-caret-slide-top}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:focus::before,[data-tooltip][data-placement=bottom]:hover::after,[data-tooltip][data-placement=bottom]:hover::before{animation-duration:.2s;animation-name:tooltip-slide-bottom}[data-tooltip][data-placement=bottom]:focus::after,[data-tooltip][data-placement=bottom]:hover::after{animation-name:tooltip-caret-slide-bottom}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:focus::before,[data-tooltip][data-placement=left]:hover::after,[data-tooltip][data-placement=left]:hover::before{animation-duration:.2s;animation-name:tooltip-slide-left}[data-tooltip][data-placement=left]:focus::after,[data-tooltip][data-placement=left]:hover::after{animation-name:tooltip-caret-slide-left}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:focus::before,[data-tooltip][data-placement=right]:hover::after,[data-tooltip][data-placement=right]:hover::before{animation-duration:.2s;animation-name:tooltip-slide-right}[data-tooltip][data-placement=right]:focus::after,[data-tooltip][data-placement=right]:hover::after{animation-name:tooltip-caret-slide-right}}@keyframes tooltip-slide-top{from{transform:translate(-50%,.75rem);opacity:0}to{transform:translate(-50%,-.25rem);opacity:1}}@keyframes tooltip-caret-slide-top{from{opacity:0}50%{transform:translate(-50%,-.25rem);opacity:0}to{transform:translate(-50%,0);opacity:1}}@keyframes tooltip-slide-bottom{from{transform:translate(-50%,-.75rem);opacity:0}to{transform:translate(-50%,.25rem);opacity:1}}@keyframes tooltip-caret-slide-bottom{from{opacity:0}50%{transform:translate(-50%,-.5rem);opacity:0}to{transform:translate(-50%,-.3rem);opacity:1}}@keyframes tooltip-slide-left{from{transform:translate(.75rem,-50%);opacity:0}to{transform:translate(-.25rem,-50%);opacity:1}}@keyframes tooltip-caret-slide-left{from{opacity:0}50%{transform:translate(.05rem,-50%);opacity:0}to{transform:translate(.3rem,-50%);opacity:1}}@keyframes tooltip-slide-right{from{transform:translate(-.75rem,-50%);opacity:0}to{transform:translate(.25rem,-50%);opacity:1}}@keyframes tooltip-caret-slide-right{from{opacity:0}50%{transform:translate(-.05rem,-50%);opacity:0}to{transform:translate(-.3rem,-50%);opacity:1}}[aria-controls]{cursor:pointer}[aria-disabled=true],[disabled]{cursor:not-allowed}[aria-hidden=false][hidden]{display:initial}[aria-hidden=false][hidden]:not(:focus){clip:rect(0,0,0,0);position:absolute}[tabindex],a,area,button,input,label,select,summary,textarea{-ms-touch-action:manipulation}[dir=rtl]{direction:rtl}@media (prefers-reduced-motion:reduce){:not([aria-busy=true]),:not([aria-busy=true])::after,:not([aria-busy=true])::before{background-attachment:initial!important;animation-duration:1ms!important;animation-delay:-1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-delay:0s!important;transition-duration:0s!important}} \ No newline at end of file diff --git a/docs/state/README.md b/docs/state/README.md new file mode 100644 index 00000000..c38572c8 --- /dev/null +++ b/docs/state/README.md @@ -0,0 +1,35 @@ +# state.mjs API +All constants and interfaces documented here are guaranteed to work, and very likely not subject to further changes. + +## Constants +### MIDI modes +Octavia is compatible with a range of modes on MIDI synthesizers. A list of supported modes to their respective keys is available below. + +* `?`: The default "nothing" mode. Octavia will try to detect the correct mode. +* `gm`: General MIDI mode. +* `gs`: Roland GS mode. +* `xg`: Yamaha XG mode. Compatible with TG-100 and TG-300. +* `g2`: General MIDI Level 2 mode. +* `mt32`: Roland MT-32 mode. +* `ns5r`: KORG NS5R mode. Compatible with NX5R, and has limited compatibility with KORG N1R and N5. +* `x5d`: KORG X5D(R) mode. Compatible with AG-10. +* `05rw`: KORG 05R/W and KORG X5 mode. Compatible with AG-10. +* `krs`: KORG KROSS 2 mode. +* `k11`: Kawai GMega and Kawai K11 mode. +* `sg`: Akai SG mode. + +### MIDI event types +* `8`: Note off +* `9`: Note on +* `10`: Note aftertouch, a.k.a. polyphonic aftertouch +* `11`: Channel controller change +* `12`: Channel program change +* `13`: Channel aftertouch +* `14`: Channel pitch bend +* `15`: System exclusive message + +### `allocated` +### `ccToPos` + +## Interfaces +### `OctaviaDevice` diff --git a/docs/support/compress.md b/docs/support/compress.md new file mode 100644 index 00000000..6fed7198 --- /dev/null +++ b/docs/support/compress.md @@ -0,0 +1,20 @@ +# Compression results +## Compression result comparison +_Disclaimer: Data updated on 10th Feb 2023. Might be outdated._ +| Algo | Quality | Size | Name | +| ------ | ------- | ------- | ---- | +| (raw) | (raw) | 51.5KiB | `state.mjs` | +| gzip | 9 | 16.6KiB | `state.mjs` | +| bzip2 | 9 | 15.8KiB | `state.mjs` | +| zstd | 9 | 16.4KiB | `state.mjs` | +| brotli | 11 | 14.3KiB | `state.mjs` | +| (raw) | (raw) | 15.1KiB | `basic.mjs` | +| gzip | 9 | 6.25KiB | `basic.mjs` | +| bzip2 | 9 | 6.29KiB | `basic.mjs` | +| zstd | 9 | 6.26KiB | `basic.mjs` | +| brotli | 11 | 5.44KiB | `basic.mjs` | +| (raw) | (raw) | 24.5KiB | `state_skim.mjs` | +| gzip | 9 | 9.35KiB | `state_skim.mjs` | +| bzip2 | 9 | 9.04KiB | `state_skim.mjs` | +| zstd | 9 | 9.27KiB | `state_skim.mjs` | +| brotli | 11 | 8.13KiB | `state_skim.mjs` | diff --git a/docs/support/implementation.md b/docs/support/implementation.md new file mode 100644 index 00000000..fb81f89b --- /dev/null +++ b/docs/support/implementation.md @@ -0,0 +1,487 @@ +# Implementation Table +## MIDI Implementation Chart + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FunctionRecognizedRemarks
Basic ChannelDefault✓ 1-16
Changed✓ 1-16Supports up to 128 channels.
Note number0-127
ModeDefault3
Messages✓ 3, 4
VelocityNote on✓ 9nV=1-127
Note off✓ 9nV=0 8n
AftertouchKey
Channel
Pitchbend0-24 semitone steps
14-bit resolution
Control Change0MSB Bank Select
1Modulation
2Breath
4Foot
5Portamento Time
6MSB (N)RPN Data Commit
7Volume
8Balance
10Pan
11Expression
12General-purpose effect
13General-purpose effect
16General-purpose sound
17General-purpose sound
18General-purpose sound
19General-purpose sound
32LSB Bank Select
38LSB (N)RPN Data Commit
64Sustain (Hold)
65Portamento
66Sostenuto
67Soft Pedal
Store only
68Legato
Store only
69Hold 2
Store only
70Timbre Variation
Store only
71Resonance
72Release Time
73Attack Time
74Brightness
75Decay Time
76Vibrato Rate
77Vibrato Depth
78Vibrato Delay
84Portamento Control
91Reverb
92Tremelo
93Chorus
94Variation
95Phaser
96Data Increment
97Data Decrement
98LSB NRPN
99MSB NRPN
100LSB RPN
101MSB RPN
120All Sound Off
121All Controllers Reset
123All Notes Off
124Omni Off
Same as cc123
125Omni On
Same as cc123
126Mono
127Poly
Program Change0-127
System ExclusiveGeneral MIDI
General MIDI rev. 2
YAMAHA XG
YAMAHA PLG-150AP
YAMAHA PLG-150AN
YAMAHA PLG-150DR/PC
YAMAHA PLG-150DX
YAMAHA PLG-150PF
YAMAHA PLG-150VL
YAMAHA TG
YAMAHA PLG-100SG
Roland GS
Roland C/M
KORG NS5R
KORG N1RRedirected to NS5R
KORG X5D(R)
KORG 05R/W
KAWAI GMegaAlso known as KAWAI K11
AKAI SG01
CASIO GZ-50M
ALESIS NanoSynth
System CommonSong position
Song select
Tune
System RealTimeClockNo action defined
StartNo action defined
ContinueNo action defined
StopNo action defined
Aux messagesLocal ON/OFF
Active SenseNo action defined
diff --git a/docs/support/sysex.md b/docs/support/sysex.md new file mode 100644 index 00000000..d15d2b9e --- /dev/null +++ b/docs/support/sysex.md @@ -0,0 +1,73 @@ +# SysEx Instructions +## Supported SysEx Instructions +* ✓: Supported +* -: Partially supported +* ✕: Not supported +* ?: Unknown +* (blank): N/A + +### Mutual instructions +| | GM | GM2 | MT-32 | XG | GS | 05R/W | X5D | NS5R | GMega | GMega LX | SG-01 | GZ-50M | +| --------------- | -- | --- | ----- | -- | -- | ----- | --- | ---- | ----- | -------- | ----- | ------ | +| System reset | ✓ | ✓ | ✓ | ✓ | ✓ | | | | ✓ | ✓ | ✓ | | +| Master setup | ✓ | ✓ | ✓ | ✓ | ✓ | | | ✓ | ✓ | ✓ | | | +| Reverb setup | | ✕ | | ✓ | ✓ | | | | ✓ | ✓ | ✓ | ✓ | +| Chorus setup | | ✕ | | ✓ | ✓ | | | | ✓ | ✓ | ✓ | ✓ | +| Variation setup | | ? | | ✓ | ✓ | | | | | | | | +| Part setup | | ? | | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | +| Equalizer | | | | ✓ | ✓ | | | | | | | | +| EFX / insertion | | | | - | ✓³ | | | - | | | | | +| Bitmap display¹ | | | | ✓ | ✓ | | | ✓ | | | | | +| Text display² | | | ✓ | ✓ | ✓ | | | ✓ | | | | | +| Drum setup | | ? | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | | | + +1. Support in GS is called "frame draw", and with multi-page support. +2. Called "letter display" in XG, and "text insert" in GS. +3. GS only has "delay" effect occupying the space of variation setup. + +### Device-specific instructions +#### Roland MT-32 +* Temporary Patch Setup +* ~~Temporary Drum Setup~~ +* Temporary Timbre Setup +* Device Patch Setup +* Device Timbre Setup +* Patch Memory Write +* Timbre Memory Write +* System + +#### Yamaha MU1000 +* ~~A/D Part Setup~~ +* ~~A/D Mono/Stereo~~ +* System + +#### Yamaha PLG-100SG +* ~~Master Setup~~ +* ~~Part Setup~~ +* PhoneSEQ Setup +* ~~Lyrics Information Setup~~ + +#### Yamaha PLG-150DX +* ~~Master Setup~~ +* ~~Part Setup~~ +* ~~DX Voice Param~~ +* ~~DX Voice Additional Param~~ + +#### Yamaha PLG-150VL +* ~~Master Setup~~ +* ~~Current Voice Parameters~~ +* Part Setup + +#### Roland SC-88 +* Single/dual Mode + +#### KORG X5D +* All Program Dump +* All Combi Dump +* Extended Multi Dump + +#### KORG NS5R +* Mode Switch +* All Program Dump +* All Combi Dump +* Extended Multi Dump diff --git a/docs/support/target.md b/docs/support/target.md new file mode 100644 index 00000000..1bd46b6b --- /dev/null +++ b/docs/support/target.md @@ -0,0 +1,103 @@ +# Targets +## Supported targets +### General support table +The following list of targets have their support by Octavia status presented in a table. A target can be a **m**odel, a **p**lugin board, a **l**ineup, or a **s**tandard. + +A supported standard may also have a list of specific target models listed. + +For specific SysEx support range, refer to [Supported SysEx Instructions](./sysex.md); + +| Vendor | Target | Type | Bank | SysEx | +| ------ | --------- | ---- | ---- | ----- | +| MMA | GM | S | ✓ | ✓ | +| MMA | GM2 | S | ✓ | ✓ | +| Roland | MT-32 | S | ✓ | ✓ | +| Roland | GS | S | ✓ | ✓ | +| YAMAHA | TG | L | ✓ | ✓ | +| YAMAHA | XG¹ | S | ✓ | ✓ | +| YAMAHA | PLG-150AN | P | ✓ | ✕ | +| YAMAHA | PLG-150AP | P | ✓ | ✕ | +| YAMAHA | PLG-150DR | P | ✓ | ✓ | +| YAMAHA | PLG-150DX | P | ✓ | ✕ | +| YAMAHA | PLG-150PC | P | ✓ | ✕ | +| YAMAHA | PLG-150PF | P | ✓ | ✕ | +| YAMAHA | PLG-150VL | P | ✓ | ✓ | +| YAMAHA | PLG-100SG | P | ✓ | ✓ | +| KORG | AG-10 | M | ✓ | ✓ | +| KORG | 05R/W | L | ✓ | ✕ | +| KORG | X5DR | L | ✓ | ✓ | +| KORG | NS5R/NX5R | L | ✓ | ✓ | +| KAWAI | GMega | L | ✓ | ✓ | +| KAWAI | GMega LX | M | ✓ | ✓ | +| AKAI | SG01k | M | ✓ | ✓ | +| CASIO | GZ-50M | M | ✓ | ✓ | +| ALESIS | NanoSynth | M | ✕ | ✕ | + +1. Octavia implements XG level 3.0 or later, and XG version 2.0 or later. + +### Specific targets +#### Roland MT-32 +| Target | Type | Status | +| ------- | ---- | ------ | +| MT-32 | M | ✓ | +| MT-100 | M | - | +| CM-32L | M | ✓ | +| CM-32LN | M | - | +| CM-64 | M | - | +| CM-500 | M | - | +| LAPC-I | M | - | +| LAPC-N | M | - | +| RA-50 | M | - | +| E-20 | M | - | + +#### Roland GS +| Target | Type | Status | +| --------- | ---- | ------ | +| CM-300 | M | ✓ | +| SC-55 | L | ✓ | +| SC-88 | L | ✓ | +| SC-88 Pro | L | ✓ | +| SC-8850 | L | ✓ | +| SD-20 | M | - | +| SD-35 | M | - | +| SD-50 | M | - | +| SD-80 | M | - | +| SD-90 | M | - | +| SK-50 | L | - | + +#### Yamaha TG +| Target | Type | Status | +| ------ | ---- | ------ | +| TG55 | M | - | +| TG33 | M | - | +| TG77 | M | - | +| TG100 | M | - | +| TG500 | M | - | +| TG300 | M | ✓ | + +#### Yamaha XG +| Target | Type | Status | +| ----------- | ---- | ------ | +| DBXG50 | M | ✓ | +| DBXG51 | M | ✓ | +| DBXG60 | M | - | +| MU5 | M | ✓ | +| MU80 | M | ✓ | +| MU50 | M | ✓ | +| MU90 | L | ✓ | +| MU10 | M | ✓ | +| MU100 | L | ✓ | +| MU15 | M | ✓ | +| MU128 | L | ✓ | +| MU1000 | L | ✓ | +| MU2000 | L | ✓ | +| MU500 | M | ✓ | +| QY700 | M | ✓ | +| QY70 | M | ✓ | +| QY100 | M | ✓ | +| SW60XG | M | - | +| SW1000XG | M | - | +| S-YXG50 | M | ✓ | +| S-YXG70 | M | ✓ | +| S-YXG100 | M | ✓ | +| S-YXG2006LE | M | ✓ | diff --git a/docs/worker.js b/docs/worker.js new file mode 100644 index 00000000..97c77f48 --- /dev/null +++ b/docs/worker.js @@ -0,0 +1,131 @@ +"use strict";(()=>{var Z=Object.create;var N=Object.defineProperty;var Q=Object.getOwnPropertyDescriptor;var X=Object.getOwnPropertyNames;var J=Object.getPrototypeOf,Y=Object.prototype.hasOwnProperty;var ee=(v,t)=>()=>(t||v((t={exports:{}}).exports,t),t.exports);var re=(v,t,y,x)=>{if(t&&typeof t=="object"||typeof t=="function")for(let P of X(t))!Y.call(v,P)&&P!==y&&N(v,P,{get:()=>t[P],enumerable:!(x=Q(t,P))||x.enumerable});return v};var ae=(v,t,y)=>(y=v!=null?Z(J(v)):{},re(t||!v||!v.__esModule?N(y,"default",{value:v,enumerable:!0}):y,v));var V=ee((R,H)=>{(function(){function v(e){"use strict";var a={omitExtraWLInCodeBlocks:{defaultValue:!1,describe:"Omit the default extra whiteline added to code blocks",type:"boolean"},noHeaderId:{defaultValue:!1,describe:"Turn on/off generated header id",type:"boolean"},prefixHeaderId:{defaultValue:!1,describe:"Add a prefix to the generated header ids. Passing a string will prefix that string to the header id. Setting to true will add a generic 'section-' prefix",type:"string"},rawPrefixHeaderId:{defaultValue:!1,describe:'Setting this option to true will prevent showdown from modifying the prefix. This might result in malformed IDs (if, for instance, the " char is used in the prefix)',type:"boolean"},ghCompatibleHeaderId:{defaultValue:!1,describe:"Generate header ids compatible with github style (spaces are replaced with dashes, a bunch of non alphanumeric chars are removed)",type:"boolean"},rawHeaderId:{defaultValue:!1,describe:`Remove only spaces, ' and " from generated header ids (including prefixes), replacing them with dashes (-). WARNING: This might result in malformed ids`,type:"boolean"},headerLevelStart:{defaultValue:!1,describe:"The header blocks level start",type:"integer"},parseImgDimensions:{defaultValue:!1,describe:"Turn on/off image dimension parsing",type:"boolean"},simplifiedAutoLink:{defaultValue:!1,describe:"Turn on/off GFM autolink style",type:"boolean"},excludeTrailingPunctuationFromURLs:{defaultValue:!1,describe:"Excludes trailing punctuation from links generated with autoLinking",type:"boolean"},literalMidWordUnderscores:{defaultValue:!1,describe:"Parse midword underscores as literal underscores",type:"boolean"},literalMidWordAsterisks:{defaultValue:!1,describe:"Parse midword asterisks as literal asterisks",type:"boolean"},strikethrough:{defaultValue:!1,describe:"Turn on/off strikethrough support",type:"boolean"},tables:{defaultValue:!1,describe:"Turn on/off tables support",type:"boolean"},tablesHeaderId:{defaultValue:!1,describe:"Add an id to table headers",type:"boolean"},ghCodeBlocks:{defaultValue:!0,describe:"Turn on/off GFM fenced code blocks support",type:"boolean"},tasklists:{defaultValue:!1,describe:"Turn on/off GFM tasklist support",type:"boolean"},smoothLivePreview:{defaultValue:!1,describe:"Prevents weird effects in live previews due to incomplete input",type:"boolean"},smartIndentationFix:{defaultValue:!1,describe:"Tries to smartly fix indentation in es6 strings",type:"boolean"},disableForced4SpacesIndentedSublists:{defaultValue:!1,describe:"Disables the requirement of indenting nested sublists by 4 spaces",type:"boolean"},simpleLineBreaks:{defaultValue:!1,describe:"Parses simple line breaks as
(GFM Style)",type:"boolean"},requireSpaceBeforeHeadingText:{defaultValue:!1,describe:"Makes adding a space between `#` and the header text mandatory (GFM Style)",type:"boolean"},ghMentions:{defaultValue:!1,describe:"Enables github @mentions",type:"boolean"},ghMentionsLink:{defaultValue:"https://github.com/{u}",describe:"Changes the link generated by @mentions. Only applies if ghMentions option is enabled.",type:"string"},encodeEmails:{defaultValue:!0,describe:"Encode e-mail addresses through the use of Character Entities, transforming ASCII e-mail addresses into its equivalent decimal entities",type:"boolean"},openLinksInNewWindow:{defaultValue:!1,describe:"Open all links in new windows",type:"boolean"},backslashEscapesHTMLTags:{defaultValue:!1,describe:"Support for HTML Tag escaping. ex:
foo
",type:"boolean"},emoji:{defaultValue:!1,describe:"Enable emoji support. Ex: `this is a :smile: emoji`",type:"boolean"},underline:{defaultValue:!1,describe:"Enable support for underline. Syntax is double or triple underscores: `__underline word__`. With this option enabled, underscores no longer parses into `` and ``",type:"boolean"},ellipsis:{defaultValue:!0,describe:"Replaces three dots with the ellipsis unicode character",type:"boolean"},completeHTMLDocument:{defaultValue:!1,describe:"Outputs a complete html document, including ``, `` and `` tags",type:"boolean"},metadata:{defaultValue:!1,describe:"Enable support for document metadata (defined at the top of the document between `«««` and `»»»` or between `---` and `---`).",type:"boolean"},splitAdjacentBlockquotes:{defaultValue:!1,describe:"Split adjacent blockquote blocks",type:"boolean"}};if(e===!1)return JSON.parse(JSON.stringify(a));var r,n={};for(r in a)a.hasOwnProperty(r)&&(n[r]=a[r].defaultValue);return n}var t={},y={},x={},P=v(!0),B="vanilla",A={github:{omitExtraWLInCodeBlocks:!0,simplifiedAutoLink:!0,excludeTrailingPunctuationFromURLs:!0,literalMidWordUnderscores:!0,strikethrough:!0,tables:!0,tablesHeaderId:!0,ghCodeBlocks:!0,tasklists:!0,disableForced4SpacesIndentedSublists:!0,simpleLineBreaks:!0,requireSpaceBeforeHeadingText:!0,ghCompatibleHeaderId:!0,ghMentions:!0,backslashEscapesHTMLTags:!0,emoji:!0,splitAdjacentBlockquotes:!0},original:{noHeaderId:!0,ghCodeBlocks:!1},ghost:{omitExtraWLInCodeBlocks:!0,parseImgDimensions:!0,simplifiedAutoLink:!0,excludeTrailingPunctuationFromURLs:!0,literalMidWordUnderscores:!0,strikethrough:!0,tables:!0,tablesHeaderId:!0,ghCodeBlocks:!0,tasklists:!0,smoothLivePreview:!0,simpleLineBreaks:!0,requireSpaceBeforeHeadingText:!0,ghMentions:!1,encodeEmails:!0},vanilla:v(!0),allOn:function(){"use strict";var e,a=v(!0),r={};for(e in a)a.hasOwnProperty(e)&&(r[e]=!0);return r}()};function T(e,a){"use strict";var r=a?"Error in "+a+" extension->":"Error in unnamed extension",n={valid:!0,error:""};t.helper.isArray(e)||(e=[e]);for(var o=0;o").replace(/&/g,"&")};function q(e,a,r,n){"use strict";var o,l,s,c=-1<(n=n||"").indexOf("g"),u=new RegExp(a+"|"+r,"g"+n.replace(/g/g,"")),h=new RegExp(a,n.replace(/g/g,"")),p=[];do for(o=0;d=u.exec(e);)if(h.test(d[0]))o++||(s=(l=u.lastIndex)-d[0].length);else if(o&&!--o){var i=d.index+d[0].length,d={left:{start:s,end:l},match:{start:l,end:d.index},right:{start:d.index,end:i},wholeMatch:{start:s,end:i}};if(p.push(d),!c)return p}while(o&&(u.lastIndex=l));return p}function I(e){"use strict";return function(a,i,n,o,l,s,d){var u=n=n.replace(t.helper.regexes.asteriskDashAndColon,t.helper.escapeCharactersCallback),h="",p="",i=i||"",d=d||"";return/^www\./i.test(n)&&(n=n.replace(/^www\./i,"http://www.")),e.excludeTrailingPunctuationFromURLs&&s&&(h=s),i+'"+u+""+h+d}}function O(e,a){"use strict";return function(r,n,o){var l="mailto:";return n=n||"",o=t.subParser("unescapeSpecialChars")(o,e,a),e.encodeEmails?(l=t.helper.encodeEmailAddress(l+o),o=t.helper.encodeEmailAddress(o)):l+=o,n+''+o+""}}t.helper.matchRecursiveRegExp=function(e,a,r,n){"use strict";for(var o=q(e,a,r,n),l=[],s=0;s>=0,r=String(r||" "),e.length>a?String(e):((a-=e.length)>r.length&&(r+=r.repeat(a/r.length)),String(e)+r.slice(0,a))},typeof console>"u"&&(console={warn:function(e){"use strict";alert(e)},log:function(e){"use strict";alert(e)},error:function(e){"use strict";throw e}}),t.helper.regexes={asteriskDashAndColon:/([*_:~])/g},t.helper.emojis={"+1":"👍","-1":"👎",100:"💯",1234:"🔢","1st_place_medal":"🥇","2nd_place_medal":"🥈","3rd_place_medal":"🥉","8ball":"🎱",a:"🅰️",ab:"🆎",abc:"🔤",abcd:"🔡",accept:"🉑",aerial_tramway:"🚡",airplane:"✈️",alarm_clock:"⏰",alembic:"⚗️",alien:"👽",ambulance:"🚑",amphora:"🏺",anchor:"⚓️",angel:"👼",anger:"💢",angry:"😠",anguished:"😧",ant:"🐜",apple:"🍎",aquarius:"♒️",aries:"♈️",arrow_backward:"◀️",arrow_double_down:"⏬",arrow_double_up:"⏫",arrow_down:"⬇️",arrow_down_small:"🔽",arrow_forward:"▶️",arrow_heading_down:"⤵️",arrow_heading_up:"⤴️",arrow_left:"⬅️",arrow_lower_left:"↙️",arrow_lower_right:"↘️",arrow_right:"➡️",arrow_right_hook:"↪️",arrow_up:"⬆️",arrow_up_down:"↕️",arrow_up_small:"🔼",arrow_upper_left:"↖️",arrow_upper_right:"↗️",arrows_clockwise:"🔃",arrows_counterclockwise:"🔄",art:"🎨",articulated_lorry:"🚛",artificial_satellite:"🛰",astonished:"😲",athletic_shoe:"👟",atm:"🏧",atom_symbol:"⚛️",avocado:"🥑",b:"🅱️",baby:"👶",baby_bottle:"🍼",baby_chick:"🐤",baby_symbol:"🚼",back:"🔙",bacon:"🥓",badminton:"🏸",baggage_claim:"🛄",baguette_bread:"🥖",balance_scale:"⚖️",balloon:"🎈",ballot_box:"🗳",ballot_box_with_check:"☑️",bamboo:"🎍",banana:"🍌",bangbang:"‼️",bank:"🏦",bar_chart:"📊",barber:"💈",baseball:"⚾️",basketball:"🏀",basketball_man:"⛹️",basketball_woman:"⛹️‍♀️",bat:"🦇",bath:"🛀",bathtub:"🛁",battery:"🔋",beach_umbrella:"🏖",bear:"🐻",bed:"🛏",bee:"🐝",beer:"🍺",beers:"🍻",beetle:"🐞",beginner:"🔰",bell:"🔔",bellhop_bell:"🛎",bento:"🍱",biking_man:"🚴",bike:"🚲",biking_woman:"🚴‍♀️",bikini:"👙",biohazard:"☣️",bird:"🐦",birthday:"🎂",black_circle:"⚫️",black_flag:"🏴",black_heart:"🖤",black_joker:"🃏",black_large_square:"⬛️",black_medium_small_square:"◾️",black_medium_square:"◼️",black_nib:"✒️",black_small_square:"▪️",black_square_button:"🔲",blonde_man:"👱",blonde_woman:"👱‍♀️",blossom:"🌼",blowfish:"🐡",blue_book:"📘",blue_car:"🚙",blue_heart:"💙",blush:"😊",boar:"🐗",boat:"⛵️",bomb:"💣",book:"📖",bookmark:"🔖",bookmark_tabs:"📑",books:"📚",boom:"💥",boot:"👢",bouquet:"💐",bowing_man:"🙇",bow_and_arrow:"🏹",bowing_woman:"🙇‍♀️",bowling:"🎳",boxing_glove:"🥊",boy:"👦",bread:"🍞",bride_with_veil:"👰",bridge_at_night:"🌉",briefcase:"💼",broken_heart:"💔",bug:"🐛",building_construction:"🏗",bulb:"💡",bullettrain_front:"🚅",bullettrain_side:"🚄",burrito:"🌯",bus:"🚌",business_suit_levitating:"🕴",busstop:"🚏",bust_in_silhouette:"👤",busts_in_silhouette:"👥",butterfly:"🦋",cactus:"🌵",cake:"🍰",calendar:"📆",call_me_hand:"🤙",calling:"📲",camel:"🐫",camera:"📷",camera_flash:"📸",camping:"🏕",cancer:"♋️",candle:"🕯",candy:"🍬",canoe:"🛶",capital_abcd:"🔠",capricorn:"♑️",car:"🚗",card_file_box:"🗃",card_index:"📇",card_index_dividers:"🗂",carousel_horse:"🎠",carrot:"🥕",cat:"🐱",cat2:"🐈",cd:"💿",chains:"⛓",champagne:"🍾",chart:"💹",chart_with_downwards_trend:"📉",chart_with_upwards_trend:"📈",checkered_flag:"🏁",cheese:"🧀",cherries:"🍒",cherry_blossom:"🌸",chestnut:"🌰",chicken:"🐔",children_crossing:"🚸",chipmunk:"🐿",chocolate_bar:"🍫",christmas_tree:"🎄",church:"⛪️",cinema:"🎦",circus_tent:"🎪",city_sunrise:"🌇",city_sunset:"🌆",cityscape:"🏙",cl:"🆑",clamp:"🗜",clap:"👏",clapper:"🎬",classical_building:"🏛",clinking_glasses:"🥂",clipboard:"📋",clock1:"🕐",clock10:"🕙",clock1030:"🕥",clock11:"🕚",clock1130:"🕦",clock12:"🕛",clock1230:"🕧",clock130:"🕜",clock2:"🕑",clock230:"🕝",clock3:"🕒",clock330:"🕞",clock4:"🕓",clock430:"🕟",clock5:"🕔",clock530:"🕠",clock6:"🕕",clock630:"🕡",clock7:"🕖",clock730:"🕢",clock8:"🕗",clock830:"🕣",clock9:"🕘",clock930:"🕤",closed_book:"📕",closed_lock_with_key:"🔐",closed_umbrella:"🌂",cloud:"☁️",cloud_with_lightning:"🌩",cloud_with_lightning_and_rain:"⛈",cloud_with_rain:"🌧",cloud_with_snow:"🌨",clown_face:"🤡",clubs:"♣️",cocktail:"🍸",coffee:"☕️",coffin:"⚰️",cold_sweat:"😰",comet:"☄️",computer:"💻",computer_mouse:"🖱",confetti_ball:"🎊",confounded:"😖",confused:"😕",congratulations:"㊗️",construction:"🚧",construction_worker_man:"👷",construction_worker_woman:"👷‍♀️",control_knobs:"🎛",convenience_store:"🏪",cookie:"🍪",cool:"🆒",policeman:"👮",copyright:"©️",corn:"🌽",couch_and_lamp:"🛋",couple:"👫",couple_with_heart_woman_man:"💑",couple_with_heart_man_man:"👨‍❤️‍👨",couple_with_heart_woman_woman:"👩‍❤️‍👩",couplekiss_man_man:"👨‍❤️‍💋‍👨",couplekiss_man_woman:"💏",couplekiss_woman_woman:"👩‍❤️‍💋‍👩",cow:"🐮",cow2:"🐄",cowboy_hat_face:"🤠",crab:"🦀",crayon:"🖍",credit_card:"💳",crescent_moon:"🌙",cricket:"🏏",crocodile:"🐊",croissant:"🥐",crossed_fingers:"🤞",crossed_flags:"🎌",crossed_swords:"⚔️",crown:"👑",cry:"😢",crying_cat_face:"😿",crystal_ball:"🔮",cucumber:"🥒",cupid:"💘",curly_loop:"➰",currency_exchange:"💱",curry:"🍛",custard:"🍮",customs:"🛃",cyclone:"🌀",dagger:"🗡",dancer:"💃",dancing_women:"👯",dancing_men:"👯‍♂️",dango:"🍡",dark_sunglasses:"🕶",dart:"🎯",dash:"💨",date:"📅",deciduous_tree:"🌳",deer:"🦌",department_store:"🏬",derelict_house:"🏚",desert:"🏜",desert_island:"🏝",desktop_computer:"🖥",male_detective:"🕵️",diamond_shape_with_a_dot_inside:"💠",diamonds:"♦️",disappointed:"😞",disappointed_relieved:"😥",dizzy:"💫",dizzy_face:"😵",do_not_litter:"🚯",dog:"🐶",dog2:"🐕",dollar:"💵",dolls:"🎎",dolphin:"🐬",door:"🚪",doughnut:"🍩",dove:"🕊",dragon:"🐉",dragon_face:"🐲",dress:"👗",dromedary_camel:"🐪",drooling_face:"🤤",droplet:"💧",drum:"🥁",duck:"🦆",dvd:"📀","e-mail":"📧",eagle:"🦅",ear:"👂",ear_of_rice:"🌾",earth_africa:"🌍",earth_americas:"🌎",earth_asia:"🌏",egg:"🥚",eggplant:"🍆",eight_pointed_black_star:"✴️",eight_spoked_asterisk:"✳️",electric_plug:"🔌",elephant:"🐘",email:"✉️",end:"🔚",envelope_with_arrow:"📩",euro:"💶",european_castle:"🏰",european_post_office:"🏤",evergreen_tree:"🌲",exclamation:"❗️",expressionless:"😑",eye:"👁",eye_speech_bubble:"👁‍🗨",eyeglasses:"👓",eyes:"👀",face_with_head_bandage:"🤕",face_with_thermometer:"🤒",fist_oncoming:"👊",factory:"🏭",fallen_leaf:"🍂",family_man_woman_boy:"👪",family_man_boy:"👨‍👦",family_man_boy_boy:"👨‍👦‍👦",family_man_girl:"👨‍👧",family_man_girl_boy:"👨‍👧‍👦",family_man_girl_girl:"👨‍👧‍👧",family_man_man_boy:"👨‍👨‍👦",family_man_man_boy_boy:"👨‍👨‍👦‍👦",family_man_man_girl:"👨‍👨‍👧",family_man_man_girl_boy:"👨‍👨‍👧‍👦",family_man_man_girl_girl:"👨‍👨‍👧‍👧",family_man_woman_boy_boy:"👨‍👩‍👦‍👦",family_man_woman_girl:"👨‍👩‍👧",family_man_woman_girl_boy:"👨‍👩‍👧‍👦",family_man_woman_girl_girl:"👨‍👩‍👧‍👧",family_woman_boy:"👩‍👦",family_woman_boy_boy:"👩‍👦‍👦",family_woman_girl:"👩‍👧",family_woman_girl_boy:"👩‍👧‍👦",family_woman_girl_girl:"👩‍👧‍👧",family_woman_woman_boy:"👩‍👩‍👦",family_woman_woman_boy_boy:"👩‍👩‍👦‍👦",family_woman_woman_girl:"👩‍👩‍👧",family_woman_woman_girl_boy:"👩‍👩‍👧‍👦",family_woman_woman_girl_girl:"👩‍👩‍👧‍👧",fast_forward:"⏩",fax:"📠",fearful:"😨",feet:"🐾",female_detective:"🕵️‍♀️",ferris_wheel:"🎡",ferry:"⛴",field_hockey:"🏑",file_cabinet:"🗄",file_folder:"📁",film_projector:"📽",film_strip:"🎞",fire:"🔥",fire_engine:"🚒",fireworks:"🎆",first_quarter_moon:"🌓",first_quarter_moon_with_face:"🌛",fish:"🐟",fish_cake:"🍥",fishing_pole_and_fish:"🎣",fist_raised:"✊",fist_left:"🤛",fist_right:"🤜",flags:"🎏",flashlight:"🔦",fleur_de_lis:"⚜️",flight_arrival:"🛬",flight_departure:"🛫",floppy_disk:"💾",flower_playing_cards:"🎴",flushed:"😳",fog:"🌫",foggy:"🌁",football:"🏈",footprints:"👣",fork_and_knife:"🍴",fountain:"⛲️",fountain_pen:"🖋",four_leaf_clover:"🍀",fox_face:"🦊",framed_picture:"🖼",free:"🆓",fried_egg:"🍳",fried_shrimp:"🍤",fries:"🍟",frog:"🐸",frowning:"😦",frowning_face:"☹️",frowning_man:"🙍‍♂️",frowning_woman:"🙍",middle_finger:"🖕",fuelpump:"⛽️",full_moon:"🌕",full_moon_with_face:"🌝",funeral_urn:"⚱️",game_die:"🎲",gear:"⚙️",gem:"💎",gemini:"♊️",ghost:"👻",gift:"🎁",gift_heart:"💝",girl:"👧",globe_with_meridians:"🌐",goal_net:"🥅",goat:"🐐",golf:"⛳️",golfing_man:"🏌️",golfing_woman:"🏌️‍♀️",gorilla:"🦍",grapes:"🍇",green_apple:"🍏",green_book:"📗",green_heart:"💚",green_salad:"🥗",grey_exclamation:"❕",grey_question:"❔",grimacing:"😬",grin:"😁",grinning:"😀",guardsman:"💂",guardswoman:"💂‍♀️",guitar:"🎸",gun:"🔫",haircut_woman:"💇",haircut_man:"💇‍♂️",hamburger:"🍔",hammer:"🔨",hammer_and_pick:"⚒",hammer_and_wrench:"🛠",hamster:"🐹",hand:"✋",handbag:"👜",handshake:"🤝",hankey:"💩",hatched_chick:"🐥",hatching_chick:"🐣",headphones:"🎧",hear_no_evil:"🙉",heart:"❤️",heart_decoration:"💟",heart_eyes:"😍",heart_eyes_cat:"😻",heartbeat:"💓",heartpulse:"💗",hearts:"♥️",heavy_check_mark:"✔️",heavy_division_sign:"➗",heavy_dollar_sign:"💲",heavy_heart_exclamation:"❣️",heavy_minus_sign:"➖",heavy_multiplication_x:"✖️",heavy_plus_sign:"➕",helicopter:"🚁",herb:"🌿",hibiscus:"🌺",high_brightness:"🔆",high_heel:"👠",hocho:"🔪",hole:"🕳",honey_pot:"🍯",horse:"🐴",horse_racing:"🏇",hospital:"🏥",hot_pepper:"🌶",hotdog:"🌭",hotel:"🏨",hotsprings:"♨️",hourglass:"⌛️",hourglass_flowing_sand:"⏳",house:"🏠",house_with_garden:"🏡",houses:"🏘",hugs:"🤗",hushed:"😯",ice_cream:"🍨",ice_hockey:"🏒",ice_skate:"⛸",icecream:"🍦",id:"🆔",ideograph_advantage:"🉐",imp:"👿",inbox_tray:"📥",incoming_envelope:"📨",tipping_hand_woman:"💁",information_source:"ℹ️",innocent:"😇",interrobang:"⁉️",iphone:"📱",izakaya_lantern:"🏮",jack_o_lantern:"🎃",japan:"🗾",japanese_castle:"🏯",japanese_goblin:"👺",japanese_ogre:"👹",jeans:"👖",joy:"😂",joy_cat:"😹",joystick:"🕹",kaaba:"🕋",key:"🔑",keyboard:"⌨️",keycap_ten:"🔟",kick_scooter:"🛴",kimono:"👘",kiss:"💋",kissing:"😗",kissing_cat:"😽",kissing_closed_eyes:"😚",kissing_heart:"😘",kissing_smiling_eyes:"😙",kiwi_fruit:"🥝",koala:"🐨",koko:"🈁",label:"🏷",large_blue_circle:"🔵",large_blue_diamond:"🔷",large_orange_diamond:"🔶",last_quarter_moon:"🌗",last_quarter_moon_with_face:"🌜",latin_cross:"✝️",laughing:"😆",leaves:"🍃",ledger:"📒",left_luggage:"🛅",left_right_arrow:"↔️",leftwards_arrow_with_hook:"↩️",lemon:"🍋",leo:"♌️",leopard:"🐆",level_slider:"🎚",libra:"♎️",light_rail:"🚈",link:"🔗",lion:"🦁",lips:"👄",lipstick:"💄",lizard:"🦎",lock:"🔒",lock_with_ink_pen:"🔏",lollipop:"🍭",loop:"➿",loud_sound:"🔊",loudspeaker:"📢",love_hotel:"🏩",love_letter:"💌",low_brightness:"🔅",lying_face:"🤥",m:"Ⓜ️",mag:"🔍",mag_right:"🔎",mahjong:"🀄️",mailbox:"📫",mailbox_closed:"📪",mailbox_with_mail:"📬",mailbox_with_no_mail:"📭",man:"👨",man_artist:"👨‍🎨",man_astronaut:"👨‍🚀",man_cartwheeling:"🤸‍♂️",man_cook:"👨‍🍳",man_dancing:"🕺",man_facepalming:"🤦‍♂️",man_factory_worker:"👨‍🏭",man_farmer:"👨‍🌾",man_firefighter:"👨‍🚒",man_health_worker:"👨‍⚕️",man_in_tuxedo:"🤵",man_judge:"👨‍⚖️",man_juggling:"🤹‍♂️",man_mechanic:"👨‍🔧",man_office_worker:"👨‍💼",man_pilot:"👨‍✈️",man_playing_handball:"🤾‍♂️",man_playing_water_polo:"🤽‍♂️",man_scientist:"👨‍🔬",man_shrugging:"🤷‍♂️",man_singer:"👨‍🎤",man_student:"👨‍🎓",man_teacher:"👨‍🏫",man_technologist:"👨‍💻",man_with_gua_pi_mao:"👲",man_with_turban:"👳",tangerine:"🍊",mans_shoe:"👞",mantelpiece_clock:"🕰",maple_leaf:"🍁",martial_arts_uniform:"🥋",mask:"😷",massage_woman:"💆",massage_man:"💆‍♂️",meat_on_bone:"🍖",medal_military:"🎖",medal_sports:"🏅",mega:"📣",melon:"🍈",memo:"📝",men_wrestling:"🤼‍♂️",menorah:"🕎",mens:"🚹",metal:"🤘",metro:"🚇",microphone:"🎤",microscope:"🔬",milk_glass:"🥛",milky_way:"🌌",minibus:"🚐",minidisc:"💽",mobile_phone_off:"📴",money_mouth_face:"🤑",money_with_wings:"💸",moneybag:"💰",monkey:"🐒",monkey_face:"🐵",monorail:"🚝",moon:"🌔",mortar_board:"🎓",mosque:"🕌",motor_boat:"🛥",motor_scooter:"🛵",motorcycle:"🏍",motorway:"🛣",mount_fuji:"🗻",mountain:"⛰",mountain_biking_man:"🚵",mountain_biking_woman:"🚵‍♀️",mountain_cableway:"🚠",mountain_railway:"🚞",mountain_snow:"🏔",mouse:"🐭",mouse2:"🐁",movie_camera:"🎥",moyai:"🗿",mrs_claus:"🤶",muscle:"💪",mushroom:"🍄",musical_keyboard:"🎹",musical_note:"🎵",musical_score:"🎼",mute:"🔇",nail_care:"💅",name_badge:"📛",national_park:"🏞",nauseated_face:"🤢",necktie:"👔",negative_squared_cross_mark:"❎",nerd_face:"🤓",neutral_face:"😐",new:"🆕",new_moon:"🌑",new_moon_with_face:"🌚",newspaper:"📰",newspaper_roll:"🗞",next_track_button:"⏭",ng:"🆖",no_good_man:"🙅‍♂️",no_good_woman:"🙅",night_with_stars:"🌃",no_bell:"🔕",no_bicycles:"🚳",no_entry:"⛔️",no_entry_sign:"🚫",no_mobile_phones:"📵",no_mouth:"😶",no_pedestrians:"🚷",no_smoking:"🚭","non-potable_water":"🚱",nose:"👃",notebook:"📓",notebook_with_decorative_cover:"📔",notes:"🎶",nut_and_bolt:"🔩",o:"⭕️",o2:"🅾️",ocean:"🌊",octopus:"🐙",oden:"🍢",office:"🏢",oil_drum:"🛢",ok:"🆗",ok_hand:"👌",ok_man:"🙆‍♂️",ok_woman:"🙆",old_key:"🗝",older_man:"👴",older_woman:"👵",om:"🕉",on:"🔛",oncoming_automobile:"🚘",oncoming_bus:"🚍",oncoming_police_car:"🚔",oncoming_taxi:"🚖",open_file_folder:"📂",open_hands:"👐",open_mouth:"😮",open_umbrella:"☂️",ophiuchus:"⛎",orange_book:"📙",orthodox_cross:"☦️",outbox_tray:"📤",owl:"🦉",ox:"🐂",package:"📦",page_facing_up:"📄",page_with_curl:"📃",pager:"📟",paintbrush:"🖌",palm_tree:"🌴",pancakes:"🥞",panda_face:"🐼",paperclip:"📎",paperclips:"🖇",parasol_on_ground:"⛱",parking:"🅿️",part_alternation_mark:"〽️",partly_sunny:"⛅️",passenger_ship:"🛳",passport_control:"🛂",pause_button:"⏸",peace_symbol:"☮️",peach:"🍑",peanuts:"🥜",pear:"🍐",pen:"🖊",pencil2:"✏️",penguin:"🐧",pensive:"😔",performing_arts:"🎭",persevere:"😣",person_fencing:"🤺",pouting_woman:"🙎",phone:"☎️",pick:"⛏",pig:"🐷",pig2:"🐖",pig_nose:"🐽",pill:"💊",pineapple:"🍍",ping_pong:"🏓",pisces:"♓️",pizza:"🍕",place_of_worship:"🛐",plate_with_cutlery:"🍽",play_or_pause_button:"⏯",point_down:"👇",point_left:"👈",point_right:"👉",point_up:"☝️",point_up_2:"👆",police_car:"🚓",policewoman:"👮‍♀️",poodle:"🐩",popcorn:"🍿",post_office:"🏣",postal_horn:"📯",postbox:"📮",potable_water:"🚰",potato:"🥔",pouch:"👝",poultry_leg:"🍗",pound:"💷",rage:"😡",pouting_cat:"😾",pouting_man:"🙎‍♂️",pray:"🙏",prayer_beads:"📿",pregnant_woman:"🤰",previous_track_button:"⏮",prince:"🤴",princess:"👸",printer:"🖨",purple_heart:"💜",purse:"👛",pushpin:"📌",put_litter_in_its_place:"🚮",question:"❓",rabbit:"🐰",rabbit2:"🐇",racehorse:"🐎",racing_car:"🏎",radio:"📻",radio_button:"🔘",radioactive:"☢️",railway_car:"🚃",railway_track:"🛤",rainbow:"🌈",rainbow_flag:"🏳️‍🌈",raised_back_of_hand:"🤚",raised_hand_with_fingers_splayed:"🖐",raised_hands:"🙌",raising_hand_woman:"🙋",raising_hand_man:"🙋‍♂️",ram:"🐏",ramen:"🍜",rat:"🐀",record_button:"⏺",recycle:"♻️",red_circle:"🔴",registered:"®️",relaxed:"☺️",relieved:"😌",reminder_ribbon:"🎗",repeat:"🔁",repeat_one:"🔂",rescue_worker_helmet:"⛑",restroom:"🚻",revolving_hearts:"💞",rewind:"⏪",rhinoceros:"🦏",ribbon:"🎀",rice:"🍚",rice_ball:"🍙",rice_cracker:"🍘",rice_scene:"🎑",right_anger_bubble:"🗯",ring:"💍",robot:"🤖",rocket:"🚀",rofl:"🤣",roll_eyes:"🙄",roller_coaster:"🎢",rooster:"🐓",rose:"🌹",rosette:"🏵",rotating_light:"🚨",round_pushpin:"📍",rowing_man:"🚣",rowing_woman:"🚣‍♀️",rugby_football:"🏉",running_man:"🏃",running_shirt_with_sash:"🎽",running_woman:"🏃‍♀️",sa:"🈂️",sagittarius:"♐️",sake:"🍶",sandal:"👡",santa:"🎅",satellite:"📡",saxophone:"🎷",school:"🏫",school_satchel:"🎒",scissors:"✂️",scorpion:"🦂",scorpius:"♏️",scream:"😱",scream_cat:"🙀",scroll:"📜",seat:"💺",secret:"㊙️",see_no_evil:"🙈",seedling:"🌱",selfie:"🤳",shallow_pan_of_food:"🥘",shamrock:"☘️",shark:"🦈",shaved_ice:"🍧",sheep:"🐑",shell:"🐚",shield:"🛡",shinto_shrine:"⛩",ship:"🚢",shirt:"👕",shopping:"🛍",shopping_cart:"🛒",shower:"🚿",shrimp:"🦐",signal_strength:"📶",six_pointed_star:"🔯",ski:"🎿",skier:"⛷",skull:"💀",skull_and_crossbones:"☠️",sleeping:"😴",sleeping_bed:"🛌",sleepy:"😪",slightly_frowning_face:"🙁",slightly_smiling_face:"🙂",slot_machine:"🎰",small_airplane:"🛩",small_blue_diamond:"🔹",small_orange_diamond:"🔸",small_red_triangle:"🔺",small_red_triangle_down:"🔻",smile:"😄",smile_cat:"😸",smiley:"😃",smiley_cat:"😺",smiling_imp:"😈",smirk:"😏",smirk_cat:"😼",smoking:"🚬",snail:"🐌",snake:"🐍",sneezing_face:"🤧",snowboarder:"🏂",snowflake:"❄️",snowman:"⛄️",snowman_with_snow:"☃️",sob:"😭",soccer:"⚽️",soon:"🔜",sos:"🆘",sound:"🔉",space_invader:"👾",spades:"♠️",spaghetti:"🍝",sparkle:"❇️",sparkler:"🎇",sparkles:"✨",sparkling_heart:"💖",speak_no_evil:"🙊",speaker:"🔈",speaking_head:"🗣",speech_balloon:"💬",speedboat:"🚤",spider:"🕷",spider_web:"🕸",spiral_calendar:"🗓",spiral_notepad:"🗒",spoon:"🥄",squid:"🦑",stadium:"🏟",star:"⭐️",star2:"🌟",star_and_crescent:"☪️",star_of_david:"✡️",stars:"🌠",station:"🚉",statue_of_liberty:"🗽",steam_locomotive:"🚂",stew:"🍲",stop_button:"⏹",stop_sign:"🛑",stopwatch:"⏱",straight_ruler:"📏",strawberry:"🍓",stuck_out_tongue:"😛",stuck_out_tongue_closed_eyes:"😝",stuck_out_tongue_winking_eye:"😜",studio_microphone:"🎙",stuffed_flatbread:"🥙",sun_behind_large_cloud:"🌥",sun_behind_rain_cloud:"🌦",sun_behind_small_cloud:"🌤",sun_with_face:"🌞",sunflower:"🌻",sunglasses:"😎",sunny:"☀️",sunrise:"🌅",sunrise_over_mountains:"🌄",surfing_man:"🏄",surfing_woman:"🏄‍♀️",sushi:"🍣",suspension_railway:"🚟",sweat:"😓",sweat_drops:"💦",sweat_smile:"😅",sweet_potato:"🍠",swimming_man:"🏊",swimming_woman:"🏊‍♀️",symbols:"🔣",synagogue:"🕍",syringe:"💉",taco:"🌮",tada:"🎉",tanabata_tree:"🎋",taurus:"♉️",taxi:"🚕",tea:"🍵",telephone_receiver:"📞",telescope:"🔭",tennis:"🎾",tent:"⛺️",thermometer:"🌡",thinking:"🤔",thought_balloon:"💭",ticket:"🎫",tickets:"🎟",tiger:"🐯",tiger2:"🐅",timer_clock:"⏲",tipping_hand_man:"💁‍♂️",tired_face:"😫",tm:"™️",toilet:"🚽",tokyo_tower:"🗼",tomato:"🍅",tongue:"👅",top:"🔝",tophat:"🎩",tornado:"🌪",trackball:"🖲",tractor:"🚜",traffic_light:"🚥",train:"🚋",train2:"🚆",tram:"🚊",triangular_flag_on_post:"🚩",triangular_ruler:"📐",trident:"🔱",triumph:"😤",trolleybus:"🚎",trophy:"🏆",tropical_drink:"🍹",tropical_fish:"🐠",truck:"🚚",trumpet:"🎺",tulip:"🌷",tumbler_glass:"🥃",turkey:"🦃",turtle:"🐢",tv:"📺",twisted_rightwards_arrows:"🔀",two_hearts:"💕",two_men_holding_hands:"👬",two_women_holding_hands:"👭",u5272:"🈹",u5408:"🈴",u55b6:"🈺",u6307:"🈯️",u6708:"🈷️",u6709:"🈶",u6e80:"🈵",u7121:"🈚️",u7533:"🈸",u7981:"🈲",u7a7a:"🈳",umbrella:"☔️",unamused:"😒",underage:"🔞",unicorn:"🦄",unlock:"🔓",up:"🆙",upside_down_face:"🙃",v:"✌️",vertical_traffic_light:"🚦",vhs:"📼",vibration_mode:"📳",video_camera:"📹",video_game:"🎮",violin:"🎻",virgo:"♍️",volcano:"🌋",volleyball:"🏐",vs:"🆚",vulcan_salute:"🖖",walking_man:"🚶",walking_woman:"🚶‍♀️",waning_crescent_moon:"🌘",waning_gibbous_moon:"🌖",warning:"⚠️",wastebasket:"🗑",watch:"⌚️",water_buffalo:"🐃",watermelon:"🍉",wave:"👋",wavy_dash:"〰️",waxing_crescent_moon:"🌒",wc:"🚾",weary:"😩",wedding:"💒",weight_lifting_man:"🏋️",weight_lifting_woman:"🏋️‍♀️",whale:"🐳",whale2:"🐋",wheel_of_dharma:"☸️",wheelchair:"♿️",white_check_mark:"✅",white_circle:"⚪️",white_flag:"🏳️",white_flower:"💮",white_large_square:"⬜️",white_medium_small_square:"◽️",white_medium_square:"◻️",white_small_square:"▫️",white_square_button:"🔳",wilted_flower:"🥀",wind_chime:"🎐",wind_face:"🌬",wine_glass:"🍷",wink:"😉",wolf:"🐺",woman:"👩",woman_artist:"👩‍🎨",woman_astronaut:"👩‍🚀",woman_cartwheeling:"🤸‍♀️",woman_cook:"👩‍🍳",woman_facepalming:"🤦‍♀️",woman_factory_worker:"👩‍🏭",woman_farmer:"👩‍🌾",woman_firefighter:"👩‍🚒",woman_health_worker:"👩‍⚕️",woman_judge:"👩‍⚖️",woman_juggling:"🤹‍♀️",woman_mechanic:"👩‍🔧",woman_office_worker:"👩‍💼",woman_pilot:"👩‍✈️",woman_playing_handball:"🤾‍♀️",woman_playing_water_polo:"🤽‍♀️",woman_scientist:"👩‍🔬",woman_shrugging:"🤷‍♀️",woman_singer:"👩‍🎤",woman_student:"👩‍🎓",woman_teacher:"👩‍🏫",woman_technologist:"👩‍💻",woman_with_turban:"👳‍♀️",womans_clothes:"👚",womans_hat:"👒",women_wrestling:"🤼‍♀️",womens:"🚺",world_map:"🗺",worried:"😟",wrench:"🔧",writing_hand:"✍️",x:"❌",yellow_heart:"💛",yen:"💴",yin_yang:"☯️",yum:"😋",zap:"⚡️",zipper_mouth_face:"🤐",zzz:"💤",octocat:':octocat:',showdown:`S`},t.Converter=function(e){"use strict";var a,r,n={},o=[],l=[],s={},c=B,u={parsed:{},raw:"",format:""};for(a in e=e||{},P)P.hasOwnProperty(a)&&(n[a]=P[a]);if(typeof e!="object")throw Error("Converter expects the passed parameter to be an object, but "+typeof e+" was passed instead.");for(r in e)e.hasOwnProperty(r)&&(n[r]=e[r]);function h(i,d){if(d=d||null,t.helper.isString(i)){if(d=i=t.helper.stdExtName(i),t.extensions[i]){console.warn("DEPRECATION WARNING: "+i+" is an old extension that uses a deprecated loading method.Please inform the developer that the extension should be updated!");var _=t.extensions[i],g=i;if(typeof _=="function"&&(_=_(new t.Converter)),t.helper.isArray(_)||(_=[_]),!(g=T(_,g)).valid)throw Error(g.error);for(var m=0;m<_.length;++m)switch(_[m].type){case"lang":o.push(_[m]);break;case"output":l.push(_[m]);break;default:throw Error("Extension loader error: Type unrecognized!!!")}return}if(t.helper.isUndefined(x[i]))throw Error('Extension "'+i+'" could not be loaded. It was either not found or is not a valid extension.');i=x[i]}if(typeof i=="function"&&(i=i()),g=T(i=t.helper.isArray(i)?i:[i],d),!g.valid)throw Error(g.error);for(var f=0;f[ \t]+¨NBSP;<"),!d){if(!window||!window.document)throw new Error("HTMLParser is undefined. If in a webworker or nodejs environment, you need to provide a WHATWG DOM and HTML such as JSDOM");d=window.document}for(var d=d.createElement("div"),_=(d.innerHTML=i,{preList:function(C){for(var k=C.querySelectorAll("pre"),j=[],w=0;w'}else j.push(k[w].innerHTML),k[w].innerHTML="",k[w].setAttribute("prenum",w.toString());return j}(d)}),g=(function C(k){for(var j=0;j? ?(['"].*['"])?\)$/m))c="";else if(!c){if(c="#"+(s=s||l.toLowerCase().replace(/ ?\n/g," ")),t.helper.isUndefined(r.gUrls[s]))return o;c=r.gUrls[s],t.helper.isUndefined(r.gTitles[s])||(p=r.gTitles[s])}return o='"}return e=(e=(e=(e=(e=r.converter._dispatch("anchors.before",e,a,r)).replace(/\[((?:\[[^\]]*]|[^\[\]])*)] ?(?:\n *)?\[(.*?)]()()()()/g,n)).replace(/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]?<([^>]*)>(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g,n)).replace(/\[((?:\[[^\]]*]|[^\[\]])*)]()[ \t]*\([ \t]??(?:[ \t]*((["'])([^"]*?)\5))?[ \t]?\)/g,n)).replace(/\[([^\[\]]+)]()()()()()/g,n),a.ghMentions&&(e=e.replace(/(^|\s)(\\)?(@([a-z\d]+(?:[a-z\d.-]+?[a-z\d]+)*))/gim,function(o,l,s,c,u){if(s==="\\")return l+c;if(!t.helper.isString(a.ghMentionsLink))throw new Error("ghMentionsLink option must be a string");return s="",l+'"+c+""})),e=r.converter._dispatch("anchors.after",e,a,r)});var U=/([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+?\.[^'">\s]+?)()(\1)?(?=\s|$)(?!["<>])/gi,G=/([*~_]+|\b)(((https?|ftp|dict):\/\/|www\.)[^'">\s]+\.[^'">\s]+?)([.!?,()\[\]])?(\1)?(?=\s|$)(?!["<>])/gi,F=/()<(((https?|ftp|dict):\/\/|www\.)[^'">\s]+)()>()/gi,W=/(^|\s)(?:mailto:)?([A-Za-z0-9!#$%&'*+-/=?^_`{|}~.]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)(?=$|\s)/gim,K=/<()(?:mailto:)?([-.\w]+@[-a-z0-9]+(\.[-a-z0-9]+)*\.[a-z]+)>/gi;t.subParser("autoLinks",function(e,a,r){"use strict";return e=(e=(e=r.converter._dispatch("autoLinks.before",e,a,r)).replace(F,I(a))).replace(K,O(a,r)),e=r.converter._dispatch("autoLinks.after",e,a,r)}),t.subParser("simplifiedAutoLinks",function(e,a,r){"use strict";return a.simplifiedAutoLink?(e=r.converter._dispatch("simplifiedAutoLinks.before",e,a,r),e=(e=a.excludeTrailingPunctuationFromURLs?e.replace(G,I(a)):e.replace(U,I(a))).replace(W,O(a,r)),r.converter._dispatch("simplifiedAutoLinks.after",e,a,r)):e}),t.subParser("blockGamut",function(e,a,r){"use strict";return e=r.converter._dispatch("blockGamut.before",e,a,r),e=t.subParser("blockQuotes")(e,a,r),e=t.subParser("headers")(e,a,r),e=t.subParser("horizontalRule")(e,a,r),e=t.subParser("lists")(e,a,r),e=t.subParser("codeBlocks")(e,a,r),e=t.subParser("tables")(e,a,r),e=t.subParser("hashHTMLBlocks")(e,a,r),e=t.subParser("paragraphs")(e,a,r),e=r.converter._dispatch("blockGamut.after",e,a,r)}),t.subParser("blockQuotes",function(e,a,r){"use strict";e=r.converter._dispatch("blockQuotes.before",e,a,r);var n=/(^ {0,3}>[ \t]?.+\n(.+\n)*\n*)+/gm;return a.splitAdjacentBlockquotes&&(n=/^ {0,3}>[\s\S]*?(?:\n\n)/gm),e=(e+=` + +`).replace(n,function(o){return o=(o=(o=o.replace(/^[ \t]*>[ \t]?/gm,"")).replace(/¨0/g,"")).replace(/^[ \t]+$/gm,""),o=t.subParser("githubCodeBlocks")(o,a,r),o=(o=(o=t.subParser("blockGamut")(o,a,r)).replace(/(^|\n)/g,"$1 ")).replace(/(\s*
[^\r]+?<\/pre>)/gm,function(l,s){return s.replace(/^  /gm,"¨0").replace(/¨0/g,"")}),t.subParser("hashBlock")(`
+`+o+` +
`,a,r)}),e=r.converter._dispatch("blockQuotes.after",e,a,r)}),t.subParser("codeBlocks",function(e,a,r){"use strict";return e=r.converter._dispatch("codeBlocks.before",e,a,r),e=(e=(e+="¨0").replace(/(?:\n\n|^)((?:(?:[ ]{4}|\t).*\n+)+)(\n*[ ]{0,3}[^ \t\n]|(?=¨0))/g,function(n,c,l){var s=` +`,c=t.subParser("outdent")(c,a,r);return c=t.subParser("encodeCode")(c,a,r),c="
"+(c=(c=(c=t.subParser("detab")(c,a,r)).replace(/^\n+/g,"")).replace(/\n+$/g,""))+(s=a.omitExtraWLInCodeBlocks?"":s)+"
",t.subParser("hashBlock")(c,a,r)+l})).replace(/¨0/,""),e=r.converter._dispatch("codeBlocks.after",e,a,r)}),t.subParser("codeSpans",function(e,a,r){"use strict";return e=(e=(e=r.converter._dispatch("codeSpans.before",e,a,r))===void 0?"":e).replace(/(^|[^\\])(`+)([^\r]*?[^`])\2(?!`)/gm,function(n,o,l,s){return s=(s=s.replace(/^([ \t]*)/g,"")).replace(/[ \t]*$/g,""),s=o+""+(s=t.subParser("encodeCode")(s,a,r))+"",s=t.subParser("hashHTMLSpans")(s,a,r)}),e=r.converter._dispatch("codeSpans.after",e,a,r)}),t.subParser("completeHTMLDocument",function(e,a,r){"use strict";if(!a.completeHTMLDocument)return e;e=r.converter._dispatch("completeHTMLDocument.before",e,a,r);var n,o="html",l=` +`,s="",c=` +`,u="",h="";for(n in r.metadata.parsed.doctype!==void 0&&(l=" +`,(o=r.metadata.parsed.doctype.toString().toLowerCase())!=="html"&&o!=="html5"||(c='')),r.metadata.parsed)if(r.metadata.parsed.hasOwnProperty(n))switch(n.toLowerCase()){case"doctype":break;case"title":s=""+r.metadata.parsed.title+` +`;break;case"charset":c=o==="html"||o==="html5"?' +`:' +`;break;case"language":case"lang":u=' lang="'+r.metadata.parsed[n]+'"',h+=' +`;break;default:h+=' +`}return e=l+" + +`+s+c+h+` + +`+e.trim()+` + +`,e=r.converter._dispatch("completeHTMLDocument.after",e,a,r)}),t.subParser("detab",function(e,a,r){"use strict";return e=(e=(e=(e=(e=(e=r.converter._dispatch("detab.before",e,a,r)).replace(/\t(?=\t)/g," ")).replace(/\t/g,"¨A¨B")).replace(/¨B(.+?)¨A/g,function(n,o){for(var l=o,s=4-l.length%4,c=0;c/g,">"),e=r.converter._dispatch("encodeAmpsAndAngles.after",e,a,r)}),t.subParser("encodeBackslashEscapes",function(e,a,r){"use strict";return e=(e=(e=r.converter._dispatch("encodeBackslashEscapes.before",e,a,r)).replace(/\\(\\)/g,t.helper.escapeCharactersCallback)).replace(/\\([`*_{}\[\]()>#+.!~=|:-])/g,t.helper.escapeCharactersCallback),e=r.converter._dispatch("encodeBackslashEscapes.after",e,a,r)}),t.subParser("encodeCode",function(e,a,r){"use strict";return e=(e=r.converter._dispatch("encodeCode.before",e,a,r)).replace(/&/g,"&").replace(//g,">").replace(/([*_{}\[\]\\=~-])/g,t.helper.escapeCharactersCallback),e=r.converter._dispatch("encodeCode.after",e,a,r)}),t.subParser("escapeSpecialCharsWithinTagAttributes",function(e,a,r){"use strict";return e=(e=(e=r.converter._dispatch("escapeSpecialCharsWithinTagAttributes.before",e,a,r)).replace(/<\/?[a-z\d_:-]+(?:[\s]+[\s\S]+?)?>/gi,function(n){return n.replace(/(.)<\/?code>(?=.)/g,"$1`").replace(/([\\`*_~=|])/g,t.helper.escapeCharactersCallback)})).replace(/-]|-[^>])(?:[^-]|-[^-])*)--)>/gi,function(n){return n.replace(/([\\`*_~=|])/g,t.helper.escapeCharactersCallback)}),e=r.converter._dispatch("escapeSpecialCharsWithinTagAttributes.after",e,a,r)}),t.subParser("githubCodeBlocks",function(e,a,r){"use strict";return a.ghCodeBlocks?(e=r.converter._dispatch("githubCodeBlocks.before",e,a,r),e=(e=(e+="¨0").replace(/(?:^|\n)(?: {0,3})(```+|~~~+)(?: *)([^\s`~]*)\n([\s\S]*?)\n(?: {0,3})\1/g,function(n,o,l,s){var c=a.omitExtraWLInCodeBlocks?"":` +`;return s=t.subParser("encodeCode")(s,a,r),s="
"+(s=(s=(s=t.subParser("detab")(s,a,r)).replace(/^\n+/g,"")).replace(/\n+$/g,""))+c+"
",s=t.subParser("hashBlock")(s,a,r),` + +¨G`+(r.ghCodeBlocks.push({text:n,codeblock:s})-1)+`G + +`})).replace(/¨0/,""),r.converter._dispatch("githubCodeBlocks.after",e,a,r)):e}),t.subParser("hashBlock",function(e,a,r){"use strict";return e=(e=r.converter._dispatch("hashBlock.before",e,a,r)).replace(/(^\n+|\n+$)/g,""),e=` + +¨K`+(r.gHtmlBlocks.push(e)-1)+`K + +`,e=r.converter._dispatch("hashBlock.after",e,a,r)}),t.subParser("hashCodeTags",function(e,a,r){"use strict";return e=r.converter._dispatch("hashCodeTags.before",e,a,r),e=t.helper.replaceRecursiveRegExp(e,function(n,o,l,s){return l=l+t.subParser("encodeCode")(o,a,r)+s,"¨C"+(r.gHtmlSpans.push(l)-1)+"C"},"]*>","","gim"),e=r.converter._dispatch("hashCodeTags.after",e,a,r)}),t.subParser("hashElement",function(e,a,r){"use strict";return function(n,o){return o=(o=(o=o.replace(/\n\n/g,` +`)).replace(/^\n/,"")).replace(/\n+$/g,""),o=` + +¨K`+(r.gHtmlBlocks.push(o)-1)+`K + +`}}),t.subParser("hashHTMLBlocks",function(e,a,r){"use strict";e=r.converter._dispatch("hashHTMLBlocks.before",e,a,r);function n(i,d,_,g){return _.search(/\bmarkdown\b/)!==-1&&(i=_+r.converter.makeHtml(d)+g),` + +¨K`+(r.gHtmlBlocks.push(i)-1)+`K + +`}var o=["pre","div","h1","h2","h3","h4","h5","h6","blockquote","table","dl","ol","ul","script","noscript","form","fieldset","iframe","math","style","section","header","footer","nav","article","aside","address","audio","canvas","figure","hgroup","output","video","p"];a.backslashEscapesHTMLTags&&(e=e.replace(/\\<(\/?[^>]+?)>/g,function(i,d){return"<"+d+">"}));for(var l=0;l]*>)","im"),c="<"+o[l]+"\\b[^>]*>",u="";(h=t.helper.regexIndexOf(e,s))!==-1;){var h=t.helper.splitAtIndex(e,h),p=t.helper.replaceRecursiveRegExp(h[1],n,c,u,"im");if(p===h[1])break;e=h[0].concat(p)}return e=e.replace(/(\n {0,3}(<(hr)\b([^<>])*?\/?>)[ \t]*(?=\n{2,}))/g,t.subParser("hashElement")(e,a,r)),e=(e=t.helper.replaceRecursiveRegExp(e,function(i){return` + +¨K`+(r.gHtmlBlocks.push(i)-1)+`K + +`},"^ {0,3}","gm")).replace(/(?:\n\n)( {0,3}(?:<([?%])[^\r]*?\2>)[ \t]*(?=\n{2,}))/g,t.subParser("hashElement")(e,a,r)),e=r.converter._dispatch("hashHTMLBlocks.after",e,a,r)}),t.subParser("hashHTMLSpans",function(e,a,r){"use strict";function n(o){return"¨C"+(r.gHtmlSpans.push(o)-1)+"C"}return e=(e=(e=(e=(e=r.converter._dispatch("hashHTMLSpans.before",e,a,r)).replace(/<[^>]+?\/>/gi,n)).replace(/<([^>]+?)>[\s\S]*?<\/\1>/g,n)).replace(/<([^>]+?)\s[^>]+?>[\s\S]*?<\/\1>/g,n)).replace(/<[^>]+?>/gi,n),e=r.converter._dispatch("hashHTMLSpans.after",e,a,r)}),t.subParser("unhashHTMLSpans",function(e,a,r){"use strict";e=r.converter._dispatch("unhashHTMLSpans.before",e,a,r);for(var n=0;n]*>\\s*]*>","^ {0,3}\\s*
","gim"),e=r.converter._dispatch("hashPreCodeTags.after",e,a,r)}),t.subParser("headers",function(e,a,r){"use strict";e=r.converter._dispatch("headers.before",e,a,r);var n=isNaN(parseInt(a.headerLevelStart))?1:parseInt(a.headerLevelStart),l=a.smoothLivePreview?/^(.+)[ \t]*\n={2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n=+[ \t]*\n+/gm,o=a.smoothLivePreview?/^(.+)[ \t]*\n-{2,}[ \t]*\n+/gm:/^(.+)[ \t]*\n-+[ \t]*\n+/gm,l=(e=(e=e.replace(l,function(c,p){var h=t.subParser("spanGamut")(p,a,r),p=a.noHeaderId?"":' id="'+s(p)+'"',p=""+h+"";return t.subParser("hashBlock")(p,a,r)})).replace(o,function(c,i){var h=t.subParser("spanGamut")(i,a,r),i=a.noHeaderId?"":' id="'+s(i)+'"',p=n+1,i=""+h+"";return t.subParser("hashBlock")(i,a,r)}),a.requireSpaceBeforeHeadingText?/^(#{1,6})[ \t]+(.+?)[ \t]*#*\n+/gm:/^(#{1,6})[ \t]*(.+?)[ \t]*#*\n+/gm);function s(h){var u=h=a.customizedHeaderId&&(u=h.match(/\{([^{]+?)}\s*$/))&&u[1]?u[1]:h,h=t.helper.isString(a.prefixHeaderId)?a.prefixHeaderId:a.prefixHeaderId===!0?"section-":"";return a.rawPrefixHeaderId||(u=h+u),u=(a.ghCompatibleHeaderId?u.replace(/ /g,"-").replace(/&/g,"").replace(/¨T/g,"").replace(/¨D/g,"").replace(/[&+$,\/:;=?@"#{}|^¨~\[\]`\\*)(%.!'<>]/g,""):a.rawHeaderId?u.replace(/ /g,"-").replace(/&/g,"&").replace(/¨T/g,"¨").replace(/¨D/g,"$").replace(/["']/g,"-"):u.replace(/[^\w]/g,"")).toLowerCase(),a.rawPrefixHeaderId&&(u=h+u),r.hashLinkCounts[u]?u=u+"-"+r.hashLinkCounts[u]++:r.hashLinkCounts[u]=1,u}return e=e.replace(l,function(c,i,d){var p=d,p=(a.customizedHeaderId&&(p=d.replace(/\s?\{([^{]+?)}\s*$/,"")),t.subParser("spanGamut")(p,a,r)),d=a.noHeaderId?"":' id="'+s(d)+'"',i=n-1+i.length,d=""+p+"";return t.subParser("hashBlock")(d,a,r)}),e=r.converter._dispatch("headers.after",e,a,r)}),t.subParser("horizontalRule",function(e,a,r){"use strict";e=r.converter._dispatch("horizontalRule.before",e,a,r);var n=t.subParser("hashBlock")("
",a,r);return e=(e=(e=e.replace(/^ {0,2}( ?-){3,}[ \t]*$/gm,n)).replace(/^ {0,2}( ?\*){3,}[ \t]*$/gm,n)).replace(/^ {0,2}( ?_){3,}[ \t]*$/gm,n),e=r.converter._dispatch("horizontalRule.after",e,a,r)}),t.subParser("images",function(e,a,r){"use strict";function n(o,l,s,c,u,h,p,i){var d=r.gUrls,_=r.gTitles,g=r.gDimensions;if(s=s.toLowerCase(),i=i||"",-1? ?(['"].*['"])?\)$/m))c="";else if(c===""||c===null){if(c="#"+(s=s!==""&&s!==null?s:l.toLowerCase().replace(/ ?\n/g," ")),t.helper.isUndefined(d[s]))return o;c=d[s],t.helper.isUndefined(_[s])||(i=_[s]),t.helper.isUndefined(g[s])||(u=g[s].width,h=g[s].height)}return l=l.replace(/"/g,""").replace(t.helper.regexes.asteriskDashAndColon,t.helper.escapeCharactersCallback),o=''+l+'?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g,function(o,l,s,c,u,h,p,i){return n(o,l,s,c=c.replace(/\s/g,""),u,h,0,i)})).replace(/!\[([^\]]*?)][ \t]*()\([ \t]?<([^>]*)>(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(?:(["'])([^"]*?)\6))?[ \t]?\)/g,n)).replace(/!\[([^\]]*?)][ \t]*()\([ \t]??(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*(?:(["'])([^"]*?)\6)?[ \t]?\)/g,n)).replace(/!\[([^\[\]]+)]()()()()()/g,n),e=r.converter._dispatch("images.after",e,a,r)}),t.subParser("italicsAndBold",function(e,a,r){"use strict";return e=r.converter._dispatch("italicsAndBold.before",e,a,r),e=a.literalMidWordUnderscores?(e=(e=e.replace(/\b___(\S[\s\S]*?)___\b/g,function(n,o){return""+o+""})).replace(/\b__(\S[\s\S]*?)__\b/g,function(n,o){return""+o+""})).replace(/\b_(\S[\s\S]*?)_\b/g,function(n,o){return""+o+""}):(e=(e=e.replace(/___(\S[\s\S]*?)___/g,function(n,o){return/\S$/.test(o)?""+o+"":n})).replace(/__(\S[\s\S]*?)__/g,function(n,o){return/\S$/.test(o)?""+o+"":n})).replace(/_([^\s_][\s\S]*?)_/g,function(n,o){return/\S$/.test(o)?""+o+"":n}),e=a.literalMidWordAsterisks?(e=(e=e.replace(/([^*]|^)\B\*\*\*(\S[\s\S]*?)\*\*\*\B(?!\*)/g,function(n,o,l){return o+""+l+""})).replace(/([^*]|^)\B\*\*(\S[\s\S]*?)\*\*\B(?!\*)/g,function(n,o,l){return o+""+l+""})).replace(/([^*]|^)\B\*(\S[\s\S]*?)\*\B(?!\*)/g,function(n,o,l){return o+""+l+""}):(e=(e=e.replace(/\*\*\*(\S[\s\S]*?)\*\*\*/g,function(n,o){return/\S$/.test(o)?""+o+"":n})).replace(/\*\*(\S[\s\S]*?)\*\*/g,function(n,o){return/\S$/.test(o)?""+o+"":n})).replace(/\*([^\s*][\s\S]*?)\*/g,function(n,o){return/\S$/.test(o)?""+o+"":n}),e=r.converter._dispatch("italicsAndBold.after",e,a,r)}),t.subParser("lists",function(e,a,r){"use strict";function n(s,c){r.gListLevel++,s=s.replace(/\n{2,}$/,` +`);var u=/(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0| {0,3}([*+-]|\d+[.])[ \t]+))/gm,h=/\n[ \t]*\n(?!¨0)/.test(s+="¨0");return a.disableForced4SpacesIndentedSublists&&(u=/(\n)?(^ {0,3})([*+-]|\d+[.])[ \t]+((\[(x|X| )?])?[ \t]*[^\r]+?(\n{1,2}))(?=\n*(¨0|\2([*+-]|\d+[.])[ \t]+))/gm),s=(s=s.replace(u,function(p,i,d,_,b,m,f){f=f&&f.trim()!=="";var b=t.subParser("outdent")(b,a,r),C="";return m&&a.tasklists&&(C=' class="task-list-item" style="list-style-type: none;"',b=b.replace(/^[ \t]*\[(x|X| )?]/m,function(){var k='"+(b=(b=i||-1 +`})).replace(/¨0/g,""),r.gListLevel--,s=c?s.replace(/\s+$/,""):s}function o(s,c){return c==="ol"&&(c=s.match(/^ *(\d+)\./),c&&c[1]!=="1")?' start="'+c[1]+'"':""}function l(s,c,u){var h,p=a.disableForced4SpacesIndentedSublists?/^ ?\d+\.[ \t]/gm:/^ {0,3}\d+\.[ \t]/gm,i=a.disableForced4SpacesIndentedSublists?/^ ?[*+-][ \t]/gm:/^ {0,3}[*+-][ \t]/gm,d=c==="ul"?p:i,_="";return s.search(d)!==-1?function g(m){var f=m.search(d),b=o(s,c);f!==-1?(_+=` + +<`+c+b+`> +`+n(m.slice(0,f),!!u)+" +`,d=(c=c==="ul"?"ol":"ul")=="ul"?p:i,g(m.slice(f))):_+=` + +<`+c+b+`> +`+n(m,!!u)+" +`}(s):(h=o(s,c),_=` + +<`+c+h+`> +`+n(s,!!u)+" +`),_}return e=r.converter._dispatch("lists.before",e,a,r),e+="¨0",e=(e=r.gListLevel?e.replace(/^(( {0,3}([*+-]|\d+[.])[ \t]+)[^\r]+?(¨0|\n{2,}(?=\S)(?![ \t]*(?:[*+-]|\d+[.])[ \t]+)))/gm,function(s,c,u){return l(c,-1"),c+="

",o.push(c))}for(l=o.length,s=0;s]*>\s*]*>/.test(h)&&(p=!0)}o[s]=h}return e=(e=(e=o.join(` +`)).replace(/^\n+/g,"")).replace(/\n+$/g,""),r.converter._dispatch("paragraphs.after",e,a,r)}),t.subParser("runExtension",function(e,a,r,n){"use strict";return e.filter?a=e.filter(a,n.converter,r):e.regex&&((n=e.regex)instanceof RegExp||(n=new RegExp(n,"g")),a=a.replace(n,e.replace)),a}),t.subParser("spanGamut",function(e,a,r){"use strict";return e=r.converter._dispatch("spanGamut.before",e,a,r),e=t.subParser("codeSpans")(e,a,r),e=t.subParser("escapeSpecialCharsWithinTagAttributes")(e,a,r),e=t.subParser("encodeBackslashEscapes")(e,a,r),e=t.subParser("images")(e,a,r),e=t.subParser("anchors")(e,a,r),e=t.subParser("autoLinks")(e,a,r),e=t.subParser("simplifiedAutoLinks")(e,a,r),e=t.subParser("emoji")(e,a,r),e=t.subParser("underline")(e,a,r),e=t.subParser("italicsAndBold")(e,a,r),e=t.subParser("strikethrough")(e,a,r),e=t.subParser("ellipsis")(e,a,r),e=t.subParser("hashHTMLSpans")(e,a,r),e=t.subParser("encodeAmpsAndAngles")(e,a,r),a.simpleLineBreaks?/\n\n¨K/.test(e)||(e=e.replace(/\n+/g,`
+`)):e=e.replace(/ +\n/g,`
+`),e=r.converter._dispatch("spanGamut.after",e,a,r)}),t.subParser("strikethrough",function(e,a,r){"use strict";return a.strikethrough&&(e=(e=r.converter._dispatch("strikethrough.before",e,a,r)).replace(/(?:~){2}([\s\S]+?)(?:~){2}/g,function(n,o){return o=o,""+(o=a.simplifiedAutoLink?t.subParser("simplifiedAutoLinks")(o,a,r):o)+""}),e=r.converter._dispatch("strikethrough.after",e,a,r)),e}),t.subParser("stripLinkDefinitions",function(e,a,r){"use strict";function n(o,l,s,c,u,h,p){return l=l.toLowerCase(),e.toLowerCase().split(l).length-1<2?o:(s.match(/^data:.+?\/.+?;base64,/)?r.gUrls[l]=s.replace(/\s/g,""):r.gUrls[l]=t.subParser("encodeAmpsAndAngles")(s,a,r),h?h+p:(p&&(r.gTitles[l]=p.replace(/"|'/g,""")),a.parseImgDimensions&&c&&u&&(r.gDimensions[l]={width:c,height:u}),""))}return e=(e=(e=(e+="¨0").replace(/^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n\n|(?=¨0)|(?=\n\[))/gm,n)).replace(/^ {0,3}\[([^\]]+)]:[ \t]*\n?[ \t]*\s]+)>?(?: =([*\d]+[A-Za-z%]{0,4})x([*\d]+[A-Za-z%]{0,4}))?[ \t]*\n?[ \t]*(?:(\n*)["|'(](.+?)["|')][ \t]*)?(?:\n+|(?=¨0))/gm,n)).replace(/¨0/,"")}),t.subParser("tables",function(e,a,r){"use strict";if(!a.tables)return e;function n(o){for(var l=o.split(` +`),s=0;s"+(u=t.subParser("spanGamut")(u,a,r))+` +`));for(s=0;s"+t.subParser("spanGamut")(i,a,r)+` +`));b.push(C)}for(var j=m,w=b,z=` + + +`,L=j.length,S=0;S + + +`,S=0;S +`;for(var E=0;E +`}return z+=` +
+`}return e=(e=(e=(e=r.converter._dispatch("tables.before",e,a,r)).replace(/\\(\|)/g,t.helper.escapeCharactersCallback)).replace(/^ {0,3}\|?.+\|.+\n {0,3}\|?[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*:?[ \t]*(?:[-=]){2,}[\s\S]+?(?:\n\n|¨0)/gm,n)).replace(/^ {0,3}\|.+\|[ \t]*\n {0,3}\|[ \t]*:?[ \t]*(?:[-=]){2,}[ \t]*:?[ \t]*\|[ \t]*\n( {0,3}\|.+\|[ \t]*\n)*(?:\n|¨0)/gm,n),e=r.converter._dispatch("tables.after",e,a,r)}),t.subParser("underline",function(e,a,r){"use strict";return a.underline?(e=r.converter._dispatch("underline.before",e,a,r),e=(e=a.literalMidWordUnderscores?(e=e.replace(/\b___(\S[\s\S]*?)___\b/g,function(n,o){return""+o+""})).replace(/\b__(\S[\s\S]*?)__\b/g,function(n,o){return""+o+""}):(e=e.replace(/___(\S[\s\S]*?)___/g,function(n,o){return/\S$/.test(o)?""+o+"":n})).replace(/__(\S[\s\S]*?)__/g,function(n,o){return/\S$/.test(o)?""+o+"":n})).replace(/(_)/g,t.helper.escapeCharactersCallback),r.converter._dispatch("underline.after",e,a,r)):e}),t.subParser("unescapeSpecialChars",function(e,a,r){"use strict";return e=(e=r.converter._dispatch("unescapeSpecialChars.before",e,a,r)).replace(/¨E(\d+)E/g,function(n,o){return o=parseInt(o),String.fromCharCode(o)}),e=r.converter._dispatch("unescapeSpecialChars.after",e,a,r)}),t.subParser("makeMarkdown.blockquote",function(e,a){"use strict";var r="";if(e.hasChildNodes())for(var n=e.childNodes,o=n.length,l=0;l `)}),t.subParser("makeMarkdown.codeBlock",function(n,a){"use strict";var r=n.getAttribute("language"),n=n.getAttribute("precodenum");return"```"+r+` +`+a.preList[n]+"\n```"}),t.subParser("makeMarkdown.codeSpan",function(e){"use strict";return"`"+e.innerHTML+"`"}),t.subParser("makeMarkdown.emphasis",function(e,a){"use strict";var r="";if(e.hasChildNodes()){r+="*";for(var n=e.childNodes,o=n.length,l=0;l",e.hasAttribute("width")&&e.hasAttribute("height")&&(a+=" ="+e.getAttribute("width")+"x"+e.getAttribute("height")),e.hasAttribute("title")&&(a+=' "'+e.getAttribute("title")+'"'),a+=")"),a}),t.subParser("makeMarkdown.links",function(e,a){"use strict";var r="";if(e.hasChildNodes()&&e.hasAttribute("href")){for(var n=e.childNodes,o=n.length,r="[",l=0;l"),e.hasAttribute("title")&&(r+=' "'+e.getAttribute("title")+'"'),r+=")"}return r}),t.subParser("makeMarkdown.list",function(e,a,r){"use strict";var n="";if(!e.hasChildNodes())return"";for(var o=e.childNodes,l=o.length,s=e.getAttribute("start")||1,c=0;c +`).trim()}),t.subParser("makeMarkdown.listItem",function(e,a){"use strict";for(var r="",n=e.childNodes,o=n.length,l=0;l + +`;if(e.nodeType!==1)return"";switch(e.tagName.toLowerCase()){case"h1":r||(n=t.subParser("makeMarkdown.header")(e,a,1)+` + +`);break;case"h2":r||(n=t.subParser("makeMarkdown.header")(e,a,2)+` + +`);break;case"h3":r||(n=t.subParser("makeMarkdown.header")(e,a,3)+` + +`);break;case"h4":r||(n=t.subParser("makeMarkdown.header")(e,a,4)+` + +`);break;case"h5":r||(n=t.subParser("makeMarkdown.header")(e,a,5)+` + +`);break;case"h6":r||(n=t.subParser("makeMarkdown.header")(e,a,6)+` + +`);break;case"p":r||(n=t.subParser("makeMarkdown.paragraph")(e,a)+` + +`);break;case"blockquote":r||(n=t.subParser("makeMarkdown.blockquote")(e,a)+` + +`);break;case"hr":r||(n=t.subParser("makeMarkdown.hr")(e,a)+` + +`);break;case"ol":r||(n=t.subParser("makeMarkdown.list")(e,a,"ol")+` + +`);break;case"ul":r||(n=t.subParser("makeMarkdown.list")(e,a,"ul")+` + +`);break;case"precode":r||(n=t.subParser("makeMarkdown.codeBlock")(e,a)+` + +`);break;case"pre":r||(n=t.subParser("makeMarkdown.pre")(e,a)+` + +`);break;case"table":r||(n=t.subParser("makeMarkdown.table")(e,a)+` + +`);break;case"code":n=t.subParser("makeMarkdown.codeSpan")(e,a);break;case"em":case"i":n=t.subParser("makeMarkdown.emphasis")(e,a);break;case"strong":case"b":n=t.subParser("makeMarkdown.strong")(e,a);break;case"del":n=t.subParser("makeMarkdown.strikethrough")(e,a);break;case"a":n=t.subParser("makeMarkdown.links")(e,a);break;case"img":n=t.subParser("makeMarkdown.image")(e,a);break;default:n=e.outerHTML+` + +`}return n}),t.subParser("makeMarkdown.paragraph",function(e,a){"use strict";var r="";if(e.hasChildNodes())for(var n=e.childNodes,o=n.length,l=0;l"+a.preList[e]+""}),t.subParser("makeMarkdown.strikethrough",function(e,a){"use strict";var r="";if(e.hasChildNodes()){r+="~~";for(var n=e.childNodes,o=n.length,l=0;ltr>th"),l=e.querySelectorAll("tbody>tr"),s=0;s/g,"\\$1>")).replace(/^#/gm,"\\#")).replace(/^(\s*)([-=]{3,})(\s*)$/,"$1\\$2$3")).replace(/^( {0,3}\d+)\./gm,"$1\\.")).replace(/^( {0,3})([+-])/gm,"$1\\$2")).replace(/]([\s]*)\(/g,"\\]$1\\(")).replace(/^ {0,3}\[([\S \t]*?)]:/gm,"\\[$1]:")}),typeof define=="function"&&define.amd?define(function(){"use strict";return t}):typeof H<"u"&&H.exports?H.exports=t:this.showdown=t}).call(R)});var D=ae(V()),te=new D.default.Converter({omitExtraWLInCodeBlocks:!0,ghCompatibleHeaderId:!0,parseImgDimensions:!0,simplifiedAutoLink:!0,excludeTrailingPunctuationFromURLs:!0,strikethrough:!0,tables:!0,tablesHeaderId:!0,tasklists:!0,disableForced4SpacesIndentedSublists:!0,simpleLineBreaks:!0,requireSpaceBeforeHeadingText:!0});addEventListener("message",async function(v){let t=v.data.id,y=await fetch(`${t}`);y.status>199&&y.status<400?postMessage({id:t,ok:!0,data:te.makeHtml(await y.text())}):postMessage({id:t,ok:!1,data:y.status})});})(); +/*! showdown v 2.1.0 - 21-04-2022 */ diff --git a/ghp/CREDITS.md b/ghp/CREDITS.md new file mode 120000 index 00000000..d76a3ede --- /dev/null +++ b/ghp/CREDITS.md @@ -0,0 +1 @@ +../CREDITS.md \ No newline at end of file diff --git a/ghp/README.md b/ghp/README.md new file mode 120000 index 00000000..32d46ee8 --- /dev/null +++ b/ghp/README.md @@ -0,0 +1 @@ +../README.md \ No newline at end of file diff --git a/ghp/dist b/ghp/dist new file mode 120000 index 00000000..85d8c32f --- /dev/null +++ b/ghp/dist @@ -0,0 +1 @@ +../dist \ No newline at end of file diff --git a/ghp/docs b/ghp/docs new file mode 120000 index 00000000..a9594bfe --- /dev/null +++ b/ghp/docs @@ -0,0 +1 @@ +../docs \ No newline at end of file diff --git a/ghp/index.htm b/ghp/index.htm new file mode 120000 index 00000000..6c227a23 --- /dev/null +++ b/ghp/index.htm @@ -0,0 +1 @@ +../index.htm \ No newline at end of file diff --git a/ghp/test b/ghp/test new file mode 120000 index 00000000..419df4f9 --- /dev/null +++ b/ghp/test @@ -0,0 +1 @@ +../test \ No newline at end of file diff --git a/index.htm b/index.htm new file mode 100644 index 00000000..06703c90 --- /dev/null +++ b/index.htm @@ -0,0 +1,24 @@ + + + + Octavia by Lightingale + + + + + + + + + + + + +

Disclaimer

+

The core processing library (state.mjs), basic visualizer template (basic.mjs), MIDI interface middleware (bridge.mjs) and several pre-written visualizers of Octavia are all free libre software under GNU LGPL license. There is absolutely no warranty for using Octavia, to the extent permitted by applicable law.

+

Some files came with Octavia are licensed differently, like the bitmap font and voice bitmaps. Read their respective licenses before using them.

+

Feel free to check the source code out on GitHub. If you like Octavia, don't forget to leave a star!

+

Documentation is also available here.

+

List of Octavia demos

+

See all of the demos available.

+ diff --git a/libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js b/libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js new file mode 100644 index 00000000..3951dd94 --- /dev/null +++ b/libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js @@ -0,0 +1 @@ +var T=Object.defineProperty;var f=(e,t)=>()=>(e&&(t=e(e=0)),t);var d=(e,t)=>{for(var i in t)T(e,i,{get:t[i],enumerable:!0})};var y={};d(y,{default:()=>E});var E,p=f(()=>{E=async(e=[{}])=>(Array.isArray(e)||(e=[e]),new Promise((t,i)=>{let r=document.createElement("input");r.type="file";let l=[...e.map(s=>s.mimeTypes||[]).join(),e.map(s=>s.extensions||[]).join()].join();r.multiple=e[0].multiple||!1,r.accept=l||"";let n=()=>c(i),a=s=>{typeof c=="function"&&c(),t(s)},c=e[0].legacySetup&&e[0].legacySetup(a,n,r);r.addEventListener("change",()=>{a(r.multiple?Array.from(r.files):r.files[0])}),r.click()}))});var w={};d(w,{default:()=>I});var N,I,h=f(()=>{N=async e=>{let t=await e.getFile();return t.handle=e,t},I=async(e=[{}])=>{Array.isArray(e)||(e=[e]);let t=[];e.forEach((l,n)=>{t[n]={description:l.description||"",accept:{}},l.mimeTypes?l.mimeTypes.map(a=>{t[n].accept[a]=l.extensions||[]}):t[n].accept["*/*"]=l.extensions||[]});let i=await window.showOpenFilePicker({id:e[0].id,startIn:e[0].startIn,types:t,multiple:e[0].multiple||!1,excludeAcceptAllOption:e[0].excludeAcceptAllOption||!1}),r=await Promise.all(i.map(N));return e[0].multiple?r:r[0]}});var o={};d(o,{default:()=>M});var M,A=f(()=>{M=async(e=[{}])=>(Array.isArray(e)||(e=[e]),e[0].recursive=e[0].recursive||!1,new Promise((t,i)=>{let r=document.createElement("input");r.type="file",r.webkitdirectory=!0;let l=()=>a(i),n=c=>{typeof a=="function"&&a(),t(c)},a=e[0].legacySetup&&e[0].legacySetup(n,l,r);r.addEventListener("change",()=>{let c=Array.from(r.files);e[0].recursive?e[0].recursive&&e[0].skipDirectory&&(c=c.filter(s=>s.webkitRelativePath.split("/").every(S=>!e[0].skipDirectory({name:S,kind:"directory"})))):c=c.filter(s=>s.webkitRelativePath.split("/").length===2),n(c)}),r.click()}))});var x={};d(x,{default:()=>B});var v,B,g=f(()=>{v=async(e,t,i=e.name,r)=>{let l=[],n=[];for await(let a of e.values()){let c=`${i}/${a.name}`;a.kind==="file"?n.push(a.getFile().then(s=>(s.directoryHandle=e,s.handle=a,Object.defineProperty(s,"webkitRelativePath",{configurable:!0,enumerable:!0,get:()=>c})))):a.kind==="directory"&&t&&(!r||!r(a))&&l.push(v(a,t,c,r))}return[...(await Promise.all(l)).flat(),...await Promise.all(n)]},B=async(e={})=>{e.recursive=e.recursive||!1;let t=await window.showDirectoryPicker({id:e.id,startIn:e.startIn});return v(t,e.recursive,void 0,e.skipDirectory)}});var k={};d(k,{default:()=>W});async function $(e,t){let i=e.getReader(),r=new ReadableStream({start(n){return a();async function a(){return i.read().then(({done:c,value:s})=>{if(c){n.close();return}return n.enqueue(s),a()})}}}),l=new Response(r);return i.releaseLock(),new Blob([await l.blob()],{type:t})}var W,P=f(()=>{W=async(e,t={})=>{Array.isArray(t)&&(t=t[0]);let i=document.createElement("a"),r=e;"body"in e&&(r=await $(e.body,e.headers.get("content-type"))),i.download=t.fileName||"Untitled",i.href=URL.createObjectURL(r);let l=()=>a(reject),n=()=>{typeof a=="function"&&a()},a=t.legacySetup&&t.legacySetup(n,l,i);return i.addEventListener("click",()=>{setTimeout(()=>URL.revokeObjectURL(i.href),30*1e3),n(null)}),i.click(),null}});var j={};d(j,{default:()=>q});var q,L=f(()=>{q=async(e,t=[{}],i=null,r=!1)=>{Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||"Untitled";let l=[];if(t.forEach((c,s)=>{l[s]={description:c.description||"",accept:{}},c.mimeTypes?(s===0&&(e.type?c.mimeTypes.push(e.type):e.headers&&e.headers.get("content-type")&&c.mimeTypes.push(e.headers.get("content-type"))),c.mimeTypes.map(m=>{l[s].accept[m]=c.extensions||[]})):e.type&&(l[s].accept[e.type]=c.extensions||[])}),i)try{await i.getFile()}catch(c){if(i=null,r)throw c}let n=i||await window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:l,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1}),a=await n.createWritable();return"stream"in e?(await e.stream().pipeTo(a),n):"body"in e?(await e.body.pipeTo(a),n):(await a.write(blob),await a.close(),n)}});var F=(()=>{if(typeof self=="undefined")return!1;if("top"in self&&self!==top)try{top.location+""}catch{return!1}else if("showOpenFilePicker"in self)return"showOpenFilePicker";return!1})(),u=F;var U=u?Promise.resolve().then(()=>(h(),w)):Promise.resolve().then(()=>(p(),y));async function _(...e){return(await U).default(...e)}var D=u?Promise.resolve().then(()=>(g(),x)):Promise.resolve().then(()=>(A(),o));async function O(...e){return(await D).default(...e)}var z=u?Promise.resolve().then(()=>(L(),j)):Promise.resolve().then(()=>(P(),k));async function C(...e){return(await z).default(...e)}export{O as directoryOpen,_ as fileOpen,C as fileSave,u as supported}; diff --git a/libs/lightfelt@ltgcgo/ext/binMatch.js b/libs/lightfelt@ltgcgo/ext/binMatch.js new file mode 100644 index 00000000..86b496ba --- /dev/null +++ b/libs/lightfelt@ltgcgo/ext/binMatch.js @@ -0,0 +1,113 @@ +"use strict"; + +let compArr = function (a, b) { + let minL = Math.min(a.length, b.length), + c = a.slice(0, minL), + d = b.slice(0, minL); + let result = 0, pointer = 0; + while (pointer < minL && result == 0) { + result = Math.sign(c[pointer] - d[pointer]); + pointer ++; + }; + return result; +}; + +let BinaryMatch = function (name = "") { + this.name = name; + this.pool = []; + this.point = function (prefix, insert = false) { + if (this.pool.length > 0) { + let bound = this.pool.length, // boundary + bs = 1 << Math.floor(Math.log2(bound)), // block size + pp = bs, // position pointer + ttl = 64; // time to live + // Binary search + while (bs >= 1 && ttl >= 0) { + // Status report + if (ttl <= 0) { + throw(new Error("TTL reached.")); + }; + if (pp == bound) { + pp -= bs; + } else { + let result = compArr(prefix, this.pool[pp]); + switch (result) { + case 0: { + ttl = 0; + break; + }; + case 1: { + if (pp + bs <= bound) { + pp += bs; + }; + break; + }; + case -1: { + if (pp != 0) { + pp -= bs; + }; + break; + }; + default: { + console.warn(`Unexpected result ${result}.`); + }; + }; + }; + bs = bs >> 1; + ttl --; + }; + // After match + let match = true; + if (pp >= this.pool.length) { + match = false; + } else { + let upThis = this; + this.pool[pp].forEach(function (e, i, a) { + if (match) { + if (e != prefix[i]) { + match = false; + }; + }; + }); + if (!match && compArr(prefix, this.pool[pp]) > 0) { + pp ++; + }; + }; + return (match || insert) ? pp : -1; + } else { + return insert ? 0 : -1; + }; + }; + this.add = function (prefix, data) { + prefix.data = data; + this.pool.splice(this.point(prefix, true), 0, prefix); + return this; + }; + this.default = function (info) { + console.warn(`No match in "${this.name || '(unknown)'}" for "${info}". Default action not defined.`); + }; + this.get = function (prefix) { + let idx = this.point(prefix); + if (idx > -1) { + return this.pool[idx].data; + } else { + this.default(prefix); + }; + }; + this.run = function (prefix, ...additional) { + let idx = this.point(prefix); + if (idx > -1) { + if (prefix.subarray) { + this.pool[idx].data(prefix.subarray(this.pool[idx].length), ...additional); + } else { + this.pool[idx].data(prefix.slice(this.pool[idx].length), ...additional); + }; + } else { + this.default(prefix, ...additional); + }; + }; +}; + +export { + BinaryMatch +}; diff --git a/libs/lightfelt@ltgcgo/ext/customEvents.js b/libs/lightfelt@ltgcgo/ext/customEvents.js new file mode 100644 index 00000000..422b5568 --- /dev/null +++ b/libs/lightfelt@ltgcgo/ext/customEvents.js @@ -0,0 +1,44 @@ +"use strict"; + +let CustomEventSource = class { + #eventListeners = {}; + addEventListener(type, callback) { + if (!this.#eventListeners[type]) { + this.#eventListeners[type] = []; + }; + this.#eventListeners[type].unshift(callback); + }; + removeEventListener(type, callback) { + if (this.#eventListeners[type]) { + let index = this.#eventListeners[type].indexOf(callback); + if (index > -1) { + this.#eventListeners[type].splice(index, 1); + }; + if (this.#eventListeners[type].length < 1) { + delete this.#eventListeners[type]; + }; + }; + }; + dispatchEvent(type, data) { + // Can add a proxy to allow stopping propagation + let eventObj = new Event(type), + upThis = this; + eventObj.data = data; + if (this.#eventListeners[type]?.length > 0) { + this.#eventListeners[type].forEach(function (e) { + try { + e?.call(upThis, eventObj); + } catch (err) { + console.error(err); + }; + }); + }; + if (this[`on${type}`]) { + this[`on${type}`](eventObj); + }; + }; +}; + +export { + CustomEventSource +}; diff --git a/libs/lightfelt@ltgcgo/ext/timedEvents.js b/libs/lightfelt@ltgcgo/ext/timedEvents.js new file mode 100644 index 00000000..1caa2a45 --- /dev/null +++ b/libs/lightfelt@ltgcgo/ext/timedEvents.js @@ -0,0 +1,187 @@ +"use strict"; + +let TimedEvent = class { + #ranged = false; + constructor (ranged, start, end, data) { + this.#ranged = ranged; + this.start = start; + this.end = end; + this.data = data; + }; + get duration () { + if (this.ranged) { + return (this.end - this.start); + } else { + return 0; + }; + }; + get ranged () { + return this.#ranged; + }; +}; +let RangeEvent = class extends TimedEvent { + constructor (start, end, data) { + super(true, start, end, data); + }; +}; +let PointEvent = class extends TimedEvent { + constructor (start, data) { + super(false, start, start, data); + }; +}; + +let TimedEvents = class extends Array { + #index = -1; + constructor() { + super(...arguments); + }; + resetIndex(pointer) { + this.#index = -1; + }; + fresh() { + this.sort(function (a, b) { + if (a.start == b.start) { + return 0 + } else { + return (+(a.start > b.start) << 1) - 1; + }; + }); + this.forEach(function (e, i) { + e.index = i; + }); + }; + step(time, allowRepeat = false) { + // Optimizing required + let array = []; + if (allowRepeat) { + for (let index = 0; index < this.length; index ++) { + if (this[index].start > time) { + break; + } else if (this[index].end < time) { + continue; + } else { + array.push(this[index]); + }; + }; + } else { + let rawArray = this.getRange(this.#index == -1 ? 0 : (time - 1), time); + let upThis = this; + rawArray.forEach(function (e) { + if (e.index > upThis.#index) { + array.push(e); + upThis.#index = e.index; + }; + }); + }; + return array; + }; + getRange(start, end) { + if (start > end) { + [start, end] = [end, start]; + }; + // Must optimize + let array = []; + let index = -1, chunk = Math.ceil(Math.sqrt(this.length)), working = true; + for (let c = 0; c < this.length; c += chunk) { + // Chunk compare + if (this[c + chunk]) { + // Previous chunks + if (index < 0) { + if (this[c + chunk].start >= start) { + index = c; + } ; + }; + } else { + // The last chunk + index = index < 0 ? c : index; + }; + }; + while (working) { + if (this[index]?.end < end) { + if (this[index].start >= start) { + array.push(this[index]); + }; + } else { + working = false; + } + index ++; + }; + return array; + }; +}; + +export { + RangeEvent, + PointEvent, + TimedEvents +}; + +/*self.TimedEventsCollection = class extends self.Array { + #maxAllowedPointSpan = 1; + #lastTime = 0; + constructor () { + super(...arguments); + }; + resetPointer (pointer) { + this.forEach(function (e) { + e.resetPointer(pointer); + }); + }; + finalize () { + this.forEach(function (e) { + e.finalize(); + }); + }; + set pointSpan (value) { + value = Math.abs(value); + this.#maxAllowedPointSpan = value; + this.forEach(function (e) { + e.pointSpan = value; + }); + return this.#maxAllowedPointSpan; + }; + get pointSpan () { + return this.#maxAllowedPointSpan; + }; + point (start) { + // Must optimize + let array = [], joined = new TimedEvents(); + this.forEach(function (e) { + if (e.point) { + array.push(e.point(start)); + }; + }); + array.forEach(function (e) { + e.forEach(function (e1) { + joined.push(e1); + }); + }); + joined.finalize(); + return joined; + }; + during (start, end) { + if (start == end) { + start = this.#lastTime; + }; + if (start > end) { + [start, end] = [end, start]; + }; + // Must optimize + let array = [], joined = new TimedEvents(); + this.forEach(function (e) { + if (e.during) { + array.push(e.during(start, end)); + }; + }); + array.forEach(function (e) { + e.forEach(function (e1) { + joined.push(e1); + }); + }); + joined.finalize(); + return joined; + }; + at (time) { + return this.during((Math.abs(time - this.#lastTime > this.#maxAllowedPointSpan) ? time - this.#maxAllowedPointSpan : this.#lastTime), time); + }; +};*/ diff --git a/libs/lightfelt@ltgcgo/main/blobPlay.js b/libs/lightfelt@ltgcgo/main/blobPlay.js new file mode 100644 index 00000000..0f83aa69 --- /dev/null +++ b/libs/lightfelt@ltgcgo/main/blobPlay.js @@ -0,0 +1,8 @@ +"use strict"; + +{ + let thrower = function (e) { + throw(e); + }; + let fileReader = new FileReader(); +}; diff --git a/libs/lightfelt@ltgcgo/main/cssClass.js b/libs/lightfelt@ltgcgo/main/cssClass.js new file mode 100644 index 00000000..fee4192d --- /dev/null +++ b/libs/lightfelt@ltgcgo/main/cssClass.js @@ -0,0 +1,8 @@ +"use strict"; + +DOMTokenList.prototype.on = function (classNme) { + !this.contains(classNme) && this.toggle(classNme); +}; +DOMTokenList.prototype.off = function (classNme) { + this.contains(classNme) && this.toggle(classNme); +}; diff --git a/libs/lightfelt@ltgcgo/main/quickPath.js b/libs/lightfelt@ltgcgo/main/quickPath.js new file mode 100644 index 00000000..51bff140 --- /dev/null +++ b/libs/lightfelt@ltgcgo/main/quickPath.js @@ -0,0 +1,13 @@ +"use strict"; + +let $e = function (selector, source = document) { + return source?.querySelector(selector); +}; +let $a = function (selector, source = document) { + return Array.from(source?.querySelectorAll(selector)); +}; + +export { + $e, + $a +}; diff --git a/libs/midi-parser@colxi/main.min.js b/libs/midi-parser@colxi/main.min.js new file mode 100644 index 00000000..a91a5f54 --- /dev/null +++ b/libs/midi-parser@colxi/main.min.js @@ -0,0 +1 @@ +!function(){"use strict";const tdo={fatal:true},tda=[new TextDecoder("iso-8859-15",tdo),new TextDecoder("sjis",tdo),new TextDecoder("euc-jp",tdo),new TextDecoder("utf-8",tdo),new TextDecoder("utf-16",tdo),new TextDecoder("ascii")];const n={debug:!1,parse:function(e,t){if(e instanceof Uint8Array)return n.Uint8(e);if("string"==typeof e)return n.Base64(e);if(e instanceof HTMLElement&&"file"===e.type)return n.addListener(e,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(e,r){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(void 0===e||!(e instanceof HTMLElement)||"INPUT"!==e.tagName||"file"!==e.type.toLowerCase())return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;r=r||function(){},e.addEventListener("change",function(e){if(!e.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let t=new FileReader;t.readAsArrayBuffer(e.target.files[0]),t.onload=function(e){r(n.Uint8(new Uint8Array(e.target.result)))}})},Base64:function(e){let t=function(e){var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(e=e.replace(/^.*?base64,/,""),e=String(e).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(e))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");e+="==".slice(2-(3&e.length));let r,a="",n,i,d=0;for(;d>16&255):64===i?String.fromCharCode(r>>16&255,r>>8&255):String.fromCharCode(r>>16&255,r>>8&255,255&r);return a}(e=String(e));var r=t.length;let a=new Uint8Array(new ArrayBuffer(r));for(let e=0;e{r[i]=this.readInt(1)});for(let i=0;i191||P>127&&P<160){throw(new RangeError(`Invalid code point: ${P}`))}}};suc=true;console.debug(`String byte sequence in ${tda[i].encoding}`)}catch(err){console.debug(`SMF string ${err}`)}};};return txt||"String byte sequence read failed."},backOne:function(){this.pointer--;},readIntVLV:function(){let r=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)r=this.readInt(1);else{let t=[];for(;128<=this.data.getUint8(this.pointer);)t.push(this.readInt(1)-128);var e=this.readInt(1);for(let e=1;e<=t.length;e++)r+=t[t.length-e]*Math.pow(128,e);r+=e}return r}};if(i.data=new DataView(e.buffer,e.byteOffset,e.byteLength),1297377380!==i.readInt(4))return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;i.readInt(4);let d={};d.formatType=i.readInt(2),d.tracks=i.readInt(2),d.track=[];var e=i.readInt(1),t=i.readInt(1);128<=e?(d.timeDivision=[],d.timeDivision[0]=e-128,d.timeDivision[1]=t):d.timeDivision=256*e+t;for(let n=1;n<=d.tracks;n++){d.track[n-1]={event:[]};var s,o=i.readInt(4);if(-1===o)break;if(1297379947!==o)return!1;i.readInt(4);let e=0,t=!1,r,a;for(;!t&&(e++,d.track[n-1].event[e-1]={},d.track[n-1].event[e-1].deltaTime=i.readIntVLV(),-1!==(r=i.readInt(1)));)if(128<=r?a=r:(r=a,i.movePointer(-1)),255===r){d.track[n-1].event[e-1].type=255,d.track[n-1].event[e-1].metaType=i.readInt(1);var c=i.readIntVLV();switch(d.track[n-1].event[e-1].metaType){case 47:case-1:t=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:d.track[n-1].event[e-1].data=i.readStr(c);break;case 33:case 89:case 81:d.track[n-1].event[e-1].data=i.readInt(c);break;case 84:d.track[n-1].event[e-1].data=[],d.track[n-1].event[e-1].data[0]=i.readInt(1),d.track[n-1].event[e-1].data[1]=i.readInt(1),d.track[n-1].event[e-1].data[2]=i.readInt(1),d.track[n-1].event[e-1].data[3]=i.readInt(1),d.track[n-1].event[e-1].data[4]=i.readInt(1);break;case 88:d.track[n-1].event[e-1].data=[],d.track[n-1].event[e-1].data[0]=i.readInt(1),d.track[n-1].event[e-1].data[1]=i.readInt(1),d.track[n-1].event[e-1].data[2]=i.readInt(1),d.track[n-1].event[e-1].data[3]=i.readInt(1);break;default:null!==this.customInterpreter&&(d.track[n-1].event[e-1].data=this.customInterpreter(d.track[n-1].event[e-1].metaType,i,c)),null!==this.customInterpreter&&!1!==d.track[n-1].event[e-1].data||(i.readInt(c),d.track[n-1].event[e-1].data=i.readInt(c),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((r=r.toString(16).split(""))[1]||r.unshift("0"),d.track[n-1].event[e-1].type=parseInt(r[0],16),d.track[n-1].event[e-1].channel=parseInt(r[1],16),d.track[n-1].event[e-1].type){case 15:null!==this.customInterpreter&&(d.track[n-1].event[e-1].data=this.customInterpreter(d.track[n-1].event[e-1].type,i,!1)),null!==this.customInterpreter&&!1!==d.track[n-1].event[e-1].data||(s=i.readIntVLV(),d.track[n-1].event[e-1].data=i.readInt(s),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:d.track[n-1].event[e-1].data=[],d.track[n-1].event[e-1].data[0]=i.readInt(1),d.track[n-1].event[e-1].data[1]=i.readInt(1);break;case 12:case 13:d.track[n-1].event[e-1].data=i.readInt(1);break;case-1:t=!0;break;default:if(null!==this.customInterpreter&&(d.track[n-1].event[e-1].data=this.customInterpreter(d.track[n-1].event[e-1].metaType,i,!1)),null===this.customInterpreter||!1===d.track[n-1].event[e-1].data)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return d},customInterpreter:null};if("undefined"!=typeof module)module.exports=n;else{let e="object"==typeof window&&window.self===window&&window||"object"==typeof self&&self.self===self&&self||"object"==typeof global&&global.global===global&&global;e.MidiParser=n}}(); diff --git a/libs/snowy@ltgcgo/bc.js b/libs/snowy@ltgcgo/bc.js new file mode 100644 index 00000000..9a7192ef --- /dev/null +++ b/libs/snowy@ltgcgo/bc.js @@ -0,0 +1 @@ +"use strict";(function(){var d=function(s,a,t){var n;var i;if(self.MessageEvent)switch(s){case"message":{i=new MessageEvent(s,{data:a,ports:t==null?void 0:t.ports}),Object.defineProperty(i,"source",{value:t==null?void 0:t.source});break}default:i=new Event(s)}else i=document.createEvent("Event"),i.initEvent(s,!1,!1),t&&s=="message"&&(i.data=a,t.source&&Object.defineProperty(i,"source",{value:t.source}),(n=t.ports)!=null&&n.length&&Object.defineProperty(i,"ports",{value:t.ports}));return i};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),h=[],c={},E=function(s){var b;var a=this;if((this==null?void 0:this.constructor)!=E)throw new TypeError("Illegal constructor");h.push(this),(b=c[s])!=null&&b.constructor||(c[s]=[]),c[s].push(this);var t=Math.floor(Math.random()*281474976710656),i=[],n=0,u=[],g=!0,w=!1;Object.defineProperty(this,"id",{get:function(){return t}}),Object.defineProperty(this,"name",{value:s}),this.close=function(){var o;var e=h.indexOf(a);e>-1?(f.postMessage({t:"d",c:s,i:t}),h.splice(e,1),(o=c[s])!=null&&o.constructor&&(e=c[s].indexOf(a),e>-1&&c[s].splice(e,1)),c[s].length||delete c[s],console.debug("[Snowy] BroadcastChannel closed."),w=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(e){if(f){if(w)throw new Error("Channel already closed");f.postMessage({t:"m",c:s,i:t,m:n,d:e}),n++,n>4294967295&&(n=0)}else u.push(e),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(f){if(g){for(f.postMessage({t:"r",c:s,i:t}),console.debug("[Snowy] ".concat(u.length," message(s) in cache."));u.length;){var e=u.shift();a.postMessage(e)}g=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(e){e.c==s?e.i!=t&&a.dispatchEvent(d("message",e.d,{source:a})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(t," receives from ").concat(s,", not ").concat(e.c,"."))};var r={};this.dispatchEvent=function(e){var v,y;if(Object.defineProperty(e,"target",{value:a}),Object.defineProperty(e,"currentTarget",{value:a}),(v=r[e.type])!=null&&v.length)for(var o=r[e.type],l=0;l-1&&r[e].splice(l,1)}!((y=r[e])!=null&&y.length)&&r[e].constructor&&delete r[e]}},self.BroadcastChannel=E,M=function(){if(f){f.addEventListener("message",function(a){var t=a.data,i=!1;switch(t.t){case"k":{i=!1,f.postMessage({t:"k"});break}case"m":{var n=c[t.c];if(n!=null&&n.length)for(var u=0;u-1&&r[o].splice(c,1),r[o].length||delete r[o]}if((f=e==null?void 0:e.ch)!=null&&f.constructor){var c=e.ch.indexOf(o);c>-1&&e.ch.splice(c,1)}console.debug("[Snowy] Unsubscribed tab from channel ".concat(o,"."))};addEventListener("connect",function(o){var e=o.source;e.postMessage({t:"swc"}),e.onmessage=function(c){var i,t;var s=c.data,f=!0;switch(s.t){case"k":{var g=a.indexOf(e);for(g<0&&a.push(e),e.lastKa=Date.now();(i=s==null?void 0:s.c)!=null&&i.length;){var d=s.c.pop();u(d,e)}f=!1;break}case"m":{for(var n=0;n<((t=r[s.c])==null?void 0:t.length);n++)r[s.c][n].postMessage(s);break}case"r":{u(s.c,e);break}case"d":{v(s.c,e);break}default:console.error('[Snowy] Unknown message type "'.concat(s.t,'"'))}f&&console.info("SharedWorkerMessage",s)}});setInterval(function(){var f;for(var o=a.length-1;o>=0;o--){var e=a[o];e.postMessage({t:"k"});var c=Date.now();if(e.lastKa+hfooter{font-style:normal;border:0}address,blockquote cite{font-style:normal}a[href^=mailto\:]:before{content:"📧 "}a[href^=tel\:]:before{content:"📞 "}a[href^=sms\:]:before{content:"💬 "}mark{background-color:#ff0;background-color:var(--highlight);border-radius:2px;padding:0 2px;color:#000}@media (prefers-color-scheme:dark){mark{background-color:#efdb43;background-color:var(--highlight)}}a>code,a>strong{color:inherit}button,input[type=button],input[type=checkbox],input[type=radio],input[type=range],input[type=reset],input[type=submit],select{cursor:pointer}input,select{display:block}[type=checkbox],[type=radio]{display:initial}input{color:#1d1d1d;color:var(--form-text);background-color:#efefef;background-color:var(--background);font-family:inherit;font-size:inherit;margin-right:6px;margin-bottom:6px;padding:10px;border:none;border-radius:6px;outline:none}@media (prefers-color-scheme:dark){input{background-color:#161f27;background-color:var(--background);color:#fff;color:var(--form-text)}}button{color:#1d1d1d;color:var(--form-text);background-color:#efefef;background-color:var(--background);font-family:inherit;font-size:inherit;margin-right:6px;margin-bottom:6px;padding:10px;border:none;border-radius:6px;outline:none}@media (prefers-color-scheme:dark){button{background-color:#161f27;background-color:var(--background);color:#fff;color:var(--form-text)}}textarea{color:#1d1d1d;color:var(--form-text);background-color:#efefef;background-color:var(--background);font-family:inherit;font-size:inherit;margin-right:6px;margin-bottom:6px;padding:10px;border:none;border-radius:6px;outline:none}@media (prefers-color-scheme:dark){textarea{background-color:#161f27;background-color:var(--background);color:#fff;color:var(--form-text)}}select{color:#1d1d1d;color:var(--form-text);background-color:#efefef;background-color:var(--background);font-family:inherit;font-size:inherit;margin-right:6px;margin-bottom:6px;padding:10px;border:none;border-radius:6px;outline:none}@media (prefers-color-scheme:dark){select{background-color:#161f27;background-color:var(--background);color:#fff;color:var(--form-text)}}button{background-color:#d0cfcf;background-color:var(--button-base);padding-right:30px;padding-left:30px}@media (prefers-color-scheme:dark){button{background-color:#0c151c;background-color:var(--button-base)}}input[type=submit]{background-color:#d0cfcf;background-color:var(--button-base);padding-right:30px;padding-left:30px}@media (prefers-color-scheme:dark){input[type=submit]{background-color:#0c151c;background-color:var(--button-base)}}input[type=reset]{background-color:#d0cfcf;background-color:var(--button-base);padding-right:30px;padding-left:30px}@media (prefers-color-scheme:dark){input[type=reset]{background-color:#0c151c;background-color:var(--button-base)}}input[type=button]{background-color:#d0cfcf;background-color:var(--button-base);padding-right:30px;padding-left:30px}@media (prefers-color-scheme:dark){input[type=button]{background-color:#0c151c;background-color:var(--button-base)}}button:hover{background:#9b9b9b;background:var(--button-hover)}@media (prefers-color-scheme:dark){button:hover{background:#040a0f;background:var(--button-hover)}}input[type=submit]:hover{background:#9b9b9b;background:var(--button-hover)}@media (prefers-color-scheme:dark){input[type=submit]:hover{background:#040a0f;background:var(--button-hover)}}input[type=reset]:hover{background:#9b9b9b;background:var(--button-hover)}@media (prefers-color-scheme:dark){input[type=reset]:hover{background:#040a0f;background:var(--button-hover)}}input[type=button]:hover{background:#9b9b9b;background:var(--button-hover)}@media (prefers-color-scheme:dark){input[type=button]:hover{background:#040a0f;background:var(--button-hover)}}input[type=color]{min-height:2rem;padding:8px;cursor:pointer}input[type=checkbox],input[type=radio]{height:1em;width:1em}input[type=radio]{border-radius:100%}input{vertical-align:top}label{vertical-align:middle;margin-bottom:4px;display:inline-block}button,input:not([type=checkbox]):not([type=radio]),input[type=range],select,textarea{-webkit-appearance:none}textarea{display:block;margin-right:0;box-sizing:border-box;resize:vertical}textarea:not([cols]){width:100%}textarea:not([rows]){min-height:40px;height:140px}select{background:#efefef url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='63' width='117' fill='%23161f27'%3E%3Cpath d='M115 2c-1-2-4-2-5 0L59 53 7 2a4 4 0 00-5 5l54 54 2 2 3-2 54-54c2-1 2-4 0-5z'/%3E%3C/svg%3E") calc(100% - 12px) 50%/12px no-repeat;background:var(--background) var(--select-arrow) calc(100% - 12px) 50%/12px no-repeat;padding-right:35px}@media (prefers-color-scheme:dark){select{background:#161f27 url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' height='63' width='117' fill='%23efefef'%3E%3Cpath d='M115 2c-1-2-4-2-5 0L59 53 7 2a4 4 0 00-5 5l54 54 2 2 3-2 54-54c2-1 2-4 0-5z'/%3E%3C/svg%3E") calc(100% - 12px) 50%/12px no-repeat;background:var(--background) var(--select-arrow) calc(100% - 12px) 50%/12px no-repeat}}select::-ms-expand{display:none}select[multiple]{padding-right:10px;background-image:none;overflow-y:auto}input:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67);box-shadow:0 0 0 2px var(--focus)}@media (prefers-color-scheme:dark){input:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67);box-shadow:0 0 0 2px var(--focus)}}select:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67);box-shadow:0 0 0 2px var(--focus)}@media (prefers-color-scheme:dark){select:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67);box-shadow:0 0 0 2px var(--focus)}}button:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67);box-shadow:0 0 0 2px var(--focus)}@media (prefers-color-scheme:dark){button:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67);box-shadow:0 0 0 2px var(--focus)}}textarea:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67);box-shadow:0 0 0 2px var(--focus)}@media (prefers-color-scheme:dark){textarea:focus{box-shadow:0 0 0 2px rgba(0,150,191,.67);box-shadow:0 0 0 2px var(--focus)}}button:active,input[type=button]:active,input[type=checkbox]:active,input[type=radio]:active,input[type=range]:active,input[type=reset]:active,input[type=submit]:active{transform:translateY(2px)}button:disabled,input:disabled,select:disabled,textarea:disabled{cursor:not-allowed;opacity:.5}::-moz-placeholder{color:#949494;color:var(--form-placeholder)}:-ms-input-placeholder{color:#949494;color:var(--form-placeholder)}::-ms-input-placeholder{color:#949494;color:var(--form-placeholder)}::placeholder{color:#949494;color:var(--form-placeholder)}@media (prefers-color-scheme:dark){::-moz-placeholder{color:#a9a9a9;color:var(--form-placeholder)}:-ms-input-placeholder{color:#a9a9a9;color:var(--form-placeholder)}::-ms-input-placeholder{color:#a9a9a9;color:var(--form-placeholder)}::placeholder{color:#a9a9a9;color:var(--form-placeholder)}}fieldset{border:1px solid rgba(0,150,191,.67);border:1px solid var(--focus);border-radius:6px;margin:0 0 12px;padding:10px}@media (prefers-color-scheme:dark){fieldset{border:1px solid rgba(0,150,191,.67);border:1px solid var(--focus)}}legend{font-size:.9em;font-weight:600}input[type=range]{margin:10px 0;padding:10px 0;background:transparent}input[type=range]:focus{outline:none}input[type=range]::-webkit-slider-runnable-track{width:100%;height:9.5px;-webkit-transition:.2s;transition:.2s;background:#efefef;background:var(--background);border-radius:3px}@media (prefers-color-scheme:dark){input[type=range]::-webkit-slider-runnable-track{background:#161f27;background:var(--background)}}input[type=range]::-webkit-slider-thumb{box-shadow:0 1px 1px #000,0 0 1px #0d0d0d;height:20px;width:20px;border-radius:50%;background:#dbdbdb;background:var(--border);-webkit-appearance:none;margin-top:-7px}@media (prefers-color-scheme:dark){input[type=range]::-webkit-slider-thumb{background:#526980;background:var(--border)}}input[type=range]:focus::-webkit-slider-runnable-track{background:#efefef;background:var(--background)}@media (prefers-color-scheme:dark){input[type=range]:focus::-webkit-slider-runnable-track{background:#161f27;background:var(--background)}}input[type=range]::-moz-range-track{width:100%;height:9.5px;-moz-transition:.2s;transition:.2s;background:#efefef;background:var(--background);border-radius:3px}@media (prefers-color-scheme:dark){input[type=range]::-moz-range-track{background:#161f27;background:var(--background)}}input[type=range]::-moz-range-thumb{box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d;height:20px;width:20px;border-radius:50%;background:#dbdbdb;background:var(--border)}@media (prefers-color-scheme:dark){input[type=range]::-moz-range-thumb{background:#526980;background:var(--border)}}input[type=range]::-ms-track{width:100%;height:9.5px;background:transparent;border-color:transparent;border-width:16px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#efefef;background:var(--background);border:.2px solid #010101;border-radius:3px;box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d}@media (prefers-color-scheme:dark){input[type=range]::-ms-fill-lower{background:#161f27;background:var(--background)}}input[type=range]::-ms-fill-upper{background:#efefef;background:var(--background);border:.2px solid #010101;border-radius:3px;box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d}@media (prefers-color-scheme:dark){input[type=range]::-ms-fill-upper{background:#161f27;background:var(--background)}}input[type=range]::-ms-thumb{box-shadow:1px 1px 1px #000,0 0 1px #0d0d0d;border:1px solid #000;height:20px;width:20px;border-radius:50%;background:#dbdbdb;background:var(--border)}@media (prefers-color-scheme:dark){input[type=range]::-ms-thumb{background:#526980;background:var(--border)}}input[type=range]:focus::-ms-fill-lower{background:#efefef;background:var(--background)}@media (prefers-color-scheme:dark){input[type=range]:focus::-ms-fill-lower{background:#161f27;background:var(--background)}}input[type=range]:focus::-ms-fill-upper{background:#efefef;background:var(--background)}@media (prefers-color-scheme:dark){input[type=range]:focus::-ms-fill-upper{background:#161f27;background:var(--background)}}a{text-decoration:none;color:#0076d1;color:var(--links)}@media (prefers-color-scheme:dark){a{color:#41adff;color:var(--links)}}a:hover{text-decoration:underline}code{background:#efefef;background:var(--background);color:#000;color:var(--code);padding:2.5px 5px;border-radius:6px;font-size:1em}@media (prefers-color-scheme:dark){code{color:#ffbe85;color:var(--code);background:#161f27;background:var(--background)}}samp{background:#efefef;background:var(--background);color:#000;color:var(--code);padding:2.5px 5px;border-radius:6px;font-size:1em}@media (prefers-color-scheme:dark){samp{color:#ffbe85;color:var(--code);background:#161f27;background:var(--background)}}time{background:#efefef;background:var(--background);color:#000;color:var(--code);padding:2.5px 5px;border-radius:6px;font-size:1em}@media (prefers-color-scheme:dark){time{color:#ffbe85;color:var(--code);background:#161f27;background:var(--background)}}pre>code{padding:10px;display:block;overflow-x:auto}var{color:#39a33c;color:var(--variable);font-style:normal;font-family:monospace}@media (prefers-color-scheme:dark){var{color:#d941e2;color:var(--variable)}}kbd{background:#efefef;background:var(--background);border:1px solid #dbdbdb;border:1px solid var(--border);border-radius:2px;color:#363636;color:var(--text-main);padding:2px 4px}@media (prefers-color-scheme:dark){kbd{color:#dbdbdb;color:var(--text-main);border:1px solid #526980;border:1px solid var(--border);background:#161f27;background:var(--background)}}img,video{max-width:100%;height:auto}hr{border:none;border-top:1px solid #dbdbdb;border-top:1px solid var(--border)}@media (prefers-color-scheme:dark){hr{border-top:1px solid #526980;border-top:1px solid var(--border)}}table{border-collapse:collapse;margin-bottom:10px;width:100%;table-layout:fixed}table caption,td,th{text-align:left}td,th{padding:6px;vertical-align:top;word-wrap:break-word}thead{border-bottom:1px solid #dbdbdb;border-bottom:1px solid var(--border)}@media (prefers-color-scheme:dark){thead{border-bottom:1px solid #526980;border-bottom:1px solid var(--border)}}tfoot{border-top:1px solid #dbdbdb;border-top:1px solid var(--border)}@media (prefers-color-scheme:dark){tfoot{border-top:1px solid #526980;border-top:1px solid var(--border)}}tbody tr:nth-child(2n){background-color:#efefef;background-color:var(--background)}@media (prefers-color-scheme:dark){tbody tr:nth-child(2n){background-color:#161f27;background-color:var(--background)}}tbody tr:nth-child(2n) button{background-color:#f7f7f7;background-color:var(--background-alt)}@media (prefers-color-scheme:dark){tbody tr:nth-child(2n) button{background-color:#1a242f;background-color:var(--background-alt)}}tbody tr:nth-child(2n) button:hover{background-color:#fff;background-color:var(--background-body)}@media (prefers-color-scheme:dark){tbody tr:nth-child(2n) button:hover{background-color:#202b38;background-color:var(--background-body)}}::-webkit-scrollbar{height:10px;width:10px}::-webkit-scrollbar-track{background:#efefef;background:var(--background);border-radius:6px}@media (prefers-color-scheme:dark){::-webkit-scrollbar-track{background:#161f27;background:var(--background)}}::-webkit-scrollbar-thumb{background:#aaa;background:var(--scrollbar-thumb);border-radius:6px}@media (prefers-color-scheme:dark){::-webkit-scrollbar-thumb{background:#040a0f;background:var(--scrollbar-thumb)}}::-webkit-scrollbar-thumb:hover{background:#9b9b9b;background:var(--scrollbar-thumb-hover)}@media (prefers-color-scheme:dark){::-webkit-scrollbar-thumb:hover{background:#000;background:var(--scrollbar-thumb-hover)}}::-moz-selection{background-color:#9e9e9e;background-color:var(--selection);color:#000;color:var(--text-bright)}::selection{background-color:#9e9e9e;background-color:var(--selection);color:#000;color:var(--text-bright)}@media (prefers-color-scheme:dark){::-moz-selection{color:#fff;color:var(--text-bright)}::selection{color:#fff;color:var(--text-bright)}}@media (prefers-color-scheme:dark){::-moz-selection{background-color:#1c76c5;background-color:var(--selection)}::selection{background-color:#1c76c5;background-color:var(--selection)}}details{display:flex;flex-direction:column;align-items:flex-start;background-color:#f7f7f7;background-color:var(--background-alt);padding:10px 10px 0;margin:1em 0;border-radius:6px;overflow:hidden}@media (prefers-color-scheme:dark){details{background-color:#1a242f;background-color:var(--background-alt)}}details[open]{padding:10px}details>:last-child{margin-bottom:0}details[open] summary{margin-bottom:10px}summary{display:list-item;background-color:#efefef;background-color:var(--background);padding:10px;margin:-10px -10px 0;cursor:pointer;outline:none}@media (prefers-color-scheme:dark){summary{background-color:#161f27;background-color:var(--background)}}summary:focus,summary:hover{text-decoration:underline}details>:not(summary){margin-top:0}summary::-webkit-details-marker{color:#363636;color:var(--text-main)}@media (prefers-color-scheme:dark){summary::-webkit-details-marker{color:#dbdbdb;color:var(--text-main)}}dialog{background-color:#f7f7f7;background-color:var(--background-alt);color:#363636;color:var(--text-main);border-radius:6px;border:#dbdbdb;border-color:var(--border);padding:10px 30px}@media (prefers-color-scheme:dark){dialog{border-color:#526980;border-color:var(--border);color:#dbdbdb;color:var(--text-main);background-color:#1a242f;background-color:var(--background-alt)}}dialog>header:first-child{background-color:#efefef;background-color:var(--background);border-radius:6px 6px 0 0;margin:-10px -30px 10px;padding:10px;text-align:center}@media (prefers-color-scheme:dark){dialog>header:first-child{background-color:#161f27;background-color:var(--background)}}dialog::-webkit-backdrop{background:rgba(0,0,0,.61);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}dialog::backdrop{background:rgba(0,0,0,.61);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}footer{border-top:1px solid #dbdbdb;border-top:1px solid var(--border);padding-top:10px;color:#70777f;color:var(--text-muted)}@media (prefers-color-scheme:dark){footer{color:#a9b1ba;color:var(--text-muted);border-top:1px solid #526980;border-top:1px solid var(--border)}}body>footer{margin-top:40px}@media print{body,button,code,details,input,pre,summary,textarea{background-color:#fff}button,input,textarea{border:1px solid #000}body,button,code,footer,h1,h2,h3,h4,h5,h6,input,pre,strong,summary,textarea{color:#000}summary::marker{color:#000}summary::-webkit-details-marker{color:#000}tbody tr:nth-child(2n){background-color:#f2f2f2}a{color:#00f;text-decoration:underline}} diff --git a/sh/build.sh b/sh/build.sh new file mode 100644 index 00000000..a77a0073 --- /dev/null +++ b/sh/build.sh @@ -0,0 +1,33 @@ +#!/bin/bash +mkdir -p dist +#mkdir -p proxy +# Remove the dev files +rm -r dist/*.js +rm -r dist/*.map +rm -r dist/*.mjs +# Using esbuild to build all JS files +#esbuild --bundle src/index.js --outfile=dist/index.js --minify --sourcemap +#esbuild --bundle src/index.js --target=es6 --outfile=dist/index.es6.js --minify --sourcemap +ls -1 src | while IFS= read -r dir ; do + if [ -e "src/${dir}/index.js" ] ; then + shx live $dir --minify $1 > /dev/null + fi + if [ -e "src/${dir}/index.mjs" ] ; then + shx live $dir --minify $1 > /dev/null + fi +done +#rm -rv proxy/*.map +# Finalizing most builds +#ls -1 src | while IFS= read -r dir ; do + #if [ -e "src/${dir}/prefixer.js" ] ; then + #cat src/${dir}/prefixer.js > dist/${dir}.js + #fi + #if [ -e "proxy/${dir}.js" ] ; then + #cat proxy/${dir}.js >> dist/${dir}.js + #fi +#done +# Node specific +#mkdir -p proxy/node +#mv dist/node.js proxy/node/index.js +#rm proxy/node.js +exit diff --git a/sh/commit.sh b/sh/commit.sh new file mode 100644 index 00000000..9aed7ea9 --- /dev/null +++ b/sh/commit.sh @@ -0,0 +1,3 @@ +#!/bin/bash +git stage -A && git commit && git push +exit diff --git a/sh/denoServe b/sh/denoServe new file mode 100755 index 00000000..1fcd2c4b --- /dev/null +++ b/sh/denoServe @@ -0,0 +1,4 @@ +#!/bin/bash +args=( "$@" ) +deno run --allow-net --allow-read deno/std/http/file_server.js ${args[@]} +exit \ No newline at end of file diff --git a/sh/denoTest.sh b/sh/denoTest.sh new file mode 100644 index 00000000..b039de4b --- /dev/null +++ b/sh/denoTest.sh @@ -0,0 +1,18 @@ +#!/bin/bash +export BACKENDS=browserleaks.com +export DEBUGGER=1 +export FOLLOW_REDIR=1 +export FORCE_OUT_TLS=plain +export STRIP_HEADERS_UP=Sec-Fetch-User,Sec-Fetch-Site,Sec-Fetch-Mode,Sec-Fetch-Dest +export STRIP_HEADERS=expect-ct,nel,report-to +export SET_HEADERS_UP=upgrade-insecure-requests=1 +export SET_HEADERS=x-cloudhop-debug=experimental +export HEALTH_MAX_TRIES=4 +export HEALTH_CRITERIA=loose +export MASK_UA=noBracket +export MASK_IP=spoof +export MATCH_LANG=en-US,en,* +export TIMEOUT_MS=4000 +export IDLE_SHUTDOWN=0 +deno run --allow-net --allow-env dist/deno.js +exit \ No newline at end of file diff --git a/sh/esbuild b/sh/esbuild new file mode 100755 index 00000000..54d4dea0 --- /dev/null +++ b/sh/esbuild @@ -0,0 +1,4 @@ +#!/bin/bash +args=( "$@" ) +deno run --allow-env --allow-net --allow-read --allow-write --allow-run deno/esbuild/mod.js ${args[@]} +exit \ No newline at end of file diff --git a/sh/live.sh b/sh/live.sh new file mode 100644 index 00000000..0876489e --- /dev/null +++ b/sh/live.sh @@ -0,0 +1,33 @@ +#!/bin/bash +#rm -rv dist/${1:default}* +inject=" " +prepend=" " +append=" " +buildOpt=" " +format="iife" +ext="js" +if [ -e "src/${1:-default}/inject.js" ] ; then + inject="--inject:src/${1:-default}/inject.js" +fi +if [ -e "src/${1:-default}/buildOpt.txt" ] ; then + buildOpt="$(cat src/${1:-default}/buildOpt.txt)" +fi +if [ -e "src/${1:-default}/prefix.js" ] ; then + prepend="--prepend:src/${1:-default}/prefix.js" +fi +if [ -e "src/${1:-default}/affix.js" ] ; then + append="--append:src/${1:-default}/affix.js" +fi +if [ -e "src/${1:-default}/.node" ] ; then + platform="--platform=node" +fi +if [ -e "src/${1:-default}/.cjs" ] ; then + format="cjs" +fi +if [ -e "src/${1:-default}/index.mjs" ] ; then + format="esm" + ext="mjs" +fi +esbuild --bundle src/${1:-default}/index.${ext} $platform $prepend $append $inject $buildOpt --format=$format --charset=utf8 --outfile=dist/${1:-default}.${ext} ${2:---minify-whitespace --minify-syntax --sourcemap --watch} $3 +#cat proxy/${1:-default}.js +exit diff --git a/sh/push.sh b/sh/push.sh new file mode 100644 index 00000000..2fed183a --- /dev/null +++ b/sh/push.sh @@ -0,0 +1,4 @@ +#!/bin/bash +shx build +shx commit +exit \ No newline at end of file diff --git a/sh/sitemap.sh b/sh/sitemap.sh new file mode 100644 index 00000000..5aebe8ff --- /dev/null +++ b/sh/sitemap.sh @@ -0,0 +1,8 @@ +#!/bin/bash +domain=$(cat conf/domain.txt) +printf '' > ghp/sitemap.xml +cat conf/sitemap.txt | while IFS= read -r path ; do + printf "${domain}${path//index.htm/}$(date -u '+%Y-%m-%d %H:%M:%S' -r .${path})" >> ghp/sitemap.xml +done +printf '' >> ghp/sitemap.xml +exit \ No newline at end of file diff --git a/sh/srcMap.sh b/sh/srcMap.sh new file mode 100644 index 00000000..9367d255 --- /dev/null +++ b/sh/srcMap.sh @@ -0,0 +1,7 @@ +#!/bin/bash +cd test/js +ls -1 ../../dist/*js | while IFS= read -r file; do + ln -s "$file" + ln -s "$file".map +done +exit \ No newline at end of file diff --git a/sh/updateDeno.sh b/sh/updateDeno.sh new file mode 100644 index 00000000..8506a5d8 --- /dev/null +++ b/sh/updateDeno.sh @@ -0,0 +1,20 @@ +#!/bin/bash +cd deno +cat ../conf/denoDeps.txt | while IFS= read -r depLine; do + IFS=" " read -ra depSrc <<< $depLine + case "${depSrc[0]}" in + "dir") + printf "Directory: ${depSrc[1]}... " + mkdir -p "${depSrc[1]}" + echo "OK." + ;; + *) + printf "Downloading \"${depSrc[0]}\" from \"${depSrc[1]}\"... " + #curl -Lso "${depSrc[0]}" "${depSrc[1]}" + deno bundle "${depSrc[1]}" "${depSrc[0]}" + echo "OK." + ;; + esac +done +echo "Deno dependency fetching complete." +exit diff --git a/sh/web.sh b/sh/web.sh new file mode 100644 index 00000000..3b98db76 --- /dev/null +++ b/sh/web.sh @@ -0,0 +1,12 @@ +#!/bin/bash +#cd test +cd .. +case "$1" in + "deno") + denoServe -p 8010 + ;; + *) + python3 -m http.server 8010 + ;; +esac +exit \ No newline at end of file diff --git a/shx b/shx new file mode 100755 index 00000000..cb23d2c7 --- /dev/null +++ b/shx @@ -0,0 +1,20 @@ +#!/bin/bash +arg="$@" +args=( "$@" ) +if [ "$arg" == "" ] ; then + echo "All available actions:" + ls -1 sh | while IFS= read -r file; do + echo "${file/.sh/}" + done + exit +fi +if [ -e "sh/$1.sh" ] ; then + export PATH=./:./sh/:$PATH + bash "sh/$1.sh" "${args[@]:1}" +elif [ -e "sh/$1" ] ; then + export PATH=./:./sh/:$PATH + bash "sh/$1" "${args[@]:1}" +else + echo "No action found as \"$1\". Command: \"${args[@]:1}\"". +fi +exit diff --git a/src/basic/index.mjs b/src/basic/index.mjs new file mode 100644 index 00000000..090b2eb3 --- /dev/null +++ b/src/basic/index.mjs @@ -0,0 +1,261 @@ +"use strict"; + +import {CustomEventSource} from "../../libs/lightfelt@ltgcgo/ext/customEvents.js"; +import {ccToPos, dnToPos} from "../state/index.mjs"; +import MidiParser from "../../libs/midi-parser@colxi/main.min.js"; +import {rawToPool} from "./transform.js"; +import {customInterpreter} from "../state/utils.js"; + +MidiParser.customInterpreter = customInterpreter; + +let RootDisplay = class extends CustomEventSource { + device; + #midiPool; + #titleName = ""; + #metaRun = []; + #mimicStrength = new Uint8ClampedArray(128); + #beforeStrength = new Uint8ClampedArray(128); + // Used to provide tempo, tSig and bar information + #noteBInt = 0.5; + #noteTempo = 120; + #noteNomin = 4; + #noteDenom = 4; + #noteBarOffset = 0; + #noteTime = 0; + smoothingAtk = 0; + smoothingDcy = 0; + reset() { + // Dispatching the event + this.dispatchEvent("reset"); + // Clearing all MIDI instructions up + this.#midiPool?.resetIndex(); + // And set all controllers to blank + this.device.init(); + // Clear titleName + this.#titleName = ""; + // Timing info reset; + this.#noteBInt = 0.5; + this.#noteTempo = 120; + this.#noteNomin = 4; + this.#noteDenom = 4; + this.#noteBarOffset = 0; + this.#noteTime = 0; + }; + async loadFile(blob) { + this.#midiPool = rawToPool(MidiParser.parse(new Uint8Array(await blob.arrayBuffer()))); + }; + switchMode(modeName, forced = false) { + this.device.switchMode(modeName, forced); + }; + getMode() { + return this.device.getMode(); + }; + getVoice() { + return this.device.getVoice(...arguments); + }; + getChVoice(ch) { + return this.device.getChVoice(ch); + }; + get noteProgress() { + return this.#noteTime / this.#noteBInt; + }; + get noteOverall() { + return this.noteProgress - this.#noteBarOffset; + }; + get noteBar() { + return Math.floor(this.noteOverall / this.#noteNomin); + }; + get noteBeat() { + let beat = this.noteOverall % this.#noteNomin; + if (beat < 0) { + beat += this.#noteNomin; + }; + return beat; + }; + getTimeSig() { + return [this.#noteNomin, this.#noteDenom]; + }; + getTempo() { + return this.#noteTempo; + }; + sendCmd(raw) { + this.device.runJson(raw); + }; + render(time) { + if (time > this.#noteTime) { + this.#noteTime = time; + }; + let events = this.#midiPool?.step(time) || []; + let extraPoly = 0, notes = new Set(); + let upThis = this; + let metaReplies = []; + // Reset strength for a new frame + this.device.getStrength().forEach((e, i) => { + this.#beforeStrength[i] = e; + }); + upThis.device.newStrength(); + events.forEach(function (e) { + let raw = e.data; + if (raw.type == 9) { + if (raw.data[1] > 0) { + notes.add(raw.part * 128 + raw.data[0]); + /*if (writeStrength[raw.part] == 0) { + upThis.#mimicStrength[raw.part] = raw.data[1]; + };*/ + } else { + if (notes.has(raw.part * 128 + raw.data[0])) { + extraPoly ++; + }; + }; + }; + if (e.data.type == 8) { + if (notes.has(raw.part * 128 + raw.data[0])) { + extraPoly ++; + }; + }; + let reply = upThis.device.runJson(raw); + switch (reply?.reply) { + case "meta": { + metaReplies.push(reply); + break; + }; + }; + if (reply?.reply) { + delete reply.reply; + }; + }); + if (metaReplies?.length > 0) { + this.dispatchEvent("meta", metaReplies); + }; + // Pass params to actual displays + let chInUse = this.device.getActive(); // Active channels + let chKeyPr = []; // Pressed keys and their pressure + let chPitch = upThis.device.getPitch(); // All pitch bends + let chContr = upThis.device.getCcAll(); // All CC values + let chProgr = upThis.device.getProgram(); // All program values + let chType = upThis.device.getChType(); // All channel types + // Mimic strength variation + let writeStrength = this.device.getStrength(); + writeStrength.forEach(function (e, i, a) { + a[i] = Math.max(upThis.#beforeStrength[i], e); + let diff = a[i] - upThis.#mimicStrength[i]; + let chOff = ccToPos.length * i; + if (diff >= 0) { + // cc73 = 0, atkPower = 4 + // cc73 = 127, atkPower = 0.25 + let atkPower = 4 * (0.25 ** (chContr[chOff + ccToPos[73]] / 64)); + upThis.#mimicStrength[i] += Math.ceil(diff - (diff * (upThis.smoothingAtk ** atkPower))); + } else { + let rlsPower = 4 * (0.25 ** (chContr[chOff + ccToPos[72]] / 64)); + upThis.#mimicStrength[i] += Math.floor(diff - (diff * (upThis.smoothingDcy ** rlsPower))); + }; + }); + let curPoly = 0; + chInUse.forEach(function (e, i) { + if (e) { + chKeyPr[i] = upThis.device.getVel(i); + curPoly += chKeyPr[i].size; + }; + }); + let repObj = { + extraPoly, + curPoly, + chInUse, + chKeyPr, + chPitch, + chProgr, + chContr, + chType, + eventCount: events.length, + title: this.#titleName, + bitmap: this.device.getBitmap(), + letter: this.device.getLetter(), + texts: this.device.getTexts(), + master: this.device.getMaster(), + mode: this.device.getMode(), + strength: this.#mimicStrength.slice(), + velo: writeStrength, + rpn: this.device.getRpn(), + tSig: this.getTimeSig(), + tempo: this.getTempo(), + noteBar: this.noteBar, + noteBeat: this.noteBeat, + ace: this.device.getAce() + }; + return repObj; + }; + constructor(device, atk = 0.5, dcy = 0.5) { + super(); + let upThis = this; + this.smoothingAtk = atk; + this.smoothingDcy = dcy; + this.device = device; + this.addEventListener("meta", function (raw) { + raw?.data?.forEach(function (e) { + (upThis.#metaRun[e.meta] || console.debug).call(upThis, e.meta, e.data); + }); + }); + this.device.addEventListener("mode", function (ev) { + upThis.dispatchEvent("mode", ev.data); + }); + this.device.addEventListener("channelactive", function (ev) { + upThis.dispatchEvent("channelactive", ev.data); + }); + this.device.addEventListener("channelmin", function (ev) { + upThis.dispatchEvent("channelmin", ev.data); + }); + this.device.addEventListener("channelmax", function (ev) { + upThis.dispatchEvent("channelmax", ev.data); + }); + this.device.addEventListener("channelreset", function (ev) { + upThis.dispatchEvent("channelreset"); + }); + this.device.addEventListener("screen", function (ev) { + upThis.dispatchEvent("screen", ev.data); + }); + this.#metaRun[3] = function (type, data) { + if (upThis.#titleName?.length < 1) { + upThis.#titleName = data; + }; + }; + this.#metaRun[81] = function (type, data) { + let noteProgress = upThis.noteProgress; + // Change tempo + let lastBInt = upThis.#noteBInt || 0.5; + upThis.#noteTempo = 60000000 / data; + upThis.#noteBInt = data / 1000000; + upThis.#noteBarOffset += noteProgress * (lastBInt / upThis.#noteBInt) - noteProgress; + }; + this.#metaRun[88] = function (type, data) { + let noteProgress = upThis.noteProgress; + let noteOverall = upThis.noteOverall; + let curBar = upThis.noteBar; + let curBeat = upThis.noteBeat; + // Change time signature + let oldNomin = upThis.#noteNomin; + let oldDenom = upThis.#noteDenom; + upThis.#noteNomin = data[0]; + upThis.#noteDenom = 1 << data[1]; + let metroClick = 24 * (32 / data[3]) / data[2]; + if (oldNomin != upThis.#noteNomin) { + let targetBar = curBar; + upThis.#noteBarOffset -= targetBar * (upThis.#noteNomin - oldNomin); + if (curBeat + 1 >= oldNomin) { + if (oldNomin < upThis.#noteNomin) { + // For example, 4/4 > 6/4 + upThis.#noteBarOffset -= Math.ceil(upThis.#noteNomin - curBeat - 1); + } else { + // For example, 6/4 > 4/4 + upThis.#noteBarOffset += upThis.#noteNomin; + }; + }; + }; + }; + }; +}; + +export { + RootDisplay, + ccToPos, + dnToPos +}; diff --git a/src/basic/mxReader.js b/src/basic/mxReader.js new file mode 100644 index 00000000..4b3d2e25 --- /dev/null +++ b/src/basic/mxReader.js @@ -0,0 +1,164 @@ +"use strict"; + +let blankFont = new Uint8Array(40); + +let shiftIndex = 0, shiftLoading, shiftLoader = setInterval(() => { + if (shiftLoading) { + blankFont[shiftIndex] = !blankFont[shiftIndex]; + shiftIndex ++; + if (shiftIndex > 34) { + shiftIndex = 0; + }; + }; +}, 1000 / 50); + +Uint8Array.prototype.render = function (receiveFunc) { + let x = 0, y = 0, + w = this.width || 5, h = this.height || 8; + for (let i = 0; i < this.length; i ++) { + receiveFunc(this[i], x, y, this); + x ++; + if (x >= w) { + x = 0; + y ++; + }; + }; +}; + +let MxFont40 = class { + #fonts = []; + async load(text, allowOverwrite = false) { + let upThis = this; + let loadCount = 0, allCount = 0; + text.split("\n").forEach(function (e, i) { + if (i > 0 && e?.length > 0) { + let arr = e.split("\t"); + let codePoint = parseInt(arr[0], 16); + allCount ++; + if (upThis.#fonts[codePoint] && !allowOverwrite) { + return; + }; + let bm = new Uint8Array(40); + Array.from(arr[1]).forEach(async function (e, i) { + let verOff = i % 2 ? 4 : 0, + horOff = Math.floor(i / 2), + proxy = parseInt(e, 16), dp = 3; + while (proxy > 0 || dp >= 0) { + let pos = (verOff + dp) * 5 + horOff; + bm[pos] = proxy & 1; + proxy = proxy >> 1; + dp --; + }; + }); + upThis.#fonts[codePoint] = bm; + loadCount ++; + }; + }); + console.debug(`Font "${"(internal)"}": ${allCount} total, ${loadCount} loaded.`); + }; + async loadFile(fileSrc, allowOverwrite = false) { + let upThis = this; + console.debug(`Requested font file from "${fileSrc}".`); + await upThis.load(await (await fetch(fileSrc)).text(), allowOverwrite); + shiftLoading = false; + }; + constructor(...fileSrc) { + shiftLoading = true; + fileSrc.forEach(async (e) => { + await this.loadFile(e); + }); + }; + getCP(codePoint) { + return this.#fonts[codePoint]; + }; + getStr(codePoint) { + let arr = [], + upThis = this; + Array.from(codePoint).forEach(function (e) { + arr.push(upThis.#fonts[e.charCodeAt(0)] || upThis.#fonts[32] || blankFont); + }); + return arr; + }; +}; +let MxBm256 = class { + #bm = {}; + async loadFile(fileSrc) { + let upThis = this; + console.debug(`Requested fixed 256 bitmap file from "${fileSrc}".`); + (await (await fetch(fileSrc)).text()).split("\n").forEach(function (e, i) { + if (i > 0 && e?.length > 0) { + let arr = e.split("\t"); + if (arr[1][0] != "@") { + let bm = new Uint8Array(256); + Array.from(arr[1]).forEach(function (e, i) { + let iOff = i * 4, + proxy = parseInt(e, 16), dp = 3; + while (proxy > 0 || dp >= 0) { + let pos = iOff + dp; + bm[pos] = proxy & 1; + proxy = proxy >> 1; + dp --; + }; + }); + upThis.#bm[arr[0]] = bm; + } else { + upThis.#bm[arr[0]] = upThis.#bm[arr[1].slice(1)]; + }; + }; + }); + }; + constructor(fileSrc) { + this.loadFile(fileSrc); + }; + getBm(rscNme) { + return this.#bm[rscNme]?.slice(); + }; +}; +let MxBmDef = class { + #bm = {}; + async loadFile(fileSrc) { + let upThis = this; + console.debug(`Requested pre-defined bitmap file from "${fileSrc}".`); + (await (await fetch(fileSrc)).text()).split("\n").forEach(function (e, i) { + if (i > 0 && e?.length > 0) { + let arr = e.split("\t"); + if (arr[1][0] != "@") { + let bmWidth = parseInt(arr[1].slice(0, 4), 16), + bmHeight = parseInt(arr[1].slice(4, 8), 16); + let bm = new Uint8Array(bmWidth * bmHeight); + Array.from(arr[1]).slice(8).forEach(function (e, i) { + let iOff = i * 4, + proxy = parseInt(e, 16), dp = 3; + while (proxy > 0 || dp >= 0) { + let pos = iOff + dp; + if (pos <= bm.length) { + bm[pos] = proxy & 1; + proxy = proxy >> 1; + }; + dp --; + }; + }); + bm.width = bmWidth; + bm.height = bmHeight; + upThis.#bm[arr[0]] = bm; + //console.debug(`W:${bmWidth} H:${bmHeight} L:${bm.length} ${arr[0]}`); + } else { + upThis.#bm[arr[0]] = upThis.#bm[arr[1].slice(1)]; + }; + }; + }); + self.mxDef = upThis; + }; + constructor(fileSrc) { + this.loadFile(fileSrc); + }; + getBm(rscNme) { + return this.#bm[rscNme]; + }; +}; + +export { + MxFont40, + MxBm256, + MxBmDef +}; diff --git a/src/basic/sheetLoad.js b/src/basic/sheetLoad.js new file mode 100644 index 00000000..64723c2c --- /dev/null +++ b/src/basic/sheetLoad.js @@ -0,0 +1,45 @@ +"use strict"; + +let SheetData = class { + #conf; + data = []; + reset() { + this.data = []; + }; + async load(text) { + let lines = text.split("\n"); + let fields; + lines.forEach((e, i) => { + if (e?.length) { + let cells = e.split("\t"); + cells.forEach((e0, i0, a0) => { + let data = e0; + try { + data = JSON.parse(`"${e0}"`); + } catch (err) { + console.warn(`TSV decode failed on line ${i + 1} cell ${i0 + 1}\n${err.message}`); + }; + a0[i0] = data || undefined; + }); + if (i) { + let data = {}; + cells.forEach((e0, i0) => { + if (fields[i0] && e0) { + data[fields[i0]] = e0; + }; + }); + this.data.push(data); + } else { + fields = cells; + }; + }; + }); + }; + constructor(conf) { + this.#conf = conf; + }; +}; + +export { + SheetData +}; diff --git a/src/basic/transform.js b/src/basic/transform.js new file mode 100644 index 00000000..8e7e2847 --- /dev/null +++ b/src/basic/transform.js @@ -0,0 +1,109 @@ +"use strict"; + +const veryBig = 281474976710655; + +import { + PointEvent, + RangeEvent, + TimedEvents +} from "../../libs/lightfelt@ltgcgo/ext/timedEvents.js"; + +let rawToPool = function (midiJson) { + //console.debug(midiJson); + let list = new TimedEvents(); + let upThis = this; + let timeDiv = midiJson.timeDivision, + tempo = 120, + tempoChanges = new TimedEvents(), + pointer = 0, + pointerOffset = 0; + // Initiate a default tempo change + tempoChanges.push(new RangeEvent(0, veryBig, [120, 0])); + // First pass: get all tempo changes + midiJson.track.forEach(function (e0) { + pointer = 0; + e0.event.forEach(function (e1) { + pointer += e1.deltaTime; + if (e1.type == 255 && e1?.metaType == 81) { + tempo = 60000000 / e1.data; + let lastChange = tempoChanges[tempoChanges.length - 1]; + if (lastChange) { + tempoChanges.push(new RangeEvent(pointer, 281474976710655, [tempo, 0])); + }; + }; + }); + }); + // Sort tempo changes into a correct order + tempoChanges.fresh(); + // Sets correct ending time. + tempoChanges.forEach(function (e, i, a) { + if (i > 0) { + a[i - 1].end = e.start; + }; + }); + // Removes changes being too frequent + let tTempo = 120; + tempoChanges.forEach(function (e, i, a) { + if (i > 0) { + if (e.end == e.start) { + // Unneeded change + a.splice(a.indexOf(e), 1); + } else if (tTempo == e.data[0]) { + a[i - 1].end = e.end; + a.splice(a.indexOf(e), 1); + }; + tTempo = e.data[0]; + }; + }); + // Calculates offsets + let cOffset = 0, cTempo = 120; + tempoChanges.forEach(function (e) { + let cPointer = e.start; + let curTime = cPointer / cTempo / timeDiv * 60 + cOffset; + cTempo = e.data[0]; + cOffset = curTime - cPointer / cTempo / timeDiv * 60; + e.data[1] = cOffset; + }); + console.debug("All tempo changes: ", tempoChanges); + // Reset for the second pass + tempo = 120, + pointer = 0, + pointerOffset = 0; + // Second pass: convert deltaTime into actual time stamps + midiJson.track.forEach(function (e0, i0) { + pointer = 0, + pointerOffset = 0; + let movedTrk = i0 + 1; + e0.event.forEach(function (e1, i1) { + pointer += e1.deltaTime; + // Load the correct tempo changes and offsets + let changeData = tempoChanges.step(pointer, true)[0]; + if (changeData) { + tempo = changeData.data[0]; + pointerOffset = changeData.data[1]; + }; + let appendObj = { + type: e1.type, + data: e1.data, + track: movedTrk, + part: 0 + }; + if (e1.type > 14) { + appendObj.meta = e1.metaType; + } else { + appendObj.part = e1.channel; + }; + list.push(new PointEvent(pointer / tempo / timeDiv * 60 + pointerOffset, appendObj)); + }); + }); + list.fresh(); + //console.debug("All MIDI events: ", list); + self.midiEvents = list; + // Give back the processed events + console.debug(`Parsed a type ${midiJson.formatType} MIDI sequence.`); + return list; +}; + +export { + rawToPool +}; diff --git a/src/bridge/index.mjs b/src/bridge/index.mjs new file mode 100644 index 00000000..d65bd1cc --- /dev/null +++ b/src/bridge/index.mjs @@ -0,0 +1,144 @@ +// Middleware! +"use strict"; + +import {CustomEventSource} from "../../libs/lightfelt@ltgcgo/ext/customEvents.js"; +import MidiParser from "../../libs/midi-parser@colxi/main.min.js"; +import {rawToPool} from "../basic/transform.js"; +import {customInterpreter} from "../state/utils.js"; + +MidiParser.customInterpreter = customInterpreter; + +// Use track 240 to 255 for middleware. +let toJson = function (data, track = 0) { + let type = data[0] >> 4, part = data[0] & 15; + let replyObj = { + track: (track & 15) + 240, + type, + data: data.slice(1) + }; + if (type < 15) { + replyObj.part = part; + return replyObj; + } if (type == 12) { + replyObj.data = data[1]; + } else { + if (part == 0) { + // SysEx + return replyObj; + } else { + console.warn(`Unknown special event channel ${part}.`) + }; + }; +}; +let fromJson = function (json) { + let type = json.type, part = json.part; + if (type == 255) { + // Directly reject sending meta events + return; + }; + let binLength = 3; + if (type == 12) { + binLength = 2; + } else if (type == 15) { + binLength = json.data.length + 1; + }; + let newInstr = new Uint8Array(binLength); + if (type != 15) { + newInstr[0] = json.type * 16 + json.part; + } else { + newInstr[0] = 240; + }; + if (type == 12) { + newInstr[1] = json.data; + } else { + if (json.data.forEach) { + json.data.forEach((e, i) => { + newInstr[i + 1] = e; + }); + } else { + console.debug(`Type ${type} value ${json.data.constructor.name} cannot be iterated.`); + }; + }; + return newInstr; +}; + +let getBridge = function () { + return new BroadcastChannel("cc.ltgc.octavia:MainInput"); +}; +let getBridgeOut = function () { + return new BroadcastChannel("cc.ltgc.octavia:MainOutput"); +}; + +let SimpleMidiEventEmitter = class extends CustomEventSource { + #pool; + #paused = true; + #currentTime = 0; + #lastEventTs = 0; + #threadId = -1; + get currentTime() { + return this.#currentTime / 1000; + }; + get duration() { + if (!this.#pool) { + return 0; + } else { + return this.#pool[this.#pool.length - 1].end + 4; + }; + }; + async load(blob) { + if (blob) { + this.#pool = rawToPool(MidiParser.parse(new Uint8Array(await blob.arrayBuffer()))); + } else { + this.pause(); + this.#currentTime = 0; + }; + }; + pause() { + if (this.#threadId > -1) { + clearInterval(this.#threadId); + // All notes off + for (let part = 0; part < 16; part ++) { + this.dispatchEvent("midi", { + delay: 0, + data: {part, "type": 11, "data": [123, 0]} + }); + }; + this.dispatchEvent("pause"); + this.#threadId = -1; + }; + }; + async play() { + if (this.#threadId < 0) { + this.#lastEventTs = Date.now(); + this.#threadId = setInterval(() => { + let timeNow = Date.now(), + timeLast = this.#currentTime, + timeDiff = timeNow - this.#lastEventTs; + this.#currentTime += timeDiff; + let events = this.#pool.step(this.currentTime); + events?.forEach((e) => { + this.dispatchEvent("midi", { + delay: Math.round(e.start * 1000 - timeLast), + data: e.data + }); + }); + this.#lastEventTs = timeNow; + }, 12.5); + this.dispatchEvent("play"); + }; + }; + constructor(pool) { + super(); + if (pool) { + this.load(pool); + }; + }; +}; + +export { + toJson, + fromJson, + getBridge, + getBridgeOut, + SimpleMidiEventEmitter +}; diff --git a/src/cambiare/index.mjs b/src/cambiare/index.mjs new file mode 100644 index 00000000..c4fb4c4d --- /dev/null +++ b/src/cambiare/index.mjs @@ -0,0 +1,156 @@ +"use strict"; + +import {RootDisplay} from "../basic/index.mjs"; +import {OctaviaDevice, ccToPos} from "../state/index.mjs"; + +let Cambiare = class Cambiare extends RootDisplay { + context; + mode = 0; + startPort = 0; + fontPadding = 4; + #lineHeights = []; + #noteWidths = []; + #noteHeights = []; + #noteRegW = []; + noteTops = [1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1]; + noteLefts = [[], [], []]; + eventBuffer = {}; // Track if there are hidden notes + eventQueue = []; // Add back hidden notes + get lineHeight() { + return this.#lineHeights[this.mode]; + }; + get noteWidth() { + return this.#noteWidths[this.mode]; + }; + get noteHeight() { + return this.#noteHeights[this.mode]; + }; + get noteRegW() { + return this.#noteRegW[this.mode]; + }; + get noteOutline() { + return Math.ceil(2 * devicePixelRatio); + }; + resizeCanvas(width, height) { + this.context.canvas.width = width; + this.context.canvas.height = height; + for (let mode = 0; mode < 3; mode ++) { + this.#lineHeights[mode] = Math.floor(height / [24, 24, 40][mode]); + this.#noteHeights[mode] = Math.floor(height / [48, 48, 80][mode]); + this.#noteWidths[mode] = Math.floor(width / ([104, 208, 208][mode] + 32)); + this.#noteRegW[mode] = Math.floor(width / ([104, 208, 208][mode] + 32) * 7); + for (let key = 0; key < 12; key ++) { + this.noteLefts[mode][key] = Math.round(this.#noteWidths[mode] * [0, 0.5, 1, 1.5, 2, 3, 3.5, 4, 4.5, 5, 5.5, 6][key]); + }; + }; + }; + drawNote(part, note, velo, state) { + let context = this.context; + //let startX = (data.note + (data.part >> (this.mode > 1 ? 5 : 4) << 7)) * this.noteWidth; + let startX = Math.floor(2 + note / 12) * this.noteRegW + this.noteLefts[this.mode][note % 12] + 14 * this.noteWidth + (context.canvas.width >> 1) * (part >> (this.mode > 1 ? 5 : 4)) + (this.device.getPitchShift(part) / 12) * this.noteRegW; + let startY = (3 + part % (this.mode > 1 ? 32 : 16)) * this.lineHeight + this.noteTops[note % 12] * this.noteHeight; + if (velo > 0) { + context.fillStyle = `#ffffff${(velo * 2).toString(16).padStart(2, "0")}`; + context.fillRect(startX + 1, startY + 1, this.noteWidth - 2, this.noteHeight - 2); + switch (state) { + case this.device.NOTE_HELD: + case this.device.NOTE_SOSTENUTO_HELD: { + context.clearRect(startX + 1 + this.noteOutline, startY + 1 + this.noteOutline, this.noteWidth - 2 * (1 + this.noteOutline), this.noteHeight - 2 * (1 + this.noteOutline)); + break; + }; + }; + }; + }; + render(time) { + let sum = super.render(time), + upThis = this, + context = this.context, + timeNow = Date.now(); + // Global reset + context.globalCompositeOperation = "source-over"; + context.clearRect(0, 0, context.canvas.width, context.canvas.height); + // Set font size and get font metrics + context.font = `${this.lineHeight - this.fontPadding * 2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`; + self.metrics = context.measureText("Op"); + let fontLeft = metrics.actualBoundingBoxLeft, + fontTop = metrics.actualBoundingBoxAscent; + // Information section + context.fillStyle = "#fff"; + context.fillText(`${sum.eventCount.toString().padStart(3, "0")} ${(sum.curPoly + sum.extraPoly).toString().padStart(3, "0")}/512 ${sum.tSig[0].toString().padStart(2, " ")}/${sum.tSig[1].toString().padEnd(2, " ")} ${(sum.noteBar + 1).toString().padStart(3, " ")}:${Math.floor(sum.noteBeat + 1).toString().padEnd(2, " ")} ${Math.floor(sum.tempo).toString().padStart(3, " ")}.${Math.floor(sum.tempo * 100 % 100).toString().padStart(2, "0")}bpm ${Math.floor(sum.master.volume).toString().padStart(3, " ")}.${Math.floor(sum.master.volume * 100 % 100).toString().padStart(2, "0")}%`, upThis.fontPadding + fontLeft, fontTop + upThis.fontPadding); + context.fillText("Voices VEMRCDBP12", upThis.fontPadding + fontLeft, fontTop + upThis.fontPadding + upThis.lineHeight * 2); + // Key press section + // Use available states + sum.chKeyPr.forEach((e, part) => { + e.forEach((e, note) => { + let minPart = upThis.startPort << 4, + maxPart = (upThis.startPort << 4) + (16 << upThis.mode); + if (part >= minPart && part < maxPart) { + upThis.drawNote(part - minPart, note, e.v, e.s); + }; + }); + }); + // Also show hidden notes + upThis.eventQueue.forEach((e) => { + let minPart = upThis.startPort << 4, + maxPart = (upThis.startPort << 4) + (16 << upThis.mode); + if (e.part >= minPart && e.part < maxPart) { + upThis.drawNote(e.part, e.note, e.velo, e.state); + }; + }); + context.fillStyle = "#fff"; + for (let part = 0; part < (16 << upThis.mode); part ++) { + let ch = part + (upThis.startPort << 4); + if (sum.chInUse[ch]) { + let lineTop = 2 + fontTop + upThis.fontPadding + upThis.lineHeight * (3 + (part % (this.mode > 1 ? 32 : 16))); + // Channel voices + let voice = upThis.device.getChVoice(ch); + context.fillText(`${ch + 1}`.padStart(2, "0"), upThis.fontPadding + fontLeft + (part >> (this.mode > 1 ? 5 : 4)) * (context.canvas.width >> 1), lineTop, upThis.noteWidth * 2.5); + context.fillText(voice.name, upThis.fontPadding + fontLeft + (part >> (this.mode > 1 ? 5 : 4)) * (context.canvas.width >> 1) + upThis.noteWidth * 3, lineTop, upThis.noteWidth * 13); + // Params + let chOff = ccToPos.length * ch; + [7, 11, 1, 91, 93, 94, 74, 5, 12, 13].forEach((e, i) => { + context.fillRect(upThis.fontPadding * 2 + upThis.noteWidth * (16 + i) + (part >> (this.mode > 1 ? 5 : 4)) * (context.canvas.width >> 1), upThis.lineHeight * (4 + (part % (this.mode > 1 ? 32 : 16))), upThis.noteWidth - upThis.noteOutline, (upThis.lineHeight - 1) * (sum.chContr[chOff + ccToPos[e]] / -127)); + }); + }; + }; + // Letter display + if (sum.letter.expire <= timeNow) { + //context.fillText(voice.name, upThis.fontPadding + fontLeft + (part >> (this.mode > 1 ? 5 : 4)) * (context.canvas.width >> 1), 2 + fontTop + upThis.fontPadding + upThis.lineHeight * (3 + (part % (this.mode > 1 ? 32 : 16))), upThis.noteWidth * 8); + }; + // Bitmap display + // Draw strength metres + context.globalCompositeOperation = "xor"; + context.fillStyle = "#fff"; + for (let part = 0; part < (16 << upThis.mode); part ++) { + let ch = part + (upThis.startPort << 4); + context.fillRect(upThis.fontPadding + (part >> (this.mode > 1 ? 5 : 4)) * (context.canvas.width >> 1), upThis.lineHeight * (3 + (part % (this.mode > 1 ? 32 : 16))), upThis.noteWidth * 16 * (sum.strength[ch] / 255), (upThis.lineHeight - 1)); + }; + // Clean event buffer up + for (let rawNote in upThis.eventBuffer) { + delete upThis.eventBuffer[rawNote]; + }; + // Clean event queue up + while (upThis.eventQueue.length > 0) { + delete upThis.eventQueue[0]; + upThis.eventQueue.shift(); + }; + }; + constructor(context) { + super(new OctaviaDevice(), 0.1, 0.75); + let upThis = this; + this.context = context; + this.resizeCanvas(1280, 720); + this.device.addEventListener("note", (ev) => { + let data = ev.data; + let noteId = data.part * 128 + data.note; + let oldEvent = this.eventBuffer[noteId]; + this.eventBuffer[noteId] = data; + // Schedule a hidden note in event queue + if (oldEvent?.velo > 0 && data.velo == 0) { + this.eventQueue.push(oldEvent); + }; + }); + }; +}; + +export default Cambiare; diff --git a/src/cambiare_wa/index.js b/src/cambiare_wa/index.js new file mode 100644 index 00000000..746d548a --- /dev/null +++ b/src/cambiare_wa/index.js @@ -0,0 +1,304 @@ +"use strict"; + +import {} from "../../libs/lightfelt@ltgcgo/main/cssClass.js"; +import {$e, $a} from "../../libs/lightfelt@ltgcgo/main/quickPath.js"; +import Cambiare from "../cambiare/index.mjs"; +import {fileOpen} from "../../libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js"; +import { + getBridge +} from "../bridge/index.mjs"; +import {SheetData} from "../basic/sheetLoad.js"; + +let demoBlobs = {}; +let demoPerfs = {}; +let demoInfo = {}; +let demoModes = []; +demoModes[9] = "gm"; +let currentPerformance; +let currentAnimation; +let useMidiBus = false; + +// Standard switching +let stSwitch = $a("b.mode"); +let stSwitchMode = []; +stSwitch.to = function (i) { + stSwitch.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stSwitch[i].classList.on("active"); + }; +}; +stSwitch.forEach(function (e, i, a) { + stSwitchMode[i] = e.title; + e.addEventListener("click", function () { + visualizer.switchMode(e.title, true); + stSwitch.to(i); + }); +}); + +// Standard demo switching +let demoPool = new SheetData(); +let stList = $e("span#demo-list"), stDemo = []; +const srcPaths = ['../../midi-demo-data/collection/octavia/', './demo/']; +let getBlobFrom = async function (filename) { + let i = 0; + while (i < srcPaths.length) { + let e = srcPaths[i]; + let response = await fetch(`${e}${filename}`); + if (response.status < 400) { + return response; + }; + i ++; + }; + console.error(`Loading of data ${filename} failed.`); +}; +getBlobFrom(`list.tsv`).then(async (response) => { + await demoPool.load(await response.text()); + //console.info(demoPool.data); + demoPool.data.forEach((e, i) => { + if (i) { + let space = document.createElement("span"); + space.innerHTML = " "; + stList.appendChild(space); + } else { + stList.innerText = ""; + }; + let demoChoice = document.createElement("b"); + demoChoice.innerText = e.text; + demoChoice.title = e.file; + demoChoice.classList.on("demo"); + stDemo.push(demoChoice); + stList.appendChild(demoChoice); + }); + stDemo.to = function (i) { + stDemo.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stDemo[i].classList.on("active"); + }; + }; + stDemo.forEach(function (e, i, a) { + e.addEventListener("click", async function () { + audioPlayer.pause(); + if (!demoBlobs[e.title]?.midi) { + demoBlobs[e.title] = {}; + audioPlayer.src = "about:blank"; + demoBlobs[e.title].midi = await (await getBlobFrom(`${e.title}.mid`)).blob(); + demoBlobs[e.title].wave = await (await getBlobFrom(`${e.title}.opus`)).blob(); + }; + currentPerformance = demoPerfs[e.title]; + currentPerformance?.resetIndex(); + currentAnimation = demoInfo[e.title]; + audioPlayer.currentTime = 0; + visualizer.reset(); + visualizer.loadFile(demoBlobs[e.title].midi); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = demoBlobs[e.title].wave; + audioPlayer.src = URL.createObjectURL(audioBlob); + if (demoModes[i]?.length > 0) { + visualizer.switchMode(demoModes[i]); + }; + stDemo.to(i); + }); + }); +}); + +// Open the files +let midwIndicator = $e("#openMidw"); +let audioBlob; +const propsMid = JSON.parse('{"extensions":[".mid",".MID",".kar",".KAR",".syx",".SYX",".s7e",".S7E"],"startIn":"music","id":"midiOpener","description":"Open a MIDI file"}'), +propsAud = JSON.parse('{"mimeTypes":["audio/*"],"startIn":"music","id":"audioOpener","description":"Open an audio file"}'); +$e("#openMidi").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + let file = await fileOpen(propsMid); + let fileSplit = file.name.lastIndexOf("."), ext = ""; + if (fileSplit > -1) { + ext = file.name.slice(fileSplit + 1).toLowerCase(); + }; + switch (ext) { + case "syx": { + // Load SysEx blobs + visualizer.sendCmd({type: 15, track: 0, data: new Uint8Array(await file.arrayBuffer())}); + break; + }; + case "s7e": { + // Load sound banks + visualizer.device.loadBank(ext, file); + break; + }; + default: { + // Load MIDI files + stDemo.to(-1); + visualizer.reset(); + visualizer.loadFile(file); + visualizer.device.initOnReset = false; + }; + }; +}); +$e("#openAudio").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await fileOpen(propsAud); + audioPlayer.src = URL.createObjectURL(audioBlob); +}); +midwIndicator.addEventListener("click", function () { + stDemo.to(-1); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = null; + audioPlayer.src = ""; + visualizer.reset(); + useMidiBus = true; + midwIndicator.classList.on("active"); +}); + +// Get canvas +let targetWidth, targetHeight; +let dispCanv = $e("#cambiare-stage"); +let dispCtx = dispCanv.getContext("2d"); + +// Start the visualizers +self.visualizer = new Cambiare(dispCtx); +visualizer.addEventListener("reset", function (e) { + console.info("Processor reset."); +}); + +// Listen to mode switches +visualizer.addEventListener("mode", function (ev) { + stSwitch.to(stSwitchMode.indexOf(ev.data)); +}); + +let canvFull = async function () { + if (document.fullscreenElement) { + document.exitFullscreen(); + visualizer.resizeCanvas(targetWidth, targetHeight); + } else { + dispCanv.requestFullscreen(); + visualizer.resizeCanvas(screen.width, screen.height); + }; +}; +dispCanv.addEventListener("dblclick", canvFull); +dispCanv.addEventListener("contextmenu", (ev) => { + if (document.fullscreenElement) { + ev.preventDefault(); + ev.stopPropagation(); + canvFull(); + }; +}); + +// Resize the canvas and calculate critical positioning +let winResize = function (ev) { + let tabHeight = document.children[0].clientHeight, + tabWidth = document.children[0].clientWidth; + targetWidth = Math.floor(tabWidth / 10) * 10, + targetHeight = Math.floor(tabHeight / 10) * 10; + dispCanv.style.position = `absolute`; + dispCanv.style.top = `180px`; + visualizer.resizeCanvas(Math.max(targetWidth, 960), Math.max(540, Math.min(targetHeight, targetWidth))); +}; +addEventListener("resize", winResize); +winResize(); + +document.addEventListener("keydown", function (ev) { + let scamKey = (+ev.shiftKey << 3) + (+ev.ctrlKey << 2) + (+ev.altKey << 1) + +ev.metaKey; + switch (scamKey) { + case 0: { + switch (ev.key) { + case "Enter": { + // Enter or exit fullscreen + canvFull(); + ev.preventDefault(); + break; + }; + case " ": { + // Play or pause + if (audioPlayer.paused) { + audioPlayer.play(); + } else { + audioPlayer.pause(); + }; + ev.preventDefault(); + break; + }; + case "ArrowLeft": { + audioPlayer.currentTime -= 1; + break; + }; + case "ArrowRight": { + audioPlayer.currentTime += 1; + break; + }; + case "1": + case "2": + case "3": + case "4": + case "5": + case "6": + case "7": + case "8": { + // Switch start port + visualizer.startPort = "12345678".indexOf(ev.key); + break; + }; + case "j": { + visualizer.mode = 0; + break; + }; + case "k": { + visualizer.mode = 1; + break; + }; + case "l": { + visualizer.mode = 2; + break; + }; + }; + break; + }; + }; +}); + +// Render frames +let audioPlayer = $e("#audioPlayer"); +audioPlayer.onended = function () { + visualizer.reset(); + audioPlayer.currentTime = 0; +}; +(async function () { + visualizer.reset(); + let midiBlob = await (await fetch("./demo/KANDI8.mid")).blob(); + demoBlobs.KANDI8 = {}; + demoBlobs.KANDI8.midi = midiBlob; + visualizer.loadFile(midiBlob); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await (await fetch("./demo/KANDI8.opus")).blob(); + demoBlobs.KANDI8.wave = audioBlob; + audioPlayer.src = URL.createObjectURL(audioBlob); +})(); +let lastTime = 0; +let renderThread = setInterval(function () { + if (/*!audioPlayer.paused*/true) { + let curTime = audioPlayer.currentTime - (self.audioDelay || 0); + if (curTime < lastTime) { + }; + visualizer.render(curTime); + lastTime = curTime; + }; +}, 20); + +getBridge().addEventListener("message", function (ev) { + if (useMidiBus) { + visualizer.sendCmd(ev.data); + }; +}); diff --git a/src/compat/buildOpt.txt b/src/compat/buildOpt.txt new file mode 100644 index 00000000..a4359c95 --- /dev/null +++ b/src/compat/buildOpt.txt @@ -0,0 +1 @@ +--target=chrome59 diff --git a/src/compat/inject.js b/src/compat/inject.js new file mode 100644 index 00000000..7e3dce27 --- /dev/null +++ b/src/compat/inject.js @@ -0,0 +1,81 @@ +"use strict"; + +import {} from "../../libs/snowy@ltgcgo/bc.js"; + +// Compatibility for Windows XP (FF 52 ESR, GC 59) +{ + // Direct blob reads + let fileReadAs = function (blob, target) { + let reader = new FileReader(); + return new Promise((success, failure) => { + reader.addEventListener("abort", () => { + failure(new Error("Blob read aborted")); + }); + reader.addEventListener("error", (ev) => { + failure(reader.error || ev.data || new Error("Blob read error")); + }); + reader.addEventListener("load", () => { + success(reader.result); + }); + switch (target.toLowerCase()) { + case "arraybuffer": + case "buffer": { + reader.readAsArrayBuffer(blob); + break; + }; + case "string": + case "text": { + reader.readAsText(blob); + break; + }; + default: { + failure(new Error(`Unknown target ${target}`)); + }; + }; + }); + }; + Blob.prototype.arrayBuffer = Blob.prototype.arrayBuffer || function () { + return fileReadAs(this, "buffer"); + }; + Blob.prototype.text = Blob.prototype.text || function () { + return fileReadAs(this, "text"); + }; +}; +{ + // A working replaceAll implementation + String.prototype.replaceAll = String.prototype.replaceAll || function (source, target) { + let antiLoop = 0, maxSafe = 16; + let indexFinder = this, indexes = []; + while (antiLoop < maxSafe && indexFinder.lastIndexOf(source) > -1) { + let index = indexFinder.lastIndexOf(source); + indexes.unshift(indexFinder.slice(index + source.length)); + indexFinder = indexFinder.slice(0, index); + if (index == 0) { + indexes.unshift(""); + }; + antiLoop ++; + }; + if (indexFinder.length) { + indexes.unshift(indexFinder); + }; + return indexes.join(target) || ""; + }; + String.prototype.padStart = String.prototype.padStart || function (length, filler) { + if (filler) { + let result = this; + while (result.length < length) { + result = `${filler}${result}`; + }; + return result; + }; + }; + String.prototype.padEnd = String.prototype.padEnd || function (length, filler) { + if (filler) { + let result = this; + while (result.length < length) { + result += filler; + }; + return result; + }; + }; +}; diff --git a/src/demoMw/index.js b/src/demoMw/index.js new file mode 100644 index 00000000..f55fe157 --- /dev/null +++ b/src/demoMw/index.js @@ -0,0 +1,129 @@ +"use strict"; + +import {} from "../../libs/lightfelt@ltgcgo/main/cssClass.js"; +import {$e, $a} from "../../libs/lightfelt@ltgcgo/main/quickPath.js"; +import {fileOpen} from "../../libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js"; +import { + toJson, + fromJson, + getBridge, + SimpleMidiEventEmitter +} from "../bridge/index.mjs"; + +let globalAudioCtx; +let getGAC = function () { + if (!globalAudioCtx) { + globalAudioCtx = new AudioContext(); + }; +}; +let switchList = function (list, index) { + list?.forEach((e, i) => { + if (i == index) { + e.classList.on("active"); + } else { + e.classList.off("active"); + }; + }); +}; + +let inPortMap = {}; + +let activeIn, activeInPort = 0, activeOut, activeOutPort = 0; + +let midiInBox = $e("#midi-in-list"), midiOutBox = $e("#midi-out-list"); +let midiInSw = $e(".actor-port-in"), midiOutSw = $e(".actor-port-out"); +let midiInSel = $a(".selector-port-in"), midiOutSel = $a(".selector-port-out"); +let portInList = [], portOutList = []; + +let refreshPortIn = function () { + while (portInList > 0) { + portInList.pop().remove(); + }; + midiAccess.inputs.forEach((port, id) => { + let midin = document.createElement("li"); + midin.innerText = port.name; + midin.id = `mw-in-${id}`; + midin.setAttribute("mw-port-id", id); + midin.addEventListener("click", inputSel); + midiInBox.appendChild(midin); + portInList.push(midin); + }); +}; + +let inputConv = function (ev) { + midiLine.postMessage(toJson(ev.data, inPortMap[ev.target.id])); +}; +let inputSel = function () { + activeIn = midiAccess.inputs.get(this.getAttribute("mw-port-id")); + midiInSw.innerText = activeIn.connection == "closed" ? "Closed" : "Opened"; + if (inPortMap[activeIn.id] || activeIn.connection == "open") { + switchList(midiInSel, inPortMap[activeIn.id]); + }; + portInList.forEach((e) => { + let elId = e.getAttribute("mw-port-id"); + if (elId == activeIn.id) { + e.classList.on("active"); + } else { + e.classList.off("active"); + }; + }); +}; +midiInSw.addEventListener("click", function () { + if (activeIn.connection == "closed") { + activeIn.open(); + inPortMap[activeIn.id] = activeInPort; + activeIn.addEventListener("midimessage", inputConv); + midiLine.postMessage({ + type: 255, + meta: 33, + track: 240 + activeInPort, + data: activeInPort + }); + midiInSw.innerText = "Opened"; + } else { + activeIn.close(); + activeIn.removeEventListener("midimessage", inputConv); + midiInSw.innerText = "Closed"; + }; +}); +midiInSel.forEach((e, i) => { + e.addEventListener("click", function () { + activeInPort = i; + switchList(midiInSel, i); + }); +}); + +(async function () { + self.midiAccess = await navigator.requestMIDIAccess({"sysex": true, "software": true}); + self.fromJson = fromJson; + self.toJson = toJson; + self.MEE = SimpleMidiEventEmitter; + midiAccess.addEventListener("statechange", (ev) => { + console.debug(ev.port); + }); + refreshPortIn(); + midiAccess.outputs.forEach((port, id) => { + let midout = document.createElement("li"); + midout.innerText = port.name; + midout.id = `mw-in-${id}`; + midout.setAttribute("mw-port-id", id); + midiOutBox.appendChild(midout); + }); + self.midiLine = getBridge(); + const propsMid = JSON.parse('{"extensions":[".mid",".MID",".kar",".KAR",".syx",".SYX"],"startIn":"music","id":"midiOpener","description":"Open a MIDI file"}'); + $e("#openMidi").addEventListener("click", async function () { + let file = await fileOpen(propsMid); + let fileSplit = file.name.lastIndexOf("."), ext = ""; + if (fileSplit > -1) { + ext = file.name.slice(fileSplit + 1).toLowerCase(); + }; + if (ext == "syx") { + // Load SysEx blobs + //tuiVis.sendCmd({type: 15, track: 0, data: new Uint8Array(await file.arrayBuffer())}); + } else { + //tuiVis.reset(); + //tuiVis.loadFile(file); + self.midiBlob = file; + }; + }); +})(); diff --git a/src/demoTui/index.js b/src/demoTui/index.js new file mode 100644 index 00000000..e15c7579 --- /dev/null +++ b/src/demoTui/index.js @@ -0,0 +1,242 @@ +"use strict"; + +import {} from "../../libs/lightfelt@ltgcgo/main/cssClass.js"; +import {$e, $a} from "../../libs/lightfelt@ltgcgo/main/quickPath.js"; +import TuiDisplay from "../disp/disp_tui.mjs"; +import {fileOpen} from "../../libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js"; +import { + getBridge +} from "../bridge/index.mjs"; +import {SheetData} from "../basic/sheetLoad.js"; + +let demoBlobs = {}; +let demoModes = []; +demoModes[9] = "gm"; +let useMidiBus = false; + +self.minCh = 0; + +// Standard switching +let stSwitch = $a("b.mode"); +let stSwitchMode = []; +stSwitch.to = function (i) { + stSwitch.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stSwitch[i].classList.on("active"); + }; +}; +stSwitch.forEach(function (e, i, a) { + stSwitchMode[i] = e.title; + e.addEventListener("click", function () { + visualizer.switchMode(e.title, true); + stSwitch?.to(i); + }); +}); + +// Standard demo switching +let demoPool = new SheetData(); +let stList = $e("span#demo-list"), stDemo = []; +const srcPaths = ['../../midi-demo-data/collection/octavia/', './demo/']; +let getBlobFrom = async function (filename) { + let i = 0; + while (i < srcPaths.length) { + let e = srcPaths[i]; + let response = await fetch(`${e}${filename}`); + if (response.status < 400) { + return response; + }; + i ++; + }; + console.error(`Loading of data ${filename} failed.`); +}; +getBlobFrom(`list.tsv`).then(async (response) => { + await demoPool.load(await response.text()); + //console.info(demoPool.data); + demoPool.data.forEach((e, i) => { + if (i) { + let space = document.createElement("span"); + space.innerHTML = " "; + stList.appendChild(space); + } else { + stList.innerText = ""; + }; + let demoChoice = document.createElement("b"); + demoChoice.innerText = e.text; + demoChoice.title = e.file; + demoChoice.classList.on("demo"); + stDemo.push(demoChoice); + stList.appendChild(demoChoice); + }); + stDemo.to = function (i) { + stDemo.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stDemo[i].classList.on("active"); + }; + }; + stDemo.forEach(function (e, i, a) { + e.addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + audioPlayer.pause(); + if (!demoBlobs[e.title]?.midi) { + demoBlobs[e.title] = {}; + textDisplay.innerHTML = `Loading demo ${e.innerText.toUpperCase()}.${"
".repeat(23)}`; + demoBlobs[e.title].midi = await (await getBlobFrom(`${e.title}.mid`)).blob(); + demoBlobs[e.title].wave = await (await getBlobFrom(`${e.title}.opus`)).blob(); + }; + textDisplay.innerHTML = `Demo ${e.innerText.toUpperCase()} ready.${"
".repeat(23)}`; + audioPlayer.currentTime = 0; + visualizer.reset(); + visualizer.loadFile(demoBlobs[e.title].midi); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = demoBlobs[e.title].wave; + audioPlayer.src = URL.createObjectURL(audioBlob); + if (demoModes[i]?.length > 0) { + visualizer.switchMode(demoModes[i]); + }; + stDemo?.to(i); + visualizer.device.initOnReset = false; + }); + }); +}); + +// Start the visualizers +self.visualizer = new TuiDisplay(); +visualizer.addEventListener("reset", function (e) { + minCh = 0; +}); + +// Listen to mode switches +visualizer.addEventListener("mode", function (ev) { + stSwitch?.to(stSwitchMode.indexOf(ev.data)); +}); + +// Open the files +let midwIndicator = $e("#openMidw"); +let audioBlob; +const propsMid = JSON.parse('{"extensions":[".mid",".MID",".kar",".KAR",".syx",".SYX",".s7e",".S7E"],"startIn":"music","id":"midiOpener","description":"Open a MIDI file"}'), +propsAud = JSON.parse('{"mimeTypes":["audio/*"],"startIn":"music","id":"audioOpener","description":"Open an audio file"}'); +$e("#openMidi").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + let file = await fileOpen(propsMid); + let fileSplit = file.name.lastIndexOf("."), ext = ""; + if (fileSplit > -1) { + ext = file.name.slice(fileSplit + 1).toLowerCase(); + }; + switch (ext) { + case "syx": { + // Load SysEx blobs + visualizer.sendCmd({type: 15, track: 0, data: new Uint8Array(await file.arrayBuffer())}); + break; + }; + case "s7e": { + // Load sound banks + visualizer.device.loadBank(ext, file); + break; + }; + default: { + // Load MIDI files + stDemo?.to(-1); + visualizer.reset(); + visualizer.loadFile(file); + visualizer.device.initOnReset = false; + }; + }; +}); +$e("#openAudio").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await fileOpen(propsAud); + audioPlayer.src = URL.createObjectURL(audioBlob); +}); +midwIndicator.addEventListener("click", function () { + stDemo?.to(-1); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = null; + audioPlayer.src = ""; + visualizer.reset(); + useMidiBus = true; + midwIndicator.classList.on("active"); + visualizer.device.initOnReset = true; +}); + +// Get the canvas +let dispCanvas = $e("#bmDisp"), +dispCtx = dispCanvas.getContext("2d"); +dispCanvas.addEventListener("wheel", function (ev) { + ev.preventDefault(); + if (ev.deltaY > 0) { + if (minCh < 112) { + minCh ++; + }; + } else { + if (minCh > 0) { + minCh --; + }; + }; +}); +dispCanvas.addEventListener("mouseup", function (ev) { + if (ev.layerY > 47) { + if (minCh < 112) { + minCh = (1 + (minCh >> 4)) << 4; + }; + } else if (ev.layerY < 47) { + if (minCh > 0) { + if (minCh < 16) { + minCh = 16; + }; + minCh = ((minCh >> 4) - 1) << 4; + }; + }; +}); + +// Render frames +let audioPlayer = $e("#audioPlayer"); +let textDisplay = $e("#display"); +dispCanvas.style.left = `${textDisplay.offsetLeft + textDisplay.offsetWidth - dispCanvas.offsetWidth}px`; +dispCanvas.style.top = `${textDisplay.offsetTop}px`; +audioPlayer.onended = function () { + visualizer.reset(); +}; +(async function () { + visualizer.reset(); + let midiBlob = await (await fetch("./demo/KANDI8.mid")).blob(); + demoBlobs.KANDI8 = {}; + demoBlobs.KANDI8.midi = midiBlob; + visualizer.loadFile(midiBlob); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await (await fetch("./demo/KANDI8.opus")).blob(); + demoBlobs.KANDI8.wave = audioBlob; + audioPlayer.src = URL.createObjectURL(audioBlob); + textDisplay.innerHTML = `${"
".repeat(23)}`; +})(); +let renderThread = setInterval(function () { + if (!audioPlayer.paused || useMidiBus) { + textDisplay.innerHTML = visualizer.render(audioPlayer.currentTime - (self.audioDelay || 0), dispCtx); + }; +}, 20); +getBridge().addEventListener("message", function (ev) { + if (useMidiBus) { + visualizer.sendCmd(ev.data); + }; + //console.debug(ev.data); +}); + +addEventListener("resize", function () { + dispCanvas.style.left = `${textDisplay.offsetLeft + textDisplay.offsetWidth - dispCanvas.offsetWidth}px`; + dispCanvas.style.top = `${textDisplay.offsetTop}px`; +}); diff --git a/src/disp/colour.js b/src/disp/colour.js new file mode 100644 index 00000000..77e10ebf --- /dev/null +++ b/src/disp/colour.js @@ -0,0 +1,46 @@ +"use strict"; + +let backlight = { + red: "#ff7986", + orange: "#fca022", + grYellow: "#c9e10a", + green: "#c1ff0a", + white: "#b7e5e3", + blue: "#2280ff" +}, +lcdPixel = { + black: "#000000", + blue: "#0516bb", + purple: "#48009a" +}; + +// Generate caches for easier implementation +let lcdCache = {}, lcdCacheTransparency = "06,68,2a,16,aa,3b".split(","); +for (let colour in lcdPixel) { + lcdCache[colour] = []; + lcdCacheTransparency.forEach((e) => { + lcdCache[colour].push(`${lcdPixel[colour]}${e}`); + }); +}; + +// For backwards compatibility +let bgOrange = `${backlight.orange}64`, +bgGreen = `${backlight.green}64`, +bgWhite = `${backlight.white}64`, +bgRed = `${backlight.red}64`; +let inactivePixel = lcdCache.black[0], +mediumPixel = lcdCache.black[2], +activePixel = lcdCache.black[1]; + +export { + bgOrange, + bgGreen, + bgWhite, + bgRed, + inactivePixel, + mediumPixel, + activePixel, + backlight, + lcdPixel, + lcdCache +}; diff --git a/src/disp/common.js b/src/disp/common.js new file mode 100644 index 00000000..ca85f115 --- /dev/null +++ b/src/disp/common.js @@ -0,0 +1,20 @@ +"use strict"; + +// The common values used in all example screens. + +let noteNames = [ + "C~", "C#", "D~", "Eb", + "E~", "F~", "F#", "G~", + "Ab", "A~", "Bb", "B~" +], noteRegion = "!0123456789", +hexMap = "0123456789ABCDEF", +map = "0123456789_aAbBcCdDeEfFgGhHiIjJ-kKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ", +waveMap = ["-", "~", "+", "|"]; + +export { + noteNames, + noteRegion, + hexMap, + map, + waveMap +}; diff --git a/src/disp/disp_mu.mjs b/src/disp/disp_mu.mjs new file mode 100644 index 00000000..4e449caf --- /dev/null +++ b/src/disp/disp_mu.mjs @@ -0,0 +1,434 @@ +"use strict"; + +import {OctaviaDevice} from "../state/index.mjs"; +import {RootDisplay, ccToPos} from "../basic/index.mjs"; +import {MxFont40, MxBm256} from "../basic/mxReader.js"; + +import { + backlight, + inactivePixel, + activePixel +} from "./colour.js"; + +let mprWidth = 8, +mpaWidth = 7, +mprHeight = 4, +mpaHeight = 3; +let normParamPaint = function (sup, offsetX, ctx) { + let paramW = mprWidth * 4 - 1; + let paramH = mprHeight * 1.5 - 1; + let sub = sup >> 4; + for (let i = 0; i < 8; i ++) { + if (sub > 0 || (sub == 0 && i != 0)) { + ctx.fillStyle = activePixel; + } else { + ctx.fillStyle = inactivePixel; + }; + sub --; + let invI = 7 - i; + ctx.fillRect(offsetX, 181 + invI * mprWidth, paramW, paramH); + }; +}; +let startA = Math.PI * 255 / 180; +let endA = Math.PI * 285 / 180; +let efxParamPaint = function (sup, offsetX, ctx, useWB, wbArr) { + let paramW = mprWidth * 4 - 1; + let paramH = mprHeight * 1.5 - 1; + let sub = sup >> 4; + for (let i = 0; i < 8; i ++) { + if (useWB) { + if (wbArr[i]) { + ctx.strokeStyle = activePixel; + } else { + ctx.strokeStyle = inactivePixel; + }; + } else { + if (sub > 0 || (sub == 0 && i != 0)) { + ctx.strokeStyle = activePixel; + } else { + ctx.strokeStyle = inactivePixel; + }; + sub --; + }; + let invI = 7 - i; + ctx.beginPath(); + ctx.arc(offsetX, 256, (9 - invI) * mprWidth, startA, endA); + ctx.lineWidth = paramH; + ctx.stroke(); + }; +}; + +Math.sum = function (...args) { + let sum = 0; + args.forEach((e) => { + sum += e; + }); + return sum; +}; + +CanvasRenderingContext2D.prototype.radial = function (centreX, centreY, angle, startR, stopR) { + let adjAngle = angle - 1.5707963267948966; + let vSin = Math.sin(adjAngle); + let vCos = Math.cos(adjAngle); + this.beginPath(); + this.moveTo(centreX + (vSin * startR), centreY + (vCos * startR)); + this.lineTo(centreX + (vSin * stopR), centreY + (vCos * stopR)); + this.stroke(); +}; + +let MuDisplay = class extends RootDisplay { + #mmdb = new Uint8Array(1360); + #pmdb = new Uint8Array(200); + #bmdb = new Uint8Array(256); + #bmst = 0; // 0 for voice bank, 2 for standard, 1 for sysex + #bmex = 0; // state expiration + #ch = 0; + #minCh = 0; + #maxCh = 0; + inWB = false; + #waveBuffer = new Uint8Array(8); + #panStrokes = new Uint8Array(7); + xgFont = new MxFont40("./data/bitmaps/xg/font.tsv"); + sysBm = new MxBm256("./data/bitmaps/xg/system.tsv"); + voxBm = new MxBm256("./data/bitmaps/xg/voices.tsv"); + aniBm = new MxBm256("./data/bitmaps/xg/animation.tsv"); + constructor() { + super(new OctaviaDevice()); + let upThis = this; + this.addEventListener("mode", function (ev) { + (upThis.sysBm.getBm(`st_${({"gm":"gm1","g2":"gm2","?":"gm1","ns5r":"korg","ag10":"korg","x5d":"korg","05rw":"korg","krs":"korg","sg":"gm1","k11":"gm1"})[ev.data] || ev.data}`) || []).forEach(function (e, i) { + upThis.#bmdb[i] = e; + }); + upThis.#bmst = 2; + upThis.#bmex = Date.now() + 1600; + }); + this.addEventListener("channelactive", (ev) => { + this.#ch = ev.data; + }); + this.addEventListener("channelmin", (ev) => { + if (ev.data >= 0) { + this.#minCh = ev.data + 1; + }; + }); + this.addEventListener("channelmax", (ev) => { + if (ev.data > this.#minCh - 1) { + this.#maxCh = ev.data + 1; + } else { + this.#minCh = 0; + this.#maxCh = 0; + }; + }); + this.addEventListener("channelreset", () => { + this.#minCh = 0; + this.#maxCh = 0; + this.#waveBuffer.fill(0); + this.demoInfo = false; + }); + }; + setCh(ch) { + this.#ch = ch; + }; + getCh() { + return this.#ch; + }; + reset() { + super.reset(); + this.#minCh = 0; + this.#maxCh = 0; + if (this.demoInfo) { + delete this.demoInfo; + }; + }; + render(time, ctx) { + let sum = super.render(time); + let upThis = this; + let timeNow = Date.now(); + // Fill with green + //ctx.fillStyle = "#af2"; + ctx.fillStyle = `${backlight.grYellow}64`; + ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); + // Main matrix display + this.#mmdb.forEach((e, i, a) => {a[i] = 0}); + // Part display + this.#pmdb.forEach((e, i, a) => {a[i] = 0}); + // Strength + let alreadyMin = false; + let minCh = 0, maxCh = 0; + sum.chInUse.forEach(function (e, i) { + if (e) { + if (!alreadyMin) { + alreadyMin = true; + minCh = i; + }; + maxCh = i; + }; + }); + let part = minCh >> 4; + minCh = part << 4; + maxCh = ((maxCh >> 4) << 4) + 15; + if (this.#ch > maxCh) { + this.#ch = minCh + this.#ch & 15; + }; + if (this.#ch < minCh) { + this.#ch = maxCh - 15 + (this.#ch & 15); + }; + if (this.#minCh && this.#minCh > 0) { + minCh = this.#minCh - 1; + }; + if (this.#maxCh && this.#maxCh <= 128) { + maxCh = this.#maxCh - 1; + }; + let chOff = this.#ch * ccToPos.length; + let rendMode = Math.ceil(Math.log2(maxCh - minCh + 1) - 4), + rendPos = 0; + let showLsb = !sum.chContr[chOff + ccToPos[0]]; + if (timeNow <= sum.letter.expire && sum.letter.text.length > 0) { + // Show display text + upThis.xgFont.getStr(sum.letter.text.padEnd(32, " ")).forEach(function (e0, i0) { + let regionX = (i0 % 16) * 5 + 5, + regionY = Math.floor(i0 / 16) * 8; + e0.forEach(function (e1, i1) { + let partX = i1 % 5, + partY = Math.floor(i1 / 5); + upThis.#mmdb[(regionY + partY) * 85 + regionX + partX] = e1; + }); + }); + } else { + // Show strength metre + upThis.#mmdb[1275] = 1; + upThis.#mmdb[1276] = 1; + upThis.#mmdb[1278] = 1; + upThis.#mmdb[1279] = 1; + for (let ch = minCh; ch <= maxCh; ch ++) { + let curStrn = sum.strength[ch]; + if (rendMode) { + curStrn = curStrn >> 5; + } else { + curStrn = curStrn >> 4; + }; + if (rendMode == 0 || rendMode == 1) { + // 16 channel + for (let pI = 0; pI <= curStrn; pI ++) { + let pR = 5 + rendPos * 3 + (15 - pI) * 85 - Math.floor(rendPos / 2); + upThis.#mmdb[pR] = 1; + upThis.#mmdb[pR + 1] = 1; + }; + } else { + // 64 channel + for (let pI = 0; pI <= curStrn; pI ++) { + let pR = 5 + rendPos * 3 + (15 - pI) * 85 - Math.floor(rendPos / 2); + if (rendPos > 31) { + pR -= 760; + }; + upThis.#mmdb[pR] = 1; + upThis.#mmdb[pR + 1] = 1; + }; + }; + rendPos ++; + }; + // Render fonts + if (rendMode < 2) { + let voiceName = (upThis.getChVoice(this.#ch).name).slice(0, 8).padEnd(8, " "); + let bnkSel = (sum.chContr[chOff + ccToPos[0]] == 64 ? "SFX" : sum.chContr[chOff + ccToPos[0]] || sum.chContr[chOff + ccToPos[32]] || 0).toString().padStart(3, "0"); + if (upThis.getMode() == "xg") { + if ([80, 81, 82, 83, 84, 96, 97, 98, 99, 100].indexOf(sum.chContr[chOff + ccToPos[0]]) > -1) { + bnkSel = `${sum.chContr[chOff + ccToPos[32]] || 0}`.padStart(3, "0"); + showLsb = true; + }; + }; + let bnkInfo = `\u0080${bnkSel}\u0081${((sum.chProgr[this.#ch] || 0) + 1).toString().padStart(3, "0")}`; + let bitSeq = upThis.xgFont.getStr(bnkInfo + voiceName); + bitSeq.forEach(function (e0, i0) { + let regionX = 0, regionY = 0; + if (rendMode == 1) { + regionX = i0 * 5; + } else if (!rendMode) { + regionX = (i0 % 8) * 5 + 45, + regionY = 8 - Math.floor(i0 / 8) * 8; + }; + e0.forEach(function (e1, i1) { + let partX = i1 % 5, + partY = Math.floor(i1 / 5); + if (rendMode == 1 && i0 > 7) { + partX = partX + 5; + }; + upThis.#mmdb[(regionY + partY) * 85 + regionX + partX] = e1; + }); + }); + }; + }; + // Commit to main screen + for (let i = 0; i < 1360; i ++) { + let pX = i % 85; + let pY = Math.floor(i / 85); + ctx.fillStyle = inactivePixel; + if (upThis.#mmdb[i]) { + ctx.fillStyle = activePixel; + }; + ctx.fillRect(16 + (pX + Math.floor(pX / 5)) * mprWidth, 12 + pY * mprWidth, mpaWidth, mpaWidth); + }; + ctx.textAlign = "center"; + ctx.font = '12px "Arial Web"'; + // Display parts under strengths + { + let initOff = 71.5; + for (let c = -2; c < 32; c ++) { + ctx.fillStyle = activePixel; + if (c + minCh == this.#ch) { + ctx.fillStyle = inactivePixel; + }; + let filler = ""; + if (c >= 0) { + filler = (c + 1).toString().padStart(2, "0"); + } else { + filler = `A${c + 3}`; + }; + ctx.fillText(filler, initOff + 24 * c, 150); + }; + }; + // Show bottom caps + ctx.fillStyle = showLsb ? inactivePixel : activePixel; + ctx.fillText("MSB", 515, 164); + ctx.fillStyle = showLsb ? activePixel : inactivePixel; + ctx.fillText("LSB", 564, 164); + ctx.fillStyle = activePixel; + ctx.fillText("BANK", 467.5, 164); + ctx.fillText("PRG#", 660, 164); + ctx.fillText("CHANNEL SEC PART", 118, 254); + ctx.fillText("VOL", 420, 254); + ctx.fillText("EXP", 468, 254); + ctx.fillText("BRT", 516, 254); + ctx.fillText("REV", 648, 254); + ctx.fillText("CHO", 696.5, 254); + ctx.fillText("VAR", 745, 254); + ctx.fillText("KEY", 801, 254); + ctx.fillText("PAN", 583, 254); + // Show parts + upThis.xgFont.getStr(`${(this.#ch + 1).toString().padStart(2, "0")}${"ABCDEFGH"[this.#ch >> 4]}${(this.#ch % 16 + 1).toString().padStart(2, "0")}`).forEach(function (e0, i0) { + let regionX = i0 * 5; + e0.forEach(function (e1, i1) { + let partX = i1 % 5, + partY = Math.floor(i1 / 5); + upThis.#pmdb[partY * 25 + regionX + partX] = e1; + }); + }); + // Commit to part screen + for (let i = 0; i < 200; i ++) { + let pX = i % 25; + let pY = Math.floor(i / 25); + ctx.fillStyle = inactivePixel; + if (upThis.#pmdb[i]) { + ctx.fillStyle = activePixel; + }; + ctx.fillRect(16 + (pX + Math.floor(pX / 5)) * mprWidth, 180 + pY * mprWidth, mpaWidth, mpaWidth); + }; + // Fetch voice bitmap + // Commit to bitmap screen + let useBm; + if (timeNow <= sum.bitmap.expire) { + // Use provided bitmap + useBm = sum.bitmap.bitmap; + } else if (this.demoInfo && time > 0) { + let sequence = this.demoInfo.class || "boot"; + let stepTime = this.demoInfo.fps || 2; + let stepSize = this.demoInfo.size || 4; + let stepId = `${sequence}_${Math.floor(time * stepTime % stepSize)}`; + useBm = this.aniBm?.getBm(stepId) || this.sysBm?.getBm(stepId) || this.sysBm?.getBm("no_abm"); + if (!useBm) { + useBm = this.#bmdb.slice(); + }; + } else { + // Use stored pic + useBm = this.#bmdb.slice(); + if (timeNow >= this.#bmex) { + this.#bmst = 0; + let standard = upThis.getChVoice(this.#ch).standard.toLowerCase(); + useBm = this.voxBm.getBm(upThis.getChVoice(this.#ch).name) || this.voxBm.getBm(upThis.getVoice(sum.chContr[chOff] + ccToPos[0], sum.chProgr[this.#ch], 0, sum.mode).name); + if (["an", "ap", "dr", "dx", "pc", "pf", "sg", "vl"].indexOf(standard) > -1) { + useBm = this.sysBm.getBm(`ext_${standard}`); + }; + if (!useBm && (sum.chContr[chOff + ccToPos[0]] < 48 || sum.chContr[chOff + ccToPos[0]] == 56)) { + useBm = this.voxBm.getBm(upThis.getVoice(0, sum.chProgr[this.#ch], 0, sum.mode).name) + }; + if (!useBm && (sum.chContr[chOff] + ccToPos[0]) == 126) { + useBm = this.sysBm.getBm("cat_smpl"); + }; + if (!useBm && (sum.chContr[chOff] + ccToPos[0]) == 64) { + useBm = this.sysBm.getBm("cat_sfx"); + }; + if (!useBm) { + useBm = this.sysBm.getBm("no_abm"); + }; + } else { + if (this.#bmst == 2) { + useBm.forEach((e, i, a) => { + let crit = Math.floor((this.#bmex - timeNow) / 400); + a[i] = crit % 2 == e; + }); + }; + }; + }; + for (let i = 0; i < 256; i ++) { + let pX = i % 16; + let pY = Math.floor(i / 16); + ctx.fillStyle = inactivePixel; + if (useBm && useBm[i]) { + ctx.fillStyle = activePixel; + }; + ctx.fillRect(260 + pX * mprWidth, 180 + pY * mprHeight, mpaWidth, mpaHeight); + }; + // Move waveBuffer + let useWB = time && this.demoInfo; + if (useWB && Math.floor(time * 25) & 1) { + for (let i = 6; i >= 0; i --) { + this.#waveBuffer[i + 1] = this.#waveBuffer[i]; + }; + this.#waveBuffer[0] = +(sum.velo[this.#ch] > 159); + }; + // Show param + normParamPaint(sum.chContr[chOff + ccToPos[7]], 404, ctx); // vol + normParamPaint(sum.chContr[chOff + ccToPos[11]], 452, ctx); // exp + normParamPaint(sum.chContr[chOff + ccToPos[74]], 500, ctx); // bri + efxParamPaint(sum.chContr[chOff + ccToPos[91]], 648, ctx, useWB, this.#waveBuffer); // rev + efxParamPaint(sum.chContr[chOff + ccToPos[93]], 696, ctx, useWB, this.#waveBuffer); // cho + efxParamPaint(sum.chContr[chOff + ccToPos[94]], 744, ctx, useWB, this.#waveBuffer); // var + // Show pan + ctx.beginPath(); + ctx.arc(582, 216, 34, 2.356194490192345, 7.068583470577034); + ctx.lineWidth = 2; + ctx.strokeStyle = "#000f"; + ctx.stroke(); + let pan = sum.chContr[chOff + ccToPos[10]]; + this.#panStrokes.forEach((e, i, a) => {a[i] = 0}); + if (pan == 0) { + this.#panStrokes[0] = 1; + } else if (pan == 64) { + this.#panStrokes[3] = 1; + } else if (pan == 128) { + this.#panStrokes[1] = 1; + this.#panStrokes[5] = 1; + } else if (pan < 64) { + this.#panStrokes[Math.floor(pan / 21)] = 1; + } else { + this.#panStrokes[4 + Math.floor((pan - 65) / 21)] = 1; + }; + ctx.lineWidth = mprHeight; + for (let i = 0; i < 7; i ++) { + ctx.strokeStyle = inactivePixel; + if (this.#panStrokes[i]) { + ctx.strokeStyle = activePixel; + }; + ctx.radial(582, 216, [ + 7.068583470577034, + 6.283185307179586, + 5.497787143782138, + 4.71238898038469, + 3.9269908169872414, + 3.141592653589793, + 2.356194490192345 + ][i], 8, 26) + }; + }; +}; + +export default MuDisplay; diff --git a/src/disp/disp_n5.mjs b/src/disp/disp_n5.mjs new file mode 100644 index 00000000..fe737d6c --- /dev/null +++ b/src/disp/disp_n5.mjs @@ -0,0 +1,423 @@ +"use strict"; + +import {OctaviaDevice} from "../state/index.mjs"; +import {RootDisplay, ccToPos} from "../basic/index.mjs"; +import {MxFont40, MxBmDef} from "../basic/mxReader.js"; + +import { + bgGreen, + bgOrange, + bgWhite, + bgRed, + lcdCache +} from "./colour.js"; + +let Ns5rDisplay = class extends RootDisplay { + #omdb = new Uint8Array(5760); // Full display + #nmdb = new Uint8Array(5760); // Full display, but on commit + #dumpData; + #dumpExpire = 0; + #mode = "?"; + #ch = 0; + #backlight; + #refreshed = true; + xgFont = new MxFont40("./data/bitmaps/xg/font.tsv"); + trueFont = new MxFont40("./data/bitmaps/korg/font.tsv", "./data/bitmaps/xg/font.tsv"); + element = new MxBmDef("./data/bitmaps/korg/element.tsv"); + constructor() { + super(new OctaviaDevice(), 0.1, 0.9); + this.#backlight = bgWhite; + this.addEventListener("mode", (ev) => { + this.#backlight = { + "gs": bgOrange, + "mt32": bgOrange, + "xg": bgGreen, + "ns5r": bgGreen, + "x5d": bgGreen, + "ag10": bgRed, + "05rw": bgGreen, + "k11": bgGreen, + "gmlx": bgGreen, + "sg01": bgRed, + "s90es": bgGreen, + "motif": bgGreen + }[ev.data] || bgWhite; + this.#mode = ev.data; + this.#refreshed = true; + }); + this.addEventListener("screen", (ev) => { + console.debug(ev); + if (ev.data.type == "ns5r") { + this.#dumpData = ev.data.data; + this.#dumpExpire = Date.now() + 1600; + }; + }); + }; + setCh(ch) { + this.#ch = ch; + }; + getCh() { + return this.#ch; + }; + #renderParamBox(startX, value) { + // Draw the lever rest + for (let p = 0; p < 180; p ++) { + let pX = p % 12, pY = Math.floor(p / 12); + if ( + (pY == 0 && pX < 11) || + (pY == 14 && pX > 0) || + (pY == 13) + ) { + this.#nmdb[pY * 144 + pX + startX] = 1; + } else if (pY > 0 && pY < 13) { + if ( + pX == 0 || pX > 9 || + (pX == 5 && pY > 1 && pY < 12) + ) { + this.#nmdb[pY * 144 + pX + startX] = 1; + }; + }; + }; + let convertedValue = value >> 4; + // Draw the lever + for (let c = 0; c < 21; c ++) { + let pX = c % 7, pY = Math.floor(c / 7), + pcY = pY + (9 - convertedValue); + if (pY != 1 || pX == 0 || pX == 6) { + this.#nmdb[pcY * 144 + pX + startX + 2] = 1; + } else { + this.#nmdb[pcY * 144 + pX + startX + 2] = 0; + }; + }; + }; + #renderLine(srcX, srcY, diffX, diffY) { + //console.debug(diffX, diffY); + srcX = (srcX < 0 ? Math.ceil : Math.floor)(srcX); + srcY = (srcY < 0 ? Math.ceil : Math.floor)(srcY); + diffX = Math.round(diffX); + diffY = Math.round(diffY); + if (Math.abs(diffX) < Math.abs(diffY)) { + let theta = diffX / diffY; + if (diffY < 0) { + for (let p = 0; p >= diffY; p --) { + this.#nmdb[Math.round(theta * p + srcX) + (srcY + p) * 144] = 1; + }; + } else { + for (let p = 0; p <= diffY; p ++) { + this.#nmdb[Math.round(theta * p + srcX) + (srcY + p) * 144] = 1; + }; + }; + } else { + let theta = diffY / diffX; + if (diffX < 0) { + for (let p = 0; p >= diffX; p --) { + this.#nmdb[Math.round(theta * p + srcY) * 144 + srcX + p] = 1; + }; + } else { + for (let p = 0; p <= diffX; p ++) { + this.#nmdb[Math.round(theta * p + srcY) * 144 + srcX + p] = 1; + }; + }; + }; + }; + #renderCompass(startX, startY, value) { + let radius = 7, circleStep = 40; + for (let c = 0; c < circleStep; c ++) { + let angle = Math.PI * c * 2 / circleStep; + let intX = radius * Math.sin(angle), + drawX = Math.sign(intX) * Math.round(Math.abs(intX)); + let intY = radius * Math.cos(angle), + drawY = Math.sign(intY) * Math.round(Math.abs(intY)); + this.#nmdb[(drawY + startY) * 144 + drawX + startX] = 1; + }; + if (value < 128) { + let normAngle = Math.floor(value / 9.85) * 22.5; + //let normAngle = Math.floor(value * 2.126); + let lineStep = 5, angle = Math.PI * (315 - normAngle) / 180; + let deltaX = Math.sin(angle), deltaY = Math.cos(angle); + /* for (let c = 0; c <= lineStep; c ++) { + let drawX = Math.round(c * deltaX), + drawY = Math.round(c * deltaY); + this.#nmdb[(drawY + startY) * 144 + drawX + startX] = 1; + }; */ + this.#renderLine(startX, startY, deltaX * lineStep, deltaY * lineStep); + } else { + this.#nmdb[(startY) * 144 + startX] = 1; + }; + }; + render(time, ctx, trueMode) { + let sum = super.render(time); + let upThis = this; + let timeNow = Date.now(); + // Channel test + let alreadyMin = false; + let minCh = 0, maxCh = 0; + sum.chInUse.forEach(function (e, i) { + if (e) { + if (!alreadyMin) { + alreadyMin = true; + minCh = i; + }; + maxCh = i; + }; + }); + let part = minCh >> 4; + minCh = part << 4; + maxCh = ((maxCh >> 4) << 4) + 15; + if (this.#ch > maxCh) { + this.#ch = minCh + this.#ch & 15; + }; + if (this.#ch < minCh) { + this.#ch = maxCh - 15 + (this.#ch & 15); + }; + let chOff = this.#ch * ccToPos.length; + if (timeNow < this.#dumpExpire) { + this.#dumpData?.forEach((e, i) => { + this.#nmdb[i] = e; + }); + } else { + // Clear out the current working display buffer. + this.#nmdb.forEach((e, i, a) => {a[i] = 0}); + // Screen buffer write begin. + // Determine the used font + let targetFont = trueMode ? this.trueFont : this.xgFont; + // Show current channel + targetFont.getStr(`${"ABCDEFGH"[this.#ch >> 4]}${((this.#ch & 15) + 1).toString().padStart(2, "0")}`).forEach((e0, i0) => { + let secX = i0 * 6 + 1; + e0.forEach((e1, i1) => { + let charX = i1 % 5, + charY = Math.floor(i1 / 5); + this.#nmdb[charY * 144 + secX + charX] = e1; + }); + }); + // Show current pitch shift + let cPit = this.device.getPitchShift(this.#ch); + targetFont.getStr(`${"+-"[+(cPit < 0)]}${Math.round(Math.abs(cPit)).toString().padStart(2, "0")}`).forEach((e0, i0) => { + let secX = i0 * 6 + 1; + e0.forEach((e1, i1) => { + let charX = i1 % 5, + charY = Math.floor(i1 / 5) + 8; + this.#nmdb[charY * 144 + secX + charX] = e1; + }); + }); + // Render bank background + let bankFetched = upThis.getChVoice(this.#ch), bankInfo = bankFetched.sect; + for (let bankSect = 0; bankSect < 225; bankSect ++) { + let pixX = bankSect % 25, pixY = Math.floor(bankSect / 25) + 15; + this.#nmdb[pixY * 144 + pixX] = 1; + }; + targetFont.getStr(bankInfo).forEach((e0, i0) => { + let secX = i0 * 6 + 1; + e0.forEach((e1, i1) => { + let charX = i1 % 5, + charY = Math.floor(i1 / 5) + 16; + if (e1) { + this.#nmdb[charY * 144 + secX + charX] = 0; + }; + }); + }); + // Render program info + let bankName = (bankFetched.name).slice(0, 10).padEnd(10, " "); + targetFont.getStr(`:${(sum.chProgr[this.#ch] + 1).toString().padStart(3, "0")}`).forEach((e0, i0) => { + let secX = i0 * 6 + 25; + e0.forEach((e1, i1) => { + let charX = i1 % 5, + charY = Math.floor(i1 / 5) + 16; + this.#nmdb[charY * 144 + secX + charX] = e1; + }); + }); + targetFont.getStr(bankName).forEach((e0, i0) => { + let secX = i0 * 6 + 53; + e0.forEach((e1, i1) => { + let charX = i1 % 5, + charY = Math.floor(i1 / 5) + 16; + this.#nmdb[charY * 144 + secX + charX] = e1; + }); + }) + // Render current channel + targetFont.getStr(`${this.#ch + 1}`.padStart(2, "0")).forEach((e0, i0) => { + let secX = i0 * 6; + e0.forEach((e1, i1) => { + let charX = i1 % 5, + charY = Math.floor(i1 / 5) + 32; + this.#nmdb[charY * 144 + secX + charX] = e1; + }); + }); + // Render channel strength + let showReduction = 22; + if (maxCh > 31) { + showReduction = 43; + }; + sum.strength.forEach((e, i) => { + if (maxCh < 32 && i > 31) { + return; + }; + for (let c = Math.floor(e / showReduction); c >= 0; c --) { + let pixX = (i % 32) * 4 + 12, + pixY = (i > 31 ? 32 : 39) - c; + if (trueMode) { + pixX ++; + }; + this.#nmdb[pixY * 144 + pixX] = 1; + this.#nmdb[pixY * 144 + pixX + 1] = 1; + this.#nmdb[pixY * 144 + pixX + 2] = 1; + }; + }); + // Render effect types + let efxShow = this.device.aiEfxName.slice(0, 7 + +trueMode) || "Rev/Cho"; + targetFont.getStr(trueMode ? `Fx A:001${efxShow}` : `FxA:001${efxShow}`).forEach((e0, i0) => { + let lineChars = trueMode ? 8 : 7; + let secX = (i0 % lineChars) * 6 + (trueMode ? 95 : 102), + secY = Math.floor(i0 / lineChars) * 8; + e0.forEach((e1, i1) => { + let charX = i1 % 5, + charY = Math.floor(i1 / 5) + secY; + this.#nmdb[charY * 144 + secX + charX] = e1; + }); + }); + // Render letter displays + if (timeNow < sum.letter.expire) { + let xShift = 19 + (+trueMode) * 3; + // White bounding box + for (let i = 0; i < 2000; i ++) { + let x = i % 100, y = Math.floor(i / 100); + // Top and bottom borders + if ( + (y == 0 && x < 99) || + (y == 18) || + (y == 19 && x > 0) + ) { + this.#nmdb[y * 144 + x + xShift] = 1; + }; + if (y > 0 && y < 18) { + this.#nmdb[y * 144 + x + xShift] = +(x < 1 || x > 97); + }; + }; + // Actual text + targetFont.getStr(sum.letter.text).forEach((e0, i0) => { + let secX = (i0 % 16) * 6 + xShift + 2, + secY = Math.floor(i0 / 16) * 8 + 2; + e0.forEach((e1, i1) => { + let charX = i1 % 5, + charY = Math.floor(i1 / 5) + secY; + this.#nmdb[charY * 144 + secX + charX] = e1; + }); + }); + } else { + // Render params only when it's not covered + let xShift = trueMode ? 2 : 0; + this.#renderParamBox(20 + xShift, sum.chContr[chOff + ccToPos[7]]); + this.#renderParamBox(33 + xShift, sum.chContr[chOff + ccToPos[11]]); + if (trueMode) { + if (sum.chContr[chOff + ccToPos[10]] < 128) { + this.element.getBm(`Pan_${Math.floor(sum.chContr[chOff + ccToPos[10]] / 9.85)}`)?.render((e, x, y) => { + this.#nmdb[y * 144 + x + 48] = e; + }); + } else { + this.element.getBm("PanRndm")?.render((e, x, y) => { + this.#nmdb[y * 144 + x + 48] = e; + }); + }; + } else { + this.#renderCompass(53, 7, sum.chContr[chOff + ccToPos[10]]); + }; + this.#renderParamBox(62 + 2 * (+trueMode) + xShift - (+trueMode), sum.chContr[chOff + ccToPos[91]]); + this.#renderParamBox(75 + 2 * (+trueMode) + xShift - (+trueMode), sum.chContr[chOff + ccToPos[93]]); + if (!trueMode) { + this.#renderParamBox(88, sum.chContr[chOff + ccToPos[74]]); + }; + }; + // Render bitmap displays + if (timeNow < sum.bitmap.expire) { + // White bounding box + for (let i = 0; i < 777; i ++) { + let x = i % 37, y = Math.floor(i / 37); + let realX = x + 77 + (+trueMode), realY = y + 19; + // Top and bottom borders + if ( + (y == 0 && x < 36) || + (y == 19) || + (y == 20 && x > 0) + ) { + this.#nmdb[realY * 144 + realX] = 1; + }; + if (y > 0 && y < 19) { + this.#nmdb[realY * 144 + realX] = +(x < 1 || x > 34); + }; + }; + // Actual bitmap + let colUnit = (sum.bitmap.bitmap.length == 512) ? 1 : 2; + for (let i = 0; i < 512; i += colUnit) { + let x = i & 31, y = i >> 5; + let realX = x + 79 + (+trueMode), realY = y + 21; + this.#nmdb[realY * 144 + realX] = sum.bitmap.bitmap[i / colUnit]; + if (colUnit == 2) { + this.#nmdb[realY * 144 + realX + 1] = sum.bitmap.bitmap[i / colUnit]; + }; + }; + }; + }; + // Screen buffer write finish. + // Determine if full render is required. + let drawPixMode = false; + if (this.#refreshed) { + // Full render required. + // Clear all pixels. + ctx.fillStyle = this.#backlight.replace("64", ""); + ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); + ctx.textAlign = "center"; + ctx.font = '11px "Arial Web"'; + ctx.fillStyle = "#000e"; + ctx.fillText("MIDI. CH", 58, 10); + ctx.fillText("VOL", 153.5, 10); + ctx.fillText("EXP", 231.5, 10); + ctx.fillText("PAN", 322.5, 10); + ctx.fillText("REV", 405, 10); + ctx.fillText("CHO", 484, 10); + ctx.fillText("BRT", 561.5, 10); + ctx.fillText("EFFECT TYPE", 738, 10); + ctx.fillText("PART", 34, 262); + let circle = 2 * Math.PI; + for (let c = 1; c < 33; c ++) { + if (c == 1 || c == 32 || c % 5 == 0) { + ctx.fillText(`${c}`, 24 * c + 58, 262); + } else { + ctx.beginPath(); + ctx.ellipse( + 24 * c + 58, + 258, + 2, 2, + 0, 0, circle + ); + ctx.fill(); + }; + }; + drawPixMode = true; + this.#refreshed = false; + }; + // Commit to display accordingly. + this.#nmdb.forEach((e, i) => { + let pixX = i % 144, pixY = Math.floor(i / 144); + let hasDifference = this.#omdb[i] != e; + if (!drawPixMode && hasDifference) { + ctx.fillStyle = this.#backlight.slice(0, 7); + ctx.fillRect(6 * pixX + 1, 12 + 6 * pixY, 6, 6); + }; + if (drawPixMode || hasDifference) { + ctx.fillStyle = lcdCache.black[e + 3]; + if (drawPixMode) { + ctx.fillStyle = ctx.fillStyle.slice(0, 7); + }; + ctx.fillRect(6 * pixX + 1, 12 + 6 * pixY, 5.5, 5.5); + }; + }); + // Commit to old display buffer. + this.#nmdb.forEach((e, i) => { + if (this.#omdb[i] != e) { + this.#omdb[i] = e; + }; + }); + }; +}; + +export default Ns5rDisplay; diff --git a/src/disp/disp_psr.mjs b/src/disp/disp_psr.mjs new file mode 100644 index 00000000..8a6729b8 --- /dev/null +++ b/src/disp/disp_psr.mjs @@ -0,0 +1,469 @@ +"use strict"; + +import {OctaviaDevice} from "../state/index.mjs"; +import {RootDisplay, ccToPos} from "../basic/index.mjs"; +import {MxFont40, MxBm256} from "../basic/mxReader.js"; + +import { + inactivePixel, + mediumPixel, + activePixel +} from "./colour.js"; + +let PsrDisplay = class extends RootDisplay { + // #okdb = new Uint8Array(61); + #nkdb = new Uint8Array(61); + // #osdb = new Uint8Array(22); + #nsdb = new Uint8Array(22); + #nadb = new Uint8Array(15); + #bmdb = new Uint8Array(256); + #bmst = 0; + #bmex = 0; + #ch = 0; + xgFont = new MxFont40("./data/bitmaps/xg/font.tsv"); + trueFont = new MxFont40("./data/bitmaps/korg/font.tsv"); + sysBm = new MxBm256("./data/bitmaps/xg/system.tsv"); + voxBm = new MxBm256("./data/bitmaps/xg/voices.tsv"); + aniBm = new MxBm256("./data/bitmaps/xg/animation.tsv"); + clefs = new Path2D("M110 163.5c0 -3.9 3.2 -7.1 7.1 -7.1s7.1 3.2 7.1 7.1s-3.2 7.1 -7.1 7.1s-7.1 -3.2 -7.1 -7.1zM110 128.5c0 -3.9 3.2 -7.1 7.1 -7.1s7.1 3.2 7.1 7.1s-3.2 7.1 -7.1 7.1s-7.1 -3.2 -7.1 -7.1zM64.5 109.2c24.1 0 41 12.3 41 35.1c0 36.8 -36.8 58 -72.2 72.9c-0.4 0.4 -0.8 0.6 -1.3 0.6c-1 0 -1.8 -0.8 -1.8 -1.8c0 -0.4 0.1 -0.8 0.6 -1.3c28.3 -16.5 57.7 -37.1 57.7 -69c0 -16.8 -8.8 -32.9 -23.9 -32.9c-10.4 0 -18.1 7.6 -21.6 17.6c1.5 -0.7 3.1 -1.1 4.8 -1.1c7.7 0 14 6.3 14 14c0 8.1 -6.2 14.8 -14 14.8c-8.4 0 -15.7 -6.6 -15.7 -14.8c0 -18.6 14.3 -34.2 32.5 -34.2z M408.6 181.3c0.6 0 1.3 -0.1 1.8 -0.1c21.7 0 35.8 17.9 35.8 36.5c0 10.6 -4.6 21.6 -15 29.4c-3.1 2.4 -6.6 3.9 -10.2 5c0.4 4.9 0.7 9.8 0.7 14.7c0 2.7 -0.1 5.5 -0.3 8.1c-1 16.8 -12.6 31.9 -29.1 31.9c-15.1 0 -27.3 -12.3 -27.3 -27.6c0 -8.1 7.4 -14.4 15.7 -14.4c7.6 0 13.3 6.6 13.3 14.4c0 7.3 -6 13.3 -13.3 13.3 c-1.5 0 -2.9 -0.3 -4.3 -0.8c3.6 5.5 9.5 9.1 16.4 9.1c13.4 0 22 -12.9 22.8 -26.7c0.1 -2.5 0.3 -5.2 0.3 -7.7c0 -4.3 -0.1 -8.5 -0.6 -12.9c-4.1 0.7 -8.1 1.1 -12.5 1.1c-26.3 0 -46.6 -24.1 -46.6 -52.4c0 -24.8 18.3 -42.8 34.7 -61.7c-2.7 -8.7 -5.2 -17.5 -6.3 -26.6c-0.8 -7.3 -1 -14.6 -1 -21.8c0 -16.1 7.7 -31.4 20.9 -40.9c0.4 -0.3 1 -0.4 1.4 -0.4c0.6 0 1 0 1.4 0.4 c9.9 11.8 18.6 34.3 18.6 50.1c0 20 -12 35.7 -25.2 51c2.9 9.5 5.5 19.3 7.8 29zM420.5 246.4c9.5 -3.4 15.8 -13.3 15.8 -23c0 -12.6 -9.2 -25.1 -24.2 -26.6c3.4 16.2 6.4 32.3 8.4 49.6zM366.4 214.1c0 18.9 18.1 34.6 37 34.6c3.9 0 7.7 -0.3 11.5 -0.8c-2 -17.8 -5.2 -34.3 -8.8 -51c-11.1 1.1 -17.4 8.5 -17.4 16.7 c0 6.2 3.5 12.7 11.3 17.2c0.7 0.7 1 1.4 1 2.1c0 1.5 -1.4 3.1 -3.1 3.1c-0.4 0 -0.8 -0.1 -1.3 -0.3c-11.2 -6 -16.4 -16.1 -16.4 -25.9c0 -12.3 8.1 -24.4 22.4 -27.6c-2 -8.1 -4.1 -16.4 -6.4 -24.5c-15 16.9 -29.8 34 -29.8 56.4zM413.1 71.7c-13.9 6.7 -22.7 20.9 -22.7 36.3c0 10.4 2.5 18.6 5 27.2 c11.2 -13.6 20.4 -27.7 20.4 -45.4c0 -7.7 -0.6 -11.1 -2.8 -18.1z"); + keyboard = new Path2D("M224 318 L380 318 L380 380 L224 380 Z M246 350 L246 380 M268 350 L268 380 M291 318 L291 380 M313 350 L313 380 M335 350 L335 380 M358 350 L358 380 M235 318 L235 350 L254 350 L254 318 M260 318 L260 350 L279 350 L279 318 M301 318 L301 350 L320 350 L320 318 M326 318 L326 350 L345 350 L345 318 M350 318 L350 350 L370 350 L370 318 M387 318 L543 318 L543 380 L387 380 Z M409 350 L409 380 M431 350 L431 380 M454 318 L454 380 M476 350 L476 380 M498 350 L498 380 M521 350 L521 380 M398 318 L398 350 L417 350 L417 318 M423 318 L423 350 L442 350 L442 318 M464 318 L464 350 L483 350 L483 318 M489 318 L489 350 L508 350 L508 318 M513 318 L513 350 L533 350 L533 318 M550 318 L706 318 L706 380 L550 380 Z M572 350 L572 380 M594 350 L594 380 M617 318 L617 380 M639 350 L639 380 M661 350 L661 380 M684 350 L684 380 M561 318 L561 350 L580 350 L580 318 M586 318 L586 350 L605 350 L605 318 M627 318 L627 350 L646 350 L646 318 M652 318 L652 350 L671 350 L671 318 M676 318 L676 350 L696 350 L696 318 M713 318 L869 318 L869 380 L713 380 Z M735 350 L735 380 M757 350 L757 380 M780 318 L780 380 M802 350 L802 380 M824 350 L824 380 M847 350 L847 380 M724 318 L724 350 L743 350 L743 318 M749 318 L749 350 L768 350 L768 318 M790 318 L790 350 L809 350 L809 318 M815 318 L815 350 L834 350 L834 318 M839 318 L839 350 L859 350 L859 318 M876 318 L1032 318 L1032 380 L876 380 Z M898 350 L898 380 M920 350 L920 380 M943 318 L943 380 M965 350 L965 380 M987 350 L987 380 M1010 350 L1010 380 M887 318 L887 350 L906 350 L906 318 M912 318 L912 350 L931 350 L931 318 M953 318 L953 350 L972 350 L972 318 M978 318 L978 350 L997 350 L997 318 M1002 318 L1002 350 L1022 350 L1022 318 M1032 318 L1055 318 L1055 380 L1032 380"); + bracket = new Path2D("M83 23 L49 23 L49 86 L83 86 M264 23 L297 23 L297 86 L264 86"); + staffLines = new Path2D("M30 110 L344 110 M356 110 L1074 110 M30 146 L344 146 M356 146 L1074 146 M30 182 L344 182 M356 182 L1074 182 M30 218 L344 218 M356 218 L1074 218 M30 254 L344 254 M356 254 L775 254 M894 254 L1074 254"); + downbeatStar = new Path2D("m 160.263,824.43605 c 0.939,1.039 1.482,2.434 1.482,3.833 0,1.402 -0.543,2.796 -1.482,3.834 1.038,-0.944 2.43,-1.483 3.837,-1.483 1.398,0 2.791,0.539 3.828,1.483 -0.948,-1.038 -1.482,-2.432 -1.482,-3.834 0,-1.399 0.534,-2.794 1.482,-3.833 -1.037,0.945 -2.43,1.483 -3.828,1.483 -1.407,0 -2.799,-0.538 -3.837,-1.483"); + downbeatHand = new Path2D("m 166.418,820.55105 c 0.13,0 0.253,-0.054 0.351,-0.143 0.089,-0.094 0.143,-0.223 0.143,-0.351 v -1.969 l 1.847,-6.897 c 0.706,-2.627 0.966,-5.371 0.78,-8.09 l -0.184,-2.644 1.188,-2.055 h -5.175 l -1.268,3.499 -1.278,-3.499 h -5.171 l 1.185,2.055 -0.185,2.644 c -0.185,2.719 0.076,5.463 0.782,8.09 l 1.847,6.897 v 1.969 c 0,0.128 0.054,0.257 0.145,0.351 0.089,0.089 0.218,0.143 0.348,0.143 h 0.214 c 0.423,0 0.841,-0.11 1.213,-0.321 0.364,-0.204 0.68,-0.509 0.9,-0.871 0.213,0.362 0.527,0.667 0.89,0.871 0.373,0.211 0.79,0.321 1.208,0.321 h 0.22 m -0.22,-1.304 c 0,0.111 -0.034,0.217 -0.095,0.303 -0.069,0.085 -0.164,0.147 -0.268,0.178 -0.103,0.024 -0.22,0.016 -0.317,-0.027 -0.315,-0.132 -0.588,-0.357 -0.78,-0.645 -0.185,-0.283 -0.289,-0.626 -0.289,-0.968 v -6.306 c 0.262,0.159 0.562,0.23 0.865,0.213 0.308,-0.023 0.595,-0.138 0.836,-0.329 0.233,-0.192 0.406,-0.454 0.488,-0.748 l 0.007,-0.017 c 0.379,-1.35 0.631,-2.734 0.747,-4.134 0.496,-0.497 0.797,-1.176 0.839,-1.876 0.046,-0.701 -0.172,-1.411 -0.591,-1.967 l -0.625,0.356 c 0.371,0.453 0.556,1.058 0.501,1.64 -0.054,0.584 -0.349,1.143 -0.801,1.517 -0.112,1.448 -0.365,2.889 -0.756,4.288 -0.055,0.178 -0.165,0.336 -0.323,0.436 -0.15,0.099 -0.343,0.145 -0.522,0.119 -0.184,-0.026 -0.356,-0.115 -0.472,-0.257 -0.124,-0.136 -0.193,-0.319 -0.193,-0.503 v -7.524 l 1.413,-3.887 h 3.453 l -0.687,1.18 0.199,2.865 c 0.186,2.636 -0.068,5.301 -0.756,7.853 l -1.873,6.989 z m -4.143,-1.251 -1.873,-6.989 c -0.681,-2.552 -0.94,-5.217 -0.755,-7.853 l 0.198,-2.865 -0.68,-1.18 h 3.446 l 1.412,3.887 v 7.524 c 0,0.184 -0.066,0.367 -0.185,0.503 -0.124,0.142 -0.295,0.231 -0.472,0.257 -0.185,0.026 -0.372,-0.02 -0.529,-0.119 -0.151,-0.1 -0.267,-0.258 -0.315,-0.436 -0.4,-1.399 -0.652,-2.84 -0.756,-4.288 -0.453,-0.374 -0.747,-0.933 -0.803,-1.517 -0.059,-0.582 0.125,-1.187 0.495,-1.64 l -0.618,-0.356 c -0.424,0.556 -0.637,1.266 -0.597,1.967 0.049,0.7 0.349,1.379 0.838,1.876 0.122,1.4 0.371,2.784 0.753,4.134 v 0.017 c 0.084,0.294 0.262,0.556 0.497,0.748 0.233,0.191 0.527,0.306 0.83,0.329 0.299,0.017 0.608,-0.054 0.862,-0.213 v 6.306 c 0,0.342 -0.095,0.685 -0.288,0.968 -0.184,0.288 -0.459,0.513 -0.774,0.645 -0.103,0.043 -0.212,0.051 -0.316,0.027 -0.104,-0.031 -0.199,-0.093 -0.268,-0.178 -0.069,-0.086 -0.102,-0.192 -0.102,-0.303 v -1.251"); + upbeatHand = new Path2D("m 143.496,764.85205 -1.915,5.26 c -0.152,0.404 -0.158,0.856 -0.029,1.267 0.13,0.408 0.406,0.767 0.756,1.01 0.356,0.244 0.795,0.362 1.221,0.338 l -1.483,4.067 c -0.15,0.417 -0.136,0.885 0.035,1.291 0.163,0.409 0.494,0.744 0.893,0.926 0.403,0.186 0.87,0.209 1.288,0.075 -0.06,0.409 0.02,0.841 0.234,1.199 0.213,0.357 0.557,0.63 0.949,0.765 0.397,0.133 0.835,0.123 1.219,-0.032 0.384,-0.155 0.714,-0.445 0.913,-0.813 0.22,0.315 0.563,0.543 0.941,0.628 0.369,0.084 0.781,0.03 1.118,-0.151 0.336,-0.183 0.603,-0.496 0.733,-0.858 l 0.885,-2.412 c 0.222,0.306 0.565,0.529 0.94,0.611 0.371,0.083 0.776,0.029 1.112,-0.158 0.338,-0.186 0.596,-0.494 0.726,-0.851 l 2.074,-5.687 c 0.988,-2.715 0.803,-5.834 -0.493,-8.414 v -0.005 l -7.014,-2.549 c -1.152,0.262 -2.237,0.812 -3.128,1.595 -0.886,0.779 -1.577,1.784 -1.975,2.898 m 9.357,8.148 -0.665,-0.24 -2.484,6.824 c -0.076,0.217 -0.247,0.402 -0.453,0.497 -0.212,0.099 -0.459,0.11 -0.679,0.031 -0.218,-0.079 -0.406,-0.246 -0.501,-0.455 -0.096,-0.213 -0.109,-0.46 -0.026,-0.68 l 2.482,-6.823 -0.666,-0.241 -2.845,7.822 c -0.098,0.261 -0.303,0.48 -0.551,0.6 -0.253,0.118 -0.556,0.13 -0.815,0.036 -0.261,-0.097 -0.482,-0.3 -0.597,-0.55 -0.118,-0.253 -0.13,-0.551 -0.041,-0.813 l 2.846,-7.826 -0.666,-0.24 -2.483,6.823 c -0.095,0.262 -0.294,0.482 -0.548,0.602 -0.256,0.117 -0.549,0.129 -0.809,0.033 -0.262,-0.095 -0.488,-0.298 -0.606,-0.548 -0.115,-0.253 -0.13,-0.552 -0.035,-0.814 l 1.662,-4.569 c 0.398,-0.227 0.706,-0.597 0.865,-1.023 l 1.091,-3.001 c 0.83,-0.093 1.625,-0.392 2.304,-0.868 0.674,-0.477 1.236,-1.124 1.6,-1.866 l -0.672,-0.248 c -0.351,0.683 -0.893,1.269 -1.545,1.671 -0.658,0.404 -1.421,0.625 -2.196,0.631 l -1.25,3.438 c -0.108,0.306 -0.341,0.563 -0.635,0.7 -0.295,0.136 -0.647,0.151 -0.955,0.04 -0.303,-0.11 -0.557,-0.345 -0.693,-0.637 -0.137,-0.294 -0.158,-0.646 -0.049,-0.955 l 1.923,-5.259 c 0.35,-0.967 0.94,-1.847 1.702,-2.542 0.767,-0.687 1.7,-1.193 2.695,-1.452 l 6.539,2.38 c 1.103,2.359 1.236,5.158 0.343,7.605 l -2.073,5.685 c -0.076,0.22 -0.246,0.404 -0.459,0.499 -0.205,0.101 -0.453,0.109 -0.671,0.033 -0.22,-0.08 -0.406,-0.248 -0.503,-0.457 -0.094,-0.212 -0.109,-0.461 -0.026,-0.68 l 1.145,-3.163 M 184.684,764.85205 c -0.405,-1.114 -1.093,-2.119 -1.985,-2.898 -0.883,-0.783 -1.974,-1.333 -3.128,-1.595 l -7.004,2.549 v 0.005 c -1.303,2.58 -1.49,5.699 -0.501,8.414 l 2.072,5.687 c 0.13,0.357 0.397,0.665 0.732,0.851 0.332,0.187 0.736,0.241 1.113,0.158 0.37,-0.082 0.712,-0.305 0.94,-0.611 l 0.88,2.412 c 0.13,0.362 0.397,0.675 0.739,0.858 0.336,0.181 0.741,0.235 1.12,0.151 0.368,-0.085 0.712,-0.313 0.94,-0.628 0.19,0.368 0.52,0.658 0.905,0.813 0.383,0.155 0.83,0.165 1.219,0.032 0.393,-0.135 0.735,-0.408 0.955,-0.765 0.213,-0.358 0.296,-0.79 0.227,-1.199 0.418,0.134 0.891,0.111 1.289,-0.075 0.398,-0.182 0.729,-0.517 0.9,-0.926 0.173,-0.406 0.179,-0.874 0.028,-1.291 l -1.481,-4.067 c 0.429,0.024 0.862,-0.094 1.219,-0.338 0.358,-0.243 0.625,-0.602 0.755,-1.01 0.138,-0.411 0.123,-0.863 -0.02,-1.267 l -1.914,-5.26 m -8.213,11.311 c 0.074,0.219 0.068,0.468 -0.035,0.68 -0.095,0.209 -0.282,0.377 -0.501,0.457 -0.211,0.076 -0.467,0.068 -0.673,-0.033 -0.212,-0.095 -0.377,-0.279 -0.459,-0.499 l -2.071,-5.685 c -0.886,-2.447 -0.762,-5.246 0.342,-7.605 l 6.539,-2.38 c 1,0.259 1.935,0.765 2.695,1.452 0.762,0.695 1.352,1.575 1.71,2.542 l 1.914,5.259 c 0.109,0.309 0.094,0.661 -0.041,0.955 -0.138,0.292 -0.398,0.527 -0.7,0.637 -0.309,0.111 -0.66,0.096 -0.948,-0.04 -0.294,-0.137 -0.534,-0.394 -0.643,-0.7 l -1.248,-3.438 c -0.771,-0.006 -1.539,-0.227 -2.192,-0.631 -0.657,-0.402 -1.192,-0.988 -1.55,-1.671 l -0.671,0.248 c 0.371,0.742 0.926,1.389 1.605,1.866 0.68,0.476 1.476,0.775 2.298,0.868 l 1.092,3.001 c 0.159,0.426 0.467,0.796 0.865,1.023 l 1.66,4.569 c 0.096,0.262 0.081,0.561 -0.035,0.814 -0.118,0.25 -0.336,0.453 -0.596,0.548 -0.261,0.096 -0.563,0.084 -0.816,-0.033 -0.248,-0.12 -0.454,-0.34 -0.551,-0.602 l -2.482,-6.823 -0.666,0.24 2.845,7.826 c 0.099,0.262 0.084,0.56 -0.032,0.813 -0.124,0.25 -0.343,0.453 -0.604,0.55 -0.261,0.094 -0.556,0.082 -0.811,-0.036 -0.253,-0.12 -0.451,-0.339 -0.548,-0.6 l -2.847,-7.822 -0.666,0.241 2.484,6.823 c 0.076,0.22 0.069,0.467 -0.033,0.68 -0.097,0.209 -0.282,0.376 -0.494,0.455 -0.221,0.079 -0.467,0.068 -0.68,-0.031 -0.214,-0.095 -0.379,-0.28 -0.459,-0.497 l -2.485,-6.824 -0.665,0.24 1.153,3.163"); + // noteHead = new Path2D("M220 138c56 0 109 -29 109 -91c0 -72 -56 -121 -103 -149c-36 -21 -76 -36 -117 -36c-56 0 -109 29 -109 91c0 72 56 121 103 149c36 21 76 36 117 36z"); + noteHead = new Path2D("M19.8 -12.4c5 0 9.8 2.6 9.8 8.2c0 6.5 -5 10.9 -9.3 13.4c-3.2 1.9 -6.8 3.2 -10.5 3.2c-5 0 -9.8 -2.6 -9.8 -8.2c0 -6.5 5 -10.9 9.3 -13.4c3.2 -1.9 6.8 -3.2 10.5 -3.2 z"); + sideIndicator1 = new Path2D("m 379.0355,823.51955 h -2.213 c -0.229,0 -0.436,-0.096 -0.587,-0.243 -0.162,-0.163 -0.243,-0.377 -0.243,-0.591 v -8.298 c 0,-0.229 0.092,-0.439 0.243,-0.586 0.162,-0.163 0.376,-0.244 0.587,-0.244 h 2.213 v -2.767 h -3.597 c -0.354,0 -0.708,0.136 -0.978,0.406 -0.251,0.251 -0.402,0.594 -0.402,0.977 v 12.726 c 0,0.356 0.133,0.709 0.402,0.98 0.251,0.251 0.598,0.406 0.978,0.406 h 3.597 v -2.766"); + sideIndicator2 = new Path2D("m 379.0085,813.83755 h -2.21 c -0.144,0 -0.285,0.054 -0.391,0.159 -0.1,0.105 -0.163,0.242 -0.159,0.395 0,0 0,8.281 -0.004,8.281 0,0.142 0.055,0.284 0.163,0.39 0.103,0.103 0.239,0.162 0.391,0.162 h 2.21 v -9.387"); + sharpSign = new Path2D("M216 -312c0 -10 -8 -19 -18 -19s-19 9 -19 19v145l-83 -31v-158c0 -10 -9 -19 -19 -19s-18 9 -18 19v145l-32 -12c-2 -1 -5 -1 -7 -1c-11 0 -20 9 -20 20v60c0 8 5 16 13 19l46 16v160l-32 -11c-2 -1 -5 -1 -7 -1c-11 0 -20 9 -20 20v60c0 8 5 15 13 18l46 17v158 c0 10 8 19 18 19s19 -9 19 -19v-145l83 31v158c0 10 9 19 19 19s18 -9 18 -19v-145l32 12c2 1 5 1 7 1c11 0 20 -9 20 -20v-60c0 -8 -5 -16 -13 -19l-46 -16v-160l32 11c2 1 5 1 7 1c11 0 20 -9 20 -20v-60c0 -8 -5 -15 -13 -18l-46 -17v-158zM96 65v-160l83 30v160z"); + flatSign = new Path2D("M27 41l-1 -66v-11c0 -22 1 -44 4 -66c45 38 93 80 93 139c0 33 -14 67 -43 67c-31 0 -52 -30 -53 -63zM-15 -138l-12 595c8 5 18 8 27 8s19 -3 27 -8l-7 -345c25 21 58 34 91 34c52 0 89 -48 89 -102c0 -80 -86 -117 -147 -169c-15 -13 -24 -38 -45 -38 c-13 0 -23 11 -23 25z"); + constructor() { + super(new OctaviaDevice()); + let upThis = this; + this.addEventListener("mode", function (ev) { + (upThis.sysBm.getBm(`st_${({"gm":"gm1","g2":"gm2","?":"gm1","ns5r":"korg","ag10":"korg","x5d":"korg","05rw":"korg","krs":"korg","sg":"gm1","k11":"gm1"})[ev.data] || ev.data}`) || []).forEach(function (e, i) { + upThis.#bmdb[i] = e; + }); + upThis.#bmst = 2; + upThis.#bmex = Date.now() + 1600; + }); + this.addEventListener("channelactive", (ev) => { + this.#ch = ev.data; + }); + }; + setCh(ch) { + this.#ch = ch; + }; + getCh() { + return this.#ch; + }; + reset() { + super.reset(); + if (this.demoInfo) { + delete this.demoInfo; + }; + }; + #render7seg(str, ctx, offsetX, offsetY, scaleX = 1, scaleY = 1, skew = -0.15) { + let path = [ + new Path2D(), + new Path2D("M36 160 L48 148 L144 148 L156 160 L144 172 L48 172 Z"), + new Path2D("M32 156 L20 144 L20 48 L32 36 L44 48 L44 144 Z"), + new Path2D("M32 284 L20 272 L20 176 L32 164 L44 176 L44 272 Z"), + new Path2D("M156 288 L144 300 L48 300 L36 288 L48 276 L144 276 Z"), + new Path2D("M160 164 L172 176 L172 272 L160 284 L148 272 L148 176 Z"), + new Path2D("M160 36 L172 48 L172 144 L160 156 L148 144 L148 48 Z"), + new Path2D("M36 32 L48 20 L144 20 L156 32 L144 44 L48 44 Z") + ]; + let sevenSegFont = { + 0: new Uint8Array([0, 0, 1, 1, 1, 1, 1, 1]), + 1: new Uint8Array([0, 0, 0, 0, 0, 1, 1, 0]), + 2: new Uint8Array([0, 1, 0, 1, 1, 0, 1, 1]), + 3: new Uint8Array([0, 1, 0, 0, 1, 1, 1, 1]), + 4: new Uint8Array([0, 1, 1, 0, 0, 1, 1, 0]), + 5: new Uint8Array([0, 1, 1, 0, 1, 1, 0, 1]), + 6: new Uint8Array([0, 1, 1, 1, 1, 1, 0, 1]), + 7: new Uint8Array([0, 0, 1, 0, 0, 1, 1, 1]), + 8: new Uint8Array([0, 1, 1, 1, 1, 1, 1, 1]), + 9: new Uint8Array([0, 1, 1, 0, 1, 1, 1, 1]), + " ": new Uint8Array(8), + A: new Uint8Array([0, 1, 1, 1, 0, 1, 1, 1]), + B: new Uint8Array([0, 1, 1, 1, 1, 1, 0, 0]), + C: new Uint8Array([0, 0, 1, 1, 1, 0, 0, 1]), + D: new Uint8Array([0, 1, 0, 1, 1, 1, 1, 0]), + "-": new Uint8Array([0, 1, 0, 0, 0, 0, 0, 0]) + }; + Array.from(str).forEach((e, i) => { + ctx.setTransform(scaleX, 0, skew * scaleY, scaleY, 190 * scaleX * i + offsetX, offsetY); + for (let i = 0; i < 8; i++) { + ctx.fillStyle = sevenSegFont[e][i] ? activePixel : inactivePixel; + ctx.fill(path[i]); + } + }); + ctx.resetTransform(); + }; + #renderDotMatrix(str, ctx, trueMode = false, offsetX, offsetY, scaleX = 8, scaleY = 8, skew = -0.15) { + let upThis = this; + let timeNow = Date.now(); + ctx.setTransform(1, 0, skew, 1, 0, 0); + // Determine the used font + let targetFont = trueMode ? upThis.trueFont : upThis.xgFont; + let rollX = 0; + if (str.length > 8) { + rollX = Math.floor(timeNow / 125) % (2 + str.length); + // rollX = 0; + str = `${str} ${str.slice(0, 8)}` + str = str.slice(rollX, rollX + 8); + }; + str = str.padEnd(8, " "); + targetFont.getStr(str).forEach((e, i) => { + e.render((e, x, y) => { + ctx.fillStyle = e ? activePixel : inactivePixel; + ctx.fillRect(offsetX + (x + 6 * i) * scaleX, offsetY + y * scaleY, scaleX - 1, scaleY - 1); + }); + }); + ctx.resetTransform(); + } + render(time, ctx, backlightColor = "#b7bfaf64", mixerView, tempoView, id = 0, trueMode = false) { + let sum = super.render(time); + let upThis = this; + let timeNow = Date.now(); + // Channel test + let alreadyMin = false; + let minCh = 0, maxCh = 0; + sum.chInUse.forEach(function (e, i) { + if (e) { + if (!alreadyMin) { + alreadyMin = true; + minCh = i; + }; + maxCh = i; + }; + }); + let part = minCh >> 4; + minCh = part << 4; + maxCh = ((maxCh >> 4) << 4) + 15; + if (this.#ch > maxCh) { + this.#ch = minCh + this.#ch & 15; + }; + if (this.#ch < minCh) { + this.#ch = maxCh - 15 + (this.#ch & 15); + }; + let chOff = this.#ch * ccToPos.length; + // Clear out the current working display buffer. + this.#nkdb.forEach((e, i, a) => {a[i] = 0}); + this.#nsdb.forEach((e, i, a) => {a[i] = 0}); + this.#nadb.forEach((e, i, a) => {a[i] = 0}); + // Fill with white + ctx.fillStyle = backlightColor; + ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); + // Show text + ctx.fillStyle = "#000c"; + ctx.textAlign = "left"; + ctx.font = '22px "Arial Web"'; + ctx.fillText("C4", 548, 399); + ctx.strokeStyle = "#000c"; + ctx.stroke(upThis.bracket); + ctx.stroke(upThis.staffLines); + ctx.fill(upThis.clefs); + ctx.stroke(upThis.keyboard); + // Beat indicator + if (sum.noteBeat & 1) { + ctx.fillStyle = activePixel; + ctx.setTransform(3.2, 0, 0, -3.2, 455, 2733); + ctx.fill(upThis.upbeatHand); + ctx.fillStyle = inactivePixel; + ctx.setTransform(3.2, 0, 0, -3.2, 455, 2855); + ctx.fill(upThis.downbeatHand); + } + else { + ctx.fillStyle = inactivePixel; + ctx.setTransform(3.2, 0, 0, -3.2, 455, 2733); + ctx.fill(upThis.upbeatHand); + ctx.fillStyle = activePixel; + ctx.setTransform(3.2, 0, 0, -3.2, 455, 2855); + ctx.fill(upThis.downbeatHand); + } + ctx.fillStyle = (sum.noteBeat < 1) ? activePixel : inactivePixel; + ctx.setTransform(3.2, 0, 0, -3.2, 455, 2855); + ctx.fill(upThis.downbeatStar); + ctx.resetTransform(); + // Keyboard display + // Reset the arrows + let arrowLeft = new Path2D("M199 349 L214 329 L214 369 Z"), + arrowRight = new Path2D("M1080 349 L1065 369 L1065 329 Z"), + arrowLeftFlag = false, + arrowRightFlag = false; + let note; + // Main range + for (let i = 36; i < 97; i++) { + let pixel = 0, + partInfo = sum.chKeyPr[this.#ch]; + if (partInfo?.has(i)) { + pixel = partInfo.get(i).s < 4 ? 2 : 1; + }; + this.#nkdb[i - 36] = pixel; + }; + // Lower octaves + for (let i = 0; i < 36; i++) { + if (sum.chKeyPr[this.#ch]?.has(i)) { + arrowLeftFlag = true; + note = i % 12; + let pixel = sum.chKeyPr[this.#ch]?.get(i).s < 4 ? 2 : 1; + this.#nkdb[note] = Math.max(this.#nkdb[note], pixel); + }; + }; + // Higher octaves + for (let i = 97; i < 128; i++) { + if (sum.chKeyPr[this.#ch]?.has(i)) { + arrowRightFlag = true; + note = (i - 1) % 12 + 1; + let pixel = sum.chKeyPr[this.#ch]?.get(i).s < 4 ? 2 : 1; + this.#nkdb[note + 48] = Math.max(this.#nkdb[note], pixel); + }; + }; + // Render the arrows + ctx.fillStyle = arrowLeftFlag ? activePixel : inactivePixel; + ctx.fill(arrowLeft); + ctx.fillStyle = arrowRightFlag ? activePixel : inactivePixel; + ctx.fill(arrowRight); + // Staff display + let noteHeadPos = new Uint8Array([0, 0, 1, 2, 2, 3, 3, 4, 5, 5, 6, 6, 7]); + let isBlackKey = new Uint8Array([0, 1, 0, 2, 0, 0, 1, 0, 2, 0, 2, 0]); + let nadbIndex = new Uint8Array([0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 2, 0]); + let bottomOctaveFlag1 = false, + bottomOctaveFlag2 = false, + topOctaveFlag1 = false, + topOctaveFlag2 = false; + // Main range + for (let i = 48; i < 85; i++) { + if (sum.chKeyPr[this.#ch]?.has(i)) { + let pixel = sum.chKeyPr[this.#ch]?.get(i).s < 4 ? 2 : 1; + this.#nsdb[(Math.floor(i / 12) - 4) * 7 + noteHeadPos[i % 12]] = pixel; + if (isBlackKey[i % 12]) { + if (isBlackKey[i % 12] == 1) { + this.#nadb[(Math.floor(i / 12) - 4) * 2 + nadbIndex[i % 12]] = 1; + } + else { + this.#nadb[(Math.floor(i / 12) - 4) * 3 + nadbIndex[i % 12] + 6] = 1; + } + } + } + } + // Lower octaves + for (let i = 0; i < 48; i++) { + if (sum.chKeyPr[this.#ch]?.has(i)) { + let pixel = sum.chKeyPr[this.#ch]?.get(i).s < 4 ? 2 : 1; + this.#nsdb[noteHeadPos[i % 12]] = Math.max(this.#nsdb[noteHeadPos[i % 12]], pixel); + if (Math.floor(i / 12) == 3) { + bottomOctaveFlag1 = true; + } + else { + bottomOctaveFlag2 = true; + } + if (isBlackKey[i % 12]) { + if (isBlackKey[i % 12] == 1) { + this.#nadb[nadbIndex[i % 12]] = 1; + } + else { + this.#nadb[nadbIndex[i % 12] + 6] = 1; + } + } + } + } + // Higher octaves + for (let i = 85; i < 128; i++) { + if (sum.chKeyPr[this.#ch]?.has(i)) { + let pixel = sum.chKeyPr[this.#ch]?.get(i).s < 4 ? 2 : 1; + this.#nsdb[14 + noteHeadPos[(i - 1) % 12 + 1]] = Math.max(this.#nsdb[14 + noteHeadPos[(i - 1) % 12 + 1]], pixel); + if (Math.floor((i - 1) / 12) == 7) { + topOctaveFlag1 = true; + } + else { + topOctaveFlag2 = true; + } + if (isBlackKey[i % 12]) { + if (isBlackKey[i % 12] == 1) { + this.#nadb[4 + nadbIndex[i % 12]] = 1; + } + else { + this.#nadb[12 + nadbIndex[i % 12]] = 1; + } + } + } + } + // Octave marks + ctx.font = '24px "Arial Web"'; + ctx.fillStyle = bottomOctaveFlag1 ? activePixel : inactivePixel; + ctx.fillText("8va", 280, 208); + ctx.fillStyle = topOctaveFlag1 ? activePixel : inactivePixel; + ctx.fillText("8va", 876, 70); + ctx.fillStyle = bottomOctaveFlag2 ? activePixel : inactivePixel; + ctx.fillText("15va+", 253, 244); + ctx.fillStyle = topOctaveFlag2 ? activePixel : inactivePixel; + ctx.fillText("15va+", 874, 40); + // Temporary channel number display + this.#render7seg(`${"ABCDEFGH"[this.#ch >> 4]}${((this.#ch & 15) + 1).toString().padStart(2, "0")}`, ctx, 32, 315, 0.24, 0.24); + // Measure / tempo view + ctx.font = '23px "Arial Web"'; + ctx.fillStyle = tempoView ? inactivePixel : activePixel; + ctx.fillText("MEASURE", 664, 296); + ctx.fillStyle = tempoView ? activePixel : inactivePixel; + ctx.fillText("TEMPO", 795, 242); + if (tempoView) { + this.#render7seg(Math.round(sum.tempo).toString().padStart(3, "0"), ctx, 791, 245, 0.17, 0.17); + } + else { + this.#render7seg((sum.noteBar + 1).toString().padStart(3, "0"), ctx, 791, 245, 0.17, 0.17); + } + if (timeNow <= sum.letter.expire) { + let letterDisp = sum.letter.text.trim(); + this.#renderDotMatrix(letterDisp, ctx, trueMode, 454, 32); + if (mixerView) { + this.#render7seg(`${sum.chProgr[this.#ch] + 1}`.padStart(3, "0"), ctx, 112, 15, 0.24, 0.24); + } + else { + this.#render7seg(`${id + 1}`.padStart(3, "0"), ctx, 112, 15, 0.24, 0.24); + } + } + else { + if (mixerView) { + this.#render7seg(`${sum.chProgr[this.#ch] + 1}`.padStart(3, "0"), ctx, 112, 15, 0.24, 0.24); + this.#renderDotMatrix(upThis.getChVoice(this.#ch).name, ctx, trueMode, 454, 32); + } + else { + this.#render7seg(`${id + 1}`.padStart(3, "0"), ctx, 112, 15, 0.24, 0.24); + let sngTtl = upThis.songTitle; + while (sngTtl.indexOf(" ") > -1) { + sngTtl = sngTtl.replaceAll(" ", " "); + }; + this.#renderDotMatrix(sngTtl || "Unknown", ctx, trueMode, 454, 32); + } + } + // Side indicator + ctx.fillStyle = activePixel; + ctx.setTransform(4.5, 0, 0, 4.5, -605, -3642); + ctx.fill(upThis.sideIndicator1); + ctx.fillStyle = mixerView ? inactivePixel : activePixel; + ctx.fill(upThis.sideIndicator2); + ctx.setTransform(4.5, 0, 0, 4.5, -605, -3484); + ctx.fillStyle = mixerView ? activePixel : inactivePixel; + ctx.fill(upThis.sideIndicator2); + ctx.resetTransform(); + // Fetch voice bitmap + // Commit to bitmap screen + let useBm; + if (timeNow <= sum.bitmap.expire) { + // Use provided bitmap + useBm = sum.bitmap.bitmap; + } else if (this.demoInfo && time > 0) { + let sequence = this.demoInfo.class || "boot"; + let stepTime = this.demoInfo.fps || 2; + let stepSize = this.demoInfo.size || 4; + let stepId = `${sequence}_${Math.floor(time * stepTime % stepSize)}`; + useBm = this.aniBm?.getBm(stepId) || this.sysBm?.getBm(stepId) || this.sysBm?.getBm("no_abm"); + if (!useBm) { + useBm = this.#bmdb.slice(); + }; + } else { + // Use stored pic + useBm = this.#bmdb.slice(); + if (timeNow >= this.#bmex) { + this.#bmst = 0; + let standard = upThis.getChVoice(this.#ch).standard.toLowerCase(); + useBm = this.voxBm.getBm(upThis.getChVoice(this.#ch).name) || this.voxBm.getBm(upThis.getVoice(sum.chContr[chOff] + ccToPos[0], sum.chProgr[this.#ch], 0, sum.mode).name); + if (["an", "ap", "dr", "dx", "pc", "pf", "sg", "vl"].indexOf(standard) > -1) { + useBm = this.sysBm.getBm(`ext_${standard}`); + }; + if (!useBm && (sum.chContr[chOff + ccToPos[0]] < 48 || sum.chContr[chOff + ccToPos[0]] == 56)) { + useBm = this.voxBm.getBm(upThis.getVoice(0, sum.chProgr[this.#ch], 0, sum.mode).name) + }; + if (!useBm && (sum.chContr[chOff] + ccToPos[0]) == 126) { + useBm = this.sysBm.getBm("cat_smpl"); + }; + if (!useBm && (sum.chContr[chOff] + ccToPos[0]) == 64) { + useBm = this.sysBm.getBm("cat_sfx"); + }; + if (!useBm) { + useBm = this.sysBm.getBm("no_abm"); + }; + } else { + if (this.#bmst == 2) { + useBm.forEach((e, i, a) => { + let crit = Math.floor((this.#bmex - timeNow) / 400); + a[i] = crit % 2 == e; + }); + }; + }; + } + if (useBm) { + useBm.width = useBm.length / 16; + }; + useBm?.render((e, x, y) => { + ctx.fillStyle = e ? activePixel : inactivePixel; + ctx.fillRect(224 + x * 6, 261 + y * 3, 5, 2); + }); + ctx.fillStyle = inactivePixel; + ctx.font = '18px "Arial Web"'; + ctx.fillText("ACMP", 430, 275); + ctx.fillText("ON", 430, 295); + ctx.fill(new Path2D("M482 296 L482 312 L462 304 Z")); + // Commit to display accordingly. + let keyboardData = new Uint16Array([228, 238.5, 250.3, 263.5, 272.6, 295, 304.5, 317.3, 330, 339.5, 354, 361.8]); + this.#nkdb.forEach((e, i) => { + ctx.fillStyle = [inactivePixel, mediumPixel, activePixel][e]; + let octave = Math.floor(i / 12), note = i % 12; + if (i != 60) { + isBlackKey[note] ? ctx.fillRect(keyboardData[note] + 163 * octave, 321, 12, 26) : ctx.fillRect(keyboardData[note] + 163 * octave, 355, 14, 21); + } + else { + ctx.fillRect(1036, 355, 14, 21); + } + }); + this.#nsdb.forEach((e, i) => { + if (i < 7) { + ctx.setTransform(1, 0, 0, 1, 100 + 36 * i, 200 - 18 * i); + } + else { + ctx.setTransform(1, 0, 0, 1, 538 + 36 * (i - 7), 290 - 18 * (i - 7)); + } + ctx.fillStyle = [inactivePixel, mediumPixel, activePixel][e]; + ctx.fill(upThis.noteHead); + ctx.resetTransform(); + }); + // Accidentals + let sharpPosX = new Uint16Array([82, 158, 488, 596, 740, 848]); + let sharpPosY = new Uint16Array([200, 146, 290, 236, 164, 110]); + let flatPosX = new Uint16Array([130, 230, 306, 560, 668, 704, 812, 920, 956]); + let flatPosY = new Uint16Array([164, 110, 92, 254, 200, 182, 128, 74, 56]); + this.#nadb.forEach((e, i) => { + if (i < 6) { + ctx.setTransform(0.03, 0, 0, -0.03, sharpPosX[i], sharpPosY[i]); + ctx.fillStyle = [inactivePixel, activePixel][e]; + ctx.fill(upThis.sharpSign); + ctx.resetTransform(); + } + else { + ctx.setTransform(0.03, 0, 0, -0.03, flatPosX[i - 6], flatPosY[i - 6]); + ctx.fillStyle = [inactivePixel, activePixel][e]; + ctx.fill(upThis.flatSign); + ctx.resetTransform(); + } + }); + // Commit to old display buffer. + /* + this.#nkdb.forEach((e, i) => { + if (this.#okdb[i] != e) { + this.#okdb[i] = e; + }; + }); + this.#nsdb.forEach((e, i) => { + if (this.#osdb[i] != e) { + this.#osdb[i] = e; + }; + }); + */ + } +}; + +export default PsrDisplay; diff --git a/src/disp/disp_qy.mjs b/src/disp/disp_qy.mjs new file mode 100644 index 00000000..8c26e8c7 --- /dev/null +++ b/src/disp/disp_qy.mjs @@ -0,0 +1,517 @@ +"use strict"; + +import {OctaviaDevice} from "../state/index.mjs"; +import {RootDisplay, ccToPos} from "../basic/index.mjs"; +import {MxFont40, MxBm256, MxBmDef} from "../basic/mxReader.js"; + +import { + bgWhite, + lcdCache +} from "./colour.js"; + +let QyDisplay = class extends RootDisplay { + #omdb = new Uint8Array(8192); // Full display + #nmdb = new Uint8Array(8192); // Full display, but on commit + #mode = "?"; + #ch = 0; + #refreshed = true; + #backlight = bgWhite; + #bmst = 0; + #bmex = 0; + #bmdb = new Uint8Array(256); + songTitle = ""; + xgFont = new MxFont40("./data/bitmaps/xg/font.tsv"); + sqrFont = new MxFont40("./data/bitmaps/xg/qySqr.tsv"); + qy35Font = new MxFont40("./data/bitmaps/xg/qyCh35.tsv"); + qy55Font = new MxFont40("./data/bitmaps/xg/qyCh55.tsv"); + qyRsrc = new MxBmDef("./data/bitmaps/xg/qyRsrc.tsv"); + sysBm = new MxBm256("./data/bitmaps/xg/system.tsv"); + voxBm = new MxBm256("./data/bitmaps/xg/voices.tsv"); + constructor() { + super(new OctaviaDevice(), 0, 0.95); + let upThis = this; + this.addEventListener("mode", function (ev) { + (upThis.sysBm.getBm(`st_${({"gm":"gm1","g2":"gm2","?":"gm1","ns5r":"korg","ag10":"korg","x5d":"korg","05rw":"korg","krs":"korg","sg":"gm1","k11":"gm1"})[ev.data] || ev.data}`) || []).forEach(function (e, i) { + upThis.#bmdb[i] = e; + }); + upThis.#bmst = 2; + upThis.#bmex = Date.now() + 1600; + }); + }; + setCh(ch) { + this.#ch = ch; + }; + getCh() { + return this.#ch; + }; + #renderBox(sx, sy, width, height) { + let length = width * height; + let offset = sx + sy * 128; + for (let i = 0; i < length; i ++) { + let x = i % width, y = Math.floor(i / width); + if ( + x == 0 && y < height - 1 || + y == 0 && x < width - 1 || + x == width - 1 && y > 0 || + y == height - 1 && x > 0 || + x == width - 2 + ) { + this.#nmdb[offset + x + y * 128] = 1; + }; + }; + }; + #renderFill(sx, sy, width, height, target = 1) { + let length = width * height; + let offset = sx + sy * 128; + for (let i = 0; i < length; i ++) { + let x = i % width, y = Math.floor(i / width); + this.#nmdb[offset + x + y * 128] = target; + }; + }; + #renderMosaic(sx, sy, width, height, start = 1) { + let curBit = !start; + let offset = sx + sy * 128, + length = width * height; + for (let i = 0; i < length; i ++) { + let x = i % width, y = Math.floor(i / width); + if (x == 0 && y > 0 && width % 2 == 0) {} else { + curBit = !curBit; + }; + this.#nmdb[offset + x + y * 128] = +curBit; + }; + }; + #getCat(channel, msb, prg) { + let voiceInfo = this.getChVoice(channel); + let category; + if (["GM", "AG", "XG", "GS", "G2"].indexOf(voiceInfo.standard) > -1) { + switch(msb) { + case 64: { + category = "sfx"; + break; + }; + case 120: + case 122: + case 126: + case 127: { + category = "dr"; + break; + }; + default: { + category = (prg >> 3).toString(16); + }; + }; + } else { + category = voiceInfo.standard; + category = `${category[0]}${category[1].toLowerCase()}`; + }; + return category; + }; + render(time, ctx, mixerView, id = 0) { + let sum = super.render(time); + let upThis = this; + let timeNow = Date.now(); + // Channel test + let alreadyMin = false; + let minCh = 0, maxCh = 0; + sum.chInUse.forEach(function (e, i) { + if (e) { + if (!alreadyMin) { + alreadyMin = true; + minCh = i; + }; + maxCh = i; + }; + }); + let part = minCh >> 4; + minCh = part << 4; + maxCh = ((maxCh >> 4) << 4) + 15; + if (this.#ch > maxCh) { + this.#ch = minCh + this.#ch & 15; + }; + if (this.#ch < minCh) { + this.#ch = maxCh - 15 + (this.#ch & 15); + }; + let chOff = this.#ch * ccToPos.length; + // Clear out the current working display buffer. + this.#nmdb.forEach((e, i, a) => {a[i] = 0}); + // Start rendering + if (mixerView) { + // Mixer view + // Render the upperleft + upThis.qyRsrc.getBm("MixPill")?.render((e, x, y) => { + if (e) { + upThis.#nmdb[x + y * 128] = 1; + }; + }); + upThis.qyRsrc.getBm("MixIcon")?.render((e, x, y) => { + if (e) { + upThis.#nmdb[10 + x + y * 128] = 1; + }; + }); + // Info labels + upThis.qyRsrc.getBm("MsVoice")?.render((e, x, y) => { + upThis.#nmdb[2176 + x + y * 128] = e; + }); + upThis.qyRsrc.getBm("ElPan")?.render((e, x, y) => { + upThis.#nmdb[4096 + x + y * 128] = e; + }); + upThis.qyRsrc.getBm("ElVol")?.render((e, x, y) => { + upThis.#nmdb[4864 + x + y * 128] = e; + }); + upThis.qyRsrc.getBm("ElMsPa")?.render((e, x, y) => { + upThis.#nmdb[5634 + x + y * 128] = e; + }); + // Global mosaic + upThis.#renderMosaic(0, 50, 5, 14, 1); + upThis.#renderFill(5, 50, 1, 14); + upThis.#renderMosaic(7, 50, 10, 14, 0); + upThis.#renderFill(10, 52, 1, 10); + upThis.#renderFill(11, 52, 1, 10, 0); + upThis.#renderFill(17, 50, 1, 14); + upThis.#renderMosaic(19, 50, 10, 14, 0); + upThis.#renderFill(22, 52, 1, 10); + upThis.#renderFill(23, 52, 1, 10, 0); + let masterVol = 9 - Math.floor(sum.master.volume / 10.1); + upThis.qyRsrc.getBm("VolSlid")?.render((e, x, y) => { + upThis.#nmdb[7 + x + (50 + masterVol + y) * 128] = e; + }); + upThis.#renderFill(8, 53 + masterVol, 8, 1); + upThis.qyRsrc.getBm("VolSlid")?.render((e, x, y) => { + upThis.#nmdb[6419 + x + y * 128] = e; + }); + upThis.#renderFill(20, 53, 8, 1); + upThis.#renderFill(29, 24, 1, 40); + // Bank info + let voiceInfo = upThis.getChVoice(this.#ch); + upThis.xgFont.getStr(`${(sum.chProgr[this.#ch] + 1).toString().padStart(3, "0")}${"+ "[+((["GM", "MT", "AG"].indexOf(voiceInfo.standard) > -1) || sum.chContr[chOff] >= 120)]}${voiceInfo.name.slice(0, 8)}`).forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[55 + x + i * 6 + y * 128] = e; + }); + }); + let curCat = upThis.#getCat(this.#ch, sum.chContr[this.#ch * ccToPos.length], sum.chProgr[this.#ch]), + curCatBm = upThis.qyRsrc.getBm(`Vox_${curCat}`); + if (curCatBm) { + curCatBm.render((e, x, y) => { + upThis.#nmdb[37 + x + y * 128] = e; + }); + } else { + upThis.xgFont.getStr(curCat).forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[37 + x + i * 6 + y * 128] = e; + }); + }); + }; + } else { + // Normal view + // Render the pill + upThis.qyRsrc.getBm("NorPill")?.render((e, x, y) => { + if (e) { + upThis.#nmdb[x + y * 128] = 1; + }; + }); + // Carve out the text on that pill + upThis.xgFont.getStr("SONG").forEach((e, i) => { + e.render((e, x, y) => { + if (e) { + upThis.#nmdb[5 + x + i * 6 + y * 128] = 0; + }; + }); + }); + // Prepare info boxes + // Song info box + upThis.#renderBox(34, 6, 65, 11); + upThis.#renderFill(35, 7, 13, 9); + upThis.#renderBox(100, 6, 28, 11); // Bar box + if (sum.letter.expire < timeNow) { + upThis.xgFont.getStr(`${id + 1}`.padStart(2, "0")).forEach((e, i) => { + e.render((e, x, y) => { + if (e) { + upThis.#nmdb[1060 + x + i * 6 + y * 128] = 0; + }; + }); + }); + if (upThis.songTitle.length < 9) { + upThis.xgFont.getStr(upThis.songTitle || "Unknown").forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[1073 + x + i * 6 + y * 128] = e; + }); + }); + } else { + let sngTtl = upThis.songTitle; + while (sngTtl.indexOf(" ") > -1) { + sngTtl = sngTtl.replaceAll(" ", " "); + }; + let rollX = Math.floor(time * 25) % (6 * (10 + sngTtl.length)) - 47; + upThis.xgFont.getStr(`${sngTtl} ${sngTtl.slice(0, 8)}`).forEach((e, i) => { + e.render((e, x, y) => { + let area = x + i * 6; + let tX = rollX; + if (rollX < 0) { + tX = rollX >= -48 ? 0 : rollX + 48; + }; + if (area >= tX && area < tX + 47) { + upThis.#nmdb[1073 - tX + area + y * 128] = e; + }; + }); + }); + }; + // Bar info box + { + let blinker = sum.noteBeat % 1; + upThis.sqrFont.getStr(`${"$%"[+(blinker > 0 && blinker <= 0.25)]}${(sum.noteBar + 1).toString().padStart(3, "0")}`).forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[1126 + x + i * 6 + y * 128] = e; + }); + }); + }; + }; + // Tempo render + upThis.sqrFont.getStr(`&=${Math.round(sum.tempo).toString().padStart(3, "0")}`).forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[2048 + x + i * 6 + y * 128] = e; + }); + }); + // tSig render + upThis.xgFont.getStr(`${sum.tSig[0].toString().padStart(2, " ")}/${sum.tSig[1].toString().padEnd(2, " ")}`).forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[3072 + x + i * 6 + y * 128] = e; + }); + }); + // Placeholder + upThis.qyRsrc.getBm("Vtfj")?.render((e, x, y) => { + upThis.#nmdb[2338 + x + y * 128] = e; + }); + // Transpose render + { + let tPit = upThis.device.getPitchShift(upThis.#ch); + let tStr = tPit < 0 ? "-" : "+"; + tStr += `${Math.round(Math.abs(tPit))}`.padStart(2, "0"); + upThis.xgFont.getStr(tStr).forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[3127 + x + i * 6 + y * 128] = e; + }); + }); + }; + // Jump render + upThis.xgFont.getStr("001").forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[3181 + x + i * 6 + y * 128] = e; + }); + }); + // Split line + upThis.#renderFill(71, 48, 1, 16); + upThis.qyRsrc.getBm("Mod_Usr")?.render((e, x, y) => { + upThis.#nmdb[6253 + x + y * 128] = e; + }); + // Bank info + { + let voiceName = upThis.getChVoice(this.#ch); + upThis.xgFont.getStr(`${sum.chContr[chOff + ccToPos[0]].toString().padStart(3, "0")} ${sum.chProgr[this.#ch].toString().padStart(3, "0")} ${sum.chContr[chOff + ccToPos[32]].toString().padStart(3, "0")}`).forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[6145 + 6 * i + x + y * 128] = e; + }); + });; + upThis.xgFont.getStr(`${voiceName.standard}:${voiceName.name.slice(0, 8)}`).forEach((e, i) => { + e.render((e, x, y) => { + upThis.#nmdb[7169 + 6 * i + x + y * 128] = e; + }); + }); + }; + // Fetch voice bitmap + // Commit to bitmap screen + let useBm; + if (timeNow <= sum.bitmap.expire) { + // Use provided bitmap + useBm = sum.bitmap.bitmap; + } else { + // Use stored pic + useBm = this.#bmdb.slice(); + if (timeNow >= this.#bmex) { + this.#bmst = 0; + let standard = upThis.getChVoice(this.#ch).standard.toLowerCase(); + useBm = this.voxBm.getBm(upThis.getChVoice(this.#ch).name) || this.voxBm.getBm(upThis.getVoice(sum.chContr[chOff] + ccToPos[0], sum.chProgr[this.#ch], 0, sum.mode).name); + if (["an", "ap", "dr", "dx", "pc", "pf", "sg", "vl"].indexOf(standard) > -1) { + useBm = this.sysBm.getBm(`ext_${standard}`); + }; + if (!useBm && (sum.chContr[chOff + ccToPos[0]] < 48 || sum.chContr[chOff + ccToPos[0]] == 56)) { + useBm = this.voxBm.getBm(upThis.getVoice(0, sum.chProgr[this.#ch], 0, sum.mode).name) + }; + if (!useBm && (sum.chContr[chOff] + ccToPos[0]) == 126) { + useBm = this.sysBm.getBm("cat_smpl"); + }; + if (!useBm && (sum.chContr[chOff] + ccToPos[0]) == 64) { + useBm = this.sysBm.getBm("cat_sfx"); + }; + if (!useBm) { + useBm = this.sysBm.getBm("no_abm"); + }; + } else { + if (this.#bmst == 2) { + useBm.forEach((e, i, a) => { + let crit = Math.floor((this.#bmex - timeNow) / 400); + a[i] = crit % 2 == e; + }); + }; + }; + }; + if (useBm) { + useBm.width = useBm.length / 16; + }; + useBm?.render((e, x, y) => { + if (useBm.width < 32) { + upThis.#nmdb[6217 + 2 * x + y * 128] = e; + upThis.#nmdb[6218 + 2 * x + y * 128] = e; + } else { + upThis.#nmdb[6217 + x + y * 128] = e; + }; + }); + }; + { + // Channel tabs + let curSeg = this.#ch >> 3; + let preCal = mixerView ? 1310 : 4254, + preCalY = mixerView ? 10 : 33; + // Channel info box + if (mixerView) { + upThis.#renderFill(28, preCalY - 1, 99, 15); + upThis.#renderFill(29, preCalY, 97, 13, 0); + } else { + upThis.#renderBox(0, preCalY - 1, 128, 15); + }; + // Arrows + if (curSeg < (maxCh >> 3)) { + upThis.qyRsrc.getBm(`ArrowR${+mixerView + 1}`)?.render((e, x, y) => { + upThis.#nmdb[preCal + 735 + x + y * 128] = e; + }); + }; + if (curSeg > (minCh >> 3)) { + upThis.qyRsrc.getBm(`ArrowL${+mixerView + 1}`)?.render((e, x, y) => { + upThis.#nmdb[preCal + 610 + (+mixerView * 27) + x + y * 128] = e; + }); + }; + if (!mixerView) { + // PtCdTm + upThis.qyRsrc.getBm("PtCdTm")?.render((e, x, y) => { + upThis.#nmdb[4227 + x + y * 128] = e; + }); + // The tempo pill + if (sum.tempo != 120) { + upThis.qyRsrc.getBm("ActPill")?.render((e, x, y) => { + upThis.#nmdb[5141 + x + y * 128] = e; + }); + }; + }; + for (let tch = 0; tch < 8; tch ++) { // target channel + let rch = curSeg * 8 + tch, + textTarget = 1; + upThis.qyRsrc.getBm("CTabOff")?.render((e, x, y) => { + upThis.#nmdb[preCal + 12 * tch + x + y * 128] = e; + }); + let cVelo = Math.floor(sum.strength[rch] / 51); + upThis.#renderFill(31 + 12 * tch, preCalY + 11 - cVelo, 9, cVelo + 1); + if (this.#ch == rch) { + textTarget = 0; + upThis.#renderFill(31 + 12 * tch, preCalY, 9, 5); + if (mixerView) { + upThis.#renderFill(30 + 12 * tch, preCalY + 14, 13, 8); + }; + }; + if (rch < 19) { + upThis.qy55Font.getStr(String.fromCharCode(48 + rch))[0].render((e, x, y) => { + if (e) { + upThis.#nmdb[preCal + 3 + 12 * tch + x + y * 128] = textTarget; + }; + }); + } else { + upThis.qy35Font.getStr((rch + 1).toString()).forEach((e, i) => { + e.render((e, x, y) => { + if (e) { + upThis.#nmdb[preCal + 2 + 4 * i + 12 * tch + x + y * 128] = textTarget; + }; + }); + }); + }; + if (mixerView) { + upThis.#renderMosaic(31 + tch * 12, 32, 10, 32, 0); + upThis.#renderFill(41 + tch * 12, 32, 1, 32); + upThis.#renderFill(34 + tch * 12, 43, 1, 18); + upThis.#renderFill(35 + tch * 12, 45, 1, 16, 0); + upThis.#renderFill(31 + tch * 12, 63, 10, 1); + upThis.qyRsrc.getBm("PanIcon")?.render((e, x, y) => { + upThis.#nmdb[4255 + tch * 12 + x + y * 128] = e; + }); + let volSlid = 15 - (sum.chContr[rch * ccToPos.length + ccToPos[7]] >> 3); + upThis.qyRsrc.getBm("VolSlid")?.render((e, x, y) => { + upThis.#nmdb[5535 + tch * 12 + x + (volSlid + y) * 128] = e; + }); + upThis.#renderFill(32 + tch * 12, 46 + volSlid, 8, 1); + // Category render + let curCat = upThis.#getCat(rch, sum.chContr[rch * ccToPos.length], sum.chProgr[rch]), + curCatBm = upThis.qyRsrc.getBm(`Vox_${curCat}`); + if (curCatBm) { + curCatBm.render((e, x, y) => { + if (e) { + upThis.#nmdb[3103 + tch * 12 + x + y * 128] = textTarget; + }; + }); + } else { + upThis.xgFont.getStr(curCat).forEach((e, i) => { + e.render((e, x, y) => { + if (e) { + upThis.#nmdb[3103 + tch * 12 + x + i * 6 + y * 128] = textTarget; + }; + }); + }); + }; + }; + }; + }; + if (timeNow <= sum.letter.expire) { + //upThis.#renderFill(12, 9, 109, 31); + upThis.qyRsrc.getBm("TxtDisp")?.render((e, x, y) => { + upThis.#nmdb[(mixerView ? 655 : 1036) + x + y * 128] = e; + }); + upThis.xgFont.getStr(sum.letter.text).forEach((e, i) => { + let ri = (i % 16) * 6, ry = i >> 4; + e.render((e, x, y) => { + upThis.#nmdb[(mixerView ? 1686 : 2067) + ri + x + (y + ry * 8) * 128] = e; + }); + }); + }; + // Screen buffer write finish. + // Determine if full render is required. + let drawPixMode = false; + if (this.#refreshed) { + // Full render required. + // Clear all pixels. + ctx.fillStyle = this.#backlight.replace("64", ""); + ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); + drawPixMode = true; + this.#refreshed = false; + }; + // Commit to display accordingly. + this.#nmdb.forEach((e, i) => { + let pixX = i % 128, pixY = Math.floor(i / 128); + let hasDifference = this.#omdb[i] != e; + if (!drawPixMode && hasDifference) { + ctx.fillStyle = this.#backlight.slice(0, 7); + ctx.fillRect(6 * pixX + 7, 7 + 8 * pixY, 6, 8); + }; + if (drawPixMode || hasDifference) { + ctx.fillStyle = lcdCache.black[e + 3]; + if (drawPixMode) { + ctx.fillStyle = ctx.fillStyle.slice(0, 7); + }; + ctx.fillRect(6 * pixX + 7, 7 + 8 * pixY, 5.5, 7.5); + }; + }); + // Commit to old display buffer. + this.#nmdb.forEach((e, i) => { + if (this.#omdb[i] != e) { + this.#omdb[i] = e; + }; + }); + }; +}; + +export default QyDisplay; diff --git a/src/disp/disp_sc.mjs b/src/disp/disp_sc.mjs new file mode 100644 index 00000000..ee80cc9e --- /dev/null +++ b/src/disp/disp_sc.mjs @@ -0,0 +1,327 @@ +"use strict"; + +import {OctaviaDevice} from "../state/index.mjs"; +import {RootDisplay, ccToPos} from "../basic/index.mjs"; +import {MxFont40} from "../basic/mxReader.js"; + +import { + bgOrange, + inactivePixel, + activePixel +} from "./colour.js"; + +let cmpWidth = 7, +mspWidth = 6, +cmpHeightX = 31, +cmpHeightY = 12, +mspHeightX = 29, +mspHeightY = 10, +pdsX = cmpWidth * (17 + 2), +pdsY = cmpWidth * (7 + 3) + 1; +let ScDisplay = class extends RootDisplay { + #tmdb = new Uint8Array(665); // Text display + #pmdb = new Uint8Array(735); // Param display + #bmdb = new Uint8Array(256); // Bitmap display + #linger = new Uint8Array(64); + #ch = 0; + xgFont = new MxFont40("./data/bitmaps/korg/font.tsv", "./data/bitmaps/xg/font.tsv"); + constructor() { + super(new OctaviaDevice(), 0, 0.875); + }; + setCh(ch) { + this.#ch = ch; + }; + getCh() { + return this.#ch; + }; + render(time, ctx) { + let sum = super.render(time); + let upThis = this; + let timeNow = Date.now(); + // Fill with orange + //ctx.fillStyle = "#af2"; + ctx.fillStyle = bgOrange; + ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); + // Universal offset + let pdaX = 22, + pdaY = 24; + // Channel test + let alreadyMin = false; + let minCh = 0, maxCh = 0; + sum.chInUse.forEach(function (e, i) { + if (e) { + if (!alreadyMin) { + alreadyMin = true; + minCh = i; + }; + maxCh = i; + }; + }); + let part = minCh >> 4; + minCh = part << 4; + maxCh = ((maxCh >> 4) << 4) + 15; + if (this.#ch > maxCh) { + this.#ch = minCh + this.#ch & 15; + }; + if (this.#ch < minCh) { + this.#ch = maxCh - 15 + (this.#ch & 15); + }; + let chOff = this.#ch * ccToPos.length; + // Text matrix display + this.#tmdb.forEach((e, i, a) => {a[i] = 0}); + let infoTxt, isTextNull = sum.letter.text.trim(); + while (isTextNull.indexOf(" ") > -1) { + isTextNull = isTextNull.replaceAll(" ", " "); + }; + if (timeNow <= sum.letter.expire) { + infoTxt = isTextNull; + let original = sum.letter.text, + leftTrim = original.length - original.trimLeft().length, + rightTrim = original.length - original.trimRight().length; + if (original.length > infoTxt.length && infoTxt.length < 16) { + if (leftTrim > 0) { + while(infoTxt.length < 15) { + infoTxt = ` ${infoTxt} `; + }; + if (infoTxt.length < 16) { + if (leftTrim < rightTrim) { + infoTxt = ` ${infoTxt}`; + } else { + infoTxt = `${infoTxt} `; + }; + }; + }; + }; + let xShift = 0; + if (infoTxt.length > 16) { + xShift = Math.floor((sum.letter.expire - timeNow) / 33) - 96; + let maxShift = (infoTxt.length - 16) * -6; + if (xShift < maxShift) { + xShift = maxShift; + } else if (xShift > 0) { + xShift = 0; + }; + }; + this.xgFont.getStr(infoTxt).forEach(function (e0, i0) { + e0.forEach(function (e1, i1) { + let pX = i0 * 6 + i1 % 5 + xShift, + pY = Math.floor(i1 / 5); + if (pX >= 0 && pX < 95) { + upThis.#tmdb[pY * 95 + pX] = e1; + }; + }); + }); + } else { + infoTxt = `${sum.chProgr[this.#ch] + 1}`.padStart(3, "0"); + infoTxt += " "; + infoTxt += (upThis.getChVoice(this.#ch).name).slice(0, 12).padEnd(12, " "); + this.xgFont.getStr(infoTxt).forEach(function (e0, i0) { + e0.forEach(function (e1, i1) { + let pX = i0 * 6 + i1 % 5, + pY = Math.floor(i1 / 5); + upThis.#tmdb[pY * 95 + pX] = e1; + }); + }); + }; + // Commit to text matrix display + this.#tmdb.forEach(function (e, i) { + ctx.fillStyle = inactivePixel; + if (e) { + ctx.fillStyle = activePixel; + }; + let pixelX = i % 95, + pixelY = Math.floor(i / 95); + ctx.fillRect( + pdaX + 133 + pixelX * cmpWidth, + pdaY + pixelY * cmpWidth, + mspWidth, + mspWidth + ); + }); + // Param display + this.#pmdb.forEach((e, i, a) => {a[i] = 0}); + // Assemble text + let paramText = ""; + paramText += `${"ABCDEFGH"[this.#ch >> 4]}${(this.#ch % 16 + 1).toString().padStart(2, "0")}`; + paramText += sum.chContr[chOff + ccToPos[7]].toString().padStart(3, " "); + paramText += sum.chContr[chOff + ccToPos[91]].toString().padStart(3, " "); + let cPit = this.device.getPitchShift(this.#ch); + if (cPit < 0) { + paramText += "-"; + } else { + paramText += "+"; + }; + paramText += Math.round(cPit < 0 ? Math.abs(cPit) : cPit).toString().padStart(2, "0"); + let cPan = sum.chContr[chOff + ccToPos[10]]; + if (cPan == 64) { + paramText += "C "; + } else if (cPan == 128) { + paramText += "RND"; + } else { + if (cPan > 64) { + paramText += "R"; + } else { + paramText += "L"; + }; + paramText += Math.abs(cPan - 64).toString().padStart(2, " "); + }; + paramText += sum.chContr[chOff + ccToPos[93]].toString().padStart(3, " "); + paramText += (sum.chContr[chOff + ccToPos[0]] || sum.chContr[chOff + ccToPos[32]]).toString().padStart(3, "0"); + // Render fonts + this.xgFont.getStr(paramText).forEach(function (e0, i0) { + e0.forEach(function (e1, i1) { + let pX = Math.floor(i0 / 3) * 90 + i0 * 5 + i1 % 5, + pY = Math.floor(i1 / 5); + if (pY < 7) { + upThis.#pmdb[pY * 15 + pX] = e1; + }; + }); + }); + // Commit to param display + this.#pmdb.forEach(function (e, i) { + ctx.fillStyle = inactivePixel; + if (e) { + ctx.fillStyle = activePixel; + }; + let regionX = i > 419 ? 1 : 0, + regionY = 0, + pixelX = i % 15 + Math.floor(i % 15 / 5), + pixelY = Math.floor((i % 105) / 15); + if (!regionX) { + regionY = Math.floor(i / 105); + } else { + regionY = Math.floor((i - 315) / 105); + }; + ctx.fillRect( + pdaX + pdsX * regionX + pixelX * cmpWidth, + pdaY + pdsY * regionY + pixelY * cmpWidth, + mspWidth, + mspWidth + ); + }); + // Bitmap display + this.#bmdb.forEach((e, i, a) => {a[i] = 0}); + let rendMode = Math.ceil(Math.log2(maxCh - minCh + 1) - 4), + rendPos = 0; + // Strength calculation + sum.velo.forEach(function (e, i) { + if (e >= upThis.#linger[i]) { + upThis.#linger[i] = ((e >> 4) << 4) + 15; + } else { + let val = upThis.#linger[i] - 2; + if (val < 0) { + val = 0; + }; + upThis.#linger[i] = val; + }; + }); + let useBm = this.#bmdb; + if (timeNow <= sum.bitmap.expire) { + useBm = sum.bitmap.bitmap; + } else { + let rendPos = 0; + for (let c = minCh; c <= maxCh; c ++) { + let rendPart = rendPos >> 4; + let strSmooth = sum.strength[c] >> (4 + rendMode), + lingered = this.#linger[c] >> (4 + rendMode); + if (rendMode == 2) { + let offY = 4 * (3 - rendPart); + for (let d = 3 - strSmooth; d < 4; d ++) { + this.#bmdb[rendPos % 16 + (d + offY) * 16] = 1; + }; + } else if (rendMode == 1) { + let offY = 8 * (1 - rendPart); + for (let d = 7 - strSmooth; d < 8; d ++) { + this.#bmdb[rendPos % 16 + (d + offY) * 16] = 1; + }; + this.#bmdb[rendPos % 16 + (7 - lingered + offY) * 16] = 1; + } else { + for (let d = 15 - strSmooth; d < 16; d ++) { + this.#bmdb[rendPos % 16 + d * 16] = 1; + }; + this.#bmdb[rendPos + (15 - lingered) * 16] = 1; + }; + rendPos ++; + }; + }; + // Commit to bitmap display + useBm.forEach(function (e, i) { + ctx.fillStyle = inactivePixel; + if (e) { + ctx.fillStyle = activePixel; + }; + let pixelX = i % 16, + pixelY = Math.floor(i / 16); + ctx.fillRect( + pdaX + 302 + pixelX * cmpHeightX, + pdaY + 71 + pixelY * cmpHeightY, + mspHeightX, + mspHeightY + ); + }); + // Show text + ctx.fillStyle = "#000c"; + ctx.textAlign = "left"; + ctx.font = '16px "Arial Web"'; + ctx.fillText("PART", 21, 20); + ctx.fillText("INSTRUMENT", 154, 20); + ctx.fillText("LEVEL", 21, 91); + ctx.fillText("PAN", 154, 91); + ctx.fillText("REVERB", 21, 162); + ctx.fillText("CHORUS", 154, 162); + ctx.fillText("KEY SHIFT", 21, 233); + ctx.fillText("BANK", 154, 233); + ctx.textAlign = "right"; + ctx.fillText("SB", 274, 233); + ctx.textAlign = "center"; + for (let c = 1; c <= 16; c ++) { + ctx.fillText(`${c}`.padStart(2, "0"), 308 + cmpHeightX * c, 300); + }; + ctx.lineWidth = 1; + ctx.strokeStyle = "#000c"; + let circle = 2 * Math.PI; + for (let c = 0; c < 16; c ++) { + let d = c % 8; + ctx.beginPath(); + if (!d) { + ctx.ellipse( + 316, + (15 - c) * 12 + 100, + 4, 4, + 0, 0, circle + ); + ctx.fill(); + } else if (d == 4) { + ctx.ellipse( + 316, + (15 - c) * 12 + 100, + 3, 3, + 0, 0, circle + ); + ctx.fill(); + } else { + ctx.ellipse( + 316, + (15 - c) * 12 + 100, + 2, 2, + 0, 0, circle + ); + ctx.stroke(); + }; + }; + if (sum.chContr[chOff + ccToPos[0]]) { + ctx.fillStyle = activePixel; + } else { + ctx.fillStyle = inactivePixel; + }; + ctx.fillText("M", 236, 233); + if (sum.chContr[chOff + ccToPos[0]]) { + ctx.fillStyle = inactivePixel; + } else { + ctx.fillStyle = activePixel; + }; + ctx.fillText("L", 248, 233); + }; +}; + +export default ScDisplay; diff --git a/src/disp/disp_tui.mjs b/src/disp/disp_tui.mjs new file mode 100644 index 00000000..7459e62a --- /dev/null +++ b/src/disp/disp_tui.mjs @@ -0,0 +1,138 @@ +"use strict"; + +import {OctaviaDevice} from "../state/index.mjs"; +import {textedPanning, textedPitchBend} from "./texted.js"; +import {RootDisplay, ccToPos} from "../basic/index.mjs"; + +import { + noteNames, + noteRegion, + map, + waveMap +} from "./common.js"; + +const modeNames = { + "?": "UnkwnStd", + "gm": "GnrlMIDI", + "g2": "GrlMIDI2", + "xg": "YamahaXG", + "gs": "RolandGS", + "mt32": "RlndMT32", + "ag10": "KorgAG10", + "x5d": "Korg X5D", + "05rw": "Korg05RW", + "ns5r": "KorgNS5R", + "k11": "KawaiK11", + "sg": "AkaiPrSG", + "krs": "KorgKros", + "s90es": "YmhS90ES", + "motif": "YmhMotif" +}; + +// Velocity to brightness +let velToLuma = function (velo) { + let newVel = velo * 2 + 1; + return `${hexMap[newVel >> 4]}${hexMap[newVel & 15]}`; +}; + +let TuiDisplay = class extends RootDisplay { + #maxPoly = 0; + constructor() { + super(new OctaviaDevice); + this.addEventListener("reset", () => { + this.#maxPoly = 0; + }); + }; + render(time, ctx) { + let fields = new Array(24); + let sum = super.render(time); + let upThis = this; + let timeNow = Date.now(); + let cramTempo = Math.round(sum.tempo * 100) / 100; + let curPoly = sum.curPoly + sum.extraPoly; + if (this.#maxPoly < curPoly) { + this.#maxPoly = curPoly; + }; + fields[0] = `${sum.eventCount.toString().padStart(3, "0")} ${curPoly.toString().padStart(3, "0")}:${this.#maxPoly.toString().padStart(3, "0")}/512 TSig:${sum.tSig[0]}/${sum.tSig[1]} Bar:${(sum.noteBar + 1).toString().padStart(3, "0")}/${Math.floor(sum.noteBeat) + 1} Tempo:${Math.floor(cramTempo)}.${Math.floor(cramTempo % 1 * 100).toString().padStart(2, "0")} Vol:${Math.floor(sum.master.volume)}.${Math.round(sum.master.volume % 1 * 100).toString().padStart(2, "0")}%`; + fields[1] = `Mode:${modeNames[sum.mode]} Title:${sum.title || "N/A"}`; + fields[2] = "Ch:VoiceNme#St T VEM RCDBRP12 PiBd Pan : Note"; + let line = 3, maxCh = 0; + sum.chInUse.forEach(function (e, i) { + if (e) { + maxCh = i; + let chOffset = i * ccToPos.length; + if (line < fields.length - 5 && i >= (self.minCh || 0)) { + let voiceName = upThis.getChVoice(i); + fields[line] = `${(i + 1).toString().padStart(2, "0")}:${voiceName.name.slice(0, 8).padEnd(8, " ")}${voiceName.ending}${voiceName.standard} ${sum.chType[i]} ${map[sum.chContr[chOffset + ccToPos[7]] >> 1]}${map[sum.chContr[chOffset + ccToPos[11]] >> 1]}${waveMap[sum.chContr[chOffset + ccToPos[1]] >> 5]} ${map[sum.chContr[chOffset + ccToPos[91]] >> 1]}${map[sum.chContr[chOffset + ccToPos[93]] >> 1]}${map[sum.chContr[chOffset + ccToPos[94]] >> 1]}${map[sum.chContr[chOffset + ccToPos[74]] >> 1]}${map[sum.chContr[chOffset + ccToPos[71]] >> 1]}${(sum.chContr[chOffset + ccToPos[65]] >> 6) ? map[sum.chContr[chOffset + ccToPos[5]] >> 1] : " "}${sum.ace[0] ? map[upThis.device.getChAce(i, 0) >> 1] : " "}${sum.ace[1] ? map[upThis.device.getChAce(i, 1) >> 1] : " "} ${textedPitchBend(sum.chPitch[i])} ${textedPanning(sum.chContr[chOffset + ccToPos[10]])}:`; + sum.chKeyPr[i].forEach(function (e1, i1) { + if (e1.v > 0) { + fields[line] += ` ${noteNames[i1 % 12]}${noteRegion[Math.floor(i1 / 12)]}`; + }; + }); + line ++; + }; + }; + }); + if (sum.texts.length > 0) { + let metaLine = 0, + st = fields.length - 1; + while (st >= line) { + if (sum.texts[metaLine]?.length) { + fields[st] = (sum.texts[metaLine] || "").padEnd(100, " "); + }; + if (sum.texts[metaLine]?.length > 0 || sum.texts[metaLine]?.length == undefined) { + st --; + }; + metaLine ++; + }; + }; + if (timeNow <= sum.letter.expire) { + let letterDisp = sum.letter.text.padEnd(32, " "); + let startLn = fields.length - 2; + for (let st = 0; st < 2; st ++) { + fields[st + startLn] = `${(fields[st + startLn] || "").slice(0, 82).padEnd(81, " ")} ${letterDisp.slice(st * 16, st * 16 + 16).padEnd(" ", 16)} `; + }; + }; + if (ctx) { + ctx.clearRect(0, 0, ctx.canvas.width, ctx.canvas.height); + ctx.fillStyle = "#202020"; + let renderer; + if (timeNow <= sum.bitmap.expire) { + renderer = sum.bitmap.bitmap; + } else { + renderer = new Array(256); + if (maxCh < 16) { + sum.strength.forEach(function (e, i) { + if (i < 16) { + let strength = e >> 4; + for (let dot = 0; dot <= strength; dot ++) { + renderer[i + (15 - dot) * 16] = 1; + }; + }; + }); + } else { + sum.strength.forEach(function (e, i) { + if (i < 32) { + let strength = e >> 5; + for (let dot = 0; dot <= strength; dot ++) { + renderer[i + ((i > 15 ? 6 : 15) - dot) * 16] = 1; + }; + }; + }); + }; + }; + renderer.forEach(function (e, i) { + if (e) { + ctx.fillRect((i & 15) * 12, (i >> 4) * 6, 11, 5); + }; + }); + // Create a dividing line + /* for (let c = 0; c < 15; c ++) { + ctx.clearRect(c * 12 + 5, 0, 1, ctx.canvas.height); + }; */ + }; + return fields.join("
"); + }; +}; + +export default TuiDisplay; diff --git a/src/disp/texted.js b/src/disp/texted.js new file mode 100644 index 00000000..4cabc4b3 --- /dev/null +++ b/src/disp/texted.js @@ -0,0 +1,36 @@ +"use strict"; + +let arrowGen = function (charArr, value, border, unit) { + let boundLow = border - (unit >> 1), boundHi = border + (unit >> 1); + if (value > border) { + for (let c = 0; value > border; c ++) { + charArr[c] = (value < boundHi) ? "=" : ">"; + value -= unit; + }; + } else if (value < border) { + for (let c = charArr.length - 1; value < border; c --) { + charArr[c] = (value >= boundLow) ? "=" : "<"; + value += unit; + }; + }; +}; + +let textedPitchBend = function (number) { + let result = Array.from("----"); + arrowGen(result, number, 0, 2048); + return result.join(""); +}; + +let textedPanning = function (number) { + if (number == 128) { + return "<<>>"; + }; + let result = Array.from("----"); + arrowGen(result, number, 64, 16); + return result.join(""); +}; + +export { + textedPanning, + textedPitchBend +}; diff --git a/src/fakeMu/index.js b/src/fakeMu/index.js new file mode 100644 index 00000000..a78b417a --- /dev/null +++ b/src/fakeMu/index.js @@ -0,0 +1,571 @@ +"use strict"; + +import {} from "../../libs/lightfelt@ltgcgo/main/cssClass.js"; +import {$e, $a} from "../../libs/lightfelt@ltgcgo/main/quickPath.js"; +import MuDisplay from "../disp/disp_mu.mjs"; +import {fileOpen} from "../../libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js"; +import { + getBridge +} from "../bridge/index.mjs"; +import {SheetData} from "../basic/sheetLoad.js"; + +import { + PointEvent, + RangeEvent, + TimedEvents +} from "../../libs/lightfelt@ltgcgo/ext/timedEvents.js"; + +let demoBlobs = {}; +let demoPerfs = {}; +let demoInfo = {}; +let demoModes = []; +demoModes[9] = "gm"; +let currentPerformance; +let currentAnimation; +let useMidiBus = false; + +// Generate Octavia channel switch SysEx +self.generateSwitch = function (ch = 0, min, max) { + let data = [67, 16, 73, 0, 0, 10, ch]; + if (min?.constructor == Number) { + data.push(min); + if (max.constructor == Number) { + data.push(max); + }; + }; + return { + type: 15, + track: 0, + data + }; +}; +self.generateString = function (text) { + let data = [67, 16, 76, 6, 0, 0]; + for (let c = 0; c < text.length; c ++) { + data.push(text.charCodeAt(c)); + }; + return { + type: 15, + track: 0, + data + }; +}; + +// Standard switching +let stSwitch = $a("b.mode"); +let stSwitchMode = []; +stSwitch.to = function (i) { + stSwitch.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stSwitch[i].classList.on("active"); + }; +}; +stSwitch.forEach(function (e, i, a) { + stSwitchMode[i] = e.title; + e.addEventListener("click", function () { + visualizer.switchMode(e.title, true); + stSwitch.to(i); + }); +}); + +// Standard demo switching +let demoPool = new SheetData(); +let stList = $e("span#demo-list"), stDemo = []; +const srcPaths = ['../../midi-demo-data/collection/octavia/', './demo/']; +let getBlobFrom = async function (filename) { + let i = 0; + while (i < srcPaths.length) { + let e = srcPaths[i]; + let response = await fetch(`${e}${filename}`); + if (response.status < 400) { + return response; + }; + i ++; + }; + console.error(`Loading of data ${filename} failed.`); +}; +getBlobFrom(`list.tsv`).then(async (response) => { + await demoPool.load(await response.text()); + //console.info(demoPool.data); + demoPool.data.forEach((e, i) => { + if (i) { + let space = document.createElement("span"); + space.innerHTML = " "; + stList.appendChild(space); + } else { + stList.innerText = ""; + }; + let demoChoice = document.createElement("b"); + demoChoice.innerText = e.text; + demoChoice.title = e.file; + demoChoice.classList.on("demo"); + stDemo.push(demoChoice); + stList.appendChild(demoChoice); + }); + stDemo.to = function (i) { + stDemo.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stDemo[i].classList.on("active"); + }; + }; + stDemo.forEach(function (e, i, a) { + e.addEventListener("click", async function () { + audioPlayer.pause(); + if (!demoBlobs[e.title]?.midi) { + demoBlobs[e.title] = {}; + audioPlayer.src = "about:blank"; + demoBlobs[e.title].midi = await (await getBlobFrom(`${e.title}.mid`)).blob(); + demoBlobs[e.title].wave = await (await getBlobFrom(`${e.title}.opus`)).blob(); + }; + currentPerformance = demoPerfs[e.title]; + currentPerformance?.resetIndex(); + currentAnimation = demoInfo[e.title]; + audioPlayer.currentTime = 0; + visualizer.reset(); + visualizer.loadFile(demoBlobs[e.title].midi); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = demoBlobs[e.title].wave; + audioPlayer.src = URL.createObjectURL(audioBlob); + if (demoModes[i]?.length > 0) { + visualizer.switchMode(demoModes[i]); + }; + stDemo.to(i); + }); + }); +}); + +// Start the visualizers +self.visualizer = new MuDisplay(); +visualizer.addEventListener("reset", function (e) { + console.info("Processor reset."); +}); + +// Listen to mode switches +visualizer.addEventListener("mode", function (ev) { + stSwitch.to(stSwitchMode.indexOf(ev.data)); +}); + +// Open the files +let midwIndicator = $e("#openMidw"); +let audioBlob; +const propsMid = JSON.parse('{"extensions":[".mid",".MID",".kar",".KAR",".syx",".SYX",".s7e",".S7E"],"startIn":"music","id":"midiOpener","description":"Open a MIDI file"}'), +propsAud = JSON.parse('{"mimeTypes":["audio/*"],"startIn":"music","id":"audioOpener","description":"Open an audio file"}'); +$e("#openMidi").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + let file = await fileOpen(propsMid); + let fileSplit = file.name.lastIndexOf("."), ext = ""; + if (fileSplit > -1) { + ext = file.name.slice(fileSplit + 1).toLowerCase(); + }; + switch (ext) { + case "syx": { + // Load SysEx blobs + visualizer.sendCmd({type: 15, track: 0, data: new Uint8Array(await file.arrayBuffer())}); + break; + }; + case "s7e": { + // Load sound banks + visualizer.device.loadBank(ext, file); + break; + }; + default: { + // Load MIDI files + stDemo.to(-1); + visualizer.reset(); + visualizer.loadFile(file); + visualizer.device.initOnReset = false; + }; + }; +}); +$e("#openAudio").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await fileOpen(propsAud); + audioPlayer.src = URL.createObjectURL(audioBlob); +}); +midwIndicator.addEventListener("click", function () { + stDemo.to(-1); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = null; + audioPlayer.src = ""; + visualizer.reset(); + useMidiBus = true; + midwIndicator.classList.on("active"); +}); + +// Get canvas +let dispCanv = $e("#ymhMu"); +let dispCtx = dispCanv.getContext("2d"); +dispCanv.addEventListener("wheel", function (ev) { + ev.preventDefault(); + let ch = visualizer.getCh(); + if (ev.deltaY > 0) { + visualizer.setCh(ch + 1); + } else { + visualizer.setCh(ch - 1); + }; +}); +dispCanv.addEventListener("mousedown", function (ev) { + let ch = visualizer.getCh(); + if (ev.offsetX < 64) { + visualizer.setCh(ch - 1); + } else if (ev.offsetX >= 776) { + visualizer.setCh(ch + 1); + }; +}); + +// Render frames +let audioPlayer = $e("#audioPlayer"); +audioPlayer.onended = function () { + visualizer.reset(); + currentPerformance?.resetIndex(); + audioPlayer.currentTime = 0; +}; +(async function () { + visualizer.reset(); + let midiBlob = await (await fetch("./demo/KANDI8.mid")).blob(); + demoBlobs.KANDI8 = {}; + demoBlobs.KANDI8.midi = midiBlob; + visualizer.loadFile(midiBlob); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await (await fetch("./demo/KANDI8.opus")).blob(); + demoBlobs.KANDI8.wave = audioBlob; + audioPlayer.src = URL.createObjectURL(audioBlob); +})(); +let lastTime = 0; +let renderThread = setInterval(function () { + if (/*!audioPlayer.paused*/true) { + let curTime = audioPlayer.currentTime - (self.audioDelay || 0); + if (curTime < lastTime) { + }; + if (currentPerformance) { + currentPerformance.step(curTime)?.forEach((e) => { + visualizer.sendCmd(e.data); + }); + }; + if (currentAnimation && !visualizer.demoInfo) { + visualizer.demoInfo = currentAnimation; + }; + visualizer.render(curTime, dispCtx); + lastTime = curTime; + }; +}, 20); + +getBridge().addEventListener("message", function (ev) { + if (useMidiBus) { + visualizer.sendCmd(ev.data); + }; +}); + +self.visualizer = visualizer; +self.performance = currentPerformance; + +// Hardcoded animation reference +{ + let mu80Ani = {class: "mubasic", fps: 10, size: 16}; + let mu1kAni = {class: "munativ", fps: 8, size: 32}; + demoInfo["ninety_hipty"] = mu80Ani; + demoInfo["OutOfTheMuse"] = mu80Ani; + demoInfo["MU100DEMO"] = mu80Ani; + demoInfo["TheMusithm"] = mu80Ani; + demoInfo["MU128DEMO"] = mu80Ani; + demoInfo["PhoenixA"] = mu1kAni; + demoInfo["PhoenixB"] = mu1kAni; + demoInfo["R-love"] = mu1kAni; +}; + +// Hardcoded performance +{ + // PhoenixA + let perf = new TimedEvents(); + perf.push(new PointEvent(0, generateString(` YAMAHA TONE GENERATOR `))); + perf.push(new PointEvent(0, generateSwitch(0, 0, 0))); + perf.push(new PointEvent(2.52, generateString(` YAMAHA TONE GENERATOR `))); + perf.push(new PointEvent(5.04, generateString(` YAMAHA TONE GENERATOR`))); + perf.push(new PointEvent(5.21, generateString(` YAMAHA TONE GENERATO`))); + perf.push(new PointEvent(5.37, generateString(` YAMAHA TONE GENERAT`))); + perf.push(new PointEvent(5.54, generateString(` YAMAHA TONE GENERA`))); + perf.push(new PointEvent(5.71, generateString(` YAMAHA TONE GENER`))); + perf.push(new PointEvent(5.87, generateString(` YAMAH TONE GENE`))); + perf.push(new PointEvent(6.04, generateString(` YAMA TONE GEN`))); + perf.push(new PointEvent(6.21, generateString(` YAM TONE GE`))); + perf.push(new PointEvent(6.38, generateString(` YA TONE G`))); + perf.push(new PointEvent(6.54, generateString(` Y TONE `))); + perf.push(new PointEvent(6.71, generateString(` TONE`))); + perf.push(new PointEvent(6.88, generateString(` TON`))); + perf.push(new PointEvent(7.04, generateString(` TO`))); + perf.push(new PointEvent(7.21, generateString(` T`))); + perf.push(new PointEvent(7.38, generateString(` `))); + perf.push(new PointEvent(7.52, generateString(` MU1000 `))); + perf.push(new PointEvent(8.14, generateString(` `))); + perf.push(new PointEvent(8.76, generateString(` MU1000 `))); + perf.push(new PointEvent(9.38, generateString(` `))); + perf.push(new PointEvent(10.08, generateString(` MU1000 `))); + perf.push(new PointEvent(10.49, generateString(` DU1000 `))); + perf.push(new PointEvent(10.92, generateString(` Db1000 0 `))); + perf.push(new PointEvent(11.33, generateString(` Dbl000 06 `))); + perf.push(new PointEvent(11.75, generateString(` DblC00 066 `))); + perf.push(new PointEvent(12.17, generateString(` DblCo0 066 `))); + perf.push(new PointEvent(12.59, generateString(` DblCon 066 0 `))); + perf.push(new PointEvent(13.01, generateString(` DblConG 066 00 `))); + perf.push(new PointEvent(13.42, generateString(` DblConGr 066 001`))); + perf.push(new PointEvent(27.98, generateSwitch(4))); + perf.push(new PointEvent(43.85, generateSwitch(10))); + perf.push(new PointEvent(63.33, generateSwitch(19, 1, 1))); + perf.push(new PointEvent(103.31, generateSwitch(34, 2, 2))); + perf.push(new PointEvent(109.52, generateSwitch(35))); + perf.push(new PointEvent(114.32, generateSwitch(32))); + perf.push(new PointEvent(119.36, generateSwitch(33))); + perf.push(new PointEvent(123.68, generateSwitch(36))); + perf.push(new PointEvent(128.91, generateSwitch(41))); + perf.push(new PointEvent(140.83, generateSwitch(45))); + perf.push(new PointEvent(153.29, generateSwitch(42))); + perf.push(new PointEvent(176.74, generateSwitch(2, 0, 0))); + perf.push(new PointEvent(178.27, generateString(` WindChim. SFX 070`))); + perf.push(new PointEvent(178.92, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(179.56, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(180.21, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(180.85, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(181.5, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(182.14, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(182.79, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(183.43, generateString(` WindChim .SFX 070`))); + perf.push(new PointEvent(184.08, generateString(` BindChim .FX 070`))); + perf.push(new PointEvent(184.72, generateString(` BrndChim 0.X 070`))); + perf.push(new PointEvent(185.36, generateString(` BrtdChim 06. 070`))); + perf.push(new PointEvent(186.01, generateString(` BrtFChim 066.070`))); + perf.push(new PointEvent(186.66, generateString(` BrtFrhim 066 .70`))); + perf.push(new PointEvent(187.3, generateString(` BrtFrHim 066 0.0`))); + perf.push(new PointEvent(187.89, generateString(` BrtFrHrm 066 06.`))); + perf.push(new PointEvent(187.95, generateString(` BrtFrHrn 066 061`))); + perf.fresh(); + demoPerfs["PhoenixA"] = perf; +}; +{ + // PhoenixB + let perf = new TimedEvents(); + perf.push(new PointEvent(0, generateString(` BrtFrHrn 066 061`))); + perf.push(new PointEvent(0, generateSwitch(11, 0, 0))); + perf.push(new PointEvent(2.02, {type: 15, track: 0, data: [67, 16, 76, 6, 0, 64]})); + perf.push(new PointEvent(38.19, generateSwitch(9))); + perf.push(new PointEvent(40.05, generateSwitch(16, 0, 1))); + perf.push(new PointEvent(40.67, generateSwitch(34, 0, 3))); + perf.push(new PointEvent(44.61, generateSwitch(17, 0, 1))); + perf.push(new PointEvent(47.59, generateSwitch(32, 0, 3))); + perf.push(new PointEvent(53.64, generateSwitch(18))); + perf.push(new PointEvent(54.89, generateSwitch(32))); + perf.push(new PointEvent(56.01, generateSwitch(49))); + perf.push(new PointEvent(58.47, generateSwitch(9, 0, 0))); + perf.push(new PointEvent(61.79, generateSwitch(0))); + perf.push(new PointEvent(71.54, generateSwitch(1))); + perf.push(new PointEvent(78.46, generateSwitch(16, 0, 3))); + perf.push(new PointEvent(80.33, generateSwitch(0, 0, 0))); + perf.push(new PointEvent(83.43, generateSwitch(0, 0, 3))); + perf.push(new PointEvent(84.86, generateSwitch(0, 0, 0))); + perf.push(new PointEvent(87.83, generateSwitch(0, 0, 1))); + perf.push(new PointEvent(89.29, generateSwitch(1, 0, 3))); + perf.push(new PointEvent(93.61, generateSwitch(1, 0, 0))); + perf.push(new PointEvent(98.21, generateSwitch(16, 0, 3))); + perf.push(new PointEvent(102.93, generateSwitch(17, 0, 1))); + perf.push(new PointEvent(107.45, generateSwitch(16, 0, 3))); + perf.push(new PointEvent(107.78, generateSwitch(17, 0, 1))); + perf.push(new PointEvent(110.97, generateSwitch(32, 0, 3))); + perf.push(new PointEvent(111.98, generateSwitch(16, 0, 1))); + perf.push(new PointEvent(113.27, generateSwitch(34, 0, 3))); + perf.push(new PointEvent(114.18, generateSwitch(16, 0, 1))); + perf.push(new PointEvent(115.75, generateSwitch(17, 0, 3))); + perf.push(new PointEvent(123.01, generateSwitch(5, 0, 0))); + perf.push(new PointEvent(124.53, generateSwitch(7, 0, 0))); + perf.push(new PointEvent(126.06, generateSwitch(20, 1, 1))); + perf.push(new PointEvent(126.78, generateSwitch(32, 0, 3))); + perf.fresh(); + demoPerfs["PhoenixB"] = perf; +}; +{ + // Ninety Hipty + let perf = new TimedEvents(); + perf.push(new PointEvent(0.5, generateSwitch(1, 0, 0))); + perf.push(new PointEvent(19.7, generateSwitch(11))); + perf.push(new PointEvent(28.5, generateSwitch(12))); + perf.push(new PointEvent(37.4, generateSwitch(4, 0, 1))); + perf.push(new PointEvent(45.8, generateSwitch(2))); + perf.push(new PointEvent(50.6, generateSwitch(3))); + perf.push(new PointEvent(54.9, generateSwitch(4))); + perf.push(new PointEvent(74.4, generateSwitch(0))); + perf.push(new PointEvent(76.85, generateSwitch(9))); + perf.push(new PointEvent(81.75, generateSwitch(10))); + perf.push(new PointEvent(86.6, generateSwitch(25))); + perf.push(new PointEvent(96.7, generateSwitch(13))); + perf.push(new PointEvent(106.2, generateSwitch(22))); + perf.push(new PointEvent(111.25, generateSwitch(23))); + perf.push(new PointEvent(116.1, generateSwitch(17))); + perf.push(new PointEvent(121, generateSwitch(13))); + perf.push(new PointEvent(127.9, generateSwitch(8))); + perf.push(new PointEvent(138, generateSwitch(0))); + perf.fresh(); + demoPerfs["ninety_hipty"] = perf; +}; +{ + // Is it realy love? + let perf = new TimedEvents(); + perf.push(new PointEvent(1.8, generateSwitch(24, 1, 2))); + perf.push(new PointEvent(7.6, generateSwitch(29))); + perf.push(new PointEvent(10.53, generateSwitch(0, 0, 1))); + perf.push(new PointEvent(20.9, generateSwitch(22))); + perf.push(new PointEvent(28.47, generateSwitch(23))); + perf.push(new PointEvent(31.1, generateSwitch(3, 0, 0))); + perf.push(new PointEvent(38.88, generateSwitch(17, 1, 1))); + perf.push(new PointEvent(41.02, generateSwitch(5, 0, 1))); + perf.push(new PointEvent(48.59, generateSwitch(17))); + perf.push(new PointEvent(50.9, generateSwitch(0, 0, 0))); + perf.push(new PointEvent(70.7, generateSwitch(1, 0, 1))); + perf.push(new PointEvent(78.2, generateSwitch(17))); + perf.push(new PointEvent(80.79, generateSwitch(2))); + perf.push(new PointEvent(88.65, generateSwitch(1))); + perf.push(new PointEvent(90.02, generateSwitch(2))); + perf.push(new PointEvent(91.11, generateSwitch(1))); + perf.push(new PointEvent(92.43, generateSwitch(2))); + perf.push(new PointEvent(93.18, generateSwitch(0, 0, 0))); + perf.push(new PointEvent(112.9, generateSwitch(1, 0, 1))); + perf.push(new PointEvent(119, generateSwitch(17))); + perf.push(new PointEvent(122.64, generateSwitch(2))); + perf.push(new PointEvent(130.12, generateSwitch(15))); + perf.push(new PointEvent(132.73, generateSwitch(0, 0, 0))); + perf.push(new PointEvent(152.54, generateSwitch(1, 0, 1))); + perf.push(new PointEvent(158.66, generateSwitch(17))); + perf.push(new PointEvent(162.39, generateSwitch(2))); + perf.push(new PointEvent(166.24, generateSwitch(14))); + perf.push(new PointEvent(172.26, generateSwitch(8, 0, 0))); + perf.push(new PointEvent(182.23, generateSwitch(8, 0, 1))); + perf.push(new PointEvent(191.81, generateSwitch(23, 1, 1))); + perf.push(new PointEvent(193, generateSwitch(0, 0, 0))); + perf.fresh(); + demoPerfs["R-love"] = perf; +}; +{ + // MU80 demo, Out of the Muse + let perf = new TimedEvents(); + perf.push(new PointEvent(1.6, generateSwitch(19, 0, 1))); + perf.push(new PointEvent(18.92, generateSwitch(3, 0, 0))); + perf.push(new PointEvent(27.29, generateSwitch(2))); + perf.push(new PointEvent(31.47, generateSwitch(9))); + perf.push(new PointEvent(33.49, generateSwitch(10))); + perf.push(new PointEvent(35.52, generateSwitch(19, 0, 1))); + perf.push(new PointEvent(37.62, generateSwitch(1))); + perf.push(new PointEvent(39.73, generateSwitch(3))); + perf.push(new PointEvent(41.83, generateSwitch(6))); + perf.push(new PointEvent(43.93, generateSwitch(18))); + perf.push(new PointEvent(46.03, generateSwitch(19))); + perf.push(new PointEvent(48.13, generateSwitch(21))); + perf.push(new PointEvent(50.23, generateSwitch(24))); + perf.push(new PointEvent(52.34, generateSwitch(3, 0, 0))); + perf.push(new PointEvent(57.76, generateSwitch(4))); + perf.push(new PointEvent(61.12, generateSwitch(3))); + perf.push(new PointEvent(64.11, generateSwitch(4))); + perf.push(new PointEvent(69.84, generateSwitch(6))); + perf.push(new PointEvent(87.48, generateSwitch(4, 0, 1))); + perf.push(new PointEvent(117.12, generateSwitch(23))); + perf.push(new PointEvent(125, generateSwitch(0))); + perf.fresh(); + demoPerfs["OutOfTheMuse"] = perf; +}; +{ + // MU100 demo, It's an AmaZing MU World!! + let perf = new TimedEvents(); + perf.push(new PointEvent(3.28, generateSwitch(1))); + perf.push(new PointEvent(6.22, generateSwitch(5))); + perf.push(new PointEvent(7.93, generateSwitch(6))); + perf.push(new PointEvent(10.92, generateSwitch(5))); + perf.push(new PointEvent(13.98, generateSwitch(6))); + perf.push(new PointEvent(17.31, generateSwitch(5))); + perf.push(new PointEvent(18.64, generateSwitch(6))); + perf.push(new PointEvent(23.93, generateSwitch(11))); + perf.push(new PointEvent(24.41, generateSwitch(2))); + perf.push(new PointEvent(24.89, generateSwitch(9))); + perf.push(new PointEvent(25.37, generateSwitch(10))); + perf.push(new PointEvent(25.89, generateSwitch(3))); + perf.push(new PointEvent(41.84, generateSwitch(15))); + perf.push(new PointEvent(43.93, generateSwitch(14))); + perf.push(new PointEvent(46.02, generateSwitch(15))); + perf.push(new PointEvent(50.25, generateSwitch(16))); + perf.push(new PointEvent(54.46, generateSwitch(15))); + perf.push(new PointEvent(58.37, generateSwitch(16))); + perf.push(new PointEvent(62.34, generateSwitch(15))); + perf.push(new PointEvent(66.58, generateSwitch(16))); + perf.push(new PointEvent(70.41, generateSwitch(15))); + perf.fresh(); + demoPerfs["MU100DEMO"] = perf; +}; +{ + // MU128 demo + let perf = new TimedEvents(); + // Disable native RS + perf.push(new PointEvent(0, {type: 15, track: 0, data: [67, 16, 73, 0, 0, 14, 0]})); + perf.push(new PointEvent(0, generateSwitch(0, 0, 0))); + perf.push(new PointEvent(1.6, generateSwitch(0, 0, 3))); + perf.push(new PointEvent(40.02, generateSwitch(48, 3, 3))); + perf.push(new PointEvent(41.68, generateSwitch(49))); + perf.push(new PointEvent(43.07, generateSwitch(50))); + perf.push(new PointEvent(44.65, generateSwitch(51))); + perf.push(new PointEvent(46.2, generateSwitch(52))); + perf.push(new PointEvent(47.74, generateSwitch(53))); + perf.push(new PointEvent(49.29, generateSwitch(54))); + perf.push(new PointEvent(50.83, generateSwitch(55))); + perf.push(new PointEvent(52.38, generateSwitch(56))); + perf.push(new PointEvent(53.92, generateSwitch(58))); + perf.push(new PointEvent(55.47, generateSwitch(59))); + perf.push(new PointEvent(57.02, generateSwitch(48))); + perf.push(new PointEvent(69.56, generateSwitch(8, 0, 0))); + perf.push(new PointEvent(70.54, generateSwitch(9))); + perf.push(new PointEvent(71.52, generateSwitch(10))); + perf.push(new PointEvent(72.5, generateSwitch(11))); + perf.push(new PointEvent(73.48, generateSwitch(12))); + perf.push(new PointEvent(74.46, generateSwitch(13))); + perf.push(new PointEvent(75.44, generateSwitch(14))); + perf.push(new PointEvent(76.42, generateSwitch(15))); + perf.push(new PointEvent(77.4, generateSwitch(8))); + perf.push(new PointEvent(81.18, generateSwitch(0))); + perf.push(new PointEvent(82.15, generateSwitch(1))); + perf.push(new PointEvent(83.12, generateSwitch(2))); + perf.push(new PointEvent(84.09, generateSwitch(3))); + perf.push(new PointEvent(85.06, generateSwitch(4))); + perf.push(new PointEvent(86.03, generateSwitch(5))); + perf.push(new PointEvent(87.0, generateSwitch(6))); + perf.push(new PointEvent(87.97, generateSwitch(7))); + perf.push(new PointEvent(88.94, generateSwitch(0))); + perf.push(new PointEvent(96.66, generateSwitch(16, 1, 1))); + perf.push(new PointEvent(98.15, generateSwitch(17))); + perf.push(new PointEvent(99.63, generateSwitch(18))); + perf.push(new PointEvent(101.12, generateSwitch(19))); + perf.push(new PointEvent(102.6, generateSwitch(20))); + perf.push(new PointEvent(104.09, generateSwitch(21))); + perf.push(new PointEvent(105.57, generateSwitch(22))); + perf.push(new PointEvent(107.06, generateSwitch(23))); + perf.push(new PointEvent(108.54, generateSwitch(24))); + perf.push(new PointEvent(110.03, generateSwitch(25))); + perf.push(new PointEvent(111.51, generateSwitch(26))); + perf.push(new PointEvent(112.99, generateSwitch(27))); + perf.push(new PointEvent(114.48, generateSwitch(28))); + perf.push(new PointEvent(115.97, generateSwitch(29))); + perf.push(new PointEvent(117.45, generateSwitch(30))); + perf.push(new PointEvent(118.94, generateSwitch(31))); + perf.push(new PointEvent(120.42, generateSwitch(16))); + perf.push(new PointEvent(122.34, generateSwitch(5, 0, 1))); + perf.push(new PointEvent(158.26, generateSwitch(0))); + perf.fresh(); + demoPerfs["MU128DEMO"] = perf; +}; diff --git a/src/fakeNs5r/index.js b/src/fakeNs5r/index.js new file mode 100644 index 00000000..abbfe0da --- /dev/null +++ b/src/fakeNs5r/index.js @@ -0,0 +1,238 @@ +"use strict"; + +import {} from "../../libs/lightfelt@ltgcgo/main/cssClass.js"; +import {$e, $a} from "../../libs/lightfelt@ltgcgo/main/quickPath.js"; +import Ns5rDisplay from "../disp/disp_n5.mjs"; +import {fileOpen} from "../../libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js"; +import { + getBridge +} from "../bridge/index.mjs"; +import {sysexBitmap} from "../state/emitGlobal.js"; +import {SheetData} from "../basic/sheetLoad.js"; + +let demoBlobs = {}; +let demoModes = []; +demoModes[9] = "gm"; +let useMidiBus = false; + +// Standard switching +let stSwitch = $a("b.mode"); +let stSwitchMode = []; +stSwitch.to = function (i) { + stSwitch.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stSwitch[i].classList.on("active"); + }; +}; +stSwitch.forEach(function (e, i, a) { + stSwitchMode[i] = e.title; + e.addEventListener("click", function () { + visualizer.switchMode(e.title, true); + stSwitch.to(i); + }); +}); + +// Standard demo switching +let demoPool = new SheetData(); +let stList = $e("span#demo-list"), stDemo = []; +const srcPaths = ['../../midi-demo-data/collection/octavia/', './demo/']; +let getBlobFrom = async function (filename) { + let i = 0; + while (i < srcPaths.length) { + let e = srcPaths[i]; + let response = await fetch(`${e}${filename}`); + if (response.status < 400) { + return response; + }; + i ++; + }; + console.error(`Loading of data ${filename} failed.`); +}; +let codepointArray = function (string) { + let arr = new Uint16Array(string.length); + arr.forEach((e, i, a) => { + a[i] = string.charCodeAt(i); + }); + return arr; +}; +getBlobFrom(`list.tsv`).then(async (response) => { + await demoPool.load(await response.text()); + //console.info(demoPool.data); + demoPool.data.forEach((e, i) => { + if (i) { + let space = document.createElement("span"); + space.innerHTML = " "; + stList.appendChild(space); + } else { + stList.innerText = ""; + }; + let demoChoice = document.createElement("b"); + demoChoice.innerText = e.text; + demoChoice.title = e.file; + demoChoice.classList.on("demo"); + stDemo.push(demoChoice); + stList.appendChild(demoChoice); + }); + stDemo.to = function (i) { + stDemo.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stDemo[i].classList.on("active"); + }; + }; + stDemo.forEach(function (e, i, a) { + e.addEventListener("click", async function () { + audioPlayer.pause(); + if (!demoBlobs[e.title]?.midi) { + demoBlobs[e.title] = {}; + audioPlayer.src = "about:blank"; + demoBlobs[e.title].midi = await (await getBlobFrom(`${e.title}.mid`)).blob(); + demoBlobs[e.title].wave = await (await getBlobFrom(`${e.title}.opus`)).blob(); + }; + audioPlayer.currentTime = 0; + visualizer.reset(); + visualizer.loadFile(demoBlobs[e.title].midi); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = demoBlobs[e.title].wave; + audioPlayer.src = URL.createObjectURL(audioBlob); + if (demoModes[i]?.length > 0) { + visualizer.switchMode(demoModes[i]); + }; + stDemo.to(i); + visualizer.device.setLetterDisplay(codepointArray(`\x8a${demoPool.data[i].artist.slice(0, 15).padEnd(15, " ")}\x8b${demoPool.data[i].title.slice(0, 15)}`)); + }); + }); +}); + +// Start the visualizers +self.sysexBitmap = sysexBitmap; +self.visualizer = new Ns5rDisplay(); +visualizer.addEventListener("reset", function (e) { + console.info("Processor reset."); +}); + +// Listen to mode switches +visualizer.addEventListener("mode", function (ev) { + stSwitch.to(stSwitchMode.indexOf(ev.data)); +}); + +// Open the files +let midwIndicator = $e("#openMidw"); +let audioBlob; +const propsMid = JSON.parse('{"extensions":[".mid",".MID",".kar",".KAR",".syx",".SYX",".s7e",".S7E"],"startIn":"music","id":"midiOpener","description":"Open a MIDI file"}'), +propsAud = JSON.parse('{"mimeTypes":["audio/*"],"startIn":"music","id":"audioOpener","description":"Open an audio file"}'); +$e("#openMidi").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + let file = await fileOpen(propsMid); + let fileSplit = file.name.lastIndexOf("."), ext = ""; + if (fileSplit > -1) { + ext = file.name.slice(fileSplit + 1).toLowerCase(); + }; + switch (ext) { + case "syx": { + // Load SysEx blobs + visualizer.sendCmd({type: 15, track: 0, data: new Uint8Array(await file.arrayBuffer())}); + break; + }; + case "s7e": { + // Load sound banks + visualizer.device.loadBank(ext, file); + break; + }; + default: { + // Load MIDI files + stDemo.to(-1); + visualizer.reset(); + visualizer.loadFile(file); + visualizer.device.initOnReset = false; + }; + }; +}); +$e("#openAudio").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await fileOpen(propsAud); + audioPlayer.src = URL.createObjectURL(audioBlob); +}); +midwIndicator.addEventListener("click", function () { + stDemo.to(-1); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = null; + audioPlayer.src = ""; + visualizer.reset(); + useMidiBus = true; + midwIndicator.classList.on("active"); +}); + +// Get canvas +let dispCanv = $e("#ns5rSc"); +let dispCtx = dispCanv.getContext("2d"); +dispCanv.addEventListener("wheel", function (ev) { + ev.preventDefault(); + let ch = visualizer.getCh(); + if (ev.deltaY > 0) { + visualizer.setCh(ch + 1); + } else { + visualizer.setCh(ch - 1); + }; +}); +dispCanv.addEventListener("mousedown", function (ev) { + let ch = visualizer.getCh(); + if (ev.offsetX < 64) { + visualizer.setCh(ch - 1); + } else if (ev.offsetX >= 801) { + visualizer.setCh(ch + 1); + }; +}); + +// Allow channel switching in browser console +self.toCh = function (ch) { + visualizer.setCh(ch); +}; + +// Render frames +let audioPlayer = $e("#audioPlayer"); +audioPlayer.onended = function () { + visualizer.reset(); + audioPlayer.currentTime = 0; +}; +(async function () { + visualizer.reset(); + let midiBlob = await (await fetch("./demo/KANDI8.mid")).blob(); + demoBlobs.KANDI8 = {}; + demoBlobs.KANDI8.midi = midiBlob; + visualizer.loadFile(midiBlob); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await (await fetch("./demo/KANDI8.opus")).blob(); + demoBlobs.KANDI8.wave = audioBlob; + audioPlayer.src = URL.createObjectURL(audioBlob); +})(); +let lastTime = 0; +let renderThread = setInterval(function () { + if (/*!audioPlayer.paused*/true) { + let curTime = audioPlayer.currentTime - (self.audioDelay || 0); + if (curTime < lastTime) { + }; + visualizer.render(curTime, dispCtx, location.hash?.length > 1); + lastTime = curTime; + }; +}, 20); + +getBridge().addEventListener("message", function (ev) { + if (useMidiBus) { + visualizer.sendCmd(ev.data); + }; +}); diff --git a/src/fakePsr/index.js b/src/fakePsr/index.js new file mode 100644 index 00000000..3278c703 --- /dev/null +++ b/src/fakePsr/index.js @@ -0,0 +1,754 @@ +"use strict"; + +import {} from "../../libs/lightfelt@ltgcgo/main/cssClass.js"; +import {$e, $a} from "../../libs/lightfelt@ltgcgo/main/quickPath.js"; +import PsrDisplay from "../disp/disp_psr.mjs"; +import {fileOpen} from "../../libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js"; +import { + getBridge +} from "../bridge/index.mjs"; +import {SheetData} from "../basic/sheetLoad.js"; + +import { + PointEvent, + RangeEvent, + TimedEvents +} from "../../libs/lightfelt@ltgcgo/ext/timedEvents.js"; + +let demoBlobs = {}; +let demoPerfs = {}; +let demoInfo = {}; +let demoModes = []; +demoModes[9] = "gm"; +let currentPerformance; +let currentAnimation; +let useMidiBus = false; +let demoId = 0; + +// Generate Octavia channel switch SysEx +let generateSwitch = function (ch = 0, min, max) { + let data = [67, 16, 73, 0, 0, 10, ch]; + if (min?.constructor == Number) { + data.push(min); + if (max.constructor == Number) { + data.push(max); + }; + }; + return { + type: 15, + track: 0, + data + }; +}; +let generateString = function (text) { + let data = [67, 16, 76, 6, 0, 0]; + for (let c = 0; c < text.length; c ++) { + data.push(text.charCodeAt(c)); + }; + return { + type: 15, + track: 0, + data + }; +}; + +// Standard switching +let stSwitch = $a("b.mode"); +let stSwitchMode = []; +stSwitch.to = function (i) { + stSwitch.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stSwitch[i].classList.on("active"); + }; +}; +stSwitch.forEach(function (e, i, a) { + stSwitchMode[i] = e.title; + e.addEventListener("click", function () { + visualizer.switchMode(e.title, true); + stSwitch.to(i); + }); +}); + +// Standard demo switching +let demoPool = new SheetData(); +let stList = $e("span#demo-list"), stDemo = []; +const srcPaths = ['../../midi-demo-data/collection/octavia/', './demo/']; +let getBlobFrom = async function (filename) { + let i = 0; + while (i < srcPaths.length) { + let e = srcPaths[i]; + let response = await fetch(`${e}${filename}`); + if (response.status < 400) { + return response; + }; + i ++; + }; + console.error(`Loading of data ${filename} failed.`); +}; +getBlobFrom(`list.tsv`).then(async (response) => { + await demoPool.load(await response.text()); + //console.info(demoPool.data); + demoPool.data.forEach((e, i) => { + if (i) { + let space = document.createElement("span"); + space.innerHTML = " "; + stList.appendChild(space); + } else { + stList.innerText = ""; + }; + let demoChoice = document.createElement("b"); + demoChoice.innerText = e.text; + demoChoice.title = e.file; + demoChoice.classList.on("demo"); + stDemo.push(demoChoice); + stList.appendChild(demoChoice); + }); + stDemo.to = function (i) { + stDemo.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stDemo[i].classList.on("active"); + }; + }; + stDemo.forEach(function (e, i, a) { + e.addEventListener("click", async function () { + audioPlayer.pause(); + if (!demoBlobs[e.title]?.midi) { + demoBlobs[e.title] = {}; + audioPlayer.src = "about:blank"; + demoBlobs[e.title].midi = await (await getBlobFrom(`${e.title}.mid`)).blob(); + demoBlobs[e.title].wave = await (await getBlobFrom(`${e.title}.opus`)).blob(); + }; + currentPerformance = demoPerfs[e.title]; + currentPerformance?.resetIndex(); + currentAnimation = demoInfo[e.title]; + audioPlayer.currentTime = 0; + visualizer.reset(); + visualizer.loadFile(demoBlobs[e.title].midi); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = demoBlobs[e.title].wave; + audioPlayer.src = URL.createObjectURL(audioBlob); + if (demoModes[i]?.length > 0) { + visualizer.switchMode(demoModes[i]); + }; + stDemo.to(i); + demoId = i; + }); + }); +}); + +// Backlight color switching +let backlightColor = "#b7bfaf64"; +let blSwitch = $a("b.backlight"); +blSwitch.to = function (i) { + blSwitch.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + blSwitch[i].classList.on("active"); + }; +}; +blSwitch.forEach(function (e, i) { + e.addEventListener("click", function () { + backlightColor = e.title; + blSwitch.to(i); + }); +}); + +// Automatic channel switching +let enableChannelSwitch = true; +let csSwitch = $a("b.channelSwitching"); +csSwitch.to = function (i) { + csSwitch.forEach(function (e) { + e.classList.off("active"); + }); + if (enableChannelSwitch) { + csSwitch[i].classList.on("active"); + }; +}; +csSwitch.forEach(function (e, i) { + e.addEventListener("click", function () { + enableChannelSwitch = !enableChannelSwitch; + this.innerText = enableChannelSwitch ? "ON" : "OFF"; + csSwitch.to(i); + }); +}); + +// Start the visualizers +self.visualizer = new PsrDisplay(); +visualizer.addEventListener("reset", function (e) { + visualizer.songTitle = ""; + console.info("Processor reset."); +}); + +// Listen to mode switches +visualizer.addEventListener("mode", function (ev) { + stSwitch.to(stSwitchMode.indexOf(ev.data)); + let textCmd = [67, 16, 76, 6, 0, 0, 77, 79, 68, 69, 58, 32]; + let modeText = { + gm: [71, 77], + gs: [71, 83], + xg: [88, 71], + g2: [71, 77, 50], + mt32: [77, 84, 45, 51, 50], + ns5r: [78, 83, 53, 82], + ag10: [65, 71, 45, 49, 48], + "05rw": [48, 53, 82, 47, 87], + x5d: [88, 53, 68], + k11: [71, 77, 101, 103, 97], + sg: [83, 71], + krs: [75, 82, 79, 83, 83], + s90es: [83, 57, 48, 32, 69, 83], + motif: [77, 111, 116, 105, 102, 32, 69, 83] + }; + visualizer.sendCmd({type: 15, track: 0, data: textCmd.concat(modeText[visualizer.getMode()])}); +}); + +// Open the files +let midwIndicator = $e("#openMidw"); +let audioBlob; +const propsMid = JSON.parse('{"extensions":[".mid",".MID",".kar",".KAR",".syx",".SYX",".s7e",".S7E"],"startIn":"music","id":"midiOpener","description":"Open a MIDI file"}'), +propsAud = JSON.parse('{"mimeTypes":["audio/*"],"startIn":"music","id":"audioOpener","description":"Open an audio file"}'); +$e("#openMidi").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + let file = await fileOpen(propsMid); + let fileSplit = file.name.lastIndexOf("."), ext = ""; + if (fileSplit > -1) { + ext = file.name.slice(fileSplit + 1).toLowerCase(); + }; + switch (ext) { + case "syx": { + // Load SysEx blobs + visualizer.sendCmd({type: 15, track: 0, data: new Uint8Array(await file.arrayBuffer())}); + break; + }; + case "s7e": { + // Load sound banks + visualizer.device.loadBank(ext, file); + break; + }; + default: { + // Load MIDI files + stDemo.to(-1); + visualizer.reset(); + visualizer.loadFile(file); + visualizer.device.initOnReset = false; + }; + }; +}); +$e("#openAudio").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await fileOpen(propsAud); + audioPlayer.src = URL.createObjectURL(audioBlob); +}); +midwIndicator.addEventListener("click", function () { + stDemo.to(-1); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = null; + audioPlayer.src = ""; + visualizer.reset(); + useMidiBus = true; + midwIndicator.classList.on("active"); +}); + +visualizer.addEventListener("meta", function (ev) { + if (!visualizer.songTitle) { + ev.data.forEach(function (e) { + if (!visualizer.songTitle && e.meta == 3) { + visualizer.songTitle = e.data; + }; + }); + }; +}); + +// Get canvas +let dispCanv = $e("#ymhPsr"); +let dispCtx = dispCanv.getContext("2d"); +let mixerView = false; +let tempoView = false; +dispCanv.addEventListener("wheel", function (ev) { + ev.preventDefault(); + let ch = visualizer.getCh(); + if (ev.deltaY > 0) { + visualizer.setCh(ch + 1); + } else { + visualizer.setCh(ch - 1); + }; + ev.preventDefault(); + ev.stopImmediatePropagation(); +}); +dispCanv.addEventListener("mousedown", function (ev) { + let ch = visualizer.getCh(); + if (ev.button == 0) { + if (ev.offsetX < 64) { + visualizer.setCh(ch - 1); + } else if (ev.offsetX >= 1046) { + visualizer.setCh(ch + 1); + } else if (ev.offsetY < 110) { + mixerView = !mixerView; + } else if (ev.offsetY > 218) { + tempoView = !tempoView; + }; + }; +}); + +// Allow channel switching in browser console +self.toCh = function (ch) { + visualizer.setCh(ch); +}; + +// Render frames +let audioPlayer = $e("#audioPlayer"); +audioPlayer.onended = function () { + visualizer.reset(); + currentPerformance?.resetIndex(); + audioPlayer.currentTime = 0; +}; +(async function () { + visualizer.reset(); + let midiBlob = await (await fetch("./demo/KANDI8.mid")).blob(); + demoBlobs.KANDI8 = {}; + demoBlobs.KANDI8.midi = midiBlob; + visualizer.loadFile(midiBlob); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await (await fetch("./demo/KANDI8.opus")).blob(); + demoBlobs.KANDI8.wave = audioBlob; + audioPlayer.src = URL.createObjectURL(audioBlob); + currentPerformance = demoPerfs["KANDI8"]; +})(); +let lastTime = 0; +let renderThread = setInterval(function () { + if (/*!audioPlayer.paused*/true) { + let curTime = audioPlayer.currentTime - (self.audioDelay || 0); + if (curTime < lastTime) { + }; + if (enableChannelSwitch && currentPerformance) { + currentPerformance.step(curTime)?.forEach((e) => { + visualizer.sendCmd(e.data); + }); + }; + if (currentAnimation && !visualizer.demoInfo) { + visualizer.demoInfo = currentAnimation; + }; + visualizer.render(curTime, dispCtx, backlightColor, mixerView, tempoView, useMidiBus ? 0 : demoId, location.hash?.length > 1); + lastTime = curTime; + }; +}, 20); + +getBridge().addEventListener("message", function (ev) { + if (useMidiBus) { + visualizer.sendCmd(ev.data); + }; +}); + +self.visualizer = visualizer; +self.performance = currentPerformance; + +// Hardcoded animation reference +{ + let mu80Ani = {class: "mubasic", fps: 10, size: 16}; + let mu1kAni = {class: "munativ", fps: 8, size: 32}; + demoInfo["ninety_hipty"] = mu80Ani; + demoInfo["OutOfTheMuse"] = mu80Ani; + demoInfo["MU100DEMO"] = mu80Ani; + demoInfo["TheMusithm"] = mu80Ani; + demoInfo["MU128DEMO"] = mu80Ani; + demoInfo["PhoenixA"] = mu1kAni; + demoInfo["PhoenixB"] = mu1kAni; + demoInfo["R-love"] = mu1kAni; +}; + +// Hardcoded channel switching +{ + // KANDI8 + let perf = new TimedEvents(); + perf.push(new PointEvent(4, generateSwitch(15))); + perf.push(new PointEvent(5.7, generateSwitch(12))); + perf.push(new PointEvent(20, generateSwitch(1))); + perf.push(new PointEvent(89, generateSwitch(0))); + perf.push(new PointEvent(117, generateSwitch(12))); + perf.fresh(); + demoPerfs["KANDI8"] = perf; +}; +{ + // Straight to the Horizon + let perf = new TimedEvents(); + perf.push(new PointEvent(3.5, generateSwitch(13))); + perf.push(new PointEvent(7.5, generateSwitch(6))); + perf.push(new PointEvent(22, generateSwitch(5))); + perf.push(new PointEvent(80, generateSwitch(1))); + perf.push(new PointEvent(106, generateSwitch(0))); + perf.push(new PointEvent(148.5, generateSwitch(1))); + perf.push(new PointEvent(177, generateSwitch(5))); + perf.fresh(); + demoPerfs["HORIZON"] = perf; +}; +{ + // Low Down + let perf = new TimedEvents(); + perf.push(new PointEvent(3, generateSwitch(2))); + perf.push(new PointEvent(6, generateSwitch(5))); + perf.push(new PointEvent(28, generateSwitch(1))); + perf.push(new PointEvent(51, generateSwitch(6))); + perf.push(new PointEvent(73.5, generateSwitch(5))); + perf.push(new PointEvent(96, generateSwitch(4))); + perf.push(new PointEvent(118, generateSwitch(6))); + perf.push(new PointEvent(141, generateSwitch(5))); + perf.push(new PointEvent(163, generateSwitch(5))); + perf.push(new PointEvent(186, generateSwitch(5))); + perf.fresh(); + demoPerfs["Sam Sketty - Low Down"] = perf; +}; +{ + // StarGame + let perf = new TimedEvents(); + perf.push(new PointEvent(0, generateSwitch(3))); + perf.push(new PointEvent(8.6, generateSwitch(2))); + perf.fresh(); + demoPerfs["StarGame"] = perf; +}; +{ + // Japanese + let perf = new TimedEvents(); + perf.push(new PointEvent(2, generateSwitch(8))); + perf.push(new PointEvent(7.5, generateSwitch(9))); + perf.fresh(); + demoPerfs["25Japan"] = perf; +}; +{ + // Clasitario + let perf = new TimedEvents(); + perf.push(new PointEvent(7.5, generateSwitch(2))); + perf.push(new PointEvent(21.5, generateSwitch(0))); + perf.push(new PointEvent(28.5, generateSwitch(2))); + perf.push(new PointEvent(53.5, generateSwitch(0))); + perf.push(new PointEvent(57.5, generateSwitch(2))); + perf.push(new PointEvent(93, generateSwitch(5))); + perf.push(new PointEvent(132, generateSwitch(2))); + perf.push(new PointEvent(160, generateSwitch(0))); + perf.push(new PointEvent(182.5, generateSwitch(2))); + perf.fresh(); + demoPerfs["AGDEMO3"] = perf; +}; +{ + // Kimi ga Iru dake de + let perf = new TimedEvents(); + perf.push(new PointEvent(12, generateSwitch(3))); + perf.fresh(); + demoPerfs["01KIMIGA"] = perf; +}; +{ + // Do-Re-Mi + let perf = new TimedEvents(); + perf.push(new PointEvent(15, generateSwitch(0))); + perf.push(new PointEvent(22, generateSwitch(1))); + perf.push(new PointEvent(30.5, generateSwitch(3))); + perf.push(new PointEvent(32.5, generateSwitch(2))); + perf.push(new PointEvent(38, generateSwitch(1))); + perf.push(new PointEvent(40, generateSwitch(3))); + perf.push(new PointEvent(42, generateSwitch(0))); + perf.push(new PointEvent(46, generateSwitch(7))); + perf.push(new PointEvent(47.8, generateSwitch(4))); + perf.push(new PointEvent(62.5, generateSwitch(11))); + perf.push(new PointEvent(77.5, generateSwitch(2))); + perf.push(new PointEvent(90, generateSwitch(11))); + perf.push(new PointEvent(104, generateSwitch(0))); + perf.push(new PointEvent(107.5, generateSwitch(1))); + perf.push(new PointEvent(121, generateSwitch(6))); + perf.push(new PointEvent(128, generateSwitch(1))); + perf.push(new PointEvent(141, generateSwitch(5))); + perf.push(new PointEvent(154.5, generateSwitch(12))); + perf.push(new PointEvent(168, generateSwitch(11))); + perf.push(new PointEvent(188, generateSwitch(3))); + perf.push(new PointEvent(210.5, generateSwitch(12))); + perf.push(new PointEvent(224, generateSwitch(11))); + perf.push(new PointEvent(237, generateSwitch(1))); + perf.push(new PointEvent(244, generateSwitch(5))); + perf.push(new PointEvent(253.5, generateSwitch(12))); + perf.fresh(); + demoPerfs["10DOREMI"] = perf; +}; +{ + // Haru yo Koi + let perf = new TimedEvents(); + perf.push(new PointEvent(5, generateSwitch(3))); + perf.push(new PointEvent(27.5, generateSwitch(0))); + perf.fresh(); + demoPerfs["haruyoko"] = perf; +}; +{ + // PhoenixA + let perf = new TimedEvents(); + perf.push(new PointEvent(0, generateString(` YAMAHA TONE GENERATOR `))); + perf.push(new PointEvent(0, generateSwitch(0))); + perf.push(new PointEvent(2.52, generateString(` YAMAHA TONE GENERATOR `))); + perf.push(new PointEvent(5.04, generateString(` YAMAHA TONE GENERATOR`))); + perf.push(new PointEvent(5.21, generateString(` YAMAHA TONE GENERATO`))); + perf.push(new PointEvent(5.37, generateString(` YAMAHA TONE GENERAT`))); + perf.push(new PointEvent(5.54, generateString(` YAMAHA TONE GENERA`))); + perf.push(new PointEvent(5.71, generateString(` YAMAHA TONE GENER`))); + perf.push(new PointEvent(5.87, generateString(` YAMAH TONE GENE`))); + perf.push(new PointEvent(6.04, generateString(` YAMA TONE GEN`))); + perf.push(new PointEvent(6.21, generateString(` YAM TONE GE`))); + perf.push(new PointEvent(6.38, generateString(` YA TONE G`))); + perf.push(new PointEvent(6.54, generateString(` Y TONE `))); + perf.push(new PointEvent(6.71, generateString(` TONE`))); + perf.push(new PointEvent(6.88, generateString(` TON`))); + perf.push(new PointEvent(7.04, generateString(` TO`))); + perf.push(new PointEvent(7.21, generateString(` T`))); + perf.push(new PointEvent(7.38, generateString(` `))); + perf.push(new PointEvent(7.52, generateString(` MU1000 `))); + perf.push(new PointEvent(8.14, generateString(` `))); + perf.push(new PointEvent(8.76, generateString(` MU1000 `))); + perf.push(new PointEvent(9.38, generateString(` `))); + perf.push(new PointEvent(10.08, generateString(` MU1000 `))); + perf.push(new PointEvent(10.49, generateString(` DU1000 `))); + perf.push(new PointEvent(10.92, generateString(` Db1000 0 `))); + perf.push(new PointEvent(11.33, generateString(` Dbl000 06 `))); + perf.push(new PointEvent(11.75, generateString(` DblC00 066 `))); + perf.push(new PointEvent(12.17, generateString(` DblCo0 066 `))); + perf.push(new PointEvent(12.59, generateString(` DblCon 066 0 `))); + perf.push(new PointEvent(13.01, generateString(` DblConG 066 00 `))); + perf.push(new PointEvent(13.42, generateString(` DblConGr 066 001`))); + perf.push(new PointEvent(27.98, generateSwitch(4))); + perf.push(new PointEvent(43.85, generateSwitch(10))); + perf.push(new PointEvent(63.33, generateSwitch(19))); + perf.push(new PointEvent(103.31, generateSwitch(34))); + perf.push(new PointEvent(109.52, generateSwitch(35))); + perf.push(new PointEvent(114.32, generateSwitch(32))); + perf.push(new PointEvent(119.36, generateSwitch(33))); + perf.push(new PointEvent(123.68, generateSwitch(36))); + perf.push(new PointEvent(128.91, generateSwitch(41))); + perf.push(new PointEvent(140.83, generateSwitch(45))); + perf.push(new PointEvent(153.29, generateSwitch(42))); + perf.push(new PointEvent(176.74, generateSwitch(2))); + perf.push(new PointEvent(178.27, generateString(` WindChim. SFX 070`))); + perf.push(new PointEvent(178.92, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(179.56, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(180.21, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(180.85, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(181.5, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(182.14, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(182.79, generateString(` WindChim . SFX 070`))); + perf.push(new PointEvent(183.43, generateString(` WindChim .SFX 070`))); + perf.push(new PointEvent(184.08, generateString(` BindChim .FX 070`))); + perf.push(new PointEvent(184.72, generateString(` BrndChim 0.X 070`))); + perf.push(new PointEvent(185.36, generateString(` BrtdChim 06. 070`))); + perf.push(new PointEvent(186.01, generateString(` BrtFChim 066.070`))); + perf.push(new PointEvent(186.66, generateString(` BrtFrhim 066 .70`))); + perf.push(new PointEvent(187.3, generateString(` BrtFrHim 066 0.0`))); + perf.push(new PointEvent(187.89, generateString(` BrtFrHrm 066 06.`))); + perf.push(new PointEvent(187.95, generateString(` BrtFrHrn 066 061`))); + perf.fresh(); + demoPerfs["PhoenixA"] = perf; +}; +{ + // PhoenixB + let perf = new TimedEvents(); + perf.push(new PointEvent(0, generateString(` BrtFrHrn 066 061`))); + perf.push(new PointEvent(0, generateSwitch(11))); + perf.push(new PointEvent(2.02, {type: 15, track: 0, data: [67, 16, 76, 6, 0, 64]})); + perf.push(new PointEvent(38.19, generateSwitch(9))); + perf.push(new PointEvent(40.05, generateSwitch(16))); + perf.push(new PointEvent(40.67, generateSwitch(34))); + perf.push(new PointEvent(44.61, generateSwitch(17))); + perf.push(new PointEvent(47.59, generateSwitch(32))); + perf.push(new PointEvent(53.64, generateSwitch(18))); + perf.push(new PointEvent(54.89, generateSwitch(32))); + perf.push(new PointEvent(56.01, generateSwitch(49))); + perf.push(new PointEvent(58.47, generateSwitch(9))); + perf.push(new PointEvent(61.79, generateSwitch(0))); + perf.push(new PointEvent(71.54, generateSwitch(1))); + perf.push(new PointEvent(78.46, generateSwitch(16))); + perf.push(new PointEvent(80.33, generateSwitch(0))); + perf.push(new PointEvent(83.43, generateSwitch(0))); + perf.push(new PointEvent(84.86, generateSwitch(0))); + perf.push(new PointEvent(87.83, generateSwitch(0))); + perf.push(new PointEvent(89.29, generateSwitch(1))); + perf.push(new PointEvent(93.61, generateSwitch(1))); + perf.push(new PointEvent(98.21, generateSwitch(16))); + perf.push(new PointEvent(102.93, generateSwitch(17))); + perf.push(new PointEvent(107.45, generateSwitch(16))); + perf.push(new PointEvent(107.78, generateSwitch(17))); + perf.push(new PointEvent(110.97, generateSwitch(32))); + perf.push(new PointEvent(111.98, generateSwitch(16))); + perf.push(new PointEvent(113.27, generateSwitch(34))); + perf.push(new PointEvent(114.18, generateSwitch(16))); + perf.push(new PointEvent(115.75, generateSwitch(17))); + perf.push(new PointEvent(123.01, generateSwitch(5))); + perf.push(new PointEvent(124.53, generateSwitch(7))); + perf.push(new PointEvent(126.06, generateSwitch(20))); + perf.push(new PointEvent(126.78, generateSwitch(32))); + perf.fresh(); + demoPerfs["PhoenixB"] = perf; +}; +{ + // Ninety Hipty + let perf = new TimedEvents(); + perf.push(new PointEvent(0.5, generateSwitch(1))); + perf.push(new PointEvent(19.7, generateSwitch(11))); + perf.push(new PointEvent(28.5, generateSwitch(12))); + perf.push(new PointEvent(37.4, generateSwitch(4))); + perf.push(new PointEvent(45.8, generateSwitch(2))); + perf.push(new PointEvent(50.6, generateSwitch(3))); + perf.push(new PointEvent(54.9, generateSwitch(4))); + perf.push(new PointEvent(74.4, generateSwitch(0))); + perf.push(new PointEvent(76.85, generateSwitch(9))); + perf.push(new PointEvent(81.75, generateSwitch(10))); + perf.push(new PointEvent(86.6, generateSwitch(25))); + perf.push(new PointEvent(96.7, generateSwitch(13))); + perf.push(new PointEvent(106.2, generateSwitch(22))); + perf.push(new PointEvent(111.25, generateSwitch(23))); + perf.push(new PointEvent(116.1, generateSwitch(17))); + perf.push(new PointEvent(121, generateSwitch(13))); + perf.push(new PointEvent(127.9, generateSwitch(8))); + perf.push(new PointEvent(138, generateSwitch(0))); + perf.fresh(); + demoPerfs["ninety_hipty"] = perf; +}; +{ + // The PF Theatre + let perf = new TimedEvents(); + perf.push(new PointEvent(0, generateSwitch(0))); + perf.fresh(); + demoPerfs["02THEATR"] = perf; +}; +{ + // Is it realy love? + let perf = new TimedEvents(); + perf.push(new PointEvent(1.8, generateSwitch(24))); + perf.push(new PointEvent(7.6, generateSwitch(29))); + perf.push(new PointEvent(10.53, generateSwitch(0))); + perf.push(new PointEvent(20.9, generateSwitch(22))); + perf.push(new PointEvent(28.47, generateSwitch(23))); + perf.push(new PointEvent(31.1, generateSwitch(3))); + perf.push(new PointEvent(38.88, generateSwitch(17))); + perf.push(new PointEvent(41.02, generateSwitch(5))); + perf.push(new PointEvent(48.59, generateSwitch(17))); + perf.push(new PointEvent(50.9, generateSwitch(0))); + perf.push(new PointEvent(70.7, generateSwitch(1))); + perf.push(new PointEvent(78.2, generateSwitch(17))); + perf.push(new PointEvent(80.79, generateSwitch(2))); + perf.push(new PointEvent(88.65, generateSwitch(1))); + perf.push(new PointEvent(90.02, generateSwitch(2))); + perf.push(new PointEvent(91.11, generateSwitch(1))); + perf.push(new PointEvent(92.43, generateSwitch(2))); + perf.push(new PointEvent(93.18, generateSwitch(0))); + perf.push(new PointEvent(112.9, generateSwitch(1))); + perf.push(new PointEvent(119, generateSwitch(17))); + perf.push(new PointEvent(122.64, generateSwitch(2))); + perf.push(new PointEvent(130.12, generateSwitch(15))); + perf.push(new PointEvent(132.73, generateSwitch(0))); + perf.push(new PointEvent(152.54, generateSwitch(1))); + perf.push(new PointEvent(158.66, generateSwitch(17))); + perf.push(new PointEvent(162.39, generateSwitch(2))); + perf.push(new PointEvent(166.24, generateSwitch(14))); + perf.push(new PointEvent(172.26, generateSwitch(8))); + perf.push(new PointEvent(182.23, generateSwitch(8))); + perf.push(new PointEvent(191.81, generateSwitch(23))); + perf.push(new PointEvent(193, generateSwitch(0))); + perf.fresh(); + demoPerfs["R-love"] = perf; +}; +{ + // The Musithm + let perf = new TimedEvents(); + perf.push(new PointEvent(2.5, generateSwitch(14))); + perf.push(new PointEvent(3.5, generateSwitch(3))); + perf.push(new PointEvent(30.5, generateSwitch(4))); + perf.push(new PointEvent(37.5, generateSwitch(3))); + perf.push(new PointEvent(78, generateSwitch(15))); + perf.fresh(); + demoPerfs["TheMusithm"] = perf; +}; +{ + // EP Ballade + let perf = new TimedEvents(); + perf.push(new PointEvent(0, generateSwitch(1))); + perf.push(new PointEvent(5, generateSwitch(0))); + perf.fresh(); + demoPerfs["12EP"] = perf; +}; +{ + // The Soul of DX + let perf = new TimedEvents(); + perf.push(new PointEvent(0, generateSwitch(0))); + perf.push(new PointEvent(34, generateSwitch(13))); + perf.push(new PointEvent(62.5, generateSwitch(0))); + perf.push(new PointEvent(164, generateSwitch(13))); + perf.fresh(); + demoPerfs["12SOULDX"] = perf; +}; +{ + // MU128 demo + let perf = new TimedEvents(); + // Disable native RS + perf.push(new PointEvent(0, {type: 15, track: 0, data: [67, 16, 73, 0, 0, 14, 0]})); + perf.push(new PointEvent(0, generateSwitch(0))); + perf.push(new PointEvent(1.6, generateSwitch(0))); + perf.push(new PointEvent(40.02, generateSwitch(48))); + perf.push(new PointEvent(41.68, generateSwitch(49))); + perf.push(new PointEvent(43.07, generateSwitch(50))); + perf.push(new PointEvent(44.65, generateSwitch(51))); + perf.push(new PointEvent(46.2, generateSwitch(52))); + perf.push(new PointEvent(47.74, generateSwitch(53))); + perf.push(new PointEvent(49.29, generateSwitch(54))); + perf.push(new PointEvent(50.83, generateSwitch(55))); + perf.push(new PointEvent(52.38, generateSwitch(56))); + perf.push(new PointEvent(53.92, generateSwitch(58))); + perf.push(new PointEvent(55.47, generateSwitch(59))); + perf.push(new PointEvent(57.02, generateSwitch(48))); + perf.push(new PointEvent(69.56, generateSwitch(8))); + perf.push(new PointEvent(70.54, generateSwitch(9))); + perf.push(new PointEvent(71.52, generateSwitch(10))); + perf.push(new PointEvent(72.5, generateSwitch(11))); + perf.push(new PointEvent(73.48, generateSwitch(12))); + perf.push(new PointEvent(74.46, generateSwitch(13))); + perf.push(new PointEvent(75.44, generateSwitch(14))); + perf.push(new PointEvent(76.42, generateSwitch(15))); + perf.push(new PointEvent(77.4, generateSwitch(8))); + perf.push(new PointEvent(81.18, generateSwitch(0))); + perf.push(new PointEvent(82.15, generateSwitch(1))); + perf.push(new PointEvent(83.12, generateSwitch(2))); + perf.push(new PointEvent(84.09, generateSwitch(3))); + perf.push(new PointEvent(85.06, generateSwitch(4))); + perf.push(new PointEvent(86.03, generateSwitch(5))); + perf.push(new PointEvent(87.0, generateSwitch(6))); + perf.push(new PointEvent(87.97, generateSwitch(7))); + perf.push(new PointEvent(88.94, generateSwitch(0))); + perf.push(new PointEvent(96.66, generateSwitch(16))); + perf.push(new PointEvent(98.15, generateSwitch(17))); + perf.push(new PointEvent(99.63, generateSwitch(18))); + perf.push(new PointEvent(101.12, generateSwitch(19))); + perf.push(new PointEvent(102.6, generateSwitch(20))); + perf.push(new PointEvent(104.09, generateSwitch(21))); + perf.push(new PointEvent(105.57, generateSwitch(22))); + perf.push(new PointEvent(107.06, generateSwitch(23))); + perf.push(new PointEvent(108.54, generateSwitch(24))); + perf.push(new PointEvent(110.03, generateSwitch(25))); + perf.push(new PointEvent(111.51, generateSwitch(26))); + perf.push(new PointEvent(112.99, generateSwitch(27))); + perf.push(new PointEvent(114.48, generateSwitch(28))); + perf.push(new PointEvent(115.97, generateSwitch(29))); + perf.push(new PointEvent(117.45, generateSwitch(30))); + perf.push(new PointEvent(118.94, generateSwitch(31))); + perf.push(new PointEvent(120.42, generateSwitch(16))); + perf.push(new PointEvent(122.34, generateSwitch(5))); + perf.push(new PointEvent(158.26, generateSwitch(0))); + perf.fresh(); + demoPerfs["MU128DEMO"] = perf; +}; diff --git a/src/fakeQy/index.js b/src/fakeQy/index.js new file mode 100644 index 00000000..53602dd0 --- /dev/null +++ b/src/fakeQy/index.js @@ -0,0 +1,260 @@ +"use strict"; + +import {} from "../../libs/lightfelt@ltgcgo/main/cssClass.js"; +import {$e, $a} from "../../libs/lightfelt@ltgcgo/main/quickPath.js"; +import QyDisplay from "../disp/disp_qy.mjs"; +import {fileOpen} from "../../libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js"; +import { + getBridge +} from "../bridge/index.mjs"; +import {SheetData} from "../basic/sheetLoad.js"; + +let demoBlobs = {}; +let demoModes = []; +demoModes[9] = "gm"; +let useMidiBus = false; +let demoId = 0; + +// Standard switching +let stSwitch = $a("b.mode"); +let stSwitchMode = []; +stSwitch.to = function (i) { + stSwitch.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stSwitch[i].classList.on("active"); + }; +}; +stSwitch.forEach(function (e, i, a) { + stSwitchMode[i] = e.title; + e.addEventListener("click", function () { + visualizer.switchMode(e.title, true); + stSwitch.to(i); + }); +}); + +// Standard demo switching +let demoPool = new SheetData(); +let stList = $e("span#demo-list"), stDemo = []; +const srcPaths = ['../../midi-demo-data/collection/octavia/', './demo/']; +let getBlobFrom = async function (filename) { + let i = 0; + while (i < srcPaths.length) { + let e = srcPaths[i]; + let response = await fetch(`${e}${filename}`); + if (response.status < 400) { + return response; + }; + i ++; + }; + console.error(`Loading of data ${filename} failed.`); +}; +let codepointArray = function (string) { + let arr = new Uint16Array(string.length); + arr.forEach((e, i, a) => { + a[i] = string.charCodeAt(i); + }); + return arr; +}; +getBlobFrom(`list.tsv`).then(async (response) => { + await demoPool.load(await response.text()); + //console.info(demoPool.data); + demoPool.data.forEach((e, i) => { + if (i) { + let space = document.createElement("span"); + space.innerHTML = " "; + stList.appendChild(space); + } else { + stList.innerText = ""; + }; + let demoChoice = document.createElement("b"); + demoChoice.innerText = e.text; + demoChoice.title = e.file; + demoChoice.classList.on("demo"); + stDemo.push(demoChoice); + stList.appendChild(demoChoice); + }); + stDemo.to = function (i) { + stDemo.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stDemo[i].classList.on("active"); + }; + }; + stDemo.forEach(function (e, i, a) { + e.addEventListener("click", async function () { + audioPlayer.pause(); + if (!demoBlobs[e.title]?.midi) { + demoBlobs[e.title] = {}; + audioPlayer.src = "about:blank"; + demoBlobs[e.title].midi = await (await getBlobFrom(`${e.title}.mid`)).blob(); + demoBlobs[e.title].wave = await (await getBlobFrom(`${e.title}.opus`)).blob(); + }; + audioPlayer.currentTime = 0; + visualizer.reset(); + visualizer.loadFile(demoBlobs[e.title].midi); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = demoBlobs[e.title].wave; + audioPlayer.src = URL.createObjectURL(audioBlob); + if (demoModes[i]?.length > 0) { + visualizer.switchMode(demoModes[i]); + }; + stDemo.to(i); + demoId = i; + visualizer.device.setLetterDisplay(codepointArray(`\x8a${demoPool.data[i].artist.slice(0, 15).padEnd(15, " ")}\x8b${demoPool.data[i].title.slice(0, 15)}`)); + }); + }); +}); + +// Start the visualizers +self.visualizer = new QyDisplay(); +visualizer.addEventListener("reset", function (e) { + visualizer.songTitle = ""; + console.info("Processor reset."); +}); + +// Listen to mode switches +visualizer.addEventListener("mode", function (ev) { + stSwitch.to(stSwitchMode.indexOf(ev.data)); +}); + +// Open the files +let midwIndicator = $e("#openMidw"); +let audioBlob; +const propsMid = JSON.parse('{"extensions":[".mid",".MID",".kar",".KAR",".syx",".SYX",".s7e",".S7E"],"startIn":"music","id":"midiOpener","description":"Open a MIDI file"}'), +propsAud = JSON.parse('{"mimeTypes":["audio/*"],"startIn":"music","id":"audioOpener","description":"Open an audio file"}'); +$e("#openMidi").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + let file = await fileOpen(propsMid); + let fileSplit = file.name.lastIndexOf("."), ext = ""; + if (fileSplit > -1) { + ext = file.name.slice(fileSplit + 1).toLowerCase(); + }; + switch (ext) { + case "syx": { + // Load SysEx blobs + visualizer.sendCmd({type: 15, track: 0, data: new Uint8Array(await file.arrayBuffer())}); + break; + }; + case "s7e": { + // Load sound banks + visualizer.device.loadBank(ext, file); + break; + }; + default: { + // Load MIDI files + stDemo.to(-1); + visualizer.reset(); + visualizer.loadFile(file); + visualizer.device.initOnReset = false; + }; + }; +}); +$e("#openAudio").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await fileOpen(propsAud); + audioPlayer.src = URL.createObjectURL(audioBlob); +}); +midwIndicator.addEventListener("click", function () { + stDemo.to(-1); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = null; + audioPlayer.src = ""; + visualizer.reset(); + useMidiBus = true; + midwIndicator.classList.on("active"); +}); + +visualizer.addEventListener("meta", function (ev) { + if (!visualizer.songTitle) { + ev.data.forEach(function (e) { + if (!visualizer.songTitle && e.meta == 3) { + visualizer.songTitle = e.data; + }; + }); + }; +}); + +// Get canvas +let dispCanv = $e("#qyScreen"); +let dispCtx = dispCanv.getContext("2d"); +let mixerView = false; +dispCanv.addEventListener("wheel", function (ev) { + ev.preventDefault(); + let ch = visualizer.getCh(); + if (ev.deltaY > 0) { + visualizer.setCh(ch + 1); + } else { + visualizer.setCh(ch - 1); + }; + ev.preventDefault(); + ev.stopImmediatePropagation(); +}); +/* dispCanv.addEventListener("contextmenu", function (ev) { + ev.preventDefault(); + ev.stopImmediatePropagation(); +}); */ +dispCanv.addEventListener("mousedown", function (ev) { + let ch = visualizer.getCh(); + if (ev.button == 0) { + if (ev.offsetX < 64) { + visualizer.setCh(ch - 1); + } else if (ev.offsetX >= 717) { + visualizer.setCh(ch + 1); + } else if (ev.offsetY < 72) { + mixerView = !mixerView; + }; + }; +}); + +// Allow channel switching in browser console +self.toCh = function (ch) { + visualizer.setCh(ch); +}; + +// Render frames +let audioPlayer = $e("#audioPlayer"); +audioPlayer.onended = function () { + visualizer.reset(); + audioPlayer.currentTime = 0; +}; +(async function () { + visualizer.reset(); + let midiBlob = await (await fetch("./demo/KANDI8.mid")).blob(); + demoBlobs.KANDI8 = {}; + demoBlobs.KANDI8.midi = midiBlob; + visualizer.loadFile(midiBlob); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await (await fetch("./demo/KANDI8.opus")).blob(); + demoBlobs.KANDI8.wave = audioBlob; + audioPlayer.src = URL.createObjectURL(audioBlob); +})(); +let lastTime = 0; +let renderThread = setInterval(function () { + if (/*!audioPlayer.paused*/true) { + let curTime = audioPlayer.currentTime - (self.audioDelay || 0); + if (curTime < lastTime) { + }; + visualizer.render(curTime, dispCtx, mixerView, useMidiBus ? 0 : demoId); + lastTime = curTime; + }; +}, 20); + +getBridge().addEventListener("message", function (ev) { + if (useMidiBus) { + visualizer.sendCmd(ev.data); + }; +}); diff --git a/src/fakeSc/index.js b/src/fakeSc/index.js new file mode 100644 index 00000000..a1ca59ea --- /dev/null +++ b/src/fakeSc/index.js @@ -0,0 +1,258 @@ +"use strict"; + +import {} from "../../libs/lightfelt@ltgcgo/main/cssClass.js"; +import {$e, $a} from "../../libs/lightfelt@ltgcgo/main/quickPath.js"; +import ScDisplay from "../disp/disp_sc.mjs"; +import {fileOpen} from "../../libs/browser-fs-access@GoogleChromeLabs/browser_fs_access.min.js"; +import { + getBridge +} from "../bridge/index.mjs"; +import {SheetData} from "../basic/sheetLoad.js"; + +let demoBlobs = {}; +let demoModes = []; +demoModes[9] = "gm"; +let useMidiBus = false; + +// Standard switching +let stSwitch = $a("b.mode"); +let stSwitchMode = []; +stSwitch.to = function (i) { + stSwitch.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stSwitch[i].classList.on("active"); + }; +}; +stSwitch.forEach(function (e, i, a) { + stSwitchMode[i] = e.title; + e.addEventListener("click", function () { + visualizer.switchMode(e.title, true); + stSwitch.to(i); + }); +}); + +// Standard demo switching + +let demoPool = new SheetData(); +let stList = $e("span#demo-list"), stDemo = []; +const srcPaths = ['../../midi-demo-data/collection/octavia/', './demo/']; +let getBlobFrom = async function (filename) { + let i = 0; + while (i < srcPaths.length) { + let e = srcPaths[i]; + let response = await fetch(`${e}${filename}`); + if (response.status < 400) { + return response; + }; + i ++; + }; + console.error(`Loading of data ${filename} failed.`); +}; +getBlobFrom(`list.tsv`).then(async (response) => { + await demoPool.load(await response.text()); + //console.info(demoPool.data); + demoPool.data.forEach((e, i) => { + if (i) { + let space = document.createElement("span"); + space.innerHTML = " "; + stList.appendChild(space); + } else { + stList.innerText = ""; + }; + let demoChoice = document.createElement("b"); + demoChoice.innerText = e.text; + demoChoice.title = e.file; + demoChoice.classList.on("demo"); + stDemo.push(demoChoice); + stList.appendChild(demoChoice); + }); + stDemo.to = function (i) { + stDemo.forEach(function (e) { + e.classList.off("active"); + }); + if (i > -1) { + stDemo[i].classList.on("active"); + }; + }; + stDemo.forEach(function (e, i, a) { + e.addEventListener("click", async function () { + audioPlayer.pause(); + let demoId = e.innerText.charCodeAt(0); + if (demoId <= 122 && demoId > 96) { + demoId -= 32; + }; + visualizer.device.setLetterDisplay([76, 111, 97, 100, 105, 110, 103, 32, 100, 101, 109, 111, 32, demoId]); + if (!demoBlobs[e.title]?.midi) { + demoBlobs[e.title] = {}; + audioPlayer.src = "about:blank"; + demoBlobs[e.title].midi = await (await getBlobFrom(`${e.title}.mid`)).blob(); + demoBlobs[e.title].wave = await (await getBlobFrom(`${e.title}.opus`)).blob(); + }; + audioPlayer.currentTime = 0; + visualizer.reset(); + visualizer.loadFile(demoBlobs[e.title].midi); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = demoBlobs[e.title].wave; + audioPlayer.src = URL.createObjectURL(audioBlob); + if (demoModes[i]?.length > 0) { + visualizer.switchMode(demoModes[i]); + }; + visualizer.device.setLetterDisplay([76, 111, 97, 100, 101, 100, 32, 100, 101, 109, 111, 32, demoId]); + stDemo.to(i); + }); + }); +}); + +let title = ""; +// Start the visualizers +self.visualizer = new ScDisplay(); +visualizer.addEventListener("reset", function (e) { + console.info("Processor reset."); + title = ""; +}); + +// Listen to mode switches +visualizer.addEventListener("mode", function (ev) { + stSwitch.to(stSwitchMode.indexOf(ev.data)); + let textArr = Array.from(`Sys:${{"g2":"GM2","mt32":"MT-32","ag10":"AG-10","05rw":"05R/W","k11":"GMega","krs":"KROSS 2","s90es":"S90 ES","motif":"Motif ES"}[ev.data]||ev.data.toUpperCase()}`); + textArr.forEach((e, i, a) => { + a[i] = e.charCodeAt(0); + }); + visualizer.device.setLetterDisplay(textArr); +}); +visualizer.addEventListener("meta", function (ev) { + if (!title) { + ev.data.forEach(function (e) { + if (!title && e.meta == 3) { + title = e.data; + }; + }); + if (title) { + let textCmd = []; + Array.from(title).forEach(function (e) { + let charCode = e.charCodeAt(0); + if (charCode < 128) { + textCmd.push(charCode); + }; + }); + visualizer.device.setLetterDisplay(textCmd); + }; + }; +}); + +// Open the files +let midwIndicator = $e("#openMidw"); +let audioBlob; +const propsMid = JSON.parse('{"extensions":[".mid",".MID",".kar",".KAR",".syx",".SYX",".s7e",".S7E"],"startIn":"music","id":"midiOpener","description":"Open a MIDI file"}'), +propsAud = JSON.parse('{"mimeTypes":["audio/*"],"startIn":"music","id":"audioOpener","description":"Open an audio file"}'); +$e("#openMidi").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + let file = await fileOpen(propsMid); + let fileSplit = file.name.lastIndexOf("."), ext = ""; + if (fileSplit > -1) { + ext = file.name.slice(fileSplit + 1).toLowerCase(); + }; + switch (ext) { + case "syx": { + // Load SysEx blobs + visualizer.sendCmd({type: 15, track: 0, data: new Uint8Array(await file.arrayBuffer())}); + break; + }; + case "s7e": { + // Load sound banks + visualizer.device.loadBank(ext, file); + break; + }; + default: { + // Load MIDI files + stDemo.to(-1); + visualizer.reset(); + visualizer.loadFile(file); + visualizer.device.initOnReset = false; + }; + }; +}); +$e("#openAudio").addEventListener("click", async function () { + useMidiBus = false; + midwIndicator.classList.off("active"); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + visualizer.sendCmd({type: 15, track: 0, data: [67, 16, 76, 6, 0, 0, 76, 111, 97, 100, 105, 110, 103, 32, 97, 117, 100, 105, 111, 32, 102, 105, 108, 101]}); + audioBlob = await fileOpen(propsAud); + audioPlayer.src = URL.createObjectURL(audioBlob); + visualizer.sendCmd({type: 15, track: 0, data: [67, 16, 76, 6, 0, 0, 65, 117, 100, 105, 111, 32, 108, 111, 97, 100, 101, 100]}); +}); +midwIndicator.addEventListener("click", function () { + stDemo.to(-1); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = null; + audioPlayer.src = ""; + visualizer.reset(); + useMidiBus = true; + midwIndicator.classList.on("active"); +}); + +// Get canvas +let dispCanv = $e("#rlndSc"); +let dispCtx = dispCanv.getContext("2d"); +dispCanv.addEventListener("wheel", function (ev) { + ev.preventDefault(); + let ch = visualizer.getCh(); + if (ev.deltaY > 0) { + visualizer.setCh(ch + 1); + } else { + visualizer.setCh(ch - 1); + }; +}); +dispCanv.addEventListener("mousedown", function (ev) { + let ch = visualizer.getCh(); + if (ev.offsetX < 64) { + visualizer.setCh(ch - 1); + } else if (ev.offsetX >= 776) { + visualizer.setCh(ch + 1); + }; +}); + +// Render frames +let audioPlayer = $e("#audioPlayer"); +audioPlayer.onended = function () { + visualizer.reset(); + audioPlayer.currentTime = 0; +}; +(async function () { + visualizer.reset(); + let midiBlob = await (await fetch("./demo/KANDI8.mid")).blob(); + demoBlobs.KANDI8 = {}; + demoBlobs.KANDI8.midi = midiBlob; + visualizer.loadFile(midiBlob); + if (audioBlob) { + URL.revokeObjectURL(audioBlob); + }; + audioBlob = await (await fetch("./demo/KANDI8.opus")).blob(); + demoBlobs.KANDI8.wave = audioBlob; + audioPlayer.src = URL.createObjectURL(audioBlob); +})(); +let lastTime = 0; +let renderThread = setInterval(function () { + if (/*!audioPlayer.paused*/true) { + let curTime = audioPlayer.currentTime - (self.audioDelay || 0); + if (curTime < lastTime) { + }; + visualizer.render(curTime, dispCtx); + lastTime = curTime; + }; +}, 20); + +getBridge().addEventListener("message", function (ev) { + if (useMidiBus) { + visualizer.sendCmd(ev.data); + }; +}); diff --git a/src/state/.prefix.js b/src/state/.prefix.js new file mode 100644 index 00000000..3918c74e --- /dev/null +++ b/src/state/.prefix.js @@ -0,0 +1 @@ +"use strict"; diff --git a/src/state/bankDecoder.js b/src/state/bankDecoder.js new file mode 100644 index 00000000..8602e942 --- /dev/null +++ b/src/state/bankDecoder.js @@ -0,0 +1,127 @@ +"use strict"; + +import {BlobDecoder} from "./decoders.mjs"; + +// Utils +let same = function (origin, arr) { + let same = true; + arr.forEach((e, i) => { + same = same && origin[i] == e; + }); + return same; +}; +let readInt = function (arr) { + let sum = 0; + arr.forEach((e) => { + sum *= 256; + sum += e; + }); + return sum; +}; +let utf8Dec = new TextDecoder(); + +// Register decoders +let bankDecoder = new BlobDecoder(); +bankDecoder.set("s7e", async function (blob) { + let s7eBlob = new Uint8Array(await blob.slice(0, 65536).arrayBuffer()); + let voiceMap = "MSB LSB PRG NME"; + // Constants + const nullHead = [0, 0, 0, 0]; + const globalOffset = 32; + let ptr = 0, mode = 0, resume = true; + let sections = [], sectPtr = 0; + while (resume) { + let rwin = s7eBlob.subarray(ptr); + ([() => { + // Waiting for header read + if (utf8Dec.decode(rwin.subarray(0, 4)) == "YSFC") { + ptr += 80; + mode = 1; + } else { + ptr ++; + }; + }, () => { + // Read offsets of each section + if (same(rwin.subarray(0, 4), nullHead)) { + sections.forEach((e, i, a) => { + let length = readInt(s7eBlob.subarray(e.start + 4, e.start + 8)); + e.length = length; + }); + mode = 2; + } else { + let type = utf8Dec.decode(rwin.subarray(0, 4)), + start = readInt(rwin.subarray(4, 8)); + //console.error(`Section ${type} begins at ${start}.`); + sections.push({type, start}); + ptr += 8; + }; + }, () => { + // Read sections + let section = sections[sectPtr]; + let sectWin = s7eBlob.subarray(section.start, section.start + section.length); + let entryLen = 32; + switch (section.type) { + case "ENVC": { + // Encoded Normal Voice Config + let entryStart = globalOffset; + while (entryStart < sectWin.length) { + let entryWin = sectWin.subarray(entryStart, entryStart + entryLen); + let voiceName = utf8Dec.decode(entryWin.subarray(0, 10)).trimEnd(); + if (voiceName.slice(0, 5) == "Init ") { + voiceName = ""; + }; + if (voiceName) { + voiceMap += `\n063 ${(entryWin[17] + 13).toString().padStart(3, "0")} ${entryWin[19].toString().padStart(3, "0")} ${voiceName}`; + }; + entryStart += entryLen; + }; + break; + }; + case "EDVC": { + // Encoded Drum Voice Config + let entryStart = globalOffset; + while (entryStart < sectWin.length) { + let entryWin = sectWin.subarray(entryStart, entryStart + entryLen); + let voiceName = utf8Dec.decode(entryWin.subarray(0, 10)).trimEnd(); + if (voiceName.slice(0, 5) == "Init ") { + voiceName = ""; + }; + if (voiceName) { + voiceMap += `\n063 024 ${entryWin[19].toString().padStart(3, "0")} ${voiceName}`; + }; + entryStart += entryLen; + }; + break; + }; + case "EPVC": { + // Encoded Plugin Voice Config + let entryLen = 32, entryStart = globalOffset; + while (entryStart < sectWin.length) { + let entryWin = sectWin.subarray(entryStart, entryStart + entryLen); + let voiceName = utf8Dec.decode(entryWin.subarray(0, 10)).trimEnd(); + if (voiceName == "----------") { + voiceName = ""; + }; + if (voiceName) { + voiceMap += `\n063 ${(entryWin[17] + 1).toString().padStart(3, "0")} ${entryWin[19].toString().padStart(3, "0")} ${voiceName}`; + }; + entryStart += entryLen; + }; + break; + }; + }; + sectPtr ++; + if (sectPtr >= sections.length) { + mode = 3; + resume = false; + }; + }][mode] || (() => { + resume = false; + }))(); + }; + return voiceMap; +}); + +export { + bankDecoder +}; diff --git a/src/state/bankReader.js b/src/state/bankReader.js new file mode 100644 index 00000000..fa68f3d1 --- /dev/null +++ b/src/state/bankReader.js @@ -0,0 +1,534 @@ +"use strict"; + +import {ccToPos} from "../state/index.mjs"; + +const sgCrit = ["MSB", "PRG", "LSB"]; + +let halfHex = function (n) { + let segA = Math.floor(n / 10), segB = n % 10; + return `${segA.toString(16)}${segB}`; +}; + +let VoiceBank = class { + #bankInfo; + strictMode = false; + get(msb = 0, prg = 0, lsb = 0, mode) { + let sid = [msb, prg, lsb]; + let bankName; + let args = Array.from(arguments); + switch (mode) { + case "xg": { + if (msb == 32) { + args[2] += 4; // PLG-150AP redirection + } else if (msb == 33 || msb == 35 || msb == 36) { + args[2] += 5; // PLG-150VL/DX/AN redirection + } else if (msb == 79) { + args[0] = 95; // PLG-150DR + PLG-150PC redirection + } else if (msb == 80) { + args[0] = 96; // PLG-150PF + PLG-150AP redirection + } else if (msb == 81) { + args[0] = 97; // PLG-150VL redirection + } else if (msb == 82) { + args[0] = 98; // PLG-100SG redirection + } else if (msb == 83) { + args[0] = 99; // PLG-100DX redirection + } else if (msb == 84) { + args[0] = 100; // PLG-100AN redirection + }; + break; + }; + case "gs": { + if (msb == 0 && lsb < 5) { + args[2] = 0; + } else if (msb > 125 && lsb < 5 && lsb != 2) { + // Temporary fix for C/M bank under SC-55 mode + // SC-88 do care incorrect LSB selection + args[2] = msb; + args[0] = 0; + }; + break; + }; + case "sg": { + if (msb == 8 && lsb == 0) { + args[2] = 5; + }; + break; + }; + case "s90es": { + if (lsb < 8) { + args[2] += 17; + } else if (lsb < 32) { + args[2] += 13; + } else { + args[2] = (args[2] >> 3) + 19; + }; + break; + }; + case "motif": { + if (lsb < 8) { + args[2] += 28; + } else if (lsb < 32) { + args[2] += 13; + } else { + args[2] = (args[2] >> 3) + 19; + }; + break; + }; + }; + let ending = " ", sect = `M`, useLsb = false, baseShift = 0; + // Section test + switch (args[0]) { + case 0: { + if (args[2] == 127) { + sect = "MT-a"; + } else if (args[2] == 126) { + sect = "MT-b"; + } else if (args[2] == 7) { + sect = "GM-k"; // KAWAI GMega LX + } else if (args[2] == 5) { + sect = "SG-a"; // AKAI SG01k + } else if (args[2] == 4) { + sect = "SP-l"; // KAWAI GMega SP + } else if (args[2] == 0) { + sect = "GM-a"; + } else if (mode == "gs" && args[2] < 5) { + sect = "GM-a"; + } else { + sect = "y"; + useLsb = true; + }; + break; + }; + case 8: { + if (mode == "sg") { + sect = "GM-s"; + } else { + sect = "r:"; + }; + break; + }; + case 48: { + sect = `yM${(args[2] >> 3).toString().padStart(2, "0")}`; + useLsb = true; + break; + }; + case 56: { + sect = "GM-b"; + break; + }; + case 61: + case 120: { + sect = "rDrm"; + break; + }; + case 62: { + sect = "kDrm"; + break; + }; + case 63: { + if (args[2] < 17) { + let kLsb = args[2]; + sect = (kLsb < 10) ? "kP:" : "kC:"; + sect += kLsb % 10; + } else if (args[2] < 34) { + sect = ["Pre1", "Pre2", "Pre3", "Pre4", "Usr1", "Usr2", "DrmP", "DrmU", "Plg1", "Plg2", "Plg3", "Pre1", "Pre2", "Pre3", "Pre4", "Pre5", "Pre6"][args[2] - 17]; + } else { + sect = `Ds`; + }; + break; + }; + case 64: { + sect = "ySFX"; + break; + }; + case 67: { + sect = "DX:S"; + break; + }; + case 80: + case 81: + case 82: + case 83: { + sect = `Prg${"UABC"[args[0] - 80]}`; + break; + }; + case 88: + case 89: + case 90: + case 91: { + sect = `Cmb${"UABC"[args[0] - 88]}`; + break; + }; + case 95: { + sect = `${["DR", "PC"][args[2]]}-d`; + break; + }; + case 96: { + sect = (args[2] == 106 ? "AP-a" : "PF"); + if (args[2] > 63) { + baseShift = 63; + }; + useLsb = true; + break; + }; + case 97: { + sect = "VL:"; + useLsb = true; + baseShift = 112; + break; + }; + case 98: { + sect = "SG-a"; + break; + }; + case 99: { + sect = `DX`; + if (args[2] > 63) { + baseShift = 63; + }; + useLsb = true; + break; + }; + case 100: { + sect = `AN`; + if (args[2] > 63) { + baseShift = 63; + }; + useLsb = true; + break; + }; + case 121: { + sect = `GM-${args[2] ? "" : "a"}`; + useLsb = true; + break; + }; + case 122: { + sect = "lDrm"; + break; + }; + case 126: { + sect = "yDrS"; + break; + }; + case 127: { + if (args[2] == 127) { + sect = "rDrm"; + } else { + sect = "yDrm"; + }; + break; + }; + default: { + if (args[0] < 48) { + sect = "r:"; + } else { + sect = "M"; + }; + }; + }; + if (sect.length < 4) { + sect += `${(useLsb ? lsb : msb) - baseShift}`.padStart(4 - sect.length, "0"); + }; + // Hijack XG MU2000 sampler + if (mode == "xg" && msb == 16) { + bankName = `Voice${(lsb * 128 + prg + 1).toString().padStart(3, "0")}`; + ending = " "; + }; + // Internal ID + let iid = [args[0], args[1], args[2]]; + // Bank read + while (!(bankName?.length >= 0)) { + bankName = this.#bankInfo[args[1] || 0][(args[0] << 7) + args[2]]; + if (!bankName) { + if (!this.strictMode) { + /* if (mode != "gs" && mode != "ns5r") { + args[2] = 0; + ending = "^"; + }; */ + if (!this.#bankInfo[args[1] || 0][args[0] << 7]) { + if (msb == 48) { + args[0] = 0; + args[2] = 0; + ending = "!"; + } else if (msb == 62) { + args[1] --; + ending = " "; + if (args[1] < 1 && !bankName?.length) { + args[0] = 0; + ending = "!"; + }; + } else if (msb < 63) { + if (args[0] == 0) { + args[2] = 0; + ending = "^"; + } else { + if (args[2] < 1) { + args[0] = 0; + ending = "*"; + } else { + args[2] --; // Descending bank search + }; + }; + } else if (msb == 80) { + bankName = `PrgU:${prg.toString().padStart(3, "0")}`; + ending = "!"; + } else if (msb == 88) { + bankName = `CmbU:${prg.toString().padStart(3, "0")}`; + ending = "!"; + } else if (msb == 121) { + bankName = `GM2Vox0${lsb}`; + ending = "#"; + } else if (msb == 122) { + if (args[1] == 32) { + args[1] == 0; + } else { + args[1] %= 7; + }; + bankName = this.#bankInfo[args[1] || 0][(args[0] << 7) + args[2]]; + if (bankName) { + ending = " "; + } else { + bankName = ""; + ending = "*"; + }; + } else if (args[1] == 0) { + bankName = `${msb.toString().padStart(3, "0")} ${prg.toString().padStart(3, "0")} ${lsb.toString().padStart(3, "0")}`; + ending = "!"; + } else { + if (args[0] == 0) { + args[2] = 0; + ending = "^"; + } else if (args[2] > 0) { + args[2] --; + } else if (args[1] > 0) { + args[1] = 0; + ending = "!"; + } else { + args[0] = 0; + ending = "?"; + }; + }; + } else { + if (args[0] == 0) { + args[2] = 0; + ending = "^"; + } else if (args[2] < 1) { + args[0] = 0; + ending = "*"; + } else { + args[2] --; // Descending bank search + ending = "^"; + }; + }; + } else { + bankName = ""; + ending = "?"; + }; + }; + }; + // End ID + let eid = [args[0], args[1], args[2]]; + if ((mode == "gs" || mode == "ns5r") && ending == "^") { + ending = " "; + }; + if (msb == 127 && ending == "^") { + ending = " "; + }; + if (ending != " ") { + if (self.debugMode) { + bankName = ""; + }; + }; + let standard = "??"; + switch (args[0]) { + case 0: { + if (args[2] == 0) { + standard = "GM"; + } else if (args[2] == 5 || args[2] == 7) { + standard = "KG"; + } else if (args[2] < 120) { + standard = "XG"; + } else if (args[2] == 127) { + standard = "MT"; + }; + break; + }; + case 48: { + standard = "MU"; // MU-100 Native + break; + }; + case 56: { + standard = "AG"; + break; + }; + case 61: + case 80: + case 83: + case 88: + case 89: + case 91: { + standard = "AI"; + break; + }; + case 62: + case 82: + case 90: { + standard = "XD"; + break; + }; + case 63: { + if (args[2] < 17) { + standard = "KR"; + } else if (args[2] < 34) { + standard = "ES"; + } else { + standard = "DS"; + }; + break; + }; + case 64: + case 126: { + standard = "XG"; + break; + }; + case 67: + case 99: { + standard = "DX"; // PLG-150DX + break; + }; + case 81: { + standard = "RW"; + break; + }; + case 95: { + standard = ["DR", "PC"][args[2]]; // PLG-150DR/PC + break; + }; + case 96: { + standard = args[2] == 106 ? "AP" : "PF"; + break; + }; + case 97: { + standard = "VL"; // PLG-150VL / SONDIUS-XG + break; + }; + case 98: { + standard = "SG"; // PLG-100SG + break; + }; + case 100: { + standard = "AN"; // PLG-150AN + break; + }; + case 120: { + standard = "GS"; + break; + }; + case 121: { + standard = args[2] ? "G2" : "GM"; + break; + }; + case 122: { + standard = "KG"; + break; + }; + case 127: { + standard = args[2] == 127 ? "MT" : (prg == 0 ? "GM" : "XG"); + break; + }; + default: { + if (args[0] < 48) { + if (args[0] == 16 && mode == "xg") { + standard = "XG"; + } else { + standard = "GS"; + }; + }; + }; + }; + return { + name: bankName || `${halfHex(msb || 0)} ${halfHex(prg || 0)} ${halfHex(lsb || 0)}`, + iid, + eid, + sid, + ending, + sect, + standard + }; + }; + async load(text, allowOverwrite, name) { + let upThis = this; + let sig = []; // Significance + let loadCount = 0, allCount = 0; + text.split("\n").forEach(function (e, i) { + let assign = e.split("\t"), to = []; + if (i == 0) { + assign.forEach(function (e0, i0) { + sig[sgCrit.indexOf(e0)] = i0; + }); + //console.debug(`Bank map significance: ${sig}`); + } else { + assign.forEach(async function (e1, i1) { + if (i1 > 2) { + upThis.#bankInfo[to[sig[1]]] = upThis.#bankInfo[to[sig[1]]] || []; + if (!upThis.#bankInfo[to[sig[1]]][(to[sig[0]] << 7) + to[sig[2]]]?.length || allowOverwrite) { + upThis.#bankInfo[to[sig[1]]][(to[sig[0]] << 7) + to[sig[2]]] = assign[3]; + loadCount ++; + } else { + //console.debug(`Skipped overwriting ${to[sig[0]]},${to[sig[1]]},${to[sig[2]]}: [${upThis.#bankInfo[to[sig[1]]][(to[sig[0]] << 7) + to[sig[2]]]}] to [${assign[3]}]`); + }; + allCount ++; + } else { + to.push(parseInt(assign[i1])); + }; + }); + }; + }); + if (!allowOverwrite) { + console.debug(`Map "${name || "(internal)"}": ${allCount} total, ${loadCount} loaded.`); + }; + }; + clearRange(options) { + let prg = options.prg != undefined ? (options.prg.constructor == Array ? options.prg : [options.prg, options.prg]) : [0, 127], + msb = options.msb != undefined ? (options.msb.constructor == Array ? options.msb : [options.msb, options.msb]) : [0, 127], + lsb = options.lsb != undefined ? (options.lsb.constructor == Array ? options.lsb : [options.lsb, options.lsb]) : [0, 127]; + for (let cMsb = msb[0]; cMsb <= msb[1]; cMsb ++) { + let precalMsb = cMsb << 7; + for (let cLsb = lsb[0]; cLsb <= lsb[1]; cLsb ++) { + let precalBnk = precalMsb + cLsb; + for (let cPrg = prg[0]; cPrg <= prg[1]; cPrg ++) { + delete this.#bankInfo[cPrg][precalBnk]; + }; + }; + }; + }; + init() { + this.#bankInfo = []; + for (let prg = 0; prg < 128; prg ++) { + this.#bankInfo.push([""]); + }; + }; + async loadFiles(...type) { + this.init(); + let upThis = this; + type.forEach(async function (e, i) { + try { + await fetch(`./data/bank/${e}.tsv`).then(function (response) { + //console.debug(`Parsing voice map "${e}".`); + return response.text(); + }).then((text) => { + upThis.load(text, false, e); + }); + } catch (err) { + console.error(`Failed loading "${e}.tsv".`); + }; + }); + }; + constructor(...args) { + this.loadFiles(...args); + }; +}; + +export { + VoiceBank +}; diff --git a/src/state/decoders.mjs b/src/state/decoders.mjs new file mode 100644 index 00000000..49020e00 --- /dev/null +++ b/src/state/decoders.mjs @@ -0,0 +1,22 @@ +"use strict"; + +let BlobDecoder = class { + #collection = {}; + context; + set(format, decoder) { + this.#collection[format] = decoder; + }; + has(format) { + return !!this.#collection[format]; + }; + async read(format, blob) { + if (!this.has(format)) { + throw(new Error(`No decoder registered for "${format}"`)); + }; + return await this.#collection[format].call(this.context || this, blob); + }; +}; + +export { + BlobDecoder +}; diff --git a/src/state/emitGlobal.js b/src/state/emitGlobal.js new file mode 100644 index 00000000..9672b0e5 --- /dev/null +++ b/src/state/emitGlobal.js @@ -0,0 +1,82 @@ +"use strict"; + +import {gsChecksum} from "./utils.js"; + +const sysexHead = { + xg: new Uint8Array([240, 67, 16, 76, 7]), // XG + gs: new Uint8Array([240, 65, 16, 69, 18, 16]), // GS + ns5r: new Uint8Array([240, 66, 48, 66, 18, 8, 0, 32]) // NS5R +}; + +let sysexBitmap = function (frameData, type = "xg", frameId = 0, noCopy) { + if (!frameData?.length) { + throw Error(`Blank frame data`); + }; + // 0 for XG, 1 for GS, 2 for NS5R + let targetBuffer, targetFrame, startOffset = 8, + canvasWidth = 16 << ((frameData.length - 1) >> 8), + canvasHeight = 16, + workWidth = 16, workBit = 7; + switch (type) { + case "xg": { + if (frameData.length > 256) { + throw(new Error(`Bitmap too large: ${frameData.length} > 256`)); + }; + targetBuffer = new Uint8Array(56); + targetBuffer.set(sysexHead[type], 0); + targetBuffer[55] = 247; + targetFrame = frameData; + startOffset = 7; + break; + }; + case "gs": { + if (frameData.length > 256) { + throw(new Error(`Bitmap too large: ${frameData.length} > 256`)); + }; + targetBuffer = new Uint8Array(74); + targetBuffer.set(sysexHead[type], 0); + targetBuffer[73] = 247; + targetBuffer[6] = frameId + 1; + targetFrame = frameData; + workBit = 5; + break; + }; + case "ns5r": { + if (frameData.length > 512) { + throw(new Error(`Bitmap too large: ${frameData.length} > 512`)); + }; + targetBuffer = new Uint8Array(89); + targetBuffer.set(sysexHead[type], 0); + targetBuffer[88] = 247; + // Duplicate the pixel data if the length is smaller than or equal to 256 + if (frameData.length <= 256 && !noCopy) { + targetFrame = new Uint8Array(frameData.length * 2); + frameData.forEach((e, i) => { + targetFrame[i << 1] = e; + targetFrame[1 + (i << 1)] = e; + }); + } else { + targetFrame = frameData; + }; + workWidth = 32; + break; + }; + default: { + throw(new Error(`Unknown device target ${type}`)); + }; + }; + // Packing bits into bytes + targetFrame.forEach((e, i) => { + let canvasX = i % workWidth, canvasY = Math.floor(i / workWidth); + let pointer = Math.floor(canvasX / workBit) * canvasHeight + canvasY, shifter = workBit - canvasX % workBit - 1; + targetBuffer[startOffset + pointer] ^= (e ? 1 : 0) << shifter; + }); + if (type == "gs") { + targetBuffer[72] = gsChecksum(targetBuffer.subarray(5, 72)); + }; + return targetBuffer; +}; + +export { + sysexBitmap +}; diff --git a/src/state/gsValues.js b/src/state/gsValues.js new file mode 100644 index 00000000..cb7dff92 --- /dev/null +++ b/src/state/gsValues.js @@ -0,0 +1,152 @@ +"use strict"; + +let gsRevType = [ + "room 1", + "room 2", + "room 3", + "hall 1", + "hall 2", + "plate", + "delay", + "panning delay" +]; +let gsChoType = [ + "chorus 1", + "chorus 2", + "chorus 3", + "chorus 4", + "feedback", + "flanger", + "short delay", + "short delay feedback" +]; +let gsDelType = [ + "delay 1", + "delay 2", + "delay 3", + "delay 4", + "pan delay 1", + "pan delay 2", + "pan delay 3", + "pan delay 4", + "delay to reverb", + "pan repeat" +]; +let gsParts = [9, 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13, 14, 15]; + +let gsEfx = { + 0x0000: "thru", + 0x0100: "stereo EQ", + 0x0101: "spectrum", + 0x0102: "enhancer", + 0x0103: "humanizer", + 0x0110: "overdrive", + 0x0111: "distortion", + 0x0120: "phaser", + 0x0121: "auto wah", + 0x0122: "rotary", + 0x0123: "stereo flanger", + 0x0124: "step flanger", + 0x0125: "tremelo", + 0x0126: "auto pan", + 0x0130: "compressor", + 0x0131: "limiter", + 0x0140: "hexa chorus", + 0x0141: "tremelo chorus", + 0x0142: "stereo chorus", + 0x0143: "space D", + 0x0144: "3D chorus", + 0x0150: "stereo delay", + 0x0151: "modulated delay", + 0x0152: "3-tap delay", + 0x0153: "4-tap delay", + 0x0154: "tremelo control delay", + 0x0155: "reverb", + 0x0156: "gate reverb", + 0x0157: "3D delay", + 0x0160: "2-pitch shifter", + 0x0161: "feedback pitch shifter", + 0x0170: "3D auto", + 0x0171: "3D manual", + 0x0172: "Lo-Fi 1", + 0x0173: "Lo-Fi 2", + 0x0200: "overdrive - chorus", + 0x0201: "overdrive - flanger", + 0x0202: "overdrive - delay", + 0x0203: "distortion - chorus", + 0x0204: "distortion - flanger", + 0x0205: "distortion - delay", + 0x0206: "enhancer - chorus", + 0x0207: "enhancer - flanger", + 0x0208: "enhancer - delay", + 0x0209: "chorus - delay", + 0x020a: "flanger - delay", + 0x020b: "chorus - flanger", + 0x020c: "rotary multi", + 0x0400: "guitar multi 1", + 0x0401: "guitar multi 2", + 0x0402: "guitar multi 3", + 0x0403: "clean guitar multi 1", + 0x0404: "clean guitar multi 2", + 0x0405: "bass multi", + 0x0406: "rhodes multi", + 0x0500: "keyboard multi", + 0x1100: "chorus / delay", + 0x1101: "flanger / delay", + 0x1102: "chorus / flanger", + 0x1103: "overdrive / distortion", + 0x1104: "overdrive / rotary", + 0x1105: "overdrive / phaser", + 0x1106: "overdrive / auto wah", + 0x1107: "phaser / rotary", + 0x1108: "phaser / auto wah" +}, +gsEfxDesc = { + 0x010303: ["drive"], + 0x010305: ["vowel", (e) => { + return "aiueo"[e]; + }], + 0x017203: ["pre-filter"], + 0x017204: ["Lo-Fi type"], + 0x017205: ["post-filter"], + 0x017303: ["Lo-Fi type"], + 0x017304: ["fill type", (e) => { + return ["off", "LPF", "HPF"][e]; + }], + 0x017308: ["noise type", (e) => { + return ["white", "pink"][e]; + }], + 0x01730b: ["disc type", (e) => { + return ["LP", "SP", "EP", "RND"]; + }], + 0x01730e: ["hum type", (e) => { + return `${e + 5}0Hz`; + }], + 0x017311: ["M/S", (e) => { + return ["mono", "stereo"][e]; + }] +}, +getGsEfx = function (arr) { + return gsEfx[((arr[0] - 32) << 8) + arr[1]] || `0x${arr[0].toString(16).padStart(2, "0")}${arr[1].toString(16).padStart(2, "0")}`; +}, +getGsEfxDesc = function (arr, param, value) { + let id = ((arr[0] - 32) << 16) + (arr[1] << 8) + param, + target = gsEfxDesc[id] || {}, + desc = target[0]; + if (desc?.length) { + desc += `: ${(target[1] || function () {})(value) || value}`; + return desc; + }; +}; + +let mt32DefProg = [68, 48, 95, 78, 41, 3, 110, 122, 0]; + +export { + gsRevType, + gsChoType, + gsDelType, + gsParts, + getGsEfx, + getGsEfxDesc, + mt32DefProg +}; diff --git a/src/state/index.mjs b/src/state/index.mjs new file mode 100644 index 00000000..266f3d4a --- /dev/null +++ b/src/state/index.mjs @@ -0,0 +1,3899 @@ +"use strict"; + +import {BinaryMatch} from "../../libs/lightfelt@ltgcgo/ext/binMatch.js"; +import {CustomEventSource} from "../../libs/lightfelt@ltgcgo/ext/customEvents.js"; +import {VoiceBank} from "./bankReader.js"; +import {bankDecoder} from "./bankDecoder.js"; +import { + xgEffType, + xgPartMode, + xgSgVocals, + xgDelOffset, + xgNormFreq, + xgLfoFreq, + getSgKana, + getXgRevTime, + getXgDelayOffset, + getVlCtrlSrc +} from "./xgValues.js"; +import { + gsRevType, + gsChoType, + gsDelType, + gsParts, + getGsEfx, + getGsEfxDesc, + mt32DefProg +} from "./gsValues.js"; +import { + toDecibel, + gsChecksum, + korgFilter, + x5dSendLevel +} from "./utils.js"; + +const modeIdx = [ + "?", + "gm", "gs", "xg", "g2", + "mt32", "ns5r", + "ag10", "x5d", "05rw", + "k11", "sg", + "krs", "s90es", "motif" +]; +const substList = [ + [0, 0, 0, 0, 121, 0, 0, 56, 82, 81, 0, 0, 63, 63, 63], + [0, 0, 4, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0] +]; +const drumMsb = [120, 127, 120, 127, 120, 127, 61, 62, 62, 62, 120, 122, 122, 127]; +const passedMeta = [0, 3, 81, 84, 88]; // What is meta event 32? +const eventTypes = { + 8: "Off", + 9: "On", + 10: "Note aftertouch", + 11: "cc", + 12: "pc", + 13: "Channel aftertouch", + 14: "Pitch" +}; + +const useRpnMap = { + 0: 0, + 1: 1, + 2: 3, + 5: 4 +}, +rpnCap = [ + [0, 24], + [0, 127], + [0, 127], + [40, 88], + [0, 127], + [0, 127] +], +useNormNrpn = [36, 37], +useDrumNrpn = [20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 36, 37, 64, 65], +ccAccepted = [ + 0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 32, + 38, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 84, 91, + 92, 93, 94, 95, 98, 99, 100, 101, + 128, // Dry level (internal register for Octavia) + 12, 13, // General-purpose effect controllers + 16, 17, 18, 19 // General-purpose sound controllers +], // 96, 97, 120 to 127 all have special functions +aceCandidates = [12, 13, 16, 17, 18, 19], +nrpnCcMap = [33, 99, 100, 32, 102, 8, 9, 10]; // cc71 to cc78 + +const korgDrums = [0, 16, 25, 40, 32, 64, 26, 48]; + +let modeMap = {}; +modeIdx.forEach((e, i) => { + modeMap[e] = i; +}); +let ccToPos = { + length: ccAccepted.length +}; +ccAccepted.forEach((e, i) => { + ccToPos[e] = i; +}); +let dnToPos = { + length: useDrumNrpn.length +}; +useDrumNrpn.forEach((e, i) => { + dnToPos[e] = i; +}); + +let getDebugState = function () { + return !!self.Bun || self.debugMode || false; // If run on Bun.js, output all possible logs +}; +let sysExSplitter = function (seq) { + let seqArr = []; + let seqStart = 0; + seq?.forEach(function (e, i) { + if (e == 247) { + // End of SysEx + seqArr.push(seq.subarray(seqStart, i)); + } else if (e == 240) { + seqStart = i + 1; + } else { + //seqArr[seqArr.length - 1].push(e); + }; + }); + if (!seqArr.length) { + seqArr.push(seq.subarray(0)); + }; + if (getDebugState()) { + console.debug(seqArr); + }; + return seqArr; +}; +let showTrue = function (data, prefix = "", suffix = "", length = 2) { + return data ? `${prefix}${data.toString().padStart(length, "0")}${suffix}` : ""; +}; + +const allocated = { + ch: 128, // channels + cc: ccAccepted.length, // control changes + nn: 128, // notes per channel + pl: 512, // polyphony + tr: 256, // tracks + cmt: 14, // C/M timbre storage size + rpn: 6, + ace: 8, // active custom effect + drm: 8, // Drum setup slots + dpn: useDrumNrpn.length, // Drum setup params + dnc: 128, // note 0 to 127 + efx: 7 +}; + +let OctaviaDevice = class extends CustomEventSource { + // Constants + NOTE_IDLE = 0; + NOTE_ATTACK = 1; + NOTE_DECAY = 2; + NOTE_SUSTAIN = 3; + NOTE_HELD = 4; + NOTE_RELEASE = 5; + NOTE_SOSTENUTO_ATTACK = 8; + NOTE_SOSTENUTO_DECAY = 9; + NOTE_SOSTENUTO_SUSTAIN = 10; + NOTE_SOSTENUTO_HELD = 11; + CH_MELODIC = 0; + CH_DRUMS = 1; + CH_DRUM1 = 2; + CH_DRUM2 = 3; + CH_DRUM3 = 4; + CH_DRUM4 = 5; + CH_DRUM5 = 6; + CH_DRUM6 = 7; + CH_DRUM7 = 8; + CH_DRUM8 = 9; + // Values + #mode = 0; + #bitmapPage = 0; + #bitmapExpire = 0; + #bitmapStore = new Array(11); // 10 pages of bitmaps, 1 KORG bitmap + get #bitmap() { + return this.#bitmapStore[this.#bitmapPage]; + }; + set #bitmap(value) { + this.#bitmapStore[this.#bitmapPage] = value; + }; + #chActive = new Uint8Array(allocated.ch); // Whether the channel is in use + #chReceive = new Uint8Array(allocated.ch); // Determine the receiving channel + #chType = new Uint8Array(allocated.ch); // Types of channels + #cc = new Uint8Array(allocated.ch * allocated.cc); // 64 channels, 128 controllers + #ace = new Uint8Array(allocated.ace); // 4 active custom effects + #prg = new Uint8Array(allocated.ch); + #velo = new Uint8Array(allocated.ch * allocated.nn); // 64 channels. 128 velocity registers + #mono = new Uint8Array(allocated.ch); // Mono/poly mode + #poly = new Uint16Array(allocated.pl); // 512 polyphony allowed + #polyState = new Uint8Array(allocated.pl); // State of each active voice. + #pitch = new Int16Array(allocated.ch); // Pitch for channels, from -8192 to 8191 + #rawStrength = new Uint8Array(allocated.ch); + #dataCommit = 0; // 0 for RPN, 1 for NRPN + #rpn = new Uint8Array(allocated.ch * allocated.rpn); // RPN registers (0 pitch MSB, 1 fine tune MSB, 2 fine tune LSB, 3 coarse tune MSB, 4 mod sensitivity MSB, 5 mod sensitivity LSB) + #nrpn = new Int8Array(allocated.ch * useNormNrpn.length); // Normal section of NRPN registers + #drum = new Uint8Array(allocated.drm * allocated.dpn * allocated.dnc); // Drum setup + #bnCustom = new Uint8Array(allocated.ch); // Custom name activation + #cmTPatch = new Uint8Array(128); // C/M part patch storage + #cmTTimbre = new Uint8Array(allocated.cmt * 8); // C/M part timbre storage + #cmPatch = new Uint8Array(1024); // C/M device patch storage + #cmTimbre = new Uint8Array(allocated.cmt * 64); // C/M device timbre storage (64) + #efxBase = new Uint8Array(allocated.efx * 3); // Base register for EFX types + #subMsb = 0; // Allowing global bank switching + #subLsb = 0; + #masterVol = 100; + #metaChannel = 0; + #noteLength = 500; + #convertLastSyllable = 0; + #letterDisp = ""; + #letterExpire = 0; + #selectPort = 0; + #receiveRS = true; // Receive remote switch + #modeKaraoke = false; + #receiveTree; + // Temporary EFX storage + #gsEfxSto = new Uint8Array(2); + // Metadata text events + #metaTexts = []; + // GS Track Occupation + #trkRedir = new Uint8Array(allocated.ch); + #trkAsReq = new Uint8Array(allocated.tr); // Track Assignment request + baseBank = new VoiceBank("gm", "gm2", "xg", "gs", "ns5r", "gmega", "plg-150vl", "plg-150pf", "plg-150dx", "plg-150an", "plg-150dr", "plg-100sg", "kross", "s90es"); // Load all possible voice banks + userBank = new VoiceBank("gm"); // User-defined bank for MT-32, X5DR and NS5R + initOnReset = false; // If this is true, Octavia will re-init upon mode switches + aiEfxName = ""; + chRedir(part, track, noConquer) { + if (this.#trkAsReq[track]) { + // Allow part assigning via meta + let metaChosen = (this.#trkAsReq[track] - 1) * 16 + part; + return metaChosen; + } else if ([2, 3].indexOf(this.#subLsb) > -1) { + // Do not conquer channels if requested. + if (noConquer == 1) { + return part; + }; + let shift = 0, unmet = true; + while (unmet) { + if (this.#trkRedir[part + shift] == 0) { + this.#trkRedir[part + shift] = track; + console.debug(`Assign track ${track} to channel ${part + shift + 1}.`); + unmet = false; + } else if (this.#trkRedir[part + shift] == track) { + unmet = false; + } else { + shift += 16; + if (shift >= 128) { + shift = 0; + unmet = false; + }; + }; + }; + return part + shift; + } else { + return part; + }; + }; + // Exec Pools + // Meta event pool + #metaRun = []; + // Sequencer specific meta pool + #metaSeq; + // Universal actions + #ua = { + nOff: (part, note) => { + // Note off + let rawNote = part * 128 + note; + let polyIdx = this.#poly.lastIndexOf(rawNote); + if (polyIdx > -1) { + if (this.#cc[allocated.cc * part + ccToPos[64]] > 63) { + // Held by cc64 + this.#polyState[polyIdx] = this.NOTE_HELD; + this.dispatchEvent("note", { + part, + note, + velo: this.#velo[rawNote], + state: this.NOTE_HELD + }); + } else if (this.#cc[allocated.cc * part + ccToPos[66]] > 63 && this.#polyState[polyIdx] == this.NOTE_SOSTENUTO_SUSTAIN) { + // Held by cc66 + this.#polyState[polyIdx] = this.NOTE_SOSTENUTO_HELD; + this.dispatchEvent("note", { + part, + note, + velo: this.#velo[rawNote], + state: this.NOTE_SOSTENUTO_HELD + }); + } else { + this.#poly[polyIdx] = 0; + this.#velo[rawNote] = 0; + this.#polyState[polyIdx] = this.NOTE_IDLE; + this.dispatchEvent("note", { + part, + note, + velo: 0, + state: this.NOTE_IDLE + }); + }; + }; + }, + nOn: (part, note, velo) => { + // Note on + let rawNote = part * 128 + note; + let place = 0; + if (this.#mono[part]) { + // Shut all previous notes off in mono mode + this.#ua.ano(part); + }; + while (this.#polyState[place] > 0 && this.#poly[place] != rawNote) { + // If just by judging whether a polyphonic voice is occupied, + // "multi" mode is considered active. + // If "rawNote" is also taken into consideration, + // this will be "single" mode instead. + // 0: idle + // 1: attack + // 2: decay + // 3: sustain (active) + // 4: hold + // 5: release + // 6: sostenuto sustain + // 7: sostenuto hold + place ++; + }; + if (place < allocated.pl) { + this.#poly[place] = rawNote; + this.#velo[rawNote] = velo; + this.#polyState[place] = this.NOTE_SUSTAIN; + if (this.#rawStrength[part] < velo) { + this.#rawStrength[part] = velo; + }; + this.dispatchEvent("note", { + part, + note, + velo, + state: this.NOTE_SUSTAIN + }); + //console.debug(place); + } else { + console.error("Polyphony exceeded."); + }; + }, + nAt: (part, note, velo) => { + // Note/polyphonic aftertouch + }, + cAt: (part, velo) => { + // Channel aftertouch + }, + hoOf: (part) => { + // Scan and turn off all notes held by cc64 + this.#polyState.forEach((e, i) => { + if (e == this.NOTE_HELD) { + // Held by cc64 + let rawNote = this.#poly[i]; + let channel = rawNote >> 7; + if (part == channel) { + this.#polyState[i] = this.NOTE_IDLE; + this.#poly[i] = 0; + this.#velo[rawNote] = 0; + this.dispatchEvent("note", { + part, + note: rawNote & 127, + velo: 0, + state: this.NOTE_IDLE + }); + }; + }; + }); + }, + soOn: (part) => { + // Scan and convert all unoccupied active notes to be managed by sostenuto + this.#polyState.forEach((e, i) => { + let emitEvent; + switch (e) { + case this.NOTE_ATTACK: { + emitEvent = this.NOTE_SOSTENUTO_ATTACK; + break; + }; + case this.NOTE_DECAY: { + emitEvent = this.NOTE_SOSTENUTO_DECAY; + break; + }; + case this.NOTE_SUSTAIN: { + emitEvent = this.NOTE_SOSTENUTO_SUSTAIN; + break; + }; + }; + if (emitEvent) { + this.#polyState[i] = emitEvent; + let rawNote = this.#poly[i]; + this.dispatchEvent("note", { + part, + note: rawNote & 127, + velo: this.#velo[rawNote], + state: emitEvent + }); + }; + }); + }, + soOf: (part) => { + // Scan and turn off all notes held by cc66 + this.#polyState.forEach((e, i) => { + if (e == this.NOTE_SOSTENUTO_HELD) { + // Held by cc66 + let rawNote = this.#poly[i]; + let channel = rawNote >> 7; + if (part == channel) { + this.#polyState[i] = this.NOTE_IDLE; + this.#poly[i] = 0; + this.#velo[rawNote] = 0; + this.dispatchEvent("note", { + part, + note: rawNote & 127, + velo: 0, + state: this.NOTE_IDLE + }); + }; + }; + }); + }, + ano: (part) => { + // All notes off + // Current implementation uses the static velocity register + this.#poly.forEach((e, i, a) => { + let ch = e >> 7, no = e & 127; + if (e == 0 && this.#velo[0] == 0) { + } else if (ch == part) { + this.#ua.nOff(ch, no); + }; + }); + } + }; + // Channel event pool + #runChEvent = { + 8: function (det) { + let part = det.channel; + // Note off, velocity should be ignored. + let rawNote = det.data[0]; + this.#ua.nOff(part, rawNote); + }, + 9: function (det) { + let part = det.channel; + // Note on, but should be off if velocity is 0. + // Set channel active + this.#chActive[part] = 1; + let rawNote = det.data[0]; + let velocity = det.data[1]; + if (velocity > 0) { + this.#ua.nOn(part, rawNote, velocity); + } else { + this.#ua.nOff(part, rawNote); + }; + }, + 10: function (det) { + let part = det.channel; + // Note aftertouch. + // Currently it directly changes velocity to set value. + let rawNote = part * 128 + det.data[0]; + let polyIdx = this.#poly.indexOf(rawNote); + if (polyIdx > -1) { + this.#velo[rawNote] = data[1]; + this.dispatchEvent("note", { + part, + note: det.data[0], + velo: det.data[1], + state: this.NOTE_SUSTAIN + }); + }; + }, + 11: function (det) { + let part = det.channel; + // CC event, directly assign values to the register. + if ([0, 32].indexOf(det.data[0]) > -1) { + (() => { + switch(this.#mode) { + case modeMap.s90es: + case modeMap.motif: { + if (det.data[0] == 0) { + ([0, 63].indexOf(det.data[1]) > -1) && (this.#chActive[part] = 1); + break; + }; + det.data[1] && (this.#chActive[part] = 1); + break; + }; + default: { + this.#chActive[part] = 1; + break; + }; + }; + })(); + }; + let chOffset = part * allocated.cc; + // Non-store CC messages + switch (det.data[0]) { + case 96: { + // RPN Data increment + return; + break; + }; + case 97: { + // RPN Data decrement + return; + break; + }; + case 120: { + // All sound off, but keys stay on + return; + break; + }; + case 121: { + // Reset controllers + this.#ua.ano(part); + this.#pitch[part] = 0; + let chOff = part * allocated.cc; + // Reset to zero + this.#cc[chOff + ccToPos[1]] = 0; // Modulation + this.#cc[chOff + ccToPos[5]] = 0; // Portamento Time + this.#cc[chOff + ccToPos[64]] = 0; // Sustain + this.#cc[chOff + ccToPos[65]] = 0; // Portamento + this.#cc[chOff + ccToPos[66]] = 0; // Sostenuto + this.#cc[chOff + ccToPos[67]] = 0; // Soft Pedal + // Reset to full + this.#cc[chOff + ccToPos[11]] = 127; // Expression + // RPN/NRPN to null + this.#cc[chOff + ccToPos[101]] = 127; + this.#cc[chOff + ccToPos[100]] = 127; + this.#cc[chOff + ccToPos[99]] = 127; + this.#cc[chOff + ccToPos[98]] = 127; + return; + break; + }; + case 123: { + // All notes off + this.#ua.ano(part); + return; + break; + }; + case 124: { + // Omni off + this.#ua.ano(part); + return; + break; + }; + case 125: { + // Omni on + this.#ua.ano(part); + return; + break; + }; + case 126: { + // Mono mode + this.#mono[part] = 1; + this.#ua.ano(part); + return; + break; + }; + case 127: { + // Poly mode + this.#mono[part] = 0; + this.#ua.ano(part); + return; + break; + }; + }; + // Check if control change is accepted + if (ccToPos[det.data[0]] == undefined) { + console.warn(`cc${det.data[0]} is not accepted.`); + } else { + // ACE allocation + if (aceCandidates.indexOf(det.data[0]) > -1) { + this.allocateAce(det.data[0]); + }; + // Stored CC messages + switch (det.data[0]) { + case 0: { + // Detect mode via bank MSB + if (getDebugState()) { + console.debug(`${modeIdx[this.#mode]}, CH${part + 1}: ${det.data[1]}`); + }; + if (this.#mode == 0) { + if (det.data[1] < 48) { + // Do not change drum channel to a melodic + if (this.#chType[part] > 0) { + det.data[1] = this.#cc[chOffset]; + det.data[1] = 120; + console.debug(`Forced channel ${part + 1} to stay drums.`); + }; + if (det.data[1] > 0) { + console.debug(`Roland GS detected with MSB: ${det.data[1]}`); + this.switchMode("gs"); + }; + } else if (det.data[1] == 62) { + this.switchMode("x5d"); + } else if (det.data[1] == 63) { + this.switchMode("krs"); + } else if (det.data[1] == 64 || det.data[1] == 127) { + this.switchMode("xg"); + }; + } else if (this.#mode == modeMap.gs) { + if (det.data[1] < 56) { + // Do not change drum channel to a melodic + if (this.#chType[part] > 0) { + det.data[1] = this.#cc[chOffset]; + det.data[1] = 120; + console.debug(`Forced channel ${part + 1} to stay drums.`); + }; + }; + } else if (this.#mode == modeMap.gm) { + if (det.data[1] < 48) { + // Do not change drum channel to a melodic + if (this.#chType[part] > 0) { + det.data[1] = 120; + this.switchMode("gs", true); + console.debug(`Forced channel ${part + 1} to stay drums.`); + }; + } else if (det.data[1] == 64 || det.data[1] == 127) { + this.switchMode("xg", true); + }; + } else if (this.#mode == modeMap.x5d) { + if (det.data[1] > 0 && det.data[1] < 8) { + this.switchMode("05rw", true); + } else if (det.data[1] == 56) { + let agCount = 0; + for (let c = 0; c < 16; c ++) { + let d = this.#cc[allocated.cc * c]; + if (d == 56 || d == 62) { + agCount ++; + }; + }; + if (agCount > 14) { + this.switchMode("ag10", true); + }; + }; + }; + switch (this.#mode) { + case modeMap.xg: { + if ([126, 127].indexOf(det.data[1]) > -1) { + if (this.#chType[part] == 0) { + this.setChType(part, this.CH_DRUM2); + console.debug(`CH${part + 1} set to drums by MSB.`); + }; + } else { + if (this.#chType[part] > 0) { + this.setChType(part, this.CH_MELODIC); + console.debug(`CH${part + 1} set to melodic by MSB.`); + }; + }; + break; + }; + case modeMap["05rw"]: + case modeMap.x5d: + case modeMap.ns5r: { + if ([61, 62, 126, 127].indexOf(det.data[1]) > -1) { + if (this.#chType[part] == 0) { + this.setChType(part, this.CH_DRUM2); + console.debug(`CH${part + 1} set to drums by MSB.`); + }; + } else { + if (this.#chType[part] > 0) { + this.setChType(part, this.CH_MELODIC); + console.debug(`CH${part + 1} set to melodic by MSB.`); + }; + }; + break; + }; + case modeMap.g2: { + if (det.data[1] == 120) { + if (this.#chType[part] == 0) { + this.setChType(part, this.CH_DRUMS); + console.debug(`CH${part + 1} set to drums by MSB.`); + }; + } else { + if (this.#chType[part] > 0) { + this.setChType(part, this.CH_MELODIC); + console.debug(`CH${part + 1} set to melodic by MSB.`); + }; + }; + break; + }; + }; + this.dispatchEvent("voice", { + part + }); + break; + }; + case 6: { + // Show RPN and NRPN + if (this.#dataCommit) { + // Commit supported NRPN values + if ([modeMap.xg, modeMap.gs, modeMap.ns5r].indexOf(this.#mode) < 0) { + console.warn(`NRPN commits are not available under "${modeIdx[this.#mode]}" mode, even when they are supported in Octavia.`); + }; + let msb = this.#cc[chOffset + ccToPos[99]], + lsb = this.#cc[chOffset + ccToPos[98]]; + if (msb == 1) { + let toCc = nrpnCcMap.indexOf(lsb); + if (toCc > -1) { + this.#cc[chOffset + ccToPos[71 + toCc]] = det.data[1]; + getDebugState() && console.debug(`Redirected NRPN 1 ${lsb} to cc${71 + toCc}.`); + this.dispatchEvent("cc", { + part, + cc: 71 + toCc, + data: det.data[1] + }); + } else { + let nrpnIdx = useNormNrpn.indexOf(lsb); + if (nrpnIdx > -1) { + this.#nrpn[part * 10 + nrpnIdx] = det.data[1] - 64; + } else { + console.warn(`NRPN 0x01${lsb.toString(16).padStart(2, "0")} is not supported.`); + }; + getDebugState() && console.debug(`CH${part + 1} voice NRPN ${lsb} commit`); + }; + } else { + let nrpnIdx = useDrumNrpn.indexOf(msb); + if (nrpnIdx < 0) { + let dPref = `NRPN 0x${msb.toString(16).padStart(2, "0")}${lsb.toString(16).padStart(2, "0")} `; + if (msb == 127) { + console.warn(`${dPref}is not necessary. Consider removing it.`); + } else { + console.warn(`${dPref}is not supported.`); + }; + } else { + let targetSlot = this.#chType[part] - 2; + if (targetSlot < 0) { + console.warn(`CH${part + 1} cannot accept drum NRPN as type ${xgPartMode[this.#chType[part]]}.`); + } else { + this.#drum[(targetSlot * allocated.dpn + dnToPos[msb]) * allocated.dnc + lsb] = det.data[1] - 64; + }; + }; + getDebugState() && console.debug(`CH${part + 1} (${xgPartMode[this.#chType[part]]}) drum NRPN ${msb} commit`); + }; + } else { + // Commit supported RPN values + let rpnIndex = useRpnMap[this.#cc[chOffset + ccToPos[100]]]; + if (this.#cc[chOffset + ccToPos[101]] == 0 && rpnIndex != undefined) { + getDebugState() && console.debug(`CH${part + 1} RPN 0 ${this.#cc[chOffset + ccToPos[100]]} commit: ${det.data[1]}`); + det.data[1] = Math.min(Math.max(det.data[1], rpnCap[rpnIndex][0]), rpnCap[rpnIndex][1]); + this.#rpn[part * allocated.rpn + rpnIndex] = det.data[1]; + }; + }; + break; + }; + case 32: { + switch (this.#mode) { + case modeMap.s90es: + case modeMap.motif: { + this.#chType[part] = +([32, 40].indexOf(det.data[1]) > -1) << 1; + break; + }; + }; + this.dispatchEvent("voice", { + part + }); + break; + }; + case 38: { + // Show RPN and NRPN + if (!this.#dataCommit) { + // Commit supported RPN values + if (this.#cc[chOffset + 101] == 0 && useRpnMap[this.#cc[chOffset + 100]] != undefined) { + this.#rpn[part * allocated.rpn + useRpnMap[this.#cc[chOffset + 100]] + 1] = det.data[1]; + }; + } else { + //console.debug(`${part + 1} LSB ${det.data[1]} ${this.#dataCommit ? "NRPN" : "RPN"} ${this.#dataCommit ? this.#cc[chOffset + 99] : this.#cc[chOffset + 101]} ${this.#dataCommit ? this.#cc[chOffset + 98] : this.#cc[chOffset + 100]}`); + }; + break; + }; + case 64: { + // cc64: hold + if (det.data[1] < 64) { + this.#ua.hoOf(part); + }; + break; + }; + case 66: { + // cc66: sostenuto + if (det.data[1] >> 6) { + // Sostenuto on + this.#ua.soOn(part); + } else { + // Sostenuto off + this.#ua.soOf(part); + }; + break; + }; + case 98: + case 99: { + this.#dataCommit = 1; + break; + }; + case 100: + case 101: { + this.#dataCommit = 0; + break; + }; + }; + this.#cc[chOffset + ccToPos[det.data[0]]] = det.data[1]; + this.dispatchEvent("cc", { + part, + cc: det.data[0], + data: det.data[1] + }); + }; + }, + 12: function (det) { + let part = det.channel; + // Program change + switch (this.#mode) { + case modeMap.s90es: + case modeMap.motif: { + det.data && (this.#chActive[part] = 1); + break; + }; + default: { + this.#chActive[part] = 1; + }; + }; + this.#prg[part] = det.data; + this.#bnCustom[part] = 0; + if (getDebugState()) { + console.debug(`T:${det.track} C:${part} P:${det.data}`); + }; + this.dispatchEvent("voice", { + part + }); + }, + 13: function (det) { + // Channel aftertouch + let upThis = this; + let part = det.channel; + this.#poly.forEach(function (e) { + let realCh = e >> 7; + if (part == realCh) { + upThis.#velo[e] = det.data; + upThis.dispatchEvent("note", { + part, + note: e & 127, + velo: det.data, + state: upThis.NOTE_SUSTAIN + }); + }; + }); + }, + 14: function (det) { + let part = det.channel; + // Pitch bending + this.#pitch[part] = det.data[1] * 128 + det.data[0] - 8192; + this.dispatchEvent("pitch", { + part, + pitch: this.getPitchShift(part) + }); + }, + 15: function (det) { + // SysEx + sysExSplitter(det.data).forEach((seq) => { + let manId = seq[0], + deviceId = seq[1]; + (this.#seMan[manId] || function () { + console.debug(`Unknown manufacturer ${manId}.`); + })(deviceId, seq.subarray(2), det.track); + //upThis.#seMain.run(seq, det.track); + }); + }, + 248: function (det) { + // MIDI clock + }, + 250: function (det) { + // MIDI start + }, + 251: function (det) { + // MIDI continue + }, + 252: function (det) { + // MIDI stop + }, + 254: function (det) { + // Active sense + }, + 255: function (det) { + // Meta + (this.#metaRun[det.meta] || function (data, track, meta) {}).call(this, det.data, det.track, det.meta); + if (det.meta != 32) { + this.#metaChannel = 0; + }; + let useReply = passedMeta.indexOf(det.meta) > -1; + if (getDebugState()) { + console.debug(det); + }; + if (useReply) { + det.reply = "meta"; + return det; + }; + } + }; + // SysEx manufacturer table + #seMan = { + 64: (id, msg, track) => { + // Kawai + this.#seKg.run(msg, track, id); + }, + 65: (id, msg, track) => { + // Roland + // CmdId is usually 18 (DT1) + // D-50: [20, CmdId] + // C/M: [22, CmdId] + // GS: [66, CmdId, HH, MM, LL, ...DD, Checksum] + if (msg[0] < 16) { + this.#seGs.run(msg, track, id); + console.warn(`Unknown device SysEx!`); + } else { + let sentCs = msg[msg.length - 1]; + let calcCs = gsChecksum(msg.subarray(2, msg.length - 1)); + if (sentCs == calcCs) { + this.#seGs.run(msg.subarray(0, msg.length - 1), track, id); + } else { + console.warn(`Bad GS checksum ${sentCs}. Should be ${calcCs}.`); + }; + }; + }, + 66: (id, msg, track) => { + // Korg + this.#seAi.run(msg, track, id); + }, + 67: (id, msg, track) => { + // Yamaha + // XG: [76, HH, MM, LL, ...DD] + this.#seXg.run(msg, track, id); + }, + 68: (id, msg, track) => { + // Casio + this.#seCs.run(msg, track, id); + }, + 71: (id, msg, track) => { + // Akai + this.#seSg.run(msg, track, id); + }, + 126: (id, msg, track) => { + // Universal non-realtime + this.#seUnr.run(msg, track, id); + }, + 127: (id, msg, track) => { + // Universal realtime + this.switchMode("gm"); + this.#seUr.run(msg, track, id); + } + }; + #seUnr; // Universal non-realtime + #seUr; // Universal realtime + #seXg; // YAMAHA + #seGs; // Roland + #seAi; // KORG + #seKg; // Kawai + #seSg; // Akai + #seCs; // Casio + buildRchTree() { + // Build a receiving tree from currently set receive channels + // Now builds from the ground up each time + // Can be optimized to move elements instead + let tree = []; + this.#chReceive.forEach((e, i) => { + if (!tree[e]?.constructor) { + tree[e] = []; + }; + tree[e].push(i); + }); + this.#receiveTree = tree; + //console.debug(tree); + }; + getActive() { + let result = this.#chActive.slice(); + if (this.#mode == modeMap.mt32) { + //result[0] = 0; + }; + return result; + }; + getCc(channel) { + // Return channel CC registers + let start = channel * allocated.cc; + let arr = this.#cc.subarray(start, start + allocated.cc); + arr[ccToPos[0]] = arr[ccToPos[0]] || this.#subMsb; + arr[ccToPos[32]] = arr[ccToPos[32]] || this.#subLsb; + return arr; + }; + getCcCh(channel, cc) { + if (ccAccepted.indexOf(cc) < 0) { + throw(new Error("CC number not accepted")); + }; + return this.#cc[allocated.cc * channel + ccToPos[cc]]; + }; + getCcAll() { + // Return all CC registers + let arr = this.#cc.slice(); + for (let c = 0; c < allocated.ch; c ++) { + let chOff = c * allocated.cc; + arr[chOff + ccToPos[0]] = arr[chOff + ccToPos[0]] || this.#subMsb; + arr[chOff + ccToPos[32]] = arr[chOff + ccToPos[32]] || this.#subLsb; + }; + return arr; + }; + getChType() { + return this.#chType; + }; + setChType(part, type, mode = this.#mode) { + type &= 15; + this.#chType[part] = type; + if (type > 0) { + this.#cc[part * allocated.cc + ccToPos[0]] = drumMsb[mode]; + }; + }; + getPitch() { + return this.#pitch; + }; + getProgram() { + return this.#prg; + }; + getTexts() { + return this.#metaTexts.slice(); + }; + getVel(channel) { + // Return all pressed keys with velocity in a channel + let notes = new Map(); + let upThis = this; + upThis.#poly.forEach(function (e, i) { + let realCh = Math.floor(e / 128), + realNote = e % 128; + if (channel == realCh && upThis.#velo[e] > 0) { + notes.set(realNote, { + v: upThis.#velo[e], // Short for velocity + s: upThis.#polyState[i] // Short for state + }); + }; + }); + return notes; + }; + getBitmap() { + return { + bitmap: this.#bitmap, + expire: this.#bitmapExpire + }; + }; + getLetter() { + return { + text: this.#letterDisp, + expire: this.#letterExpire + }; + }; + getMode() { + return modeIdx[this.#mode]; + }; + getMaster() { + return { + volume: this.#masterVol + }; + }; + getRawStrength() { + // 0 to 127 + let upThis = this; + this.#poly.forEach(function (e) { + let channel = Math.floor(e / 128); + if (upThis.#velo[e] > upThis.#rawStrength[channel]) { + upThis.#rawStrength[channel] = upThis.#velo[e]; + }; + }); + return this.#rawStrength; + }; + getStrength() { + // 0 to 255 + // Should later become 0 to 65535 + let str = [], upThis = this; + this.getRawStrength().forEach(function (e, i) { + str[i] = Math.floor(e * upThis.#cc[i * allocated.cc + ccToPos[7]] * upThis.#cc[i * allocated.cc + ccToPos[11]] * upThis.#masterVol / 803288); + }); + return str; + }; + getRpn() { + return this.#rpn; + }; + getNrpn() { + return this.#nrpn; + }; + getVoice(msbO, prgO, lsbO, mode) { + let msb = msbO || this.#subMsb, + prg = prgO, + lsb = lsbO || this.#subLsb; + if (modeIdx[this.#mode] == "ns5r") { + if (msb > 0 && msb < 56) { + lsb = 3; // Use SC-88 Pro map + }; + }; + let bank = this.userBank.get(msb, prg, lsb, mode); + if (modeIdx[this.#mode] == "mt32") { + // Reload MT-32 user bank transparently + if (bank.name.indexOf("MT-m:") == 0) { + // Device patch + let patch = parseInt(bank.name.slice(5)), + timbreOff = patch * allocated.cmt, + userBank = ""; + this.#cmTimbre.subarray(timbreOff, timbreOff + 10).forEach((e) => { + if (e > 31) { + userBank += String.fromCharCode(e); + }; + }); + this.userBank.load(`MSB\tLSB\tPRG\n0\t127\t${prg}\t${userBank}`, true); + bank.name = userBank; + bank.ending = " "; + }; + }; + if (bank.ending != " " || !bank.name.length) { + bank = this.baseBank.get(msb, prg, lsb, mode); + }; + return bank; + }; + getChVoice(part) { + let voice = this.getVoice(this.#cc[part * allocated.cc + ccToPos[0]], this.#prg[part], this.#cc[part * allocated.cc + ccToPos[32]], modeIdx[this.#mode]); + if (this.#bnCustom[part]) { + switch (this.#mode) { + case modeMap.mt32: { + voice.ending = "~"; + voice.name = ""; + this.#cmTTimbre.subarray(14 * (part - 1), 14 * (part - 1) + 10).forEach((e) => { + if (e > 31) { + voice.name += String.fromCharCode(e); + }; + }); + }; + }; + }; + return voice; + }; + getPitchShift(part) { + let rpnOff = part * allocated.rpn; + return this.#pitch[part] / 8192 * this.#rpn[rpnOff] + (this.#rpn[rpnOff + 3] - 64) + ((this.#rpn[rpnOff + 1] << 7) + this.#rpn[rpnOff + 2] - 8192) / 8192; + }; + getEffectType(slot = 0) { + let index = 3 * slot + 1; + return this.#efxBase.subarray(index, index + 2); + }; + setEffectTypeRaw(slot = 0, isLsb, value) { + let efxbOff = 3 * slot; + this.#efxBase[efxbOff] = 1; + this.#efxBase[efxbOff + 1 + +isLsb] = value; + }; + setEffectType(slot = 0, msb, lsb) { + this.setEffectTypeRaw(slot, false, msb); + this.setEffectTypeRaw(slot, true, lsb); + }; + setLetterDisplay(data, source, offset = 0, delay = 3200) { + let upThis = this, + invalidCp; + upThis.#letterDisp = " ".repeat(offset); + data.forEach((e) => { + upThis.#letterDisp += String.fromCharCode(e > 31 ? e : 32); + if (e < 32) { + invalidCp = invalidCp || new Set(); + invalidCp.add(e); + }; + }); + upThis.#letterExpire = Date.now() + 3200; + upThis.#letterDisp = upThis.#letterDisp.padEnd(32, " "); + if (invalidCp) { + invalidCp = Array.from(invalidCp); + invalidCp.forEach((e, i, a) => { + a[i] = e.toString(16).padStart(2, "0"); + }); + console.warn(`${source}${source ? " " : ""}invalid code point${invalidCp.length > 1 ? "s" : ""}: 0x${invalidCp.join(", 0x")}`); + + }; + }; + allocateAce(cc) { + // Allocate active custom effect + // Off, cc1~cc95, CAT, velo, PB + if (!cc || cc > 95) { + console.warn(`cc${cc} cannot be allocated as an active custom effect.`); + return; + }; + let continueScan = true, pointer = 0; + while (continueScan && pointer < allocated.ace) { + if (this.#ace[pointer] == cc) { + continueScan = false; + } else if (!this.#ace[pointer]) { + continueScan = false; + this.#ace[pointer] = cc; + console.info(`Allocated cc${cc} to ACE slot ${pointer}.`); + }; + pointer ++; + }; + if (pointer >= allocated.ace) { + console.warn(`ACE slots are full.`); + }; + }; + getAce() { + return this.#ace; + }; + getChAce(part, aceSlot) { + // Get channel ACE value + if (aceSlot < 0 || aceSlot >= allocated.ace) { + throw(new RangeError(`No such ACE slot`)); + }; + let cc = this.#ace[aceSlot]; + if (!cc) { + return 0; + } else if (ccAccepted.indexOf(cc) >= 0) { + return this.#cc[part * allocated.cc + ccToPos[cc]]; + } else { + throw(new Error(`Invalid ACE source: ${cc}`)); + }; + }; + init(type = 0) { + // Type 0 is full reset + // Type 1 is almost-full reset + // Full reset, except the loaded banks + this.dispatchEvent("mode", "?"); + this.#mode = 0; + this.#subMsb = 0; + this.#subLsb = 0; + this.#metaChannel = 0; + this.#chActive.fill(0); + this.#cc.fill(0); + this.#ace.fill(0); + this.#prg.fill(0); + this.#velo.fill(0); + this.#poly.fill(0); + this.#rawStrength.fill(0); + this.#pitch.fill(0); + this.#nrpn.fill(0); + this.#drum.fill(0); + this.#masterVol = 100; + this.#metaTexts = []; + this.#noteLength = 500; + this.#convertLastSyllable = 0; + this.#letterExpire = 0; + this.#letterDisp = ""; + this.#bitmapExpire = 0; + this.#bitmapPage = 0; + this.#bitmap.fill(0); + this.#modeKaraoke = false; + this.#selectPort = 0; + this.#receiveRS = true; + // Reset MIDI receive channel + this.#chReceive.forEach(function (e, i, a) { + a[i] = i; + }); + this.buildRchTree(); + // Reset channel redirection + if (type == 0) { + this.#trkRedir.fill(0); + this.#trkAsReq.fill(0); + }; + // Channel 10 to drum set + this.#cc[allocated.cc * 9] = drumMsb[0]; + this.#cc[allocated.cc * 25] = drumMsb[0]; + this.#cc[allocated.cc * 41] = drumMsb[0]; + this.#cc[allocated.cc * 57] = drumMsb[0]; + // Channel types + this.#chType.fill(this.CH_MELODIC); + this.#chType[9] = this.CH_DRUM1; + this.#chType[25] = this.CH_DRUM3; + this.#chType[41] = this.CH_DRUMS; + this.#chType[57] = this.CH_DRUMS; + this.#chType[73] = this.CH_DRUM5; + this.#chType[89] = this.CH_DRUM7; + this.#chType[105] = this.CH_DRUMS; + this.#chType[121] = this.CH_DRUMS; + // Reset MT-32 user patch and timbre storage + this.#cmPatch.fill(0); + this.#cmTimbre.fill(0); + this.#cmTPatch.fill(0); + this.#cmTTimbre.fill(0); + this.#bnCustom.fill(0); + // Reset EFX base registers + this.#efxBase.fill(0); + // Reset AI EFX display name + this.aiEfxName = ""; + // Reset MT-32 user bank + this.userBank.clearRange({msb: 0, lsb: 127, prg: [0, 127]}); + for (let ch = 0; ch < allocated.ch; ch ++) { + let chOff = ch * allocated.cc; + // Reset to full + this.#cc[chOff + ccToPos[7]] = 100; // Volume + this.#cc[chOff + ccToPos[11]] = 127; // Expression + // Reset to centre + this.#cc[chOff + ccToPos[10]] = 64; // Pan + this.#cc[chOff + ccToPos[71]] = 64; // Resonance + this.#cc[chOff + ccToPos[72]] = 64; // Release Time + this.#cc[chOff + ccToPos[73]] = 64; // Attack Time + this.#cc[chOff + ccToPos[74]] = 64; // Brightness + this.#cc[chOff + ccToPos[75]] = 64; // Decay Time + this.#cc[chOff + ccToPos[76]] = 64; // Vibrato Rate + this.#cc[chOff + ccToPos[77]] = 64; // Vibrato Depth + this.#cc[chOff + ccToPos[78]] = 64; // Vibrato Delay + // Extra default values + this.#cc[chOff + ccToPos[91]] = 40; // Reverb + // RPN/NRPN to null + this.#cc[chOff + ccToPos[101]] = 127; + this.#cc[chOff + ccToPos[100]] = 127; + this.#cc[chOff + ccToPos[99]] = 127; + this.#cc[chOff + ccToPos[98]] = 127; + // RPN reset + let rpnOff = ch * allocated.rpn; + this.#rpn[rpnOff] = 2; // Pitch bend sensitivity + this.#rpn[rpnOff + 1] = 64; // Fine tune MSB + this.#rpn[rpnOff + 2] = 0; // Fine tune LSB + this.#rpn[rpnOff + 3] = 64; // Coarse tune MSB + this.#rpn[rpnOff + 4] = 0; // Mod sensitivity MSB + this.#rpn[rpnOff + 5] = 0; // Mod sensitivity LSB + // NRPN drum section reset + }; + return; + }; + switchMode(mode, forced = false) { + let idx = modeIdx.indexOf(mode); + if (idx > -1) { + if (this.#mode == 0 || forced) { + let oldMode = this.#mode; + this.#mode = idx; + this.#bitmapPage = 0; // Restore page + this.#subMsb = substList[0][idx]; + this.#subLsb = substList[1][idx]; + for (let ch = 0; ch < allocated.ch; ch ++) { + if (this.#chType[ch] > 0 && this.#cc[ch * allocated.cc + ccToPos[0]] == drumMsb[oldMode]) { + // Switch drum MSBs. + this.#cc[ch * allocated.cc] = drumMsb[idx]; + }; + //this.initOnReset && forced && this.#ua.ano(ch); + }; + if (this.initOnReset && forced) { + //this.init(1); + }; + // Bank defaults + switch (idx) { + case modeMap.mt32: { + mt32DefProg.forEach((e, i) => { + let ch = i + 1; + if (!this.#chActive[ch]) { + this.#prg[ch] = e; + this.#cc[ch * allocated.cc + ccToPos[91]] = 127; + }; + }); + break; + }; + }; + // EFX defaults + let efxDefault; + switch (idx) { + case modeMap.gs: { + efxDefault = [40, 4, 40, 18, 40, 32, 32, 0, 0, 0, 0, 0, 0, 0]; + break; + }; + case modeMap.x5d: + case modeMap.ns5r: { + efxDefault = [44, 1, 44, 19, 44, 0, 44, 0, 0, 0, 0, 0, 0, 0]; + break; + }; + default: { + efxDefault = [1, 0, 65, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0]; + }; + }; + for (let i = 0; i < allocated.efx; i ++) { + if (!this.#efxBase[3 * i]) { + this.#efxBase[3 * i + 1] = efxDefault[2 * i]; + this.#efxBase[3 * i + 2] = efxDefault[2 * i + 1]; + }; + }; + this.dispatchEvent("mode", mode); + }; + } else { + throw(new Error(`Unknown mode ${mode}`)); + }; + }; + newStrength() { + this.#rawStrength.fill(0); + }; + runJson(json) { + // Execute transformed JSON event + if (json.type > 14) { + if (json.type == 15 && json.data.constructor != Uint8Array) { + json.data = Uint8Array.from(json.data); + }; + return this.#runChEvent[json.type].call(this, json); + } else { + // Universal MIDI channel receive support. + let rcvPart = this.chRedir(json.part, json.track), + executed = false; + this.#receiveTree[rcvPart]?.forEach((e) => { + json.channel = e; + executed = true; + this.#runChEvent[json.type].call(this, json); + }); + /* this.#chReceive.forEach((e, i) => { + if (e == rcvPart) { + //json.channel = this.chRedir(i, json.track); + json.channel = i; + executed = true; + this.#runChEvent[json.type].call(this, json); + }; + }); */ + if (!executed) { + console.warn(`${eventTypes[json.type] ? eventTypes[json.type] : json.type}${[11, 12].includes(json.type) ? (json.data[0] != undefined ? json.data[0] : json.data).toString() : ""} event sent to CH${rcvPart + 1} without any recipient.`); + }; + }; + if (this.#metaTexts.length > 100) { + this.#metaTexts.splice(100, this.#metaTexts.length - 99); + }; + }; + runRaw(midiArr) { + // Translate raw byte stream into JSON MIDI event + }; + async loadBank(format, blob) { + format = format.toLowerCase(); + switch (format) { + case "s7e": { + this.userBank.clearRange({msb: 63, lsb: [21, 22]}); + this.userBank.clearRange({msb: 63, lsb: [24, 27]}); + break; + }; + default: { + throw(new Error(`Unknown bank format ${format}`)); + }; + }; + switch (format) { + case "s7e": { + bankDecoder.context = this; + this.userBank.load(await bankDecoder.read(format, blob)); + break; + }; + }; + }; + constructor() { + super(); + let upThis = this; + this.#bitmap = new Uint8Array(256); + this.#bitmapStore[10] = new Uint8Array(512); + this.#metaSeq = new BinaryMatch(); + this.userBank.strictMode = true; + // Prevent bank readers from getting stalled + this.userBank.load(`MSB\tPRG\tLSB\tNME\n062\t000\t000\t\n122\t000\t000\t\n122\t001\t000\t\n122\t002\t000\t\n122\t003\t000\t\n122\t004\t000\t\n122\t005\t000\t\n122\t006\t000\t`); + // Metadata events + // Should be moved to somewhere else + this.#metaRun[1] = function (data) { + // Normal text + switch (data.slice(0, 2)) { + case "@I": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Kar.Info: ${data.slice(2)}`); + break; + }; + case "@K": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Karaoke mode active.`); + console.debug(`Karaoke mode active: ${data.slice(2)}`); + break; + }; + case "@L": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Language: ${data.slice(2)}`); + break; + }; + case "@T": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Ka.Title: ${data.slice(2)}`); + break; + }; + case "@V": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Kara.Ver: ${data.slice(2)}`); + break; + }; + case "XF": { + // XG File Data section + let dataArr = data.slice(2).split(":"); + switch (dataArr[0]) { + case "hd": { + dataArr.slice(1).forEach((e, i) => { + e.length && this.#metaTexts.unshift(`${[ + "SongDate", "SnRegion", "SongCat.", "SongBeat", + "SongInst", "Sn.Vocal", "SongCmp.", "SongLrc.", + "SongArr.", "SongPerf", "SongPrg.", "SongTags" + ][i]}: ${e}`); + }); + break; + }; + case "ln": { + dataArr.slice(1).forEach((e, i) => { + e.length && this.#metaTexts.unshift(`${[ + "Kar.Lang", "Kar.Name", "Kar.Cmp.", "Kar.Lrc.", + "kar.Arr.", "Kar.Perf", "Kar.Prg." + ][i]}: ${e}`); + }); + break; + }; + default: { + this.#metaTexts.unshift(`XGF_Data: ${data}`); + }; + }; + break; + }; + default: { + if (this.#modeKaraoke) { + if (data[0] == "\\") { + // New section + this.#metaTexts.unshift(`@ ${data.slice(1)}`); + } else if (data[0] == "/") { + // New line + this.#metaTexts.unshift(data.slice(1)); + } else { + // Normal append + this.#metaTexts[0] += data; + }; + } else { + this.#metaTexts[0] = data; + this.#metaTexts.unshift(""); + }; + }; + }; + }; + this.#metaRun[2] = function (data) { + this.#metaTexts.unshift(`Copyrite: ${data}`); + }; + this.#metaRun[3] = function (data, track) { + // Filter overly annoying meta events + if (track < 1 && this.#metaChannel < 1) { + this.#metaTexts.unshift(`TrkTitle: ${data}`); + }; + }; + this.#metaRun[4] = function (data, track) { + //if (track < 1 && this.#metaChannel < 1) { + this.#metaTexts.unshift(`${showTrue(this.#metaChannel, "", " ")}Instrmnt: ${data}`); + //}; + }; + this.#metaRun[5] = function (data) { + if (data.trim() == "") { + this.#metaTexts.unshift(""); + } else { + this.#metaTexts[0] += `${data}`; + }; + }; + this.#metaRun[6] = function (data) { + this.#metaTexts.unshift(`${showTrue(this.#metaChannel, "", " ")}C.Marker: ${data}`); + }; + this.#metaRun[7] = function (data) { + this.#metaTexts.unshift(`CuePoint: ${data}`); + }; + this.#metaRun[32] = function (data) { + this.#metaChannel = data[0] + 1; + }; + this.#metaRun[33] = function (data, track) { + console.debug(`Track ${track} requests to get assigned to output ${data}.`); + upThis.#trkAsReq[track] = data + 1; + }; + this.#metaRun[81] = function (data, track) { + upThis.#noteLength = data / 1000; + }; + this.#metaRun[127] = function (data, track) { + //console.debug(`Sequencer specific on track ${track}: `, data); + upThis.#metaSeq.run(data, track); + }; + // Sequencer specific meta event + // No refactoring needed. + this.#metaSeq.default = function (seq) { + console.warn(`Unrecognized sequencer-specific byte sequence: ${seq}`); + }; + this.#metaSeq.add([67, 0, 1], function (msg, track) { + //console.debug(`XGworks requests assigning track ${track} to output ${msg[0]}.`); + upThis.#trkAsReq[track] = msg[0] + 1; + }); + // Binary match should be avoided in favour of a circular structure + this.#seUnr = new BinaryMatch("universal non-realtime"); + this.#seUr = new BinaryMatch("universal realtime"); + this.#seXg = new BinaryMatch("Yamaha"); + this.#seGs = new BinaryMatch("Roland"); + this.#seAi = new BinaryMatch("Korg"); + this.#seKg = new BinaryMatch("Kawai"); + this.#seSg = new BinaryMatch("Akai"); + this.#seCs = new BinaryMatch("Casio"); + // Notifies unrecognized SysEx strings with their vendors + let syxDefaultErr = function (msg) { + console.info(`Unrecognized SysEx in "${this.name}" set.`, msg); + }; + this.#seUnr.default = syxDefaultErr; + this.#seUr.default = syxDefaultErr; + this.#seXg.default = syxDefaultErr; + this.#seGs.default = syxDefaultErr; + this.#seAi.default = syxDefaultErr; + this.#seKg.default = syxDefaultErr; + this.#seSg.default = syxDefaultErr; + this.#seCs.default = syxDefaultErr; + // The new SysEx engine only defines actions when absolutely needed. + // Mode reset section + this.#seUnr.add([9], (msg) => { + // General MIDI reset. + upThis.switchMode(["gm", "?", "g2"][msg[0] - 1], true); + upThis.#modeKaraoke = upThis.#modeKaraoke || false; + console.info(`MIDI reset: ${["GM", "Init", "GM2"][msg[0] - 1]}`); + if (msg[0] == 2) { + upThis.init(); + }; + }); + // GM SysEx section + this.#seUr.add([4, 1], (msg) => { + // Master volume + upThis.#masterVol = ((msg[1] << 7) + msg[0]) / 16383 * 100; + }).add([4, 3], (msg) => { + // Master fine tune + return (((msg[1] << 7) + msg[0] - 8192) / 8192); + }).add([4, 4], (msg) => { + // Master coarse tune + return (msg[1] - 64); + }); + // XG SysEx section + this.#seXg.add([76, 0, 0], (msg) => { + switch (msg[0]) { + case 125: { + // XG drum reset + console.info(`XG drum setup reset: ${msg}`); + break; + }; + case 126: { + // Yamaha XG reset + upThis.switchMode("xg", true); + upThis.#modeKaraoke = false; + console.info("MIDI reset: XG"); + break; + }; + default: { + let mTune = [0, 0, 0, 0]; + let writeTune = (e, i) => { + // XG master fine tune + mTune[i] = e; + }; + msg.subarray(1).forEach((e, i) => { + let addr = i + msg[0]; + ([ + writeTune, writeTune, writeTune, writeTune, + (e) => { + // XG master volume + this.#masterVol = e * 129 / 16383 * 100; + }, + (e) => {/* XG master attenuator */}, + (e) => {/* XG master coarse tune */} + ][addr] || (() => {}))(e, i); + }); + if (msg[0] < 4) { + // Commit master tune + let rTune = 0; + mTune.forEach((e) => { + rTune = rTune << 4; + rTune += e; + }); + rTune -= 1024; + }; + }; + }; + }).add([76, 2, 1], (msg) => { + // XG reverb, chorus and variation + let dPref = "XG "; + if (msg[0] < 32) { + // XG reverb + dPref += "reverb "; + msg.subarray(1).forEach((e, i) => { + ([(e) => { + upThis.setEffectTypeRaw(0, false, e); + console.info(`${dPref}main type: ${xgEffType[e]}`); + }, (e) => { + upThis.setEffectTypeRaw(0, true, e); + console.debug(`${dPref}sub type: ${e + 1}`); + }, (e) => { + console.debug(`${dPref}time: ${getXgRevTime(e)}s`); + }, (e) => { + console.debug(`${dPref}diffusion: ${e}`); + }, (e) => { + console.debug(`${dPref}initial delay: ${e}`); + }, (e) => { + console.debug(`${dPref}HPF cutoff: ${xgNormFreq[e]}Hz`); + }, (e) => { + console.debug(`${dPref}LPF cutoff: ${xgNormFreq[e]}Hz`); + }, (e) => { + console.debug(`${dPref}width: ${e}`); + }, (e) => { + console.debug(`${dPref}height: ${e}`); + }, (e) => { + console.debug(`${dPref}depth: ${e}`); + }, (e) => { + console.debug(`${dPref}wall type: ${e}`); + }, (e) => { + console.debug(`${dPref}dry/wet: ${e}`); + }, (e) => { + console.debug(`${dPref}send: ${toDecibel(e)}dB`); + }, (e) => { + console.debug(`${dPref}pan: ${e - 64}`); + }, false, false, (e) => { + console.debug(`${dPref}delay: ${e}`); + }, (e) => { + console.debug(`${dPref}density: ${e}`); + }, (e) => { + console.debug(`${dPref}balance: ${e}`); + }, (e) => { + }, (e) => { + console.debug(`${dPref}feedback: ${e}`); + }, (e) => { + }][msg[0] + i] || function () { + console.warn(`Unknown XG reverb address: ${msg[0]}.`); + })(e); + }); + } else if (msg[0] < 64) { + // XG chorus + dPref += "chorus "; + msg.subarray(1).forEach((e, i) => { + ([(e) => { + upThis.setEffectTypeRaw(1, false, e); + console.info(`${dPref}main type: ${xgEffType[e]}`); + }, (e) => { + upThis.setEffectTypeRaw(1, true, e); + console.debug(`${dPref}sub type: ${e + 1}`); + }, (e) => { + console.debug(`${dPref}LFO: ${xgLfoFreq[e]}Hz`); + }, (e) => { + //console.debug(`${dPref}LFO phase: ${e}`); + }, (e) => { + console.debug(`${dPref}feedback: ${e}`); + }, (e) => { + console.debug(`${dPref}delay offset: ${getXgDelayOffset(e)}ms`); + }, (e) => { + }, (e) => { + console.debug(`${dPref}low: ${xgNormFreq[e]}Hz`); + }, (e) => { + console.debug(`${dPref}low: ${e - 64}dB`); + }, (e) => { + console.debug(`${dPref}high: ${xgNormFreq[e]}Hz`); + }, (e) => { + console.debug(`${dPref}high: ${e - 64}dB`); + }, (e) => { + console.debug(`${dPref}dry/wet: ${e}`); + }, (e) => { + console.debug(`${dPref}send: ${toDecibel(e)}dB`); + }, (e) => { + console.debug(`${dPref}pan: ${e - 64}`); + }, (e) => { + console.debug(`${dPref}to reverb: ${toDecibel(e)}dB`); + }, false, (e) => { + }, (e) => { + }, (e) => { + }, (e) => { + console.debug(`${dPref}LFO phase diff: ${(e - 64) * 3}deg`); + }, (e) => { + console.debug(`${dPref}input mode: ${e ? "stereo" : "mono"}`); + }, (e) => { + }][msg[0] - 32 + i] || function () { + console.warn(`Unknown XG chorus address: ${msg[0]}.`); + })(e); + }); + } else if (msg[0] < 86) { + // XG variation section 1 + dPref += "variation "; + msg.subarray(1).forEach((e, i) => { + ([(e) => { + upThis.setEffectTypeRaw(2, false, e); + console.info(`${dPref}main type: ${xgEffType[e]}`); + }, (e) => { + upThis.setEffectTypeRaw(2, true, e); + console.debug(`${dPref}sub type: ${e + 1}`); + }][msg[0] - 64 + i] || function () { + //console.warn(`Unknown XG variation address: ${msg[0]}.`); + })(e); + }); + } else if (msg[0] < 97) { + // XG variation section 2 + dPref += "variation "; + msg.subarray(1).forEach((e, i) => { + ([(e) => { + console.debug(`${dPref}send: ${toDecibel(e)}dB`); + }, (e) => { + console.debug(`${dPref}pan: ${e - 64}`); + }, (e) => { + console.debug(`${dPref}to reverb: ${toDecibel(e)}dB`); + }, (e) => { + console.debug(`${dPref}to chorus: ${toDecibel(e)}dB`); + }, (e) => { + console.debug(`${dPref}connection: ${e ? "system" : "insertion"}`); + }, (e) => { + console.debug(`${dPref}channel: CH${e + 1}`); + }, (e) => { + console.debug(`${dPref}mod wheel: ${e - 64}`); + }, (e) => { + console.debug(`${dPref}bend wheel: ${e - 64}`); + }, (e) => { + console.debug(`${dPref}channel after touch: ${e - 64}`); + }, (e) => { + console.debug(`${dPref}AC1: ${e - 64}`); + }, (e) => { + console.debug(`${dPref}AC2: ${e - 64}`); + }][msg[0] - 86 + i])(e); + }); + } else if (msg[0] > 111 && msg[0] < 118) { + // XG variation section 3 + dPref += "variation "; + } else { + console.warn(`Unknown XG variation address: ${msg[0]}`); + }; + }).add([76, 2, 64], (msg) => { + // XG 5-part EQ + msg.subarray(1).forEach((e, i) => { + let c = i + msg[0]; + if (c == 0) { + console.debug(`XG EQ preset: ${["flat", "jazz", "pop", "rock", "classic"][e]}`); + } else { + let band = (c - 1) >> 2, + prop = (c - 1) & 3, + dPref = `XG EQ ${band} ${["gain", "freq", "Q", "shape"][prop]}: `; + [() => { + console.debug(`${dPref}${e - 64}dB`); + }, () => { + console.debug(`${dPref}${e} (raw)`); // HELP WANTED + }, () => { + console.debug(`${dPref}${e / 10}`); + }, () => { + console.debug(`${dPref}${["shelf", "peak"][+!!e]}`); + }][prop](); + }; + }); + }).add([76, 3], (msg) => { + // XG insertion effects + let varSlot = msg[0], offset = msg[1]; + let dPref = `XG Insertion ${msg[0] + 1} `; + msg.subarray(2).forEach((e, i) => { + ([(e) => { + upThis.setEffectTypeRaw(3 + varSlot, false, e); + console.info(`${dPref}main type: ${xgEffType[e]}`); + }, (e) => { + upThis.setEffectTypeRaw(3 + varSlot, true, e); + console.debug(`${dPref}sub type: ${e + 1}`); + }][offset + i] || function () { + //console.warn(`Unknown XG variation address: ${msg[0]}.`); + })(e); + }); + }).add([76, 6, 0], (msg) => { + // XG Letter Display + let offset = msg[0]; + if (offset < 64) { + upThis.setLetterDisplay(msg.subarray(1), "XG letter display", offset); + } else { + // Expire all existing letter display + upThis.#letterExpire = Date.now(); + }; + }).add([76, 7, 0], (msg) => { + // XG Bitmap Display + let offset = msg[0]; + upThis.#bitmapPage = 0; + upThis.#bitmapExpire = Date.now() + 3200; + upThis.#bitmap.fill(0); // Init + let workArr = msg.subarray(1); + for (let index = 0; index < offset; index ++) { + workArr.unshift(0); + }; + workArr.forEach(function (e, i) { + let ln = Math.floor(i / 16), co = i % 16; + let pt = (co * 3 + ln) * 7, threshold = 7, bi = 0; + pt -= co * 5; + if (ln == 2) { + threshold = 2; + }; + while (bi < threshold) { + upThis.#bitmap[pt + bi] = (e >> (6 - bi)) & 1; + bi ++; + }; + }); + }).add([76, 8], (msg, track) => { + // XG part setup + let part = upThis.chRedir(msg[0], track, true), + id = msg[1], + chOff = allocated.cc * part, + dPref = `XG CH${part + 1} `, + errMsg = `Unknown XG part address ${id}.`; + msg.subarray(2).forEach((e, i) => { + // There is a bug here, but I don't have time right now + if (id < 1) { + console.debug(errMsg); + } else if (id < 41) { + // CC manipulation can be further shrunk + ([() => { + upThis.#cc[chOff + ccToPos[0]] = e; // MSB + }, () => { + upThis.#cc[chOff + ccToPos[32]] = e; // LSB + }, () => { + upThis.#prg[part] = e; // program + }, () => { + let ch = upThis.chRedir(e, track, true); + upThis.#chReceive[part] = ch; // Rx CH + if (part != ch) { + upThis.buildRchTree(); + console.info(`${dPref}receives from CH${ch + 1}`); + }; + }, () => { + upThis.#mono[part] = +!e; // mono/poly + }, () => { + // same note key on assign? + }, () => { + upThis.setChType(part, e, modeMap.xg); + console.debug(`${dPref}type: ${xgPartMode[e] || e}`); + }, () => { + // coarse tune + upThis.#rpn[allocated.rpn * part + 3] = e; + }, false, false, () => { + upThis.#cc[chOff + ccToPos[7]] = e; // volume + }, false, false, () => { + upThis.#cc[chOff + ccToPos[10]] = e || 128; // pan + }, false, false, () => { + upThis.#cc[chOff + ccToPos[128]] = e; // dry level + }, () => { + upThis.#cc[chOff + ccToPos[93]] = e; // chorus + }, () => { + upThis.#cc[chOff + ccToPos[91]] = e; // reverb + }, () => { + upThis.#cc[chOff + ccToPos[94]] = e; // variation + }, () => { + upThis.#cc[chOff + ccToPos[76]] = e; // vib rate + }, () => { + upThis.#cc[chOff + ccToPos[77]] = e; // vib depth + }, () => { + upThis.#cc[chOff + ccToPos[78]] = e; // vib delay + }, () => { + upThis.#cc[chOff + ccToPos[74]] = e; // brightness + }, () => { + upThis.#cc[chOff + ccToPos[71]] = e; // resonance + }, () => { + upThis.#cc[chOff + ccToPos[73]] = e; // attack + }, () => { + upThis.#cc[chOff + ccToPos[75]] = e; // decay + }, () => { + upThis.#cc[chOff + ccToPos[72]] = e; // release + }][id + i - 1] || (() => {}))(); + } else if (id < 48) { + console.debug(errMsg); + } else if (id < 111) { + if (id > 102 && id < 105) { + upThis.#cc[chOff + ccToPos[[5, 65][id & 1]]] = e; // portamento + }; + } else if (id < 114) { + console.debug(errMsg); + } else if (id < 116) { + console.debug(`${dPref}EQ ${["bass", "treble"][id & 1]} gain: ${e - 64}dB`); + } else if (id < 118) { + console.debug(errMsg); + } else if (id < 120) { + console.debug(`${dPref}EQ ${["bass", "treble"][id & 1]} freq: ${e}`); + } else { + console.debug(errMsg); + }; + }); + }).add([76, 9], (msg, track) => { + // PLG-150VL Part Setup + let part = upThis.chRedir(msg[0], track, true), + id = msg[1]; + let dPref = `PLG-150VL CH${part + 1} `; + msg.subarray(2).forEach((e, i) => { + let ri = i + id; + switch (ri) { + case 1: { + console.info(`${dPref}breath mode: ${["system", "breath", "velocity", "touch EG"][e]}`); + break; + }; + case 0: + case 27: + case 28: { + break; + }; + default: { + if (ri < 27) { + let pType = [ + "pressure", + "embouchure", + "tonguing", + "scream", + "breath noise", + "growl", + "throat formant", + "harmonic enhancer", + "damping", + "absorption", + "amplification", + "brightness" + ][(ri - 3) >> 1]; + if (ri & 1) { + if (ri < 23) { + console.debug(`${dPref}${pType} control source: ${getVlCtrlSrc(e)}`); + if (e && e < 96) { + upThis.allocateAce(e); + }; + } else { + // These actually belong to 0x57, not 0x4c + console.debug(`${dPref}${pType} scale break point: ${e}`); + }; + } else { + console.debug(`${dPref}${pType} depth: ${e - 64}`); + }; + }; + }; + }; + }); + }).add([76, 10], (msg) => { + // XG HPF cutoff at 76, 10, nn, 32 + // Won't implement for now + }).add([76, 16], (msg) => { + // XG A/D part, won't implement for now + }).add([76, 17, 0, 0], (msg) => { + // XG A/D mono/stereo mode, won't implement for now + }).add([76, 112], (msg) => { + // XG plugin board generic + console.debug(`XG enable PLG-1${["50VL", "00SG", "50DX"][msg[0]]} for CH${msg[2] + 1}.`); + }).add([73, 0, 0], (msg, track) => { + // MU1000/2000 System + let offset = msg[0]; + msg.subarray(1).forEach((e, i) => { + let ri = offset + i; + if (ri == 8) { + console.debug(`MU1000 set LCD contrast to ${e}.`); + } else if (ri > 9 && ri < 16) { + // Octavia custom SysEx + [() => { + upThis.dispatchEvent("channelactive", e); + }, () => { + if (e < 8) { + upThis.dispatchEvent("channelmin", (e << 4)); + console.info(`Octavia System: Minimum CH${(e << 4) + 1}`); + } else { + upThis.dispatchEvent("channelreset"); + console.info(`Octavia System: Clear channel ranges`); + }; + }, () => { + if (e < 8) { + upThis.dispatchEvent("channelmax", (e << 4) + 15); + console.info(`Octavia System: Maximum CH${(e << 4) + 16}`); + } else { + upThis.dispatchEvent("channelreset"); + console.info(`Octavia System: Clear channel ranges`); + }; + }, () => { + upThis.dispatchEvent("channelreset"); + console.info(`Octavia System: Clear channel ranges`); + }, () => { + upThis.#receiveRS = !!e; + console.info(`Octavia System: RS receiving ${["dis", "en"][e]}abled.`); + }][ri - 10](); + }; + }); + }).add([73, 10, 0], (msg, track) => { + // MU1000 remote switch + // But in practice... They are channel switching commands. + let cmd = msg[0]; + let dPref = `MU1000 RS${upThis.#receiveRS ? "" : " (ignored)"}: `; + if (cmd < 16) { + switch (cmd) { + case 2: { + // Show all 64 channels + let e = upThis.chRedir(0, track, true); + if (upThis.#receiveRS) { + upThis.dispatchEvent("channelmin", e); + upThis.dispatchEvent("channelmax", e + 63); + }; + console.info(`${dPref}Show CH1~64`); + break; + }; + case 3: { + // Show 32 channels + let e = upThis.chRedir(msg[1] << 5, track, true); + upThis.#receiveRS && upThis.dispatchEvent("channelmin", e); + upThis.#receiveRS && upThis.dispatchEvent("channelmax", e + 31); + console.info(`${dPref}Show CH${e + 1}~CH${e + 32}`); + break; + }; + default: { + console.debug(`${dPref}unknown switch ${cmd} invoked.`); + }; + }; + } else if (cmd < 32) { + if (upThis.#receiveRS) { + let e = upThis.chRedir(cmd - 16 + (upThis.#selectPort << 4), track, true); + upThis.dispatchEvent("channelactive", e); + }; + } else if (cmd < 36) { + let e = upThis.chRedir((cmd - 32) << 4, track, true); + if (upThis.#receiveRS) { + upThis.dispatchEvent("channelmin", e); + upThis.dispatchEvent("channelmax", e + 15); + upThis.#selectPort = cmd - 32; + }; + console.info(`${dPref}Show CH${e + 1}~CH${e + 16}`); + }; + }).add([93, 3], (msg, track) => { + // PLG-100SG singing voice + let part = upThis.chRedir(msg[0], track, true), + dPref = `PLG-100SG CH${part + 1} `, + timeNow = Date.now(); + if (msg[1] == 0) { + // Vocal information + let vocal = "", + length = 0; + msg.subarray(2).forEach((e, i) => { + if (i % 2 == 0) { + vocal += xgSgVocals[e] || e.toString().padStart("0"); + } else { + length += e * 13; // 7.5ms + }; + }); + if (timeNow >= upThis.#convertLastSyllable) { + upThis.#metaTexts.unshift("SG Lyric: "); + }; + upThis.#metaTexts[0] += `${getSgKana(vocal)}`; + upThis.#convertLastSyllable = timeNow + Math.ceil(length / 2) + upThis.#noteLength; + if (getDebugState()) { + console.debug(`${dPref}vocals: ${vocal}`); + }; + } else { + console.warn(`Unknown PLG-100SG data: ${msg}`); + }; + }); + this.#seXg.add([76, 48], (msg) => { + // XG drum setup 1 + }).add([76, 49], (msg) => { + // XG drum setup 2 + }).add([76, 50], (msg) => { + // XG drum setup 3 + }).add([76, 51], (msg) => { + // XG drum setup 4 + }); + // MU1000/2000 EPROM write + this.#seXg.add([89, 0], (msg, track, id) => { + // EPROM trail write + if (upThis.eprom) { + let length = msg[0]; + let addr = (msg[1] << 14) + (msg[2] << 7) + msg[3] + (upThis.eprom.offset || 0); + getDebugState() && console.debug(`MU1000 EPROM trail to 0x${addr.toString(16).padStart(6, "0")}, ${length} bytes.`); + let target = upThis.eprom.data; + msg.subarray(4).forEach((e, i) => { + // Overlay decoding + let secId = i >> 3, secIdx = i & 7; + if (secIdx == 7) { + for (let bi = 0; bi < 7; bi ++) { + target[addr + 7 * secId + bi] += ((e >> (6 - bi)) & 1) << 7; + }; + } else { + target[addr + 7 * secId + secIdx] = e; + }; + }); + }; + }).add([89, 1], (msg, track, id) => { + // EPROM base pointer jump + let addr = (msg[0] << 21) + (msg[1] << 14) + (msg[2] << 7) + msg[3]; + getDebugState() && console.debug(`MU1000 EPROM jump to 0x${addr.toString(16).padStart(6, "0")}.`); + if (upThis.eprom) { + upThis.eprom.offset = addr; + }; + }).add([89, 2], (msg, track, id) => { + // EPROM bulk write + // The first byte always seem to be zero + if (upThis.eprom) { + let addr = (msg[0] << 21) + (msg[1] << 14) + (msg[2] << 7) + msg[3] + (upThis.eprom.offset || 0); + getDebugState() && console.debug(`MU1000 EPROM write to 0x${addr.toString(16).padStart(6, "0")}.`); + let target = upThis.eprom.data; + msg.subarray(4).forEach((e, i) => { + // Overlay decoding + let secId = i >> 3, secIdx = i & 7; + if (secIdx == 7) { + for (let bi = 0; bi < 7; bi ++) { + target[addr + 7 * secId + bi] += ((e >> (6 - bi)) & 1) << 7; + }; + } else { + target[addr + 7 * secId + secIdx] = e; + }; + }); + }; + }).add([89, 3], (msg, track, id) => { + // Unknown instruction + }); + // XG drum setup would be blank for now + // TG300 SysEx section, the parent of XG + this.#seXg.add([39, 48], (msg, track, id) => { + // TG100 pool + }).add([43, 0, 0], (msg, track, id) => { + // TG300 master setup + let mTune = [0, 0, 0, 0]; + let writeTune = (e, i) => { + // GS master fine tune + mTune[i] = e; + }; + msg.subarray(1).forEach((e, i) => { + let addr = i + msg[0]; + ([ + writeTune, + writeTune, + writeTune, + writeTune, + () => { + this.#masterVol = e * 129 / 16383 * 100; + }, + () => { + return e - 64; + }, + () => { + return e || 128; + }, + () => { + return e; + }, + () => { + return e; + }, + () => { + console.debug(`TG300 variation on cc${e}.`); + } + ] || (() => {}))[addr](e, addr); + }); + if (msg[0] < 4) { + // Commit master tune + let rTune = 0; + mTune.forEach((e) => { + rTune = rTune << 4; + rTune += e; + }); + rTune -= 1024; + }; + }).add([43, 1, 0], (msg, track, id) => { + // TG300 effect (R C V) setup + }).add([43, 2], (msg, track, id) => { + // TG300 part setup + let part = upThis.chRedir(msg[0], track, true); + let offset = msg[1]; + let chOff = allocated.cc * part; + let dPref = `TG300 CH${part + 1} `; + msg.subarray(2).forEach((e, i) => { + if (i < 5) { + ([() => { + // element reserve + }, () => { + upThis.#cc[chOff + ccToPos[0]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[32]] = e; + }, () => { + upThis.#prg[part] = e; + }, () => { + let ch = upThis.chRedir(e, track, true); + upThis.#chReceive[part] = ch; // Rx CH + if (part != ch) { + upThis.buildRchTree(); + console.info(`${dPref}receives from CH${ch + 1}`); + }; + }][i + offset] || (() => {}))(e, i + offset); + } else if (i < 21) {} else if (i < 47) { + ([() => { + upThis.#mono[part] = +!e; + }, () => { + // same key on assign + }, () => { + // part mode + }, () => { + // coarse tune + upThis.#rpn[allocated.rpn * part + 3] = e; + }, () => { + // absolute detune + }, () => { + upThis.#cc[chOff + ccToPos[7]] = e; + }, false + , false + , () => { + upThis.#cc[chOff + ccToPos[10]] = e || 128; + }, false + , false + , () => { + console.debug(`${dPref} AC1 at cc${e}`); + }, () => { + console.debug(`${dPref} AC2 at cc${e}`); + }, () => { + // Dry level + upThis.#cc[chOff + ccToPos[128]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[93]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[91]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[94]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[76]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[77]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[74]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[71]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[73]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[75]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[72]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[78]] = e; + }][i + offset - 21] || (() => {}))(e, i + offset); + } else if (i < 95) {} else { + ([() => { + upThis.#cc[chOff + ccToPos[65]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[5]] = e; + }][i + offset - 95] || (() => {}))(e, i + offset); + }; + }); + }).add([43, 7, 0], (msg, track, id) => { + // TG300 display letter + // Same as XG letter display + let offset = msg[0]; + upThis.setLetterDisplay(msg.subarray(1), "TG300 letter display", offset); + }).add([43, 7, 1], (msg, track, id) => { + // TG300 display bitmap + // Same as XG bitmap display + upThis.#bitmapPage = 0; + upThis.#bitmapExpire = Date.now() + 3200; + upThis.#bitmap.fill(0); // Init + msg.forEach(function (e, i) { + let ln = Math.floor(i / 16), co = i % 16; + let pt = (co * 3 + ln) * 7, threshold = 7, bi = 0; + pt -= co * 5; + if (ln == 2) { + threshold = 2; + }; + while (bi < threshold) { + upThis.#bitmap[pt + bi] = (e >> (6 - bi)) & 1; + bi ++; + }; + }); + }); + // TG drum setup would also be blank + // GS SysEx section + this.#seGs.add([66, 18, 0, 0, 127], (msg, track, id) => { + // GS mode set + upThis.switchMode("gs", true); + upThis.#cc[allocated.cc * 9] = 120; + upThis.#cc[allocated.cc * 25] = 120; + upThis.#cc[allocated.cc * 41] = 120; + upThis.#cc[allocated.cc * 57] = 120; + upThis.#subLsb = 3; // Use SC-88 Pro map by default + upThis.#modeKaraoke = false; + upThis.#trkRedir.fill(0); + console.info(`GS system to ${["single", "dual"][msg[0]]} mode.`); + }).add([66, 18, 64, 0], (msg, track, id) => { + switch (msg[0]) { + case 127: { + // Roland GS reset + upThis.switchMode("gs", true); + upThis.#cc[allocated.cc * 9] = 120; + upThis.#cc[allocated.cc * 25] = 120; + upThis.#cc[allocated.cc * 41] = 120; + upThis.#cc[allocated.cc * 57] = 120; + upThis.#modeKaraoke = false; + upThis.#trkRedir.fill(0); + console.info("MIDI reset: GS"); + break; + }; + default: { + let mTune = [0, 0, 0, 0]; + let writeTune = (e, i) => { + // GS master fine tune + mTune[i] = e; + }; + msg.subarray(1).forEach((e, i) => { + let addr = i + msg[0]; + [ + writeTune, writeTune, writeTune, writeTune, + (e) => { + // XG master volume + this.#masterVol = e * 129 / 16383 * 100; + }, + (e) => {/* XG master coarse tune */}, + (e) => {/* XG master pan */} + ][addr](e, i); + }); + if (msg[0] < 4) { + // Commit master tune + let rTune = 0; + mTune.forEach((e) => { + rTune = rTune << 4; + rTune += e; + }); + rTune -= 1024; + }; + }; + }; + }).add([66, 18, 64, 1], (msg) => { + // GS patch params + let offset = msg[0]; + if (offset < 16) { + // GS patch name (what for?) + let string = "".padStart(offset, " "); + msg.subarray(1).forEach((e, i) => { + string += String.fromCharCode(Math.max(32, e)); + }); + string = string.padEnd(16, " "); + console.debug(`GS patch name: ${string}`); + } else if (offset < 48) { + // GS partial reserve + } else if (offset < 65) { + // GS reverb and chorus + msg.subarray(1).forEach((e, i) => { + let dPref = `GS ${(offset + i) > 55 ? "chorus" : "reverb"} `; + ([() => { + console.info(`${dPref}type: ${gsRevType[e]}`); + upThis.setEffectType(0, 40, e); + }, () => {// character + }, () => {// pre-LPF + }, () => {// level + }, () => {// time + }, () => {// delay feedback + }, false, () => { + console.debug(`${dPref}predelay: ${e}ms`); + }, () => { + console.info(`${dPref}type: ${gsChoType[e]}`); + upThis.setEffectType(1, 40, 16 + e); + }, () => {// pre-LPF + }, () => {// level + }, () => {// feedback + }, () => {// delay + }, () => {// rate + }, () => {// depth + }, () => { + console.debug(`${dPref}to reverb: ${toDecibel(e)}`); + }, () => { + console.debug(`${dPref}to delay: ${toDecibel(e)}`); + }][offset + i - 48] || (() => {}))(); + }); + } else if (offset < 80) { + console.debug(`Unknown GS patch address: ${offset}`); + } else if (offset < 91) { + // GS delay + msg.subarray(1).forEach((e, i) => { + let dPref = `GS delay `; + ([() => { + console.info(`${dPref}type: ${gsDelType[e]}`); + upThis.setEffectType(2, 40, 32 + e); + }, () => {// pre-LPF + }, () => {// time C + }, () => {// time L + }, () => {// time R + }, () => {// level C + }, () => {// level L + }, () => {// level R + }, () => {// level + }, () => {// feedback + }, () => { + console.debug(`${dPref}to reverb: ${toDecibel(e)}`); + }][offset + i - 80] || (() => {}))(); + }); + } else { + console.debug(`Unknown GS patch address: ${offset}`); + }; + }).add([66, 18, 64, 2], (msg) => { + // GS EQ + let dPref = `GS EQ `; + msg.subarray(1).forEach((e, i) => { + ([() => { + console.debug(`${dPref}low freq: ${[200, 400][e]}Hz`); + }, () => { + console.debug(`${dPref}low gain: ${e - 64}dB`); + }, () => { + console.debug(`${dPref}high freq: ${[3E3, 6E3][e]}Hz`); + }, () => { + console.debug(`${dPref}high gain: ${e - 64}dB`); + }][msg[0] + i] || function () { + console.warn(`Unknown GS EQ address: ${msg[0] + i}`); + })(); + }); + }).add([66, 18, 64, 3], (msg) => { + // GS EFX + let dPref = `GS EFX `; + let prefDesc = function (e, i) { + let desc = getGsEfxDesc(upThis.#efxBase.subarray(10, 12), i, e); + if (desc) { + console.debug(`${dPref}${getGsEfx(upThis.#efxBase.subarray(10, 12))} ${desc}`); + }; + }; + msg.subarray(1).forEach((e, i) => { + ([() => { + upThis.setEffectTypeRaw(3, false, 32 + e); + }, () => { + upThis.setEffectTypeRaw(3, true, e); + console.info(`${dPref}type: ${getGsEfx(upThis.#efxBase.subarray(10, 12))}`); + }, false, + prefDesc, prefDesc, prefDesc, prefDesc, prefDesc, + prefDesc, prefDesc, prefDesc, prefDesc, prefDesc, + prefDesc, prefDesc, prefDesc, prefDesc, prefDesc, + prefDesc, prefDesc, prefDesc, prefDesc, prefDesc, + () => { + console.debug(`${dPref}to reverb: ${toDecibel(e)}dB`); + }, () => { + console.debug(`${dPref}to chorus: ${toDecibel(e)}dB`); + }, () => { + console.debug(`${dPref}to delay: ${toDecibel(e)}dB`); + }, false, () => { + console.debug(`${dPref}1 source: ${e}`); + if (e && e < 96) { + upThis.allocateAce(e); + }; + }, () => { + console.debug(`${dPref}1 depth: ${e - 64}`); + }, () => { + console.debug(`${dPref}2 source: ${e}`); + if (e && e < 96) { + upThis.allocateAce(e); + }; + }, () => { + console.debug(`${dPref}2 depth: ${e - 64}`); + }, () => { + console.debug(`${dPref}to EQ: ${e ? "ON" : "OFF"}`); + }][msg[0] + i] || function (e, i) { + console.warn(`Unknown GS EFX address: ${i}`); + })(e, msg[0] + i); + }); + }).add([66, 18, 65], (msg) => { + // GS drum setup + }).add([69, 18, 16], (msg) => { + // GS display section + switch (msg[0]) { + case 0: { + // GS display letter + let offset = msg[1]; + upThis.setLetterDisplay(msg.subarray(2), "GS display text", offset); + break; + }; + case 32: { + upThis.#bitmapExpire = Date.now() + 3200; + if (msg[1] == 0) { + // GS display page + upThis.#bitmapPage = Math.max(Math.min(msg[2] - 1, 9), 0); + }; + break; + }; + default: { + if (msg[0] < 11) { + // GS display bitmap + if (upThis.#bitmapPage > 9) { + upThis.#bitmapPage = 0; + }; + upThis.#bitmapExpire = Date.now() + 3200; + if (!upThis.#bitmapStore[msg[0] - 1]?.length) { + upThis.#bitmapStore[msg[0] - 1] = new Uint8Array(256); + }; + let target = upThis.#bitmapStore[msg[0] - 1]; + let offset = msg[1]; + target.fill(0); // Init + let workArr = msg.subarray(2); + for (let index = 0; index < offset; index ++) { + workArr.unshift(0); + }; + workArr.forEach(function (e, i) { + let ln = Math.floor(i / 16), co = i % 16; + let pt = (co * 4 + ln) * 5, threshold = 5, bi = 0; + pt -= co * 4; + if (ln == 3) { + threshold = 1; + }; + while (bi < threshold) { + target[pt + bi] = (e >> (4 - bi)) & 1; + bi ++; + }; + }); + } else { + console.warn(`Unknown GS display section: ${msg[0]}`); + }; + }; + }; + }); + // GS Part setup + // I wanted this to also be written in a circular structure + // But clearly Roland hates me + let gsPartSec = function (msg, part, track) { + let offset = msg[0], + chOff = allocated.cc * part, + rpnOff = allocated.rpn * part, + dPref = `GS CH${part + 1} `; + if (offset < 3) { + // Program, MSB and receive channel + msg.subarray(1).forEach((e, i) => { + [() => { + upThis.#cc[chOff + ccToPos[0]] = e; // MSB + }, () => { + upThis.#prg[part] = e; // program + }, () => { + let ch = upThis.chRedir(e, track, true); + upThis.#chReceive[part] = ch; // Rx CH + if (part != ch) { + upThis.buildRchTree(); + console.info(`${dPref}receives from CH${ch + 1}`); + }; + }][offset + i](); + }); + } else if (offset < 19) {} else if (offset < 44) { + msg.subarray(1).forEach((e, i) => { + ([() => { + upThis.#mono[part] = +!e; // mono/poly + }, false // assign mode + , () => { + // drum map + upThis.setChType(part, e << 1, modeMap.gs); + console.debug(`${dPref}type: ${e ? "drum " : "melodic"}${e ? e : ""}`); + }, () => { + // coarse tune + upThis.#rpn[rpnOff + 3] = e; + }, false // pitch offset + , () => { + // volume + upThis.#cc[chOff + ccToPos[7]] = e; + }, false // velocity sense depth + , false // velocity sense offset + , () => { + // pan + upThis.#cc[chOff + ccToPos[10]] = e || 128; + }, false // note upperbound + , false // note lowerbound + , () => { + // general-purpose CC source A + console.debug(`${dPref}CC 1: cc${e}`); + }, () => { + // general-purpose CC source B + console.debug(`${dPref}CC 2: cc${e}`); + }, () => { + // chorus + upThis.#cc[chOff + ccToPos[93]] = e; + }, () => { + // reverb + upThis.#cc[chOff + ccToPos[91]] = e; + }, false // Rx bank select MSB + , false // Rx bank select LSB + , () => { + // fine tune MSB + upThis.#rpn[rpnOff + 1] = e; + }, () => { + // fine tune LSB + upThis.#rpn[rpnOff + 2] = e; + }, () => { + // delay (variation in XG) + upThis.#cc[chOff + ccToPos[94]] = e; + }][offset + i - 19] || (() => {}))(); + }); + } else if (offset < 76) {} else { + console.debug(`Unknown GS part address: ${offset}`); + }; + }, + gsMiscSec = function (msg, part) { + let offset = msg[0], + dPref = `GS CH${part + 1} `; + if (offset < 2) { + msg.subarray(1).forEach((e, i) => { + [() => { + // GS part LSB + upThis.#cc[allocated.cc * part + ccToPos[32]] = e; + }, () => {// GS part fallback LSB + }][offset + i](); + }); + } else if (offset < 32) { + console.warn(`Unknown GS misc address: ${offset}`); + } else if (offset < 35) { + msg.subarray(1).forEach((e, i) => { + [() => { + // GS part EQ toggle + console.debug(`${dPref}EQ: o${["ff", "n"][e]}`); + }, () => {// GS part output + }, () => { + // GS part EFX toggle + console.debug(`${dPref}EFX: o${["ff", "n"][e]}`); + }][offset + i - 32](); + }); + } else { + console.warn(`Unknown GS misc address: ${offset}`); + }; + }; + this.#seGs.add([66, 18, 64, 16], (msg, track) => { + gsPartSec(msg, upThis.chRedir(9, track, true), track); + }).add([66, 18, 64, 17], (msg, track) => { + gsPartSec(msg, upThis.chRedir(0, track, true), track); + }).add([66, 18, 64, 18], (msg, track) => { + gsPartSec(msg, upThis.chRedir(1, track, true), track); + }).add([66, 18, 64, 19], (msg, track) => { + gsPartSec(msg, upThis.chRedir(2, track, true), track); + }).add([66, 18, 64, 20], (msg, track) => { + gsPartSec(msg, upThis.chRedir(3, track, true), track); + }).add([66, 18, 64, 21], (msg, track) => { + gsPartSec(msg, upThis.chRedir(4, track, true), track); + }).add([66, 18, 64, 22], (msg, track) => { + gsPartSec(msg, upThis.chRedir(5, track, true), track); + }).add([66, 18, 64, 23], (msg, track) => { + gsPartSec(msg, upThis.chRedir(6, track, true), track); + }).add([66, 18, 64, 24], (msg, track) => { + gsPartSec(msg, upThis.chRedir(7, track, true), track); + }).add([66, 18, 64, 25], (msg, track) => { + gsPartSec(msg, upThis.chRedir(8, track, true), track); + }).add([66, 18, 64, 26], (msg, track) => { + gsPartSec(msg, upThis.chRedir(10, track, true), track); + }).add([66, 18, 64, 27], (msg, track) => { + gsPartSec(msg, upThis.chRedir(11, track, true), track); + }).add([66, 18, 64, 28], (msg, track) => { + gsPartSec(msg, upThis.chRedir(12, track, true), track); + }).add([66, 18, 64, 29], (msg, track) => { + gsPartSec(msg, upThis.chRedir(13, track, true), track); + }).add([66, 18, 64, 30], (msg, track) => { + gsPartSec(msg, upThis.chRedir(14, track, true), track); + }).add([66, 18, 64, 31], (msg, track) => { + gsPartSec(msg, upThis.chRedir(15, track, true), track); + }).add([66, 18, 64, 64], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(9, track, true)); + }).add([66, 18, 64, 65], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(0, track, true)); + }).add([66, 18, 64, 66], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(1, track, true)); + }).add([66, 18, 64, 67], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(2, track, true)); + }).add([66, 18, 64, 68], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(3, track, true)); + }).add([66, 18, 64, 69], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(4, track, true)); + }).add([66, 18, 64, 70], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(5, track, true)); + }).add([66, 18, 64, 71], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(6, track, true)); + }).add([66, 18, 64, 72], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(7, track, true)); + }).add([66, 18, 64, 73], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(8, track, true)); + }).add([66, 18, 64, 74], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(10, track, true)); + }).add([66, 18, 64, 75], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(11, track, true)); + }).add([66, 18, 64, 76], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(12, track, true)); + }).add([66, 18, 64, 77], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(13, track, true)); + }).add([66, 18, 64, 78], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(14, track, true)); + }).add([66, 18, 64, 79], (msg, track) => { + gsMiscSec(msg, upThis.chRedir(15, track, true)); + }); + // KORG X5DR SysEx section + this.#seAi.add([54, 65], (msg, track) => { + // X5D multi parameters (part setup) + upThis.switchMode("x5d"); + let key = (msg[1] << 7) + msg[0], + e = (msg[3] << 7) + msg[2], + part = upThis.chRedir(key & 15, track, true), + chOff = allocated.cc * part; + [() => { + // Program change + if (e < 1) { + } else if (e < 101) { + upThis.setChType(part, upThis.CH_MELODIC, modeMap.x5d); + upThis.#prg[part] = e - 1; + upThis.#cc[chOff + ccToPos[0]] = 82; + } else if (e < 229) { + upThis.setChType(part, upThis.CH_MELODIC, modeMap.x5d); + upThis.#prg[part] = e - 101; + upThis.#cc[chOff + ccToPos[0]] = 56; + } else { + upThis.setChType(part, upThis.CH_DRUMS, modeMap.x5d); + upThis.#prg[part] = korgDrums[e - 229] || 0; + upThis.#cc[chOff + ccToPos[0]] = 62; + }; + }, () => { + // Volume + upThis.#cc[chOff + ccToPos[7]] = e; + }, () => { + // Panpot + if (e < 31) { + upThis.#cc[chOff + ccToPos[10]] = Math.round((e - 15) * 4.2 + 64); + }; + }, () => { + // Chorus + upThis.#cc[chOff + ccToPos[93]] = x5dSendLevel(e); + }, () => { + // Reverb + upThis.#cc[chOff + ccToPos[91]] = x5dSendLevel(e); + }, () => { + // Coarse tune + upThis.#rpn[part * allocated.rpn + 3] = (e > 8191 ? e - 16320 : 64 + e); + }, () => { + // Fine tune + upThis.#rpn[part * allocated.rpn + 1] = (e > 8191 ? e - 16320 : 64 + e); + }, () => { + // PB range + if (e > 0) { + upThis.#rpn[part * allocated.rpn] = e; + }; + }, () => { + // program change filter + }][key >> 4](); + }).add([54, 76, 0], (msg, track) => { + // X5D program dump + upThis.switchMode("x5d", true); + let name = "", msb = 82, prg = 0, lsb = 0; + let voiceMap = "MSB\tPRG\tLSB\tNME"; + korgFilter(msg, function (e, i) { + if (i < 16400) { + let p = i % 164; + switch (true) { + case (p < 10): { + if (e > 31) { + name += String.fromCharCode(e); + }; + break; + }; + case (p == 11): { + voiceMap += `\n${msb}\t${prg}\t${lsb}\t${name.trim().replace("Init Voice", "")}`; + prg ++; + name = ""; + break; + }; + }; + if (prg > 99) { + msb = 90; + prg = 0; + }; + }; + }); + upThis.userBank.clearRange({ + msb: 82, + prg: [0, 99], + lsb: 0 + }); + upThis.userBank.load(voiceMap); + }).add([54, 77, 0], (msg, track) => { + // X5D combi dump + upThis.switchMode("x5d", true); + let name = "", msb = 90, prg = 0, lsb = 0;// CmbB then CmbA + let voiceMap = "MSB\tPRG\tLSB\tNME"; + korgFilter(msg, function (e, i) { + if (i < 13600) { + let p = i % 136; + switch (true) { + case (p < 10): { + if (e > 31) { + name += String.fromCharCode(e); + }; + break; + }; + case (p == 11): { + voiceMap += `\n${msb}\t${prg}\t${lsb}\t${name.trim().replace("Init Combi", "")}`; + prg ++; + name = ""; + break; + }; + }; + }; + }); + upThis.userBank.clearRange({ + msb: 90, + prg: [0, 99], + lsb: 0 + }); + upThis.userBank.load(voiceMap); + }).add([54, 78], (msg, track) => { + // X5D mode switch + upThis.switchMode("x5d", true); + console.debug(`X5D mode switch requested: ${["combi", "combi edit", "prog", "prog edit", "multi", "global"][msg[0]]} mode.`); + }).add([54, 85], (msg, track) => { + // X5D effect dump + upThis.switchMode("x5d", true); + korgFilter(msg, (e, i) => { + if (i > 0 && i < 3) { + upThis.setEffectType(i - 1, 44, e); + }; + }); + }).add([54, 104], (msg, track) => { + // X5D extended multi setup + upThis.switchMode("x5d", true); + korgFilter(msg, function (e, i, a, ri) { + if (i < 192) { + let part = upThis.chRedir(Math.floor(i / 12), track, true), + chOff = part * allocated.cc; + switch (i % 12) { + case 0: { + // Program change + if (e < 128) { + upThis.setChType(part, upThis.CH_MELODIC, modeMap.x5d); + upThis.#cc[chOff + ccToPos[0]] = 82; + upThis.#prg[part] = e; + } else { + upThis.setChType(part, upThis.CH_DRUMS, modeMap.x5d); + upThis.#cc[chOff + ccToPos[0]] = 62; + upThis.#prg[part] = korgDrums[e - 128]; + }; + if (e > 0) { + upThis.#chActive[part] = 1; + }; + break; + }; + case 1: { + // Volume + upThis.#cc[chOff + ccToPos[7]] = e; + break; + }; + case 2: { + // Coarse tune + upThis.#rpn[part * allocated.rpn + 3] = (e > 127 ? e - 192 : 64 + e); + break; + }; + case 3: { + // Fine tune + upThis.#rpn[part * allocated.rpn + 1] = (e > 127 ? e - 192 : 64 + e); + break; + }; + case 4: { + // Pan + if (e < 31) { + upThis.#cc[chOff + ccToPos[10]] = Math.round((e - 15) * 4.2 + 64); + }; + break; + }; + case 5: { + // Reverb + Chorus + let choSend = e >> 4, + revSend = e & 15; + upThis.#cc[chOff + ccToPos[91]] = x5dSendLevel(revSend); + upThis.#cc[chOff + ccToPos[93]] = x5dSendLevel(choSend); + break; + }; + case 10: { + // Control filter + //upThis.#cc[chOff] = (e & 3) ? 82 : 56; + break; + }; + case 11: { + // MIDI Rc Ch + Track Switch + let midiCh = upThis.chRedir(e & 15, track, true), + trkSw = e >> 4; + upThis.#chReceive[part] = e; + if (midiCh != part || trkSw) { + console.info(`X5D Part CH${part + 1} receives from CH${midiCh + 1}.`); + upThis.buildRchTree(); + }; + }; + }; + } else { + let part = upThis.chRedir(i - 192, track, true); + // What the heck is pitch bend range 0xF4(-12) to 0x0C(12)? + }; + }); + }); + // Roland MT-32 or C/M SysEx section + this.#seGs.add([22, 18, 127], (msg) => { + // MT-32 reset all params + upThis.switchMode("mt32", true); + upThis.#modeKaraoke = false; + upThis.userBank.clearRange({msb: 0, lsb: 127, prg: [0, 127]}); + console.info("MIDI reset: MT-32"); + }).add([22, 18, 0], (msg, track, id) => { + // MT-32 Part Patch Setup (temp) + upThis.switchMode("mt32"); + let part = upThis.chRedir(id, track, true); + let offset = msg[1]; + msg.subarray(2).forEach((e, i) => { + let ri = i + offset; + upThis.#cmTPatch[ri + (part - 1) * 16] = e; + ([false + , () => { + let timbreGroup = upThis.#cmTPatch[(part - 1) << 4]; + if (timbreGroup < 3) { + upThis.#bnCustom[part] = 1; + if (timbreGroup == 2) { + // Copy name from timbre memory + for (let c = 0; c < name.length; c ++) { + upThis.#cmTTimbre[(part - 1) * allocated.cmt + c] = upThis.#cmTimbre[e * allocated.cmt + c]; + }; + } else { + // Copy name from bank + let name = upThis.baseBank.get(0, e + (timbreGroup << 6), 127, "mt32").name; + for (let c = 0; c < name.length; c ++) { + upThis.#cmTTimbre[(part - 1) * allocated.cmt + c] = name.charCodeAt(c); + }; + }; + }; + }, () => { + upThis.#rpn[part * allocated.rpn + 3] = e + 40; + }, () => { + upThis.#rpn[part * allocated.rpn + 1] = e + 14; + }, () => { + upThis.#rpn[part * allocated.rpn] = e; + }, false + , () => { + upThis.#cc[allocated.cc * part + ccToPos[91]] = e ? 127 : 0; + }, false + , () => { + upThis.#cc[allocated.cc * part + ccToPos[7]] = e; + }, () => { + upThis.#cc[allocated.cc * part + ccToPos[10]] = Math.ceil(e * 9.05); + }][ri] || (() => {}))(); + }); + //console.debug(`MT-32 CH${part + 1} Patch: ${msg}`); + }).add([22, 18, 1], (msg, track, id) => { + // MT-32 Part Drum Setup (temp) + upThis.switchMode("mt32"); + let part = upThis.chRedir(id, track, true); + //console.debug(`MT-32 CH${part + 1} Drum: ${msg}`); + }).add([22, 18, 2], (msg, track, id) => { + // MT-32 Part Timbre Setup (temp) + upThis.switchMode("mt32"); + let part = upThis.chRedir(id, track, true); + let offset = msg[1] + (msg[0] << 7); + if (offset < 10) { + upThis.#bnCustom[part] = 1; + }; + msg.subarray(2).forEach((e, i) => { + let ri = i + offset; + if (ri < 14) { + upThis.#cmTTimbre[(part - 1) * allocated.cmt + ri] = e; + }; + }); + }).add([22, 18, 3], (msg, track, id) => { + // MT-32 Part Patch Setup (dev) + upThis.switchMode("mt32"); + if (msg[0]) { + // Rhythm setup + let offset = msg[1] - 16; + } else { + // Part setup + let offset = msg[1]; + msg.subarray(2).forEach((e, i) => { + let ri = i + offset; + upThis.#cmTPatch[ri] = e; + let part = upThis.chRedir(1 + ri >> 4, track, true), + ptr = ri & 15; + ([false + , () => { + let timbreGroup = upThis.#cmTPatch[(part - 1) << 4]; + if (timbreGroup < 3) { + upThis.#bnCustom[part] = 1; + if (timbreGroup == 2) { + // Copy name from timbre memory + for (let c = 0; c < name.length; c ++) { + upThis.#cmTTimbre[(part - 1) * allocated.cmt + c] = upThis.#cmTimbre[e * allocated.cmt + c]; + }; + } else { + // Copy name from bank + let name = upThis.baseBank.get(0, e + (timbreGroup << 6), 127, "mt32").name; + for (let c = 0; c < name.length; c ++) { + upThis.#cmTTimbre[(part - 1) * allocated.cmt + c] = name.charCodeAt(c); + }; + }; + }; + }, () => { + upThis.#rpn[part * allocated.rpn + 3] = e + 40; + }, () => { + upThis.#rpn[part * allocated.rpn + 1] = e + 14; + }, () => { + upThis.#rpn[part * allocated.rpn] = e; + }, false + , () => { + upThis.#cc[allocated.cc * part + ccToPos[91]] = e ? 127 : 0; + }, false + , () => { + upThis.#cc[allocated.cc * part + ccToPos[7]] = e; + }, () => { + upThis.#cc[allocated.cc * part + ccToPos[10]] = Math.ceil(e * 9.05); + }][ptr] || (() => {}))(); + }); + }; + //console.debug(`MT-32 Part Patch: ${msg}`); + }).add([22, 18, 4], (msg, track, id) => { + // MT-32 Part Timbre Setup (dev) + upThis.switchMode("mt32"); + let offsetTotal = msg[1] + (msg[0] << 7); + msg.subarray(2).forEach((e, i) => { + let ri = i + offsetTotal; + let part = upThis.chRedir(Math.floor(ri / 246 + 1), track, true), + offset = ri % 246; + if (offset < 14) { + upThis.#cmTTimbre[(part - 1) * allocated.cmt + offset] = e; + }; + if (offset < 10) { + upThis.#bnCustom[part] = 1; + }; + }); + }).add([22, 18, 5], (msg, track, id) => { + // MT-32 Patch Memory Write + upThis.switchMode("mt32"); + let offset = (msg[0] << 7) + msg[1]; + msg.subarray(2).forEach((e, i) => { + let realIndex = (offset + i); + let patch = Math.floor(realIndex / 8), slot = (realIndex & 7); + let patchOff = patch * 8; + upThis.#cmPatch[realIndex] = e; + ([false, () => { + let timbreGroup = upThis.#cmPatch[patchOff]; + if (timbreGroup < 3) { + // Write for bank A, B and M + let name = ""; + if (timbreGroup == 2) { + let timbreOff = allocated.cmt * patch; + name = `MT-m:${e.toString().padStart(3, "0")}`; + } else { + name = upThis.baseBank.get(0, e + (timbreGroup << 6), 127, "mt32").name; + }; + upThis.userBank.clearRange({msb: 0, lsb: 127, prg: patch}); + upThis.userBank.load(`MSB\tLSB\tPRG\tNME\n000\t127\t${patch}\t${name}`, true); + }; + }][slot] || (() => {}))(); + }); + }).add([22, 18, 8], (msg, track, id) => { + // MT-32 Timbre Memory Write + upThis.switchMode("mt32"); + let offset = ((msg[0] & 1) << 7) + msg[1]; + msg.subarray(2).forEach((e, i) => { + let ri = offset + i; + if (ri < allocated.cmt) { + //console.debug(`MT-32 timbre written to slot ${msg[0] >> 1}.`); + upThis.#cmTimbre[(msg[0] >> 1) * allocated.cmt + ri] = e; + }; + }); + }).add([22, 18, 16], (msg, track, id) => { + // MT-32 System Setup + upThis.switchMode("mt32"); + let offset = msg[1]; + let updateRch = false; + let setMidiRch = function (e, i) { + upThis.#chReceive[i - 12] = e; + updateRch = true; + }; + msg.subarray(2).forEach((e, i) => { + let ri = i + offset; + ([false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + false, + setMidiRch, + setMidiRch, + setMidiRch, + setMidiRch, + setMidiRch, + setMidiRch, + setMidiRch, + setMidiRch, + setMidiRch, + () => { + upThis.#masterVol = e; + }][ri] || (() => {}))(e, i); + }); + if (updateRch) { + upThis.buildRchTree(); + }; + }).add([22, 18, 32], (msg) => { + // MT-32 Text Display + upThis.switchMode("mt32"); + let offset = msg[1]; + let text = " ".repeat(offset); + msg.subarray(2).forEach((e) => { + if (e > 31) { + text += String.fromCharCode(e); + }; + }); + upThis.#letterDisp = text.padStart(20, " "); + upThis.#letterExpire = Date.now() + 3200; + }).add([22, 18, 82], (msg, track) => { + // MT-32 alt reset? + let partBase = upThis.chRedir(0, track, true); + for (let part = 0; part < 16; part ++) { + upThis.#ua.ano(partBase + part); + if (part && part < 10) { + upThis.#prg[partBase + part] = mt32DefProg[part - 1]; + }; + }; + console.info(`MT-32 alt reset complete.`); + }); + // KORG NS5R SysEx section + this.#seAi.add([66, 0], (msg, track) => { + // Mode switch + upThis.switchMode("ns5r", true); + upThis.#modeKaraoke = false; + console.debug(`NS5R mode switch requested: ${["global", "multi", "prog edit", "comb edit", "drum edit", "effect edit"][msg[0]]} mode.`); + }).add([66, 1], (msg, track) => { + // Map switch + upThis.switchMode(["ns5r", "05rw"][msg[0]], true); + upThis.#modeKaraoke = false; + }).add([66, 18, 0, 0], (msg, track) => { + // Master setup + let offset = msg[0]; + switch (offset) { + case 124: // all param reset + case 126: // XG reset for NS5R + case 127: { // GS reset for NS5R + upThis.switchMode("ns5r", true); + upThis.#modeKaraoke = false; + break; + }; + case 125: {// drum reset + console.info(`NS5R drum setup reset: ${msg}`); + break; + }; + default: { + if (offset < 10) { + let mTune = [0, 0, 0, 0]; + let writeTune = (e, i) => { + // NS5R master fine tune + mTune[i] = e; + }; + msg.subarray(1).forEach((e, i) => { + [writeTune, writeTune, writeTune, writeTune, + () => { + upThis.#masterVol = e * 129 / 16383 * 100; + }, () => { + return (e - 64); + }, () => { + return (e - 64); + }, () => { // EFX MSB + }, () => { // EFX LSB + }, () => { // EFX PRG + }][offset + i](); + }); + if (msg[0] < 4) { + // Commit master tune + let rTune = 0; + mTune.forEach((e) => { + rTune = rTune << 4; + rTune += e; + }); + rTune -= 1024; + }; + }; + }; + }; + }).add([66, 18, 0, 1], (msg, track) => { + // Channel out port setup, trap for now + }).add([66, 18, 0, 2], (msg, track) => { + // Program out port setup, trap for now + }).add([66, 18, 1], (msg, track) => { + // Part setup + let part = upThis.chRedir(msg[0], track, true), + chOff = part * allocated.cc; + let offset = msg[1]; + let dPref = `NS5R CH${part + 1} `; + msg.subarray(2).forEach((e, i) => { + let c = offset + i; + if (c < 3) { + // MSB, LSB, PRG + [() => { + upThis.#cc[chOff + ccToPos[0]] = e || 121; + }, () => { + upThis.#cc[chOff + ccToPos[32]] = e; + }, () => { + upThis.#prg[part] = e; + }][c](); + } else if (c < 8) { + // Trap for junk data + } else if (c < 14) { + [() => { + let ch = upThis.chRedir(e, track, true); + upThis.#chReceive[part] = ch; // Rx CH + if (part != ch) { + upThis.buildRchTree(); + console.info(`${dPref}receives from CH${ch + 1}`); + }; + }, () => { + upThis.#mono[part] = +!e; + }, () => { + upThis.setChType(part, e, modeMap.ns5r); + console.debug(`${dPref}type: ${xgPartMode[e]}`); + }, () => { + upThis.#rpn[allocated.rpn * part + 3] = e; + }, () => { + }, () => { + }][c - 8](); + } else if (c < 16) { + // Trap for junk data + } else if (c < 33) { + [() => { + upThis.#cc[chOff + ccToPos[7]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[11]] = e; + }, () => { + }, () => { + }, () => { + upThis.#cc[chOff + ccToPos[10]] = e || 128; + }, () => { + }, () => { + }, () => { + upThis.#cc[chOff + ccToPos[93]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[91]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[76]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[77]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[78]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[74]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[71]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[73]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[75]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[72]] = e; + }][c - 16](); + } else if (c < 112) { + // Trap for data not supported + } else if (c < 114) { + [() => { + upThis.#cc[chOff + ccToPos[5]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[65]] = e; + }][c - 112](); + }; + }); + }).add([66, 18, 8, 0], (msg, track) => { + // Display (letter and bitmap) + let offset = msg[0]; + if (offset < 32) { + // Letter display + upThis.setLetterDisplay(msg.subarray(1, 33), "NS5R letter display"); + } else { + // Bitmap display + let bitOffset = offset - 32; + upThis.#bitmapExpire = Date.now() + 3200; + upThis.#bitmapPage = 10; // Use bitmap 11 that holds 512 pixels + upThis.#bitmap.fill(0); // Init + let workArr = msg.subarray(1); + let lastCol = 4; + workArr.forEach(function (e, i) { + let ri = i + bitOffset; + let tx = ri >> 4, ty = ri & 15; + if (ri < 80) { + let dummy = tx < lastCol ? e : e >> 3, shifted = 0, perspective = tx < lastCol ? 6 : 3; + while (dummy > 0) { + upThis.#bitmap[ty * 32 + tx * 7 + (perspective - shifted)] = dummy & 1; + dummy = dummy >> 1; + shifted ++; + }; + }; + }); + }; + }).add([66, 52], (msg, track) => { + // Currect effect dump + upThis.switchMode("ns5r", true); + upThis.#modeKaraoke = false; + let efxName = ""; + korgFilter(msg, (e, i) => { + if (i < 8) { + if (e > 31) { + efxName += String.fromCharCode(e); + }; + if (i == 7) { + upThis.aiEfxName = efxName; + }; + } else if (i < 10) { + // AI effect ID + upThis.setEffectType(i - 8, 44, e); + }; + }); + }).add([66, 53], (msg, track) => { + // Current multi dump + upThis.switchMode("ns5r", true); + upThis.#modeKaraoke = false; + // I'm lazy I just ported the old code here don't judge meee + korgFilter(msg, function (e, i) { + switch (true) { + case i < 2944: { + // 32 part setup params, 2944 bytes + let part = upThis.chRedir(Math.floor(i / 92), track, true), + chOff = part * allocated.cc; + switch (i % 92) { + case 0: { + // MSB Bank + upThis.#cc[chOff + ccToPos[0]] = e || 121; + break; + }; + case 1: { + // LSB Bank + upThis.#cc[chOff + ccToPos[32]] = e; + break; + }; + case 2: { + // Program + upThis.#prg[part] = e; + if (e > 0) { + upThis.#chActive[part] = 1; + }; + break; + }; + case 3: { + // Receive MIDI channel + let ch = upThis.chRedir(e, track, true); + upThis.#chReceive[part] = ch; + if (part != ch) { + console.info(`NS5R CH${part + 1} receives from CH${ch + 1}.`); + upThis.buildRchTree(); + }; + }; + case 7: { + // 0 for melodic, 1 for drum, 2~5 for mod drums 1~4 + // KORG has multiple MSBs for drums, well... + break; + }; + case 8: { + // Coarse Tune + upThis.#rpn[part * allocated.rpn + 3] = (e < 40 || e > 88) ? e + (e > 63 ? -192 : 64) : e; + break; + }; + case 9: { + // Fine Tune + // This is trying to use absolute values. + }; + case 10: { + // Volume + upThis.#cc[chOff + ccToPos[7]] = e; + break; + }; + case 11: { + // Expression + upThis.#cc[chOff + ccToPos[11]] = e; + break; + }; + case 14: { + // Pan + upThis.#cc[chOff + ccToPos[10]] = e || 128; + break; + }; + case 19: { + // Chorus + upThis.#cc[chOff + ccToPos[93]] = e; + break; + }; + case 20: { + // Reverb + upThis.#cc[chOff + ccToPos[91]] = e; + break; + }; + case 84: { + // Portamento Switch + upThis.#cc[chOff + ccToPos[65]] = e; + break; + }; + case 85: { + // Portamento Time + upThis.#cc[chOff + ccToPos[5]] = e; + break; + }; + }; + break; + }; + case i < 3096: { + // part common params, 152 bytes + break; + }; + case i < 3134: { + // current effect params, 38 bytes + break; + }; + case i < 8566: { + // 4 mod drum params, 5432 bytes + break; + }; + }; + }); + }).add([66, 54], (msg, track) => { + // All program dump + // Yup this one is also ported from old code + upThis.switchMode("ns5r", true); + let name = "", msb = 80, prg = 0, lsb = 0; + let voiceMap = "MSB\tPRG\tLSB\tNME"; + korgFilter(msg, function (e, i) { + let p = i % 158; + switch (true) { + case (p < 10): { + if (e > 31) { + name += String.fromCharCode(e); + }; + break; + }; + case (p == 11): { + msb = e & 127; + break; + }; + case (p == 12): { + lsb = e & 127; + break; + }; + case (p == 13): { + voiceMap += `\n${msb}\t${prg}\t${lsb}\t${name.trim().replace("Init Voice", "")}`; + prg ++; + name = ""; + break; + }; + }; + }); + upThis.userBank.clearRange({ + msb: 80, + lsb: 0 + }); + //console.debug(voiceMap); + upThis.userBank.load(voiceMap); + }).add([66, 55], (msg, track) => { + // All combination dump + // Just modified from above + upThis.switchMode("ns5r", true); + let name = "", msb = 88, prg = 0, lsb = 0; + let voiceMap = "MSB\tPRG\tLSB\tNME"; + korgFilter(msg, function (e, i) { + let p = i % 126; + switch (true) { + case (p < 10): { + if (e > 31) { + name += String.fromCharCode(e); + }; + break; + }; + case (p == 11): { + //msb = e; + break; + }; + case (p == 12): { + //lsb = e; + break; + }; + case (p == 13): { + voiceMap += `\n${msb}\t${prg}\t${lsb}\t${name.trim().replace("Init Combi", "")}`; + prg ++; + name = ""; + break; + }; + }; + }); + upThis.userBank.clearRange({ + msb: 88, + lsb: 0 + }); + upThis.userBank.load(voiceMap); + }).add([66, 125], (msg) => { + // Backlight + upThis.dispatchEvent("backlight", ["green", "orange", "red", false, "yellow", "blue", "purple"][msg[0]] || "white"); + }).add([66, 127], (msg) => { + // NS5R screen dump + let screenBuffer = new Uint8Array(5760); + korgFilter(msg, (e, i, a) => { + if (i < 720) { + for (let bi = 0; bi < 8; bi ++) { + screenBuffer[i * 8 + bi] = (e >> (7 - bi)) & 1; + }; + }; + }); + upThis.dispatchEvent("screen", {type: "ns5r", data: screenBuffer}); + }).add([76], (msg, track, id) => { + // N1R to NS5R redirector + upThis.#seAi.run([66, ...msg], track, id); + }); + // Kawai GMega + this.#seKg.add([16, 0, 8, 0], (msg, track, id) => { + // GMega system section + let e = (msg[2] << 4) + msg[3]; + let dPref = "K11 "; + ([() => { + // GMega bank set + upThis.switchMode("k11", true); + upThis.#modeKaraoke = false; + upThis.#subLsb = e ? 4 : 0; + console.info("MIDI reset: GMega/K11"); + }, () => { + console.debug(`${dPref}reverb type: ${e}`); + }, () => { + console.debug(`${dPref}reverb time: ${e}`); + }, () => { + console.debug(`${dPref}reverb time: ${e}`); + }, () => { + console.debug(`${dPref}reverb predelay: ${e}`); + }, () => { + console.debug(`${dPref}reverb predelay: ${e}`); + }, () => { + console.debug(`${dPref}depth high: ${e}`); + }, () => { + console.debug(`${dPref}depth high: ${e}`); + }, () => { + console.debug(`${dPref}depth low: ${e}`); + }, () => { + console.debug(`${dPref}depth low: ${e}`); + }][msg[0]] || (() => {}))(); + }).add([16, 0, 8, 1], (msg, track, id) => { + // GMega part setup + let part = upThis.chRedir(msg[1], track, true), + chOff = allocated.cc * part, + rpnOff = allocated.rpn * part, + e = (msg[3] << 4) + msg[4]; + let dPref = `K11 CH${part + 1} `; + ([() => { + if (e < 128) { + // Melodic voice + upThis.setChType(part, upThis.CH_MELODIC, modeMap.k11); + upThis.#cc[chOff + ccToPos[0]] = 0; + upThis.#prg[part] = e; + } else { + // Drum kit + upThis.setChType(part, upThis.CH_DRUMS, modeMap.k11); + upThis.#prg[part] = e - 128; + }; + }, () => { + let ch = upThis.chRedir(e, track, true); + upThis.#chReceive[part] = ch; // Rx CH + if (part != ch) { + upThis.buildRchTree(); + console.info(`${dPref}receives from CH${ch + 1}`); + }; + }, () => { + upThis.#cc[chOff + ccToPos[7]] = e; // volume + }, () => { + upThis.#chActive[part] = e; // toggle channel + }, () => { + upThis.#cc[chOff + ccToPos[10]] = e; // pan + }, () => { + upThis.#rpn[rpnOff + 3] = e + 40; // coarse tune + }, () => { + upThis.#rpn[rpnOff + 1] = e >> 1; // fine tune + upThis.#rpn[rpnOff + 2] = e & 1; + }, () => { + upThis.#cc[chOff + ccToPos[91]] = e ? 127 : 0; // reverb + }, () => { + // What is a negative bend depth/sensitivity? + }, () => { + upThis.#cc[chOff + ccToPos[74]] = e; // brightness + }, () => { + upThis.#cc[chOff + ccToPos[73]] = e; // attack + }, () => { + upThis.#cc[chOff + ccToPos[72]] = e; // release + }][msg[0]] || (() => {}))(); + }).add([16, 0, 9, 0], (msg, track, id) => { + // GMega LX system section + let e = (msg[2] << 4) + msg[3]; + let dPref = "GMLX "; + ([() => { + console.debug(`${dPref}reverb type: ${e}`); + }, () => { + console.debug(`${dPref}reverb time: ${e}`); + }, () => { + console.debug(`${dPref}reverb predelay: ${e}`); + }, () => { + console.debug(`${dPref}depth high: ${e}`); + }, () => { + console.debug(`${dPref}depth low: ${e}`); + }][msg[0]] || (() => {}))(); + }).add([16, 0, 9, 3], (msg, track, id) => { + // GMega LX part setup 1 + let e = (msg[2] << 4) + msg[3]; + let part = upThis.chRedir(msg[1], track, true), + chOff = part * allocated.cc; + [() => { + if (e < 128) { + // Melodic voice + upThis.setChType(part, upThis.CH_MELODIC, modeMap.k11); + upThis.#cc[chOff + ccToPos[0]] = 0; + upThis.#cc[chOff + ccToPos[32]] = 0; + upThis.#prg[part] = e; + } else if (e < 160) { + // Melodic voice + upThis.setChType(part, upThis.CH_MELODIC, modeMap.k11); + upThis.#cc[chOff + ccToPos[0]] = 0; + upThis.#cc[chOff + ccToPos[32]] = 7; + upThis.#prg[part] = e - 100; + } else { + // Drum kit + upThis.setChType(part, upThis.CH_DRUMS, modeMap.k11); + upThis.#cc[chOff + ccToPos[0]] = 122; + upThis.#cc[chOff + ccToPos[32]] = 0; + upThis.#prg[part] = e - 160; + }; + }, () => { + let ch = upThis.chRedir(e, track, true); + upThis.#chReceive[part] = ch; // Rx CH + if (part != ch) { + upThis.buildRchTree(); + console.info(`GMLX CH${part + 1} receives from CH${ch + 1}`); + }; + }][msg[0]](); + }).add([16, 0, 9, 4], (msg, track, id) => { + // GMega LX part setup 2 + let e = (msg[2] << 4) + msg[3]; + let part = upThis.chRedir(msg[1], track, true), + chOff = part * allocated.cc, + rpnOff = part * allocated.rpn; + let dPref = `GMLX CH${part + 1} `; + [() => { + upThis.#chActive[part] = e; // toggle channel + }, () => { + upThis.#cc[chOff + ccToPos[7]] = e; // volume + }, () => { + upThis.#cc[chOff + ccToPos[10]] = e; // pan + }, () => { + upThis.#cc[chOff + ccToPos[91]] = e ? 127 : 0; // reverb + }, () => { + upThis.#rpn[rpnOff + 3] = e + 40; // coarse tune + }, () => { + upThis.#rpn[rpnOff + 1] = e; // fine tune + }, () => { + upThis.#rpn[rpnOff] = e; // pitch bend sensitivity + }, () => { + // mod depth + }][msg[0]](); + }); + // AKAI SG + this.#seSg.add([66, 93, 64], (msg, track, id) => { + let e = msg[2]; + switch (msg[0]) { + case 0: { + // SG system section at 0x00 + switch (msg[1]) { + case 4: { + // master volume + upThis.#masterVol = e * 129 / 16383 * 100; + break; + }; + case 5: { + // master key shift, [-24, 24] + (e - 64); + break; + }; + case 6: { + // global reverb toggle + console.debug(`SG global reverb: ${e ? "on" : "off"}`); + break; + }; + case 127: { + // SG reset + upThis.switchMode("sg", true); + break; + }; + }; + break; + }; + case 1: { + switch (msg[1]) { + case 48: { + // SG reverb macro + console.debug(`SG reverb type: ${gsRevType[e]}`); + break; + }; + }; + break; + }; + default: { + if ((msg[0] >> 4) == 1) { + // SG part setup + let part = upThis.chRedir(msg[0] & 15, track, true); + if (msg[1] == 2) { + // SG receive channel + let ch = upThis.chRedir(e, track, true); + upThis.#chReceive[part] = ch; // Rx CH + if (part != ch) { + upThis.buildRchTree(); + console.info(`SG CH${part + 1} receives from CH${ch + 1}`); + }; + } else if (msg[1] == 19) { + // SG part level + upThis.#cc[allocated.cc * part + ccToPos[7]] = e; + }; + } else { + console.warn(`Unknown AKAI SG SysEx: ${msg}`); + }; + }; + }; + }); + this.#seCs.add([9], (msg, track, id) => { + // CASIO GZ-50M cc91 effect type set + console.debug(`GZ set effect: ${["stage reverb", "hall reverb", "room reverb", "chorus", "tremelo", "phaser", "rotary speaker", "enhancer", "flanger", "EQ"][msg[0]] || "off"}`); + }); + // Yamaha S90 ES or Motif ES + this.#seXg.add([127, 0], (msg, track, id) => { + // Motif ES to S90 ES redirector + upThis.switchMode("motif"); + let newMsg = new Uint8Array([127, 1, ...msg]); + upThis.#seXg.run(newMsg, track, id); + }).add([127, 1, 0, 0], (msg, track, id) => { + // S90 ES System + upThis.switchMode("s90es"); + let dPref = "S90/Motif ES system ", + offset = msg[0]; + msg.subarray(1).forEach((e, i) => { + ([() => { + upThis.#masterVol = e * 12900 / 16383; + }][offset + i] || (() => { + console.info(`Unrecognized ${dPref}ID: ${offset + i}`); + }))(); + }); + }).add([127, 1, 0, 0, 14], (msg, track, id) => { + // S90 ES bulk dump header + upThis.switchMode("s90es"); + let dPref = "S90/Motif ES bulk header "; + let addrSet = []; + addrSet[95] = (msg, track, id) => { + console.debug(`${dPref}multi edit buffer: ${msg[1]}`); + }; + (addrSet[msg[0]] || (() => { + console.info(`Unrecognized ${dPref}ID: ${msg[0]}.`); + }))(msg.subarray(1)); + }).add([127, 1, 0, 0, 15], (msg, track, id) => { + // S90 ES bulk dump footer + upThis.switchMode("s90es"); + let dPref = "S90/Motif ES bulk footer "; + let addrSet = []; + addrSet[95] = (msg, track, id) => { + console.debug(`${dPref}multi edit buffer: ${msg[1]}`); + }; + (addrSet[msg[0]] || (() => { + console.info(`Unrecognized ${dPref}ID: ${msg[0]}.`); + }))(msg.subarray(1)); + }).add([127, 1, 0, 58, 55], (msg, track, id) => { + // S90 ES bulk part setup (?) + upThis.switchMode("s90es"); + let part = upThis.chRedir(msg[0], track, true), + chOff = allocated.cc * part, + offset = msg[1]; + let dPref = `S90/Motif ES bulk CH${part < 16 ? part + 1 : "U" + (part - 95)} `; + console.debug(dPref, msg); + if (msg[0] > 15) { + return; + }; + msg.subarray(2).forEach((e, i) => { + ([() => { + upThis.#cc[chOff + ccToPos[0]] = e; + }, () => { + e && (upThis.#chActive[part] = 1); + upThis.#cc[chOff + ccToPos[32]] = e; + upThis.#chType[part] = +([32, 40].indexOf(e) > -1) << 1; + }, () => { + e && (upThis.#chActive[part] = 1); + upThis.#prg[part] = e; + }, () => { + let ch = upThis.chRedir(e, track, true); + upThis.#chReceive[part] = ch; // Rx CH + if (part != ch) { + upThis.buildRchTree(); + console.info(`${dPref}receives from CH${ch + 1}`); + }; + }, () => { + upThis.#mono[part] = e ? 0 : 1; + }, false, false, false, false, false, false, false, false, () => { + upThis.#cc[chOff + ccToPos[7]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[10]] = e; + }, false, false, false, () => { + upThis.#cc[chOff + ccToPos[91]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[93]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[94]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[128]] = e; + }, () => { + // note shift, RPN + }, () => { + upThis.#cc[chOff + ccToPos[74]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[71]] = e; + }, false, () => { + upThis.#cc[chOff + ccToPos[65]] = e; + }, () => { + upThis.#cc[chOff + ccToPos[5]] = e; + }, () => { + // portamento mode: fingered, fulltime + }][offset + i] || (() => {}))(); + }); + }).add([127, 1, 54, 16], (msg, track, id) => { + // S90 ES EQ config + upThis.switchMode("s90es"); + let offset = msg[0]; + msg.subarray(1).forEach((e, i) => { + let eqPart = i >> 2; + let dPref = `S90/Motif ES EQ${eqPart + 1} `; + ([() => { + let eqGain = e - 64; + //console.debug(`${dPref}gain: ${eqGain}dB`); + }, () => { + let eqFreq = xgNormFreq[e]; + //console.debug(`${dPref}freq: ${eqFreq}Hz`); + }, () => { + let eqQFac = e / 10; + //console.debug(`${dPref}Q: ${eqQFac}`); + }, () => { + let eqType = e; // shelf, peak + //console.debug(`${dPref}type: ${["shelf", "peak"][eqTypes]}`); + },][(offset + i) & 3] || (() => {}))(); + }); + }); + }; +}; + +export { + OctaviaDevice, + allocated, + ccToPos, + dnToPos +}; diff --git a/src/state/index.old.mjs b/src/state/index.old.mjs new file mode 100644 index 00000000..b8868f17 --- /dev/null +++ b/src/state/index.old.mjs @@ -0,0 +1,1719 @@ +"use strict"; + +import {BinaryMatch} from "../../libs/lightfelt@ltgcgo/ext/binMatch.js"; +import {CustomEventSource} from "../../libs/lightfelt@ltgcgo/ext/customEvents.js"; +import { + xgEffType, + xgPartMode, + xgDelOffset, + xgNormFreq, + xgLfoFreq, + getXgRevTime, + getXgDelayOffset +} from "./xgValues.js"; +import { + gsRevType, + gsChoType +} from "./gsValues.js"; +import { + toDecibel, + korgFilter, + x5dSendLevel +} from "./utils.js"; + +const modeIdx = [ + "?", + "gm", "gs", "xg", "g2", + "mt32", "ns5r", + "ag10", "x5d", "05rw", "krs", + "k11", "sg" +]; +const substList = [ + [0, 0, 0, 0, 121, 0, 0, 56, 82, 81, 63, 0, 0], + [0, 0, 1, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0] +]; +const drumMsb = [120, 127, 120, 127, 120, 127, 61, 62, 62, 62, 120, 122, 127]; +const passedMeta = [0, 3, 81, 84, 88]; // What is meta event 32? +const eventTypes = { + 8: "Off", + 9: "On", + 10: "Note aftertouch", + 11: "cc", + 12: "pc", + 13: "Channel aftertouch", + 14: "Pitch" +}; + +const useRpnMap = { + 0: 0, + 1: 1, + 2: 3, + 5: 4 +}, +useNormNrpn = [8, 9, 10, 32, 33, 36, 37, 99, 100, 101], +useDrumNrpn = [20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 36, 37, 64, 65], +ccAccepted = [ + 0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 32, + 38, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 84, 91, + 92, 93, 94, 95, 98, 99, 100, 101, + 12, 13 +]; // 96, 97, 120 to 127 all have special functions + + +let modeMap = {}; +modeIdx.forEach((e, i) => { + modeMap[e] = i; +}); +let ccToPos = { + length: ccAccepted.length +}; +ccAccepted.forEach((e, i) => { + ccToPos[e] = i; +}); + +let toZero = function (e, i, a) { + a[i] = 0; +}; +let sysExSplitter = function (seq) { + let seqArr = [[]]; + seq?.forEach(function (e) { + if (e == 247) { + // End of SysEx + } else if (e == 240) { + seqArr.push([]); + } else { + seqArr[seqArr.length - 1].push(e); + }; + }); + return seqArr; +}; +let showTrue = function (data, prefix = "", suffix = "", length = 2) { + return data ? `${prefix}${data.toString().padStart(length, "0")}${suffix}` : ""; +}; + +const allocated = { + ch: 64, // channels + cc: ccAccepted.length, // control changes + nn: 128, // notes per channel + pl: 512, // polyphony + tr: 256, // tracks + rpn: 6 +}; + +let OctaviaDevice = class extends CustomEventSource { + // Values + #mode = 0; + #bitmap = new Uint8Array(256); + #bitmapExpire = 0; + #chActive = new Uint8Array(allocated.ch); // Whether the channel is in use + #chReceive = new Uint8Array(allocated.ch); // Determine the receiving channel + #cc = new Uint8ClampedArray(8192); // 64 channels, 128 controllers + #prg = new Uint8ClampedArray(allocated.ch); + #velo = new Uint8ClampedArray(allocated.ch * allocated.nn); // 64 channels. 128 velocity registers + #mono = new Uint8Array(allocated.ch); // Mono/poly mode + #poly = new Uint16Array(allocated.pl); // 512 polyphony allowed + #pitch = new Int16Array(allocated.ch); // Pitch for channels, from -8192 to 8191 + #customName = new Array(allocated.ch); // Allow custom naming + #rawStrength = new Uint8Array(allocated.ch); + #dataCommit = 0; // 0 for RPN, 1 for NRPN + #rpn = new Uint8Array(allocated.ch * allocated.rpn); // RPN registers (0 pitch MSB, 1 fine tune MSB, 2 fine tune LSB, 3 coarse tune MSB, 4 mod sensitivity MSB, 5 mod sensitivity LSB) + #nrpn = new Int8Array(allocated.ch * useNormNrpn.length); // Normal section of NRPN registers + #subMsb = 0; // Allowing global bank switching + #subLsb = 0; + #masterVol = 100; + #metaChannel = 0; + #letterDisp = ""; + #letterExpire = 0; + #modeKaraoke = false; + #receiveTree; + // Metadata text events + #metaTexts = []; + // GS Track Occupation + #trkRedir = new Uint8Array(allocated.ch); + #trkAsReq = new Uint8Array(allocated.tr); // Track Assignment request + chRedir(part, track, noConquer) { + if ([modeMap.gs, modeMap.ns5r].indexOf(this.#mode) > -1) { + if (this.#trkAsReq[track]) { + // Allow part assigning via meta + let metaChosen = (this.#trkAsReq[track] - 1) * 16 + part; + return metaChosen; + }; + // Do not conquer channels if requested. + if (noConquer == 1) { + return part; + }; + // Trying to support 32 channel... + let shift = 0; + //console.debug(`T${track} TC${part} AT${this.#trkRedir[part]}`); + if (this.#trkRedir[part] == 0) { + this.#trkRedir[part] = track; + console.debug(`Assign track ${track} to channel ${part + 1}.`); + } else if (this.#trkRedir[part] != track) { + shift = 16; + if (this.#trkRedir[part + shift] == 0) { + this.#trkRedir[part + shift] = track; + console.debug(`Assign track ${track} to channel ${part + shift + 1}.`); + } else if (this.#trkRedir[part + shift] != track) { + shift = 0; + }; + }; + return part + shift; + } else { + return part; + }; + }; + // Exec Pools + // Meta event pool + #metaRun = []; + // Sequencer specific meta pool + #metaSeq; + // Universal actions + #ua = { + ano: (part) => { + // All notes off + // Current implementation uses the static velocity register + this.#poly.forEach((e, i, a) => { + let ch = e >> 7; + if (e == 0 && this.#velo[0] == 0) { + } else if (ch == part) { + this.#velo[e] = 0; + a[i] = 0; + }; + }); + } + }; + // Channel event pool + #runChEvent = { + 8: function (det) { + let part = det.channel; + // Note off, velocity should be ignored. + let rawNote = part * 128 + det.data[0]; + let polyIdx = this.#poly.indexOf(rawNote); + if (polyIdx > -1) { + this.#poly[polyIdx] = 0; + this.#velo[rawNote] = 0; + }; + }, + 9: function (det) { + let part = det.channel; + // Note on, but should be off if velocity is 0. + // Set channel active + this.#chActive[part] = 1; + let rawNote = part * 128 + det.data[0]; + if (det.data[1] > 0) { + let place = 0; + while (this.#poly[place] > 0) { + place ++; + }; + if (place < this.#poly.length) { + this.#poly[place] = rawNote; + this.#velo[rawNote] = det.data[1]; + if (this.#rawStrength[part] < det.data[1]) { + this.#rawStrength[part] = det.data[1]; + //console.info(`${part}: ${det.data[1]}`); + }; + } else { + console.error("Polyphony exceeded."); + }; + } else { + let polyIdx = this.#poly.indexOf(rawNote); + if (polyIdx > -1) { + this.#poly[polyIdx] = 0; + this.#velo[rawNote] = 0; + }; + }; + }, + 10: function (det) { + let part = det.channel; + // Note aftertouch. + // Currently it directly changes velocity to set value. + let rawNote = part * 128 + det.data[0]; + let polyIdx = this.#poly.indexOf(rawNote); + if (polyIdx > -1) { + this.#velo[rawNote] = data[1]; + }; + }, + 11: function (det) { + let part = det.channel; + // CC event, directly assign values to the register. + this.#chActive[part] = 1; + let chOffset = part * 128; + // Check if control change is accepted + if (ccToPos[det.data[0]] == undefined) { + console.warn(`cc${det.data[0]} is not accepted.`); + }; + // Pre interpret + switch (det.data[0]) { + case 0: { + // Detect mode via bank MSB + //console.debug(`${modeIdx[this.#mode]}, CH${part + 1}: ${det.data[1]}`); + if (this.#mode == modeMap.gs || this.#mode == 0) { + if (det.data[1] < 48) { + // Do not change drum channel to a melodic + if (this.#cc[chOffset] > 119) { + det.data[1] = this.#cc[chOffset]; + if (!this.#mode) { + det.data[1] = 120; + console.debug(`Forced channel ${part + 1} to stay drums.`); + }; + }; + if (det.data[1] > 0 && !this.#mode) { + console.debug(`Roland GS detected with MSB: ${det.data[1]}`); + this.switchMode("gs"); + }; + } else if (det.data[1] == 62) { + this.switchMode("x5d"); + } else if (det.data[1] == 63) { + this.switchMode("krs"); + }; + } else if (this.#mode == modeMap.gm) { + if (det.data[1] < 48) { + // Do not change drum channel to a melodic + if (this.#cc[chOffset] > 119) { + det.data[1] = 120; + this.switchMode("gs", true); + console.debug(`Forced channel ${part + 1} to stay drums.`); + }; + }; + } else if (this.#mode == modeMap.x5d) { + if (det.data[1] > 0 && det.data[1] < 8) { + this.switchMode("05rw", true); + } else if (det.data[1] == 56) { + let agCount = 0; + for (let c = 0; c < 16; c ++) { + let d = this.#cc[128 * c]; + if (d == 56 || d == 62) { + agCount ++; + }; + }; + if (agCount > 14) { + this.switchMode("ag10", true); + }; + }; + }; + break; + }; + case 6: { + // Show RPN and NRPN + if (this.#dataCommit) { + if (this.#cc[chOffset + 99] == 1) { + if (this.#cc[chOffset + 98] == 32) { + this.#cc[chOffset + 74] = det.data[1]; + console.debug(`Redirected NRPN to cc74.`); + }; + let nrpnIdx = useNormNrpn.indexOf(this.#cc[chOffset + 98]); + if (nrpnIdx > -1) { + this.#nrpn[part * 10 + nrpnIdx] = det.data[1] - 64; + }; + console.debug(`CH${part + 1} voice NRPN ${this.#cc[chOffset + 99]} ${this.#cc[chOffset + 98]} commit`); + } else { + console.debug(`CH${part + 1} drum NRPN ${this.#cc[chOffset + 99]} ${this.#cc[chOffset + 98]} commit`); + }; + } else { + // Commit supported RPN values + if (this.#cc[chOffset + 101] == 0 && useRpnMap[this.#cc[chOffset + 100]] != undefined) { + this.#rpn[part * allocated.rpn + useRpnMap[this.#cc[chOffset + 100]]] = det.data[1]; + console.debug(`CH${part + 1} RPN 0 ${this.#cc[chOffset + 100]} commit: ${det.data[1]}`); + }; + }; + break; + }; + case 38: { + // Show RPN and NRPN + if (!this.#dataCommit) { + // Commit supported RPN values + if (this.#cc[chOffset + 101] == 0 && useRpnMap[this.#cc[chOffset + 100]] != undefined) { + this.#rpn[part * allocated.rpn + useRpnMap[this.#cc[chOffset + 100]] + 1] = det.data[1]; + }; + } else { + //console.debug(`${part + 1} LSB ${det.data[1]} ${this.#dataCommit ? "NRPN" : "RPN"} ${this.#dataCommit ? this.#cc[chOffset + 99] : this.#cc[chOffset + 101]} ${this.#dataCommit ? this.#cc[chOffset + 98] : this.#cc[chOffset + 100]}`); + }; + break; + }; + case 98: + case 99: { + this.#dataCommit = 1; + break; + }; + case 100: + case 101: { + this.#dataCommit = 0; + break; + }; + case 120: { + // All sound off, but keys stay on + break; + }; + case 121: { + // Reset controllers + this.#ua.ano(part); + this.#pitch[part] = 0; + let chOff = part * 128; + // Reset to zero + this.#cc[chOff + 1] = 0; // Modulation + this.#cc[chOff + 5] = 0; // Portamento Time + this.#cc[chOff + 64] = 0; // Sustain + this.#cc[chOff + 65] = 0; // Portamento + this.#cc[chOff + 66] = 0; // Sostenuto + this.#cc[chOff + 67] = 0; // Soft Pedal + // Reset to full + this.#cc[chOff + 11] = 127; // Expression + // RPN/NRPN to null + this.#cc[chOff + 101] = 127; + this.#cc[chOff + 100] = 127; + this.#cc[chOff + 99] = 127; + this.#cc[chOff + 98] = 127; + break; + }; + case 123: { + // All notes off + this.#ua.ano(part); + break; + }; + case 124: { + // Omni off + this.#ua.ano(part); + break; + }; + case 125: { + // Omni on + this.#ua.ano(part); + break; + }; + case 126: { + // Mono mode + this.#mono[part] = 1; + this.#ua.ano(part); + break; + }; + case 127: { + // Poly mode + this.#mono[part] = 0; + this.#ua.ano(part); + break; + }; + }; + this.#cc[chOffset + det.data[0]] = det.data[1]; + }, + 12: function (det) { + let part = det.channel; + // Program change + this.#chActive[part] = 1; + this.#prg[part] = det.data; + this.#customName[part] = 0; + //console.debug(`T:${det.track} C:${part} P:${det.data}`); + }, + 13: function (det) { + // Channel aftertouch + let upThis = this; + let part = det.channel; + this.#poly.forEach(function (e) { + let realCh = e >> 7; + if (part == realCh) { + upThis.#velo[e] = det.data; + }; + }); + }, + 14: function (det) { + let part = det.channel; + // Pitch bending + this.#pitch[part] = det.data[1] * 128 + det.data[0] - 8192; + }, + 15: function (det) { + // SysEx + let upThis = this; + sysExSplitter(det.data).forEach(function (seq) { + upThis.#seMain.run(seq, det.track); + }); + }, + 255: function (det) { + // Meta + (this.#metaRun[det.meta] || function (data, track, meta) {}).call(this, det.data, det.track, det.meta); + if (det.meta != 32) { + this.#metaChannel = 0; + }; + let useReply = passedMeta.indexOf(det.meta) > -1; + if (useReply) { + det.reply = "meta"; + return det; + } else if (self.debugMode) { + console.debug(det); + }; + } + }; + // Main SysEx pool + #seMain; + // GS Part SysEx pool + #seGsPart; + #seGsPartProp; + // XG Part SysEx pool + #seXgPart; + #seXgDrumInst; + // MT-32 SysEx pool + #seMtSysEx; + buildRchTree() { + // Build a receiving tree from currently set receive channels + // Now builds from the ground up each time + // Can be optimized to move elements instead + let tree = []; + this.#chReceive.forEach((e, i) => { + if (!tree[e]?.constructor) { + tree[e] = []; + }; + tree[e].push(i); + }); + this.#receiveTree = tree; + //console.debug(tree); + }; + getActive() { + let result = this.#chActive.slice(); + if (this.#mode == modeMap.mt32) { + //result[0] = 0; + }; + return result; + }; + getCc(channel) { + // Return channel CC registers + let start = channel * 128; + let arr = this.#cc.slice(start, start + 128); + arr[0] = arr[0] || this.#subMsb; + arr[32] = arr[32] || this.#subLsb; + return arr; + }; + getCcAll() { + // Return all CC registers + let arr = this.#cc.slice(); + for (let c = 0; c < 64; c ++) { + let chOff = c * 128; + arr[chOff] = arr[chOff] || this.#subMsb; + arr[chOff + 32] = arr[chOff + 32] || this.#subLsb; + }; + return arr; + }; + getPitch() { + return this.#pitch; + }; + getProgram() { + return this.#prg; + }; + getTexts() { + return this.#metaTexts.slice(); + }; + getVel(channel) { + // Return all pressed keys with velocity in a channel + let notes = new Map(); + let upThis = this; + this.#poly.forEach(function (e) { + let realCh = Math.floor(e / 128), + realNote = e % 128; + if (channel == realCh && upThis.#velo[e] > 0) { + notes.set(realNote, upThis.#velo[e]); + }; + }); + return notes; + }; + getBitmap() { + return { + bitmap: this.#bitmap, + expire: this.#bitmapExpire + }; + }; + getCustomNames() { + return this.#customName.slice(); + }; + getLetter() { + return { + text: this.#letterDisp, + expire: this.#letterExpire + }; + }; + getMode() { + return modeIdx[this.#mode]; + }; + getMaster() { + return { + volume: this.#masterVol + }; + }; + getRawStrength() { + // 0 to 127 + let upThis = this; + this.#poly.forEach(function (e) { + let channel = Math.floor(e / 128); + if (upThis.#velo[e] > upThis.#rawStrength[channel]) { + upThis.#rawStrength[channel] = upThis.#velo[e]; + }; + }); + return this.#rawStrength; + }; + getStrength() { + // 0 to 255 + let str = [], upThis = this; + this.getRawStrength().forEach(function (e, i) { + str[i] = Math.floor(e * upThis.#cc[i * 128 + 7] * upThis.#cc[i * 128 + 11] * upThis.#masterVol / 803288); + }); + return str; + }; + getRpn() { + return this.#rpn; + }; + getNrpn() { + return this.#nrpn; + }; + init(type = 0) { + // Type 0 is full reset + // Full reset + this.dispatchEvent("mode", "?"); + this.#mode = 0; + this.#subMsb = 0; + this.#subLsb = 0; + this.#metaChannel = 0; + this.#chActive.forEach(toZero); + this.#cc.forEach(toZero); + this.#prg.forEach(toZero); + this.#velo.forEach(toZero); + this.#poly.forEach(toZero); + this.#rawStrength.forEach(toZero); + this.#pitch.forEach(toZero); + this.#nrpn.forEach(toZero); + this.#masterVol = 100; + this.#metaTexts = []; + this.#letterExpire = 0; + this.#letterDisp = ""; + this.#bitmapExpire = 0; + this.#bitmap.forEach(toZero); + this.#customName.forEach(toZero); + this.#modeKaraoke = false; + // Reset MIDI receive channel + this.#chReceive.forEach(function (e, i, a) { + a[i] = i; + }); + this.buildRchTree(); + // Reset channel redirection + this.#trkRedir.forEach(toZero); + this.#trkAsReq.forEach(toZero); + // Channel 10 to drum set + this.#cc[1152] = drumMsb[0]; + this.#cc[3200] = drumMsb[0]; + this.#cc[5248] = drumMsb[0]; + this.#cc[7296] = drumMsb[0]; + for (let ch = 0; ch < 64; ch ++) { + let chOff = ch * 128; + // Reset to full + this.#cc[chOff + 7] = 127; // Volume + this.#cc[chOff + 11] = 127; // Expression + // Reset to centre + this.#cc[chOff + 10] = 64; // Pan + this.#cc[chOff + 71] = 64; // Resonance + this.#cc[chOff + 72] = 64; // Release Time + this.#cc[chOff + 73] = 64; // Attack Time + this.#cc[chOff + 74] = 64; // Brightness + this.#cc[chOff + 75] = 64; // Decay Time + this.#cc[chOff + 76] = 64; // Vibrato Rate + this.#cc[chOff + 77] = 64; // Vibrato Depth + this.#cc[chOff + 78] = 64; // Vibrato Delay + // RPN/NRPN to null + this.#cc[chOff + 101] = 127; + this.#cc[chOff + 100] = 127; + this.#cc[chOff + 99] = 127; + this.#cc[chOff + 98] = 127; + // RPN reset + let rpnOff = ch * allocated.rpn; + this.#rpn[rpnOff] = 2; // Pitch bend sensitivity + this.#rpn[rpnOff + 1] = 64; // Fine tune MSB + this.#rpn[rpnOff + 2] = 0; // Fine tune LSB + this.#rpn[rpnOff + 3] = 64; // Coarse tune MSB + this.#rpn[rpnOff + 4] = 0; // Mod sensitivity MSB + this.#rpn[rpnOff + 5] = 0; // Mod sensitivity LSB + // NRPN drum section reset + }; + return; + }; + switchMode(mode, forced = false) { + let idx = modeIdx.indexOf(mode); + if (idx > -1) { + if (this.#mode == 0 || forced) { + this.#mode = idx; + this.#subMsb = substList[0][idx]; + this.#subLsb = substList[1][idx]; + for (let ch = 0; ch < 64; ch ++) { + if (drumMsb.indexOf(this.#cc[ch * 128]) > -1) { + this.#cc[ch * 128] = drumMsb[idx]; + }; + }; + this.dispatchEvent("mode", mode); + }; + } else { + throw(new Error(`Unknown mode ${mode}`)); + }; + }; + newStrength() { + this.#rawStrength.forEach(toZero); + }; + runJson(json) { + // Execute transformed JSON event + if (json.type > 14) { + return this.#runChEvent[json.type].call(this, json); + } else { + // Universal MIDI channel receive support. + let rcvPart = this.chRedir(json.part, json.track), + executed = false; + this.#receiveTree[rcvPart]?.forEach((e) => { + json.channel = e; + executed = true; + this.#runChEvent[json.type].call(this, json); + }); + /* this.#chReceive.forEach((e, i) => { + if (e == rcvPart) { + //json.channel = this.chRedir(i, json.track); + json.channel = i; + executed = true; + this.#runChEvent[json.type].call(this, json); + }; + }); */ + if (!executed) { + console.warn(`${eventTypes[json.type] ? eventTypes[json.type] : json.type}${[11, 12].includes(json.type) ? (json.data[0] != undefined ? json.data[0] : json.data).toString() : ""} event sent to CH${rcvPart + 1} without any recipient.`); + }; + }; + }; + runRaw(midiArr) { + // Translate raw byte stream into JSON MIDI event + }; + constructor() { + super(); + let upThis = this; + this.#metaSeq = new BinaryMatch(); + this.#seMain = new BinaryMatch(); + this.#seGsPart = new BinaryMatch(); + this.#seGsPartProp = new BinaryMatch(); + this.#seXgPart = new BinaryMatch(); + this.#seXgDrumInst = new BinaryMatch(); + this.#seMtSysEx = new BinaryMatch(); + this.#metaSeq.default = function (seq, track) { + console.debug(`Unparsed meta 127 sequence on track ${track}: `, seq); + }; + this.#seMain.default = function (sysEx) { + console.debug("Unparsed SysEx: ", sysEx); + }; + this.#seGsPart.default = function (sysEx, channel) { + console.debug(`Unparsed GS Part on channel ${channel}: `, sysEx); + }; + this.#seXgPart.default = function (sysEx, channel) { + console.debug(`Unparsed XG Part on channel ${channel}: `, sysEx); + }; + this.#seXgDrumInst.default = function (sysEx, channel) { + console.debug(`Unparsed XG Drum Part on channel ${channel}: `, sysEx); + }; + // Metadata events + this.#metaRun[1] = function (data) { + // Normal text + switch (data.slice(0, 2)) { + case "@I": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Kar.Info: ${data.slice(2)}`); + break; + }; + case "@K": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Karaoke mode active.`); + console.debug(`Karaoke mode active: ${data.slice(2)}`); + break; + }; + case "@L": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Language: ${data.slice(2)}`); + break; + }; + case "@T": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Ka.Title: ${data.slice(2)}`); + break; + }; + case "@V": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Kara.Ver: ${data.slice(2)}`); + break; + }; + default: { + if (this.#modeKaraoke) { + if (data[0] == "\\") { + // New section + this.#metaTexts.unshift(`@ ${data.slice(1)}`); + } else if (data[0] == "/") { + // New line + this.#metaTexts.unshift(data.slice(1)); + } else { + // Normal append + this.#metaTexts[0] += data; + }; + } else { + this.#metaTexts[0] = data; + this.#metaTexts.unshift(""); + }; + }; + }; + }; + this.#metaRun[2] = function (data) { + this.#metaTexts.unshift(`Copyrite: ${data}`); + }; + this.#metaRun[3] = function (data, track) { + // Filter overly annoying meta events + if (track < 1 && this.#metaChannel < 1) { + this.#metaTexts.unshift(`TrkTitle: ${data}`); + }; + }; + this.#metaRun[4] = function (data, track) { + if (track < 1 && this.#metaChannel < 1) { + this.#metaTexts.unshift(`${showTrue(this.#metaChannel, "", " ")}Instrmnt: ${data}`); + }; + }; + this.#metaRun[5] = function (data) { + if (data.trim() == "") { + this.#metaTexts.unshift(""); + } else { + this.#metaTexts[0] += `${data}`; + }; + }; + this.#metaRun[6] = function (data) { + this.#metaTexts.unshift(`${showTrue(this.#metaChannel, "", " ")}C.Marker: ${data}`); + }; + this.#metaRun[7] = function (data) { + this.#metaTexts.unshift(`CuePoint: ${data}`); + }; + this.#metaRun[32] = function (data) { + this.#metaChannel = data[0] + 1; + }; + this.#metaRun[33] = function (data, track) { + console.debug(`Track ${track} requests to get assigned to output ${data}.`); + upThis.#trkAsReq[track] = data + 1; + }; + this.#metaRun[127] = function (data, track) { + //console.debug(`Sequencer specific on track ${track}: `, data); + upThis.#metaSeq.run(data, track); + }; + // Standard resets + // Refactor this! + this.#seMain.add([126, 127, 9, 1], function () { + // General MIDI reset + upThis.switchMode("gm", true); + upThis.#modeKaraoke = upThis.#modeKaraoke || false; + console.info("MIDI reset: GM"); + }).add([126, 127, 9, 3], function () { + // General MIDI rev. 2 reset + upThis.switchMode("g2", true); + upThis.#modeKaraoke = upThis.#modeKaraoke || false; + console.info("MIDI reset: GM2"); + }).add([64, 0, 16, 0, 8, 0, 0, 0, 0], function () { + upThis.switchMode("k11", true); + upThis.#modeKaraoke = false; + console.info("MIDI reset: KAWAI GMega/K11"); + }).add([65, 16, 22, 18, 127, 1], function () { + // MT-32 reset + upThis.switchMode("mt32", true); + upThis.#modeKaraoke = false; + console.info("MIDI reset: MT-32"); + console.debug("Reset with the shorter one."); + }).add([65, 16, 22, 18, 127, 0, 0, 1], function () { + // MT-32 reset + upThis.switchMode("mt32", true); + upThis.#modeKaraoke = false; + console.info("MIDI reset: MT-32"); + console.debug("Reset with the longer one."); + }).add([65, 16, 66, 18, 64, 0, 127, 0, 65], function () { + // Roland GS reset + upThis.switchMode("gs", true); + upThis.#cc[1152] = 120; + upThis.#cc[3200] = 120; + upThis.#cc[5248] = 120; + upThis.#cc[7296] = 120; + upThis.#modeKaraoke = false; + upThis.#trkRedir.forEach(toZero); + console.info("MIDI reset: GS"); + }).add([67, 16, 76, 0, 0, 126, 0], function (msg) { + // Yamaha XG reset + upThis.switchMode("xg", true); + upThis.#modeKaraoke = false; + console.info("MIDI reset: XG"); + }); + // Sequencer specific meta event + // No refactoring needed. + this.#metaSeq.add([67, 0, 1], function (msg, track) { + //console.debug(`XGworks requests assigning track ${track} to output ${msg[0]}.`); + upThis.#trkAsReq[track] = msg[0] + 1; + }); + // General MIDI SysEx + // No refactoring needed. + this.#seMain.add([127, 127, 4, 1], function (msg) { + // Master volume + upThis.switchMode("gm"); + upThis.#masterVol = ((msg[1] << 7) + msg[0]) / 163.83; + }); + // Yamaha XG SysEx + // Refactor this! + this.#seMain.add([67, 16, 76, 6, 0], function (msg) { + // XG Letter Display + let offset = msg[0]; + upThis.#letterDisp = " ".repeat(offset); + upThis.#letterExpire = Date.now() + 3200; + msg.slice(1).forEach(function (e) { + upThis.#letterDisp += String.fromCharCode(e); + }); + }).add([67, 16, 76, 7, 0, 0], function (msg) { + // XG Bitmap Display + upThis.#bitmapExpire = Date.now() + 3200; + while (msg.length < 48) { + msg.unshift(0); + }; + msg.forEach(function (e, i) { + let ln = Math.floor(i / 16), co = i % 16; + let pt = (co * 3 + ln) * 7, threshold = 7, bi = 0; + pt -= co * 5; + if (ln == 2) { + threshold = 2; + }; + while (bi < threshold) { + upThis.#bitmap[pt + bi] = (e >> (6 - bi)) & 1; + bi ++; + }; + }); + }).add([67, 16, 76, 2, 1, 0], function (msg) { + console.debug(`XG reverb type: ${xgEffType[msg[0]]}${msg[1] > 0 ? " " + (msg[1] + 1) : ""}`); + }).add([67, 16, 76, 2, 1, 2], function (msg) { + console.debug(`XG reverb time: ${getXgRevTime(msg)}s`); + }).add([67, 16, 76, 2, 1, 3], function (msg) { + console.debug(`XG reverb diffusion: ${msg}`); + }).add([67, 16, 76, 2, 1, 4], function (msg) { + console.debug(`XG reverb initial delay: ${msg}`); + }).add([67, 16, 76, 2, 1, 5], function (msg) { + console.debug(`XG reverb high pass cutoff: ${xgNormFreq[msg[0]]}Hz`); + }).add([67, 16, 76, 2, 1, 6], function (msg) { + console.debug(`XG reverb low pass cutoff: ${xgNormFreq[msg[0]]}Hz`); + }).add([67, 16, 76, 2, 1, 7], function (msg) { + console.debug(`XG reverb width: ${msg}`); + }).add([67, 16, 76, 2, 1, 8], function (msg) { + console.debug(`XG reverb height: ${msg}`); + }).add([67, 16, 76, 2, 1, 9], function (msg) { + console.debug(`XG reverb depth: ${msg}`); + }).add([67, 16, 76, 2, 1, 10], function (msg) { + console.debug(`XG reverb wall type: ${msg}`); + }).add([67, 16, 76, 2, 1, 11], function (msg) { + console.debug(`XG reverb dry/wet: ${msg[0]}`); + }).add([67, 16, 76, 2, 1, 12], function (msg) { + console.debug(`XG reverb return: ${msg}`); + }).add([67, 16, 76, 2, 1, 13], function (msg) { + console.debug(`XG reverb pan: ${msg[0] - 64}`); + }).add([67, 16, 76, 2, 1, 16], function (msg) { + console.debug(`XG reverb delay: ${msg}`); + }).add([67, 16, 76, 2, 1, 17], function (msg) { + console.debug(`XG density: ${msg}`); + }).add([67, 16, 76, 2, 1, 18], function (msg) { + console.debug(`XG reverb balance: ${msg}`); + }).add([67, 16, 76, 2, 1, 20], function (msg) { + console.debug(`XG reverb feedback: ${msg}`); + }).add([67, 16, 76, 2, 1, 32], function (msg) { + console.debug(`XG chorus type: ${xgEffType[msg[0]]}${msg[1] > 0 ? " " + (msg[1] + 1) : ""}`); + }).add([67, 16, 76, 2, 1, 34], function (msg) { + console.debug(`XG chorus LFO: ${xgLfoFreq[msg[0]]}Hz`); + }).add([67, 16, 76, 2, 1, 35], function (msg) { + //console.debug(`XG chorus LFO phase: ${msg}`); + }).add([67, 16, 76, 2, 1, 36], function (msg) { + console.debug(`XG chorus feedback: ${msg}`); + }).add([67, 16, 76, 2, 1, 37], function (msg) { + console.debug(`XG chorus delay offset: ${getXgDelayOffset(msg[0])}ms`); + }).add([67, 16, 76, 2, 1, 39], function (msg) { + console.debug(`XG chorus low: ${xgNormFreq[msg[0]]}Hz`); + }).add([67, 16, 76, 2, 1, 40], function (msg) { + console.debug(`XG chorus low: ${msg[0] - 64}dB`); + }).add([67, 16, 76, 2, 1, 41], function (msg) { + console.debug(`XG chorus high: ${xgNormFreq[msg[0]]}Hz`); + }).add([67, 16, 76, 2, 1, 42], function (msg) { + console.debug(`XG chorus high: ${msg[0] - 64}dB`); + }).add([67, 16, 76, 2, 1, 43], function (msg) { + console.debug(`XG chorus dry/wet: ${msg}`); + }).add([67, 16, 76, 2, 1, 44], function (msg) { + console.debug(`XG chorus return: ${msg}`); + }).add([67, 16, 76, 2, 1, 45], function (msg) { + console.debug(`XG chorus pan: ${msg[0] - 64}`); + }).add([67, 16, 76, 2, 1, 46], function (msg) { + console.debug(`XG chorus to reverb: ${msg}`); + }).add([67, 16, 76, 2, 1, 64], function (msg) { + console.debug(`XG variation type: ${xgEffType[msg[0]]}${msg[1] > 0 ? " " + (msg[1] + 1) : ""}`); + }).add([67, 16, 76, 2, 1, 66], function (msg) { + console.debug(`XG variation 1: ${msg}`); + }).add([67, 16, 76, 2, 1, 68], function (msg) { + console.debug(`XG variation 2: ${msg}`); + }).add([67, 16, 76, 2, 1, 70], function (msg) { + console.debug(`XG variation 3: ${msg}`); + }).add([67, 16, 76, 2, 1, 72], function (msg) { + console.debug(`XG variation 4: ${msg}`); + }).add([67, 16, 76, 2, 1, 74], function (msg) { + console.debug(`XG variation 5: ${msg}`); + }).add([67, 16, 76, 2, 1, 76], function (msg) { + console.debug(`XG variation 6: ${msg}`); + }).add([67, 16, 76, 2, 1, 78], function (msg) { + console.debug(`XG variation 7: ${msg}`); + }).add([67, 16, 76, 2, 1, 80], function (msg) { + console.debug(`XG variation 8: ${msg}`); + }).add([67, 16, 76, 2, 1, 82], function (msg) { + console.debug(`XG variation 9: ${msg}`); + }).add([67, 16, 76, 2, 1, 84], function (msg) { + console.debug(`XG variation 10: ${msg}`); + }).add([67, 16, 76, 2, 1, 86], function (msg) { + console.debug(`XG variation return: ${toDecibel(msg[0])}dB`); + }).add([67, 16, 76, 2, 1, 87], function (msg) { + console.debug(`XG variation pan: ${msg[0] - 64}`); + }).add([67, 16, 76, 2, 1, 88], function (msg) { + console.debug(`XG variation to reverb: ${toDecibel(msg[0])}dB`); + }).add([67, 16, 76, 2, 1, 89], function (msg) { + console.debug(`XG variation to chorus: ${toDecibel(msg[0])}dB`); + }).add([67, 16, 76, 2, 1, 90], function (msg) { + console.debug(`XG variation connection: ${msg[0] ? "system" : "insertion"}`); + }).add([67, 16, 76, 2, 1, 91], function (msg) { + console.debug(`XG variation part: ${msg}`); + }).add([67, 16, 76, 2, 1, 92], function (msg) { + console.debug(`XG variation mod wheel: ${msg[0] - 64}`); + }).add([67, 16, 76, 2, 1, 93], function (msg) { + console.debug(`XG variation bend wheel: ${msg[0] - 64}`); + }).add([67, 16, 76, 2, 1, 94], function (msg) { + console.debug(`XG variation channel after touch: ${msg[0] - 64}`); + }).add([67, 16, 76, 2, 1, 95], function (msg) { + console.debug(`XG variation AC1: ${msg[0] - 64}`); + }).add([67, 16, 76, 2, 1, 96], function (msg) { + console.debug(`XG variation AC2: ${msg[0] - 64}`); + }).add([67, 16, 76, 8], function (msg, track) { + // XG part setup + //console.info(`XG Part Setup trk ${track} ch ${msg[0]} real ${upThis.chRedir(msg[0], track)}.`); + // THIS CAN CONTAIN BUGS + upThis.#seXgPart.run(msg.slice(1), upThis.chRedir(msg[0], track)); + }).add([67, 16, 76, 48], function (msg) { + // XG drum 1 setup + upThis.#seXgDrumInst.run(msg.slice(1), 0, msg[0]); + }).add([67, 16, 76, 49], function (msg) { + // XG drum 2 setup + upThis.#seXgDrumInst.run(msg.slice(1), 1, msg[0]); + }).add([67, 16, 76, 50], function (msg) { + // XG drum 3 setup + upThis.#seXgDrumInst.run(msg.slice(1), 2, msg[0]); + }).add([67, 16, 76, 51], function (msg) { + // XG drum 4 setup + upThis.#seXgDrumInst.run(msg.slice(1), 3, msg[0]); + }); + // Roland MT-32 SysEx + // Refactor this! + this.#seMain.add([65, 1], function (msg) { + upThis.switchMode("mt32"); + upThis.#seMtSysEx.run(msg, 1); + }).add([65, 2], function (msg) { + upThis.switchMode("mt32"); + upThis.#seMtSysEx.run(msg, 2); + }).add([65, 3], function (msg) { + upThis.switchMode("mt32"); + upThis.#seMtSysEx.run(msg, 3); + }).add([65, 4], function (msg) { + upThis.switchMode("mt32"); + upThis.#seMtSysEx.run(msg, 4); + }).add([65, 5], function (msg) { + upThis.switchMode("mt32"); + upThis.#seMtSysEx.run(msg, 5); + }).add([65, 6], function (msg) { + upThis.switchMode("mt32"); + upThis.#seMtSysEx.run(msg, 6); + }).add([65, 7], function (msg) { + upThis.switchMode("mt32"); + upThis.#seMtSysEx.run(msg, 7); + }).add([65, 8], function (msg) { + upThis.switchMode("mt32"); + upThis.#seMtSysEx.run(msg, 8); + }).add([65, 9], function (msg) { + upThis.switchMode("mt32"); + upThis.#chActive[9] = 1; + upThis.#seMtSysEx.run(msg, 9); + }).add([65, 16, 22, 18, 8], function (msg, track) { + upThis.switchMode("mt32"); + let section = msg[0]/*upThis.chRedir(msg[0], track, true)*/, + funcId = msg[1], + theText = ""; + if (funcId == 0) { + msg.slice(2, 12).forEach((e) => { + if (e > 31) { + theText += String.fromCharCode(e); + }; + }); + console.debug(`MT-32 voice setup on section ${section}: ${theText}.`); + } else { + //console.debug(`Mysterious sequence on channel ${part + 1}: ${msg}`); + }; + }).add([65, 16, 22, 18, 16, 0, 13], function (msg, track) { + upThis.switchMode("mt32"); + console.info(`MT-32 receive channel: ${msg}`); + }).add([65, 16, 22, 18, 16, 0, 22], function (msg, track) { + upThis.switchMode("mt32"); + console.info(`MT-32 all notes off? ${msg}`); + }).add([65, 16, 22, 18, 32, 0], function (msg) { + upThis.switchMode("mt32"); + let offset = msg[0]; + upThis.#letterDisp = " ".repeat(offset); + msg.unshift(); + msg.pop(); + upThis.#letterDisp = " ".repeat(offset); + upThis.#letterExpire = Date.now() + 3200; + msg.forEach(function (e) { + if (e > 31) { + upThis.#letterDisp += String.fromCharCode(e); + }; + }); + upThis.#letterDisp += " ".repeat(32 - upThis.#letterDisp.length); + }); + this.#seMtSysEx.add([22, 18, 2, 0, 0], function (msg, channel) { + // MT-32 tone properties + // Refactor this! + let setName = ""; + msg.slice(0, 10).forEach(function (e) { + if (e > 31) { + setName += String.fromCharCode(e); + }; + }); + upThis.#customName[channel] = setName; + console.debug(`MT-32 tone properties on channel ${channel + 1} (${setName}).`); + let matchedPart = []; + msg.slice(10).forEach((e, i) => { + if (e < 10) { + matchedPart[e] = matchedPart[e] || []; + matchedPart[e].push(i); + }; + }); + console.info(matchedPart[channel]); + }); + // Roland GS SysEx + // Refactor this! + this.#seMain.add([65, 16, 66, 18, 0, 0, 127], function (msg) { + // GS module mode (single port 16 channel, or double port 32 channel) + upThis.switchMode("gs", true); + upThis.#cc[1152] = 120; + upThis.#cc[3200] = 120; + upThis.#cc[5248] = 120; + upThis.#cc[7296] = 120; + upThis.#trkRedir.forEach(toZero); + upThis.#modeKaraoke = false; + upThis.#subLsb = 3; + console.info(`GS system set to ${msg[0] ? "dual" : "single"} mode.`); + }).add([65, 16, 66, 18, 64, 0, 0], function (msg) { + // GS Master Tune, 4 bytes but I don't know how to process + }).add([65, 16, 66, 18, 64, 0, 4], function (msg) { + // GS Master Volume, same as universal master volume but with MSB only. + upThis.#masterVol = msg[0] * 129 / 163.83; + }).add([65, 16, 66, 18, 64, 0, 5], function (msg) { + // GS Master Key Shift + console.debug(`GS master key shift: ${msg[0] - 64} semitones.`); + }).add([65, 16, 66, 18, 64, 0, 6], function (msg) { + // GS Master Pan + console.debug(`GS master pan:${msg[0] - 64}.`); + }).add([65, 16, 66, 18, 64, 1, 48], function (msg) { + // GS reverb macro + console.debug(`GS reverb type: ${gsRevType[msg[0]]}`); + }).add([65, 16, 66, 18, 64, 1, 49], function (msg) { + // GS reverb Character + }).add([65, 16, 66, 18, 64, 1, 50], function (msg) { + // GS reverb pre-LPF + console.debug(`GS reverb pre-LPF: ${msg[0]}`); + }).add([65, 16, 66, 18, 64, 1, 51], function (msg) { + // GS reverb level + console.debug(`GS reverb level: ${msg[0]}`); + }).add([65, 16, 66, 18, 64, 1, 52], function (msg) { + // GS reverb time (NEED A LOOKUP TABLE FOR REAL VALUES) + console.debug(`GS reverb time: ${msg[0]}`); + }).add([65, 16, 66, 18, 64, 1, 53], function (msg) { + // GS reverb delay feedback + console.debug(`GS reverb delay feedback: ${msg[0]}`); + }).add([65, 16, 66, 18, 64, 1, 55], function (msg) { + // GS reverb pre-delay time + console.debug(`GS reverb pre-delay time: ${msg[0]}`); + }).add([65, 16, 66, 18, 64, 1, 56], function (msg) { + // GS reverb chorus macro + console.debug(`GS chorus type: ${gsChoType[msg[0]]}`); + }).add([65, 16, 66, 18, 64, 1, 57], function (msg) { + // GS reverb chorus pre-LPF (SC-88 Pro manual page 195) + console.debug(`GS chorus pre-LPF: ${msg[0]}`); + }).add([65, 16, 66, 18, 64, 2, 0], function (msg) { + // GS EQ low freq + console.debug(`GS EQ low: ${msg[0] ? 400 : 200}Hz`); + }).add([65, 16, 66, 18, 64, 2, 1], function (msg) { + // GS EQ low gain + console.debug(`GS EQ low: ${msg[0] - 64}dB`); + }).add([65, 16, 66, 18, 64, 2, 2], function (msg) { + // GS EQ high freq + console.debug(`GS EQ high: ${msg[0] ? 6000 : 3000}Hz`); + }).add([65, 16, 66, 18, 64, 2, 3], function (msg) { + // GS EQ high gain + console.debug(`GS EQ high: ${msg[0] - 64}dB`); + }).add([65, 16, 66, 18, 64, 3], function (msg) { + // GS EFX params, have to ignore for now (SC-88 Pro manual page 196) + }).add([65, 16, 69, 18, 16, 0], function (msg) { + // GS Text Insert (same as XG Letter Display) + let offset = msg[0]; + upThis.#letterDisp = " ".repeat(offset); + upThis.#letterExpire = Date.now() + 3200; + msg.pop(); + msg.slice(1).forEach(function (e) { + upThis.#letterDisp += String.fromCharCode(e); + }); + }).add([65, 16, 69, 18, 16, 1, 0], function (msg) { + // GS Frame Draw (same as XG Bitmap Display) + upThis.#bitmapExpire = Date.now() + 3200; + msg.forEach(function (e, i) { + if (i < 64) { + let ln = Math.floor(i / 16), co = i % 16; + let pt = (co * 4 + ln) * 5, threshold = 5, bi = 0; + pt -= co * 4; + if (ln == 3) { + threshold = 1; + }; + while (bi < threshold) { + upThis.#bitmap[pt + bi] = (e >> (4 - bi)) & 1; + bi ++; + }; + }; + }); + }).add([65, 16, 66, 18, 64, 16], function (msg, track) { + // GS Part channel 10 + upThis.#seGsPart.run(msg, upThis.chRedir(9, track, true), track); + }).add([65, 16, 66, 18, 64, 17], function (msg, track) { + // GS Part channel 01 + upThis.#seGsPart.run(msg, upThis.chRedir(0, track, true), track); + }).add([65, 16, 66, 18, 64, 18], function (msg, track) { + // GS Part channel 02 + upThis.#seGsPart.run(msg, upThis.chRedir(1, track, true), track); + }).add([65, 16, 66, 18, 64, 19], function (msg, track) { + // GS Part channel 03 + upThis.#seGsPart.run(msg, upThis.chRedir(2, track, true), track); + }).add([65, 16, 66, 18, 64, 20], function (msg, track) { + // GS Part channel 04 + upThis.#seGsPart.run(msg, upThis.chRedir(3, track, true), track); + }).add([65, 16, 66, 18, 64, 21], function (msg, track) { + // GS Part channel 05 + upThis.#seGsPart.run(msg, upThis.chRedir(4, track, true), track); + }).add([65, 16, 66, 18, 64, 22], function (msg, track) { + // GS Part channel 06 + upThis.#seGsPart.run(msg, upThis.chRedir(5, track, true), track); + }).add([65, 16, 66, 18, 64, 23], function (msg, track) { + // GS Part channel 07 + upThis.#seGsPart.run(msg, upThis.chRedir(6, track, true), track); + }).add([65, 16, 66, 18, 64, 24], function (msg, track) { + // GS Part channel 08 + upThis.#seGsPart.run(msg, upThis.chRedir(7, track, true), track); + }).add([65, 16, 66, 18, 64, 25], function (msg, track) { + // GS Part channel 09 + upThis.#seGsPart.run(msg, upThis.chRedir(8, track, true), track); + }).add([65, 16, 66, 18, 64, 26], function (msg, track) { + // GS Part channel 11 + upThis.#seGsPart.run(msg, upThis.chRedir(10, track, true), track); + }).add([65, 16, 66, 18, 64, 27], function (msg, track) { + // GS Part channel 12 + upThis.#seGsPart.run(msg, upThis.chRedir(11, track, true), track); + }).add([65, 16, 66, 18, 64, 28], function (msg, track) { + // GS Part channel 13 + upThis.#seGsPart.run(msg, upThis.chRedir(12, track, true), track); + }).add([65, 16, 66, 18, 64, 29], function (msg, track) { + // GS Part channel 14 + upThis.#seGsPart.run(msg, upThis.chRedir(13, track, true), track); + }).add([65, 16, 66, 18, 64, 30], function (msg, track) { + // GS Part channel 15 + upThis.#seGsPart.run(msg, upThis.chRedir(14, track, true), track); + }).add([65, 16, 66, 18, 64, 31], function (msg, track) { + // GS Part channel 16 + upThis.#seGsPart.run(msg, upThis.chRedir(15, track, true), track); + }).add([65, 16, 66, 18, 64, 64], function (msg, track) { + // GS Part channel 10 + upThis.#seGsPartProp.run(msg, upThis.chRedir(9, track, true)); + }).add([65, 16, 66, 18, 64, 65], function (msg, track) { + // GS Part channel 01 + upThis.#seGsPartProp.run(msg, upThis.chRedir(0, track, true)); + }).add([65, 16, 66, 18, 64, 66], function (msg, track) { + // GS Part channel 02 + upThis.#seGsPartProp.run(msg, upThis.chRedir(1, track, true)); + }).add([65, 16, 66, 18, 64, 67], function (msg, track) { + // GS Part channel 03 + upThis.#seGsPartProp.run(msg, upThis.chRedir(2, track, true)); + }).add([65, 16, 66, 18, 64, 68], function (msg, track) { + // GS Part channel 04 + upThis.#seGsPartProp.run(msg, upThis.chRedir(3, track, true)); + }).add([65, 16, 66, 18, 64, 69], function (msg, track) { + // GS Part channel 05 + upThis.#seGsPartProp.run(msg, upThis.chRedir(4, track, true)); + }).add([65, 16, 66, 18, 64, 70], function (msg, track) { + // GS Part channel 06 + upThis.#seGsPartProp.run(msg, upThis.chRedir(5, track, true)); + }).add([65, 16, 66, 18, 64, 71], function (msg, track) { + // GS Part channel 07 + upThis.#seGsPartProp.run(msg, upThis.chRedir(6, track, true)); + }).add([65, 16, 66, 18, 64, 72], function (msg, track) { + // GS Part channel 08 + upThis.#seGsPartProp.run(msg, upThis.chRedir(7, track, true)); + }).add([65, 16, 66, 18, 64, 73], function (msg, track) { + // GS Part channel 09 + upThis.#seGsPartProp.run(msg, upThis.chRedir(8, track, true)); + }).add([65, 16, 66, 18, 64, 74], function (msg, track) { + // GS Part channel 11 + upThis.#seGsPartProp.run(msg, upThis.chRedir(10, track, true)); + }).add([65, 16, 66, 18, 64, 75], function (msg, track) { + // GS Part channel 12 + upThis.#seGsPartProp.run(msg, upThis.chRedir(11, track, true)); + }).add([65, 16, 66, 18, 64, 76], function (msg, track) { + // GS Part channel 13 + upThis.#seGsPartProp.run(msg, upThis.chRedir(12, track, true)); + }).add([65, 16, 66, 18, 64, 77], function (msg, track) { + // GS Part channel 14 + upThis.#seGsPartProp.run(msg, upThis.chRedir(13, track, true)); + }).add([65, 16, 66, 18, 64, 78], function (msg, track) { + // GS Part channel 15 + upThis.#seGsPartProp.run(msg, upThis.chRedir(14, track, true)); + }).add([65, 16, 66, 18, 64, 79], function (msg, track) { + // GS Part channel 16 + upThis.#seGsPartProp.run(msg, upThis.chRedir(15, track, true)); + }); + // KORG X5D SysEx + upThis.#seMain.add([66, 48, 54, 104], function (msg, track) { + // X5D extended multi setup + upThis.switchMode("x5d", true); + korgFilter(msg, function (e, i) { + if (i < 192) { + let part = upThis.chRedir(Math.floor(i / 12), track, true), + chOff = part * 128; + switch (i % 12) { + case 0: { + // Program change + upThis.#prg[part] = e; + if (e > 0) { + upThis.#chActive[part] = 1; + }; + break; + }; + case 1: { + // Volume + upThis.#cc[chOff + 7] = e; + break; + }; + case 2: { + // Coarse tune + upThis.#rpn[part * allocated.rpn + 3] = (e > 127 ? 256 - e : 64 + e); + break; + }; + case 3: { + // Fine tune + upThis.#rpn[part * allocated.rpn + 1] = (e > 127 ? 256 - e : 64 + e); + break; + }; + case 4: { + // Pan + if (e < 31) { + upThis.#cc[chOff + 10] = Math.round((e - 15) * 4.2 + 64); + }; + break; + }; + case 5: { + // Reverb + Chorus + let choSend = e >> 4, + revSend = e & 15; + upThis.#cc[chOff + 91] = x5dSendLevel(revSend); + upThis.#cc[chOff + 93] = x5dSendLevel(choSend); + break; + }; + case 10: { + // Control filter + upThis.#cc[chOff] = (e & 3) ? 82 : 56; + break; + }; + case 11: { + // MIDI Rc Ch + Track Switch + let midiCh = e & 15, + trkSw = e >> 4; + upThis.#chReceive[part] = e; + if (midiCh != part || trkSw) { + console.info(`X5D Part CH${part + 1} receives from CH${midiCh + 1}. Track is ${trkSw ? "inactive" : "active"}.`); + upThis.buildRchTree(); + }; + }; + }; + } else { + let part = upThis.chRedir(i - 192, track, true); + // What the heck is pitch bend range 0xF4(-12) to 0x0C(12)? + }; + }); + }).add([66, 48, 54, 76, 0], function (msg, track) { + // X5D program dump + upThis.switchMode("x5d", true); + let name = "", msb = 82, prg = 0, lsb = 0; + let voiceMap = "MSB\tPRG\tLSB\tNME"; + korgFilter(msg, function (e, i) { + if (i < 16400) { + let p = i % 164; + switch (true) { + case (p < 10): { + if (e > 31) { + name += String.fromCharCode(e); + }; + break; + }; + case (p == 11): { + voiceMap += `\n${msb}\t${prg}\t${lsb}\t${name.trim().replace("Init Voice", "")}`; + prg ++; + name = ""; + break; + }; + }; + if (prg > 99) { + msb = 90; + prg = 0; + }; + }; + }); + upThis.dispatchEvent("mapupdate", { + clearRange: { + msb: 82, + prg: [0, 99], + lsb: 0 + }, + voiceMap + }); + }).add([66, 48, 54, 77, 0], function (msg, track) { + // X5D combi dump + upThis.switchMode("x5d", true); + let name = "", msb = 90, prg = 0, lsb = 0;// CmbB then CmbA + let voiceMap = "MSB\tPRG\tLSB\tNME"; + korgFilter(msg, function (e, i) { + if (i < 13600) { + let p = i % 136; + switch (true) { + case (p < 10): { + if (e > 31) { + name += String.fromCharCode(e); + }; + break; + }; + case (p == 11): { + voiceMap += `\n${msb}\t${prg}\t${lsb}\t${name.trim().replace("Init Combi", "")}`; + prg ++; + name = ""; + break; + }; + }; + }; + }); + upThis.dispatchEvent("mapupdate", { + clearRange: { + msb: 90, + prg: [0, 99], + lsb: 0 + }, + voiceMap + }); + }).add([66, 48, 66, 54], function (msg, track) { + // NS5R program dump + upThis.switchMode("ns5r", true); + let name = "", msb = 80, prg = 0, lsb = 0; + let voiceMap = "MSB\tPRG\tLSB\tNME"; + korgFilter(msg, function (e, i) { + let p = i % 158; + switch (true) { + case (p < 10): { + if (e > 31) { + name += String.fromCharCode(e); + }; + break; + }; + case (p == 11): { + msb = e; + break; + }; + case (p == 12): { + lsb = e; + break; + }; + case (p == 13): { + voiceMap += `\n${msb}\t${prg}\t${lsb}\t${name.trim()}`; + prg ++; + name = ""; + break; + }; + }; + }); + upThis.dispatchEvent("mapupdate", { + clearRange: { + msb: 80, + lsb: 0 + }, + voiceMap + }); + }).add([66, 48, 66, 52], function (msg) { + // KORG NS5R/NX5R System Exclusive + // Current effect dump, but cannot find parsing docs. + upThis.switchMode("ns5r", true); + upThis.#modeKaraoke = false; + //console.debug(`NS5R effect dump: `, msg); + }).add([66, 48, 66, 53], function (msg) { + // NS5R Current multi dump + upThis.switchMode("ns5r", true); + korgFilter(msg, function (e, i) { + switch (true) { + case i < 2944: { + // 32 part setup params, 2944 bytes + let part = Math.floor(i / 92), + chOff = part * 128; + switch (i % 92) { + case 0: { + // MSB Bank + upThis.#cc[chOff] = e; + break; + }; + case 1: { + // LSB Bank + upThis.#cc[chOff + 32] = e; + break; + }; + case 2: { + // Program + upThis.#prg[part] = e; + if (e > 0) { + upThis.#chActive[part] = 1; + }; + break; + }; + case 3: { + // Receive MIDI channel + upThis.#chReceive[part] = e; + if (part != e) { + console.info(`NS5R CH${part + 1} receives from CH${e + 1}.`); + upThis.buildRchTree(); + }; + }; + case 7: { + // 0 for melodic, 1 for drum, 2~5 for mod drums 1~4 + break; + }; + case 8: { + // Coarse Tune + upThis.#rpn[part * allocated.rpn + 3] = (e < 40 || e > 88) ? e + (e > 63 ? -192 : 64) : e; + break; + }; + case 9: { + // Fine Tune + // This is trying to use absolute values. + }; + case 10: { + // Volume + upThis.#cc[chOff + 7] = e; + break; + }; + case 11: { + // Expression + upThis.#cc[chOff + 11] = e; + break; + }; + case 14: { + // Pan + upThis.#cc[chOff + 10] = e || 128; + break; + }; + case 19: { + // Chorus + upThis.#cc[chOff + 93] = e; + break; + }; + case 20: { + // Reverb + upThis.#cc[chOff + 91] = e; + break; + }; + case 84: { + // Portamento Switch + upThis.#cc[chOff + 65] = e; + break; + }; + case 85: { + // Portamento Time + upThis.#cc[chOff + 5] = e; + break; + }; + }; + break; + }; + case i < 3096: { + // part common params, 152 bytes + break; + }; + case i < 3134: { + // currnet effect params, 38 bytes + break; + }; + case i < 8566: { + // 4 mod drum params, 5432 bytes + break; + }; + }; + }); + }); + // Yamaha XG Drum Setup SysEx + // Refactor this! + upThis.#seXgDrumInst.add([0], function (msg, setupNum, noteNum) { + console.debug(`XG Drum ${setupNum} note ${noteNum} coarse pitch bend ${msg[0] - 64}.`); + }).add([1], function (msg, setupNum, noteNum) { + console.debug(`XG Drum ${setupNum} note ${noteNum} fine pitch bend ${msg[0] - 64}.`); + }).add([2], function (msg, setupNum, noteNum) { + console.debug(`XG Drum ${setupNum} note ${noteNum} level ${msg[0]}.`); + }).add([3], function (msg, setupNum, noteNum) { + console.debug(`XG Drum ${setupNum} note ${noteNum} alt group ${msg[0]}.`); + }).add([4], function (msg, setupNum, noteNum) { + console.debug(`XG Drum ${setupNum} note ${noteNum} pan ${msg[0] - 64}.`); + }).add([5], function (msg, setupNum, noteNum) { + console.debug(`XG Drum ${setupNum} note ${noteNum} reverb send ${toDecibel(msg[0])}dB.`); + }).add([6], function (msg, setupNum, noteNum) { + console.debug(`XG Drum ${setupNum} note ${noteNum} chorus send ${toDecibel(msg[0])}dB.`); + }).add([7], function (msg, setupNum, noteNum) { + console.debug(`XG Drum ${setupNum} note ${noteNum} variation send ${toDecibel(msg[0])}dB.`); + }).add([8], function (msg, setupNum, noteNum) { + console.debug(`XG Drum ${setupNum} note ${noteNum} key assign as ${msg[0] > 0 ? "multi" : "single"}.`); + }).add([9], function (msg, setupNum, noteNum) { + // Note off send + }).add([10], function (msg, setupNum, noteNum) { + // Note on send + }).add([11], function (msg, setupNum, noteNum) { + // Filter cutoff (brightness) + }).add([12], function (msg, setupNum, noteNum) { + // Filter resonance + }).add([13], function (msg, setupNum, noteNum) { + // EG attack rate + }).add([14], function (msg, setupNum, noteNum) { + // EG decay 1 rate + }).add([15], function (msg, setupNum, noteNum) { + // EG decay 2 rate + }); + // Yamaha XG Part Setup SysEx + // Refactor this! + upThis.#seXgPart.add([0], function (msg, channel) { + console.debug(`XG Part reserve ${msg[0]} elements for channel ${channel}.`); + }).add([1], function (msg, channel) { + // Same as cc0 + upThis.#cc[channel * 128] = msg[0]; + }).add([2], function (msg, channel) { + // Same as cc32 + upThis.#cc[channel * 128 + 32] = msg[0]; + }).add([3], function (msg, channel) { + // Same as program change + upThis.#prg[channel] = msg[0]; + }).add([4], function (msg, channel) { + // Change receive channel. May require channel redirect feature to be implemented! + upThis.#chReceive[channel] = msg[0]; + if (channel != msg[0]) { + console.info(`XG Part CH${channel + 1} receives from CH${msg[0] + 1}.`); + upThis.buildRchTree(); + }; + }).add([5], function (msg, channel) { + // Mono/poly switching + console.debug(`XG Part mono/poly set to ${msg[0] ? "mono" : "poly"} for channel ${channel}.`); + }).add([6], function (msg, channel) { + // Same note number key on assign (what does this mean???) + console.debug(`XG Part repeat pressing set to ${["single", "multi", "inst"][msg[0]]} mode for channel ${channel}.`); + }).add([7], function (msg, channel) { + let data = msg[0]; + upThis.#cc[128 * channel] = data > 1 ? 127 : 0; + console.debug(`XG Part use mode "${xgPartMode[data]}" for channel ${channel}.`); + }).add([14], function (msg, channel) { + //console.debug(`XG Part panning for channel ${channel}: ${msg[0]}.`); + upThis.#cc[128 * channel + 10] = msg[0] || 128; + }).add([17], function (msg, channel) { + console.debug(`XG Part dry level ${msg[0]} for channel ${channel}.`); + }).add([18], function (msg, channel) { + console.debug(`XG Part chorus send ${toDecibel(msg[0])}dB for channel ${channel}.`); + }).add([19], function (msg, channel) { + console.debug(`XG Part reverb send ${toDecibel(msg[0])}dB for channel ${channel}.`); + }).add([20], function (msg, channel) { + console.debug(`XG Part variation send ${toDecibel(msg[0])}dB for channel ${channel}.`); + }).add([21], function (msg, channel) { + console.debug(`XG Part LFO speed ${msg[0]} for channel ${channel}.`); + }).add([29], function (msg, channel) { + console.debug(`XG Part MW bend ${msg[0] - 64} semitones for channel ${channel}.`); + }).add([32], function (msg, channel) { + console.debug(`XG Part MW LFO pitch depth ${msg[0]} for channel ${channel}.`); + }).add([33], function (msg, channel) { + console.debug(`XG Part MW LFO filter depth ${msg[0]} for channel ${channel}.`); + }).add([35], function (msg, channel) { + upThis.#rpn[channel * allocated.rpn + 3] = msg[0]; + //console.debug(`XG Part bend pitch ${msg[0] - 64} semitones for channel ${channel}.`); + }).add([83], function (msg, channel) { + // Polyphonic aftertouch (PAT) pitch control + //console.debug(`XG Part PAT pitch ${msg[0] - 64} semitones for channel ${channel}.`); + }).add([103], function (msg, channel) { + // Same as cc65 + upThis.#cc[channel * 128 + 65] = msg[0]; + }).add([104], function (msg, channel) { + // Same as cc5 + upThis.#cc[channel * 128 + 5] = msg[0]; + }).add([105], function (msg, channel) { + console.debug(`XG Part EG initial ${msg[0] - 64} for channel ${channel}.`); + }).add([106], function (msg, channel) { + console.debug(`XG Part EG attack time ${msg[0] - 64} for channel ${channel}.`); + }); + // Roland GS Part Setup SysEx + // Refactor this! + upThis.#seGsPart.add([0], function (msg, channel) { + // Same as cc00 and program change + if (upThis.#cc[channel * 128] == 120) { + msg[0] = 120; + }; + upThis.#cc[channel * 128] = msg[0] || 0; + upThis.#prg[channel] = msg[1] || 0; + }).add([2], function (msg, channel, track) { + // Channel redirect might be required + // 3 to 18 controls whether to receive messages. Not implemented for now. + let targetCh = upThis.chRedir(msg[0], track, true); + upThis.#chReceive[channel] = targetCh; + if (channel != targetCh) { + console.info(`GS Part CH${channel + 1} receives from CH${targetCh + 1.}.`); + upThis.buildRchTree(); + }; + }).add([19], function (msg, channel) { + // Switch to mono (0) or poly (1) + }).add([20], function (msg, channel) { + // Switch assign mode + }).add([21], function (msg, channel) { + // Channel use rhythm or not + // Only two drum kits can even be used at the same time + console.debug(`GS Part ${channel + 1} type: ${["melodic", "drum 1", "drum 2"][msg[0]]}.`); + if (msg[0] > 0) { + upThis.#cc[channel * 128] = 120; + }; + }).add([25], function (msg, channel) { + // Set volume + upThis.#cc[channel * 128 + 7] = msg[0]; + }).add([28], function (msg, channel) { + // Set pan + upThis.#cc[channel * 128 + 10] = msg[0] || 128; + }).add([33], function (msg, channel) { + // Set chorus + upThis.#cc[channel * 128 + 93] = msg[0]; + }).add([34], function (msg, channel) { + // Set reverb + upThis.#cc[channel * 128 + 91] = msg[0]; + }); + // Roland GS Part Properties + // Refactor this! + upThis.#seGsPartProp.add([0], function(msg, channel) { + upThis.#cc[channel * 128 + 32] = msg[0]; + }).add([1], function(msg, channel) { + // This should be per-channel subLsb, but currently not implemented, sooooo... + upThis.#cc[channel * 128 + 32] = msg[0]; + }).add([32], function(msg, channel) { + console.debug(`GS Part ${channel + 1} turned EQ ${msg[0] ? "on" : "off"}.`); + }).add([33], function(msg, channel) { + // GS output assign + }).add([34], function(msg, channel) { + console.debug(`GS Part ${channel + 1} turned EFX ${msg[0] ? "on" : "off"}.`); + }); + }; +}; + +export { + OctaviaDevice, + ccToPos +}; diff --git a/src/state/utils.js b/src/state/utils.js new file mode 100644 index 00000000..c7cfa8ca --- /dev/null +++ b/src/state/utils.js @@ -0,0 +1,77 @@ +"use strict"; + +let toDecibel = function (data = 64) { + return Math.round(2000 * Math.log10(data / 64)) / 100; +}; + +let customInterpreter = function (type, file, rawMtLen) { + let u8Data = []; + let metaLength = rawMtLen == false ? file.readIntVLV() : rawMtLen; + if (type == 0 || type == 127) { + //metaLength = 1; + }; + for (let c = 0; c < metaLength; c ++) { + let byte = file.readInt(1); + u8Data.push(byte); + if (byte == 247) { + // End of SysEx + } else if (byte == 240) { + // Start of a new SysEx + } else if (byte > 127) { + // Start of a new event + console.debug(`Early termination: ${u8Data}`); + u8Data.pop(); + file.backOne(); + file.backOne(); + return new Uint8Array(u8Data); + }; + }; + //console.debug(`Constructed data: `, u8Data); + return new Uint8Array(u8Data); +}; + +let gsChecksum = function (sequence) { + // Only pass along the three-byte address and their data. + let checksum = 0; + sequence.forEach((e) => { + checksum += e; + checksum = checksum & 127; // Prevent going out of range + }); + return (~checksum + 1) & 127; +}; + +// Why KORG adds a byte every seven bytes is a mistery to me. +let korgFilter = function (korgArr, iterator) { + let realData = 0, dataMask = 0; + for (let pointer = 0; pointer < korgArr.length; pointer ++) { + let shifts = pointer % 8 - 1, + unmasked = (((dataMask >> shifts) & 1) << 7), + e = korgArr[pointer]; + e += unmasked; + if (pointer % 8 != 0) { + iterator(e, realData, korgArr); + //console.debug(`Unmasked: ${dataMask} >> ${shifts} = ${e}`); + realData ++; + } else { + dataMask = korgArr[pointer]; + //console.debug(`Overlay mask: ${dataMask}`); + }; + }; +}; + +let x5dSendLevel = function (sendParam) { + let res = Math.floor(sendParam * 14.2); + if (res < 128) { + return res; + } else { + return 0; + }; +}; + +export { + toDecibel, + gsChecksum, + korgFilter, + x5dSendLevel, + customInterpreter +}; diff --git a/src/state/xgValues.js b/src/state/xgValues.js new file mode 100644 index 00000000..59e0c8fe --- /dev/null +++ b/src/state/xgValues.js @@ -0,0 +1,315 @@ +"use strict"; + +const xgEffType = [ + "off", + "hall", + "room", + "stage", + "plate", + "delay LCR", + "delay LR", + "echo", + "cross delay", + "early reflections", + "gate reverb", + "reverse gate" +].concat((new Array(4)), [ + "white room", + "tunnel", + "canyon", + "basement", + "karaoke" +], new Array(43), [ + "pass through", + "chorus", + "celeste", + "flanger", + "symphonic", + "rotary speaker", + "tremelo", + "auto pan", + "phaser", + "distortion", + "overdrive", + "amplifier", + "3-band EQ", + "2-band EQ", + "auto wah" +], new Array(1), [ + "pitch change", + "harmonic", + "touch wah", + "compressor", + "noise gate", + "voice channel", + "2-way rotary speaker", + "ensemble detune", + "ambience" +], new Array(4), [ + "talking mod", + "Lo-Fi", + "dist + delay", + "comp + dist + delay", + "wah + dist + delay", + "V dist", + "dual rotor speaker" +]); +let xgPartMode = [ + "melodic", + "drums", + "drum set 1", + "drum set 2", + "drum set 3", + "drum set 4", + "drum set 5", + "drum set 6", + "drum set 7", + "drum set 8" +]; +let xgDelOffset = [ + 17.1, 18.6, 20.2, 21.8, 23.3, + 24.9, 26.5, 28, 29.6, 31.2, + 32.8, 34.3, 35.9, 37.5, 39, + 40.6, 42.2, 43.7, 45.3, 46.9, + 48.4, 50 +]; +let xgNormFreq = [ + 20, 22, 25, 28, 32, 36, 40, 45, + 50, 56, 63, 70, 80, 90, 100, 110, + 125, 140, 160, 180, 200, 225, 250, 280, + 315, 355, 400, 450, 500, 560, 630, 700, + 800, 900, 1E3, 1100, 1200, 1400, 1600, 1800, + 2E3, 2200, 2500, 2800, 3200, 3600, 4E3, 4500, + 5E3, 5600, 6300, 7E3, 8E3, 9E3, 1E4, 11E3, + 12E3, 14E3, 16E3, 18E3, 2E4 +]; +let xgLfoFreq = [ + 0, 0.04, 0.08, 0.13, 0.17, 0.21, 0.25, 0.29, + 0.34, 0.38, 0.42, 0.46, 0.51, 0.55, 0.59, 0.63, + 0.67, 0.72, 0.76, 0.8, 0.84, 0.88, 0.93, 0.97, + 1.01, 1.05, 1.09, 1.14, 1.18, 1.22, 1.26, 1.3, + 1.35, 1.39, 1.43, 1.47, 1.51, 1.56, 1.6, 1.64, + 1.68, 1.72, 1.77, 1.81, 1.85, 1.89, 1.94, 1.98, + 2.02, 2.06, 2.10, 2.15, 2.19, 2.23, 2.27, 2.31, + 2.36, 2.4, 2.44, 2.48, 2.52, 2.57, 2.61, 2.65, + 2.69, 2.78, 2.86, 2.94, 3.03, 3.11, 3.2, 3.28, + 3.37, 3.45, 3.53, 3.62, 3.7, 3.87, 4.04, 4.21, + 4,37, 4.54, 4.71, 4.88, 5.05, 5.22, 5.38, 5.55, + 5.72, 6.06, 6.39, 6.73, 7.07, 7.4, 7.74, 8.08, + 8.41, 8.75, 9.08, 9.42, 9.76, 10.1, 10.8, 11.4, + 12.1, 12.8, 13.5, 14.1, 14.8, 15.5, 16.2, 16.8, + 17.5, 18.2, 19.5, 20.9, 22.2, 23.6, 24.9, 26.2, + 27.6, 28.9, 30.3, 31.6, 33.0, 34.3, 37.0, 39.7 +]; +let getXgRevTime = function (data) { + let a = 0.1, b = -0.3; + if (data > 66) { + a = 5, b = 315; + } else if (data > 56) { + a = 1, b = 47; + } else if (data > 46) { + a = 0.5, b = 18.5; + }; + return a * data - b; +}; +let getXgDelayOffset = function (data) { + if (data > 105) { + return xgDelOffset[data - 106]; + } else if (data > 100) { + return data * 1.1 - 100; + } else { + return data / 10; + }; +}; + +let xgSgVocals = `,a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.`.split(","); +let xgSgMap = {}; +`hi*, +ka,か +ki,き +ku,く +ke,け +ko,こ +ky,き! +kw,くl +tsu,つ +ts,つl +sa,さ +si,すぃ +su,す +se,せ +so,そ +shi,し +sh,し! +ta,た +ti,てぃ +tu,とぅ +te,て +to,と +tchy,ち! +tchi,ち +na,な +ni,に +nu,ぬ +ne,ね +no,の +ny,に! +nn,ん +ha,は +hi,ひ +hu,ほぅ +he,へ +ho,ほ +hy,ひ! +fa,ふぁ +fi,ふぃ +fu,ふ +fe,ふぇ +fo,ふぉ +ma,ま +mi,み +mu,む +me,め +mo,も +my,み! +mm, +ra,ら +ri,り +ru,る +re,れ +ro,ろ +ry,り! +wa,わ +wi,うぃ +we,うぇ +wo,を +nga,ガ +ngi,ギ +ngu,グ +nge,ゲ +ngo,ゴ +ngy,ギ! +ng, +ga,が +gi,ぎ +gu,ぐ +ge,げ +go,ご +gy,ぎ! +gw,ぐl +za,ざ +zi,ずぃ +zu,ず +ze,ぜ +zo,ぞ +ja,じゃ +ji,じ +ju,じゅ +je,じぇ +jo,じょ +jy,じ! +da,だ +di,でぃ +du,どぅ +de,で +do,ど +dy,で! +ba,ば +bi,び +bu,ぶ +be,べ +bo,ぼ +by,び! +va,ゔぁ +vi,ゔぃ +vu,ゔ +ve,ゔぇ +vo,ゔぉ +pa,ぱ +pi,ぴ +pu,ぷ +pe,ペ +po,ぽ +py,ぴ! +!ya,ゃ +!yu,ゅ +!ye,ぇ +!yo,ょ +ya,や +yu,ゆ +ye,いぇ +yo,よ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +!a,ゃ +!u,ゅ +!e,ぇ +!o,ょ +la,ぁ +li,ぃ +lu,ぅ +le,ぇ +lo,ぉ +a,あ +i,い +u,う +e,え +o,お +*,っ +~, +^, +_,`.split("\n").forEach((e) => { + let param = e.split(","); + xgSgMap[param[0]] = param[1]; +}); +let getSgKana = function (seq) { + let target = seq; + if (seq[0] == "*") { + target = target.slice(1); + }; + // Lengthened vowel remover + ["aa", "ii", "uu", "ee", "oo"].forEach((e) => { + while (target.indexOf(e) > -1) { + target = target.replace(e, e[0]); + }; + }); + // Replacement based on the conversion table + for (let mark in xgSgMap) { + target = target.replaceAll(mark, xgSgMap[mark]); + }; + // Removing the unnecessary ん prefix + if (target.indexOf("ん") == 0 && target.length > 1) { + target = target.slice(1); + }; + // Removing the trailing special charecters + let youOn = target.indexOf("!"); + if (youOn > -1 && target.length > 1) { + target = target.slice(youOn + 1); + }; + return target; +}; + +let getVlCtrlSrc = function (ctrlNo) { + if (!ctrlNo) { + return "off"; + } else if (ctrlNo < 96) { + return `cc${ctrlNo}`; + } else { + return ["aftertouch", "velocity", "pitch bend"][ctrlNo - 96]; + }; +}; + +export { + xgEffType, + xgPartMode, + xgSgVocals, + xgDelOffset, + xgNormFreq, + xgLfoFreq, + getSgKana, + getXgRevTime, + getXgDelayOffset, + getVlCtrlSrc +}; diff --git a/src/state_skim/index.mjs b/src/state_skim/index.mjs new file mode 100644 index 00000000..f5c4887f --- /dev/null +++ b/src/state_skim/index.mjs @@ -0,0 +1,1411 @@ +"use strict"; + +import {BinaryMatch} from "../../libs/lightfelt@ltgcgo/ext/binMatch.js"; +import {CustomEventSource} from "../../libs/lightfelt@ltgcgo/ext/customEvents.js"; +import {VoiceBank} from "../state/bankReader.js"; + +const modeIdx = [ + "?", + "gm", "gs", "xg", "g2", + "mt32", "ns5r", + "ag10", "x5d", "05rw", "krs", + "k11", "sg" +]; +const substList = [ + [0, 0, 0, 0, 121, 0, 0, 56, 82, 81, 63, 0, 0], + [0, 0, 4, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0] +]; +const drumMsb = [120, 127, 120, 127, 120, 127, 61, 62, 62, 62, 120, 122, 122]; +const passedMeta = [0, 3, 81, 84, 88]; // What is meta event 32? +const eventTypes = { + 8: "Off", + 9: "On", + 10: "Note aftertouch", + 11: "cc", + 12: "pc", + 13: "Channel aftertouch", + 14: "Pitch" +}; + +const useRpnMap = { + 0: 0, + 1: 1, + 2: 3, + 5: 4 +}, +rpnCap = [ + [0, 24], + [0, 127], + [0, 127], + [40, 88], + [0, 127], + [0, 127] +], +useNormNrpn = [36, 37], +useDrumNrpn = [20, 21, 22, 23, 24, 25, 26, 28, 29, 30, 31, 36, 37, 64, 65], +ccAccepted = [ + 0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 32, + 38, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 84, 91, + 92, 93, 94, 95, 98, 99, 100, 101, + 12, 13, // General-purpose effect controllers + 16, 17, 18, 19 // General-purpose sound controllers +], // 96, 97, 120 to 127 all have special functions +nrpnCcMap = [33, 99, 100, 32, 102, 8, 9, 10]; // cc71 to cc78 + +const korgDrums = [0, 16, 25, 40, 32, 64, 26, 48]; + +let modeMap = {}; +modeIdx.forEach((e, i) => { + modeMap[e] = i; +}); +let ccToPos = { + length: ccAccepted.length +}; +ccAccepted.forEach((e, i) => { + ccToPos[e] = i; +}); + +let getDebugState = function () { + return !!self.Bun || self.debugMode || false; // If run on Bun.js, output all possible logs +}; +let sysExSplitter = function (seq) { + let seqArr = []; + let seqStart = 0; + seq?.forEach(function (e, i) { + if (e == 247) { + // End of SysEx + seqArr.push(seq.subarray(seqStart, i)); + } else if (e == 240) { + seqStart = i + 1; + } else { + //seqArr[seqArr.length - 1].push(e); + }; + }); + if (!seqArr.length) { + seqArr.push(seq.subarray(0)); + }; + if (getDebugState()) { + //console.info(seqArr); + }; + return seqArr; +}; +let showTrue = function (data, prefix = "", suffix = "", length = 2) { + return data ? `${prefix}${data.toString().padStart(length, "0")}${suffix}` : ""; +}; + +const allocated = { + ch: 128, // channels + cc: ccAccepted.length, // control changes + nn: 128, // notes per channel + pl: 512, // polyphony + tr: 256, // tracks + cmt: 14, // C/M timbre storage size + rpn: 6, +}; + +let OctaviaDevice = class extends CustomEventSource { + // Values + #mode = 0; + #bitmapPage = 0; + #bitmapExpire = 0; + #bitmapStore = new Array(11); // 10 pages of bitmaps, 1 KORG bitmap + get #bitmap() { + return this.#bitmapStore[this.#bitmapPage]; + }; + set #bitmap(value) { + this.#bitmapStore[this.#bitmapPage] = value; + }; + #chActive = new Uint8Array(allocated.ch); // Whether the channel is in use + #chReceive = new Uint8Array(allocated.ch); // Determine the receiving channel + #cc = new Uint8ClampedArray(allocated.ch * allocated.cc); // 64 channels, 128 controllers + #prg = new Uint8ClampedArray(allocated.ch); + #velo = new Uint8ClampedArray(allocated.ch * allocated.nn); // 64 channels. 128 velocity registers + #mono = new Uint8Array(allocated.ch); // Mono/poly mode + #poly = new Uint16Array(allocated.pl); // 512 polyphony allowed + #polyState = new Uint8Array(allocated.pl); // State of each active voice. + #pitch = new Int16Array(allocated.ch); // Pitch for channels, from -8192 to 8191 + #rawStrength = new Uint8Array(allocated.ch); + #dataCommit = 0; // 0 for RPN, 1 for NRPN + #rpn = new Uint8Array(allocated.ch * allocated.rpn); // RPN registers (0 pitch MSB, 1 fine tune MSB, 2 fine tune LSB, 3 coarse tune MSB, 4 mod sensitivity MSB, 5 mod sensitivity LSB) + #nrpn = new Int8Array(allocated.ch * useNormNrpn.length); // Normal section of NRPN registers + #bnCustom = new Uint8Array(allocated.ch); // Custom name activation + #cmTPatch = new Uint8Array(128); // C/M part patch storage + #cmTTimbre = new Uint8Array(allocated.cmt * 8); // C/M part timbre storage + #cmPatch = new Uint8Array(1024); // C/M device patch storage + #cmTimbre = new Uint8Array(allocated.cmt * 64); // C/M device timbre storage (64) + #subMsb = 0; // Allowing global bank switching + #subLsb = 0; + #masterVol = 100; + #metaChannel = 0; + #noteLength = 500; + #convertLastSyllable = 0; + #letterDisp = ""; + #letterExpire = 0; + #selectPort = 0; + #receiveRS = true; // Receive remote switch + #modeKaraoke = false; + #receiveTree; + // Temporary EFX storage + #gsEfxSto = new Uint8Array(2); + // Metadata text events + #metaTexts = []; + // GS Track Occupation + #trkRedir = new Uint8Array(allocated.ch); + #trkAsReq = new Uint8Array(allocated.tr); // Track Assignment request + baseBank = new VoiceBank("gm", "gm2", "xg", "gs", "ns5r", "gmega", "plg-150vl", "plg-150pf", "plg-150dx", "plg-150an", "plg-150dr", "plg-100sg", "kross"); // Load all possible voice banks + userBank = new VoiceBank("gm"); // User-defined bank for MT-32, X5DR and NS5R + initOnReset = false; // If this is true, Octavia will re-init upon mode switches + chRedir(part, track, noConquer) { + if (this.#trkAsReq[track]) { + // Allow part assigning via meta + let metaChosen = (this.#trkAsReq[track] - 1) * 16 + part; + return metaChosen; + } else if ([modeMap.gs, modeMap.ns5r].indexOf(this.#mode) > -1) { + // Do not conquer channels if requested. + if (noConquer == 1) { + return part; + }; + let shift = 0, unmet = true; + while (unmet) { + if (this.#trkRedir[part + shift] == 0) { + this.#trkRedir[part + shift] = track; + console.debug(`Assign track ${track} to channel ${part + shift + 1}.`); + unmet = false; + } else if (this.#trkRedir[part + shift] == track) { + unmet = false; + } else { + shift += 16; + if (shift >= 128) { + shift = 0; + unmet = false; + }; + }; + }; + return part + shift; + } else { + return part; + }; + }; + // Exec Pools + // Meta event pool + #metaRun = []; + // Sequencer specific meta pool + #metaSeq; + // Universal actions + #ua = { + nOff: (part, note) => { + // Note off + let rawNote = part * 128 + note; + let polyIdx = this.#poly.lastIndexOf(rawNote); + if (polyIdx > -1) { + if (this.#cc[allocated.cc * part + ccToPos[64]] > 63 && !this.config?.disableCc64) { + // Held by cc64 + this.#polyState[polyIdx] = 4; + } else { + this.#poly[polyIdx] = 0; + this.#velo[rawNote] = 0; + this.#polyState[polyIdx] = 0; + }; + }; + }, + nOn: (part, note, velo) => { + // Note on + let rawNote = part * 128 + note; + let place = 0; + if (this.#mono[part]) { + // Shut all previous notes off in mono mode + this.#ua.ano(part); + }; + while (this.#polyState[place] > 0 && this.#poly[place] != rawNote) { + // If just by judging whether a polyphonic voice is occupied, + // "multi" mode is considered active. + // If "rawNote" is also taken into consideration, + // this will be "single" mode instead. + // 0: idle + // 1: attack + // 2: decay + // 3: sustain (active) + // 4: hold + // 5: sostenuto sustain + // 6: sostenuto hold + // 7: release + place ++; + }; + if (place < allocated.pl) { + this.#poly[place] = rawNote; + this.#velo[rawNote] = velo; + this.#polyState[place] = 3; + if (this.#rawStrength[part] < velo) { + this.#rawStrength[part] = velo; + }; + //console.debug(place); + } else { + console.error("Polyphony exceeded."); + }; + }, + nAt: (part, note, velo) => { + // Note/polyphonic aftertouch + }, + cAt: (part, velo) => { + // Channel aftertouch + }, + hoOf: (part) => { + // Scan and turn off all notes held by cc64 + this.#polyState.forEach((e, i) => { + if (e == 4) { + // Held by cc64 + let rawNote = this.#poly[i]; + let channel = rawNote >> 7; + if (part == channel) { + this.#polyState[i] = 0; + this.#poly[i] = 0; + this.#velo[rawNote] = 0; + }; + }; + }); + }, + soOf: (part) => { + // Scan and turn off all notes held by cc66 + }, + ano: (part) => { + // All notes off + // Current implementation uses the static velocity register + this.#poly.forEach((e, i, a) => { + let ch = e >> 7, no = e & 127; + if (e == 0 && this.#velo[0] == 0) { + } else if (ch == part) { + this.#ua.nOff(ch, no); + }; + }); + } + }; + // Channel event pool + #runChEvent = { + 8: function (det) { + let part = det.channel; + // Note off, velocity should be ignored. + let rawNote = det.data[0]; + this.#ua.nOff(part, rawNote); + }, + 9: function (det) { + let part = det.channel; + // Note on, but should be off if velocity is 0. + // Set channel active + this.#chActive[part] = 1; + let rawNote = det.data[0]; + let velocity = det.data[1]; + if (velocity > 0) { + this.#ua.nOn(part, rawNote, velocity); + } else { + this.#ua.nOff(part, rawNote); + }; + }, + 10: function (det) { + let part = det.channel; + // Note aftertouch. + // Currently it directly changes velocity to set value. + let rawNote = part * 128 + det.data[0]; + let polyIdx = this.#poly.indexOf(rawNote); + if (polyIdx > -1) { + this.#velo[rawNote] = data[1]; + }; + }, + 11: function (det) { + let part = det.channel; + // CC event, directly assign values to the register. + this.#chActive[part] = 1; + let chOffset = part * allocated.cc; + // Non-store CC messages + switch (det.data[0]) { + case 96: { + // RPN Data increment + return; + break; + }; + case 97: { + // RPN Data decrement + return; + break; + }; + case 120: { + // All sound off, but keys stay on + return; + break; + }; + case 121: { + // Reset controllers + this.#ua.ano(part); + this.#pitch[part] = 0; + let chOff = part * allocated.cc; + // Reset to zero + this.#cc[chOff + ccToPos[1]] = 0; // Modulation + this.#cc[chOff + ccToPos[5]] = 0; // Portamento Time + this.#cc[chOff + ccToPos[64]] = 0; // Sustain + this.#cc[chOff + ccToPos[65]] = 0; // Portamento + this.#cc[chOff + ccToPos[66]] = 0; // Sostenuto + this.#cc[chOff + ccToPos[67]] = 0; // Soft Pedal + // Reset to full + this.#cc[chOff + ccToPos[11]] = 127; // Expression + // RPN/NRPN to null + this.#cc[chOff + ccToPos[101]] = 127; + this.#cc[chOff + ccToPos[100]] = 127; + this.#cc[chOff + ccToPos[99]] = 127; + this.#cc[chOff + ccToPos[98]] = 127; + return; + break; + }; + case 123: { + // All notes off + this.#ua.ano(part); + return; + break; + }; + case 124: { + // Omni off + this.#ua.ano(part); + return; + break; + }; + case 125: { + // Omni on + this.#ua.ano(part); + return; + break; + }; + case 126: { + // Mono mode + this.#mono[part] = 1; + this.#ua.ano(part); + return; + break; + }; + case 127: { + // Poly mode + this.#mono[part] = 0; + this.#ua.ano(part); + return; + break; + }; + }; + // Check if control change is accepted + if (ccToPos[det.data[0]] == undefined) { + console.warn(`cc${det.data[0]} is not accepted.`); + } else { + // Stored CC messages + switch (det.data[0]) { + case 0: { + // Detect mode via bank MSB + if (getDebugState()) { + console.debug(`${modeIdx[this.#mode]}, CH${part + 1}: ${det.data[1]}`); + }; + if (this.#mode == 0) { + if (det.data[1] < 48) { + // Do not change drum channel to a melodic + if (this.#cc[chOffset] > 119) { + det.data[1] = this.#cc[chOffset]; + det.data[1] = 120; + console.debug(`Forced channel ${part + 1} to stay drums.`); + }; + if (det.data[1] > 0) { + console.debug(`Roland GS detected with MSB: ${det.data[1]}`); + this.switchMode("gs"); + }; + } else if (det.data[1] == 62) { + this.switchMode("x5d"); + } else if (det.data[1] == 63) { + this.switchMode("krs"); + } else if (det.data[1] == 64 || det.data[1] == 127) { + this.switchMode("xg"); + }; + } else if (this.#mode == modeMap.gs) { + if (det.data[1] < 56) { + // Do not change drum channel to a melodic + if (this.#cc[chOffset] > 119) { + det.data[1] = this.#cc[chOffset]; + det.data[1] = 120; + console.debug(`Forced channel ${part + 1} to stay drums.`); + }; + }; + } else if (this.#mode == modeMap.gm) { + if (det.data[1] < 48) { + // Do not change drum channel to a melodic + if (this.#cc[chOffset] > 119) { + det.data[1] = 120; + this.switchMode("gs", true); + console.debug(`Forced channel ${part + 1} to stay drums.`); + }; + } else if (det.data[1] == 64 || det.data[1] == 127) { + this.switchMode("xg", true); + }; + } else if (this.#mode == modeMap.x5d) { + if (det.data[1] > 0 && det.data[1] < 8) { + this.switchMode("05rw", true); + } else if (det.data[1] == 56) { + let agCount = 0; + for (let c = 0; c < 16; c ++) { + let d = this.#cc[allocated.cc * c]; + if (d == 56 || d == 62) { + agCount ++; + }; + }; + if (agCount > 14) { + this.switchMode("ag10", true); + }; + }; + }; + break; + }; + case 6: { + // Show RPN and NRPN + if (this.#dataCommit) { + let msb = this.#cc[chOffset + ccToPos[99]], + lsb = this.#cc[chOffset + ccToPos[98]]; + if (msb == 1) { + let toCc = nrpnCcMap.indexOf(lsb); + if (toCc > -1) { + this.#cc[chOffset + ccToPos[71 + toCc]] = det.data[1]; + getDebugState() && console.debug(`Redirected NRPN 1 ${lsb} to cc${71 + toCc}.`); + } else { + let nrpnIdx = useNormNrpn.indexOf(lsb); + if (nrpnIdx > -1) { + this.#nrpn[part * 10 + nrpnIdx] = det.data[1] - 64; + }; + getDebugState() && console.debug(`CH${part + 1} voice NRPN ${lsb} commit`); + }; + } else { + //console.debug(`CH${part + 1} drum NRPN ${msb} commit`); + }; + } else { + // Commit supported RPN values + let rpnIndex = useRpnMap[this.#cc[chOffset + ccToPos[100]]]; + if (this.#cc[chOffset + ccToPos[101]] == 0 && rpnIndex != undefined) { + getDebugState() && console.debug(`CH${part + 1} RPN 0 ${this.#cc[chOffset + ccToPos[100]]} commit: ${det.data[1]}`); + det.data[1] = Math.min(Math.max(det.data[1], rpnCap[rpnIndex][0]), rpnCap[rpnIndex][1]); + this.#rpn[part * allocated.rpn + rpnIndex] = det.data[1]; + }; + }; + break; + }; + case 38: { + // Show RPN and NRPN + if (!this.#dataCommit) { + // Commit supported RPN values + if (this.#cc[chOffset + 101] == 0 && useRpnMap[this.#cc[chOffset + 100]] != undefined) { + this.#rpn[part * allocated.rpn + useRpnMap[this.#cc[chOffset + 100]] + 1] = det.data[1]; + }; + } else { + //console.debug(`${part + 1} LSB ${det.data[1]} ${this.#dataCommit ? "NRPN" : "RPN"} ${this.#dataCommit ? this.#cc[chOffset + 99] : this.#cc[chOffset + 101]} ${this.#dataCommit ? this.#cc[chOffset + 98] : this.#cc[chOffset + 100]}`); + }; + break; + }; + case 64: { + // cc64: hold + if (det.data[1] < 64) { + this.#ua.hoOf(part); + }; + break; + }; + case 66: { + // cc66: sostenuto + console.debug(`Sostenuto pedal: ${det.data[1]}`); + break; + }; + case 98: + case 99: { + this.#dataCommit = 1; + break; + }; + case 100: + case 101: { + this.#dataCommit = 0; + break; + }; + }; + this.#cc[chOffset + ccToPos[det.data[0]]] = det.data[1]; + }; + }, + 12: function (det) { + let part = det.channel; + // Program change + this.#chActive[part] = 1; + this.#prg[part] = det.data; + this.#bnCustom[part] = 0; + if (getDebugState()) { + console.debug(`T:${det.track} C:${part} P:${det.data}`); + }; + }, + 13: function (det) { + // Channel aftertouch + let upThis = this; + let part = det.channel; + this.#poly.forEach(function (e) { + let realCh = e >> 7; + if (part == realCh) { + upThis.#velo[e] = det.data; + }; + }); + }, + 14: function (det) { + let part = det.channel; + // Pitch bending + this.#pitch[part] = det.data[1] * 128 + det.data[0] - 8192; + }, + 15: function (det) { + // SysEx + sysExSplitter(det.data).forEach((seq) => { + let manId = seq[0], + deviceId = seq[1]; + (this.#seMan[manId] || function () { + console.debug(`Unknown manufacturer ${manId}.`); + })(deviceId, seq.subarray(2), det.track); + //upThis.#seMain.run(seq, det.track); + }); + }, + 248: function (det) { + // MIDI clock + }, + 250: function (det) { + // MIDI start + }, + 251: function (det) { + // MIDI continue + }, + 252: function (det) { + // MIDI stop + }, + 254: function (det) { + // Active sense + }, + 255: function (det) { + // Meta + (this.#metaRun[det.meta] || function (data, track, meta) {}).call(this, det.data, det.track, det.meta); + if (det.meta != 32) { + this.#metaChannel = 0; + }; + let useReply = passedMeta.indexOf(det.meta) > -1; + if (useReply) { + det.reply = "meta"; + return det; + } else if (getDebugState()) { + console.debug(det); + }; + } + }; + // SysEx manufacturer table + #seMan = { + 64: (id, msg, track) => { + // Kawai + this.#seKg.run(msg, track, id); + }, + 65: (id, msg, track) => { + // Roland + // CmdId is usually 18 (DT1) + // D-50: [20, CmdId] + // C/M: [22, CmdId] + // GS: [66, CmdId, HH, MM, LL, ...DD, Checksum] + if (msg[0] < 16) { + this.#seGs.run(msg, track, id); + console.warn(`Unknown device SysEx!`); + } else { + let sentCs = msg[msg.length - 1]; + let calcCs = gsChecksum(msg.subarray(2, msg.length - 1)); + if (sentCs == calcCs) { + this.#seGs.run(msg.subarray(0, msg.length - 1), track, id); + } else { + console.warn(`Bad GS checksum ${sentCs}. Should be ${calcCs}.`); + }; + }; + }, + 66: (id, msg, track) => { + // Korg + this.#seAi.run(msg, track, id); + }, + 67: (id, msg, track) => { + // Yamaha + // XG: [76, HH, MM, LL, ...DD] + this.#seXg.run(msg, track, id); + }, + 68: (id, msg, track) => { + // Casio + this.#seCs.run(msg, track, id); + }, + 71: (id, msg, track) => { + // Akai + this.#seSg.run(msg, track, id); + }, + 126: (id, msg, track) => { + // Universal non-realtime + this.#seUnr.run(msg, track, id); + }, + 127: (id, msg, track) => { + // Universal realtime + this.switchMode("gm"); + this.#seUr.run(msg, track, id); + } + }; + #seUnr; // Universal non-realtime + #seUr; // Universal realtime + #seXg; // YAMAHA + #seGs; // Roland + #seAi; // KORG + #seKg; // Kawai + #seSg; // Akai + #seCs; // Casio + buildRchTree() { + // Build a receiving tree from currently set receive channels + // Now builds from the ground up each time + // Can be optimized to move elements instead + let tree = []; + this.#chReceive.forEach((e, i) => { + if (!tree[e]?.constructor) { + tree[e] = []; + }; + tree[e].push(i); + }); + this.#receiveTree = tree; + //console.debug(tree); + }; + getActive() { + let result = this.#chActive.slice(); + if (this.#mode == modeMap.mt32) { + //result[0] = 0; + }; + return result; + }; + getCc(channel) { + // Return channel CC registers + let start = channel * allocated.cc; + let arr = this.#cc.slice(start, start + allocated.cc); + arr[ccToPos[0]] = arr[ccToPos[0]] || this.#subMsb; + arr[ccToPos[32]] = arr[ccToPos[32]] || this.#subLsb; + return arr; + }; + getCcAll() { + // Return all CC registers + let arr = this.#cc.slice(); + for (let c = 0; c < allocated.ch; c ++) { + let chOff = c * allocated.cc; + arr[chOff + ccToPos[0]] = arr[chOff + ccToPos[0]] || this.#subMsb; + arr[chOff + ccToPos[32]] = arr[chOff + ccToPos[32]] || this.#subLsb; + }; + return arr; + }; + getPitch() { + return this.#pitch; + }; + getProgram() { + return this.#prg; + }; + getTexts() { + return this.#metaTexts.slice(); + }; + getVel(channel) { + // Return all pressed keys with velocity in a channel + let notes = new Map(); + let upThis = this; + upThis.#poly.forEach(function (e, i) { + let realCh = Math.floor(e / 128), + realNote = e % 128; + if (channel == realCh && upThis.#velo[e] > 0) { + notes.set(realNote, { + v: upThis.#velo[e], // Short for velocity + s: upThis.#polyState[i] // Short for state + }); + }; + }); + return notes; + }; + getBitmap() { + return { + bitmap: this.#bitmap, + expire: this.#bitmapExpire + }; + }; + getLetter() { + return { + text: this.#letterDisp, + expire: this.#letterExpire + }; + }; + getMode() { + return modeIdx[this.#mode]; + }; + getMaster() { + return { + volume: this.#masterVol + }; + }; + getRawStrength() { + // 0 to 127 + let upThis = this; + this.#poly.forEach(function (e) { + let channel = Math.floor(e / 128); + if (upThis.#velo[e] > upThis.#rawStrength[channel]) { + upThis.#rawStrength[channel] = upThis.#velo[e]; + }; + }); + return this.#rawStrength; + }; + getStrength() { + // 0 to 255 + let str = [], upThis = this; + this.getRawStrength().forEach(function (e, i) { + str[i] = Math.floor(e * upThis.#cc[i * allocated.cc + ccToPos[7]] * upThis.#cc[i * allocated.cc + ccToPos[11]] * upThis.#masterVol / 803288); + }); + return str; + }; + getRpn() { + return this.#rpn; + }; + getNrpn() { + return this.#nrpn; + }; + getVoice(msbO, prgO, lsbO, mode) { + let msb = msbO || this.#subMsb, + prg = prgO, + lsb = lsbO || this.#subLsb; + if (modeIdx[this.#mode] == "ns5r") { + if (msb > 0 && msb < 56) { + lsb = 3; // Use SC-88 Pro map + }; + }; + let bank = this.userBank.get(msb, prg, lsb, mode); + if (modeIdx[this.#mode] == "mt32") { + // Reload MT-32 user bank transparently + if (bank.name.indexOf("MT-m:") == 0) { + // Device patch + let patch = parseInt(bank.name.slice(5)), + timbreOff = patch * allocated.cmt, + userBank = ""; + this.#cmTimbre.subarray(timbreOff, timbreOff + 10).forEach((e) => { + if (e > 31) { + userBank += String.fromCharCode(e); + }; + }); + this.userBank.load(`MSB\tLSB\tPRG\n0\t127\t${prg}\t${userBank}`, true); + bank.name = userBank; + bank.ending = " "; + }; + }; + if (bank.ending != " " || !bank.name.length) { + bank = this.baseBank.get(msb, prg, lsb, mode); + }; + return bank; + }; + getChVoice(part) { + let voice = this.getVoice(this.#cc[part * allocated.cc + ccToPos[0]], this.#prg[part], this.#cc[part * allocated.cc + ccToPos[32]], modeIdx[this.#mode]); + if (this.#bnCustom[part]) { + switch (this.#mode) { + case modeMap.mt32: { + voice.ending = "~"; + voice.name = ""; + this.#cmTTimbre.subarray(14 * (part - 1), 14 * (part - 1) + 10).forEach((e) => { + if (e > 31) { + voice.name += String.fromCharCode(e); + }; + }); + }; + }; + }; + return voice; + }; + init(type = 0) { + // Type 0 is full reset + // Type 1 is almost-full reset + // Full reset, except the loaded banks + this.dispatchEvent("mode", "?"); + this.#mode = 0; + this.#subMsb = 0; + this.#subLsb = 0; + this.#metaChannel = 0; + this.#chActive.fill(0); + this.#cc.fill(0); + this.#prg.fill(0); + this.#velo.fill(0); + this.#poly.fill(0); + this.#rawStrength.fill(0); + this.#pitch.fill(0); + this.#nrpn.fill(0); + this.#masterVol = 100; + this.#metaTexts = []; + this.#noteLength = 500; + this.#convertLastSyllable = 0; + this.#letterExpire = 0; + this.#letterDisp = ""; + this.#bitmapExpire = 0; + this.#bitmapPage = 0; + this.#bitmap.fill(0); + this.#modeKaraoke = false; + this.#selectPort = 0; + this.#receiveRS = true; + // Reset MIDI receive channel + this.#chReceive.forEach(function (e, i, a) { + a[i] = i; + }); + this.buildRchTree(); + // Reset channel redirection + if (type == 0) { + this.#trkRedir.fill(0); + this.#trkAsReq.fill(0); + }; + // Channel 10 to drum set + this.#cc[allocated.cc * 9] = drumMsb[0]; + this.#cc[allocated.cc * 25] = drumMsb[0]; + this.#cc[allocated.cc * 41] = drumMsb[0]; + this.#cc[allocated.cc * 57] = drumMsb[0]; + // Reset effect storage + this.#gsEfxSto.fill(0); + // Reset MT-32 user patch and timbre storage + this.#cmPatch.fill(0); + this.#cmTimbre.fill(0); + this.#cmTPatch.fill(0); + this.#cmTTimbre.fill(0); + this.#bnCustom.fill(0); + // Reset MT-32 user bank + this.userBank.clearRange({msb: 0, lsb: 127, prg: [0, 127]}); + for (let ch = 0; ch < allocated.ch; ch ++) { + let chOff = ch * allocated.cc; + // Reset to full + this.#cc[chOff + ccToPos[7]] = 100; // Volume + this.#cc[chOff + ccToPos[11]] = 127; // Expression + // Reset to centre + this.#cc[chOff + ccToPos[10]] = 64; // Pan + this.#cc[chOff + ccToPos[71]] = 64; // Resonance + this.#cc[chOff + ccToPos[72]] = 64; // Release Time + this.#cc[chOff + ccToPos[73]] = 64; // Attack Time + this.#cc[chOff + ccToPos[74]] = 64; // Brightness + this.#cc[chOff + ccToPos[75]] = 64; // Decay Time + this.#cc[chOff + ccToPos[76]] = 64; // Vibrato Rate + this.#cc[chOff + ccToPos[77]] = 64; // Vibrato Depth + this.#cc[chOff + ccToPos[78]] = 64; // Vibrato Delay + // Extra default values + this.#cc[chOff + ccToPos[91]] = 40; // Reverb + // RPN/NRPN to null + this.#cc[chOff + ccToPos[101]] = 127; + this.#cc[chOff + ccToPos[100]] = 127; + this.#cc[chOff + ccToPos[99]] = 127; + this.#cc[chOff + ccToPos[98]] = 127; + // RPN reset + let rpnOff = ch * allocated.rpn; + this.#rpn[rpnOff] = 2; // Pitch bend sensitivity + this.#rpn[rpnOff + 1] = 64; // Fine tune MSB + this.#rpn[rpnOff + 2] = 0; // Fine tune LSB + this.#rpn[rpnOff + 3] = 64; // Coarse tune MSB + this.#rpn[rpnOff + 4] = 0; // Mod sensitivity MSB + this.#rpn[rpnOff + 5] = 0; // Mod sensitivity LSB + // NRPN drum section reset + }; + return; + }; + switchMode(mode, forced = false) { + let idx = modeIdx.indexOf(mode); + if (idx > -1) { + if (this.#mode == 0 || forced) { + this.#mode = idx; + this.#bitmapPage = 0; // Restore page + this.#subMsb = substList[0][idx]; + this.#subLsb = substList[1][idx]; + for (let ch = 0; ch < allocated.ch; ch ++) { + if (drumMsb.indexOf(this.#cc[ch * allocated.cc]) > -1) { + this.#cc[ch * allocated.cc] = drumMsb[idx]; + }; + //this.initOnReset && forced && this.#ua.ano(ch); + }; + if (this.initOnReset && forced) { + //this.init(1); + }; + switch (idx) { + case modeMap.mt32: { + mt32DefProg.forEach((e, i) => { + let ch = i + 1; + if (!this.#chActive[ch]) { + this.#prg[ch] = e; + this.#cc[ch * allocated.cc + ccToPos[91]] = 127; + }; + }); + break; + }; + }; + this.dispatchEvent("mode", mode); + }; + } else { + throw(new Error(`Unknown mode ${mode}`)); + }; + }; + newStrength() { + this.#rawStrength.fill(0); + }; + runJson(json) { + // Execute transformed JSON event + if (json.type > 14) { + if (json.type == 15 && json.data.constructor != Uint8Array) { + json.data = Uint8Array.from(json.data); + }; + return this.#runChEvent[json.type].call(this, json); + } else { + // Universal MIDI channel receive support. + let rcvPart = this.chRedir(json.part, json.track), + executed = false; + this.#receiveTree[rcvPart]?.forEach((e) => { + json.channel = e; + executed = true; + this.#runChEvent[json.type].call(this, json); + }); + /* this.#chReceive.forEach((e, i) => { + if (e == rcvPart) { + //json.channel = this.chRedir(i, json.track); + json.channel = i; + executed = true; + this.#runChEvent[json.type].call(this, json); + }; + }); */ + if (!executed) { + console.warn(`${eventTypes[json.type] ? eventTypes[json.type] : json.type}${[11, 12].includes(json.type) ? (json.data[0] != undefined ? json.data[0] : json.data).toString() : ""} event sent to CH${rcvPart + 1} without any recipient.`); + }; + }; + if (this.#metaTexts.length > 100) { + this.#metaTexts.splice(100, this.#metaTexts.length - 99); + }; + }; + runRaw(midiArr) { + // Translate raw byte stream into JSON MIDI event + }; + constructor() { + super(); + let upThis = this; + this.#bitmap = new Uint8Array(256); + this.#bitmapStore[10] = new Uint8Array(512); + this.#metaSeq = new BinaryMatch(); + this.userBank.strictMode = true; + // Prevent bank readers from getting stalled + this.userBank.load(`MSB\tPRG\tLSB\tNME\n062\t000\t000\t\n122\t000\t000\t\n122\t001\t000\t\n122\t002\t000\t\n122\t003\t000\t\n122\t004\t000\t\n122\t005\t000\t\n122\t006\t000\t`); + // Metadata events + // Should be moved to somewhere else + this.#metaRun[1] = function (data) { + // Normal text + switch (data.slice(0, 2)) { + case "@I": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Kar.Info: ${data.slice(2)}`); + break; + }; + case "@K": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Karaoke mode active.`); + console.debug(`Karaoke mode active: ${data.slice(2)}`); + break; + }; + case "@L": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Language: ${data.slice(2)}`); + break; + }; + case "@T": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Ka.Title: ${data.slice(2)}`); + break; + }; + case "@V": { + this.#modeKaraoke = true; + this.#metaTexts.unshift(`Kara.Ver: ${data.slice(2)}`); + break; + }; + case "XF": { + // XG File Data section + let dataArr = data.slice(2).split(":"); + switch (dataArr[0]) { + case "hd": { + dataArr.slice(1).forEach((e, i) => { + e.length && this.#metaTexts.unshift(`${[ + "SongDate", "SnRegion", "SongCat.", "SongBeat", + "SongInst", "Sn.Vocal", "SongCmp.", "SongLrc.", + "SongArr.", "SongPerf", "SongPrg.", "SongTags" + ][i]}: ${e}`); + }); + break; + }; + case "ln": { + dataArr.slice(1).forEach((e, i) => { + e.length && this.#metaTexts.unshift(`${[ + "Kar.Lang", "Kar.Name", "Kar.Cmp.", "Kar.Lrc.", + "kar.Arr.", "Kar.Perf", "Kar.Prg." + ][i]}: ${e}`); + }); + break; + }; + default: { + this.#metaTexts.unshift(`XGF_Data: ${data}`); + }; + }; + break; + }; + default: { + if (this.#modeKaraoke) { + if (data[0] == "\\") { + // New section + this.#metaTexts.unshift(`@ ${data.slice(1)}`); + } else if (data[0] == "/") { + // New line + this.#metaTexts.unshift(data.slice(1)); + } else { + // Normal append + this.#metaTexts[0] += data; + }; + } else { + this.#metaTexts[0] = data; + this.#metaTexts.unshift(""); + }; + }; + }; + }; + this.#metaRun[2] = function (data) { + this.#metaTexts.unshift(`Copyrite: ${data}`); + }; + this.#metaRun[3] = function (data, track) { + // Filter overly annoying meta events + if (track < 1 && this.#metaChannel < 1) { + this.#metaTexts.unshift(`TrkTitle: ${data}`); + }; + }; + this.#metaRun[4] = function (data, track) { + //if (track < 1 && this.#metaChannel < 1) { + this.#metaTexts.unshift(`${showTrue(this.#metaChannel, "", " ")}Instrmnt: ${data}`); + //}; + }; + this.#metaRun[5] = function (data) { + if (data.trim() == "") { + this.#metaTexts.unshift(""); + } else { + this.#metaTexts[0] += `${data}`; + }; + }; + this.#metaRun[6] = function (data) { + this.#metaTexts.unshift(`${showTrue(this.#metaChannel, "", " ")}C.Marker: ${data}`); + }; + this.#metaRun[7] = function (data) { + this.#metaTexts.unshift(`CuePoint: ${data}`); + }; + this.#metaRun[32] = function (data) { + this.#metaChannel = data[0] + 1; + }; + this.#metaRun[33] = function (data, track) { + console.debug(`Track ${track} requests to get assigned to output ${data}.`); + upThis.#trkAsReq[track] = data + 1; + }; + this.#metaRun[81] = function (data, track) { + upThis.#noteLength = data / 1000; + }; + this.#metaRun[127] = function (data, track) { + //console.debug(`Sequencer specific on track ${track}: `, data); + upThis.#metaSeq.run(data, track); + }; + // Sequencer specific meta event + // No refactoring needed. + this.#metaSeq.default = function (seq) { + console.warn(`Unrecognized sequencer-specific byte sequence: ${seq}`); + }; + this.#metaSeq.add([67, 0, 1], function (msg, track) { + //console.debug(`XGworks requests assigning track ${track} to output ${msg[0]}.`); + upThis.#trkAsReq[track] = msg[0] + 1; + }); + // Binary match should be avoided in favour of a circular structure + this.#seUnr = new BinaryMatch(); + this.#seUr = new BinaryMatch(); + this.#seXg = new BinaryMatch(); + this.#seGs = new BinaryMatch(); + this.#seAi = new BinaryMatch(); + this.#seKg = new BinaryMatch(); + this.#seSg = new BinaryMatch(); + // The new SysEx engine only defines actions when absolutely needed. + // Mode reset section + this.#seUnr.add([9], (msg) => { + // General MIDI reset. + upThis.switchMode(["gm", "?", "g2"][msg[0] - 1], true); + upThis.#modeKaraoke = upThis.#modeKaraoke || false; + console.info(`MIDI reset: ${["GM", "Init", "GM2"][msg[0] - 1]}`); + if (msg[0] == 2) { + upThis.init(); + }; + }); + // GM SysEx section + this.#seUr.add([4, 1], (msg) => { + // Master volume + upThis.#masterVol = ((msg[1] << 7) + msg[0]) / 16383 * 100; + }).add([4, 3], (msg) => { + // Master fine tune + return (((msg[1] << 7) + msg[0] - 8192) / 8192); + }).add([4, 4], (msg) => { + // Master coarse tune + return (msg[1] - 64); + }); + // XG SysEx section + this.#seXg.add([76, 0, 0], (msg) => { + switch (msg[0]) { + case 126: { + // Yamaha XG reset + upThis.switchMode("xg", true); + upThis.#modeKaraoke = false; + console.info("MIDI reset: XG"); + break; + }; + }; + }).add([76, 6, 0], (msg) => { + // XG Letter Display + let offset = msg[0]; + if (offset < 64) { + upThis.#letterDisp = " ".repeat(offset); + upThis.#letterExpire = Date.now() + 3200; + msg.subarray(1).forEach(function (e) { + upThis.#letterDisp += String.fromCharCode(e); + }); + upThis.#letterDisp = upThis.#letterDisp.padEnd(32, " "); + } else { + // Expire all existing letter display + upThis.#letterExpire = Date.now(); + }; + }).add([76, 7, 0], (msg) => { + // XG Bitmap Display + let offset = msg[0]; + upThis.#bitmapExpire = Date.now() + 3200; + upThis.#bitmap.fill(0); // Init + let workArr = msg.subarray(1); + for (let index = 0; index < offset; index ++) { + workArr.unshift(0); + }; + workArr.forEach(function (e, i) { + let ln = Math.floor(i / 16), co = i % 16; + let pt = (co * 3 + ln) * 7, threshold = 7, bi = 0; + pt -= co * 5; + if (ln == 2) { + threshold = 2; + }; + while (bi < threshold) { + upThis.#bitmap[pt + bi] = (e >> (6 - bi)) & 1; + bi ++; + }; + }); + }); + // XG drum setup would be blank for now + // TG300 SysEx section, the parent of XG + this.#seXg.add([43, 7, 0], (msg, track, id) => { + // TG300 display letter + // Same as XG letter display + upThis.#letterDisp = " ".repeat(offset); + upThis.#letterExpire = Date.now() + 3200; + msg.subarray(1).forEach(function (e) { + upThis.#letterDisp += String.fromCharCode(e); + }); + upThis.#letterDisp = upThis.#letterDisp.padEnd(32, " "); + }).add([43, 7, 1], (msg, track, id) => { + // TG300 display bitmap + // Same as XG bitmap display + upThis.#bitmapExpire = Date.now() + 3200; + upThis.#bitmap.fill(0); // Init + msg.forEach(function (e, i) { + let ln = Math.floor(i / 16), co = i % 16; + let pt = (co * 3 + ln) * 7, threshold = 7, bi = 0; + pt -= co * 5; + if (ln == 2) { + threshold = 2; + }; + while (bi < threshold) { + upThis.#bitmap[pt + bi] = (e >> (6 - bi)) & 1; + bi ++; + }; + }); + }); + // TG drum setup would also be blank + // GS SysEx section + this.#seGs.add([66, 18, 0, 0, 127], (msg, track, id) => { + // GS mode set + upThis.switchMode("gs", true); + upThis.#cc[allocated.cc * 9] = 120; + upThis.#cc[allocated.cc * 25] = 120; + upThis.#cc[allocated.cc * 41] = 120; + upThis.#cc[allocated.cc * 57] = 120; + upThis.#subLsb = 3; // Use SC-88 Pro map by default + upThis.#modeKaraoke = false; + upThis.#trkRedir.fill(0); + console.info(`GS system to ${["single", "dual"][msg[0]]} mode.`); + }).add([66, 18, 64, 0], (msg, track, id) => { + switch (msg[0]) { + case 127: { + // Roland GS reset + upThis.switchMode("gs", true); + upThis.#cc[allocated.cc * 9] = 120; + upThis.#cc[allocated.cc * 25] = 120; + upThis.#cc[allocated.cc * 41] = 120; + upThis.#cc[allocated.cc * 57] = 120; + upThis.#modeKaraoke = false; + upThis.#trkRedir.fill(0); + console.info("MIDI reset: GS"); + break; + }; + }; + }).add([69, 18, 16], (msg) => { + // GS display section + switch (msg[0]) { + case 0: { + // GS display letter + upThis.#letterExpire = Date.now() + 3200; + let offset = msg[1]; + upThis.#letterDisp = " ".repeat(offset); + msg.subarray(2).forEach(function (e) { + if (e < 128) { + upThis.#letterDisp += String.fromCharCode(e); + }; + }); + break; + }; + case 32: { + upThis.#bitmapExpire = Date.now() + 3200; + if (msg[1] == 0) { + // GS display page + upThis.#bitmapPage = Math.max(Math.min(msg[2] - 1, 9), 0); + }; + break; + }; + default: { + if (msg[0] < 11) { + // GS display bitmap + upThis.#bitmapExpire = Date.now() + 3200; + if (!upThis.#bitmapStore[msg[0] - 1]?.length) { + upThis.#bitmapStore[msg[0] - 1] = new Uint8Array(256); + }; + let target = upThis.#bitmapStore[msg[0] - 1]; + let offset = msg[1]; + target.fill(0); // Init + let workArr = msg.subarray(2); + for (let index = 0; index < offset; index ++) { + workArr.unshift(0); + }; + workArr.forEach(function (e, i) { + let ln = Math.floor(i / 16), co = i % 16; + let pt = (co * 4 + ln) * 5, threshold = 5, bi = 0; + pt -= co * 4; + if (ln == 3) { + threshold = 1; + }; + while (bi < threshold) { + target[pt + bi] = (e >> (4 - bi)) & 1; + bi ++; + }; + }); + } else { + console.warn(`Unknown GS display section: ${msg[0]}`); + }; + }; + }; + }); + // Roland MT-32 or C/M SysEx section + this.#seGs.add([22, 18, 127], (msg) => { + // MT-32 reset all params + upThis.switchMode("mt32", true); + upThis.#modeKaraoke = false; + upThis.userBank.clearRange({msb: 0, lsb: 127, prg: [0, 127]}); + console.info("MIDI reset: MT-32"); + }).add([22, 18, 32], (msg) => { + // MT-32 Text Display + upThis.switchMode("mt32"); + let offset = msg[1]; + let text = " ".repeat(offset); + msg.subarray(2).forEach((e) => { + if (e > 31) { + text += String.fromCharCode(e); + }; + }); + upThis.#letterDisp = text.padStart(20, " "); + upThis.#letterExpire = Date.now() + 3200; + }).add([22, 18, 82], (msg, track) => { + // MT-32 alt reset? + let partBase = upThis.chRedir(0, track, true); + for (let part = 0; part < 16; part ++) { + upThis.#ua.ano(partBase + part); + if (part && part < 10) { + upThis.#prg[partBase + part] = mt32DefProg[part - 1]; + }; + }; + console.info(`MT-32 alt reset complete.`); + }); + // KORG NS5R SysEx section + this.#seAi.add([66, 0], (msg, track) => { + // Mode switch + upThis.switchMode("ns5r", true); + upThis.#modeKaraoke = false; + console.debug(`NS5R mode switch requested: ${["global", "multi", "prog edit", "comb edit", "drum edit", "effect edit"][msg[0]]} mode.`); + }).add([66, 1], (msg, track) => { + // Map switch + upThis.switchMode(["ns5r", "05rw"][msg[0]], true); + upThis.#modeKaraoke = false; + }).add([66, 18, 0, 0], (msg, track) => { + // Master setup + let offset = msg[0]; + switch (offset) { + case 124: // all param reset + case 126: // XG reset for NS5R + case 127: { // GS reset for NS5R + upThis.switchMode("ns5r", true); + upThis.#modeKaraoke = false; + break; + }; + }; + }).add([66, 18, 8, 0], (msg, track) => { + // Display (letter and bitmap) + // Mehh I'll fill this up when I have time + }).add([66, 125], (msg) => { + // Backlight + upThis.dispatchEvent("backlight", ["green", "orange", "red", false, "yellow", "blue", "purple"][msg[0]] || "white"); + }).add([66, 127], (msg) => { + // NS5R screen dump + let screenBuffer = new Uint8Array(5760); + korgFilter(msg, (e, i, a) => { + if (i < 720) { + for (let bi = 0; bi < 8; bi ++) { + screenBuffer[i * 8 + bi] = (e >> (7 - bi)) & 1; + }; + }; + }); + upThis.dispatchEvent("screen", {type: "ns5r", data: screenBuffer}); + }).add([76], (msg, track, id) => { + // N1R to NS5R redirector + upThis.#seAi.run([66, ...msg], track, id); + }); + // Kawai GMega + this.#seKg.add([16, 0, 8, 0], (msg, track, id) => { + // GMega system section + let e = (msg[2] << 4) + msg[3]; + let dPref = "K11 "; + ([() => { + // GMega bank set + upThis.switchMode("k11", true); + upThis.#modeKaraoke = false; + upThis.#subLsb = e ? 4 : 0; + console.info("MIDI reset: GMega/K11"); + }][msg[0]] || (() => {}))(); + }); + // AKAI SG + this.#seSg.add([66, 93, 64], (msg, track, id) => { + let e = msg[2]; + switch (msg[0]) { + case 0: { + // SG system section at 0x00 + switch (msg[1]) { + case 127: { + // SG reset + upThis.switchMode("sg", true); + break; + }; + }; + break; + }; + }; + }); + }; +}; + +export { + OctaviaDevice, + allocated, + ccToPos +}; diff --git a/src/xp_basic/buildOpt.txt b/src/xp_basic/buildOpt.txt new file mode 120000 index 00000000..46463af1 --- /dev/null +++ b/src/xp_basic/buildOpt.txt @@ -0,0 +1 @@ +../compat/buildOpt.txt \ No newline at end of file diff --git a/src/xp_basic/index.mjs b/src/xp_basic/index.mjs new file mode 120000 index 00000000..490f8d89 --- /dev/null +++ b/src/xp_basic/index.mjs @@ -0,0 +1 @@ +../basic/index.mjs \ No newline at end of file diff --git a/src/xp_basic/inject.js b/src/xp_basic/inject.js new file mode 120000 index 00000000..f71227a5 --- /dev/null +++ b/src/xp_basic/inject.js @@ -0,0 +1 @@ +../compat/inject.js \ No newline at end of file diff --git a/src/xp_demoMw/buildOpt.txt b/src/xp_demoMw/buildOpt.txt new file mode 120000 index 00000000..46463af1 --- /dev/null +++ b/src/xp_demoMw/buildOpt.txt @@ -0,0 +1 @@ +../compat/buildOpt.txt \ No newline at end of file diff --git a/src/xp_demoMw/index.js b/src/xp_demoMw/index.js new file mode 120000 index 00000000..742b5add --- /dev/null +++ b/src/xp_demoMw/index.js @@ -0,0 +1 @@ +../demoMw/index.js \ No newline at end of file diff --git a/src/xp_demoMw/inject.js b/src/xp_demoMw/inject.js new file mode 120000 index 00000000..f71227a5 --- /dev/null +++ b/src/xp_demoMw/inject.js @@ -0,0 +1 @@ +../compat/inject.js \ No newline at end of file diff --git a/src/xp_demoTui/buildOpt.txt b/src/xp_demoTui/buildOpt.txt new file mode 120000 index 00000000..46463af1 --- /dev/null +++ b/src/xp_demoTui/buildOpt.txt @@ -0,0 +1 @@ +../compat/buildOpt.txt \ No newline at end of file diff --git a/src/xp_demoTui/index.js b/src/xp_demoTui/index.js new file mode 120000 index 00000000..2828b73c --- /dev/null +++ b/src/xp_demoTui/index.js @@ -0,0 +1 @@ +../demoTui/index.js \ No newline at end of file diff --git a/src/xp_demoTui/inject.js b/src/xp_demoTui/inject.js new file mode 120000 index 00000000..f71227a5 --- /dev/null +++ b/src/xp_demoTui/inject.js @@ -0,0 +1 @@ +../compat/inject.js \ No newline at end of file diff --git a/src/xp_fakeMu/buildOpt.txt b/src/xp_fakeMu/buildOpt.txt new file mode 120000 index 00000000..46463af1 --- /dev/null +++ b/src/xp_fakeMu/buildOpt.txt @@ -0,0 +1 @@ +../compat/buildOpt.txt \ No newline at end of file diff --git a/src/xp_fakeMu/index.js b/src/xp_fakeMu/index.js new file mode 120000 index 00000000..7f59fc6e --- /dev/null +++ b/src/xp_fakeMu/index.js @@ -0,0 +1 @@ +../fakeMu/index.js \ No newline at end of file diff --git a/src/xp_fakeMu/inject.js b/src/xp_fakeMu/inject.js new file mode 120000 index 00000000..f71227a5 --- /dev/null +++ b/src/xp_fakeMu/inject.js @@ -0,0 +1 @@ +../compat/inject.js \ No newline at end of file diff --git a/src/xp_fakeNs5r/buildOpt.txt b/src/xp_fakeNs5r/buildOpt.txt new file mode 120000 index 00000000..46463af1 --- /dev/null +++ b/src/xp_fakeNs5r/buildOpt.txt @@ -0,0 +1 @@ +../compat/buildOpt.txt \ No newline at end of file diff --git a/src/xp_fakeNs5r/index.js b/src/xp_fakeNs5r/index.js new file mode 120000 index 00000000..c1cc3e01 --- /dev/null +++ b/src/xp_fakeNs5r/index.js @@ -0,0 +1 @@ +../fakeNs5r/index.js \ No newline at end of file diff --git a/src/xp_fakeNs5r/inject.js b/src/xp_fakeNs5r/inject.js new file mode 120000 index 00000000..f71227a5 --- /dev/null +++ b/src/xp_fakeNs5r/inject.js @@ -0,0 +1 @@ +../compat/inject.js \ No newline at end of file diff --git a/src/xp_fakePsr/buildOpt.txt b/src/xp_fakePsr/buildOpt.txt new file mode 120000 index 00000000..46463af1 --- /dev/null +++ b/src/xp_fakePsr/buildOpt.txt @@ -0,0 +1 @@ +../compat/buildOpt.txt \ No newline at end of file diff --git a/src/xp_fakePsr/index.js b/src/xp_fakePsr/index.js new file mode 120000 index 00000000..2d1f4a7d --- /dev/null +++ b/src/xp_fakePsr/index.js @@ -0,0 +1 @@ +../fakePsr/index.js \ No newline at end of file diff --git a/src/xp_fakePsr/inject.js b/src/xp_fakePsr/inject.js new file mode 120000 index 00000000..f71227a5 --- /dev/null +++ b/src/xp_fakePsr/inject.js @@ -0,0 +1 @@ +../compat/inject.js \ No newline at end of file diff --git a/src/xp_fakeQy/buildOpt.txt b/src/xp_fakeQy/buildOpt.txt new file mode 120000 index 00000000..46463af1 --- /dev/null +++ b/src/xp_fakeQy/buildOpt.txt @@ -0,0 +1 @@ +../compat/buildOpt.txt \ No newline at end of file diff --git a/src/xp_fakeQy/index.js b/src/xp_fakeQy/index.js new file mode 120000 index 00000000..725d2353 --- /dev/null +++ b/src/xp_fakeQy/index.js @@ -0,0 +1 @@ +../fakeQy/index.js \ No newline at end of file diff --git a/src/xp_fakeQy/inject.js b/src/xp_fakeQy/inject.js new file mode 120000 index 00000000..f71227a5 --- /dev/null +++ b/src/xp_fakeQy/inject.js @@ -0,0 +1 @@ +../compat/inject.js \ No newline at end of file diff --git a/src/xp_fakeSc/buildOpt.txt b/src/xp_fakeSc/buildOpt.txt new file mode 120000 index 00000000..46463af1 --- /dev/null +++ b/src/xp_fakeSc/buildOpt.txt @@ -0,0 +1 @@ +../compat/buildOpt.txt \ No newline at end of file diff --git a/src/xp_fakeSc/index.js b/src/xp_fakeSc/index.js new file mode 120000 index 00000000..067f6eab --- /dev/null +++ b/src/xp_fakeSc/index.js @@ -0,0 +1 @@ +../fakeSc/index.js \ No newline at end of file diff --git a/src/xp_fakeSc/inject.js b/src/xp_fakeSc/inject.js new file mode 120000 index 00000000..f71227a5 --- /dev/null +++ b/src/xp_fakeSc/inject.js @@ -0,0 +1 @@ +../compat/inject.js \ No newline at end of file diff --git a/src/xp_state/buildOpt.txt b/src/xp_state/buildOpt.txt new file mode 120000 index 00000000..46463af1 --- /dev/null +++ b/src/xp_state/buildOpt.txt @@ -0,0 +1 @@ +../compat/buildOpt.txt \ No newline at end of file diff --git a/src/xp_state/index.mjs b/src/xp_state/index.mjs new file mode 120000 index 00000000..34c150b7 --- /dev/null +++ b/src/xp_state/index.mjs @@ -0,0 +1 @@ +../state/index.mjs \ No newline at end of file diff --git a/src/xp_state/inject.js b/src/xp_state/inject.js new file mode 120000 index 00000000..f71227a5 --- /dev/null +++ b/src/xp_state/inject.js @@ -0,0 +1 @@ +../compat/inject.js \ No newline at end of file diff --git a/test/cambiare.htm b/test/cambiare.htm new file mode 100644 index 00000000..0288ff58 --- /dev/null +++ b/test/cambiare.htm @@ -0,0 +1,43 @@ + + + + Octavia Cambiare (alpha) + + + + + + + + + + + + +

+ Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG;
+ KROSS, + S90 ES, + Motif ES. +

+

+ Demo + collection loading... +

+

Start port: A B C D E F G H, show 16 32 64 channels.

+ + + diff --git a/test/css/fonts.css b/test/css/fonts.css new file mode 100644 index 00000000..4f4e5127 --- /dev/null +++ b/test/css/fonts.css @@ -0,0 +1,18 @@ +@font-face { + font-family: "Noto Sans Mono Web"; + src: url("../font/NotoSansMono-VF.woff2") format("woff2"); +} +@font-face { + font-family: "Arial Web"; + font-weight: 400; + src: url("../font/arial.woff2") format("woff2"); +} +@font-face { + font-family: "Arial Web"; + font-weight: 700; + src: url("../font/arialbd.woff2") format("woff2"); +} + +body { + font-family: "Noto Sans Mono", "Noto Sans Mono Web", mono; +} diff --git a/test/css/tui.css b/test/css/tui.css new file mode 100644 index 00000000..942d2919 --- /dev/null +++ b/test/css/tui.css @@ -0,0 +1,62 @@ +body { + min-width: 768px; +} + +p { + margin: 0.2em; +} + +b[class], b[id^=open] { + cursor: pointer; +} +b.active { + outline: 2px solid; + padding: 0 2px; +} + +li[id^=mw-in-], li[id^=mw-out-] { + cursor: pointer; +} +li.active { + text-decoration: underline; +} + +div.section { + margin: 0.8em; + cursor: default; +} + +div#display { + font-size: 16px; + cursor: default; + white-space: pre-wrap; +} +canvas#ymhMu { + background: #af2; +} +canvas#rlndSc { + background: #fa0; +} + +@media (prefers-color-scheme: dark){ + span.letter { + background: #dbdbdb !important; + color: #202b38 !important; + } + canvas#bmDisp { + filter: invert(100%); + } +} +span.letter { + background: #363636; + color: #fff; + white-space: pre-wrap; + display: inline-block; +} + +.state-hold { + text-decoration: line-through; +} +.state-active { + color: green; +} diff --git a/test/css/water.min.css b/test/css/water.min.css new file mode 120000 index 00000000..14ad36bc --- /dev/null +++ b/test/css/water.min.css @@ -0,0 +1 @@ +../../libs/water.css@kognise/water.min.css \ No newline at end of file diff --git a/test/data b/test/data new file mode 120000 index 00000000..4909e06e --- /dev/null +++ b/test/data @@ -0,0 +1 @@ +../data \ No newline at end of file diff --git a/test/fakeMu.htm b/test/fakeMu.htm new file mode 100644 index 00000000..a5837e98 --- /dev/null +++ b/test/fakeMu.htm @@ -0,0 +1,51 @@ + + + + Octavia MU Screen + + + + + + + + + + + + + + + + + + +

+ Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG;
+ KROSS, + S90 ES, + Motif ES. +

+

+ Demo + collection loading... +

+ +

Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy.

+

Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

+

While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

+ + diff --git a/test/fakeNs5r.htm b/test/fakeNs5r.htm new file mode 100644 index 00000000..947be7a8 --- /dev/null +++ b/test/fakeNs5r.htm @@ -0,0 +1,51 @@ + + + + Octavia NS5R Screen + + + + + + + + + + + + + + + + + + +

+ Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG;
+ KROSS, + S90 ES, + Motif ES. +

+

+ Demo + collection loading... +

+ +

Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy.

+

Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

+

While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

+ + diff --git a/test/fakePsr.htm b/test/fakePsr.htm new file mode 100644 index 00000000..7ace1bb6 --- /dev/null +++ b/test/fakePsr.htm @@ -0,0 +1,64 @@ + + + + Octavia PSR Screen + + + + + + + + + + + + + + + + + + +

+ Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG;
+ KROSS, + S90 ES, + Motif ES. +

+

+ Backlight color + White, + Green, + Orange, + Red, + Light blue, + Blue. +

+

+ Automatic channel switching + ON +

+

+ Demo + collection loading... +

+ +

Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy. Click on the top of the fake screen will get you switched between song information view, voice view and rhythm view of the top section.

+

Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

+

While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

+ + diff --git a/test/fakeQy.htm b/test/fakeQy.htm new file mode 100644 index 00000000..8751d0e6 --- /dev/null +++ b/test/fakeQy.htm @@ -0,0 +1,51 @@ + + + + Octavia QY Screen + + + + + + + + + + + + + + + + + + +

+ Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG;
+ KROSS, + S90 ES, + Motif ES. +

+

+ Demo + collection loading... +

+ +

Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy. Click on the top of the fake screen will get you switched between default view and mixer view.

+

Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

+

While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

+ + diff --git a/test/fakeSc.htm b/test/fakeSc.htm new file mode 100644 index 00000000..8f84f8bd --- /dev/null +++ b/test/fakeSc.htm @@ -0,0 +1,51 @@ + + + + Octavia SC Screen + + + + + + + + + + + + + + + + + + +

+ Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG;
+ KROSS, + S90 ES, + Motif ES. +

+

+ Demo + collection loading... +

+ +

Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy.

+

Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

+

While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

+ + diff --git a/test/font/NotoSansMono-VF.woff2 b/test/font/NotoSansMono-VF.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..11cc7b2ca41915683c682669e7d65141be69f44a GIT binary patch literal 572476 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

3xe}+}U1T$iDoXDcN_bTZ50LjgN14)7-7s~wo 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

lY`!63 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%0Dea(I0IT~Sek}+rcwO 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�o9{w-w2K^R4KxrV;(`Y*ks`)na!!_f*fk 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℘T#W3dFs(gafoa4J}~V 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 literal 0 HcmV?d00001 diff --git a/test/font/arial.woff2 b/test/font/arial.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..b0d08aceea8fde76f6f4b2786b5e85af20a526d7 GIT binary patch literal 413420 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%0DFDb@eJ`H}y~` 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%0As4QS&;kwfT+I;W^~(>_Wz;H9w#I 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%0AStEt-ggWlDpcQ`JZnb6@Y9xw8kk73( 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%0A1D9OK98_Y&vnk$fR`)Gv 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

INh|qCM~H?yo4&dhJ^y7* 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 literal 0 HcmV?d00001 diff --git a/test/font/arialbd.woff2 b/test/font/arialbd.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..72c6983163e1de47d46ffb30da3a81ec2f4f0965 GIT binary patch literal 393640 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%0D1Y~r$)+Kw?a;>Kw`}V(7 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

w{J= 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

yW*3$~eRt#5Dj@I;CnYRGJs-+uNEWO30($$y8|& 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�%Z<;ad0h>)*nm@88t+ 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ӸhhomrW%Z^ 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 WZD(?-SLMzq@-vzSz%kVi2mfF1b5vUZ literal 0 HcmV?d00001 diff --git a/test/img/previewMu.webp b/test/img/previewMu.webp new file mode 100644 index 0000000000000000000000000000000000000000..829139dbd1b276ed706cb477e0414c985e92ff82 GIT binary patch literal 6878 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 a5ONO4@kTDKmG$bc7Uz{e`!uHX19t#7`a7}! literal 0 HcmV?d00001 diff --git a/test/img/previewPsr.webp b/test/img/previewPsr.webp new file mode 100644 index 0000000000000000000000000000000000000000..9ffbaec61a3abe730acc6e6a54b4972c0b1db58c GIT binary patch literal 17636 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 HYk~y;31)Od literal 0 HcmV?d00001 diff --git a/test/img/previewQy.webp b/test/img/previewQy.webp new file mode 100644 index 0000000000000000000000000000000000000000..aa656d7ced0ae00985ea6671cf4d968a2ce51d23 GIT binary patch literal 2494 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 I;P{`kovq#Y)Bpeg literal 0 HcmV?d00001 diff --git a/test/img/previewSc.webp b/test/img/previewSc.webp new file mode 100644 index 0000000000000000000000000000000000000000..e646c1e21328c8fa19c77b22e19bc42885934d59 GIT binary patch literal 5096 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 + + + Octavia demos + + + + + + + + + + + + + + + +

Disclaimer

+

See the main page.

+

List of Octavia demos

+

Demos of Octavia (not Octavia itself) are all under CC BY-NC-SA 4.0 license. Credits are advised when Octavia demos are used for recording videos. Demo MIDI files came along with Octavia demos are all credited here.

+

Some demos may require loading additional SysEx sound sets, and can either be included in the demos themselves, or be downloaded elsewhere. Demo 7 require JayB's X5D(R) sound set and NS5R sound set to be loaded, which can be downloaded from jaybmusic.net.

+

Octavia does not embed MIDI synthesizers currently, so please prepare your own pre-rendered audio files if you wish to see Octavia in action. If you wish to experience full MIDI bitmap animation experience, please watch them in demo screens with pixel blurs.

+ + diff --git a/test/js/basic.mjs b/test/js/basic.mjs new file mode 120000 index 00000000..88bdef45 --- /dev/null +++ b/test/js/basic.mjs @@ -0,0 +1 @@ +../../dist/basic.mjs \ No newline at end of file diff --git a/test/js/bridge.mjs b/test/js/bridge.mjs new file mode 120000 index 00000000..112b3cb7 --- /dev/null +++ b/test/js/bridge.mjs @@ -0,0 +1 @@ +../../dist/bridge.mjs \ No newline at end of file diff --git a/test/js/cambiare.mjs b/test/js/cambiare.mjs new file mode 120000 index 00000000..2514fdde --- /dev/null +++ b/test/js/cambiare.mjs @@ -0,0 +1 @@ +../../dist/cambiare.mjs \ No newline at end of file diff --git a/test/js/cambiare_wa.js b/test/js/cambiare_wa.js new file mode 120000 index 00000000..801e8b59 --- /dev/null +++ b/test/js/cambiare_wa.js @@ -0,0 +1 @@ +../../dist/cambiare_wa.js \ No newline at end of file diff --git a/test/js/demoMw.js b/test/js/demoMw.js new file mode 120000 index 00000000..28451e2f --- /dev/null +++ b/test/js/demoMw.js @@ -0,0 +1 @@ +../../dist/demoMw.js \ No newline at end of file diff --git a/test/js/demoTui.js b/test/js/demoTui.js new file mode 120000 index 00000000..bce86782 --- /dev/null +++ b/test/js/demoTui.js @@ -0,0 +1 @@ +../../dist/demoTui.js \ No newline at end of file diff --git a/test/js/fakeMu.js b/test/js/fakeMu.js new file mode 120000 index 00000000..4e607e66 --- /dev/null +++ b/test/js/fakeMu.js @@ -0,0 +1 @@ +../../dist/fakeMu.js \ No newline at end of file diff --git a/test/js/fakeNs5r.js b/test/js/fakeNs5r.js new file mode 120000 index 00000000..8010d33b --- /dev/null +++ b/test/js/fakeNs5r.js @@ -0,0 +1 @@ +../../dist/fakeNs5r.js \ No newline at end of file diff --git a/test/js/fakePsr.js b/test/js/fakePsr.js new file mode 120000 index 00000000..8397257b --- /dev/null +++ b/test/js/fakePsr.js @@ -0,0 +1 @@ +../../dist/fakePsr.js \ No newline at end of file diff --git a/test/js/fakeQy.js b/test/js/fakeQy.js new file mode 120000 index 00000000..8eec4bc2 --- /dev/null +++ b/test/js/fakeQy.js @@ -0,0 +1 @@ +../../dist/fakeQy.js \ No newline at end of file diff --git a/test/js/fakeSc.js b/test/js/fakeSc.js new file mode 120000 index 00000000..518c97d5 --- /dev/null +++ b/test/js/fakeSc.js @@ -0,0 +1 @@ +../../dist/fakeSc.js \ No newline at end of file diff --git a/test/js/snowy.js b/test/js/snowy.js new file mode 120000 index 00000000..60aee407 --- /dev/null +++ b/test/js/snowy.js @@ -0,0 +1 @@ +../../libs/snowy@ltgcgo/snowy.js \ No newline at end of file diff --git a/test/js/state.mjs b/test/js/state.mjs new file mode 120000 index 00000000..763c2573 --- /dev/null +++ b/test/js/state.mjs @@ -0,0 +1 @@ +../../dist/state.mjs \ No newline at end of file diff --git a/test/js/state_skim.mjs b/test/js/state_skim.mjs new file mode 120000 index 00000000..97d0272c --- /dev/null +++ b/test/js/state_skim.mjs @@ -0,0 +1 @@ +../../dist/state_skim.mjs \ No newline at end of file diff --git a/test/js/xp_basic.mjs b/test/js/xp_basic.mjs new file mode 120000 index 00000000..89478c96 --- /dev/null +++ b/test/js/xp_basic.mjs @@ -0,0 +1 @@ +../../dist/xp_basic.mjs \ No newline at end of file diff --git a/test/js/xp_demoMw.js b/test/js/xp_demoMw.js new file mode 120000 index 00000000..eecb952e --- /dev/null +++ b/test/js/xp_demoMw.js @@ -0,0 +1 @@ +../../dist/xp_demoMw.js \ No newline at end of file diff --git a/test/js/xp_demoTui.js b/test/js/xp_demoTui.js new file mode 120000 index 00000000..fae43487 --- /dev/null +++ b/test/js/xp_demoTui.js @@ -0,0 +1 @@ +../../dist/xp_demoTui.js \ No newline at end of file diff --git a/test/js/xp_fakeMu.js b/test/js/xp_fakeMu.js new file mode 120000 index 00000000..392aab39 --- /dev/null +++ b/test/js/xp_fakeMu.js @@ -0,0 +1 @@ +../../dist/xp_fakeMu.js \ No newline at end of file diff --git a/test/js/xp_fakeNs5r.js b/test/js/xp_fakeNs5r.js new file mode 120000 index 00000000..657adbc3 --- /dev/null +++ b/test/js/xp_fakeNs5r.js @@ -0,0 +1 @@ +../../dist/xp_fakeNs5r.js \ No newline at end of file diff --git a/test/js/xp_fakePsr.js b/test/js/xp_fakePsr.js new file mode 120000 index 00000000..f7c590d9 --- /dev/null +++ b/test/js/xp_fakePsr.js @@ -0,0 +1 @@ +../../dist/xp_fakePsr.js \ No newline at end of file diff --git a/test/js/xp_fakeQy.js b/test/js/xp_fakeQy.js new file mode 120000 index 00000000..7e2535a4 --- /dev/null +++ b/test/js/xp_fakeQy.js @@ -0,0 +1 @@ +../../dist/xp_fakeQy.js \ No newline at end of file diff --git a/test/js/xp_fakeSc.js b/test/js/xp_fakeSc.js new file mode 120000 index 00000000..8e5b3c84 --- /dev/null +++ b/test/js/xp_fakeSc.js @@ -0,0 +1 @@ +../../dist/xp_fakeSc.js \ No newline at end of file diff --git a/test/js/xp_state.mjs b/test/js/xp_state.mjs new file mode 120000 index 00000000..1b646600 --- /dev/null +++ b/test/js/xp_state.mjs @@ -0,0 +1 @@ +../../dist/xp_state.mjs \ No newline at end of file diff --git a/test/middleware.htm b/test/middleware.htm new file mode 100644 index 00000000..30ec6d62 --- /dev/null +++ b/test/middleware.htm @@ -0,0 +1,92 @@ + + + + Octavia Middleware + + + + + + + + + + + +
+ MIDI In: + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + Closed +
+
+
    +
    +
    + MIDI Out: + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + Closed +
    +
    +
      +
      + Translation settings: +
      + NRPN/CC: + THRU, + NRPN, + CC. + PLG base bank polyfill: + AN + AP + DR + DX + PC + PF + VL + SG. +
      +
      + Target: + Thru, + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG. +
      +
      + Model: + XG thru, + MU Basic, + MU Native; + GS thru, + SC-55, + SC-88, + SC-88 Pro, + SC-8850. +
      +

      + Open MIDI. Stop, play. +

      + + diff --git a/test/template.htm b/test/template.htm new file mode 100644 index 00000000..0629ef07 --- /dev/null +++ b/test/template.htm @@ -0,0 +1,9 @@ + + + + Default Web Page + + + + + diff --git a/test/tui.htm b/test/tui.htm new file mode 100644 index 00000000..13e234d1 --- /dev/null +++ b/test/tui.htm @@ -0,0 +1,47 @@ + + + + Text Interface Demo + + + + + + + + + + + + + + + + +

      + Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG;
      + KROSS, + S90 ES, + Motif ES. +

      +

      + Demo + collection loading... +

      +
      Loading demo A...






















      + + + diff --git a/test/winxp.htm b/test/winxp.htm new file mode 100644 index 00000000..d3911f77 --- /dev/null +++ b/test/winxp.htm @@ -0,0 +1,56 @@ + + + + Octavia demos for legacy systems + + + + + + + + + + + + + + + +

      Disclaimer

      +

      See the main page.

      +

      List of Octavia demos for legacy systems

      +

      Demos of Octavia (not Octavia itself) are all under CC BY-NC-SA 4.0 license. Credits are advised when Octavia demos are used for recording videos. Demo MIDI files came along with Octavia demos are all credited here.

      +

      Some demos may require loading additional SysEx sound sets, and can either be included in the demos themselves, or be downloaded elsewhere. Demo 7 require JayB's X5D(R) sound set and NS5R sound set to be loaded, which can be downloaded from jaybmusic.net.

      +

      Octavia does not embed MIDI synthesizers currently, so please prepare your own pre-rendered audio files if you wish to see Octavia in action. If you wish to experience full MIDI bitmap animation experience, please watch them in demo screens with pixel blurs.

      +

      Demos for legacy systems may not be as up-to-date.

      + + diff --git a/test/xp_fakeMu.htm b/test/xp_fakeMu.htm new file mode 100644 index 00000000..0e56ea86 --- /dev/null +++ b/test/xp_fakeMu.htm @@ -0,0 +1,99 @@ + + + + Octavia MU Screen + + + + + + + + + + + + + + + + + + + +

      + Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG, + KROSS. +

      +

      + Demo + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + α + β + γ + δ + ε + ζ + η + θ + ι + κ + λ + μ + ν + ξ +

      + +

      Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy.

      +

      Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

      +

      While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

      + + diff --git a/test/xp_fakeNs5r.htm b/test/xp_fakeNs5r.htm new file mode 100644 index 00000000..0c2fba4c --- /dev/null +++ b/test/xp_fakeNs5r.htm @@ -0,0 +1,99 @@ + + + + Octavia NS5R Screen + + + + + + + + + + + + + + + + + + + +

      + Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG, + KROSS. +

      +

      + Demo + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + α + β + γ + δ + ε + ζ + η + θ + ι + κ + λ + μ + ν + ξ +

      + +

      Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy.

      +

      Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

      +

      While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

      + + diff --git a/test/xp_fakePsr.htm b/test/xp_fakePsr.htm new file mode 100644 index 00000000..2aadc327 --- /dev/null +++ b/test/xp_fakePsr.htm @@ -0,0 +1,112 @@ + + + + Octavia PSR Screen + + + + + + + + + + + + + + + + + + + +

      + Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG, + KROSS. +

      +

      + Backlight color + White, + Green, + Orange, + Red, + Light blue, + Blue. +

      +

      + Automatic channel switching + ON +

      +

      + Demo + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + α + β + γ + δ + ε + ζ + η + θ + ι + κ + λ + μ + ν + ξ +

      + +

      Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy. Click on the top of the fake screen will get you switched between song information view, voice view and rhythm view of the top section.

      +

      Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

      +

      While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

      + + diff --git a/test/xp_fakeQy.htm b/test/xp_fakeQy.htm new file mode 100644 index 00000000..f1ef472a --- /dev/null +++ b/test/xp_fakeQy.htm @@ -0,0 +1,99 @@ + + + + Octavia QY Screen + + + + + + + + + + + + + + + + + + + +

      + Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG, + KROSS. +

      +

      + Demo + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + α + β + γ + δ + ε + ζ + η + θ + ι + κ + λ + μ + ν + ξ +

      + +

      Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy. Click on the top of the fake screen will get you switched between default view and mixer view.

      +

      Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

      +

      While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

      + + diff --git a/test/xp_fakeSc.htm b/test/xp_fakeSc.htm new file mode 100644 index 00000000..da5a8e6d --- /dev/null +++ b/test/xp_fakeSc.htm @@ -0,0 +1,99 @@ + + + + Octavia SC Screen + + + + + + + + + + + + + + + + + + + +

      + Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG, + KROSS. +

      +

      + Demo + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + α + β + γ + δ + ε + ζ + η + θ + ι + κ + λ + μ + ν + ξ +

      + +

      Switch active channels by scrolling the mouse wheel, or clicking the horizontal edges of the fake screen. Choose and click on the demos to enjoy.

      +

      Octavia will handle MIDI standard detection most of the time, but if it cannot detect one of the supported standards, you can select the correct standard manually too.

      +

      While handling state tracking and automatic channel assignment, Octavia does neither handle MIDI synthesizing nor embed a synthesizer currently. If you want to play a certain MIDI track, you must provide both the MIDI file and the synced pre-rendered audio file.

      + + diff --git a/test/xp_middleware.htm b/test/xp_middleware.htm new file mode 100644 index 00000000..04188714 --- /dev/null +++ b/test/xp_middleware.htm @@ -0,0 +1,93 @@ + + + + Octavia Middleware + + + + + + + + + + + + +
      + MIDI In: + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + Closed +
      +
      +
        +
        +
        + MIDI Out: + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + Closed +
        +
        +
          +
          + Translation settings: +
          + NRPN/CC: + THRU, + NRPN, + CC. + PLG base bank polyfill: + AN + AP + DR + DX + PC + PF + VL + SG. +
          +
          + Target: + Thru, + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG. +
          +
          + Model: + XG thru, + MU Basic, + MU Native; + GS thru, + SC-55, + SC-88, + SC-88 Pro, + SC-8850. +
          +

          + Open MIDI. Stop, play. +

          + + diff --git a/test/xp_tui.htm b/test/xp_tui.htm new file mode 100644 index 00000000..11380c81 --- /dev/null +++ b/test/xp_tui.htm @@ -0,0 +1,95 @@ + + + + Text Interface Demo + + + + + + + + + + + + + + + + + +

          + Open MIDI, + audio, + line. + GM, + GS, + XG, + GM2, + MT-32, + NS5R, + AG-10, + 05R/W, + X5D, + GMega, + SG, + KROSS. +

          +

          + Demo + a + b + c + d + e + f + g + h + i + j + k + l + m + n + o + p + q + r + s + t + u + v + w + x + y + z + 0 + 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + α + β + γ + δ + ε + ζ + η + θ + ι + κ + λ + μ + ν + ξ +

          +
          Loading demo A...






















          + + + diff --git a/utils/korg/kross2.pcg.js b/utils/korg/kross2.pcg.js new file mode 100644 index 00000000..71a065ee --- /dev/null +++ b/utils/korg/kross2.pcg.js @@ -0,0 +1,109 @@ +/* + +Just a simple KORG KROSS 2 PCG file to bank mapping converter. +I bear no responsibility for you running this piece of software. You have been warned. + +License: WTFPL + +*/ + +"use strict"; + +Uint8Array.prototype.same = function (arr) { + let same = true; + arr.forEach((e, i) => { + same = same && this[i] == e; + }); + return same; +}; +Uint8Array.prototype.readInt = function () { + let sum = 0; + this.forEach((e) => { + sum *= 256; + sum += e; + }); + return sum; +}; + +let utf8Dec = new TextDecoder(); + +let sysexBlob = await Deno.readFile(`${Deno.args[0]}`); +console.error(`KORG KROSS 2 PCG file size: ${sysexBlob.length} bytes.`); +console.error(`File type: ${utf8Dec.decode(sysexBlob.subarray(16, 20))}`); + +let ptr = 100, mode = 0, headSects = 0, resume = true; +let sections = [], sectPtr = 0; +while (resume) { + let rwin = sysexBlob.subarray(ptr); + ([() => { + resume = utf8Dec.decode(rwin.subarray(0, 4)) == "INI2"; + headSects = rwin[15]; + console.error(`Section count: ${headSects}`); + ptr += 16; + mode = 1; + }, () => { + let type = utf8Dec.decode(rwin.subarray(0, 4)); + let tipMsb = rwin[5], tipLsb = rwin[7]; + let nameLen = rwin[11]; + let length = rwin.subarray(12, 16).readInt(); + let start = rwin.subarray(16, 20).readInt(); + let entryLen = rwin.subarray(36, 40).readInt(); + let name = utf8Dec.decode(rwin.subarray(44, 44 + nameLen)); + /* console.error(``); + console.error(`Section type: ${type}`); + console.error(`Section ID: ${tipMsb.toString(16)} ${tipLsb.toString(16)}`); + console.error(`Section name length: ${nameLen}`); + console.error(`Section size: ${length} byte(s)`); + console.error(`Start pointer: ${start}`); + console.error(`Entry size: ${entryLen} byte(s)`); + console.error(`Section name: ${name}`) */ + sections.push({ + type, tipMsb, tipLsb, nameLen, + length, start, entryLen, name + }); + ptr += 64; + headSects --; + if (headSects < 1) { + mode = 2; + }; + }, () => { + // Section reading mode + let section = sections[sectPtr]; + let sectWin = sysexBlob.subarray(section.start, section.start + section.length); + console.error(`\nNow reading #${(sectPtr + 1).toString().padStart(2, "0")}:${section.type} (${section.name})`); + switch (section.type) { + case "PRG1": { + console.info(`MSB PRG LSB NME`); + break; + }; + case "PBK1": { + let msb = 63, prg = (section.tipMsb ? 6 : 0) + section.tipLsb; + for (let i = 0; i < 128; i ++) { + let entryStart = i * section.entryLen; + let entryWin = sectWin.subarray(entryStart, entryStart + section.entryLen); + let name = utf8Dec.decode(entryWin.subarray(0, 24)).trimEnd().replace("InitProg", ""); + name.length && console.info(`${(msb).toString().padStart(3, "0")} ${(prg).toString().padStart(3, "0")} ${(i).toString().padStart(3, "0")} ${name}`); + }; + break; + }; + case "CBK1": { + let msb = 63, prg = (section.tipMsb ? 3 : 0) + section.tipLsb + 10; + for (let i = 0; i < 128; i ++) { + let entryStart = i * section.entryLen; + let entryWin = sectWin.subarray(entryStart, entryStart + section.entryLen); + let name = utf8Dec.decode(entryWin.subarray(0, 24)).trimEnd().replace("InitCombi", ""); + name.length && console.info(`${(msb).toString().padStart(3, "0")} ${(prg).toString().padStart(3, "0")} ${(i).toString().padStart(3, "0")} ${name}`); + }; + break; + }; + }; + sectPtr ++; + if (sectPtr >= sections.length) { + mode = 3; + resume = false; + }; + }][mode] || (() => { + resume = false; + console.error(`Mode out of bound. Stopping.`); + }))(); +}; diff --git a/utils/korg/ns5r.prg.js b/utils/korg/ns5r.prg.js new file mode 100644 index 00000000..39b1b83f --- /dev/null +++ b/utils/korg/ns5r.prg.js @@ -0,0 +1,58 @@ +/* + +Just a simple KORG NS5R Program Dump SysEx to bank mapping converter. +I bear no risk for you running this piece of software. You have been warned. + +License: WTFPL + +*/ + +"use strict"; + +let sysexBlob = await Deno.readFile(`${Deno.args[0]}`); +console.error(`KORG NS5R SysEx file size: ${sysexBlob.length} bytes.`); +let pointer = 5, dataOff = 0; +console.info(`MSB\tPRG\tLSB\tNME`); +let name = "", isDouble = false, msb = 0, lsb = 0, prg = 0; +while (pointer < sysexBlob.length) { + if (dataOff % 7 == 0) { + pointer ++; + }; + let value = sysexBlob[pointer]; + switch (dataOff % 158) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: { + name += String.fromCharCode(value); + break; + }; + case 10: { + isDouble = !!value; + break; + }; + case 11: { + msb = value; + break; + }; + case 12: { + lsb = value; + break; + }; + case 13: { + prg = value; + console.info(`${msb.toString().padStart(3, "0")}\t${prg.toString().padStart(3, "0")}\t${lsb.toString().padStart(3, "0")}\t${name.trim()}`); + name = ""; + break; + }; + default: {}; + }; + dataOff ++; + pointer ++; +}; diff --git a/utils/korg/x5d.prg.js b/utils/korg/x5d.prg.js new file mode 100644 index 00000000..fee4a308 --- /dev/null +++ b/utils/korg/x5d.prg.js @@ -0,0 +1,52 @@ +/* + +Just a simple KORG X5D(R) Dump SysEx to bank mapping converter. +I bear no risk for you running this piece of software. You have been warned. + +License: WTFPL + +*/ + +"use strict"; + +let sysexBlob = await Deno.readFile(`${Deno.args[0]}`); +console.error(`KORG NS5R SysEx file size: ${sysexBlob.length} bytes.`); +let pointer = 6, dataOff = 0; +console.info(`MSB\tPRG\tLSB\tNME`); +let name = "", isDouble = false, msb = 82, lsb = 0, prg = 0; +while (pointer < sysexBlob.length) { + if (dataOff % 7 == 0) { + pointer ++; + }; + let value = sysexBlob[pointer]; + switch (dataOff % 164) { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + case 8: + case 9: { + name += String.fromCharCode(value); + break; + }; + case 10: { + isDouble = !!value; + break; + }; + case 11: { + if (prg < 100) { + console.info(`${msb.toString().padStart(3, "0")}\t${prg.toString().padStart(3, "0")}\t${lsb.toString().padStart(3, "0")}\t${name.trim()}`); + }; + prg ++; + name = ""; + break; + }; + default: {}; + }; + dataOff ++; + pointer ++; +}; diff --git a/utils/others/altDescramble.js b/utils/others/altDescramble.js new file mode 100644 index 00000000..7f0ea055 --- /dev/null +++ b/utils/others/altDescramble.js @@ -0,0 +1,11 @@ +"use strict"; + +let fileBuffer = await Deno.readFile(Deno.args[0]), +fileLen = fileBuffer.length; +console.error(`Loaded "${Deno.args[0]}", ${fileLen} bytes in total.`); +let outBuffer = new Uint8Array(fileLen); +fileBuffer.forEach((e, fi) => { + let i = ((fi >> 1) << 1) + (+!(fi & 1)); + outBuffer[i] = e; +}); +await Deno.writeFile(Deno.args[1] || `${Deno.args[0]}.out`, outBuffer); \ No newline at end of file diff --git a/utils/others/draftEfxId.tsv b/utils/others/draftEfxId.tsv new file mode 100644 index 00000000..7f559f0c --- /dev/null +++ b/utils/others/draftEfxId.tsv @@ -0,0 +1,246 @@ +MSB LSB Name +00 00 No Effect +01 00 XG Hall 1 +01 01 XG Hall 2 +01 06 XG Hall Medium +01 07 XG Hall Large +02 00 XG Room 1 +02 01 XG Room 2 +02 02 XG Room 3 +02 05 XG Room Small +02 06 XG Room Medium +02 07 XG Room Large +03 00 XG Stage 1 +03 01 XG Stage 2 +04 00 XG Plate +04 07 XG GM Plate +05 00 XG Delay LCR +06 00 XG Delay LR +07 00 XG Echo +08 00 XG Cross Delay +09 00 XG Early Reflection 1 +09 01 XG Early Reflection 2 +0a 00 XG Gate +0b 00 XG Reverse Gate +10 00 XG White Room +11 00 XG Tunnel +12 00 XG Canyon +13 00 XG Basement +14 00 XG Karaoke 1 +14 01 XG Karaoke 2 +14 02 XG Karaoke 3 +18 00 KG Hall 1 +18 01 KG Hall 2 +18 02 KG Hall 3 +18 03 KG Room 1 +18 04 KG Room 2 +18 05 KG Stage +20 00 GS Through +21 00 GS Stereo EQ +21 01 GS Spectrum +21 02 GS Enhancer +21 03 GS Humanizer +21 10 GS Overdrive +21 11 GS Distortion +21 20 GS Phaser +21 21 GS Auto Wah +21 22 GS Rotary +21 23 GS Stereo Flanger +21 24 GS Step Flanger +21 25 GS Tremelo +21 26 GS Auto Pan +21 30 GS Compressor +21 31 GS Limiter +21 40 GS Hexa Chorus +21 41 GS Tremelo Chorus +21 42 GS Stereo Chorus +21 43 GS Space Delay +21 44 GS 3D Chorus +21 50 GS Stereo Delay +21 51 GS Mod Delay +21 52 GS 3-tap Delay +21 53 GS 4-tap Delay +21 54 GS Tremelo Control Delay +21 55 GS Reverb +21 56 GS Gate +21 57 GS 3D Delay +21 60 GS 2 Pitch Shifter +21 61 GS Feedback Pitch Shifter +21 70 GS 3D Auto +21 71 GS 3D Manual +21 72 GS Lo-Fi +21 73 GS Lo-Fi 2 +22 00 GS Overdrive+Chorus +22 01 GS Overdrive+Flanger +22 02 GS Overdrive+Delay +22 03 GS Distortion+Chorus +22 04 GS Distortion+Flanger +22 05 GS Distortion+Delay +22 06 GS Enhancer+Chorus +22 07 GS Enhancer+Flanger +22 08 GS Enhancer+Delay +22 09 GS Chorus+Delay +22 0a GS Flanger+Delay +22 0b GS Chorus+Flanger +22 0c GS Rotary Multi Alt +23 00 GS Rotary Multi +24 00 GS Guitar Multi +24 01 GS Guitar Multi 2 +24 02 GS Guitar Multi 3 +24 03 GS Clean Guitar Multi +24 04 GS Clean Guitar Multi 2 +24 05 GS Bass Multi +24 06 GS Rhodes Multi +25 00 GS Keyboard Multi +28 00 GS Room 1 +28 01 GS Room 2 +28 02 GS Room 3 +28 03 GS Hall 1 +28 04 GS Hall 2 +28 05 GS Plate +28 06 GS Reverb Delay +28 07 GS Panning Delay +28 10 GS Chorus 1 +28 11 GS Chorus 2 +28 12 GS Chorus 3 +28 13 GS Chorus 4 +28 14 GS Feedback Chorus +28 15 GS Flanger +28 16 GS Short Delay +28 17 GS Feedback Short Delay +28 20 GS Delay 1 +28 21 GS Delay 2 +28 22 GS Delay 3 +28 23 GS Delay 4 +28 24 GS Pan Delay 1 +28 25 GS Pan Delay 2 +28 26 GS Pan Delay 3 +28 27 GS Pan Delay 4 +28 28 GS Delay to Reverb +28 29 GS Pan Repeat +2c 00 AI Through +2c 01 AI Hall +2c 02 AI Ensemble Hall +2c 03 AI Concert Hall +2c 04 AI Room +2c 05 AI Room Large +2c 06 AI Stage +2c 07 AI Wet Plate +2c 08 AI Dry Plate +2c 09 AI Spring +2c 0a AI Early Reflection 1 +2c 0b AI Early Reflection 2 +2c 0c AI Early Reflection 3 +2c 0d AI Stereo Delay +2c 0e AI Cross Delay +2c 0f AI Dual Delay +2c 10 AI Tap Delay 1 +2c 11 AI Tap Delay 2 +2c 12 AI Tap Delay 3 +2c 13 AI Chorus 1 +2c 14 AI Chorus 2 +2c 15 AI Quad Chorus +2c 16 AI Cross Chorus +2c 17 AI Harmonic Chorus +2c 18 AI Symphony Ensemble +2c 19 AI Flanger 1 +2c 1a AI Flanger 2 +2c 1b AI Cross Flanger +2c 1c AI Exciter +2c 1d AI Enhancer +2c 1e AI Distortion +2c 1f AI Overdrive +2c 20 AI Phaser +2c 21 AI Phaser 2 +2c 22 AI Rotary +2c 23 AI Auto Pan +2c 24 AI Tremelo +2c 25 AI 3-band EQ +2c 26 AI Chorus+Delay +2c 27 AI Flanger+Delay +2c 28 AI Delay/Hall +2c 29 AI Delay/Room +2c 2a AI Delay/Chorus +2c 2b AI Delay/Flanger +2c 2c AI Delay/Distortion +2c 2d AI Delay/Overdrive +2c 2e AI Delay/Phaser +2c 2f AI Delay/Rotary +31 00 GS Chorus/Delay +31 01 GS Flanger/Delay +31 02 GS Chorus/Flanger +31 03 GS Double Overdrive +31 04 GS Overdrive/Rotary +31 05 GS Overdrive/Phaser +31 06 GS Overdrive/Auto Wah +31 07 GS Phaser/Rotary +31 08 GS Phaser/Auto Wah +40 00 XG Through +41 00 XG Chorus 1 +41 01 XG Chorus 2 +41 02 XG Chorus 3 +41 03 XG GM Chorus 1 +41 04 XG GM Chorus 2 +41 05 XG GM Chorus 3 +41 06 XG GM Chorus 4 +41 07 XG Feedback Chorus +41 08 XG Chorus 4 +42 00 XG Celeste 1 +42 01 XG Celeste 2 +42 02 XG Celeste 3 +42 03 XG Celeste 4 +43 00 XG Flanger 1 +43 01 XG Flanger 2 +43 07 XG GM Flanger +43 08 XG Flanger 3 +44 00 XG Symphonic +45 00 XG Rotary +45 01 XG Distortion+Rotary +45 02 XG Overdrive+Rotary +45 03 XG Amp Sim+Rotary +46 00 XG Tremelo +47 00 XG Auto Pan +48 00 XG Phaser 1 +48 08 XG Phaser 2 +49 00 XG Distortion +49 01 XG Compressor+Distortion +49 08 XG Stereo Distortion +4a 00 XG Overdrive +4a 08 XG Stereo Overdrive +4b 00 XG Amp Simulator +4b 08 XG Stereo Amp Sim +4c 00 XG 3-band EQ +4d 00 XG 2-band EQ +4e 00 XG Auto Wah +4e 01 XG Auto Wah+Distortion +4e 02 XG Auto Wah+Overdrive +50 00 XG Pitch Shifter +50 01 XG Pitch Shifter 2 +51 00 XG Enhancer +52 00 XG Wah 1 +52 01 XG Wah+Distortion +52 02 XG Wah+Overdrive +52 08 XG Wah 2 +53 00 XG Compressor +54 00 XG Noise Gate +55 00 XG Voice Cancel +56 00 XG 2-way Rotary +56 01 XG 2-way Rotary+Distortion +56 02 XG 2-way Rotary+Overdrive +56 03 XG 2-way Rotary+Amp Sim +57 00 XG Ensemble Detune +58 00 XG Ambience +5d 00 XG Talking Mod +5e 00 XG Lo-Fi +5f 00 XG Delay+Distortion +5f 01 XG Delay+Overdrive +60 00 XG Comp+Dist+Delay +60 01 XG Comp+OvrDrv+Delay +61 00 XG Wah+Dist+Delay +61 01 XG Wah+OvrDrv+Delay +62 00 XG Vintage Hard Dist +62 01 XG Vintage Hard Dist+Delay +62 02 XG Vintage Soft Dist +62 03 XG Vintage Soft Dist+Delay +63 00 XG Dual Rotary 1 +63 01 XG Dual Rotary 2 \ No newline at end of file diff --git a/utils/yamaha/data b/utils/yamaha/data new file mode 120000 index 00000000..e67b4559 --- /dev/null +++ b/utils/yamaha/data @@ -0,0 +1 @@ +../../data \ No newline at end of file diff --git a/utils/yamaha/epromEmu.js b/utils/yamaha/epromEmu.js new file mode 100644 index 00000000..99ae5fbc --- /dev/null +++ b/utils/yamaha/epromEmu.js @@ -0,0 +1,27 @@ +"use strict"; + +import {OctaviaDevice} from "../../src/state/index.mjs"; + +let fakeEprom = { + data: new Uint8Array(4194304), // 4 MiB of EPROM space for MU2000, 2 MiB for MU1000 + offset: 0 +}; +let octavia = new OctaviaDevice(); +octavia.eprom = fakeEprom; +let sysexBlobs = []; +for (let i = 0; i < Deno.args?.length; i ++) { + let e = Deno.args[i]; + try { + sysexBlobs.push(await Deno.readFile(e)); + } catch (err) { + console.error(`Failed loading "${e}".`); + }; +}; + +self.debugMode = false; + +sysexBlobs.forEach((e) => { + octavia.runJson({type: 15, track: 0, data: e}); +}); + +await Deno.writeFile("out.bin", fakeEprom.data, {create: true}); diff --git a/utils/yamaha/s7eReader.js b/utils/yamaha/s7eReader.js new file mode 100644 index 00000000..2f4c7667 --- /dev/null +++ b/utils/yamaha/s7eReader.js @@ -0,0 +1,121 @@ +"use strict"; + +/* + This script converts S7E files into voice maps. + I bear no responsibility for you running this script. You have been warned. +*/ + +let same = function (origin, arr) { + let same = true; + arr.forEach((e, i) => { + same = same && origin[i] == e; + }); + return same; +}; +let readInt = function (arr) { + let sum = 0; + arr.forEach((e) => { + sum *= 256; + sum += e; + }); + return sum; +}; + +let utf8Dec = new TextDecoder(); + +let s7eBlob = await Deno.readFile(`${Deno.args[0]}`); +console.error(`Yamaha S7E file size: ${s7eBlob.length} bytes.`); + +// Constants +const nullHead = [0, 0, 0, 0]; +const globalOffset = 32; + +let ptr = 0, mode = 0, resume = true; +let sections = [], sectPtr = 0; +while (resume) { + let rwin = s7eBlob.subarray(ptr); + ([() => { + // Waiting for header read + if (utf8Dec.decode(rwin.subarray(0, 4)) == "YSFC") { + ptr += 80; + mode = 1; + } else { + ptr ++; + }; + }, () => { + // Read offsets of each section + if (same(rwin.subarray(0, 4), nullHead)) { + sections.forEach((e, i, a) => { + let length = readInt(s7eBlob.subarray(e.start + 4, e.start + 8)); + e.length = length; + console.error(e); + }); + console.info(`MSB LSB PRG NME`); + mode = 2; + } else { + let type = utf8Dec.decode(rwin.subarray(0, 4)), + start = readInt(rwin.subarray(4, 8)); + //console.error(`Section ${type} begins at ${start}.`); + sections.push({type, start}); + ptr += 8; + }; + }, () => { + // Read sections + let section = sections[sectPtr]; + let sectWin = s7eBlob.subarray(section.start, section.start + section.length); + let entryLen = 32; + switch (section.type) { + case "ENVC": { + // Encoded Normal Voice Config + let entryStart = globalOffset; + while (entryStart < sectWin.length) { + let entryWin = sectWin.subarray(entryStart, entryStart + entryLen); + let voiceName = utf8Dec.decode(entryWin.subarray(0, 10)).trimEnd(); + if (voiceName.slice(0, 5) == "Init ") { + voiceName = ""; + }; + voiceName && console.info(`063 ${(entryWin[17] + 13).toString().padStart(3, "0")} ${entryWin[19].toString().padStart(3, "0")} ${voiceName}`); + entryStart += entryLen; + }; + break; + }; + case "EDVC": { + // Encoded Drum Voice Config + let entryStart = globalOffset; + while (entryStart < sectWin.length) { + let entryWin = sectWin.subarray(entryStart, entryStart + entryLen); + let voiceName = utf8Dec.decode(entryWin.subarray(0, 10)).trimEnd(); + if (voiceName.slice(0, 5) == "Init ") { + voiceName = ""; + }; + voiceName && console.info(`063 024 ${entryWin[19].toString().padStart(3, "0")} ${voiceName}`); + entryStart += entryLen; + }; + break; + }; + case "EPVC": { + // Encoded Plugin Voice Config + let entryLen = 32, entryStart = globalOffset; + while (entryStart < sectWin.length) { + let entryWin = sectWin.subarray(entryStart, entryStart + entryLen); + let voiceName = utf8Dec.decode(entryWin.subarray(0, 10)).trimEnd(); + if (voiceName == "----------") { + voiceName = ""; + }; + voiceName && console.info(`063 ${(entryWin[17] + 1).toString().padStart(3, "0")} ${entryWin[19].toString().padStart(3, "0")} ${voiceName}`); + entryStart += entryLen; + }; + break; + }; + }; + sectPtr ++; + if (sectPtr >= sections.length) { + mode = 3; + resume = false; + console.error(`S7E file read end.`); + }; + }][mode] || (() => { + resume = false; + console.error(`Mode out of bound. Stopping.`); + }))(); +}; diff --git a/utils/yamaha/xgSyxAddr.js b/utils/yamaha/xgSyxAddr.js new file mode 100644 index 00000000..10ffee40 --- /dev/null +++ b/utils/yamaha/xgSyxAddr.js @@ -0,0 +1,65 @@ +"use strict"; + +/* + This file will extract XG SysEx addresses from the target SYX file. +*/ + +let fileBuffer = await Deno.readFile(Deno.args[0]), +fileLen = fileBuffer.length; +console.error(`Loaded "${Deno.args[0]}", ${fileLen} bytes in total.`); +let mode = 0, modePtr = 0; +let outPrefix = Deno.args[1] || `${Deno.args[0].slice(0, Deno.args[0].lastIndexOf("."))}`; +let encoder = new TextEncoder(); +let addrLength = 6; + +let streamOut = async function (str) { + let streamBuffer = encoder.encode(str); + let fileName = `${outPrefix}.struct.txt`; + await Deno.writeFile(fileName, streamBuffer, {append: true, create: true}); +}; + +for (let ptr = 0; ptr < fileLen; ptr ++) { + let byte = fileBuffer[ptr]; + switch (mode) { + case 0: { + // Wait for 0xf0 signal + if (byte == 240) { + mode = 1; + modePtr = -1; + addrLength = 6; + }; + break; + }; + case 1: { + // Extracting SysEx address + if (byte == 247) { + await streamOut(`\n`); + mode = 0; + } else { + if (modePtr == 0) { + await streamOut(`0x${ptr.toString(16).padStart(6, "0")}:`); + }; + if (modePtr == 3) { + switch (byte) { + case 1: + case 2: { + addrLength = 8; + break; + }; + case 0: + case 3:{ + //addrLength = 6; + break; + }; + }; + }; + if (modePtr < addrLength) { + await streamOut(" "); + await streamOut(byte.toString(16).padStart(2, "0")); + }; + }; + break; + }; + }; + modePtr ++; +}; diff --git a/utils/yamaha/ydlSyx.js b/utils/yamaha/ydlSyx.js new file mode 100644 index 00000000..77638a42 --- /dev/null +++ b/utils/yamaha/ydlSyx.js @@ -0,0 +1,107 @@ +"use strict"; + +/* + This file converts YDL files into a SysEx blob. +*/ + + +let fileBuffer = await Deno.readFile(Deno.args[0]), +fileLen = fileBuffer.length; +console.error(`Loaded "${Deno.args[0]}", ${fileLen} bytes in total.`); +let chunkSize = 0, fmtType = 0, trkCount = 0, tDiv = 0; +let trkSize = 0; +let count = 0, mode = 2, modePtr = 0; +let outPrefix = Deno.args[1] || `${Deno.args[0].slice(0, Deno.args[0].lastIndexOf("."))}`; +let streamBuffer = new Uint8Array(1); + +let streamOut = async function (byte) { + streamBuffer[0] = byte; + let fileName = `${outPrefix}.syx`; + //console.info(`Writing to ${fileName} ...`); + await Deno.writeFile(fileName, streamBuffer, {append: true, create: true}); +}; + +for (let ptr = 0; ptr < fileLen; ptr ++) { + let byte = fileBuffer[ptr]; + switch (mode) { + case 0: { + // Wait for 0xf0 signal + if (byte == 240) { + mode = 4; + await streamOut(byte); + }; + break; + }; + case 1: { + // Extracting SysEx + await streamOut(byte); + if (byte == 247) { + mode = 0; + count ++; + if (count % 100 == 0) { + console.error(`Written ${count} SysEx blobs so far.`); + }; + }; + break; + }; + case 2: { + // Extracting header meta + switch (ptr) { + case 4: + case 5: + case 6: + case 7: { + chunkSize = chunkSize << 8; + chunkSize += byte; + break; + }; + case 9: { + fmtType = byte; + break; + }; + case 10: + case 11: { + trkCount = trkCount << 8; + trkCount += byte; + break; + }; + case 12: + case 13: { + tDiv = tDiv << 8; + tDiv += byte; + break; + }; + }; + if (ptr == 13) { + console.error(`Yamaha Update File Info\n\nChunk size: ${chunkSize}\nFormat type: ${fmtType}\nTime division: ${tDiv}\nContaining ${trkCount} track(s).\n`); + mode = 3; + modePtr = -1; + }; + break; + }; + case 3: { + // Waiting for SysEx extraction to start + if (modePtr > 3) { + trkSize = trkSize << 8; + trkSize += byte; + }; + if (modePtr == 7) { + console.error(`This track has ${trkSize} bytes.`); + mode = 0; + modePtr = -1; + }; + break; + }; + case 4: { + // Wait till length section is over + if (byte < 128) { + mode = 1; + modePtr = -1; + }; + break; + }; + }; + modePtr ++; +}; + +console.debug(`Extracted ${count} SysEx strings in total.`); From b4dcffb4f6a645b39ff02acf470d0b86929e7499 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Sun, 21 May 2023 16:52:13 +0000 Subject: [PATCH 02/31] Glyph sync. --- data/bitmaps/xg/font.tsv | 176 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 170 insertions(+), 6 deletions(-) diff --git a/data/bitmaps/xg/font.tsv b/data/bitmaps/xg/font.tsv index 7f28cf8e..a8ae377f 100644 --- a/data/bitmaps/xg/font.tsv +++ b/data/bitmaps/xg/font.tsv @@ -429,21 +429,122 @@ CdPt Bitmap 05e8 202020201e 05e9 3c0a32023c 05ea 223e20201e +3041 143a141a14 +3042 4cfe545a4c +3043 1c0202100c 3044 fc0202c038 -3053 8c82828282 +3045 082a2a2a04 +3046 20a2a2a21c +3047 0a2a2c2a2a +3048 22a4a8b622 +3049 143e182a14 +304a 4cfe50124c +304b 42fc423e70 +304d 5452fa5252 +304f 1028448200 +3051 fe0022fc20 +3053 0c82828282 +3055 44c262524a +3057 fc0202020c +3059 405a5afc40 +305b 40fc42fa40 +305c 949ab2d292 +305f 5ee054524a +3061 40fa52524c +3063 101212120c +3064 202222221c +3066 809ca2c282 +3068 1c22e22222 +306a 44f8461e44 +306b fe00848242 +306c 3cc678c63e +306d 48fe20463e 306e 7884f8827c -306f fc0246fc42 -307c 7c02d67cd2 -308a 7008028478 +306f fe004efe48 +3072 bcc202fc80 +3075 bc82bc80bc +3078 106080700e +307b fe00a6fea4 +307e 5656fe5454 +307f 98a4f812fc +3080 58fc42024c +3081 3cc678c23c +3082 50fc525254 +3083 103e103418 +3084 20f826c070 +3085 1c083e141c +3086 7c1078c638 +3087 04021e080a +3088 0c12fc504c +3089 ba8a92524c +308a f20a0204f8 +308b 96a6a2d28c +308c 48fe207e04 +308d 90a2a2d28c +308f 48fe20423c +3093 0618ec020c +3099 c000c00000 +309a 40a0400000 +309b c000c00000 +309c 40a0400000 +30a1 12121c1418 +30a2 8284b890e0 +30a3 04040e0810 30a4 08103ec000 +30a5 1812321418 +30a6 7042c24478 +30a7 12121e1212 +30a8 42427e4242 30a9 12141a3e10 +30aa 484852fe40 +30ab 424cf0427e +30ad 4848fe4848 +30af 30c0424c70 +30b1 30c2427a40 +30b3 424242427e 30b5 40f244f840 +30b7 a252040830 +30b9 828cb0cc82 30ba 4244c854e2 -30c8 fe00201000 +30bb 20fc424272 +30bd c0320408f0 +30bf 30e2524c70 +30c1 52527c9090 +30c3 18021a021c +30c4 f002f204f8 +30c6 20a2bca020 +30c8 00fe201008 +30ca 2222fc2020 +30cb 0444444404 +30cc 4264585864 +30cd 4848de5068 +30ce 02020408f0 +30cf 0ef000f00e +30d2 fc22222222 30d5 80828498e0 +30d8 106080700e +30db 2c22fe202c 30de 8088849ae0 +30df a4a4a45252 +30e0 0e34c41806 +30e1 02241818e4 +30e2 1090fc9212 +30e3 103e101418 +30e4 10e0384670 +30e5 0212121e02 +30e6 4242427e02 +30e7 2a2a2a2a3e +30e8 92929292fe +30e9 20a2a2a438 +30ea fa020204f8 30eb 02fc00fe08 -30f3 8242240810 +30ec fe02040810 +30ed fe828282fe +30ef f0828284f8 +30f2 a0a2a4b8e0 +30f3 4222040830 +30fb 0000100000 +30fc 0010101000 3105 40c042427c 3106 42e4585864 3107 fe808080fe @@ -519,6 +620,69 @@ CdPt Bitmap 314d a2d48894a2 314e d0381638d0 314f 0ef000f00e +ff61 00040a0400 +ff62 f880800000 +ff63 000002023e +ff64 0004020000 +ff65 0000100000 +ff66 90929294f8 +ff67 12121c1418 +ff68 04040e0810 +ff69 181232121c +ff6a 12121e1212 +ff6b 12141a3e10 +ff6c 103c12141c +ff6d 0212121e02 +ff6e 2a2a2a2a3e +ff6f 18021a021c +ff70 0010101000 +ff71 8284b890e0 +ff72 08103e4080 +ff73 7842c24478 +ff74 42427e4242 +ff75 484852fe40 +ff76 424cf0427e +ff77 4848fe4848 +ff78 30c2424c70 +ff79 30c2427c40 +ff7a 424242427e +ff7b 40f244f840 +ff7c a252040830 +ff7d 828cb0cc82 +ff7e 20fc424272 +ff7f c0320408f0 +ff80 30e2524c70 +ff81 52527c9090 +ff82 f002f408f0 +ff83 a2a2bca0a0 +ff84 00fe201008 +ff85 2222fc2020 +ff86 0444444404 +ff87 4264585864 +ff88 4848de5068 +ff89 02020408f0 +ff8a 0ef000f00e +ff8b fc22222222 +ff8c 80828284f8 +ff8d 106080700e +ff8e 2c22fe202c +ff8f 40484c5260 +ff90 a4a4a45252 +ff91 0e34c41806 +ff92 02241818e4 +ff93 9090fc9292 +ff94 10e0384670 +ff95 4242427e02 +ff96 92929292fe +ff97 a2a2a2a4b8 +ff98 fa020204f8 +ff99 02fc00fe04 +ff9a fe02040810 +ff9b fe828282fe +ff9c f8828284f8 +ff9d 4222040830 +ff9e c000c00000 +ff9f 40a0400000 ffa1 202020203e ffa2 20203e203e ffa3 203e063806 From 05690ee6c934fab078e6ad5ffe94c3fd4a6af6ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Sun, 21 May 2023 17:04:12 +0000 Subject: [PATCH 03/31] Glyph sync. --- data/bitmaps/xg/font.tsv | 121 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) diff --git a/data/bitmaps/xg/font.tsv b/data/bitmaps/xg/font.tsv index a8ae377f..89f25785 100644 --- a/data/bitmaps/xg/font.tsv +++ b/data/bitmaps/xg/font.tsv @@ -429,6 +429,10 @@ CdPt Bitmap 05e8 202020201e 05e9 3c0a32023c 05ea 223e20201e +3001 0008040200 +3002 040a040000 +300c 0000f88080 +300d 02023e0000 3041 143a141a14 3042 4cfe545a4c 3043 1c0202100c @@ -620,6 +624,123 @@ CdPt Bitmap 314d a2d48894a2 314e d0381638d0 314f 0ef000f00e +4e00 1010101010 +4e01 8082fe8080 +4e03 20fc222222 +4e07 82fc90929e +4e09 4454545444 +4e11 92fe92fe12 +4e19 bea8f0aabe +4e2d 7848fe4878 +4e45 22c4485462 +4e59 848a92a2c6 +4e5d 42fc407e02 +4e60 84a4a882fe +4e8c 444444404 +4e94 a2fea2be82 +4ea5 5274da7442 +4eac 4678ee7846 +4eba 020cf00c02 +4ebf 7e800e92e2 +4efb 7e80527e92 +5146 2afc00fe2a +5149 521cf01e52 +514b 5a5cf85e5a +516b 0ef000f00e +516d 4658c05846 +5178 0a7cf8f87c +5186 fe90f092fe +52c7 b6bcf4b6b6 +5317 12fe00fe12 +5341 1010fe1010 +5343 50507e9090 +5348 28c87e4848 +5357 5e5cf65c5e +535c 00fe201008 +536f f2fc00fef0 +53e3 7c4444447c +5411 7e40d8427e +541b a8beeaaaee +56db fef282f2fe +571f 0222fe2202 +5800 2478fed2d6 +58ec 50527e9290 +58f0 5e54fc545c +5927 424cf04c42 +5929 9294f89492 +5973 42f4487442 +5b50 9092bed090 +5b8f 6256fa5266 +5b9f 6456fc5664 +5bb6 6458d25e6c +5bc5 625cdc5c62 +5c0f 3802fe0038 +5c11 620afa0468 +5c38 02fca0a0e0 +5c3e fea8beaaea +5c71 3e02fe023e +5ddd fe00fe00fe +5df1 9c929292f6 +5df3 fc929292f6 +5e03 5c68de484c +5e73 a888fe88a8 +5e74 5cd47e5454 +5e9a 7e5afc5a52 +5eff 40fe42fe40 +5f13 b8aaaaaaee +5fc3 70fc720270 +606d 54f25ef454 +6075 5a58fa585a +6208 42f448d442 +620a 7e40fa44ca +620c 7e48fa44ca +6240 7ea87e909e +624b a8aafea8a8 +65bd fe00de7a5a +65e5 fe929292fe +6625 687eee7e68 +662d fe00ee8aee +6708 02fca8aafe +6728 4478fe7844 +672a 1458fe5814 +672c 5064fe6450 +6765 7458fe5874 +677e fe48669a66 +6804 e254fe54e2 +68ee 4c7eec7e4c +6bc5 da5eda94da +6c0f 7e52789492 +6c34 243afe1824 +6d69 ae00d6fa56 +706b 7204f80472 +7530 fe92fe92fe +7531 7c54fc547c +7532 f8a8fea8f8 +7533 7c54fe547c +7678 aada1cdaaa +767e beaaeaaabe +7a7a 6a5aee5a6a +7af9 20fe40fe40 +7bc4 54fe54de5a +7fe0 94dcf69cd4 +897f befaa2fabe +8a69 d65650fa5e +8c37 50ae0aae50 +8d8a 52fc527a4a +8f9b 5474de7454 +8fb0 fedcdad49a +8fd1 be027aa2ba +90f7 729c00fed8 +9149 bef2a6f2be +91cd baaafeaaba +91d1 2a6ebe6e2a +9577 feb2e8a4aa +964d fed854ee54 +9686 fed85aee5a +96e3 6e506efe4a +97cb 646cfe6c24 +99c4 faee22fc22 +9ce5 7cd86c5a7e ff61 00040a0400 ff62 f880800000 ff63 000002023e From cc44a115ff05e1240d89032813d29b32f83dd937 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Mon, 22 May 2023 04:28:51 +0000 Subject: [PATCH 04/31] QoL fix for demos. --- src/fakeNs5r/index.js | 1 + src/fakeQy/index.js | 1 + 2 files changed, 2 insertions(+) diff --git a/src/fakeNs5r/index.js b/src/fakeNs5r/index.js index abbfe0da..0a7ebcf3 100644 --- a/src/fakeNs5r/index.js +++ b/src/fakeNs5r/index.js @@ -86,6 +86,7 @@ getBlobFrom(`list.tsv`).then(async (response) => { stDemo.forEach(function (e, i, a) { e.addEventListener("click", async function () { audioPlayer.pause(); + visualizer.device.setLetterDisplay(codepointArray(`\x8a${demoPool.data[i].artist.slice(0, 15).padEnd(15, " ")}\x8b${demoPool.data[i].title.slice(0, 15)}`)); if (!demoBlobs[e.title]?.midi) { demoBlobs[e.title] = {}; audioPlayer.src = "about:blank"; diff --git a/src/fakeQy/index.js b/src/fakeQy/index.js index 53602dd0..4cfbd11f 100644 --- a/src/fakeQy/index.js +++ b/src/fakeQy/index.js @@ -86,6 +86,7 @@ getBlobFrom(`list.tsv`).then(async (response) => { stDemo.forEach(function (e, i, a) { e.addEventListener("click", async function () { audioPlayer.pause(); + visualizer.device.setLetterDisplay(codepointArray(`\x8a${demoPool.data[i].artist.slice(0, 15).padEnd(15, " ")}\x8b${demoPool.data[i].title.slice(0, 15)}`)); if (!demoBlobs[e.title]?.midi) { demoBlobs[e.title] = {}; audioPlayer.src = "about:blank"; From eeb95e3c370a87c17dbb97296fc83c05c2f7dd30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Fri, 26 May 2023 15:53:55 +0000 Subject: [PATCH 05/31] `disableMsbSet` for `setChType()` --- dist/basic.mjs | 4 ++-- dist/cambiare.mjs | 22 +++++++++++----------- dist/state.mjs | 18 +++++++++--------- dist/xp_basic.mjs | 4 ++-- dist/xp_state.mjs | 16 ++++++++-------- src/state/index.mjs | 8 ++++---- 6 files changed, 36 insertions(+), 36 deletions(-) diff --git a/dist/basic.mjs b/dist/basic.mjs index 20ad5886..a2691fa7 100644 --- a/dist/basic.mjs +++ b/dist/basic.mjs @@ -1,4 +1,4 @@ -var G=Object.create;var O=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var z=(e,i)=>()=>(i||e((i={exports:{}}).exports,i),i.exports);var K=(e,i,o,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of F(i))!X.call(e,t)&&t!==o&&O(e,t,{get:()=>i[t],enumerable:!(a=_(i,t))||a.enumerable});return e};var q=(e,i,o)=>(o=e!=null?G(V(e)):{},K(i||!e||!e.__esModule?O(o,"default",{value:e,enumerable:!0}):o,e));var N=z((ze,x)=>{(function(){"use strict";let e={fatal:!0},i=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(a,t){if(a instanceof Uint8Array)return o.Uint8(a);if(typeof a=="string")return o.Base64(a);if(a instanceof HTMLElement&&a.type==="file")return o.addListener(a,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(a,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(a===void 0||!(a instanceof HTMLElement)||a.tagName!=="INPUT"||a.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},a.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let l=new FileReader;l.readAsArrayBuffer(r.target.files[0]),l.onload=function(f){t(o.Uint8(new Uint8Array(f.target.result)))}})},Base64:function(a){let t=function(f){var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(f=f.replace(/^.*?base64,/,""),f=String(f).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(f))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");f+="==".slice(2-(3&f.length));let p,b="",s,n,h=0;for(;h>16&255):n===64?String.fromCharCode(p>>16&255,p>>8&255):String.fromCharCode(p>>16&255,p>>8&255,255&p);return b}(a=String(a));var r=t.length;let l=new Uint8Array(new ArrayBuffer(r));for(let f=0;f{n[c]=this.readInt(1)});for(let u=0;u191||g>127&&g<160)throw new RangeError(`Invalid code point: ${g}`)}h=!0,console.debug(`String byte sequence in ${i[u].encoding}`)}catch(c){console.debug(`SMF string ${c}`)}return d||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let s=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)s=this.readInt(1);else{let h=[];for(;128<=this.data.getUint8(this.pointer);)h.push(this.readInt(1)-128);var n=this.readInt(1);for(let d=1;d<=h.length;d++)s+=h[h.length-d]*Math.pow(128,d);s+=n}return s}};if(t.data=new DataView(l.buffer,l.byteOffset,l.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let r={};r.formatType=t.readInt(2),r.tracks=t.readInt(2),r.track=[];var l=t.readInt(1),f=t.readInt(1);128<=l?(r.timeDivision=[],r.timeDivision[0]=l-128,r.timeDivision[1]=f):r.timeDivision=256*l+f;for(let s=1;s<=r.tracks;s++){r.track[s-1]={event:[]};var $,p=t.readInt(4);if(p===-1)break;if(p!==1297379947)return!1;t.readInt(4);let n=0,h=!1,d,u;for(;!h&&(n++,r.track[s-1].event[n-1]={},r.track[s-1].event[n-1].deltaTime=t.readIntVLV(),(d=t.readInt(1))!==-1);)if(128<=d?u=d:(d=u,t.movePointer(-1)),d===255){r.track[s-1].event[n-1].type=255,r.track[s-1].event[n-1].metaType=t.readInt(1);var b=t.readIntVLV();switch(r.track[s-1].event[n-1].metaType){case 47:case-1:h=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[s-1].event[n-1].data=t.readStr(b);break;case 33:case 89:case 81:r.track[s-1].event[n-1].data=t.readInt(b);break;case 84:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1),r.track[s-1].event[n-1].data[2]=t.readInt(1),r.track[s-1].event[n-1].data[3]=t.readInt(1),r.track[s-1].event[n-1].data[4]=t.readInt(1);break;case 88:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1),r.track[s-1].event[n-1].data[2]=t.readInt(1),r.track[s-1].event[n-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].metaType,t,b)),this.customInterpreter!==null&&r.track[s-1].event[n-1].data!==!1||(t.readInt(b),r.track[s-1].event[n-1].data=t.readInt(b),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((d=d.toString(16).split(""))[1]||d.unshift("0"),r.track[s-1].event[n-1].type=parseInt(d[0],16),r.track[s-1].event[n-1].channel=parseInt(d[1],16),r.track[s-1].event[n-1].type){case 15:this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].type,t,!1)),this.customInterpreter!==null&&r.track[s-1].event[n-1].data!==!1||($=t.readIntVLV(),r.track[s-1].event[n-1].data=t.readInt($),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1);break;case 12:case 13:r.track[s-1].event[n-1].data=t.readInt(1);break;case-1:h=!0;break;default:if(this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].metaType,t,!1)),this.customInterpreter===null||r.track[s-1].event[n-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof x<"u")x.exports=o;else{let a=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;a.MidiParser=o}})()});var k=class{#e={};addEventListener(e,i){this.#e[e]||(this.#e[e]=[]),this.#e[e].unshift(i)}removeEventListener(e,i){if(this.#e[e]){let o=this.#e[e].indexOf(i);o>-1&&this.#e[e].splice(o,1),this.#e[e].length<1&&delete this.#e[e]}}dispatchEvent(e,i){let o=new Event(e),a=this;o.data=i,this.#e[e]?.length>0&&this.#e[e].forEach(function(t){try{t?.call(a,o)}catch(r){console.error(r)}}),this[`on${e}`]&&this[`on${e}`](o)}};var D=class{#e={};context;set(e,i){this.#e[e]=i}has(e){return!!this.#e[e]}async read(e,i){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#e[e].call(this.context||this,i)}};var Q=function(e,i){let o=!0;return i.forEach((a,t)=>{o=o&&e[t]==a}),o},P=function(e){let i=0;return e.forEach(o=>{i*=256,i+=o}),i},w=new TextDecoder,I=new D;I.set("s7e",async function(e){let i=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",a=[0,0,0,0],t=32,r=0,l=0,f=!0,$=[],p=0;for(;f;){let b=i.subarray(r);([()=>{w.decode(b.subarray(0,4))=="YSFC"?(r+=80,l=1):r++},()=>{if(Q(b.subarray(0,4),a))$.forEach((s,n,h)=>{let d=P(i.subarray(s.start+4,s.start+8));s.length=d}),l=2;else{let s=w.decode(b.subarray(0,4)),n=P(b.subarray(4,8));$.push({type:s,start:n}),r+=8}},()=>{let s=$[p],n=i.subarray(s.start,s.start+s.length),h=32;switch(s.type){case"ENVC":{let d=t;for(;d()=>(i||e((i={exports:{}}).exports,i),i.exports);var K=(e,i,o,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of F(i))!X.call(e,t)&&t!==o&&O(e,t,{get:()=>i[t],enumerable:!(a=_(i,t))||a.enumerable});return e};var q=(e,i,o)=>(o=e!=null?G(V(e)):{},K(i||!e||!e.__esModule?O(o,"default",{value:e,enumerable:!0}):o,e));var L=z((ze,x)=>{(function(){"use strict";let e={fatal:!0},i=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(a,t){if(a instanceof Uint8Array)return o.Uint8(a);if(typeof a=="string")return o.Base64(a);if(a instanceof HTMLElement&&a.type==="file")return o.addListener(a,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(a,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(a===void 0||!(a instanceof HTMLElement)||a.tagName!=="INPUT"||a.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},a.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let l=new FileReader;l.readAsArrayBuffer(r.target.files[0]),l.onload=function(f){t(o.Uint8(new Uint8Array(f.target.result)))}})},Base64:function(a){let t=function(f){var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(f=f.replace(/^.*?base64,/,""),f=String(f).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(f))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");f+="==".slice(2-(3&f.length));let p,b="",s,n,h=0;for(;h>16&255):n===64?String.fromCharCode(p>>16&255,p>>8&255):String.fromCharCode(p>>16&255,p>>8&255,255&p);return b}(a=String(a));var r=t.length;let l=new Uint8Array(new ArrayBuffer(r));for(let f=0;f{n[c]=this.readInt(1)});for(let u=0;u191||g>127&&g<160)throw new RangeError(`Invalid code point: ${g}`)}h=!0,console.debug(`String byte sequence in ${i[u].encoding}`)}catch(c){console.debug(`SMF string ${c}`)}return d||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let s=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)s=this.readInt(1);else{let h=[];for(;128<=this.data.getUint8(this.pointer);)h.push(this.readInt(1)-128);var n=this.readInt(1);for(let d=1;d<=h.length;d++)s+=h[h.length-d]*Math.pow(128,d);s+=n}return s}};if(t.data=new DataView(l.buffer,l.byteOffset,l.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let r={};r.formatType=t.readInt(2),r.tracks=t.readInt(2),r.track=[];var l=t.readInt(1),f=t.readInt(1);128<=l?(r.timeDivision=[],r.timeDivision[0]=l-128,r.timeDivision[1]=f):r.timeDivision=256*l+f;for(let s=1;s<=r.tracks;s++){r.track[s-1]={event:[]};var $,p=t.readInt(4);if(p===-1)break;if(p!==1297379947)return!1;t.readInt(4);let n=0,h=!1,d,u;for(;!h&&(n++,r.track[s-1].event[n-1]={},r.track[s-1].event[n-1].deltaTime=t.readIntVLV(),(d=t.readInt(1))!==-1);)if(128<=d?u=d:(d=u,t.movePointer(-1)),d===255){r.track[s-1].event[n-1].type=255,r.track[s-1].event[n-1].metaType=t.readInt(1);var b=t.readIntVLV();switch(r.track[s-1].event[n-1].metaType){case 47:case-1:h=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[s-1].event[n-1].data=t.readStr(b);break;case 33:case 89:case 81:r.track[s-1].event[n-1].data=t.readInt(b);break;case 84:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1),r.track[s-1].event[n-1].data[2]=t.readInt(1),r.track[s-1].event[n-1].data[3]=t.readInt(1),r.track[s-1].event[n-1].data[4]=t.readInt(1);break;case 88:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1),r.track[s-1].event[n-1].data[2]=t.readInt(1),r.track[s-1].event[n-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].metaType,t,b)),this.customInterpreter!==null&&r.track[s-1].event[n-1].data!==!1||(t.readInt(b),r.track[s-1].event[n-1].data=t.readInt(b),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((d=d.toString(16).split(""))[1]||d.unshift("0"),r.track[s-1].event[n-1].type=parseInt(d[0],16),r.track[s-1].event[n-1].channel=parseInt(d[1],16),r.track[s-1].event[n-1].type){case 15:this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].type,t,!1)),this.customInterpreter!==null&&r.track[s-1].event[n-1].data!==!1||($=t.readIntVLV(),r.track[s-1].event[n-1].data=t.readInt($),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1);break;case 12:case 13:r.track[s-1].event[n-1].data=t.readInt(1);break;case-1:h=!0;break;default:if(this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].metaType,t,!1)),this.customInterpreter===null||r.track[s-1].event[n-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof x<"u")x.exports=o;else{let a=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;a.MidiParser=o}})()});var k=class{#e={};addEventListener(e,i){this.#e[e]||(this.#e[e]=[]),this.#e[e].unshift(i)}removeEventListener(e,i){if(this.#e[e]){let o=this.#e[e].indexOf(i);o>-1&&this.#e[e].splice(o,1),this.#e[e].length<1&&delete this.#e[e]}}dispatchEvent(e,i){let o=new Event(e),a=this;o.data=i,this.#e[e]?.length>0&&this.#e[e].forEach(function(t){try{t?.call(a,o)}catch(r){console.error(r)}}),this[`on${e}`]&&this[`on${e}`](o)}};var D=class{#e={};context;set(e,i){this.#e[e]=i}has(e){return!!this.#e[e]}async read(e,i){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#e[e].call(this.context||this,i)}};var Q=function(e,i){let o=!0;return i.forEach((a,t)=>{o=o&&e[t]==a}),o},P=function(e){let i=0;return e.forEach(o=>{i*=256,i+=o}),i},w=new TextDecoder,I=new D;I.set("s7e",async function(e){let i=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",a=[0,0,0,0],t=32,r=0,l=0,f=!0,$=[],p=0;for(;f;){let b=i.subarray(r);([()=>{w.decode(b.subarray(0,4))=="YSFC"?(r+=80,l=1):r++},()=>{if(Q(b.subarray(0,4),a))$.forEach((s,n,h)=>{let d=P(i.subarray(s.start+4,s.start+8));s.length=d}),l=2;else{let s=w.decode(b.subarray(0,4)),n=P(b.subarray(4,8));$.push({type:s,start:n}),r+=8}},()=>{let s=$[p],n=i.subarray(s.start,s.start+s.length),h=32;switch(s.type){case"ENVC":{let d=t;for(;d=$.length&&(l=3,f=!1)}][l]||(()=>{f=!1}))()}return o});var j=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]);var Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),W={};`hi*, @@ -138,4 +138,4 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let i=e.split(",");W[i[0]]=i[1]});var A=function(e,i,o){let a=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let r=0;r127)return console.debug(`Early termination: ${a}`),a.pop(),i.backOne(),i.backOne(),new Uint8Array(a)}}}return new Uint8Array(a)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var m={length:S.length};S.forEach((e,i)=>{m[e]=i});var U={length:v.length};v.forEach((e,i)=>{U[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var M=q(N(),1);var L=class{#e=!1;constructor(e,i,o,a){this.#e=e,this.start=i,this.end=o,this.data=a}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},T=class extends L{constructor(e,i,o){super(!0,e,i,o)}},B=class extends L{constructor(e,i){super(!1,e,e,i)}},C=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let a=0;ae);a++){if(this[a].endt.#e&&(o.push(r),t.#e=r.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],a=-1,t=Math.ceil(Math.sqrt(this.length)),r=!0;for(let l=0;l=e&&(a=l):a=a<0?l:a;for(;r;)this[a]?.end=e&&o.push(this[a]):r=!1,a++;return o}};var ee=0xffffffffffff,H=function(e){let i=new C,o=this,a=e.timeDivision,t=120,r=new C,l=0,f=0;r.push(new T(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,r[r.length-1]&&r.push(new T(l,0xffffffffffff,[t,0])))})}),r.fresh(),r.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;r.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return r.forEach(function(s){let n=s.start,h=n/b/a*60+p;b=s.data[0],p=h-n/b/a*60,s.data[1]=p}),console.debug("All tempo changes: ",r),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=r.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/a*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};M.default.customInterpreter=A;var at=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#a=.5;#l=120;#t=4;#o=4;#r=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#a=.5,this.#l=120,this.#t=4,this.#o=4,this.#r=0,this.#c=0}async loadFile(e){this.#e=H(M.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#a}get noteOverall(){return this.noteProgress-this.#r}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,a=new Set,t=this,r=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?a.add(c.part*128+c.data[0]):a.has(c.part*128+c.data[0])&&o++),u.data.type==8&&a.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{r.push(g);break}}g?.reply&&delete g.reply}),r?.length>0&&this.dispatchEvent("meta",r);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=m.length*c;if(y>=0){let E=4*.25**(p[R+m[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+m[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let a=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(r){(a.#i[r.meta]||console.debug).call(a,r.meta,r.data)})}),this.device.addEventListener("mode",function(t){a.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){a.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){a.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){a.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){a.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){a.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,r){a.#s?.length<1&&(a.#s=r)},this.#i[81]=function(t,r){let l=a.noteProgress,f=a.#a||.5;a.#l=6e7/r,a.#a=r/1e6,a.#r+=l*(f/a.#a)-l},this.#i[88]=function(t,r){let l=a.noteProgress,f=a.noteOverall,$=a.noteBar,p=a.noteBeat,b=a.#t,s=a.#o;a.#t=r[0],a.#o=1<=b&&(b{let i=e.split(",");W[i[0]]=i[1]});var U=function(e,i,o){let a=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let r=0;r127)return console.debug(`Early termination: ${a}`),a.pop(),i.backOne(),i.backOne(),new Uint8Array(a)}}}return new Uint8Array(a)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var m={length:S.length};S.forEach((e,i)=>{m[e]=i});var A={length:v.length};v.forEach((e,i)=>{A[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var M=q(L(),1);var N=class{#e=!1;constructor(e,i,o,a){this.#e=e,this.start=i,this.end=o,this.data=a}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},C=class extends N{constructor(e,i,o){super(!0,e,i,o)}},B=class extends N{constructor(e,i){super(!1,e,e,i)}},T=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let a=0;ae);a++){if(this[a].endt.#e&&(o.push(r),t.#e=r.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],a=-1,t=Math.ceil(Math.sqrt(this.length)),r=!0;for(let l=0;l=e&&(a=l):a=a<0?l:a;for(;r;)this[a]?.end=e&&o.push(this[a]):r=!1,a++;return o}};var ee=0xffffffffffff,H=function(e){let i=new T,o=this,a=e.timeDivision,t=120,r=new T,l=0,f=0;r.push(new C(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,r[r.length-1]&&r.push(new C(l,0xffffffffffff,[t,0])))})}),r.fresh(),r.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;r.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return r.forEach(function(s){let n=s.start,h=n/b/a*60+p;b=s.data[0],p=h-n/b/a*60,s.data[1]=p}),console.debug("All tempo changes: ",r),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=r.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/a*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};M.default.customInterpreter=U;var at=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#a=.5;#l=120;#t=4;#o=4;#r=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#a=.5,this.#l=120,this.#t=4,this.#o=4,this.#r=0,this.#c=0}async loadFile(e){this.#e=H(M.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#a}get noteOverall(){return this.noteProgress-this.#r}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,a=new Set,t=this,r=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?a.add(c.part*128+c.data[0]):a.has(c.part*128+c.data[0])&&o++),u.data.type==8&&a.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{r.push(g);break}}g?.reply&&delete g.reply}),r?.length>0&&this.dispatchEvent("meta",r);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=m.length*c;if(y>=0){let E=4*.25**(p[R+m[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+m[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let a=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(r){(a.#i[r.meta]||console.debug).call(a,r.meta,r.data)})}),this.device.addEventListener("mode",function(t){a.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){a.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){a.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){a.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){a.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){a.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,r){a.#s?.length<1&&(a.#s=r)},this.#i[81]=function(t,r){let l=a.noteProgress,f=a.#a||.5;a.#l=6e7/r,a.#a=r/1e6,a.#r+=l*(f/a.#a)-l},this.#i[88]=function(t,r){let l=a.noteProgress,f=a.noteOverall,$=a.noteBar,p=a.noteBeat,b=a.#t,s=a.#o;a.#t=r[0],a.#o=1<=b&&(b()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Te(n))!Ce.call(e,t)&&t!==l&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,l)=>(l=e!=null?Se(Me(e)):{},Oe(n||!e||!e.__esModule?j(l,"default",{value:e,enumerable:!0}):l,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],l={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return l.Uint8(o);if(typeof o=="string")return l.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return l.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(i){if(!i.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(i.target.files[0]),a.onload=function(s){t(l.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var i=t.length;let a=new Uint8Array(new ArrayBuffer(i));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)c+=p[p.length-b]*Math.pow(128,b);c+=f}return c}};if(t.data=new DataView(a.buffer,a.byteOffset,a.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let i={};i.formatType=t.readInt(2),i.tracks=t.readInt(2),i.track=[];var a=t.readInt(1),s=t.readInt(1);128<=a?(i.timeDivision=[],i.timeDivision[0]=a-128,i.timeDivision[1]=s):i.timeDivision=256*a+s;for(let c=1;c<=i.tracks;c++){i.track[c-1]={event:[]};var r,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,i.track[c-1].event[f-1]={},i.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){i.track[c-1].event[f-1].type=255,i.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(i.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:i.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:i.track[c-1].event[f-1].data=t.readInt(d);break;case 84:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1),i.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(t.readInt(d),i.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),i.track[c-1].event[f-1].type=parseInt(b[0],16),i.track[c-1].event[f-1].channel=parseInt(b[1],16),i.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(r=t.readIntVLV(),i.track[c-1].event[f-1].data=t.readInt(r),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:i.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||i.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return i},customInterpreter:null};if(typeof K<"u")K.exports=l;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=l}})()});var A=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),o=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,l)}catch(i){console.error(i)}}),this[`on${e}`]&&this[`on${e}`](l)}};var Z=function(e,n){let l=Math.min(e.length,n.length),o=e.slice(0,l),t=n.slice(0,l),i=0,a=0;for(;a0){let o=this.pool.length,t=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(i==o)i-=t;else{let r=Z(n,this.pool[i]);switch(r){case 0:{a=0;break}case 1:{i+t<=o&&(i+=t);break}case-1:{i!=0&&(i-=t);break}default:console.warn(`Unexpected result ${r}.`)}}t=t>>1,a--}let s=!0;if(i>=this.pool.length)s=!1;else{let r=this;this.pool[i].forEach(function(h,d,c){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[i])>0&&i++}return s||l?i:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...l):this.pool[o].data(n.slice(this.pool[o].length),...l):this.default(n,...l)}};var De=["MSB","PRG","LSB"],B=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},H=class{#t;strictMode=!1;get(e=0,n=0,l=0,o){let t=[e,n,l],i,a=Array.from(arguments);switch(o){case"xg":{e==32?a[2]+=4:e==33||e==35||e==36?a[2]+=5:e==79?a[0]=95:e==80?a[0]=96:e==81?a[0]=97:e==82?a[0]=98:e==83?a[0]=99:e==84&&(a[0]=100);break}case"gs":{e==0&&l<5?a[2]=0:e>125&&l<5&&l!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&l==0&&(a[2]=5);break}case"s90es":{l<8?a[2]+=17:l<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{l<8?a[2]+=28:l<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let s=" ",r="M",h=!1,d=0;switch(a[0]){case 0:{a[2]==127?r="MT-a":a[2]==126?r="MT-b":a[2]==7?r="GM-k":a[2]==5?r="SG-a":a[2]==4?r="SP-l":a[2]==0||o=="gs"&&a[2]<5?r="GM-a":(r="y",h=!0);break}case 8:{o=="sg"?r="GM-s":r="r:";break}case 48:{r=`yM${(a[2]>>3).toString().padStart(2,"0")}`,h=!0;break}case 56:{r="GM-b";break}case 61:case 120:{r="rDrm";break}case 62:{r="kDrm";break}case 63:{if(a[2]<17){let b=a[2];r=b<10?"kP:":"kC:",r+=b%10}else a[2]<34?r=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:r="Ds";break}case 64:{r="ySFX";break}case 67:{r="DX:S";break}case 80:case 81:case 82:case 83:{r=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{r=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{r=`${["DR","PC"][a[2]]}-d`;break}case 96:{r=a[2]==106?"AP-a":"PF",a[2]>63&&(d=63),h=!0;break}case 97:{r="VL:",h=!0,d=112;break}case 98:{r="SG-a";break}case 99:{r="DX",a[2]>63&&(d=63),h=!0;break}case 100:{r="AN",a[2]>63&&(d=63),h=!0;break}case 121:{r=`GM-${a[2]?"":"a"}`,h=!0;break}case 122:{r="lDrm";break}case 126:{r="yDrS";break}case 127:{a[2]==127?r="rDrm":r="yDrm";break}default:a[0]<48?r="r:":r="M"}r.length<4&&(r+=`${(h?l:e)-d}`.padStart(4-r.length,"0")),o=="xg"&&e==16&&(i=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,s=" ");let c=[a[0],a[1],a[2]];for(;!(i?.length>=0);)i=this.#t[a[1]||0][(a[0]<<7)+a[2]],i||(this.strictMode?(i="",s="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,s="^"):a[2]<1?(a[0]=0,s="*"):(a[2]--,s="^"):e==48?(a[0]=0,a[2]=0,s="!"):e==62?(a[1]--,s=" ",a[1]<1&&!i?.length&&(a[0]=0,s="!")):e<63?a[0]==0?(a[2]=0,s="^"):a[2]<1?(a[0]=0,s="*"):a[2]--:e==80?(i=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(i=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(i=`GM2Vox0${l}`,s="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,i=this.#t[a[1]||0][(a[0]<<7)+a[2]],i?s=" ":(i="",s="*")):a[1]==0?(i=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,s="!"):a[0]==0?(a[2]=0,s="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,s="!"):(a[0]=0,s="?"));let f=[a[0],a[1],a[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(i="");let p="??";switch(a[0]){case 0:{a[2]==0?p="GM":a[2]==5||a[2]==7?p="KG":a[2]<120?p="XG":a[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{a[2]<17?p="KR":a[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][a[2]];break}case 96:{p=a[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=a[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=a[2]==127?"MT":n==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&o=="xg"?p="XG":p="GS")}return{name:i||`${B(e||0)} ${B(n||0)} ${B(l||0)}`,iid:c,eid:f,sid:t,ending:s,sect:r,standard:p}}async load(e,n,l){let o=this,t=[],i=0,a=0;e.split(` -`).forEach(function(s,r){let h=s.split(" "),d=[];r==0?h.forEach(function(c,f){t[De.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],i++),a++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${l||"(internal)"}": ${a} total, ${i} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let i=t<<7;for(let a=o[0];a<=o[1];a++){let s=i+a;for(let r=n[0];r<=n[1];r++)delete this.#t[r][s]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,o){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let l=!0;return n.forEach((o,t)=>{l=l&&e[t]==o}),l},ee=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},R=new TextDecoder,U=new J;U.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",o=[0,0,0,0],t=32,i=0,a=0,s=!0,r=[],h=0;for(;s;){let d=n.subarray(i);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(i+=80,a=1):i++},()=>{if(Ie(d.subarray(0,4),o))r.forEach((c,f,p)=>{let b=ee(n.subarray(c.start+4,c.start+8));c.length=b}),a=2;else{let c=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));r.push({type:c,start:f}),i+=8}},()=>{let c=r[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let b=t;for(;b()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Te(n))!Me.call(e,t)&&t!==l&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,l)=>(l=e!=null?Se(Ce(e)):{},Oe(n||!e||!e.__esModule?j(l,"default",{value:e,enumerable:!0}):l,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],l={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return l.Uint8(o);if(typeof o=="string")return l.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return l.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(i){if(!i.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let s=new FileReader;s.readAsArrayBuffer(i.target.files[0]),s.onload=function(a){t(l.Uint8(new Uint8Array(a.target.result)))}})},Base64:function(o){let t=function(a){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(a=a.replace(/^.*?base64,/,""),a=String(a).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(a))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");a+="==".slice(2-(3&a.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var i=t.length;let s=new Uint8Array(new ArrayBuffer(i));for(let a=0;a{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)c+=p[p.length-b]*Math.pow(128,b);c+=f}return c}};if(t.data=new DataView(s.buffer,s.byteOffset,s.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let i={};i.formatType=t.readInt(2),i.tracks=t.readInt(2),i.track=[];var s=t.readInt(1),a=t.readInt(1);128<=s?(i.timeDivision=[],i.timeDivision[0]=s-128,i.timeDivision[1]=a):i.timeDivision=256*s+a;for(let c=1;c<=i.tracks;c++){i.track[c-1]={event:[]};var r,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,i.track[c-1].event[f-1]={},i.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){i.track[c-1].event[f-1].type=255,i.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(i.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:i.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:i.track[c-1].event[f-1].data=t.readInt(d);break;case 84:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1),i.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(t.readInt(d),i.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),i.track[c-1].event[f-1].type=parseInt(b[0],16),i.track[c-1].event[f-1].channel=parseInt(b[1],16),i.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(r=t.readIntVLV(),i.track[c-1].event[f-1].data=t.readInt(r),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:i.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||i.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return i},customInterpreter:null};if(typeof K<"u")K.exports=l;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=l}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),o=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,l)}catch(i){console.error(i)}}),this[`on${e}`]&&this[`on${e}`](l)}};var Z=function(e,n){let l=Math.min(e.length,n.length),o=e.slice(0,l),t=n.slice(0,l),i=0,s=0;for(;s0){let o=this.pool.length,t=1<=1&&s>=0;){if(s<=0)throw new Error("TTL reached.");if(i==o)i-=t;else{let r=Z(n,this.pool[i]);switch(r){case 0:{s=0;break}case 1:{i+t<=o&&(i+=t);break}case-1:{i!=0&&(i-=t);break}default:console.warn(`Unexpected result ${r}.`)}}t=t>>1,s--}let a=!0;if(i>=this.pool.length)a=!1;else{let r=this;this.pool[i].forEach(function(h,d,c){a&&h!=n[d]&&(a=!1)}),!a&&Z(n,this.pool[i])>0&&i++}return a||l?i:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...l):this.pool[o].data(n.slice(this.pool[o].length),...l):this.default(n,...l)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},B=class{#t;strictMode=!1;get(e=0,n=0,l=0,o){let t=[e,n,l],i,s=Array.from(arguments);switch(o){case"xg":{e==32?s[2]+=4:e==33||e==35||e==36?s[2]+=5:e==79?s[0]=95:e==80?s[0]=96:e==81?s[0]=97:e==82?s[0]=98:e==83?s[0]=99:e==84&&(s[0]=100);break}case"gs":{e==0&&l<5?s[2]=0:e>125&&l<5&&l!=2&&(s[2]=e,s[0]=0);break}case"sg":{e==8&&l==0&&(s[2]=5);break}case"s90es":{l<8?s[2]+=17:l<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}case"motif":{l<8?s[2]+=28:l<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}}let a=" ",r="M",h=!1,d=0;switch(s[0]){case 0:{s[2]==127?r="MT-a":s[2]==126?r="MT-b":s[2]==7?r="GM-k":s[2]==5?r="SG-a":s[2]==4?r="SP-l":s[2]==0||o=="gs"&&s[2]<5?r="GM-a":(r="y",h=!0);break}case 8:{o=="sg"?r="GM-s":r="r:";break}case 48:{r=`yM${(s[2]>>3).toString().padStart(2,"0")}`,h=!0;break}case 56:{r="GM-b";break}case 61:case 120:{r="rDrm";break}case 62:{r="kDrm";break}case 63:{if(s[2]<17){let b=s[2];r=b<10?"kP:":"kC:",r+=b%10}else s[2]<34?r=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][s[2]-17]:r="Ds";break}case 64:{r="ySFX";break}case 67:{r="DX:S";break}case 80:case 81:case 82:case 83:{r=`Prg${"UABC"[s[0]-80]}`;break}case 88:case 89:case 90:case 91:{r=`Cmb${"UABC"[s[0]-88]}`;break}case 95:{r=`${["DR","PC"][s[2]]}-d`;break}case 96:{r=s[2]==106?"AP-a":"PF",s[2]>63&&(d=63),h=!0;break}case 97:{r="VL:",h=!0,d=112;break}case 98:{r="SG-a";break}case 99:{r="DX",s[2]>63&&(d=63),h=!0;break}case 100:{r="AN",s[2]>63&&(d=63),h=!0;break}case 121:{r=`GM-${s[2]?"":"a"}`,h=!0;break}case 122:{r="lDrm";break}case 126:{r="yDrS";break}case 127:{s[2]==127?r="rDrm":r="yDrm";break}default:s[0]<48?r="r:":r="M"}r.length<4&&(r+=`${(h?l:e)-d}`.padStart(4-r.length,"0")),o=="xg"&&e==16&&(i=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,a=" ");let c=[s[0],s[1],s[2]];for(;!(i?.length>=0);)i=this.#t[s[1]||0][(s[0]<<7)+s[2]],i||(this.strictMode?(i="",a="?"):this.#t[s[1]||0][s[0]<<7]?s[0]==0?(s[2]=0,a="^"):s[2]<1?(s[0]=0,a="*"):(s[2]--,a="^"):e==48?(s[0]=0,s[2]=0,a="!"):e==62?(s[1]--,a=" ",s[1]<1&&!i?.length&&(s[0]=0,a="!")):e<63?s[0]==0?(s[2]=0,a="^"):s[2]<1?(s[0]=0,a="*"):s[2]--:e==80?(i=`PrgU:${n.toString().padStart(3,"0")}`,a="!"):e==88?(i=`CmbU:${n.toString().padStart(3,"0")}`,a="!"):e==121?(i=`GM2Vox0${l}`,a="#"):e==122?(s[1]==32?s[1]==0:s[1]%=7,i=this.#t[s[1]||0][(s[0]<<7)+s[2]],i?a=" ":(i="",a="*")):s[1]==0?(i=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,a="!"):s[0]==0?(s[2]=0,a="^"):s[2]>0?s[2]--:s[1]>0?(s[1]=0,a="!"):(s[0]=0,a="?"));let f=[s[0],s[1],s[2]];(o=="gs"||o=="ns5r")&&a=="^"&&(a=" "),e==127&&a=="^"&&(a=" "),a!=" "&&self.debugMode&&(i="");let p="??";switch(s[0]){case 0:{s[2]==0?p="GM":s[2]==5||s[2]==7?p="KG":s[2]<120?p="XG":s[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{s[2]<17?p="KR":s[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][s[2]];break}case 96:{p=s[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=s[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=s[2]==127?"MT":n==0?"GM":"XG";break}default:s[0]<48&&(s[0]==16&&o=="xg"?p="XG":p="GS")}return{name:i||`${H(e||0)} ${H(n||0)} ${H(l||0)}`,iid:c,eid:f,sid:t,ending:a,sect:r,standard:p}}async load(e,n,l){let o=this,t=[],i=0,s=0;e.split(` +`).forEach(function(a,r){let h=a.split(" "),d=[];r==0?h.forEach(function(c,f){t[De.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],i++),s++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${l||"(internal)"}": ${s} total, ${i} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let i=t<<7;for(let s=o[0];s<=o[1];s++){let a=i+s;for(let r=n[0];r<=n[1];r++)delete this.#t[r][a]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,o){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let l=!0;return n.forEach((o,t)=>{l=l&&e[t]==o}),l},ee=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},R=new TextDecoder,A=new J;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",o=[0,0,0,0],t=32,i=0,s=0,a=!0,r=[],h=0;for(;a;){let d=n.subarray(i);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(i+=80,s=1):i++},()=>{if(Ie(d.subarray(0,4),o))r.forEach((c,f,p)=>{let b=ee(n.subarray(c.start+4,c.start+8));c.length=b}),s=2;else{let c=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));r.push({type:c,start:f}),i+=8}},()=>{let c=r[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let b=t;for(;b=r.length&&(a=3,s=!1)}][a]||(()=>{s=!1}))()}return l});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ae=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],M=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ie=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},re=function(e){return e>105?Ae[e-106]:e>100?e*1.1-100:e/10},ae=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +063 ${($[17]+1).toString().padStart(3,"0")} ${$[19].toString().padStart(3,"0")} ${w}`),y+=b}break}}h++,h>=r.length&&(s=3,a=!1)}][s]||(()=>{a=!1}))()}return l});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ue=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],C=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ie=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},re=function(e){return e>105?Ue[e-106]:e>100?e*1.1-100:e/10},ae=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ue={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ue[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ce=function(e,n,l){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},i=t[0];if(i?.length)return i+=`: ${(t[1]||function(){})(l)||l}`,i},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,l){let o=[],t=l==!1?n.readIntVLV():l;e==0||e==127;for(let i=0;i127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},S=function(e,n){let l=0,o=0;for(let t=0;t>i&1)<<7,s=e[t];s+=a,t%8!=0?(n(s,l,e),l++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],T=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Be=[12,13,16,17,18,19],He=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],l=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(l,t)):o==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",l="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${l}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends A{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#c=new Uint8Array(g.ch);#i=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#a=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#v=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#T=new Uint8Array(g.ch);#H=0;#r=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#M=new Uint8Array(g.ch);#A=new Uint8Array(128);#k=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#U=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#S=0;#m=100;#O=0;#Q=500;#W=0;#C="";#L=0;#Y=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#B=new Uint8Array(g.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#B[n])return(this.#B[n]-1)*16+e;if([2,3].indexOf(this.#S)>-1){if(l==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let l=e*128+n,o=this.#f.lastIndexOf(l);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[l]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let o=e*128+n,t=0;for(this.#v[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,l)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[l]=o;let t=this.#f[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,l,o)=>{let t=n>>7,i=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,i)})}};#J={8:function(e){let n=e.channel,l=e.data[0];this.#u.nOff(n,l)},9:function(e){let n=e.channel;this.#n[n]=1;let l=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,l,o):this.#u.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#f.indexOf(l)>-1&&(this.#d[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let l=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#v[n]=1,this.#u.ano(n);return}case 127:{this.#v[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Be.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let i=this.#e[g.cc*t];(i==56||i==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#H){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[l+u[99]],t=this.#e[l+u[98]];if(o==1){let i=He.indexOf(t);if(i>-1)this.#e[l+u[71+i]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+i}.`),this.dispatchEvent("cc",{part:n,cc:71+i,data:e.data[1]});else{let a=ge.indexOf(t);a>-1?this.#K[n*10+a]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let a=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${a}is not necessary. Consider removing it.`):console.warn(`${a}is not supported.`)}else{let a=this.#i[n]-2;a<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#i[n]]}.`):this.#j[(a*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#i[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[l+u[100]]];this.#e[l+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#r[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.#i[n]=+([32,40].indexOf(e.data[1])>-1)<<1;break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#H||this.#e[l+101]==0&&X[this.#e[l+100]]!=null&&(this.#r[n*g.rpn+X[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#H=1;break}case 100:case 101:{this.#H=0;break}}this.#e[l+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#a[n]=e.data,this.#M[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#f.forEach(function(o){let t=o>>7;l==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:l,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let l=n[0],o=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(l,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#V.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#R.run(n,l,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,l)=>{this.#D.run(n,l,e)},67:(e,n,l)=>{this.#E.run(n,l,e)},68:(e,n,l)=>{this.#z.run(n,l,e)},71:(e,n,l)=>{this.#X.run(n,l,e)},126:(e,n,l)=>{this.#_.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#F.run(n,l,e)}};#_;#F;#E;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,l=this.#e.subarray(n,n+g.cc);return l[u[0]]=l[u[0]]||this.#N,l[u[32]]=l[u[32]]||this.#S,l}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&(this.#e[e*g.cc+u[0]]=T[l])}getPitch(){return this.#I}getProgram(){return this.#a}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,l=this;return l.#f.forEach(function(o,t){let i=Math.floor(o/128),a=o%128;e==i&&l.#d[o]>0&&n.set(a,{v:l.#d[o],s:l.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#C,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let l=Math.floor(n/128);e.#d[n]>e.#T[l]&&(e.#T[l]=e.#d[n])}),this.#T}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,o){e[o]=Math.floor(l*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,l,o){let t=e||this.#N,i=n,a=l||this.#S;x[this.#t]=="ns5r"&&t>0&&t<56&&(a=3);let s=this.userBank.get(t,i,a,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let r=parseInt(s.name.slice(5)),h=r*g.cmt,d="";this.#U.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG -0 127 ${i} ${d}`,!0),s.name=d,s.ending=" "}return(s.ending!=" "||!s.name.length)&&(s=this.baseBank.get(t,i,a,o)),s}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#a[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#M[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,o=3200){let t=this,i;t.#C=" ".repeat(l),e.forEach(a=>{t.#C+=String.fromCharCode(a>31?a:32),a<32&&(i=i||new Set,i.add(a))}),t.#L=Date.now()+3200,t.#C=t.#C.padEnd(32," "),i&&(i=Array.from(i),i.forEach((a,s,r)=>{r[s]=a.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${i.length>1?"s":""}: 0x${i.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let l=this.#b[n];if(l){if(I.indexOf(l)>=0)return this.#e[e*g.cc+u[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#S=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#a.fill(0),this.#d.fill(0),this.#f.fill(0),this.#T.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#C="",this.#h=0,this.#o=0,this.#g.fill(0),this.#l=!1,this.#Y=0,this.#x=!0,this.#c.forEach(function(n,l,o){o[l]=l}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#B.fill(0)),this.#e[g.cc*9]=T[0],this.#e[g.cc*25]=T[0],this.#e[g.cc*41]=T[0],this.#e[g.cc*57]=T[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#U.fill(0),this.#A.fill(0),this.#k.fill(0),this.#M.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=l,this.#o=0,this.#N=fe[0][l],this.#S=fe[1][l];for(let i=0;i0&&this.#e[i*g.cc+u[0]]==T[o]&&(this.#e[i*g.cc]=T[l]);switch(this.initOnReset,l){case m.mt32:{V.forEach((i,a)=>{let s=a+1;this.#n[s]||(this.#a[s]=i,this.#e[s*g.cc+u[91]]=127)});break}}let t;switch(l){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let i=0;i14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(o=>{e.channel=o,l=!0,this.#J[e.type].call(this,e)}),l||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{U.context=this,this.userBank.load(await U.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ce=function(e,n,l){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},i=t[0];if(i?.length)return i+=`: ${(t[1]||function(){})(l)||l}`,i},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,l){let o=[],t=l==!1?n.readIntVLV():l;e==0||e==127;for(let i=0;i127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},S=function(e,n){let l=0,o=0;for(let t=0;t>i&1)<<7,a=e[t];a+=s,t%8!=0?(n(a,l,e),l++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],T=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],l=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(l,t)):o==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",l="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${l}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#c=new Uint8Array(g.ch);#i=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#a=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#v=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#T=new Uint8Array(g.ch);#B=0;#r=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#C=new Uint8Array(g.ch);#U=new Uint8Array(128);#k=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#S=0;#m=100;#O=0;#Q=500;#W=0;#M="";#L=0;#Y=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#S)>-1){if(l==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let l=e*128+n,o=this.#f.lastIndexOf(l);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[l]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let o=e*128+n,t=0;for(this.#v[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,l)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[l]=o;let t=this.#f[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,l,o)=>{let t=n>>7,i=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,i)})}};#J={8:function(e){let n=e.channel,l=e.data[0];this.#u.nOff(n,l)},9:function(e){let n=e.channel;this.#n[n]=1;let l=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,l,o):this.#u.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#f.indexOf(l)>-1&&(this.#d[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let l=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#v[n]=1,this.#u.ano(n);return}case 127:{this.#v[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let i=this.#e[g.cc*t];(i==56||i==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[l+u[99]],t=this.#e[l+u[98]];if(o==1){let i=Be.indexOf(t);if(i>-1)this.#e[l+u[71+i]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+i}.`),this.dispatchEvent("cc",{part:n,cc:71+i,data:e.data[1]});else{let s=ge.indexOf(t);s>-1?this.#K[n*10+s]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let s=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${s}is not necessary. Consider removing it.`):console.warn(`${s}is not supported.`)}else{let s=this.#i[n]-2;s<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#i[n]]}.`):this.#j[(s*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#i[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[l+u[100]]];this.#e[l+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#r[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[l+101]==0&&X[this.#e[l+100]]!=null&&(this.#r[n*g.rpn+X[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[l+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#a[n]=e.data,this.#C[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#f.forEach(function(o){let t=o>>7;l==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:l,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let l=n[0],o=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(l,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#V.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#R.run(n,l,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,l)=>{this.#D.run(n,l,e)},67:(e,n,l)=>{this.#E.run(n,l,e)},68:(e,n,l)=>{this.#z.run(n,l,e)},71:(e,n,l)=>{this.#X.run(n,l,e)},126:(e,n,l)=>{this.#_.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#F.run(n,l,e)}};#_;#F;#E;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,l=this.#e.subarray(n,n+g.cc);return l[u[0]]=l[u[0]]||this.#N,l[u[32]]=l[u[32]]||this.#S,l}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=T[l])}getPitch(){return this.#I}getProgram(){return this.#a}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,l=this;return l.#f.forEach(function(o,t){let i=Math.floor(o/128),s=o%128;e==i&&l.#d[o]>0&&n.set(s,{v:l.#d[o],s:l.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#M,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let l=Math.floor(n/128);e.#d[n]>e.#T[l]&&(e.#T[l]=e.#d[n])}),this.#T}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,o){e[o]=Math.floor(l*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,l,o){let t=e||this.#N,i=n,s=l||this.#S;x[this.#t]=="ns5r"&&t>0&&t<56&&(s=3);let a=this.userBank.get(t,i,s,o);if(x[this.#t]=="mt32"&&a.name.indexOf("MT-m:")==0){let r=parseInt(a.name.slice(5)),h=r*g.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG +0 127 ${i} ${d}`,!0),a.name=d,a.ending=" "}return(a.ending!=" "||!a.name.length)&&(a=this.baseBank.get(t,i,s,o)),a}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#a[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#C[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,o=3200){let t=this,i;t.#M=" ".repeat(l),e.forEach(s=>{t.#M+=String.fromCharCode(s>31?s:32),s<32&&(i=i||new Set,i.add(s))}),t.#L=Date.now()+3200,t.#M=t.#M.padEnd(32," "),i&&(i=Array.from(i),i.forEach((s,a,r)=>{r[a]=s.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${i.length>1?"s":""}: 0x${i.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let l=this.#b[n];if(l){if(I.indexOf(l)>=0)return this.#e[e*g.cc+u[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#S=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#a.fill(0),this.#d.fill(0),this.#f.fill(0),this.#T.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#M="",this.#h=0,this.#o=0,this.#g.fill(0),this.#l=!1,this.#Y=0,this.#x=!0,this.#c.forEach(function(n,l,o){o[l]=l}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#H.fill(0)),this.#e[g.cc*9]=T[0],this.#e[g.cc*25]=T[0],this.#e[g.cc*41]=T[0],this.#e[g.cc*57]=T[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#k.fill(0),this.#C.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=l,this.#o=0,this.#N=fe[0][l],this.#S=fe[1][l];for(let i=0;i0&&this.#e[i*g.cc+u[0]]==T[o]&&(this.#e[i*g.cc]=T[l]);switch(this.initOnReset,l){case m.mt32:{V.forEach((i,s)=>{let a=s+1;this.#n[a]||(this.#a[a]=i,this.#e[a*g.cc+u[91]]=127)});break}}let t;switch(l){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let i=0;i14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(o=>{e.channel=o,l=!0,this.#J[e.type].call(this,e)}),l||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let i=t.slice(2).split(":");switch(i[0]){case"hd":{i.slice(1).forEach((a,s)=>{a.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][s]}: ${a}`)});break}case"ln":{i.slice(1).forEach((a,s)=>{a.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][s]}: ${a}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,i){i<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,i){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,i){console.debug(`Track ${i} requests to get assigned to output ${t}.`),e.#B[i]=t+1},this.#y[81]=function(t,i){e.#Q=t/1e3},this.#y[127]=function(t,i){e.#G.run(t,i)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,i){e.#B[i]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#E=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#E.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#E.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let i=[0,0,0,0],a=(s,r)=>{i[r]=s};if(t.subarray(1).forEach((s,r)=>{let h=r+t[0];([a,a,a,a,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(s,r)}),t[0]<4){let s=0;i.forEach(r=>{s=s<<4,s+=r}),s-=1024}}}}).add([76,2,1],t=>{let i="XG ";t[0]<32?(i+="reverb ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}time: ${ie(r)}s`)},r=>{console.debug(`${i}diffusion: ${r}`)},r=>{console.debug(`${i}initial delay: ${r}`)},r=>{console.debug(`${i}HPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${i}LPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${i}width: ${r}`)},r=>{console.debug(`${i}height: ${r}`)},r=>{console.debug(`${i}depth: ${r}`)},r=>{console.debug(`${i}wall type: ${r}`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${i}delay: ${r}`)},r=>{console.debug(`${i}density: ${r}`)},r=>{console.debug(`${i}balance: ${r}`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{}][t[0]+s]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(a)})):t[0]<64?(i+="chorus ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}LFO: ${te[r]}Hz`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{console.debug(`${i}delay offset: ${re(r)}ms`)},r=>{},r=>{console.debug(`${i}low: ${M[r]}Hz`)},r=>{console.debug(`${i}low: ${r-64}dB`)},r=>{console.debug(`${i}high: ${M[r]}Hz`)},r=>{console.debug(`${i}high: ${r-64}dB`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${i}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${i}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+s]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(a)})):t[0]<86?(i+="variation ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${i}sub type: ${r+1}`)}][t[0]-64+s]||function(){})(a)})):t[0]<97?(i+="variation ",t.subarray(1).forEach((a,s)=>{[r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},r=>{console.debug(`${i}to chorus: ${E(r)}dB`)},r=>{console.debug(`${i}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${i}channel: CH${r+1}`)},r=>{console.debug(`${i}mod wheel: ${r-64}`)},r=>{console.debug(`${i}bend wheel: ${r-64}`)},r=>{console.debug(`${i}channel after touch: ${r-64}`)},r=>{console.debug(`${i}AC1: ${r-64}`)},r=>{console.debug(`${i}AC2: ${r-64}`)}][t[0]-86+s](a)})):t[0]>111&&t[0]<118?i+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((i,a)=>{let s=a+t[0];if(s==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][i]}`);else{let r=s-1>>2,h=s-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${i-64}dB`)},()=>{console.debug(`${d}${i} (raw)`)},()=>{console.debug(`${d}${i/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!i]}`)}][h]()}})}).add([76,3],t=>{let i=t[0],a=t[1],s=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+i,!1,d),console.info(`${s}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+i,!0,d),console.debug(`${s}sub type: ${d+1}`)}][a+h]||function(){})(r)})}).add([76,6,0],t=>{let i=t[0];i<64?e.setLetterDisplay(t.subarray(1),"XG letter display",i):e.#L=Date.now()}).add([76,7,0],t=>{let i=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let a=t.subarray(1);for(let s=0;s>6-p&1,p++})}).add([76,8],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=t[1],r=g.cc*a,h=`XG CH${a+1} `,d=`Unknown XG part address ${s}.`;t.subarray(2).forEach((c,f)=>{s<1?console.debug(d):s<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#a[a]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[a]=+!c},()=>{},()=>{e.setChType(a,c,m.xg),console.debug(`${h}type: ${P[c]||c}`)},()=>{e.#r[g.rpn*a+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][s+f-1]||(()=>{}))():s<48?console.debug(d):s<111?s>102&&s<105&&(e.#e[r+u[[5,65][s&1]]]=c):s<114?console.debug(d):s<116?console.debug(`${h}EQ ${["bass","treble"][s&1]} gain: ${c-64}dB`):s<118?console.debug(d):s<120?console.debug(`${h}EQ ${["bass","treble"][s&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=t[1],r=`PLG-150VL CH${a+1} `;t.subarray(2).forEach((h,d)=>{let c=d+s;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,i)=>{let a=t[0];t.subarray(1).forEach((s,r)=>{let h=a+r;h==8?console.debug(`MU1000 set LCD contrast to ${s}.`):h>9&&h<16&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][h-10]()})}).add([73,10,0],(t,i)=>{let a=t[0],s=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(a<16)switch(a){case 2:{let r=e.chRedir(0,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${s}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,i,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${s}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${s}unknown switch ${a} invoked.`)}else if(a<32){if(e.#x){let r=e.chRedir(a-16+(e.#Y<<4),i,!0);e.dispatchEvent("channelactive",r)}}else if(a<36){let r=e.chRedir(a-32<<4,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#Y=a-32),console.info(`${s}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=`PLG-100SG CH${a+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ae[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${s}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#E.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#E.add([89,0],(t,i,a)=>{if(e.eprom){let s=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${s} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let b=0;b<7;b++)h[r+7*f+b]+=(d>>6-b&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,i,a)=>{let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${s.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=s)}).add([89,2],(t,i,a)=>{if(e.eprom){let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${s.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[s+7*c+p]+=(h>>6-p&1)<<7;else r[s+7*c+f]=h})}}).add([89,3],(t,i,a)=>{}),this.#E.add([39,48],(t,i,a)=>{}).add([43,0,0],(t,i,a)=>{let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,i,a)=>{}).add([43,2],(t,i,a)=>{let s=e.chRedir(t[0],i,!0),r=t[1],h=g.cc*s,d=`TG300 CH${s+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[s]=+!c},()=>{},()=>{},()=>{e.#r[g.rpn*s+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,i,a)=>{let s=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",s)}).add([43,7,1],(t,i,a)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(s,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,i,a)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#S=3,e.#l=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,i,a)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#l=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let i=t[0];if(i<16){let a="".padStart(i," ");t.subarray(1).forEach((s,r)=>{a+=String.fromCharCode(Math.max(32,s))}),a=a.padEnd(16," "),console.debug(`GS patch name: ${a}`)}else i<48||(i<65?t.subarray(1).forEach((a,s)=>{let r=`GS ${i+s>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${_[a]}`),e.setEffectType(0,40,a)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${a}ms`)},()=>{console.info(`${r}type: ${oe[a]}`),e.setEffectType(1,40,16+a)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(a)}`)},()=>{console.debug(`${r}to delay: ${E(a)}`)}][i+s-48]||(()=>{}))()}):i<80?console.debug(`Unknown GS patch address: ${i}`):i<91?t.subarray(1).forEach((a,s)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[a]}`),e.setEffectType(2,40,32+a)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(a)}`)}][i+s-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${i}`))}).add([66,18,64,2],t=>{let i="GS EQ ";t.subarray(1).forEach((a,s)=>{([()=>{console.debug(`${i}low freq: ${[200,400][a]}Hz`)},()=>{console.debug(`${i}low gain: ${a-64}dB`)},()=>{console.debug(`${i}high freq: ${[3e3,6e3][a]}Hz`)},()=>{console.debug(`${i}high gain: ${a-64}dB`)}][t[0]+s]||function(){console.warn(`Unknown GS EQ address: ${t[0]+s}`)})()})}).add([66,18,64,3],t=>{let i="GS EFX ",a=function(s,r){let h=ce(e.#w.subarray(10,12),r,s);h&&console.debug(`${i}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((s,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+s)},()=>{e.setEffectTypeRaw(3,!0,s),console.info(`${i}type: ${F(e.#w.subarray(10,12))}`)},!1,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,()=>{console.debug(`${i}to reverb: ${E(s)}dB`)},()=>{console.debug(`${i}to chorus: ${E(s)}dB`)},()=>{console.debug(`${i}to delay: ${E(s)}dB`)},!1,()=>{console.debug(`${i}1 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${i}1 depth: ${s-64}`)},()=>{console.debug(`${i}2 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${i}2 depth: ${s-64}`)},()=>{console.debug(`${i}to EQ: ${s?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(s,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let i=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",i);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let i=e.#p[t[0]-1],a=t[1];i.fill(0);let s=t.subarray(2);for(let r=0;r>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,i,a){let s=t[0],r=g.cc*i,h=g.rpn*i,d=`GS CH${i+1} `;s<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#a[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][s+f]()}):s<19||(s<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[i]=+!c},!1,()=>{e.setChType(i,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][s+f-19]||(()=>{}))()}):s<76||console.debug(`Unknown GS part address: ${s}`))},o=function(t,i){let a=t[0],s=`GS CH${i+1} `;a<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[g.cc*i+u[32]]=r},()=>{}][a+h]()}):a<32?console.warn(`Unknown GS misc address: ${a}`):a<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${s}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${s}EFX: o${["ff","n"][r]}`)}][a+h-32]()}):console.warn(`Unknown GS misc address: ${a}`)};this.#R.add([66,18,64,16],(t,i)=>{l(t,e.chRedir(9,i,!0),i)}).add([66,18,64,17],(t,i)=>{l(t,e.chRedir(0,i,!0),i)}).add([66,18,64,18],(t,i)=>{l(t,e.chRedir(1,i,!0),i)}).add([66,18,64,19],(t,i)=>{l(t,e.chRedir(2,i,!0),i)}).add([66,18,64,20],(t,i)=>{l(t,e.chRedir(3,i,!0),i)}).add([66,18,64,21],(t,i)=>{l(t,e.chRedir(4,i,!0),i)}).add([66,18,64,22],(t,i)=>{l(t,e.chRedir(5,i,!0),i)}).add([66,18,64,23],(t,i)=>{l(t,e.chRedir(6,i,!0),i)}).add([66,18,64,24],(t,i)=>{l(t,e.chRedir(7,i,!0),i)}).add([66,18,64,25],(t,i)=>{l(t,e.chRedir(8,i,!0),i)}).add([66,18,64,26],(t,i)=>{l(t,e.chRedir(10,i,!0),i)}).add([66,18,64,27],(t,i)=>{l(t,e.chRedir(11,i,!0),i)}).add([66,18,64,28],(t,i)=>{l(t,e.chRedir(12,i,!0),i)}).add([66,18,64,29],(t,i)=>{l(t,e.chRedir(13,i,!0),i)}).add([66,18,64,30],(t,i)=>{l(t,e.chRedir(14,i,!0),i)}).add([66,18,64,31],(t,i)=>{l(t,e.chRedir(15,i,!0),i)}).add([66,18,64,64],(t,i)=>{o(t,e.chRedir(9,i,!0))}).add([66,18,64,65],(t,i)=>{o(t,e.chRedir(0,i,!0))}).add([66,18,64,66],(t,i)=>{o(t,e.chRedir(1,i,!0))}).add([66,18,64,67],(t,i)=>{o(t,e.chRedir(2,i,!0))}).add([66,18,64,68],(t,i)=>{o(t,e.chRedir(3,i,!0))}).add([66,18,64,69],(t,i)=>{o(t,e.chRedir(4,i,!0))}).add([66,18,64,70],(t,i)=>{o(t,e.chRedir(5,i,!0))}).add([66,18,64,71],(t,i)=>{o(t,e.chRedir(6,i,!0))}).add([66,18,64,72],(t,i)=>{o(t,e.chRedir(7,i,!0))}).add([66,18,64,73],(t,i)=>{o(t,e.chRedir(8,i,!0))}).add([66,18,64,74],(t,i)=>{o(t,e.chRedir(10,i,!0))}).add([66,18,64,75],(t,i)=>{o(t,e.chRedir(11,i,!0))}).add([66,18,64,76],(t,i)=>{o(t,e.chRedir(12,i,!0))}).add([66,18,64,77],(t,i)=>{o(t,e.chRedir(13,i,!0))}).add([66,18,64,78],(t,i)=>{o(t,e.chRedir(14,i,!0))}).add([66,18,64,79],(t,i)=>{o(t,e.chRedir(15,i,!0))}),this.#D.add([54,65],(t,i)=>{e.switchMode("x5d");let a=(t[1]<<7)+t[0],s=(t[3]<<7)+t[2],r=e.chRedir(a&15,i,!0),h=g.cc*r;[()=>{s<1||(s<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=s-1,e.#e[h+u[0]]=82):s<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=s-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#a[r]=be[s-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=s},()=>{s<31&&(e.#e[h+u[10]]=Math.round((s-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(s)},()=>{e.#e[h+u[91]]=D(s)},()=>{e.#r[r*g.rpn+3]=s>8191?s-16320:64+s},()=>{e.#r[r*g.rpn+1]=s>8191?s-16320:64+s},()=>{s>0&&(e.#r[r*g.rpn]=s)},()=>{}][a>>4]()}).add([54,76,0],(t,i)=>{e.switchMode("x5d",!0);let a="",s=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{d+=` -${s} ${r} ${h} ${a.trim().replace("Init Voice","")}`,r++,a="";break}}r>99&&(s=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,i)=>{e.switchMode("x5d",!0);let a="",s=90,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{d+=` -${s} ${r} ${h} ${a.trim().replace("Init Combi","")}`,r++,a="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,i)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,i)=>{e.switchMode("x5d",!0),S(t,(a,s)=>{s>0&&s<3&&e.setEffectType(s-1,44,a)})}).add([54,104],(t,i)=>{e.switchMode("x5d",!0),S(t,function(a,s,r,h){if(s<192){let d=e.chRedir(Math.floor(s/12),i,!0),c=d*g.cc;switch(s%12){case 0:{a<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#a[d]=a):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#a[d]=be[a-128]),a>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=a;break}case 2:{e.#r[d*g.rpn+3]=a>127?a-192:64+a;break}case 3:{e.#r[d*g.rpn+1]=a>127?a-192:64+a;break}case 4:{a<31&&(e.#e[c+u[10]]=Math.round((a-15)*4.2+64));break}case 5:{let f=a>>4,p=a&15;e.#e[c+u[91]]=D(p),e.#e[c+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(a&15,i,!0),p=a>>4;e.#c[d]=a,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(s-192,i,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#A[c+(s-1)*16]=h,([!1,()=>{let f=e.#A[s-1<<4];if(f<3)if(e.#M[s]=1,f==2)for(let p=0;p{e.#r[s*g.rpn+3]=h+40},()=>{e.#r[s*g.rpn+1]=h+14},()=>{e.#r[s*g.rpn]=h},!1,()=>{e.#e[g.cc*s+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*s+u[7]]=h},()=>{e.#e[g.cc*s+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0)}).add([22,18,2],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0),r=t[1]+(t[0]<<7);r<10&&(e.#M[s]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#k[(s-1)*g.cmt+c]=h)})}).add([22,18,3],(t,i,a)=>{if(e.switchMode("mt32"),t[0]){let s=t[1]-16}else{let s=t[1];t.subarray(2).forEach((r,h)=>{let d=h+s;e.#A[d]=r;let c=e.chRedir(1+d>>4,i,!0),f=d&15;([!1,()=>{let p=e.#A[c-1<<4];if(p<3)if(e.#M[c]=1,p==2)for(let b=0;b{e.#r[c*g.rpn+3]=r+40},()=>{e.#r[c*g.rpn+1]=r+14},()=>{e.#r[c*g.rpn]=r},!1,()=>{e.#e[g.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[g.cc*c+u[7]]=r},()=>{e.#e[g.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,i,a)=>{e.switchMode("mt32");let s=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+s,c=e.chRedir(Math.floor(d/246+1),i,!0),f=d%246;f<14&&(e.#k[(c-1)*g.cmt+f]=r),f<10&&(e.#M[c]=1)})}).add([22,18,5],(t,i,a)=>{e.switchMode("mt32");let s=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=s+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME -000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,i,a)=>{e.switchMode("mt32");let s=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=s+h;d>1)*g.cmt+d]=r)})}).add([22,18,16],(t,i,a)=>{e.switchMode("mt32");let s=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+s;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let i=t[1],a=" ".repeat(i);t.subarray(2).forEach(s=>{s>31&&(a+=String.fromCharCode(s))}),e.#C=a.padStart(20," "),e.#L=Date.now()+3200}).add([22,18,82],(t,i)=>{let a=e.chRedir(0,i,!0);for(let s=0;s<16;s++)e.#u.ano(a+s),s&&s<10&&(e.#a[a+s]=V[s-1]);console.info("MT-32 alt reset complete.")}),this.#D.add([66,0],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,i)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,i)=>{let a=t[0];switch(a){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(a<10){let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][a+d]()}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,i)=>{}).add([66,18,0,2],(t,i)=>{}).add([66,18,1],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=a*g.cc,r=t[1],h=`NS5R CH${a+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[s+u[0]]=d||121},()=>{e.#e[s+u[32]]=d},()=>{e.#a[a]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[a]=+!d},()=>{e.setChType(a,d,m.ns5r),console.debug(`${h}type: ${P[d]}`)},()=>{e.#r[g.rpn*a+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[s+u[7]]=d},()=>{e.#e[s+u[11]]=d},()=>{},()=>{},()=>{e.#e[s+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[s+u[93]]=d},()=>{e.#e[s+u[91]]=d},()=>{e.#e[s+u[76]]=d},()=>{e.#e[s+u[77]]=d},()=>{e.#e[s+u[78]]=d},()=>{e.#e[s+u[74]]=d},()=>{e.#e[s+u[71]]=d},()=>{e.#e[s+u[73]]=d},()=>{e.#e[s+u[75]]=d},()=>{e.#e[s+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[s+u[5]]=d},()=>{e.#e[s+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,i)=>{let a=t[0];if(a<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let s=a-32;e.#h=Date.now()+3200,e.#o=10,e.#g.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+s,p=f>>4,b=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#g[b*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1;let a="";S(t,(s,r)=>{r<8?(s>31&&(a+=String.fromCharCode(s)),r==7&&(e.aiEfxName=a)):r<10&&e.setEffectType(r-8,44,s)})}).add([66,53],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(a,s){switch(!0){case s<2944:{let r=e.chRedir(Math.floor(s/92),i,!0),h=r*g.cc;switch(s%92){case 0:{e.#e[h+u[0]]=a||121;break}case 1:{e.#e[h+u[32]]=a;break}case 2:{e.#a[r]=a,a>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(a,i,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*g.rpn+3]=a<40||a>88?a+(a>63?-192:64):a;break}case 9:case 10:{e.#e[h+u[7]]=a;break}case 11:{e.#e[h+u[11]]=a;break}case 14:{e.#e[h+u[10]]=a||128;break}case 19:{e.#e[h+u[93]]=a;break}case 20:{e.#e[h+u[91]]=a;break}case 84:{e.#e[h+u[65]]=a;break}case 85:{e.#e[h+u[5]]=a;break}}break}case s<3096:break;case s<3134:break;case s<8566:break}})}).add([66,54],(t,i)=>{e.switchMode("ns5r",!0);let a="",s=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{s=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` -${s} ${r} ${h} ${a.trim().replace("Init Voice","")}`,r++,a="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,i)=>{e.switchMode("ns5r",!0);let a="",s=88,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%126;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:break;case p==12:break;case p==13:{d+=` -${s} ${r} ${h} ${a.trim().replace("Init Combi","")}`,r++,a="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let i=new Uint8Array(5760);S(t,(a,s,r)=>{if(s<720)for(let h=0;h<8;h++)i[s*8+h]=a>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:i})}).add([76],(t,i,a)=>{e.#D.run([66,...t],i,a)}),this.#V.add([16,0,8,0],(t,i,a)=>{let s=(t[2]<<4)+t[3],r="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#S=s?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,i,a)=>{let s=e.chRedir(t[1],i,!0),r=g.cc*s,h=g.rpn*s,d=(t[3]<<4)+t[4],c=`K11 CH${s+1} `;([()=>{d<128?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[r+u[0]]=0,e.#a[s]=d):(e.setChType(s,e.CH_DRUMS,m.k11),e.#a[s]=d-128)},()=>{let f=e.chRedir(d,i,!0);e.#c[s]=f,s!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[r+u[7]]=d},()=>{e.#n[s]=d},()=>{e.#e[r+u[10]]=d},()=>{e.#r[h+3]=d+40},()=>{e.#r[h+1]=d>>1,e.#r[h+2]=d&1},()=>{e.#e[r+u[91]]=d?127:0},()=>{},()=>{e.#e[r+u[74]]=d},()=>{e.#e[r+u[73]]=d},()=>{e.#e[r+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,i,a)=>{let s=(t[2]<<4)+t[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,i,a)=>{let s=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc;[()=>{s<128?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#a[r]=s):s<160?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#a[r]=s-100):(e.setChType(r,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#a[r]=s-160)},()=>{let d=e.chRedir(s,i,!0);e.#c[r]=d,r!=d&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,i,a)=>{let s=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc,d=r*g.rpn,c=`GMLX CH${r+1} `;[()=>{e.#n[r]=s},()=>{e.#e[h+u[7]]=s},()=>{e.#e[h+u[10]]=s},()=>{e.#e[h+u[91]]=s?127:0},()=>{e.#r[d+3]=s+40},()=>{e.#r[d+1]=s},()=>{e.#r[d]=s},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,i,a)=>{let s=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=s*129/16383*100;break}case 5:{s-64;break}case 6:{console.debug(`SG global reverb: ${s?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[s]}`);break}}break}default:if(t[0]>>4==1){let r=e.chRedir(t[0]&15,i,!0);if(t[1]==2){let h=e.chRedir(s,i,!0);e.#c[r]=h,r!=h&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*r+u[7]]=s)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,i,a)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#E.add([127,0],(t,i,a)=>{e.switchMode("motif");let s=new Uint8Array([127,1,...t]);e.#E.run(s,i,a)}).add([127,1,0,0],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES system ",r=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][r+d]||(()=>{console.info(`Unrecognized ${s}ID: ${r+d}`)}))()})}).add([127,1,0,0,14],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES bulk header ",r=[];r[95]=(h,d,c)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES bulk footer ",r=[];r[95]=(h,d,c)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,i,a)=>{e.switchMode("s90es");let s=e.chRedir(t[0],i,!0),r=g.cc*s,h=t[1],d=`S90/Motif ES bulk CH${s<16?s+1:"U"+(s-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[r+u[0]]=c},()=>{c&&(e.#n[s]=1),e.#e[r+u[32]]=c,e.#i[s]=+([32,40].indexOf(c)>-1)<<1},()=>{c&&(e.#n[s]=1),e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[s]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[r+u[7]]=c},()=>{e.#e[r+u[10]]=c},!1,!1,!1,()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[128]]=c},()=>{},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},!1,()=>{e.#e[r+u[65]]=c},()=>{e.#e[r+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,i,a)=>{e.switchMode("s90es");let s=t[0];t.subarray(1).forEach((r,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=r-64},()=>{let f=M[r]},()=>{let f=r/10},()=>{let f=r}][s+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,l,o){this.#t=e,this.start=n,this.end=l,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,l){super(!0,e,n,l)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let l=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(l.push(i),t.#t=i.index)})}return l}getRange(e,n){e>n&&([e,n]=[n,e]);let l=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),i=!0;for(let a=0;a=e&&(o=a):o=o<0?a:o;for(;i;)this[o]?.end=e&&l.push(this[o]):i=!1,o++;return l}};var _e=0xffffffffffff,ve=function(e){let n=new Q,l=this,o=e.timeDivision,t=120,i=new Q,a=0,s=0;i.push(new q(0,_e,[120,0])),e.track.forEach(function(c){a=0,c.event.forEach(function(f){a+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,i[i.length-1]&&i.push(new q(a,0xffffffffffff,[t,0])))})}),i.fresh(),i.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let r=120;i.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):r==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),r=c.data[0])});let h=0,d=120;return i.forEach(function(c){let f=c.start,p=f/d/o*60+h;d=c.data[0],h=p-f/d/o*60,c.data[1]=h}),console.debug("All tempo changes: ",i),t=120,a=0,s=0,e.track.forEach(function(c,f){a=0,s=0;let p=f+1;c.event.forEach(function(b,y){a+=b.deltaTime;let $=i.step(a,!0)[0];$&&(t=$.data[0],s=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(a/t/o*60+s,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends A{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#c=120;#i=4;#e=4;#b=0;#a=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#i=4,this.#e=4,this.#b=0,this.#a=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#a/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#i)}get noteBeat(){let e=this.noteOverall%this.#i;return e<0&&(e+=this.#i),e}getTimeSig(){return[this.#i,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#a&&(this.#a=e);let n=this.#t?.step(e)||[],l=0,o=new Set,t=this,i=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&l++),y.data.type==8&&o.has($.part*128+$.data[0])&&l++;let w=t.device.runJson($);switch(w?.reply){case"meta":{i.push(w);break}}w?.reply&&delete w.reply}),i?.length>0&&this.dispatchEvent("meta",i);let a=this.device.getActive(),s=[],r=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let C=w[$]-t.#p[$],Y=u.length*$;if(C>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(C-C*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(C-C*t.smoothingDcy**L)}});let p=0;return a.forEach(function(y,$){y&&(s[$]=t.device.getVel($),p+=s[$].size)}),{extraPoly:l,curPoly:p,chInUse:a,chKeyPr:s,chPitch:r,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,l=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=l,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(i){(o.#h[i.meta]||console.debug).call(o,i.meta,i.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,i){o.#o?.length<1&&(o.#o=i)},this.#h[81]=function(t,i){let a=o.noteProgress,s=o.#n||.5;o.#c=6e7/i,o.#n=i/1e6,o.#b+=a*(s/o.#n)-a},this.#h[88]=function(t,i){let a=o.noteProgress,s=o.noteOverall,r=o.noteBar,h=o.noteBeat,d=o.#i,c=o.#e;o.#i=i[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,s=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[l%12]*this.noteHeight;if(o>0)switch(i.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,i.fillRect(a+1,s+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{i.clearRect(a+1+this.noteOutline,s+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let l=super.render(n),o=this,t=this.context,i=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let a=metrics.actualBoundingBoxLeft,s=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${l.eventCount.toString().padStart(3,"0")} ${(l.curPoly+l.extraPoly).toString().padStart(3,"0")}/512 ${l.tSig[0].toString().padStart(2," ")}/${l.tSig[1].toString().padEnd(2," ")} ${(l.noteBar+1).toString().padStart(3," ")}:${Math.floor(l.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(l.tempo).toString().padStart(3," ")}.${Math.floor(l.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(l.master.volume).toString().padStart(3," ")}.${Math.floor(l.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+a,s+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+a,s+o.fontPadding+o.lineHeight*2),l.chKeyPr.forEach((r,h)=>{r.forEach((d,c)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&r.part1?32:16)),c=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+a+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(c.name,o.fontPadding+a+(r>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+r%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(l.chContr[f+u[p]]/-127))})}}l.letter.expire<=i,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let r=0;r<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+r%(this.mode>1?32:16)),o.noteWidth*16*(l.strength[h]/255),o.lineHeight-1)}for(let r in o.eventBuffer)delete o.eventBuffer[r];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let l=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,i=t.part*128+t.note,a=this.eventBuffer[i];this.eventBuffer[i]=t,a?.velo>0&&t.velo==0&&this.eventQueue.push(a)})}},Dt=Fe;export{Dt as default}; +122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let i=t.slice(2).split(":");switch(i[0]){case"hd":{i.slice(1).forEach((s,a)=>{s.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][a]}: ${s}`)});break}case"ln":{i.slice(1).forEach((s,a)=>{s.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][a]}: ${s}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,i){i<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,i){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,i){console.debug(`Track ${i} requests to get assigned to output ${t}.`),e.#H[i]=t+1},this.#y[81]=function(t,i){e.#Q=t/1e3},this.#y[127]=function(t,i){e.#G.run(t,i)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,i){e.#H[i]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#E=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#E.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#E.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let i=[0,0,0,0],s=(a,r)=>{i[r]=a};if(t.subarray(1).forEach((a,r)=>{let h=r+t[0];([s,s,s,s,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(a,r)}),t[0]<4){let a=0;i.forEach(r=>{a=a<<4,a+=r}),a-=1024}}}}).add([76,2,1],t=>{let i="XG ";t[0]<32?(i+="reverb ",t.subarray(1).forEach((s,a)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}time: ${ie(r)}s`)},r=>{console.debug(`${i}diffusion: ${r}`)},r=>{console.debug(`${i}initial delay: ${r}`)},r=>{console.debug(`${i}HPF cutoff: ${C[r]}Hz`)},r=>{console.debug(`${i}LPF cutoff: ${C[r]}Hz`)},r=>{console.debug(`${i}width: ${r}`)},r=>{console.debug(`${i}height: ${r}`)},r=>{console.debug(`${i}depth: ${r}`)},r=>{console.debug(`${i}wall type: ${r}`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${i}delay: ${r}`)},r=>{console.debug(`${i}density: ${r}`)},r=>{console.debug(`${i}balance: ${r}`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{}][t[0]+a]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(s)})):t[0]<64?(i+="chorus ",t.subarray(1).forEach((s,a)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}LFO: ${te[r]}Hz`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{console.debug(`${i}delay offset: ${re(r)}ms`)},r=>{},r=>{console.debug(`${i}low: ${C[r]}Hz`)},r=>{console.debug(`${i}low: ${r-64}dB`)},r=>{console.debug(`${i}high: ${C[r]}Hz`)},r=>{console.debug(`${i}high: ${r-64}dB`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${i}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${i}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+a]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(s)})):t[0]<86?(i+="variation ",t.subarray(1).forEach((s,a)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${i}sub type: ${r+1}`)}][t[0]-64+a]||function(){})(s)})):t[0]<97?(i+="variation ",t.subarray(1).forEach((s,a)=>{[r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},r=>{console.debug(`${i}to chorus: ${E(r)}dB`)},r=>{console.debug(`${i}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${i}channel: CH${r+1}`)},r=>{console.debug(`${i}mod wheel: ${r-64}`)},r=>{console.debug(`${i}bend wheel: ${r-64}`)},r=>{console.debug(`${i}channel after touch: ${r-64}`)},r=>{console.debug(`${i}AC1: ${r-64}`)},r=>{console.debug(`${i}AC2: ${r-64}`)}][t[0]-86+a](s)})):t[0]>111&&t[0]<118?i+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((i,s)=>{let a=s+t[0];if(a==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][i]}`);else{let r=a-1>>2,h=a-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${i-64}dB`)},()=>{console.debug(`${d}${i} (raw)`)},()=>{console.debug(`${d}${i/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!i]}`)}][h]()}})}).add([76,3],t=>{let i=t[0],s=t[1],a=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+i,!1,d),console.info(`${a}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+i,!0,d),console.debug(`${a}sub type: ${d+1}`)}][s+h]||function(){})(r)})}).add([76,6,0],t=>{let i=t[0];i<64?e.setLetterDisplay(t.subarray(1),"XG letter display",i):e.#L=Date.now()}).add([76,7,0],t=>{let i=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let s=t.subarray(1);for(let a=0;a>6-p&1,p++})}).add([76,8],(t,i)=>{let s=e.chRedir(t[0],i,!0),a=t[1],r=g.cc*s,h=`XG CH${s+1} `,d=`Unknown XG part address ${a}.`;t.subarray(2).forEach((c,f)=>{a<1?console.debug(d):a<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!c},()=>{},()=>{e.setChType(s,c,m.xg),console.debug(`${h}type: ${P[c]||c}`)},()=>{e.#r[g.rpn*s+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][a+f-1]||(()=>{}))():a<48?console.debug(d):a<111?a>102&&a<105&&(e.#e[r+u[[5,65][a&1]]]=c):a<114?console.debug(d):a<116?console.debug(`${h}EQ ${["bass","treble"][a&1]} gain: ${c-64}dB`):a<118?console.debug(d):a<120?console.debug(`${h}EQ ${["bass","treble"][a&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,i)=>{let s=e.chRedir(t[0],i,!0),a=t[1],r=`PLG-150VL CH${s+1} `;t.subarray(2).forEach((h,d)=>{let c=d+a;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,i)=>{let s=t[0];t.subarray(1).forEach((a,r)=>{let h=s+r;h==8?console.debug(`MU1000 set LCD contrast to ${a}.`):h>9&&h<16&&[()=>{e.dispatchEvent("channelactive",a)},()=>{a<8?(e.dispatchEvent("channelmin",a<<4),console.info(`Octavia System: Minimum CH${(a<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{a<8?(e.dispatchEvent("channelmax",(a<<4)+15),console.info(`Octavia System: Maximum CH${(a<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!a,console.info(`Octavia System: RS receiving ${["dis","en"][a]}abled.`)}][h-10]()})}).add([73,10,0],(t,i)=>{let s=t[0],a=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(s<16)switch(s){case 2:{let r=e.chRedir(0,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${a}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,i,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${a}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${a}unknown switch ${s} invoked.`)}else if(s<32){if(e.#x){let r=e.chRedir(s-16+(e.#Y<<4),i,!0);e.dispatchEvent("channelactive",r)}}else if(s<36){let r=e.chRedir(s-32<<4,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#Y=s-32),console.info(`${a}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,i)=>{let s=e.chRedir(t[0],i,!0),a=`PLG-100SG CH${s+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ae[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${a}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#E.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#E.add([89,0],(t,i,s)=>{if(e.eprom){let a=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${a} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let b=0;b<7;b++)h[r+7*f+b]+=(d>>6-b&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,i,s)=>{let a=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${a.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=a)}).add([89,2],(t,i,s)=>{if(e.eprom){let a=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${a.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[a+7*c+p]+=(h>>6-p&1)<<7;else r[a+7*c+f]=h})}}).add([89,3],(t,i,s)=>{}),this.#E.add([39,48],(t,i,s)=>{}).add([43,0,0],(t,i,s)=>{let a=[0,0,0,0],r=(h,d)=>{a[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;a.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,i,s)=>{}).add([43,2],(t,i,s)=>{let a=e.chRedir(t[0],i,!0),r=t[1],h=g.cc*a,d=`TG300 CH${a+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#a[a]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[a]=+!c},()=>{},()=>{},()=>{e.#r[g.rpn*a+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,i,s)=>{let a=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",a)}).add([43,7,1],(t,i,s)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(a,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,i,s)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#S=3,e.#l=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,i,s)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#l=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let a=[0,0,0,0],r=(h,d)=>{a[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;a.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let i=t[0];if(i<16){let s="".padStart(i," ");t.subarray(1).forEach((a,r)=>{s+=String.fromCharCode(Math.max(32,a))}),s=s.padEnd(16," "),console.debug(`GS patch name: ${s}`)}else i<48||(i<65?t.subarray(1).forEach((s,a)=>{let r=`GS ${i+a>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${_[s]}`),e.setEffectType(0,40,s)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${s}ms`)},()=>{console.info(`${r}type: ${oe[s]}`),e.setEffectType(1,40,16+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)},()=>{console.debug(`${r}to delay: ${E(s)}`)}][i+a-48]||(()=>{}))()}):i<80?console.debug(`Unknown GS patch address: ${i}`):i<91?t.subarray(1).forEach((s,a)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[s]}`),e.setEffectType(2,40,32+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)}][i+a-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${i}`))}).add([66,18,64,2],t=>{let i="GS EQ ";t.subarray(1).forEach((s,a)=>{([()=>{console.debug(`${i}low freq: ${[200,400][s]}Hz`)},()=>{console.debug(`${i}low gain: ${s-64}dB`)},()=>{console.debug(`${i}high freq: ${[3e3,6e3][s]}Hz`)},()=>{console.debug(`${i}high gain: ${s-64}dB`)}][t[0]+a]||function(){console.warn(`Unknown GS EQ address: ${t[0]+a}`)})()})}).add([66,18,64,3],t=>{let i="GS EFX ",s=function(a,r){let h=ce(e.#w.subarray(10,12),r,a);h&&console.debug(`${i}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((a,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+a)},()=>{e.setEffectTypeRaw(3,!0,a),console.info(`${i}type: ${F(e.#w.subarray(10,12))}`)},!1,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,()=>{console.debug(`${i}to reverb: ${E(a)}dB`)},()=>{console.debug(`${i}to chorus: ${E(a)}dB`)},()=>{console.debug(`${i}to delay: ${E(a)}dB`)},!1,()=>{console.debug(`${i}1 source: ${a}`),a&&a<96&&e.allocateAce(a)},()=>{console.debug(`${i}1 depth: ${a-64}`)},()=>{console.debug(`${i}2 source: ${a}`),a&&a<96&&e.allocateAce(a)},()=>{console.debug(`${i}2 depth: ${a-64}`)},()=>{console.debug(`${i}to EQ: ${a?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(a,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let i=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",i);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let i=e.#p[t[0]-1],s=t[1];i.fill(0);let a=t.subarray(2);for(let r=0;r>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,i,s){let a=t[0],r=g.cc*i,h=g.rpn*i,d=`GS CH${i+1} `;a<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#a[i]=c},()=>{let p=e.chRedir(c,s,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][a+f]()}):a<19||(a<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[i]=+!c},!1,()=>{e.setChType(i,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][a+f-19]||(()=>{}))()}):a<76||console.debug(`Unknown GS part address: ${a}`))},o=function(t,i){let s=t[0],a=`GS CH${i+1} `;s<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[g.cc*i+u[32]]=r},()=>{}][s+h]()}):s<32?console.warn(`Unknown GS misc address: ${s}`):s<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${a}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${a}EFX: o${["ff","n"][r]}`)}][s+h-32]()}):console.warn(`Unknown GS misc address: ${s}`)};this.#R.add([66,18,64,16],(t,i)=>{l(t,e.chRedir(9,i,!0),i)}).add([66,18,64,17],(t,i)=>{l(t,e.chRedir(0,i,!0),i)}).add([66,18,64,18],(t,i)=>{l(t,e.chRedir(1,i,!0),i)}).add([66,18,64,19],(t,i)=>{l(t,e.chRedir(2,i,!0),i)}).add([66,18,64,20],(t,i)=>{l(t,e.chRedir(3,i,!0),i)}).add([66,18,64,21],(t,i)=>{l(t,e.chRedir(4,i,!0),i)}).add([66,18,64,22],(t,i)=>{l(t,e.chRedir(5,i,!0),i)}).add([66,18,64,23],(t,i)=>{l(t,e.chRedir(6,i,!0),i)}).add([66,18,64,24],(t,i)=>{l(t,e.chRedir(7,i,!0),i)}).add([66,18,64,25],(t,i)=>{l(t,e.chRedir(8,i,!0),i)}).add([66,18,64,26],(t,i)=>{l(t,e.chRedir(10,i,!0),i)}).add([66,18,64,27],(t,i)=>{l(t,e.chRedir(11,i,!0),i)}).add([66,18,64,28],(t,i)=>{l(t,e.chRedir(12,i,!0),i)}).add([66,18,64,29],(t,i)=>{l(t,e.chRedir(13,i,!0),i)}).add([66,18,64,30],(t,i)=>{l(t,e.chRedir(14,i,!0),i)}).add([66,18,64,31],(t,i)=>{l(t,e.chRedir(15,i,!0),i)}).add([66,18,64,64],(t,i)=>{o(t,e.chRedir(9,i,!0))}).add([66,18,64,65],(t,i)=>{o(t,e.chRedir(0,i,!0))}).add([66,18,64,66],(t,i)=>{o(t,e.chRedir(1,i,!0))}).add([66,18,64,67],(t,i)=>{o(t,e.chRedir(2,i,!0))}).add([66,18,64,68],(t,i)=>{o(t,e.chRedir(3,i,!0))}).add([66,18,64,69],(t,i)=>{o(t,e.chRedir(4,i,!0))}).add([66,18,64,70],(t,i)=>{o(t,e.chRedir(5,i,!0))}).add([66,18,64,71],(t,i)=>{o(t,e.chRedir(6,i,!0))}).add([66,18,64,72],(t,i)=>{o(t,e.chRedir(7,i,!0))}).add([66,18,64,73],(t,i)=>{o(t,e.chRedir(8,i,!0))}).add([66,18,64,74],(t,i)=>{o(t,e.chRedir(10,i,!0))}).add([66,18,64,75],(t,i)=>{o(t,e.chRedir(11,i,!0))}).add([66,18,64,76],(t,i)=>{o(t,e.chRedir(12,i,!0))}).add([66,18,64,77],(t,i)=>{o(t,e.chRedir(13,i,!0))}).add([66,18,64,78],(t,i)=>{o(t,e.chRedir(14,i,!0))}).add([66,18,64,79],(t,i)=>{o(t,e.chRedir(15,i,!0))}),this.#D.add([54,65],(t,i)=>{e.switchMode("x5d");let s=(t[1]<<7)+t[0],a=(t[3]<<7)+t[2],r=e.chRedir(s&15,i,!0),h=g.cc*r;[()=>{a<1||(a<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=a-1,e.#e[h+u[0]]=82):a<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=a-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#a[r]=be[a-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=a},()=>{a<31&&(e.#e[h+u[10]]=Math.round((a-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(a)},()=>{e.#e[h+u[91]]=D(a)},()=>{e.#r[r*g.rpn+3]=a>8191?a-16320:64+a},()=>{e.#r[r*g.rpn+1]=a>8191?a-16320:64+a},()=>{a>0&&(e.#r[r*g.rpn]=a)},()=>{}][s>>4]()}).add([54,76,0],(t,i)=>{e.switchMode("x5d",!0);let s="",a=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` +${a} ${r} ${h} ${s.trim().replace("Init Voice","")}`,r++,s="";break}}r>99&&(a=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,i)=>{e.switchMode("x5d",!0);let s="",a=90,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` +${a} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,i)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,i)=>{e.switchMode("x5d",!0),S(t,(s,a)=>{a>0&&a<3&&e.setEffectType(a-1,44,s)})}).add([54,104],(t,i)=>{e.switchMode("x5d",!0),S(t,function(s,a,r,h){if(a<192){let d=e.chRedir(Math.floor(a/12),i,!0),c=d*g.cc;switch(a%12){case 0:{s<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#a[d]=s):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#a[d]=be[s-128]),s>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=s;break}case 2:{e.#r[d*g.rpn+3]=s>127?s-192:64+s;break}case 3:{e.#r[d*g.rpn+1]=s>127?s-192:64+s;break}case 4:{s<31&&(e.#e[c+u[10]]=Math.round((s-15)*4.2+64));break}case 5:{let f=s>>4,p=s&15;e.#e[c+u[91]]=D(p),e.#e[c+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(s&15,i,!0),p=s>>4;e.#c[d]=s,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(a-192,i,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,i,s)=>{e.switchMode("mt32");let a=e.chRedir(s,i,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#U[c+(a-1)*16]=h,([!1,()=>{let f=e.#U[a-1<<4];if(f<3)if(e.#C[a]=1,f==2)for(let p=0;p{e.#r[a*g.rpn+3]=h+40},()=>{e.#r[a*g.rpn+1]=h+14},()=>{e.#r[a*g.rpn]=h},!1,()=>{e.#e[g.cc*a+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*a+u[7]]=h},()=>{e.#e[g.cc*a+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,i,s)=>{e.switchMode("mt32");let a=e.chRedir(s,i,!0)}).add([22,18,2],(t,i,s)=>{e.switchMode("mt32");let a=e.chRedir(s,i,!0),r=t[1]+(t[0]<<7);r<10&&(e.#C[a]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#k[(a-1)*g.cmt+c]=h)})}).add([22,18,3],(t,i,s)=>{if(e.switchMode("mt32"),t[0]){let a=t[1]-16}else{let a=t[1];t.subarray(2).forEach((r,h)=>{let d=h+a;e.#U[d]=r;let c=e.chRedir(1+d>>4,i,!0),f=d&15;([!1,()=>{let p=e.#U[c-1<<4];if(p<3)if(e.#C[c]=1,p==2)for(let b=0;b{e.#r[c*g.rpn+3]=r+40},()=>{e.#r[c*g.rpn+1]=r+14},()=>{e.#r[c*g.rpn]=r},!1,()=>{e.#e[g.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[g.cc*c+u[7]]=r},()=>{e.#e[g.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,i,s)=>{e.switchMode("mt32");let a=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+a,c=e.chRedir(Math.floor(d/246+1),i,!0),f=d%246;f<14&&(e.#k[(c-1)*g.cmt+f]=r),f<10&&(e.#C[c]=1)})}).add([22,18,5],(t,i,s)=>{e.switchMode("mt32");let a=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=a+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME +000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,i,s)=>{e.switchMode("mt32");let a=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=a+h;d>1)*g.cmt+d]=r)})}).add([22,18,16],(t,i,s)=>{e.switchMode("mt32");let a=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+a;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let i=t[1],s=" ".repeat(i);t.subarray(2).forEach(a=>{a>31&&(s+=String.fromCharCode(a))}),e.#M=s.padStart(20," "),e.#L=Date.now()+3200}).add([22,18,82],(t,i)=>{let s=e.chRedir(0,i,!0);for(let a=0;a<16;a++)e.#u.ano(s+a),a&&a<10&&(e.#a[s+a]=V[a-1]);console.info("MT-32 alt reset complete.")}),this.#D.add([66,0],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,i)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,i)=>{let s=t[0];switch(s){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(s<10){let a=[0,0,0,0],r=(h,d)=>{a[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][s+d]()}),t[0]<4){let h=0;a.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,i)=>{}).add([66,18,0,2],(t,i)=>{}).add([66,18,1],(t,i)=>{let s=e.chRedir(t[0],i,!0),a=s*g.cc,r=t[1],h=`NS5R CH${s+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[a+u[0]]=d||121},()=>{e.#e[a+u[32]]=d},()=>{e.#a[s]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!d},()=>{e.setChType(s,d,m.ns5r),console.debug(`${h}type: ${P[d]}`)},()=>{e.#r[g.rpn*s+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[a+u[7]]=d},()=>{e.#e[a+u[11]]=d},()=>{},()=>{},()=>{e.#e[a+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[a+u[93]]=d},()=>{e.#e[a+u[91]]=d},()=>{e.#e[a+u[76]]=d},()=>{e.#e[a+u[77]]=d},()=>{e.#e[a+u[78]]=d},()=>{e.#e[a+u[74]]=d},()=>{e.#e[a+u[71]]=d},()=>{e.#e[a+u[73]]=d},()=>{e.#e[a+u[75]]=d},()=>{e.#e[a+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[a+u[5]]=d},()=>{e.#e[a+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,i)=>{let s=t[0];if(s<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let a=s-32;e.#h=Date.now()+3200,e.#o=10,e.#g.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+a,p=f>>4,b=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#g[b*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1;let s="";S(t,(a,r)=>{r<8?(a>31&&(s+=String.fromCharCode(a)),r==7&&(e.aiEfxName=s)):r<10&&e.setEffectType(r-8,44,a)})}).add([66,53],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(s,a){switch(!0){case a<2944:{let r=e.chRedir(Math.floor(a/92),i,!0),h=r*g.cc;switch(a%92){case 0:{e.#e[h+u[0]]=s||121;break}case 1:{e.#e[h+u[32]]=s;break}case 2:{e.#a[r]=s,s>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(s,i,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*g.rpn+3]=s<40||s>88?s+(s>63?-192:64):s;break}case 9:case 10:{e.#e[h+u[7]]=s;break}case 11:{e.#e[h+u[11]]=s;break}case 14:{e.#e[h+u[10]]=s||128;break}case 19:{e.#e[h+u[93]]=s;break}case 20:{e.#e[h+u[91]]=s;break}case 84:{e.#e[h+u[65]]=s;break}case 85:{e.#e[h+u[5]]=s;break}}break}case a<3096:break;case a<3134:break;case a<8566:break}})}).add([66,54],(t,i)=>{e.switchMode("ns5r",!0);let s="",a=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{a=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` +${a} ${r} ${h} ${s.trim().replace("Init Voice","")}`,r++,s="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,i)=>{e.switchMode("ns5r",!0);let s="",a=88,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%126;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:break;case p==12:break;case p==13:{d+=` +${a} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let i=new Uint8Array(5760);S(t,(s,a,r)=>{if(a<720)for(let h=0;h<8;h++)i[a*8+h]=s>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:i})}).add([76],(t,i,s)=>{e.#D.run([66,...t],i,s)}),this.#V.add([16,0,8,0],(t,i,s)=>{let a=(t[2]<<4)+t[3],r="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#S=a?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${a}`)},()=>{console.debug(`${r}reverb time: ${a}`)},()=>{console.debug(`${r}reverb time: ${a}`)},()=>{console.debug(`${r}reverb predelay: ${a}`)},()=>{console.debug(`${r}reverb predelay: ${a}`)},()=>{console.debug(`${r}depth high: ${a}`)},()=>{console.debug(`${r}depth high: ${a}`)},()=>{console.debug(`${r}depth low: ${a}`)},()=>{console.debug(`${r}depth low: ${a}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,i,s)=>{let a=e.chRedir(t[1],i,!0),r=g.cc*a,h=g.rpn*a,d=(t[3]<<4)+t[4],c=`K11 CH${a+1} `;([()=>{d<128?(e.setChType(a,e.CH_MELODIC,m.k11),e.#e[r+u[0]]=0,e.#a[a]=d):(e.setChType(a,e.CH_DRUMS,m.k11),e.#a[a]=d-128)},()=>{let f=e.chRedir(d,i,!0);e.#c[a]=f,a!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[r+u[7]]=d},()=>{e.#n[a]=d},()=>{e.#e[r+u[10]]=d},()=>{e.#r[h+3]=d+40},()=>{e.#r[h+1]=d>>1,e.#r[h+2]=d&1},()=>{e.#e[r+u[91]]=d?127:0},()=>{},()=>{e.#e[r+u[74]]=d},()=>{e.#e[r+u[73]]=d},()=>{e.#e[r+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,i,s)=>{let a=(t[2]<<4)+t[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${a}`)},()=>{console.debug(`${r}reverb time: ${a}`)},()=>{console.debug(`${r}reverb predelay: ${a}`)},()=>{console.debug(`${r}depth high: ${a}`)},()=>{console.debug(`${r}depth low: ${a}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,i,s)=>{let a=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc;[()=>{a<128?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#a[r]=a):a<160?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#a[r]=a-100):(e.setChType(r,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#a[r]=a-160)},()=>{let d=e.chRedir(a,i,!0);e.#c[r]=d,r!=d&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,i,s)=>{let a=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc,d=r*g.rpn,c=`GMLX CH${r+1} `;[()=>{e.#n[r]=a},()=>{e.#e[h+u[7]]=a},()=>{e.#e[h+u[10]]=a},()=>{e.#e[h+u[91]]=a?127:0},()=>{e.#r[d+3]=a+40},()=>{e.#r[d+1]=a},()=>{e.#r[d]=a},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,i,s)=>{let a=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=a*129/16383*100;break}case 5:{a-64;break}case 6:{console.debug(`SG global reverb: ${a?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[a]}`);break}}break}default:if(t[0]>>4==1){let r=e.chRedir(t[0]&15,i,!0);if(t[1]==2){let h=e.chRedir(a,i,!0);e.#c[r]=h,r!=h&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*r+u[7]]=a)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,i,s)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#E.add([127,0],(t,i,s)=>{e.switchMode("motif");let a=new Uint8Array([127,1,...t]);e.#E.run(a,i,s)}).add([127,1,0,0],(t,i,s)=>{e.switchMode("s90es");let a="S90/Motif ES system ",r=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][r+d]||(()=>{console.info(`Unrecognized ${a}ID: ${r+d}`)}))()})}).add([127,1,0,0,14],(t,i,s)=>{e.switchMode("s90es");let a="S90/Motif ES bulk header ",r=[];r[95]=(h,d,c)=>{console.debug(`${a}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${a}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,i,s)=>{e.switchMode("s90es");let a="S90/Motif ES bulk footer ",r=[];r[95]=(h,d,c)=>{console.debug(`${a}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${a}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,i,s)=>{e.switchMode("s90es");let a=e.chRedir(t[0],i,!0),r=g.cc*a,h=t[1],d=`S90/Motif ES bulk CH${a<16?a+1:"U"+(a-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[r+u[0]]=c},()=>{c&&(e.#n[a]=1),e.#e[r+u[32]]=c,e.#i[a]=this.setChType(a,[32,40].indexOf(c)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{c&&(e.#n[a]=1),e.#a[a]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[a]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[r+u[7]]=c},()=>{e.#e[r+u[10]]=c},!1,!1,!1,()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[128]]=c},()=>{},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},!1,()=>{e.#e[r+u[65]]=c},()=>{e.#e[r+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,i,s)=>{e.switchMode("s90es");let a=t[0];t.subarray(1).forEach((r,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=r-64},()=>{let f=C[r]},()=>{let f=r/10},()=>{let f=r}][a+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,l,o){this.#t=e,this.start=n,this.end=l,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,l){super(!0,e,n,l)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let l=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(l.push(i),t.#t=i.index)})}return l}getRange(e,n){e>n&&([e,n]=[n,e]);let l=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),i=!0;for(let s=0;s=e&&(o=s):o=o<0?s:o;for(;i;)this[o]?.end=e&&l.push(this[o]):i=!1,o++;return l}};var _e=0xffffffffffff,ve=function(e){let n=new Q,l=this,o=e.timeDivision,t=120,i=new Q,s=0,a=0;i.push(new q(0,_e,[120,0])),e.track.forEach(function(c){s=0,c.event.forEach(function(f){s+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,i[i.length-1]&&i.push(new q(s,0xffffffffffff,[t,0])))})}),i.fresh(),i.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let r=120;i.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):r==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),r=c.data[0])});let h=0,d=120;return i.forEach(function(c){let f=c.start,p=f/d/o*60+h;d=c.data[0],h=p-f/d/o*60,c.data[1]=h}),console.debug("All tempo changes: ",i),t=120,s=0,a=0,e.track.forEach(function(c,f){s=0,a=0;let p=f+1;c.event.forEach(function(b,y){s+=b.deltaTime;let $=i.step(s,!0)[0];$&&(t=$.data[0],a=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(s/t/o*60+a,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends U{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#c=120;#i=4;#e=4;#b=0;#a=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#i=4,this.#e=4,this.#b=0,this.#a=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#a/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#i)}get noteBeat(){let e=this.noteOverall%this.#i;return e<0&&(e+=this.#i),e}getTimeSig(){return[this.#i,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#a&&(this.#a=e);let n=this.#t?.step(e)||[],l=0,o=new Set,t=this,i=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&l++),y.data.type==8&&o.has($.part*128+$.data[0])&&l++;let w=t.device.runJson($);switch(w?.reply){case"meta":{i.push(w);break}}w?.reply&&delete w.reply}),i?.length>0&&this.dispatchEvent("meta",i);let s=this.device.getActive(),a=[],r=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let M=w[$]-t.#p[$],Y=u.length*$;if(M>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(M-M*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(M-M*t.smoothingDcy**L)}});let p=0;return s.forEach(function(y,$){y&&(a[$]=t.device.getVel($),p+=a[$].size)}),{extraPoly:l,curPoly:p,chInUse:s,chKeyPr:a,chPitch:r,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,l=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=l,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(i){(o.#h[i.meta]||console.debug).call(o,i.meta,i.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,i){o.#o?.length<1&&(o.#o=i)},this.#h[81]=function(t,i){let s=o.noteProgress,a=o.#n||.5;o.#c=6e7/i,o.#n=i/1e6,o.#b+=s*(a/o.#n)-s},this.#h[88]=function(t,i){let s=o.noteProgress,a=o.noteOverall,r=o.noteBar,h=o.noteBeat,d=o.#i,c=o.#e;o.#i=i[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,a=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[l%12]*this.noteHeight;if(o>0)switch(i.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,i.fillRect(s+1,a+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{i.clearRect(s+1+this.noteOutline,a+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let l=super.render(n),o=this,t=this.context,i=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let s=metrics.actualBoundingBoxLeft,a=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${l.eventCount.toString().padStart(3,"0")} ${(l.curPoly+l.extraPoly).toString().padStart(3,"0")}/512 ${l.tSig[0].toString().padStart(2," ")}/${l.tSig[1].toString().padEnd(2," ")} ${(l.noteBar+1).toString().padStart(3," ")}:${Math.floor(l.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(l.tempo).toString().padStart(3," ")}.${Math.floor(l.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(l.master.volume).toString().padStart(3," ")}.${Math.floor(l.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+s,a+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+s,a+o.fontPadding+o.lineHeight*2),l.chKeyPr.forEach((r,h)=>{r.forEach((d,c)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&r.part1?32:16)),c=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+s+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(c.name,o.fontPadding+s+(r>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+r%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(l.chContr[f+u[p]]/-127))})}}l.letter.expire<=i,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let r=0;r<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+r%(this.mode>1?32:16)),o.noteWidth*16*(l.strength[h]/255),o.lineHeight-1)}for(let r in o.eventBuffer)delete o.eventBuffer[r];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let l=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,i=t.part*128+t.note,s=this.eventBuffer[i];this.eventBuffer[i]=t,s?.velo>0&&t.velo==0&&this.eventQueue.push(s)})}},Dt=Fe;export{Dt as default}; diff --git a/dist/state.mjs b/dist/state.mjs index 3617ef3f..8d49a908 100644 --- a/dist/state.mjs +++ b/dist/state.mjs @@ -1,8 +1,8 @@ var X=function(e,n){let l=Math.min(e.length,n.length),f=e.slice(0,l),t=n.slice(0,l),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(o,c,h){i&&o!=n[c]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||l?a:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...l):this.pool[f].data(n.slice(this.pool[f].length),...l):this.default(n,...l)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),f=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,l)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](l)}};var ce=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},H=class{#t;strictMode=!1;get(e=0,n=0,l=0,f){let t=[e,n,l],a,r=Array.from(arguments);switch(f){case"xg":{e==32?r[2]+=4:e==33||e==35||e==36?r[2]+=5:e==79?r[0]=95:e==80?r[0]=96:e==81?r[0]=97:e==82?r[0]=98:e==83?r[0]=99:e==84&&(r[0]=100);break}case"gs":{e==0&&l<5?r[2]=0:e>125&&l<5&&l!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&l==0&&(r[2]=5);break}case"s90es":{l<8?r[2]+=17:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{l<8?r[2]+=28:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",o=!1,c=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",o=!0);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,o=!0;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(c=63),o=!0;break}case 97:{s="VL:",o=!0,c=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(c=63),o=!0;break}case 100:{s="AN",r[2]>63&&(c=63),o=!0;break}case 121:{s=`GM-${r[2]?"":"a"}`,o=!0;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${(o?l:e)-c}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${l}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<120?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(l||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,l){let f=this,t=[],a=0,r=0;e.split(` -`).forEach(function(i,s){let o=i.split(" "),c=[];s==0?o.forEach(function(h,b){t[ce.indexOf(h)]=b}):o.forEach(async function(h,b){b>2?(f.#t[c[t[1]]]=f.#t[c[t[1]]]||[],(!f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]?.length||n)&&(f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]=o[3],a++),r++):c.push(parseInt(o[b]))})}),n||console.debug(`Map "${l||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,f){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let l=!0;return n.forEach((f,t)=>{l=l&&e[t]==f}),l},V=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],o=0;for(;i;){let c=n.subarray(a);([()=>{v.decode(c.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(c.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(c.subarray(0,4)),b=V(c.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[o],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return l});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +`).forEach(function(i,s){let o=i.split(" "),c=[];s==0?o.forEach(function(h,b){t[ce.indexOf(h)]=b}):o.forEach(async function(h,b){b>2?(f.#t[c[t[1]]]=f.#t[c[t[1]]]||[],(!f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]?.length||n)&&(f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]=o[3],a++),r++):c.push(parseInt(o[b]))})}),n||console.debug(`Map "${l||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,f){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let l=!0;return n.forEach((f,t)=>{l=l&&e[t]==f}),l},V=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},R=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],o=0;for(;i;){let c=n.subarray(a);([()=>{R.decode(c.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(c.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=R.decode(c.subarray(0,4)),b=V(c.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[o],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return l});var v=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,l){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(l)||l}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},m=function(e,n){let l=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,l,e),l++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],C=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};x.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],l=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(l,t)):f==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},le=function(e,n="",l="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${l}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#m=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#l=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#w=new Uint8Array(u.ch);#c=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#x=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#C=new Uint8Array(u.ch);#A=new Uint8Array(128);#E=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#k=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#S=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#k)>-1){if(l==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let l=e*128+n,f=this.#c.lastIndexOf(l);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[l],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#c[f]=0,this.#o[l]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let f=e*128+n,t=0;for(this.#w[e]&&this.#h.ano(e);this.#d[t]>0&&this.#c[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,l)=>{if(n==this.NOTE_HELD){let f=this.#c[l],t=f>>7;e==t&&(this.#d[l]=this.NOTE_IDLE,this.#c[l]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,l)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[l]=f;let t=this.#c[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#c[l],t=f>>7;e==t&&(this.#d[l]=this.NOTE_IDLE,this.#c[l]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#c.forEach((n,l,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,l=e.data[0];this.#h.nOff(n,l)},9:function(e){let n=e.channel;this.#l[n]=1;let l=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,l,f):this.#h.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#c.indexOf(l)>-1&&(this.#o[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#l[n]=1);break}e.data[1]&&(this.#l[n]=1);break}default:{this.#l[n]=1;break}}})();let l=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#w[n]=1,this.#h.ano(n);return}case 127:{this.#w[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[l+d[99]],t=this.#e[l+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[l+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[l+d[100]]];this.#e[l+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.#i[n]=+([32,40].indexOf(e.data[1])>-1)<<1;break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[l+101]==0&&I[this.#e[l+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[l+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#l[n]=1);break}default:this.#l[n]=1}this.#r[n]=e.data,this.#C[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#c.forEach(function(f){let t=f>>7;l==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:l,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let l=n[0],f=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(l,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#F.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#T.run(n,l,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,l)=>{this.#U.run(n,l,e)},67:(e,n,l)=>{this.#y.run(n,l,e)},68:(e,n,l)=>{this.#V.run(n,l,e)},71:(e,n,l)=>{this.#K.run(n,l,e)},126:(e,n,l)=>{this.#I.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#X.run(n,l,e)}};#I;#X;#y;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#l.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,l=this.#e.subarray(n,n+u.cc);return l[d[0]]=l[d[0]]||this.#H,l[d[32]]=l[d[32]]||this.#k,l}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&(this.#e[e*u.cc+d[0]]=C[l])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,l=this;return l.#c.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&l.#o[f]>0&&n.set(r,{v:l.#o[f],s:l.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#m}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#c.forEach(function(n){let l=Math.floor(n/128);e.#o[n]>e.#x[l]&&(e.#x[l]=e.#o[n])}),this.#x}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,f){e[f]=Math.floor(l*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,l,f){let t=e||this.#H,a=n,r=l||this.#k;x[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(x[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),o=s*u.cmt,c="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(c+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${c}`,!0),i.name=c,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],x[this.#t]);if(this.#C[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#E.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,f=3200){let t=this,a;t.#M=" ".repeat(l),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let l=this.#R[n];if(l){if(U.indexOf(l)>=0)return this.#e[e*u.cc+d[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#k=0,this.#O=0,this.#l.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#o.fill(0),this.#c.fill(0),this.#x.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#m=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#S=!0,this.#f.forEach(function(n,l,f){f[l]=l}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=C[0],this.#e[u.cc*25]=C[0],this.#e[u.cc*41]=C[0],this.#e[u.cc*57]=C[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#E.fill(0),this.#C.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=l,this.#p=0,this.#H=se[0][l],this.#k=se[1][l];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==C[f]&&(this.#e[a*u.cc]=C[l]);switch(this.initOnReset,l){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#l[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(l){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(f=>{e.channel=f,l=!0,this.#j[e.type].call(this,e)}),l||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new S,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,l){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(l)||l}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},m=function(e,n){let l=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,l,e),l++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],l=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(l,t)):f==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},le=function(e,n="",l="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${l}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#m=0;#R=new Array(11);get#$(){return this.#R[this.#p]}set#$(e){this.#R[this.#p]=e}#l=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#v=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#w=new Uint8Array(u.ch);#c=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#E=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#k=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#S=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#k)>-1){if(l==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let l=e*128+n,f=this.#c.lastIndexOf(l);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[l],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#c[f]=0,this.#o[l]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let f=e*128+n,t=0;for(this.#w[e]&&this.#h.ano(e);this.#d[t]>0&&this.#c[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,l)=>{if(n==this.NOTE_HELD){let f=this.#c[l],t=f>>7;e==t&&(this.#d[l]=this.NOTE_IDLE,this.#c[l]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,l)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[l]=f;let t=this.#c[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#c[l],t=f>>7;e==t&&(this.#d[l]=this.NOTE_IDLE,this.#c[l]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#c.forEach((n,l,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,l=e.data[0];this.#h.nOff(n,l)},9:function(e){let n=e.channel;this.#l[n]=1;let l=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,l,f):this.#h.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#c.indexOf(l)>-1&&(this.#o[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#l[n]=1);break}e.data[1]&&(this.#l[n]=1);break}default:{this.#l[n]=1;break}}})();let l=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#w[n]=1,this.#h.ano(n);return}case 127:{this.#w[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[l+d[99]],t=this.#e[l+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[l+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[l+d[100]]];this.#e[l+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[l+101]==0&&I[this.#e[l+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[l+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#l[n]=1);break}default:this.#l[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#c.forEach(function(f){let t=f>>7;l==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:l,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let l=n[0],f=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(l,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#F.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#T.run(n,l,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,l)=>{this.#U.run(n,l,e)},67:(e,n,l)=>{this.#y.run(n,l,e)},68:(e,n,l)=>{this.#V.run(n,l,e)},71:(e,n,l)=>{this.#K.run(n,l,e)},126:(e,n,l)=>{this.#I.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#X.run(n,l,e)}};#I;#X;#y;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#l.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,l=this.#e.subarray(n,n+u.cc);return l[d[0]]=l[d[0]]||this.#H,l[d[32]]=l[d[32]]||this.#k,l}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[l])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,l=this;return l.#c.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&l.#o[f]>0&&n.set(r,{v:l.#o[f],s:l.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#m}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#c.forEach(function(n){let l=Math.floor(n/128);e.#o[n]>e.#C[l]&&(e.#C[l]=e.#o[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,f){e[f]=Math.floor(l*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,l,f){let t=e||this.#H,a=n,r=l||this.#k;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),o=s*u.cmt,c="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(c+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${c}`,!0),i.name=c,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#E.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,f=3200){let t=this,a;t.#M=" ".repeat(l),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#v}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let l=this.#v[n];if(l){if(U.indexOf(l)>=0)return this.#e[e*u.cc+d[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#k=0,this.#O=0,this.#l.fill(0),this.#e.fill(0),this.#v.fill(0),this.#r.fill(0),this.#o.fill(0),this.#c.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#m=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#S=!0,this.#f.forEach(function(n,l,f){f[l]=l}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#E.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=l,this.#p=0,this.#H=se[0][l],this.#k=se[1][l];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[l]);switch(this.initOnReset,l){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#l[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(l){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(f=>{e.channel=f,l=!0,this.#j[e.type].call(this,e)}),l||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#R[10]=new Uint8Array(512),this.#_=new S,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${le(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${le(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new S("universal non-realtime"),this.#X=new S("universal realtime"),this.#y=new S("Yamaha"),this.#T=new S("Roland"),this.#U=new S("Korg"),this.#F=new S("Kawai"),this.#K=new S("Akai"),this.#V=new S("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#y.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#y.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let o=s+t[0];([r,r,r,r,c=>{this.#b=c*129/16383*100},c=>{},c=>{}][o]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,o=i-1&3,c=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${c}${a-64}dB`)},()=>{console.debug(`${c}${a} (raw)`)},()=>{console.debug(`${c}${a/10}`)},()=>{console.debug(`${c}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([c=>{e.setEffectTypeRaw(3+a,!1,c),console.info(`${i}main type: ${R[c]}`)},c=>{e.setEffectTypeRaw(3+a,!0,c),console.debug(`${i}sub type: ${c+1}`)}][r+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#m=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,o=`XG CH${r+1} `,c=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(c):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#w[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(c):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(c):i<116?console.debug(`${o}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(c):i<120?console.debug(`${o}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(c)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((o,c)=>{let h=c+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0];t.subarray(1).forEach((i,s)=>{let o=r+s;o==8?console.debug(`MU1000 set LCD contrast to ${i}.`):o>9&&o<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#S=!!i,console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][o-10]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#S?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#S&&e.dispatchEvent("channelmin",s),e.#S&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#S){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let o="",c=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):c+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(o)}`,e.#Y=s+Math.ceil(c/2)+e.#Q,k()&&console.debug(`${i}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#y.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#y.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((c,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(c>>6-$&1)<<7;else o[s+7*b+p]=c})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,c)=>{let h=c>>3,b=c&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(o>>6-p&1)<<7;else s[i+7*h+b]=o})}}).add([89,3],(t,a,r)=>{}),this.#y.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{let h=c+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*i,c=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#w[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${c} AC1 at cc${h}`)},()=>{console.debug(`${c} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#m=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let o=Math.floor(s/16),c=s%16,h=(c*3+o)*7,b=7,p=0;for(h-=c*5,o==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#k=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{let h=c+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,c)}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let o=ee(e.#g.subarray(10,12),s,i);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(o,c){console.warn(`Unknown GS EFX address: ${c}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#m=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#m=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,a,r){let i=t[0],s=u.cc*a,o=u.rpn*a,c=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#w[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${c}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${c}CC 1: cc${h}`)},()=>{console.debug(`${c}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+o]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+o-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{l(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{l(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{l(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{l(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{l(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{l(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{l(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{l(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{l(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{l(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{l(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{l(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{l(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{l(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{l(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{l(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),o=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[o+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=i},()=>{i<31&&(e.#e[o+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(i)},()=>{e.#e[o+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` +122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${le(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${le(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new S("universal non-realtime"),this.#X=new S("universal realtime"),this.#y=new S("Yamaha"),this.#T=new S("Roland"),this.#U=new S("Korg"),this.#F=new S("Kawai"),this.#K=new S("Akai"),this.#V=new S("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#y.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#y.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let o=s+t[0];([r,r,r,r,c=>{this.#b=c*129/16383*100},c=>{},c=>{}][o]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${v[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${v[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${v[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,o=i-1&3,c=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${c}${a-64}dB`)},()=>{console.debug(`${c}${a} (raw)`)},()=>{console.debug(`${c}${a/10}`)},()=>{console.debug(`${c}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([c=>{e.setEffectTypeRaw(3+a,!1,c),console.info(`${i}main type: ${v[c]}`)},c=>{e.setEffectTypeRaw(3+a,!0,c),console.debug(`${i}sub type: ${c+1}`)}][r+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#m=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,o=`XG CH${r+1} `,c=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(c):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#w[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(c):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(c):i<116?console.debug(`${o}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(c):i<120?console.debug(`${o}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(c)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((o,c)=>{let h=c+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0];t.subarray(1).forEach((i,s)=>{let o=r+s;o==8?console.debug(`MU1000 set LCD contrast to ${i}.`):o>9&&o<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#S=!!i,console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][o-10]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#S?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#S&&e.dispatchEvent("channelmin",s),e.#S&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#S){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let o="",c=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):c+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(o)}`,e.#Y=s+Math.ceil(c/2)+e.#Q,k()&&console.debug(`${i}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#y.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#y.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((c,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(c>>6-$&1)<<7;else o[s+7*b+p]=c})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,c)=>{let h=c>>3,b=c&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(o>>6-p&1)<<7;else s[i+7*h+b]=o})}}).add([89,3],(t,a,r)=>{}),this.#y.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{let h=c+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*i,c=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#w[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${c} AC1 at cc${h}`)},()=>{console.debug(`${c} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#m=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let o=Math.floor(s/16),c=s%16,h=(c*3+o)*7,b=7,p=0;for(h-=c*5,o==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#k=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{let h=c+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,c)}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let o=ee(e.#g.subarray(10,12),s,i);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(o,c){console.warn(`Unknown GS EFX address: ${c}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#m=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#m=Date.now()+3200,e.#R[t[0]-1]?.length||(e.#R[t[0]-1]=new Uint8Array(256));let a=e.#R[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,a,r){let i=t[0],s=u.cc*a,o=u.rpn*a,c=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#w[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${c}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${c}CC 1: cc${h}`)},()=>{console.debug(`${c}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+o]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+o-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{l(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{l(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{l(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{l(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{l(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{l(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{l(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{l(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{l(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{l(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{l(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{l(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{l(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{l(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{l(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{l(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),o=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[o+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=i},()=>{i<31&&(e.#e[o+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(i)},()=>{e.#e[o+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` ${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` -${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),m(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),m(t,function(r,i,s,o){if(i<192){let c=e.chRedir(Math.floor(i/12),a,!0),h=c*u.cc;switch(i%12){case 0:{r<128?(e.setChType(c,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[c]=r):(e.setChType(c,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[c]=ne[r-128]),r>0&&(e.#l[c]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[c*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[c*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[c]=r,(b!=c||p)&&(console.info(`X5D Part CH${c+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let c=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((o,c)=>{let h=c+s;e.#A[h+(i-1)*16]=o,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#C[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=o+40},()=>{e.#s[i*u.rpn+1]=o+14},()=>{e.#s[i*u.rpn]=o},!1,()=>{e.#e[u.cc*i+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=o},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#C[i]=1),t.subarray(2).forEach((o,c)=>{let h=c+s;h<14&&(e.#E[(i-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,o)=>{let c=o+i;e.#A[c]=s;let h=e.chRedir(1+c>>4,a,!0),b=c&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#C[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let c=o+i,h=e.chRedir(Math.floor(c/246+1),a,!0),b=c%246;b<14&&(e.#E[(h-1)*u.cmt+b]=s),b<10&&(e.#C[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let c=i+o,h=Math.floor(c/8),b=c&7,p=h*8;e.#q[c]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),m(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),m(t,function(r,i,s,o){if(i<192){let c=e.chRedir(Math.floor(i/12),a,!0),h=c*u.cc;switch(i%12){case 0:{r<128?(e.setChType(c,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[c]=r):(e.setChType(c,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[c]=ne[r-128]),r>0&&(e.#l[c]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[c*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[c*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[c]=r,(b!=c||p)&&(console.info(`X5D Part CH${c+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let c=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((o,c)=>{let h=c+s;e.#A[h+(i-1)*16]=o,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=o+40},()=>{e.#s[i*u.rpn+1]=o+14},()=>{e.#s[i*u.rpn]=o},!1,()=>{e.#e[u.cc*i+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=o},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((o,c)=>{let h=c+s;h<14&&(e.#E[(i-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,o)=>{let c=o+i;e.#A[c]=s;let h=e.chRedir(1+c>>4,a,!0),b=c&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let c=o+i,h=e.chRedir(Math.floor(c/246+1),a,!0),b=c%246;b<14&&(e.#E[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let c=i+o,h=Math.floor(c/8),b=c&7,p=h*8;e.#q[c]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME 000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,o)=>{let c=i+o;c>1)*u.cmt+c]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,o=function(c,h){e.#f[h-12]=c,s=!0};t.subarray(2).forEach((c,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,o,o,o,o,o,o,o,o,o,()=>{e.#b=c}][b]||(()=>{}))(c,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{[s,s,s,s,()=>{e.#b=o*129/16383*100},()=>o-64,()=>o-64,()=>{},()=>{},()=>{}][r+c]()}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],o=`NS5R CH${r+1} `;t.subarray(2).forEach((c,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=c||121},()=>{e.#e[i+d[32]]=c},()=>{e.#r[r]=c}][b]():b<8||(b<14?[()=>{let p=e.chRedir(c,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#w[r]=+!c},()=>{e.setChType(r,c,g.ns5r),console.debug(`${o}type: ${O[c]}`)},()=>{e.#s[u.rpn*r+3]=c},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=c},()=>{e.#e[i+d[11]]=c},()=>{},()=>{},()=>{e.#e[i+d[10]]=c||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=c},()=>{e.#e[i+d[91]]=c},()=>{e.#e[i+d[76]]=c},()=>{e.#e[i+d[77]]=c},()=>{e.#e[i+d[78]]=c},()=>{e.#e[i+d[74]]=c},()=>{e.#e[i+d[71]]=c},()=>{e.#e[i+d[73]]=c},()=>{e.#e[i+d[75]]=c},()=>{e.#e[i+d[72]]=c}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=c},()=>{e.#e[i+d[65]]=c}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#m=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),o=4;s.forEach(function(c,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";m(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,m(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),o=s*u.cc;switch(i%92){case 0:{e.#e[o+d[0]]=r||121;break}case 1:{e.#e[o+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#l[s]=1);break}case 3:{let c=e.chRedir(r,a,!0);e.#f[s]=c,s!=c&&(console.info(`NS5R CH${s+1} receives from CH${c+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[o+d[7]]=r;break}case 11:{e.#e[o+d[11]]=r;break}case 14:{e.#e[o+d[10]]=r||128;break}case 19:{e.#e[o+d[93]]=r;break}case 20:{e.#e[o+d[91]]=r;break}case 84:{e.#e[o+d[65]]=r;break}case 85:{e.#e[o+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{o=h&127;break}case p==13:{c+=` ${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(c)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{c+=` -${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(c)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);m(t,(r,i,s)=>{if(i<720)for(let o=0;o<8;o++)a[i*8+o]=r>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#k=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,o=u.rpn*i,c=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{c<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=c):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=c-128)},()=>{let b=e.chRedir(c,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=c},()=>{e.#l[i]=c},()=>{e.#e[s+d[10]]=c},()=>{e.#s[o+3]=c+40},()=>{e.#s[o+1]=c>>1,e.#s[o+2]=c&1},()=>{e.#e[s+d[91]]=c?127:0},()=>{},()=>{e.#e[s+d[74]]=c},()=>{e.#e[s+d[73]]=c},()=>{e.#e[s+d[72]]=c}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=i-160)},()=>{let c=e.chRedir(i,a,!0);e.#f[s]=c,s!=c&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${c+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,c=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#l[s]=i},()=>{e.#e[o+d[7]]=i},()=>{e.#e[o+d[10]]=i},()=>{e.#e[o+d[91]]=i?127:0},()=>{e.#s[c+3]=i+40},()=>{e.#s[c+1]=i},()=>{e.#s[c]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(i,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#y.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#y.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,c)=>{([()=>{e.#b=o*12900/16383}][s+c]||(()=>{console.info(`Unrecognized ${i}ID: ${s+c}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(o,c,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(o,c,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,o=t[1],c=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(c,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#l[i]=1),e.#e[s+d[32]]=h,e.#i[i]=+([32,40].indexOf(h)>-1)<<1},()=>{h&&(e.#l[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#w[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+o&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(c)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);m(t,(r,i,s)=>{if(i<720)for(let o=0;o<8;o++)a[i*8+o]=r>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#k=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,o=u.rpn*i,c=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{c<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=c):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=c-128)},()=>{let b=e.chRedir(c,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=c},()=>{e.#l[i]=c},()=>{e.#e[s+d[10]]=c},()=>{e.#s[o+3]=c+40},()=>{e.#s[o+1]=c>>1,e.#s[o+2]=c&1},()=>{e.#e[s+d[91]]=c?127:0},()=>{},()=>{e.#e[s+d[74]]=c},()=>{e.#e[s+d[73]]=c},()=>{e.#e[s+d[72]]=c}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=i-160)},()=>{let c=e.chRedir(i,a,!0);e.#f[s]=c,s!=c&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${c+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,c=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#l[s]=i},()=>{e.#e[o+d[7]]=i},()=>{e.#e[o+d[10]]=i},()=>{e.#e[o+d[91]]=i?127:0},()=>{e.#s[c+3]=i+40},()=>{e.#s[c+1]=i},()=>{e.#s[c]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(i,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#y.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#y.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,c)=>{([()=>{e.#b=o*12900/16383}][s+c]||(()=>{console.info(`Unrecognized ${i}ID: ${s+c}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(o,c,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(o,c,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,o=t[1],c=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(c,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#l[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#l[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#w[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+o&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index cc5d32dc..76539cba 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ie=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Er=[12,13,16,17,18,19],mr=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},P,j,ne,fe,W,de,Yt,U,H,O,p,ue,D,L,J,B,G,we,oe,Ce,S,Fe,et,ce,Ee,ee,Ve,me,Q,ve,te,X,pe,Xe,ze,le,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,Z,he,ge,Pe,De,Ie,Wt,oa=(Wt=class extends it{constructor(){super();E(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,P,0);E(this,j,0);E(this,ne,0);E(this,fe,new Array(11));E(this,U,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,O,new Uint8Array($.ch));E(this,p,new Uint8Array($.ch*$.cc));E(this,ue,new Uint8Array($.ace));E(this,D,new Uint8Array($.ch));E(this,L,new Uint8Array($.ch*$.nn));E(this,J,new Uint8Array($.ch));E(this,B,new Uint16Array($.pl));E(this,G,new Uint8Array($.pl));E(this,we,new Int16Array($.ch));E(this,oe,new Uint8Array($.ch));E(this,Ce,0);E(this,S,new Uint8Array($.ch*$.rpn));E(this,Fe,new Int8Array($.ch*qt.length));E(this,et,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ce,new Uint8Array($.ch));E(this,Ee,new Uint8Array(128));E(this,ee,new Uint8Array($.cmt*8));E(this,Ve,new Uint8Array(1024));E(this,me,new Uint8Array($.cmt*64));E(this,Q,new Uint8Array($.efx*3));E(this,ve,0);E(this,te,0);E(this,X,100);E(this,pe,0);E(this,Xe,500);E(this,ze,0);E(this,le,"");E(this,ke,0);E(this,Ke,0);E(this,re,!0);E(this,I,!1);E(this,tt,void 0);E(this,$t,new Uint8Array(2));E(this,T,[]);E(this,be,new Uint8Array($.ch));E(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,_,[]);E(this,Te,void 0);E(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,J)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,oe)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});E(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,P)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,J)[n]=1,t(this,N).ano(n);return}case 127:{t(this,J)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Er.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(Y()&&console.debug(`${$e[t(this,P)]}, CH${n+1}: ${e.data[1]}`),t(this,P)==0)e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,P)==M.gs)e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,P)==M.gm)e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,P)==M.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let c=0;for(let r=0;r<16;r++){let a=t(this,p)[$.cc*r];(a==56||a==62)&&c++}c>14&&this.switchMode("ag10",!0)}}switch(t(this,P)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,P))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,P)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=mr.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,P)){case M.s90es:case M.motif:{t(this,O)[n]=+([32,40].indexOf(e.data[1])>-1)<<1;break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,P)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,D)[n]=e.data,t(this,ce)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});E(this,ot,{64:(e,n,h)=>{t(this,Pe).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,he).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,he).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,Z).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,De).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});E(this,Re,void 0);E(this,Oe,void 0);E(this,Z,void 0);E(this,he,void 0);E(this,ge,void 0);E(this,Pe,void 0);E(this,De,void 0);E(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new se),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ie=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Er=[12,13,16,17,18,19],mr=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},P,j,ne,fe,W,de,Yt,U,H,O,p,ue,D,L,J,B,G,we,oe,Ce,S,Fe,et,ce,Ee,ee,Ve,me,Q,ve,te,X,pe,Xe,ze,le,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,Z,he,ge,Pe,De,Ie,Wt,oa=(Wt=class extends it{constructor(){super();E(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,P,0);E(this,j,0);E(this,ne,0);E(this,fe,new Array(11));E(this,U,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,O,new Uint8Array($.ch));E(this,p,new Uint8Array($.ch*$.cc));E(this,ue,new Uint8Array($.ace));E(this,D,new Uint8Array($.ch));E(this,L,new Uint8Array($.ch*$.nn));E(this,J,new Uint8Array($.ch));E(this,B,new Uint16Array($.pl));E(this,G,new Uint8Array($.pl));E(this,we,new Int16Array($.ch));E(this,oe,new Uint8Array($.ch));E(this,Ce,0);E(this,S,new Uint8Array($.ch*$.rpn));E(this,Fe,new Int8Array($.ch*qt.length));E(this,et,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ce,new Uint8Array($.ch));E(this,Ee,new Uint8Array(128));E(this,ee,new Uint8Array($.cmt*8));E(this,Ve,new Uint8Array(1024));E(this,me,new Uint8Array($.cmt*64));E(this,Q,new Uint8Array($.efx*3));E(this,ve,0);E(this,te,0);E(this,X,100);E(this,pe,0);E(this,Xe,500);E(this,ze,0);E(this,le,"");E(this,ke,0);E(this,Ke,0);E(this,re,!0);E(this,I,!1);E(this,tt,void 0);E(this,$t,new Uint8Array(2));E(this,T,[]);E(this,be,new Uint8Array($.ch));E(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,_,[]);E(this,Te,void 0);E(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,J)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,oe)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});E(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,P)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,J)[n]=1,t(this,N).ano(n);return}case 127:{t(this,J)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Er.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(Y()&&console.debug(`${$e[t(this,P)]}, CH${n+1}: ${e.data[1]}`),t(this,P)==0)e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,P)==M.gs)e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,P)==M.gm)e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,P)==M.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let c=0;for(let r=0;r<16;r++){let a=t(this,p)[$.cc*r];(a==56||a==62)&&c++}c>14&&this.switchMode("ag10",!0)}}switch(t(this,P)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,P))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,P)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=mr.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,P)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,P)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,D)[n]=e.data,t(this,ce)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});E(this,ot,{64:(e,n,h)=>{t(this,Pe).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,he).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,he).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,Z).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,De).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});E(this,Re,void 0);E(this,Oe,void 0);E(this,Z,void 0);E(this,he,void 0);E(this,ge,void 0);E(this,Pe,void 0);E(this,De,void 0);E(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new se),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -152,5 +152,5 @@ ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}s>99&&(i=90 ${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ie(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ie(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,D)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,D)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,he).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,Ee)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,Ee)[i-1<<4];if(b<3)if(t(e,ce)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,ce)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,ee)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,Ee)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,Ee)[d-1<<4];if(y<3)if(t(e,ce)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,ee)[(d-1)*$.cmt+b]=s),b<10&&(t(e,ce)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let m=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME 000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,me)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,le,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,D)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,D)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,J)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,ne,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,m=0,x=y0;)t(e,W,de)[k*32+y*7+(x-m)]=v&1,v=v>>1,m++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ie(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ie(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,D)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=88,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%126;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:break;case y==12:break;case y==13:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,te,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,Z).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,Z).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=+([32,40].indexOf(d)>-1)<<1},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,J)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,te))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,te),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,te)}return e}getChType(){return t(this,O)}setChType(e,n,h=t(this,P)){n&=15,t(this,O)[e]=n,n>0&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,te);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,me).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,te,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,Z).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,Z).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0)},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,J)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,te))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,te),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,te)}return e}getChType(){return t(this,O)}setChType(e,n,h=t(this,P),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,te);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,me).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG 0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,D)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,P)]);if(t(this,ce)[e])switch(t(this,P)){case M.mt32:n.ending="~",n.name="",t(this,ee).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,le," ".repeat(h)),e.forEach(o=>{w(r,le,t(r,le)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,le,t(r,le).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,P,0),w(this,ve,0),w(this,te,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,D).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,oe).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,T,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,le,""),w(this,ne,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,O).fill(this.CH_MELODIC),t(this,O)[9]=this.CH_DRUM1,t(this,O)[25]=this.CH_DRUM3,t(this,O)[41]=this.CH_DRUMS,t(this,O)[57]=this.CH_DRUMS,t(this,O)[73]=this.CH_DRUM5,t(this,O)[89]=this.CH_DRUM7,t(this,O)[105]=this.CH_DRUMS,t(this,O)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,me).fill(0),t(this,Ee).fill(0),t(this,ee).fill(0),t(this,ce).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,P)==0||n){let c=t(this,P);w(this,P,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,te,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,O)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,D)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,oe).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,T).length>100&&t(this,T).splice(100,t(this,T).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},P=new WeakMap,j=new WeakMap,ne=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,O=new WeakMap,p=new WeakMap,ue=new WeakMap,D=new WeakMap,L=new WeakMap,J=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,oe=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,ce=new WeakMap,Ee=new WeakMap,ee=new WeakMap,Ve=new WeakMap,me=new WeakMap,Q=new WeakMap,ve=new WeakMap,te=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,le=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,T=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,Z=new WeakMap,he=new WeakMap,ge=new WeakMap,Pe=new WeakMap,De=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);R();R();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){E(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),mt=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);E(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new mt(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new mt(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let m={type:y.type,data:y.data,track:b,part:0};y.type>14?m.meta=y.metaType:m.part=y.channel,e.push(new rr(a/c/h*60+o,m))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");E(this,qe,void 0);E(this,Ue,"");E(this,Le,[]);E(this,Be,new Uint8ClampedArray(128));E(this,st,new Uint8ClampedArray(128));E(this,xe,.5);E(this,je,120);E(this,F,4);E(this,Ne,4);E(this,ye,0);E(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((m,x)=>{t(this,st)[x]=m}),r.device.newStrength(),n.forEach(function(m){let x=m.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),m.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(m,x,A){A[x]=Math.max(t(r,st)[x],m);let V=A[x]-t(r,Be)[x],ae=g.length*x;if(V>=0){let lt=4*.25**(f[ae+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[ae+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(m,x){m&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; diff --git a/dist/xp_state.mjs b/dist/xp_state.mjs index 3f85d320..db26d572 100644 --- a/dist/xp_state.mjs +++ b/dist/xp_state.mjs @@ -1,5 +1,5 @@ -var Rt=Object.defineProperty;var Ot=(u,e,n)=>e in u?Rt(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var C=(u,e,n)=>(Ot(u,typeof e!="symbol"?e+"":e,n),n),st=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(st(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,c)=>(st(u,e,"write to private field"),c?c.call(u,n):e.set(u,n),n);(function(){var u=function(o,i,a){var l,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:a==null?void 0:a.ports}),Object.defineProperty(h,"source",{value:a==null?void 0:a.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),a&&o=="message"&&(h.data=i,a.source&&Object.defineProperty(h,"source",{value:a.source}),(l=a.ports)!=null&&l.length&&Object.defineProperty(h,"ports",{value:a.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],c={},d=function(o){var i,a=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=c[o])!=null&&i.constructor||(c[o]=[]),c[o].push(this);var l=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return l}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(a);B>-1?(e.postMessage({t:"d",c:o,i:l}),n.splice(B,1),(m=c[o])!=null&&m.constructor&&(B=c[o].indexOf(a),B>-1&&c[o].splice(B,1)),c[o].length||delete c[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:l,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:l}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();a.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=l&&a.dispatchEvent(u("message",m.d,{source:a})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(l," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:a}),Object.defineProperty(m,"currentTarget",{value:a}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var a=i.data,l=!1;switch(a.t){case"k":{l=!1,e.postMessage({t:"k"});break}case"m":{var h=c[a.c];if(h!=null&&h.length)for(var f=0;f{switch(c.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),c.addEventListener("error",r=>{s(c.error||r.data||new Error("Blob read error"))}),c.addEventListener("load",()=>{d(c.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{c.readAsArrayBuffer(e);break}case"string":case"text":{c.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,c=16,d=this,s=[];for(;n-1;){let r=d.lastIndexOf(u);s.unshift(d.slice(r+u.length)),d=d.slice(0,r),r==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length0){let c=this.pool.length,d=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(s==c)s-=d;else{let i=rt(e,this.pool[s]);switch(i){case 0:{r=0;break}case 1:{s+d<=c&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,r--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(a,l,h){o&&a!=e[l]&&(o=!1)}),!o&&rt(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let c=this.point(e);c>-1?e.subarray?this.pool[c].data(e.subarray(this.pool[c].length),...n):this.pool[c].data(e.slice(this.pool[c].length),...n):this.default(e,...n)}};var _,at,it=(at=class{constructor(){E(this,_,{})}addEventListener(u,e){t(this,_)[u]||(t(this,_)[u]=[]),t(this,_)[u].unshift(e)}removeEventListener(u,e){if(t(this,_)[u]){let n=t(this,_)[u].indexOf(e);n>-1&&t(this,_)[u].splice(n,1),t(this,_)[u].length<1&&delete t(this,_)[u]}}dispatchEvent(u,e){var d;let n=new Event(u),c=this;n.data=e,((d=t(this,_)[u])==null?void 0:d.length)>0&&t(this,_)[u].forEach(function(s){try{s==null||s.call(c,n)}catch(r){console.error(r)}}),this[`on${u}`]&&this[`on${u}`](n)}},_=new WeakMap,at);var Dt=["MSB","PRG","LSB"],Qe=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...u){E(this,F,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,c){let d=[u,e,n],s,r=Array.from(arguments);switch(c){case"xg":{u==32?r[2]+=4:u==33||u==35||u==36?r[2]+=5:u==79?r[0]=95:u==80?r[0]=96:u==81?r[0]=97:u==82?r[0]=98:u==83?r[0]=99:u==84&&(r[0]=100);break}case"gs":{u==0&&n<5?r[2]=0:u>125&&n<5&&n!=2&&(r[2]=u,r[0]=0);break}case"sg":{u==8&&n==0&&(r[2]=5);break}case"s90es":{n<8?r[2]+=17:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{n<8?r[2]+=28:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let o=" ",i="M",a=!1,l=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||c=="gs"&&r[2]<5?i="GM-a":(i="y",a=!0);break}case 8:{c=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,a=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let y=r[2];i=y<10?"kP:":"kC:",i+=y%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),a=!0;break}case 97:{i="VL:",a=!0,l=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(l=63),a=!0;break}case 100:{i="AN",r[2]>63&&(l=63),a=!0;break}case 121:{i=`GM-${r[2]?"":"a"}`,a=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(a?n:u)-l}`.padStart(4-i.length,"0")),c=="xg"&&u==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[r[0],r[1],r[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):(r[2]--,o="^"):u==48?(r[0]=0,r[2]=0,o="!"):u==62?(r[1]--,o=" ",r[1]<1&&!(s!=null&&s.length)&&(r[0]=0,o="!")):u<63?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):r[2]--:u==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(s=`GM2Vox0${n}`,o="#"):u==122?(r[1]==32?r[1]==0:r[1]%=7,s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s?o=" ":(s="",o="*")):r[1]==0?(s=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):r[0]==0?(r[2]=0,o="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,o="!"):(r[0]=0,o="?"));let f=[r[0],r[1],r[2]];(c=="gs"||c=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(r[0]){case 0:{r[2]==0?g="GM":r[2]==5||r[2]==7?g="KG":r[2]<120?g="XG":r[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{r[2]<17?g="KR":r[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][r[2]];break}case 96:{g=r[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=r[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=r[2]==127?"MT":e==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&c=="xg"?g="XG":g="GS")}return{name:s||`${Qe(u||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(u,e,n){let c=this,d=[],s=0,r=0;u.split(` -`).forEach(function(o,i){let a=o.split(" "),l=[];i==0?a.forEach(function(h,f){d[Dt.indexOf(h)]=f}):a.forEach(async function(h,f){var g;f>2?(t(c,F)[l[d[1]]]=t(c,F)[l[d[1]]]||[],(!((g=t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]])!=null&&g.length)||e)&&(t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]]=a[3],s++),r++):l.push(parseInt(a[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${r} total, ${s} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],c=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let r=c[0];r<=c[1];r++){let o=s+r;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let u=0;u<128;u++)t(this,F).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,c){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,lt=(ot=class{constructor(){E(this,Oe,{});C(this,"context")}set(u,e){t(this,Oe)[u]=e}has(u){return!!t(this,Oe)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Oe)[u].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(u,e){let n=!0;return e.forEach((c,d)=>{n=n&&u[d]==c}),n},ct=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new lt;Ve.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",c=[0,0,0,0],d=32,s=0,r=0,o=!0,i=[],a=0;for(;o;){let l=e.subarray(s);([()=>{Le.decode(l.subarray(0,4))=="YSFC"?(s+=80,r=1):s++},()=>{if(Pt(l.subarray(0,4),c))i.forEach((h,f,g)=>{let y=ct(e.subarray(h.start+4,h.start+8));h.length=y}),r=2;else{let h=Le.decode(l.subarray(0,4)),f=ct(l.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[a],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;ye in u?Rt(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var M=(u,e,n)=>(Ot(u,typeof e!="symbol"?e+"":e,n),n),st=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(st(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,c)=>(st(u,e,"write to private field"),c?c.call(u,n):e.set(u,n),n);(function(){var u=function(o,i,a){var l,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:a==null?void 0:a.ports}),Object.defineProperty(h,"source",{value:a==null?void 0:a.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),a&&o=="message"&&(h.data=i,a.source&&Object.defineProperty(h,"source",{value:a.source}),(l=a.ports)!=null&&l.length&&Object.defineProperty(h,"ports",{value:a.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],c={},d=function(o){var i,a=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=c[o])!=null&&i.constructor||(c[o]=[]),c[o].push(this);var l=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return l}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(a);B>-1?(e.postMessage({t:"d",c:o,i:l}),n.splice(B,1),(m=c[o])!=null&&m.constructor&&(B=c[o].indexOf(a),B>-1&&c[o].splice(B,1)),c[o].length||delete c[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:l,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:l}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();a.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=l&&a.dispatchEvent(u("message",m.d,{source:a})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(l," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:a}),Object.defineProperty(m,"currentTarget",{value:a}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var a=i.data,l=!1;switch(a.t){case"k":{l=!1,e.postMessage({t:"k"});break}case"m":{var h=c[a.c];if(h!=null&&h.length)for(var f=0;f{switch(c.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),c.addEventListener("error",r=>{s(c.error||r.data||new Error("Blob read error"))}),c.addEventListener("load",()=>{d(c.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{c.readAsArrayBuffer(e);break}case"string":case"text":{c.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,c=16,d=this,s=[];for(;n-1;){let r=d.lastIndexOf(u);s.unshift(d.slice(r+u.length)),d=d.slice(0,r),r==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length0){let c=this.pool.length,d=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(s==c)s-=d;else{let i=rt(e,this.pool[s]);switch(i){case 0:{r=0;break}case 1:{s+d<=c&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,r--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(a,l,h){o&&a!=e[l]&&(o=!1)}),!o&&rt(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let c=this.point(e);c>-1?e.subarray?this.pool[c].data(e.subarray(this.pool[c].length),...n):this.pool[c].data(e.slice(this.pool[c].length),...n):this.default(e,...n)}};var I,at,it=(at=class{constructor(){E(this,I,{})}addEventListener(u,e){t(this,I)[u]||(t(this,I)[u]=[]),t(this,I)[u].unshift(e)}removeEventListener(u,e){if(t(this,I)[u]){let n=t(this,I)[u].indexOf(e);n>-1&&t(this,I)[u].splice(n,1),t(this,I)[u].length<1&&delete t(this,I)[u]}}dispatchEvent(u,e){var d;let n=new Event(u),c=this;n.data=e,((d=t(this,I)[u])==null?void 0:d.length)>0&&t(this,I)[u].forEach(function(s){try{s==null||s.call(c,n)}catch(r){console.error(r)}}),this[`on${u}`]&&this[`on${u}`](n)}},I=new WeakMap,at);var Dt=["MSB","PRG","LSB"],Qe=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...u){E(this,F,void 0);M(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,c){let d=[u,e,n],s,r=Array.from(arguments);switch(c){case"xg":{u==32?r[2]+=4:u==33||u==35||u==36?r[2]+=5:u==79?r[0]=95:u==80?r[0]=96:u==81?r[0]=97:u==82?r[0]=98:u==83?r[0]=99:u==84&&(r[0]=100);break}case"gs":{u==0&&n<5?r[2]=0:u>125&&n<5&&n!=2&&(r[2]=u,r[0]=0);break}case"sg":{u==8&&n==0&&(r[2]=5);break}case"s90es":{n<8?r[2]+=17:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{n<8?r[2]+=28:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let o=" ",i="M",a=!1,l=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||c=="gs"&&r[2]<5?i="GM-a":(i="y",a=!0);break}case 8:{c=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,a=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let y=r[2];i=y<10?"kP:":"kC:",i+=y%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),a=!0;break}case 97:{i="VL:",a=!0,l=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(l=63),a=!0;break}case 100:{i="AN",r[2]>63&&(l=63),a=!0;break}case 121:{i=`GM-${r[2]?"":"a"}`,a=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(a?n:u)-l}`.padStart(4-i.length,"0")),c=="xg"&&u==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[r[0],r[1],r[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):(r[2]--,o="^"):u==48?(r[0]=0,r[2]=0,o="!"):u==62?(r[1]--,o=" ",r[1]<1&&!(s!=null&&s.length)&&(r[0]=0,o="!")):u<63?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):r[2]--:u==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(s=`GM2Vox0${n}`,o="#"):u==122?(r[1]==32?r[1]==0:r[1]%=7,s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s?o=" ":(s="",o="*")):r[1]==0?(s=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):r[0]==0?(r[2]=0,o="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,o="!"):(r[0]=0,o="?"));let f=[r[0],r[1],r[2]];(c=="gs"||c=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(r[0]){case 0:{r[2]==0?g="GM":r[2]==5||r[2]==7?g="KG":r[2]<120?g="XG":r[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{r[2]<17?g="KR":r[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][r[2]];break}case 96:{g=r[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=r[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=r[2]==127?"MT":e==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&c=="xg"?g="XG":g="GS")}return{name:s||`${Qe(u||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(u,e,n){let c=this,d=[],s=0,r=0;u.split(` +`).forEach(function(o,i){let a=o.split(" "),l=[];i==0?a.forEach(function(h,f){d[Dt.indexOf(h)]=f}):a.forEach(async function(h,f){var g;f>2?(t(c,F)[l[d[1]]]=t(c,F)[l[d[1]]]||[],(!((g=t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]])!=null&&g.length)||e)&&(t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]]=a[3],s++),r++):l.push(parseInt(a[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${r} total, ${s} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],c=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let r=c[0];r<=c[1];r++){let o=s+r;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let u=0;u<128;u++)t(this,F).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,c){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,lt=(ot=class{constructor(){E(this,Oe,{});M(this,"context")}set(u,e){t(this,Oe)[u]=e}has(u){return!!t(this,Oe)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Oe)[u].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(u,e){let n=!0;return e.forEach((c,d)=>{n=n&&u[d]==c}),n},ct=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new lt;Ve.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",c=[0,0,0,0],d=32,s=0,r=0,o=!0,i=[],a=0;for(;o;){let l=e.subarray(s);([()=>{Le.decode(l.subarray(0,4))=="YSFC"?(s+=80,r=1):s++},()=>{if(Pt(l.subarray(0,4),c))i.forEach((h,f,g)=>{let y=ct(e.subarray(h.start+4,h.start+8));h.length=y}),r=2;else{let h=Le.decode(l.subarray(0,4)),f=ct(l.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[a],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;y=i.length&&(r=3,o=!1)}][r]||(()=>{o=!1}))()}return n});var Be=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ge=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],At=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],De=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ht=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ft=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},dt=function(u){return u>105?At[u-106]:u>100?u*1.1-100:u/10},ut=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),We={};`hi*, @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(u=>{let e=u.split(",");We[e[0]]=e[1]});var bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(c=>{for(;e.indexOf(c)>-1;)e=e.replace(c,c[0])});for(let c in We)e=e.replaceAll(c,We[c]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},Je=function(u){return Ut[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},yt=function(u,e,n){let c=(u[0]-32<<16)+(u[1]<<8)+e,d=Nt[c]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(u=64){return Math.round(2e3*Math.log10(u/64))/100};var wt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(u,e){let n=0,c=0;for(let d=0;d>s&1)<<7,o=u[d];o+=r,d%8!=0?(e(o,n,u),n++):c=u[d]}},Ie=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],_e=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((u,e)=>{x[u]=e});var p={length:_e.length};_e.forEach((u,e)=>{p[u]=e});var Ct={length:qe.length};qe.forEach((u,e)=>{Ct[u]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(u){let e=[],n=0;return u==null||u.forEach(function(c,d){c==247?e.push(u.subarray(n,d)):c==240&&(n=d+1)}),e.length||e.push(u.subarray(0)),q()&&console.debug(e),e},xt=function(u,e="",n="",c=2){return u?`${e}${u.toString().padStart(c,"0")}${n}`:""},$={ch:128,cc:_e.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,b,le,O,A,j,U,L,pe,se,me,v,Pe,Fe,re,ge,W,Ae,$e,V,ye,Y,I,ce,Ue,Ne,ae,we,He,J,D,Xe,tt,M,he,Ee,G,ve,N,Ke,ze,xe,Me,Q,ie,fe,Ce,Te,Re,Mt,ms=(Mt=class extends it{constructor(){super();E(this,z);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,b,new Uint8Array($.ch*$.cc));E(this,le,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,j,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,re,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,W,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Y,0);E(this,I,100);E(this,ce,0);E(this,Ue,500);E(this,Ne,0);E(this,ae,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,M,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));C(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new je("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let c=e*128+n,d=t(this,U).lastIndexOf(c);d>-1&&(t(this,b)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[c],state:this.NOTE_HELD})):t(this,b)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[c],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[c]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let d=e*128+n,s=0;for(t(this,j)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=c,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,c)=>{if(n==this.NOTE_HELD){let d=t(this,U)[c],s=d>>7;e==s&&(t(this,L)[c]=this.NOTE_IDLE,t(this,U)[c]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,c)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[c]=d;let s=t(this,U)[c];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[c],s=d>>7;e==s&&(t(this,L)[c]=this.NOTE_IDLE,t(this,U)[c]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,c,d)=>{let s=n>>7,r=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,r)})}});E(this,Ke,{8:function(e){let n=e.channel,c=e.data[0];t(this,N).nOff(n,c)},9:function(e){let n=e.channel;t(this,P)[n]=1;let c=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,c,d):t(this,N).nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];t(this,U).indexOf(c)>-1&&(t(this,A)[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let c=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,b)[d+p[1]]=0,t(this,b)[d+p[5]]=0,t(this,b)[d+p[64]]=0,t(this,b)[d+p[65]]=0,t(this,b)[d+p[66]]=0,t(this,b)[d+p[67]]=0,t(this,b)[d+p[11]]=127,t(this,b)[d+p[101]]=127,t(this,b)[d+p[100]]=127,t(this,b)[d+p[99]]=127,t(this,b)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,j)[n]=1,t(this,N).ano(n);return}case 127:{t(this,j)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0)e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,b)[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,R)==x.gs)e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,b)[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,R)==x.gm)e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,R)==x.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let d=0;for(let s=0;s<16;s++){let r=t(this,b)[$.cc*s];(r==56||r==62)&&d++}d>14&&this.switchMode("ag10",!0)}}switch(t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,b)[c+p[99]],s=t(this,b)[c+p[98]];if(d==1){let r=Bt.indexOf(s);if(r>-1)t(this,b)[c+p[71+r]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+r}.`),this.dispatchEvent("cc",{part:n,cc:71+r,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Ct[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,b)[c+p[100]]];t(this,b)[c+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,b)[c+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{t(this,T)[n]=+([32,40].indexOf(e.data[1])>-1)<<1;break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,b)[c+101]==0&&et[t(this,b)[c+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,b)[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,b)[c+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,re)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;t(this,U).forEach(function(d){let s=d>>7;c==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:c,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let c=n[0],d=n[1];(t(this,ze)[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(c,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,ce,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,c)=>{t(this,Ce).run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)t(this,ie).run(n,c,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,c)=>{t(this,fe).run(n,c,e)},67:(e,n,c)=>{t(this,Q).run(n,c,e)},68:(e,n,c)=>{t(this,Re).run(n,c,e)},71:(e,n,c)=>{t(this,Te).run(n,c,e)},126:(e,n,c)=>{t(this,xe).run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),t(this,Me).run(n,c,e)}});E(this,xe,void 0);E(this,Me,void 0);E(this,Q,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Ce,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(u=>{let e=u.split(",");We[e[0]]=e[1]});var bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(c=>{for(;e.indexOf(c)>-1;)e=e.replace(c,c[0])});for(let c in We)e=e.replaceAll(c,We[c]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},Je=function(u){return Ut[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},yt=function(u,e,n){let c=(u[0]-32<<16)+(u[1]<<8)+e,d=Nt[c]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(u=64){return Math.round(2e3*Math.log10(u/64))/100};var wt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(u,e){let n=0,c=0;for(let d=0;d>s&1)<<7,o=u[d];o+=r,d%8!=0?(e(o,n,u),n++):c=u[d]}},_e=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Ie=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((u,e)=>{x[u]=e});var p={length:Ie.length};Ie.forEach((u,e)=>{p[u]=e});var Mt={length:qe.length};qe.forEach((u,e)=>{Mt[u]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(u){let e=[],n=0;return u==null||u.forEach(function(c,d){c==247?e.push(u.subarray(n,d)):c==240&&(n=d+1)}),e.length||e.push(u.subarray(0)),q()&&console.debug(e),e},xt=function(u,e="",n="",c=2){return u?`${e}${u.toString().padStart(c,"0")}${n}`:""},$={ch:128,cc:Ie.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,b,le,O,A,j,U,L,pe,se,me,v,Pe,Fe,re,ge,W,Ae,$e,V,ye,Y,_,ce,Ue,Ne,ae,we,He,J,D,Xe,tt,C,he,Ee,G,ve,N,Ke,ze,xe,Ce,Q,ie,fe,Me,Te,Re,Ct,ms=(Ct=class extends it{constructor(){super();E(this,z);M(this,"NOTE_IDLE",0);M(this,"NOTE_ATTACK",1);M(this,"NOTE_DECAY",2);M(this,"NOTE_SUSTAIN",3);M(this,"NOTE_HELD",4);M(this,"NOTE_RELEASE",5);M(this,"NOTE_SOSTENUTO_ATTACK",8);M(this,"NOTE_SOSTENUTO_DECAY",9);M(this,"NOTE_SOSTENUTO_SUSTAIN",10);M(this,"NOTE_SOSTENUTO_HELD",11);M(this,"CH_MELODIC",0);M(this,"CH_DRUMS",1);M(this,"CH_DRUM1",2);M(this,"CH_DRUM2",3);M(this,"CH_DRUM3",4);M(this,"CH_DRUM4",5);M(this,"CH_DRUM5",6);M(this,"CH_DRUM6",7);M(this,"CH_DRUM7",8);M(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,b,new Uint8Array($.ch*$.cc));E(this,le,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,j,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,re,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,W,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Y,0);E(this,_,100);E(this,ce,0);E(this,Ue,500);E(this,Ne,0);E(this,ae,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,C,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));M(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));M(this,"userBank",new je("gm"));M(this,"initOnReset",!1);M(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let c=e*128+n,d=t(this,U).lastIndexOf(c);d>-1&&(t(this,b)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[c],state:this.NOTE_HELD})):t(this,b)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[c],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[c]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let d=e*128+n,s=0;for(t(this,j)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=c,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,c)=>{if(n==this.NOTE_HELD){let d=t(this,U)[c],s=d>>7;e==s&&(t(this,L)[c]=this.NOTE_IDLE,t(this,U)[c]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,c)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[c]=d;let s=t(this,U)[c];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[c],s=d>>7;e==s&&(t(this,L)[c]=this.NOTE_IDLE,t(this,U)[c]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,c,d)=>{let s=n>>7,r=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,r)})}});E(this,Ke,{8:function(e){let n=e.channel,c=e.data[0];t(this,N).nOff(n,c)},9:function(e){let n=e.channel;t(this,P)[n]=1;let c=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,c,d):t(this,N).nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];t(this,U).indexOf(c)>-1&&(t(this,A)[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let c=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,b)[d+p[1]]=0,t(this,b)[d+p[5]]=0,t(this,b)[d+p[64]]=0,t(this,b)[d+p[65]]=0,t(this,b)[d+p[66]]=0,t(this,b)[d+p[67]]=0,t(this,b)[d+p[11]]=127,t(this,b)[d+p[101]]=127,t(this,b)[d+p[100]]=127,t(this,b)[d+p[99]]=127,t(this,b)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,j)[n]=1,t(this,N).ano(n);return}case 127:{t(this,j)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0)e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,b)[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,R)==x.gs)e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,b)[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,R)==x.gm)e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,R)==x.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let d=0;for(let s=0;s<16;s++){let r=t(this,b)[$.cc*s];(r==56||r==62)&&d++}d>14&&this.switchMode("ag10",!0)}}switch(t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,b)[c+p[99]],s=t(this,b)[c+p[98]];if(d==1){let r=Bt.indexOf(s);if(r>-1)t(this,b)[c+p[71+r]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+r}.`),this.dispatchEvent("cc",{part:n,cc:71+r,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Mt[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,b)[c+p[100]]];t(this,b)[c+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,b)[c+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,b)[c+101]==0&&et[t(this,b)[c+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,b)[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,b)[c+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,re)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;t(this,U).forEach(function(d){let s=d>>7;c==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:c,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let c=n[0],d=n[1];(t(this,ze)[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(c,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,ce,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,c)=>{t(this,Me).run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)t(this,ie).run(n,c,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,c)=>{t(this,fe).run(n,c,e)},67:(e,n,c)=>{t(this,Q).run(n,c,e)},68:(e,n,c)=>{t(this,Re).run(n,c,e)},71:(e,n,c)=>{t(this,Te).run(n,c,e)},126:(e,n,c)=>{t(this,xe).run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),t(this,Ce).run(n,c,e)}});E(this,xe,void 0);E(this,Ce,void 0);E(this,Q,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Me,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,10 +147,10 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,M).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,M).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,M).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,M).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,M).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let r=s.slice(2).split(":");switch(r[0]){case"hd":{r.slice(1).forEach((o,i)=>{o.length&&t(this,M).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{r.slice(1).forEach((o,i)=>{o.length&&t(this,M).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,M).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,M).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,M).unshift(s.slice(1)):t(this,M)[0]+=s:(t(this,M)[0]=s,t(this,M).unshift(""))}},t(this,G)[2]=function(s){t(this,M).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,r){r<1&&t(this,ce)<1&&t(this,M).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,r){t(this,M).unshift(`${xt(t(this,ce),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,M).unshift(""):t(this,M)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,M).unshift(`${xt(t(this,ce),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,M).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,ce,s[0]+1)},t(this,G)[33]=function(s,r){console.debug(`Track ${r} requests to get assigned to output ${s}.`),t(e,Ee)[r]=s+1},t(this,G)[81]=function(s,r){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,r){t(e,ve).run(s,r)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,r){t(e,Ee)[r]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Me,new Z("universal realtime")),w(this,Q,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Ce,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Me).default=n,t(this,Q).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Ce).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Me).add([4,1],s=>{w(e,I,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,Q).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let r=[0,0,0,0],o=(i,a)=>{r[a]=i};if(s.subarray(1).forEach((i,a)=>{let l=a+s[0];([o,o,o,o,h=>{w(this,I,h*129/16383*100)},h=>{},h=>{}][l]||(()=>{}))(i,a)}),s[0]<4){let i=0;r.forEach(a=>{i=i<<4,i+=a}),i-=1024}}}}).add([76,2,1],s=>{let r="XG ";s[0]<32?(r+="reverb ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(0,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(0,!0,a),console.debug(`${r}sub type: ${a+1}`)},a=>{console.debug(`${r}time: ${ft(a)}s`)},a=>{console.debug(`${r}diffusion: ${a}`)},a=>{console.debug(`${r}initial delay: ${a}`)},a=>{console.debug(`${r}HPF cutoff: ${De[a]}Hz`)},a=>{console.debug(`${r}LPF cutoff: ${De[a]}Hz`)},a=>{console.debug(`${r}width: ${a}`)},a=>{console.debug(`${r}height: ${a}`)},a=>{console.debug(`${r}depth: ${a}`)},a=>{console.debug(`${r}wall type: ${a}`)},a=>{console.debug(`${r}dry/wet: ${a}`)},a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},!1,!1,a=>{console.debug(`${r}delay: ${a}`)},a=>{console.debug(`${r}density: ${a}`)},a=>{console.debug(`${r}balance: ${a}`)},a=>{},a=>{console.debug(`${r}feedback: ${a}`)},a=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(r+="chorus ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(1,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(1,!0,a),console.debug(`${r}sub type: ${a+1}`)},a=>{console.debug(`${r}LFO: ${ht[a]}Hz`)},a=>{},a=>{console.debug(`${r}feedback: ${a}`)},a=>{console.debug(`${r}delay offset: ${dt(a)}ms`)},a=>{},a=>{console.debug(`${r}low: ${De[a]}Hz`)},a=>{console.debug(`${r}low: ${a-64}dB`)},a=>{console.debug(`${r}high: ${De[a]}Hz`)},a=>{console.debug(`${r}high: ${a-64}dB`)},a=>{console.debug(`${r}dry/wet: ${a}`)},a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},a=>{console.debug(`${r}to reverb: ${X(a)}dB`)},!1,a=>{},a=>{},a=>{},a=>{console.debug(`${r}LFO phase diff: ${(a-64)*3}deg`)},a=>{console.debug(`${r}input mode: ${a?"stereo":"mono"}`)},a=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(r+="variation ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(2,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(2,!0,a),console.debug(`${r}sub type: ${a+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(r+="variation ",s.subarray(1).forEach((o,i)=>{[a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},a=>{console.debug(`${r}to reverb: ${X(a)}dB`)},a=>{console.debug(`${r}to chorus: ${X(a)}dB`)},a=>{console.debug(`${r}connection: ${a?"system":"insertion"}`)},a=>{console.debug(`${r}channel: CH${a+1}`)},a=>{console.debug(`${r}mod wheel: ${a-64}`)},a=>{console.debug(`${r}bend wheel: ${a-64}`)},a=>{console.debug(`${r}channel after touch: ${a-64}`)},a=>{console.debug(`${r}AC1: ${a-64}`)},a=>{console.debug(`${r}AC2: ${a-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?r+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((r,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][r]}`);else{let a=i-1>>2,l=i-1&3,h=`XG EQ ${a} ${["gain","freq","Q","shape"][l]}: `;[()=>{console.debug(`${h}${r-64}dB`)},()=>{console.debug(`${h}${r} (raw)`)},()=>{console.debug(`${h}${r/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!r]}`)}][l]()}})}).add([76,3],s=>{let r=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((a,l)=>{([h=>{e.setEffectTypeRaw(3+r,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+r,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+l]||function(){})(a)})}).add([76,6,0],s=>{let r=s[0];r<64?e.setLetterDisplay(s.subarray(1),"XG letter display",r):w(e,we,Date.now())}).add([76,7,0],s=>{let r=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=s[1],a=$.cc*o,l=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,b)[a+p[0]]=f},()=>{t(e,b)[a+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,j)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${l}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,b)[a+p[7]]=f},!1,!1,()=>{t(e,b)[a+p[10]]=f||128},!1,!1,()=>{t(e,b)[a+p[128]]=f},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[91]]=f},()=>{t(e,b)[a+p[94]]=f},()=>{t(e,b)[a+p[76]]=f},()=>{t(e,b)[a+p[77]]=f},()=>{t(e,b)[a+p[78]]=f},()=>{t(e,b)[a+p[74]]=f},()=>{t(e,b)[a+p[71]]=f},()=>{t(e,b)[a+p[73]]=f},()=>{t(e,b)[a+p[75]]=f},()=>{t(e,b)[a+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,b)[a+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${l}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${l}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=s[1],a=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((l,h)=>{let f=h+i;switch(f){case 1:{console.info(`${a}breath mode: ${["system","breath","velocity","touch EG"][l]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${a}${g} control source: ${pt(l)}`),l&&l<96&&e.allocateAce(l)):console.debug(`${a}${g} scale break point: ${l}`):console.debug(`${a}${g} depth: ${l-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,r)=>{let o=s[0];s.subarray(1).forEach((i,a)=>{let l=o+a;l==8?console.debug(`MU1000 set LCD contrast to ${i}.`):l>9&&l<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!i),console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][l-10]()})}).add([73,10,0],(s,r)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let a=e.chRedir(0,r,!0);t(e,J)&&(e.dispatchEvent("channelmin",a),e.dispatchEvent("channelmax",a+63)),console.info(`${i}Show CH1~64`);break}case 3:{let a=e.chRedir(s[1]<<5,r,!0);t(e,J)&&e.dispatchEvent("channelmin",a),t(e,J)&&e.dispatchEvent("channelmax",a+31),console.info(`${i}Show CH${a+1}~CH${a+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let a=e.chRedir(o-16+(t(e,He)<<4),r,!0);e.dispatchEvent("channelactive",a)}}else if(o<36){let a=e.chRedir(o-32<<4,r,!0);t(e,J)&&(e.dispatchEvent("channelmin",a),e.dispatchEvent("channelmax",a+15),w(e,He,o-32)),console.info(`${i}Show CH${a+1}~CH${a+16}`)}}).add([93,3],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=`PLG-100SG CH${o+1} `,a=Date.now();if(s[1]==0){let l="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?l+=ut[f]||f.toString().padStart("0"):h+=f*13}),a>=t(e,Ne)&&t(e,M).unshift("SG Lyric: "),t(e,M)[0]+=`${bt(l)}`,w(e,Ne,a+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${l}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,Q).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,Q).add([89,0],(s,r,o)=>{if(e.eprom){let i=s[0],a=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${a.toString(16).padStart(6,"0")}, ${i} bytes.`);let l=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)l[a+7*g+S]+=(h>>6-S&1)<<7;else l[a+7*g+y]=h})}}).add([89,1],(s,r,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,r,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let a=e.eprom.data;s.subarray(4).forEach((l,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)a[i+7*f+y]+=(l>>6-y&1)<<7;else a[i+7*f+g]=l})}}).add([89,3],(s,r,o)=>{}),t(this,Q).add([39,48],(s,r,o)=>{}).add([43,0,0],(s,r,o)=>{let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{let f=h+s[0];[a,a,a,a,()=>{w(this,I,l*129/16383*100)},()=>l-64,()=>l||128,()=>l,()=>l,()=>{console.debug(`TG300 variation on cc${l}.`)}][f](l,f)}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}).add([43,1,0],(s,r,o)=>{}).add([43,2],(s,r,o)=>{let i=e.chRedir(s[0],r,!0),a=s[1],l=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,b)[l+p[0]]=f},()=>{t(e,b)[l+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+a]||(()=>{}))(f,g+a):g<21||(g<47?([()=>{t(e,j)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,b)[l+p[7]]=f},!1,!1,()=>{t(e,b)[l+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,b)[l+p[128]]=f},()=>{t(e,b)[l+p[93]]=f},()=>{t(e,b)[l+p[91]]=f},()=>{t(e,b)[l+p[94]]=f},()=>{t(e,b)[l+p[76]]=f},()=>{t(e,b)[l+p[77]]=f},()=>{t(e,b)[l+p[74]]=f},()=>{t(e,b)[l+p[71]]=f},()=>{t(e,b)[l+p[73]]=f},()=>{t(e,b)[l+p[75]]=f},()=>{t(e,b)[l+p[72]]=f},()=>{t(e,b)[l+p[78]]=f}][g+a-21]||(()=>{}))(f,g+a):g<95||([()=>{t(e,b)[l+p[65]]=f},()=>{t(e,b)[l+p[5]]=f}][g+a-95]||(()=>{}))(f,g+a))})}).add([43,7,0],(s,r,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,r,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,a){let l=Math.floor(a/16),h=a%16,f=(h*3+l)*7,g=7,y=0;for(f-=h*5,l==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,r,o)=>{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,Y,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,r,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{let f=h+s[0];[a,a,a,a,g=>{w(this,I,g*129/16383*100)},g=>{},g=>{}][f](l,h)}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}}}).add([66,18,64,1],s=>{let r=s[0];if(r<16){let o="".padStart(r," ");s.subarray(1).forEach((i,a)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else r<48||(r<65?s.subarray(1).forEach((o,i)=>{let a=`GS ${r+i>55?"chorus":"reverb"} `;([()=>{console.info(`${a}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${a}predelay: ${o}ms`)},()=>{console.info(`${a}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${a}to reverb: ${X(o)}`)},()=>{console.debug(`${a}to delay: ${X(o)}`)}][r+i-48]||(()=>{}))()}):r<80?console.debug(`Unknown GS patch address: ${r}`):r<91?s.subarray(1).forEach((o,i)=>{let a="GS delay ";([()=>{console.info(`${a}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${a}to reverb: ${X(o)}`)}][r+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${r}`))}).add([66,18,64,2],s=>{let r="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${r}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${r}low gain: ${o-64}dB`)},()=>{console.debug(`${r}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${r}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let r="GS EFX ",o=function(i,a){let l=yt(t(e,V).subarray(10,12),a,i);l&&console.debug(`${r}${Je(t(e,V).subarray(10,12))} ${l}`)};s.subarray(1).forEach((i,a)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${r}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${r}to reverb: ${X(i)}dB`)},()=>{console.debug(`${r}to chorus: ${X(i)}dB`)},()=>{console.debug(`${r}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${r}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${r}1 depth: ${i-64}`)},()=>{console.debug(`${r}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${r}2 depth: ${i-64}`)},()=>{console.debug(`${r}to EQ: ${i?"ON":"OFF"}`)}][s[0]+a]||function(l,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+a)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var r;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(r=t(e,oe)[s[0]-1])!=null&&r.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let a=s.subarray(2);for(let l=0;l>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let c=function(s,r,o){let i=s[0],a=$.cc*r,l=$.rpn*r,h=`GS CH${r+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,b)[a+p[0]]=f},()=>{t(e,O)[r]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[r]=y,r!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,j)[r]=+!f},!1,()=>{e.setChType(r,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[l+3]=f},!1,()=>{t(e,b)[a+p[7]]=f},!1,!1,()=>{t(e,b)[a+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[91]]=f},!1,!1,()=>{t(e,v)[l+1]=f},()=>{t(e,v)[l+2]=f},()=>{t(e,b)[a+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,r){let o=s[0],i=`GS CH${r+1} `;o<2?s.subarray(1).forEach((a,l)=>{[()=>{t(e,b)[$.cc*r+p[32]]=a},()=>{}][o+l]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((a,l)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][a]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][a]}`)}][o+l-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,r)=>{c(s,e.chRedir(9,r,!0),r)}).add([66,18,64,17],(s,r)=>{c(s,e.chRedir(0,r,!0),r)}).add([66,18,64,18],(s,r)=>{c(s,e.chRedir(1,r,!0),r)}).add([66,18,64,19],(s,r)=>{c(s,e.chRedir(2,r,!0),r)}).add([66,18,64,20],(s,r)=>{c(s,e.chRedir(3,r,!0),r)}).add([66,18,64,21],(s,r)=>{c(s,e.chRedir(4,r,!0),r)}).add([66,18,64,22],(s,r)=>{c(s,e.chRedir(5,r,!0),r)}).add([66,18,64,23],(s,r)=>{c(s,e.chRedir(6,r,!0),r)}).add([66,18,64,24],(s,r)=>{c(s,e.chRedir(7,r,!0),r)}).add([66,18,64,25],(s,r)=>{c(s,e.chRedir(8,r,!0),r)}).add([66,18,64,26],(s,r)=>{c(s,e.chRedir(10,r,!0),r)}).add([66,18,64,27],(s,r)=>{c(s,e.chRedir(11,r,!0),r)}).add([66,18,64,28],(s,r)=>{c(s,e.chRedir(12,r,!0),r)}).add([66,18,64,29],(s,r)=>{c(s,e.chRedir(13,r,!0),r)}).add([66,18,64,30],(s,r)=>{c(s,e.chRedir(14,r,!0),r)}).add([66,18,64,31],(s,r)=>{c(s,e.chRedir(15,r,!0),r)}).add([66,18,64,64],(s,r)=>{d(s,e.chRedir(9,r,!0))}).add([66,18,64,65],(s,r)=>{d(s,e.chRedir(0,r,!0))}).add([66,18,64,66],(s,r)=>{d(s,e.chRedir(1,r,!0))}).add([66,18,64,67],(s,r)=>{d(s,e.chRedir(2,r,!0))}).add([66,18,64,68],(s,r)=>{d(s,e.chRedir(3,r,!0))}).add([66,18,64,69],(s,r)=>{d(s,e.chRedir(4,r,!0))}).add([66,18,64,70],(s,r)=>{d(s,e.chRedir(5,r,!0))}).add([66,18,64,71],(s,r)=>{d(s,e.chRedir(6,r,!0))}).add([66,18,64,72],(s,r)=>{d(s,e.chRedir(7,r,!0))}).add([66,18,64,73],(s,r)=>{d(s,e.chRedir(8,r,!0))}).add([66,18,64,74],(s,r)=>{d(s,e.chRedir(10,r,!0))}).add([66,18,64,75],(s,r)=>{d(s,e.chRedir(11,r,!0))}).add([66,18,64,76],(s,r)=>{d(s,e.chRedir(12,r,!0))}).add([66,18,64,77],(s,r)=>{d(s,e.chRedir(13,r,!0))}).add([66,18,64,78],(s,r)=>{d(s,e.chRedir(14,r,!0))}).add([66,18,64,79],(s,r)=>{d(s,e.chRedir(15,r,!0))}),t(this,fe).add([54,65],(s,r)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],a=e.chRedir(o&15,r,!0),l=$.cc*a;[()=>{i<1||(i<101?(e.setChType(a,e.CH_MELODIC,x.x5d),t(e,O)[a]=i-1,t(e,b)[l+p[0]]=82):i<229?(e.setChType(a,e.CH_MELODIC,x.x5d),t(e,O)[a]=i-101,t(e,b)[l+p[0]]=56):(e.setChType(a,e.CH_DRUMS,x.x5d),t(e,O)[a]=vt[i-229]||0,t(e,b)[l+p[0]]=62))},()=>{t(e,b)[l+p[7]]=i},()=>{i<31&&(t(e,b)[l+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,b)[l+p[93]]=Ie(i)},()=>{t(e,b)[l+p[91]]=Ie(i)},()=>{t(e,v)[a*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[a*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[a*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,r)=>{e.switchMode("x5d",!0);let o="",i=82,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,C).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,C).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,C).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,C).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,C).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let r=s.slice(2).split(":");switch(r[0]){case"hd":{r.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{r.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,C).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,C).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,C).unshift(s.slice(1)):t(this,C)[0]+=s:(t(this,C)[0]=s,t(this,C).unshift(""))}},t(this,G)[2]=function(s){t(this,C).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,r){r<1&&t(this,ce)<1&&t(this,C).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,r){t(this,C).unshift(`${xt(t(this,ce),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,C).unshift(""):t(this,C)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,C).unshift(`${xt(t(this,ce),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,C).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,ce,s[0]+1)},t(this,G)[33]=function(s,r){console.debug(`Track ${r} requests to get assigned to output ${s}.`),t(e,Ee)[r]=s+1},t(this,G)[81]=function(s,r){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,r){t(e,ve).run(s,r)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,r){t(e,Ee)[r]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Ce,new Z("universal realtime")),w(this,Q,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Me,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Ce).default=n,t(this,Q).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Me).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Ce).add([4,1],s=>{w(e,_,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,Q).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let r=[0,0,0,0],o=(i,a)=>{r[a]=i};if(s.subarray(1).forEach((i,a)=>{let l=a+s[0];([o,o,o,o,h=>{w(this,_,h*129/16383*100)},h=>{},h=>{}][l]||(()=>{}))(i,a)}),s[0]<4){let i=0;r.forEach(a=>{i=i<<4,i+=a}),i-=1024}}}}).add([76,2,1],s=>{let r="XG ";s[0]<32?(r+="reverb ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(0,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(0,!0,a),console.debug(`${r}sub type: ${a+1}`)},a=>{console.debug(`${r}time: ${ft(a)}s`)},a=>{console.debug(`${r}diffusion: ${a}`)},a=>{console.debug(`${r}initial delay: ${a}`)},a=>{console.debug(`${r}HPF cutoff: ${De[a]}Hz`)},a=>{console.debug(`${r}LPF cutoff: ${De[a]}Hz`)},a=>{console.debug(`${r}width: ${a}`)},a=>{console.debug(`${r}height: ${a}`)},a=>{console.debug(`${r}depth: ${a}`)},a=>{console.debug(`${r}wall type: ${a}`)},a=>{console.debug(`${r}dry/wet: ${a}`)},a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},!1,!1,a=>{console.debug(`${r}delay: ${a}`)},a=>{console.debug(`${r}density: ${a}`)},a=>{console.debug(`${r}balance: ${a}`)},a=>{},a=>{console.debug(`${r}feedback: ${a}`)},a=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(r+="chorus ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(1,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(1,!0,a),console.debug(`${r}sub type: ${a+1}`)},a=>{console.debug(`${r}LFO: ${ht[a]}Hz`)},a=>{},a=>{console.debug(`${r}feedback: ${a}`)},a=>{console.debug(`${r}delay offset: ${dt(a)}ms`)},a=>{},a=>{console.debug(`${r}low: ${De[a]}Hz`)},a=>{console.debug(`${r}low: ${a-64}dB`)},a=>{console.debug(`${r}high: ${De[a]}Hz`)},a=>{console.debug(`${r}high: ${a-64}dB`)},a=>{console.debug(`${r}dry/wet: ${a}`)},a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},a=>{console.debug(`${r}to reverb: ${X(a)}dB`)},!1,a=>{},a=>{},a=>{},a=>{console.debug(`${r}LFO phase diff: ${(a-64)*3}deg`)},a=>{console.debug(`${r}input mode: ${a?"stereo":"mono"}`)},a=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(r+="variation ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(2,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(2,!0,a),console.debug(`${r}sub type: ${a+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(r+="variation ",s.subarray(1).forEach((o,i)=>{[a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},a=>{console.debug(`${r}to reverb: ${X(a)}dB`)},a=>{console.debug(`${r}to chorus: ${X(a)}dB`)},a=>{console.debug(`${r}connection: ${a?"system":"insertion"}`)},a=>{console.debug(`${r}channel: CH${a+1}`)},a=>{console.debug(`${r}mod wheel: ${a-64}`)},a=>{console.debug(`${r}bend wheel: ${a-64}`)},a=>{console.debug(`${r}channel after touch: ${a-64}`)},a=>{console.debug(`${r}AC1: ${a-64}`)},a=>{console.debug(`${r}AC2: ${a-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?r+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((r,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][r]}`);else{let a=i-1>>2,l=i-1&3,h=`XG EQ ${a} ${["gain","freq","Q","shape"][l]}: `;[()=>{console.debug(`${h}${r-64}dB`)},()=>{console.debug(`${h}${r} (raw)`)},()=>{console.debug(`${h}${r/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!r]}`)}][l]()}})}).add([76,3],s=>{let r=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((a,l)=>{([h=>{e.setEffectTypeRaw(3+r,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+r,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+l]||function(){})(a)})}).add([76,6,0],s=>{let r=s[0];r<64?e.setLetterDisplay(s.subarray(1),"XG letter display",r):w(e,we,Date.now())}).add([76,7,0],s=>{let r=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=s[1],a=$.cc*o,l=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,b)[a+p[0]]=f},()=>{t(e,b)[a+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,j)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${l}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,b)[a+p[7]]=f},!1,!1,()=>{t(e,b)[a+p[10]]=f||128},!1,!1,()=>{t(e,b)[a+p[128]]=f},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[91]]=f},()=>{t(e,b)[a+p[94]]=f},()=>{t(e,b)[a+p[76]]=f},()=>{t(e,b)[a+p[77]]=f},()=>{t(e,b)[a+p[78]]=f},()=>{t(e,b)[a+p[74]]=f},()=>{t(e,b)[a+p[71]]=f},()=>{t(e,b)[a+p[73]]=f},()=>{t(e,b)[a+p[75]]=f},()=>{t(e,b)[a+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,b)[a+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${l}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${l}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=s[1],a=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((l,h)=>{let f=h+i;switch(f){case 1:{console.info(`${a}breath mode: ${["system","breath","velocity","touch EG"][l]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${a}${g} control source: ${pt(l)}`),l&&l<96&&e.allocateAce(l)):console.debug(`${a}${g} scale break point: ${l}`):console.debug(`${a}${g} depth: ${l-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,r)=>{let o=s[0];s.subarray(1).forEach((i,a)=>{let l=o+a;l==8?console.debug(`MU1000 set LCD contrast to ${i}.`):l>9&&l<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!i),console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][l-10]()})}).add([73,10,0],(s,r)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let a=e.chRedir(0,r,!0);t(e,J)&&(e.dispatchEvent("channelmin",a),e.dispatchEvent("channelmax",a+63)),console.info(`${i}Show CH1~64`);break}case 3:{let a=e.chRedir(s[1]<<5,r,!0);t(e,J)&&e.dispatchEvent("channelmin",a),t(e,J)&&e.dispatchEvent("channelmax",a+31),console.info(`${i}Show CH${a+1}~CH${a+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let a=e.chRedir(o-16+(t(e,He)<<4),r,!0);e.dispatchEvent("channelactive",a)}}else if(o<36){let a=e.chRedir(o-32<<4,r,!0);t(e,J)&&(e.dispatchEvent("channelmin",a),e.dispatchEvent("channelmax",a+15),w(e,He,o-32)),console.info(`${i}Show CH${a+1}~CH${a+16}`)}}).add([93,3],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=`PLG-100SG CH${o+1} `,a=Date.now();if(s[1]==0){let l="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?l+=ut[f]||f.toString().padStart("0"):h+=f*13}),a>=t(e,Ne)&&t(e,C).unshift("SG Lyric: "),t(e,C)[0]+=`${bt(l)}`,w(e,Ne,a+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${l}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,Q).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,Q).add([89,0],(s,r,o)=>{if(e.eprom){let i=s[0],a=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${a.toString(16).padStart(6,"0")}, ${i} bytes.`);let l=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)l[a+7*g+S]+=(h>>6-S&1)<<7;else l[a+7*g+y]=h})}}).add([89,1],(s,r,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,r,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let a=e.eprom.data;s.subarray(4).forEach((l,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)a[i+7*f+y]+=(l>>6-y&1)<<7;else a[i+7*f+g]=l})}}).add([89,3],(s,r,o)=>{}),t(this,Q).add([39,48],(s,r,o)=>{}).add([43,0,0],(s,r,o)=>{let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{let f=h+s[0];[a,a,a,a,()=>{w(this,_,l*129/16383*100)},()=>l-64,()=>l||128,()=>l,()=>l,()=>{console.debug(`TG300 variation on cc${l}.`)}][f](l,f)}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}).add([43,1,0],(s,r,o)=>{}).add([43,2],(s,r,o)=>{let i=e.chRedir(s[0],r,!0),a=s[1],l=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,b)[l+p[0]]=f},()=>{t(e,b)[l+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+a]||(()=>{}))(f,g+a):g<21||(g<47?([()=>{t(e,j)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,b)[l+p[7]]=f},!1,!1,()=>{t(e,b)[l+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,b)[l+p[128]]=f},()=>{t(e,b)[l+p[93]]=f},()=>{t(e,b)[l+p[91]]=f},()=>{t(e,b)[l+p[94]]=f},()=>{t(e,b)[l+p[76]]=f},()=>{t(e,b)[l+p[77]]=f},()=>{t(e,b)[l+p[74]]=f},()=>{t(e,b)[l+p[71]]=f},()=>{t(e,b)[l+p[73]]=f},()=>{t(e,b)[l+p[75]]=f},()=>{t(e,b)[l+p[72]]=f},()=>{t(e,b)[l+p[78]]=f}][g+a-21]||(()=>{}))(f,g+a):g<95||([()=>{t(e,b)[l+p[65]]=f},()=>{t(e,b)[l+p[5]]=f}][g+a-95]||(()=>{}))(f,g+a))})}).add([43,7,0],(s,r,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,r,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,a){let l=Math.floor(a/16),h=a%16,f=(h*3+l)*7,g=7,y=0;for(f-=h*5,l==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,r,o)=>{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,Y,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,r,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{let f=h+s[0];[a,a,a,a,g=>{w(this,_,g*129/16383*100)},g=>{},g=>{}][f](l,h)}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}}}).add([66,18,64,1],s=>{let r=s[0];if(r<16){let o="".padStart(r," ");s.subarray(1).forEach((i,a)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else r<48||(r<65?s.subarray(1).forEach((o,i)=>{let a=`GS ${r+i>55?"chorus":"reverb"} `;([()=>{console.info(`${a}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${a}predelay: ${o}ms`)},()=>{console.info(`${a}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${a}to reverb: ${X(o)}`)},()=>{console.debug(`${a}to delay: ${X(o)}`)}][r+i-48]||(()=>{}))()}):r<80?console.debug(`Unknown GS patch address: ${r}`):r<91?s.subarray(1).forEach((o,i)=>{let a="GS delay ";([()=>{console.info(`${a}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${a}to reverb: ${X(o)}`)}][r+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${r}`))}).add([66,18,64,2],s=>{let r="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${r}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${r}low gain: ${o-64}dB`)},()=>{console.debug(`${r}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${r}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let r="GS EFX ",o=function(i,a){let l=yt(t(e,V).subarray(10,12),a,i);l&&console.debug(`${r}${Je(t(e,V).subarray(10,12))} ${l}`)};s.subarray(1).forEach((i,a)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${r}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${r}to reverb: ${X(i)}dB`)},()=>{console.debug(`${r}to chorus: ${X(i)}dB`)},()=>{console.debug(`${r}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${r}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${r}1 depth: ${i-64}`)},()=>{console.debug(`${r}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${r}2 depth: ${i-64}`)},()=>{console.debug(`${r}to EQ: ${i?"ON":"OFF"}`)}][s[0]+a]||function(l,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+a)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var r;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(r=t(e,oe)[s[0]-1])!=null&&r.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let a=s.subarray(2);for(let l=0;l>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let c=function(s,r,o){let i=s[0],a=$.cc*r,l=$.rpn*r,h=`GS CH${r+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,b)[a+p[0]]=f},()=>{t(e,O)[r]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[r]=y,r!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,j)[r]=+!f},!1,()=>{e.setChType(r,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[l+3]=f},!1,()=>{t(e,b)[a+p[7]]=f},!1,!1,()=>{t(e,b)[a+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[91]]=f},!1,!1,()=>{t(e,v)[l+1]=f},()=>{t(e,v)[l+2]=f},()=>{t(e,b)[a+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,r){let o=s[0],i=`GS CH${r+1} `;o<2?s.subarray(1).forEach((a,l)=>{[()=>{t(e,b)[$.cc*r+p[32]]=a},()=>{}][o+l]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((a,l)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][a]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][a]}`)}][o+l-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,r)=>{c(s,e.chRedir(9,r,!0),r)}).add([66,18,64,17],(s,r)=>{c(s,e.chRedir(0,r,!0),r)}).add([66,18,64,18],(s,r)=>{c(s,e.chRedir(1,r,!0),r)}).add([66,18,64,19],(s,r)=>{c(s,e.chRedir(2,r,!0),r)}).add([66,18,64,20],(s,r)=>{c(s,e.chRedir(3,r,!0),r)}).add([66,18,64,21],(s,r)=>{c(s,e.chRedir(4,r,!0),r)}).add([66,18,64,22],(s,r)=>{c(s,e.chRedir(5,r,!0),r)}).add([66,18,64,23],(s,r)=>{c(s,e.chRedir(6,r,!0),r)}).add([66,18,64,24],(s,r)=>{c(s,e.chRedir(7,r,!0),r)}).add([66,18,64,25],(s,r)=>{c(s,e.chRedir(8,r,!0),r)}).add([66,18,64,26],(s,r)=>{c(s,e.chRedir(10,r,!0),r)}).add([66,18,64,27],(s,r)=>{c(s,e.chRedir(11,r,!0),r)}).add([66,18,64,28],(s,r)=>{c(s,e.chRedir(12,r,!0),r)}).add([66,18,64,29],(s,r)=>{c(s,e.chRedir(13,r,!0),r)}).add([66,18,64,30],(s,r)=>{c(s,e.chRedir(14,r,!0),r)}).add([66,18,64,31],(s,r)=>{c(s,e.chRedir(15,r,!0),r)}).add([66,18,64,64],(s,r)=>{d(s,e.chRedir(9,r,!0))}).add([66,18,64,65],(s,r)=>{d(s,e.chRedir(0,r,!0))}).add([66,18,64,66],(s,r)=>{d(s,e.chRedir(1,r,!0))}).add([66,18,64,67],(s,r)=>{d(s,e.chRedir(2,r,!0))}).add([66,18,64,68],(s,r)=>{d(s,e.chRedir(3,r,!0))}).add([66,18,64,69],(s,r)=>{d(s,e.chRedir(4,r,!0))}).add([66,18,64,70],(s,r)=>{d(s,e.chRedir(5,r,!0))}).add([66,18,64,71],(s,r)=>{d(s,e.chRedir(6,r,!0))}).add([66,18,64,72],(s,r)=>{d(s,e.chRedir(7,r,!0))}).add([66,18,64,73],(s,r)=>{d(s,e.chRedir(8,r,!0))}).add([66,18,64,74],(s,r)=>{d(s,e.chRedir(10,r,!0))}).add([66,18,64,75],(s,r)=>{d(s,e.chRedir(11,r,!0))}).add([66,18,64,76],(s,r)=>{d(s,e.chRedir(12,r,!0))}).add([66,18,64,77],(s,r)=>{d(s,e.chRedir(13,r,!0))}).add([66,18,64,78],(s,r)=>{d(s,e.chRedir(14,r,!0))}).add([66,18,64,79],(s,r)=>{d(s,e.chRedir(15,r,!0))}),t(this,fe).add([54,65],(s,r)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],a=e.chRedir(o&15,r,!0),l=$.cc*a;[()=>{i<1||(i<101?(e.setChType(a,e.CH_MELODIC,x.x5d),t(e,O)[a]=i-1,t(e,b)[l+p[0]]=82):i<229?(e.setChType(a,e.CH_MELODIC,x.x5d),t(e,O)[a]=i-101,t(e,b)[l+p[0]]=56):(e.setChType(a,e.CH_DRUMS,x.x5d),t(e,O)[a]=vt[i-229]||0,t(e,b)[l+p[0]]=62))},()=>{t(e,b)[l+p[7]]=i},()=>{i<31&&(t(e,b)[l+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,b)[l+p[93]]=_e(i)},()=>{t(e,b)[l+p[91]]=_e(i)},()=>{t(e,v)[a*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[a*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[a*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,r)=>{e.switchMode("x5d",!0);let o="",i=82,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` ${i} ${a} ${l} ${o.trim().replace("Init Voice","")}`,a++,o="";break}}a>99&&(i=90,a=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,77,0],(s,r)=>{e.switchMode("x5d",!0);let o="",i=90,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<13600){let y=g%136;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` -${i} ${a} ${l} ${o.trim().replace("Init Combi","")}`,a++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,r)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,r)=>{e.switchMode("x5d",!0),ee(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,r)=>{e.switchMode("x5d",!0),ee(s,function(o,i,a,l){if(i<192){let h=e.chRedir(Math.floor(i/12),r,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,x.x5d),t(e,b)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,x.x5d),t(e,b)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,b)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,b)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,b)[f+p[91]]=Ie(y),t(e,b)[f+p[93]]=Ie(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,r,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,r,!0)}})}),t(this,ie).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0),a=s[1];s.subarray(2).forEach((l,h)=>{let f=h+a;t(e,ge)[f+(i-1)*16]=l,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,re)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=l+40},()=>{t(e,v)[i*$.rpn+1]=l+14},()=>{t(e,v)[i*$.rpn]=l},!1,()=>{t(e,b)[$.cc*i+p[91]]=l?127:0},!1,()=>{t(e,b)[$.cc*i+p[7]]=l},()=>{t(e,b)[$.cc*i+p[10]]=Math.ceil(l*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0)}).add([22,18,2],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0),a=s[1]+(s[0]<<7);a<10&&(t(e,re)[i]=1),s.subarray(2).forEach((l,h)=>{let f=h+a;f<14&&(t(e,W)[(i-1)*$.cmt+f]=l)})}).add([22,18,3],(s,r,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((a,l)=>{let h=l+i;t(e,ge)[h]=a;let f=e.chRedir(1+h>>4,r,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,re)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=a+40},()=>{t(e,v)[f*$.rpn+1]=a+14},()=>{t(e,v)[f*$.rpn]=a},!1,()=>{t(e,b)[$.cc*f+p[91]]=a?127:0},!1,()=>{t(e,b)[$.cc*f+p[7]]=a},()=>{t(e,b)[$.cc*f+p[10]]=Math.ceil(a*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,r,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((a,l)=>{let h=l+i,f=e.chRedir(Math.floor(h/246+1),r,!0),g=h%246;g<14&&(t(e,W)[(f-1)*$.cmt+g]=a),g<10&&(t(e,re)[f]=1)})}).add([22,18,5],(s,r,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((a,l)=>{let h=i+l,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=a,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${a.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,a+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME -000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,r,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((a,l)=>{let h=i+l;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=a)})}).add([22,18,16],(s,r,o)=>{e.switchMode("mt32");let i=s[1],a=!1,l=function(h,f){t(e,H)[f-12]=h,a=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,l,l,l,l,l,l,l,l,l,()=>{w(e,I,h)}][g]||(()=>{}))(h,f)}),a&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let r=s[1],o=" ".repeat(r);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,ae,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,r)=>{let o=e.chRedir(0,r,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,r)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,r)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{[a,a,a,a,()=>{w(e,I,l*129/16383*100)},()=>l-64,()=>l-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}}}).add([66,18,0,1],(s,r)=>{}).add([66,18,0,2],(s,r)=>{}).add([66,18,1],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=o*$.cc,a=s[1],l=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=a+f;g<3?[()=>{t(e,b)[i+p[0]]=h||121},()=>{t(e,b)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,r,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,j)[o]=+!h},()=>{e.setChType(o,h,x.ns5r),console.debug(`${l}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,b)[i+p[7]]=h},()=>{t(e,b)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,b)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,b)[i+p[93]]=h},()=>{t(e,b)[i+p[91]]=h},()=>{t(e,b)[i+p[76]]=h},()=>{t(e,b)[i+p[77]]=h},()=>{t(e,b)[i+p[78]]=h},()=>{t(e,b)[i+p[74]]=h},()=>{t(e,b)[i+p[71]]=h},()=>{t(e,b)[i+p[73]]=h},()=>{t(e,b)[i+p[75]]=h},()=>{t(e,b)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,b)[i+p[5]]=h},()=>{t(e,b)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,r)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,te,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let a=s.subarray(1),l=4;a.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";ee(s,(i,a)=>{a<8?(i>31&&(o+=String.fromCharCode(i)),a==7&&(e.aiEfxName=o)):a<10&&e.setEffectType(a-8,44,i)})}).add([66,53],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1),ee(s,function(o,i){switch(!0){case i<2944:{let a=e.chRedir(Math.floor(i/92),r,!0),l=a*$.cc;switch(i%92){case 0:{t(e,b)[l+p[0]]=o||121;break}case 1:{t(e,b)[l+p[32]]=o;break}case 2:{t(e,O)[a]=o,o>0&&(t(e,P)[a]=1);break}case 3:{let h=e.chRedir(o,r,!0);t(e,H)[a]=h,a!=h&&(console.info(`NS5R CH${a+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[a*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,b)[l+p[7]]=o;break}case 11:{t(e,b)[l+p[11]]=o;break}case 14:{t(e,b)[l+p[10]]=o||128;break}case 19:{t(e,b)[l+p[93]]=o;break}case 20:{t(e,b)[l+p[91]]=o;break}case 84:{t(e,b)[l+p[65]]=o;break}case 85:{t(e,b)[l+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,r)=>{e.switchMode("ns5r",!0);let o="",i=80,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{l=f&127;break}case y==13:{h+=` +${i} ${a} ${l} ${o.trim().replace("Init Combi","")}`,a++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,r)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,r)=>{e.switchMode("x5d",!0),ee(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,r)=>{e.switchMode("x5d",!0),ee(s,function(o,i,a,l){if(i<192){let h=e.chRedir(Math.floor(i/12),r,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,x.x5d),t(e,b)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,x.x5d),t(e,b)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,b)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,b)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,b)[f+p[91]]=_e(y),t(e,b)[f+p[93]]=_e(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,r,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,r,!0)}})}),t(this,ie).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0),a=s[1];s.subarray(2).forEach((l,h)=>{let f=h+a;t(e,ge)[f+(i-1)*16]=l,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,re)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=l+40},()=>{t(e,v)[i*$.rpn+1]=l+14},()=>{t(e,v)[i*$.rpn]=l},!1,()=>{t(e,b)[$.cc*i+p[91]]=l?127:0},!1,()=>{t(e,b)[$.cc*i+p[7]]=l},()=>{t(e,b)[$.cc*i+p[10]]=Math.ceil(l*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0)}).add([22,18,2],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0),a=s[1]+(s[0]<<7);a<10&&(t(e,re)[i]=1),s.subarray(2).forEach((l,h)=>{let f=h+a;f<14&&(t(e,W)[(i-1)*$.cmt+f]=l)})}).add([22,18,3],(s,r,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((a,l)=>{let h=l+i;t(e,ge)[h]=a;let f=e.chRedir(1+h>>4,r,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,re)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=a+40},()=>{t(e,v)[f*$.rpn+1]=a+14},()=>{t(e,v)[f*$.rpn]=a},!1,()=>{t(e,b)[$.cc*f+p[91]]=a?127:0},!1,()=>{t(e,b)[$.cc*f+p[7]]=a},()=>{t(e,b)[$.cc*f+p[10]]=Math.ceil(a*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,r,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((a,l)=>{let h=l+i,f=e.chRedir(Math.floor(h/246+1),r,!0),g=h%246;g<14&&(t(e,W)[(f-1)*$.cmt+g]=a),g<10&&(t(e,re)[f]=1)})}).add([22,18,5],(s,r,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((a,l)=>{let h=i+l,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=a,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${a.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,a+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME +000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,r,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((a,l)=>{let h=i+l;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=a)})}).add([22,18,16],(s,r,o)=>{e.switchMode("mt32");let i=s[1],a=!1,l=function(h,f){t(e,H)[f-12]=h,a=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,l,l,l,l,l,l,l,l,l,()=>{w(e,_,h)}][g]||(()=>{}))(h,f)}),a&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let r=s[1],o=" ".repeat(r);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,ae,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,r)=>{let o=e.chRedir(0,r,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,r)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,r)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{[a,a,a,a,()=>{w(e,_,l*129/16383*100)},()=>l-64,()=>l-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}}}).add([66,18,0,1],(s,r)=>{}).add([66,18,0,2],(s,r)=>{}).add([66,18,1],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=o*$.cc,a=s[1],l=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=a+f;g<3?[()=>{t(e,b)[i+p[0]]=h||121},()=>{t(e,b)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,r,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,j)[o]=+!h},()=>{e.setChType(o,h,x.ns5r),console.debug(`${l}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,b)[i+p[7]]=h},()=>{t(e,b)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,b)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,b)[i+p[93]]=h},()=>{t(e,b)[i+p[91]]=h},()=>{t(e,b)[i+p[76]]=h},()=>{t(e,b)[i+p[77]]=h},()=>{t(e,b)[i+p[78]]=h},()=>{t(e,b)[i+p[74]]=h},()=>{t(e,b)[i+p[71]]=h},()=>{t(e,b)[i+p[73]]=h},()=>{t(e,b)[i+p[75]]=h},()=>{t(e,b)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,b)[i+p[5]]=h},()=>{t(e,b)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,r)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,te,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let a=s.subarray(1),l=4;a.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";ee(s,(i,a)=>{a<8?(i>31&&(o+=String.fromCharCode(i)),a==7&&(e.aiEfxName=o)):a<10&&e.setEffectType(a-8,44,i)})}).add([66,53],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1),ee(s,function(o,i){switch(!0){case i<2944:{let a=e.chRedir(Math.floor(i/92),r,!0),l=a*$.cc;switch(i%92){case 0:{t(e,b)[l+p[0]]=o||121;break}case 1:{t(e,b)[l+p[32]]=o;break}case 2:{t(e,O)[a]=o,o>0&&(t(e,P)[a]=1);break}case 3:{let h=e.chRedir(o,r,!0);t(e,H)[a]=h,a!=h&&(console.info(`NS5R CH${a+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[a*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,b)[l+p[7]]=o;break}case 11:{t(e,b)[l+p[11]]=o;break}case 14:{t(e,b)[l+p[10]]=o||128;break}case 19:{t(e,b)[l+p[93]]=o;break}case 20:{t(e,b)[l+p[91]]=o;break}case 84:{t(e,b)[l+p[65]]=o;break}case 85:{t(e,b)[l+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,r)=>{e.switchMode("ns5r",!0);let o="",i=80,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{l=f&127;break}case y==13:{h+=` ${i} ${a} ${l} ${o.trim().replace("Init Voice","")}`,a++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(h)}).add([66,55],(s,r)=>{e.switchMode("ns5r",!0);let o="",i=88,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%126;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:break;case y==12:break;case y==13:{h+=` -${i} ${a} ${l} ${o.trim().replace("Init Combi","")}`,a++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let r=new Uint8Array(5760);ee(s,(o,i,a)=>{if(i<720)for(let l=0;l<8;l++)r[i*8+l]=o>>7-l&1}),e.dispatchEvent("screen",{type:"ns5r",data:r})}).add([76],(s,r,o)=>{t(e,fe).run([66,...s],r,o)}),t(this,Ce).add([16,0,8,0],(s,r,o)=>{let i=(s[2]<<4)+s[3],a="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Y,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${a}reverb type: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,r,o)=>{let i=e.chRedir(s[1],r,!0),a=$.cc*i,l=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,b)[a+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,r,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,b)[a+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,b)[a+p[10]]=h},()=>{t(e,v)[l+3]=h+40},()=>{t(e,v)[l+1]=h>>1,t(e,v)[l+2]=h&1},()=>{t(e,b)[a+p[91]]=h?127:0},()=>{},()=>{t(e,b)[a+p[74]]=h},()=>{t(e,b)[a+p[73]]=h},()=>{t(e,b)[a+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,r,o)=>{let i=(s[2]<<4)+s[3],a="GMLX ";([()=>{console.debug(`${a}reverb type: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,r,o)=>{let i=(s[2]<<4)+s[3],a=e.chRedir(s[1],r,!0),l=a*$.cc;[()=>{i<128?(e.setChType(a,e.CH_MELODIC,x.k11),t(e,b)[l+p[0]]=0,t(e,b)[l+p[32]]=0,t(e,O)[a]=i):i<160?(e.setChType(a,e.CH_MELODIC,x.k11),t(e,b)[l+p[0]]=0,t(e,b)[l+p[32]]=7,t(e,O)[a]=i-100):(e.setChType(a,e.CH_DRUMS,x.k11),t(e,b)[l+p[0]]=122,t(e,b)[l+p[32]]=0,t(e,O)[a]=i-160)},()=>{let h=e.chRedir(i,r,!0);t(e,H)[a]=h,a!=h&&(e.buildRchTree(),console.info(`GMLX CH${a+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,r,o)=>{let i=(s[2]<<4)+s[3],a=e.chRedir(s[1],r,!0),l=a*$.cc,h=a*$.rpn,f=`GMLX CH${a+1} `;[()=>{t(e,P)[a]=i},()=>{t(e,b)[l+p[7]]=i},()=>{t(e,b)[l+p[10]]=i},()=>{t(e,b)[l+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,r,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,I,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let a=e.chRedir(s[0]&15,r,!0);if(s[1]==2){let l=e.chRedir(i,r,!0);t(e,H)[a]=l,a!=l&&(e.buildRchTree(),console.info(`SG CH${a+1} receives from CH${l+1}`))}else s[1]==19&&(t(e,b)[$.cc*a+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,r,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,Q).add([127,0],(s,r,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,Q).run(i,r,o)}).add([127,1,0,0],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",a=s[0];s.subarray(1).forEach((l,h)=>{([()=>{w(e,I,l*12900/16383)}][a+h]||(()=>{console.info(`Unrecognized ${i}ID: ${a+h}`)}))()})}).add([127,1,0,0,14],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",a=[];a[95]=(l,h,f)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(a[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",a=[];a[95]=(l,h,f)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(a[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,r,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],r,!0),a=$.cc*i,l=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,b)[a+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,b)[a+p[32]]=f,t(e,T)[i]=+([32,40].indexOf(f)>-1)<<1},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,j)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,b)[a+p[7]]=f},()=>{t(e,b)[a+p[10]]=f},!1,!1,!1,()=>{t(e,b)[a+p[91]]=f},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[94]]=f},()=>{t(e,b)[a+p[128]]=f},()=>{},()=>{t(e,b)[a+p[74]]=f},()=>{t(e,b)[a+p[71]]=f},!1,()=>{t(e,b)[a+p[65]]=f},()=>{t(e,b)[a+p[5]]=f},()=>{}][l+g]||(()=>{}))()})}).add([127,1,54,16],(s,r,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((a,l)=>{let f=`S90/Motif ES EQ${(l>>2)+1} `;([()=>{let g=a-64},()=>{let g=De[a]},()=>{let g=a/10},()=>{let g=a}][i+l&3]||(()=>{}))()})})}chRedir(e,n,c){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Y))>-1){if(c==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,c)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(c)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,c=t(this,b).subarray(n,n+$.cc);return c[p[0]]=c[p[0]]||t(this,ye),c[p[32]]=c[p[32]]||t(this,Y),c}getCcCh(e,n){if(_e.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,b)[$.cc*e+p[n]]}getCcAll(){let e=t(this,b).slice();for(let n=0;n<$.ch;n++){let c=n*$.cc;e[c+p[0]]=e[c+p[0]]||t(this,ye),e[c+p[32]]=e[c+p[32]]||t(this,Y)}return e}getChType(){return t(this,T)}setChType(e,n,c=t(this,R)){n&=15,t(this,T)[e]=n,n>0&&(t(this,b)[e*$.cc+p[0]]=Se[c])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,M).slice()}getVel(e){let n=new Map,c=this;return t(c,U).forEach(function(d,s){let r=Math.floor(d/128),o=d%128;e==r&&t(c,A)[d]>0&&n.set(o,{v:t(c,A)[d],s:t(c,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,ae),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,I)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let c=Math.floor(n/128);t(e,A)[n]>t(e,se)[c]&&(t(e,se)[c]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,d){e[d]=Math.floor(c*t(n,b)[d*$.cc+p[7]]*t(n,b)[d*$.cc+p[11]]*t(n,I)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,c,d){let s=e||t(this,ye),r=n,o=c||t(this,Y);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,r,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let a=parseInt(i.name.slice(5)),l=a*$.cmt,h="";t(this,$e).subarray(l,l+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG -0 127 ${r} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,r,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,b)[e*$.cc+p[0]],t(this,O)[e],t(this,b)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,re)[e])switch(t(this,R)){case x.mt32:n.ending="~",n.name="",t(this,W).subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,d=3200){let s=this,r;w(s,ae," ".repeat(c)),e.forEach(o=>{w(s,ae,t(s,ae)+String.fromCharCode(o>31?o:32)),o<32&&(r=r||new Set,r.add(o))}),w(s,we,Date.now()+3200),w(s,ae,t(s,ae).padEnd(32," ")),r&&(r=Array.from(r),r.forEach((o,i,a)=>{a[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${r.length>1?"s":""}: 0x${r.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c<$.ace;)t(this,le)[c]==e?n=!1:t(this,le)[c]||(n=!1,t(this,le)[c]=e,console.info(`Allocated cc${e} to ACE slot ${c}.`)),c++;c>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,le)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let c=t(this,le)[n];if(c){if(_e.indexOf(c)>=0)return t(this,b)[e*$.cc+p[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Y,0),w(this,ce,0),t(this,P).fill(0),t(this,b).fill(0),t(this,le).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,se).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,I,100),w(this,M,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,ae,""),w(this,te,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,c,d){d[c]=c}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,b)[$.cc*9]=Se[0],t(this,b)[$.cc*25]=Se[0],t(this,b)[$.cc*41]=Se[0],t(this,b)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,W).fill(0),t(this,re).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let c=n*$.cc;t(this,b)[c+p[7]]=100,t(this,b)[c+p[11]]=127,t(this,b)[c+p[10]]=64,t(this,b)[c+p[71]]=64,t(this,b)[c+p[72]]=64,t(this,b)[c+p[73]]=64,t(this,b)[c+p[74]]=64,t(this,b)[c+p[75]]=64,t(this,b)[c+p[76]]=64,t(this,b)[c+p[77]]=64,t(this,b)[c+p[78]]=64,t(this,b)[c+p[91]]=40,t(this,b)[c+p[101]]=127,t(this,b)[c+p[100]]=127,t(this,b)[c+p[99]]=127,t(this,b)[c+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let c=be.indexOf(e);if(c>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,c),w(this,K,0),w(this,ye,Et[0][c]),w(this,Y,Et[1][c]);for(let r=0;r<$.ch;r++)t(this,T)[r]>0&&t(this,b)[r*$.cc+p[0]]==Se[d]&&(t(this,b)[r*$.cc]=Se[c]);switch(this.initOnReset,c){case x.mt32:{Ze.forEach((r,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=r,t(this,b)[i*$.cc+p[91]]=127)});break}}let s;switch(c){case x.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case x.x5d:case x.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let r=0;r<$.efx;r++)t(this,V)[3*r]||(t(this,V)[3*r+1]=s[2*r],t(this,V)[3*r+2]=s[2*r+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,se).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let c=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[c])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${c+1} without any recipient.`)}t(this,M).length>100&&t(this,M).splice(100,t(this,M).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,te=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,b=new WeakMap,le=new WeakMap,O=new WeakMap,A=new WeakMap,j=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,se=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,re=new WeakMap,ge=new WeakMap,W=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Y=new WeakMap,I=new WeakMap,ce=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,ae=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,M=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,xe=new WeakMap,Me=new WeakMap,Q=new WeakMap,ie=new WeakMap,fe=new WeakMap,Ce=new WeakMap,Te=new WeakMap,Re=new WeakMap,Mt);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Ct as dnToPos}; +${i} ${a} ${l} ${o.trim().replace("Init Combi","")}`,a++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let r=new Uint8Array(5760);ee(s,(o,i,a)=>{if(i<720)for(let l=0;l<8;l++)r[i*8+l]=o>>7-l&1}),e.dispatchEvent("screen",{type:"ns5r",data:r})}).add([76],(s,r,o)=>{t(e,fe).run([66,...s],r,o)}),t(this,Me).add([16,0,8,0],(s,r,o)=>{let i=(s[2]<<4)+s[3],a="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Y,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${a}reverb type: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,r,o)=>{let i=e.chRedir(s[1],r,!0),a=$.cc*i,l=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,b)[a+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,r,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,b)[a+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,b)[a+p[10]]=h},()=>{t(e,v)[l+3]=h+40},()=>{t(e,v)[l+1]=h>>1,t(e,v)[l+2]=h&1},()=>{t(e,b)[a+p[91]]=h?127:0},()=>{},()=>{t(e,b)[a+p[74]]=h},()=>{t(e,b)[a+p[73]]=h},()=>{t(e,b)[a+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,r,o)=>{let i=(s[2]<<4)+s[3],a="GMLX ";([()=>{console.debug(`${a}reverb type: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,r,o)=>{let i=(s[2]<<4)+s[3],a=e.chRedir(s[1],r,!0),l=a*$.cc;[()=>{i<128?(e.setChType(a,e.CH_MELODIC,x.k11),t(e,b)[l+p[0]]=0,t(e,b)[l+p[32]]=0,t(e,O)[a]=i):i<160?(e.setChType(a,e.CH_MELODIC,x.k11),t(e,b)[l+p[0]]=0,t(e,b)[l+p[32]]=7,t(e,O)[a]=i-100):(e.setChType(a,e.CH_DRUMS,x.k11),t(e,b)[l+p[0]]=122,t(e,b)[l+p[32]]=0,t(e,O)[a]=i-160)},()=>{let h=e.chRedir(i,r,!0);t(e,H)[a]=h,a!=h&&(e.buildRchTree(),console.info(`GMLX CH${a+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,r,o)=>{let i=(s[2]<<4)+s[3],a=e.chRedir(s[1],r,!0),l=a*$.cc,h=a*$.rpn,f=`GMLX CH${a+1} `;[()=>{t(e,P)[a]=i},()=>{t(e,b)[l+p[7]]=i},()=>{t(e,b)[l+p[10]]=i},()=>{t(e,b)[l+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,r,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,_,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let a=e.chRedir(s[0]&15,r,!0);if(s[1]==2){let l=e.chRedir(i,r,!0);t(e,H)[a]=l,a!=l&&(e.buildRchTree(),console.info(`SG CH${a+1} receives from CH${l+1}`))}else s[1]==19&&(t(e,b)[$.cc*a+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,r,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,Q).add([127,0],(s,r,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,Q).run(i,r,o)}).add([127,1,0,0],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",a=s[0];s.subarray(1).forEach((l,h)=>{([()=>{w(e,_,l*12900/16383)}][a+h]||(()=>{console.info(`Unrecognized ${i}ID: ${a+h}`)}))()})}).add([127,1,0,0,14],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",a=[];a[95]=(l,h,f)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(a[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",a=[];a[95]=(l,h,f)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(a[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,r,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],r,!0),a=$.cc*i,l=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,b)[a+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,b)[a+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,j)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,b)[a+p[7]]=f},()=>{t(e,b)[a+p[10]]=f},!1,!1,!1,()=>{t(e,b)[a+p[91]]=f},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[94]]=f},()=>{t(e,b)[a+p[128]]=f},()=>{},()=>{t(e,b)[a+p[74]]=f},()=>{t(e,b)[a+p[71]]=f},!1,()=>{t(e,b)[a+p[65]]=f},()=>{t(e,b)[a+p[5]]=f},()=>{}][l+g]||(()=>{}))()})}).add([127,1,54,16],(s,r,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((a,l)=>{let f=`S90/Motif ES EQ${(l>>2)+1} `;([()=>{let g=a-64},()=>{let g=De[a]},()=>{let g=a/10},()=>{let g=a}][i+l&3]||(()=>{}))()})})}chRedir(e,n,c){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Y))>-1){if(c==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,c)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(c)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,c=t(this,b).subarray(n,n+$.cc);return c[p[0]]=c[p[0]]||t(this,ye),c[p[32]]=c[p[32]]||t(this,Y),c}getCcCh(e,n){if(Ie.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,b)[$.cc*e+p[n]]}getCcAll(){let e=t(this,b).slice();for(let n=0;n<$.ch;n++){let c=n*$.cc;e[c+p[0]]=e[c+p[0]]||t(this,ye),e[c+p[32]]=e[c+p[32]]||t(this,Y)}return e}getChType(){return t(this,T)}setChType(e,n,c=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,b)[e*$.cc+p[0]]=Se[c])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,C).slice()}getVel(e){let n=new Map,c=this;return t(c,U).forEach(function(d,s){let r=Math.floor(d/128),o=d%128;e==r&&t(c,A)[d]>0&&n.set(o,{v:t(c,A)[d],s:t(c,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,ae),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,_)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let c=Math.floor(n/128);t(e,A)[n]>t(e,se)[c]&&(t(e,se)[c]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,d){e[d]=Math.floor(c*t(n,b)[d*$.cc+p[7]]*t(n,b)[d*$.cc+p[11]]*t(n,_)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,c,d){let s=e||t(this,ye),r=n,o=c||t(this,Y);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,r,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let a=parseInt(i.name.slice(5)),l=a*$.cmt,h="";t(this,$e).subarray(l,l+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG +0 127 ${r} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,r,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,b)[e*$.cc+p[0]],t(this,O)[e],t(this,b)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,re)[e])switch(t(this,R)){case x.mt32:n.ending="~",n.name="",t(this,W).subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,d=3200){let s=this,r;w(s,ae," ".repeat(c)),e.forEach(o=>{w(s,ae,t(s,ae)+String.fromCharCode(o>31?o:32)),o<32&&(r=r||new Set,r.add(o))}),w(s,we,Date.now()+3200),w(s,ae,t(s,ae).padEnd(32," ")),r&&(r=Array.from(r),r.forEach((o,i,a)=>{a[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${r.length>1?"s":""}: 0x${r.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c<$.ace;)t(this,le)[c]==e?n=!1:t(this,le)[c]||(n=!1,t(this,le)[c]=e,console.info(`Allocated cc${e} to ACE slot ${c}.`)),c++;c>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,le)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let c=t(this,le)[n];if(c){if(Ie.indexOf(c)>=0)return t(this,b)[e*$.cc+p[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Y,0),w(this,ce,0),t(this,P).fill(0),t(this,b).fill(0),t(this,le).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,se).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,_,100),w(this,C,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,ae,""),w(this,te,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,c,d){d[c]=c}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,b)[$.cc*9]=Se[0],t(this,b)[$.cc*25]=Se[0],t(this,b)[$.cc*41]=Se[0],t(this,b)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,W).fill(0),t(this,re).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let c=n*$.cc;t(this,b)[c+p[7]]=100,t(this,b)[c+p[11]]=127,t(this,b)[c+p[10]]=64,t(this,b)[c+p[71]]=64,t(this,b)[c+p[72]]=64,t(this,b)[c+p[73]]=64,t(this,b)[c+p[74]]=64,t(this,b)[c+p[75]]=64,t(this,b)[c+p[76]]=64,t(this,b)[c+p[77]]=64,t(this,b)[c+p[78]]=64,t(this,b)[c+p[91]]=40,t(this,b)[c+p[101]]=127,t(this,b)[c+p[100]]=127,t(this,b)[c+p[99]]=127,t(this,b)[c+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let c=be.indexOf(e);if(c>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,c),w(this,K,0),w(this,ye,Et[0][c]),w(this,Y,Et[1][c]);for(let r=0;r<$.ch;r++)t(this,T)[r]>0&&t(this,b)[r*$.cc+p[0]]==Se[d]&&(t(this,b)[r*$.cc]=Se[c]);switch(this.initOnReset,c){case x.mt32:{Ze.forEach((r,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=r,t(this,b)[i*$.cc+p[91]]=127)});break}}let s;switch(c){case x.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case x.x5d:case x.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let r=0;r<$.efx;r++)t(this,V)[3*r]||(t(this,V)[3*r+1]=s[2*r],t(this,V)[3*r+2]=s[2*r+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,se).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let c=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[c])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${c+1} without any recipient.`)}t(this,C).length>100&&t(this,C).splice(100,t(this,C).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,te=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,b=new WeakMap,le=new WeakMap,O=new WeakMap,A=new WeakMap,j=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,se=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,re=new WeakMap,ge=new WeakMap,W=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Y=new WeakMap,_=new WeakMap,ce=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,ae=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,C=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,xe=new WeakMap,Ce=new WeakMap,Q=new WeakMap,ie=new WeakMap,fe=new WeakMap,Me=new WeakMap,Te=new WeakMap,Re=new WeakMap,Ct);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Mt as dnToPos}; diff --git a/src/state/index.mjs b/src/state/index.mjs index 266f3d4a..5b9e1be7 100644 --- a/src/state/index.mjs +++ b/src/state/index.mjs @@ -744,7 +744,7 @@ let OctaviaDevice = class extends CustomEventSource { switch (this.#mode) { case modeMap.s90es: case modeMap.motif: { - this.#chType[part] = +([32, 40].indexOf(det.data[1]) > -1) << 1; + this.setChType(part, ([32, 40].indexOf(det.data[1]) > -1) ? this.CH_DRUMS : this.CH_MELODIC, this.#mode, true); break; }; }; @@ -1000,10 +1000,10 @@ let OctaviaDevice = class extends CustomEventSource { getChType() { return this.#chType; }; - setChType(part, type, mode = this.#mode) { + setChType(part, type, mode = this.#mode, disableMsbSet = false) { type &= 15; this.#chType[part] = type; - if (type > 0) { + if (type > 0 && !disableMsbSet) { this.#cc[part * allocated.cc + ccToPos[0]] = drumMsb[mode]; }; }; @@ -3827,7 +3827,7 @@ let OctaviaDevice = class extends CustomEventSource { }, () => { e && (upThis.#chActive[part] = 1); upThis.#cc[chOff + ccToPos[32]] = e; - upThis.#chType[part] = +([32, 40].indexOf(e) > -1) << 1; + upThis.#chType[part] = this.setChType(part, ([32, 40].indexOf(e) > -1) ? this.CH_DRUMS : this.CH_MELODIC, this.#mode, true); }, () => { e && (upThis.#chActive[part] = 1); upThis.#prg[part] = e; From 39adbb841d72d5ac4f11a301471cf89d169cbc90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Fri, 26 May 2023 18:50:08 +0000 Subject: [PATCH 06/31] Data sync. --- data/bitmaps/xg/qyTrue.tsv | 97 +++++++++++++++++++ .../draftEfxId.tsv => data/misc/efxId.tsv | 0 2 files changed, 97 insertions(+) create mode 100644 data/bitmaps/xg/qyTrue.tsv rename utils/others/draftEfxId.tsv => data/misc/efxId.tsv (100%) diff --git a/data/bitmaps/xg/qyTrue.tsv b/data/bitmaps/xg/qyTrue.tsv new file mode 100644 index 00000000..a49d328a --- /dev/null +++ b/data/bitmaps/xg/qyTrue.tsv @@ -0,0 +1,97 @@ +CdPt Bitmap +0020 0000000000 +0021 0000f20000 +0022 00e000e000 +0023 28fe28fe28 +0024 2454fe5448 +0025 c6c8102646 +0026 6c92aa440a +0027 a0c0000000 +0028 0038448200 +0029 0082443800 +002a 28107c1028 +002b 10107c1010 +002c 000a0c0000 +002d 1010101010 +002e 0006060000 +002f 0408102040 +0030 7c8a92a27c +0031 0042fe0200 +0032 42868a9262 +0033 8482a2d28c +0034 182848fe08 +0035 e4a2a2a29c +0036 3c5292920c +0037 80809ea0c0 +0038 6c9292926c +0039 6092929478 +003a 006c6c0000 +003b 006a6c0000 +003c 1028448200 +003d 2828282828 +003e 0082442810 +003f 40808a9060 +0040 4c929e827c +0041 7e8888887e +0042 82fe92926c +0043 7c82828244 +0044 82fe82827c +0045 fe92929282 +0046 fe90909080 +0047 7c8282925e +0048 fe101010fe +0049 0082fe8200 +004a 040282fc80 +004b fe10284482 +004c fe02020202 +004d fe403040fe +004e fe60100cfe +004f 7c8282827c +0050 fe90909060 +0051 7c828a847a +0052 fe90989462 +0053 649292924c +0054 8080fe8080 +0055 fc020202fc +0056 f8040204f8 +0057 fe041804fe +0058 c6281028c6 +0059 e0100e10e0 +005a 868a92a2c2 +005b 0000fe8200 +005c 4020100804 +005d 0082fe0000 +005e 2040804020 +005f 0202020202 +0060 8040200000 +0061 042a2a2a1e +0062 fe1222221c +0063 1c22222214 +0064 1c222212fe +0065 1c2a2a2a18 +0066 00107e9040 +0067 304a4a327c +0068 fe1020201e +0069 0022be0200 +006a 040222bc00 +006b 00fe081422 +006c 0082fe0200 +006d 3e201e201e +006e 3e1020201e +006f 1c2222221c +0070 7e30484830 +0071 304848307e +0072 3e10202010 +0073 1a2a2a2a26 +0074 20fc220204 +0075 3c02023c02 +0076 3804020438 +0077 3c020c023c +0078 2214081422 +0079 700a0a127c +007a 22262a3222 +007b 00106c8200 +007c 0000ee0000 +007d 00826c1000 +007e 4080402040 +007f 0000000000 \ No newline at end of file diff --git a/utils/others/draftEfxId.tsv b/data/misc/efxId.tsv similarity index 100% rename from utils/others/draftEfxId.tsv rename to data/misc/efxId.tsv From 41d29041ec147a8e2d7e95f1ffa1f7610ae30a2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Fri, 26 May 2023 20:10:34 +0000 Subject: [PATCH 07/31] Kandi8 HD! --- data/bitmaps/xg/qyRsrc.tsv | 25 ++++++++++++++++++++-- src/disp/disp_qy.mjs | 43 +++++++++++++++++++++++++------------- src/fakeNs5r/index.js | 2 +- src/fakeQy/index.js | 2 +- 4 files changed, 53 insertions(+), 19 deletions(-) diff --git a/data/bitmaps/xg/qyRsrc.tsv b/data/bitmaps/xg/qyRsrc.tsv index 7e9540c5..19aa4019 100644 --- a/data/bitmaps/xg/qyRsrc.tsv +++ b/data/bitmaps/xg/qyRsrc.tsv @@ -37,5 +37,26 @@ Vox_e 000b0007f0110227791821046070 Vox_f 000b0007701102073910bf141c70 Vox_sfx 000b00076212a212b7514529592a Vox_dr 000b0007f009012b2594a0943c80 -Vox_ds1 000b0007b01306884359d433a2a7 -Vox_ds2 000b0007b013068a4319d43422a7 \ No newline at end of file +Vox_ds1 000b0007c0140299546ae544b3be +Vox_ds2 000b0007c014029b541ae54533be +Vox_ds3 000b0007c014029b541ae54473b0 +Vox_ds4 000b0007c014029ad45aef447382 +Vox_ds5 000b0007c014029bd44aed4473b0 +Vox_ds6 000b0007c0140299544aed457390 +Vox_ds7 000b0007c014029bd41ae544b390 +Vox_ds8 000b0007c0140299545ae5457390 +Pan_0 000700050000408200 +Pan_1 000700050000410400 +Pan_2 000700050000c60000 +Pan_3 000700050003c00000 +Pan_4 000700050180c00000 +Pan_5 000700054040400000 +Pan_6 000700052020400000 +Pan_7 000700051020400000 +Pan_8 000700050820400000 +Pan_9 000700050410400000 +Pan_a 00070005000c600000 +Pan_b 000700050000780000 +Pan_c 000700050000603000 +Pan_d 000700050000404040 +Pan_e 000700050000408080 \ No newline at end of file diff --git a/src/disp/disp_qy.mjs b/src/disp/disp_qy.mjs index 8c26e8c7..4673cbbf 100644 --- a/src/disp/disp_qy.mjs +++ b/src/disp/disp_qy.mjs @@ -21,6 +21,7 @@ let QyDisplay = class extends RootDisplay { #bmdb = new Uint8Array(256); songTitle = ""; xgFont = new MxFont40("./data/bitmaps/xg/font.tsv"); + qyFont = new MxFont40("./data/bitmaps/xg/qyTrue.tsv", "./data/bitmaps/xg/font.tsv"); sqrFont = new MxFont40("./data/bitmaps/xg/qySqr.tsv"); qy35Font = new MxFont40("./data/bitmaps/xg/qyCh35.tsv"); qy55Font = new MxFont40("./data/bitmaps/xg/qyCh55.tsv"); @@ -80,6 +81,15 @@ let QyDisplay = class extends RootDisplay { this.#nmdb[offset + x + y * 128] = +curBit; }; }; + #renderNeedle(cx, cy, value = 64) { + if (value < 128) { + this.qyRsrc.getBm(`Pan_${(Math.floor((value + 4) / 9).toString(16))}`)?.render((e, x, y) => { + if (e) { + this.#nmdb[cx + x + (y + cy) * 128 - 259] = 1; + }; + }); + }; + }; #getCat(channel, msb, prg) { let voiceInfo = this.getChVoice(channel); let category; @@ -106,10 +116,11 @@ let QyDisplay = class extends RootDisplay { }; return category; }; - render(time, ctx, mixerView, id = 0) { + render(time, ctx, mixerView, id = 0, trueMode = false) { let sum = super.render(time); let upThis = this; let timeNow = Date.now(); + let usedFont = trueMode ? this.qyFont : this.xgFont; // Channel test let alreadyMin = false; let minCh = 0, maxCh = 0; @@ -183,7 +194,7 @@ let QyDisplay = class extends RootDisplay { upThis.#renderFill(29, 24, 1, 40); // Bank info let voiceInfo = upThis.getChVoice(this.#ch); - upThis.xgFont.getStr(`${(sum.chProgr[this.#ch] + 1).toString().padStart(3, "0")}${"+ "[+((["GM", "MT", "AG"].indexOf(voiceInfo.standard) > -1) || sum.chContr[chOff] >= 120)]}${voiceInfo.name.slice(0, 8)}`).forEach((e, i) => { + usedFont.getStr(`${(sum.chProgr[this.#ch] + 1).toString().padStart(3, "0")}${"+ "[+((["GM", "MT", "AG"].indexOf(voiceInfo.standard) > -1) || sum.chContr[chOff] >= 120)]}${voiceInfo.name.slice(0, 8)}`).forEach((e, i) => { e.render((e, x, y) => { upThis.#nmdb[55 + x + i * 6 + y * 128] = e; }); @@ -195,7 +206,7 @@ let QyDisplay = class extends RootDisplay { upThis.#nmdb[37 + x + y * 128] = e; }); } else { - upThis.xgFont.getStr(curCat).forEach((e, i) => { + usedFont.getStr(curCat).forEach((e, i) => { e.render((e, x, y) => { upThis.#nmdb[37 + x + i * 6 + y * 128] = e; }); @@ -210,7 +221,7 @@ let QyDisplay = class extends RootDisplay { }; }); // Carve out the text on that pill - upThis.xgFont.getStr("SONG").forEach((e, i) => { + usedFont.getStr("SONG").forEach((e, i) => { e.render((e, x, y) => { if (e) { upThis.#nmdb[5 + x + i * 6 + y * 128] = 0; @@ -223,7 +234,7 @@ let QyDisplay = class extends RootDisplay { upThis.#renderFill(35, 7, 13, 9); upThis.#renderBox(100, 6, 28, 11); // Bar box if (sum.letter.expire < timeNow) { - upThis.xgFont.getStr(`${id + 1}`.padStart(2, "0")).forEach((e, i) => { + usedFont.getStr(`${id + 1}`.padStart(2, "0")).forEach((e, i) => { e.render((e, x, y) => { if (e) { upThis.#nmdb[1060 + x + i * 6 + y * 128] = 0; @@ -231,7 +242,7 @@ let QyDisplay = class extends RootDisplay { }); }); if (upThis.songTitle.length < 9) { - upThis.xgFont.getStr(upThis.songTitle || "Unknown").forEach((e, i) => { + usedFont.getStr(upThis.songTitle || "Unknown").forEach((e, i) => { e.render((e, x, y) => { upThis.#nmdb[1073 + x + i * 6 + y * 128] = e; }); @@ -242,7 +253,7 @@ let QyDisplay = class extends RootDisplay { sngTtl = sngTtl.replaceAll(" ", " "); }; let rollX = Math.floor(time * 25) % (6 * (10 + sngTtl.length)) - 47; - upThis.xgFont.getStr(`${sngTtl} ${sngTtl.slice(0, 8)}`).forEach((e, i) => { + usedFont.getStr(`${sngTtl} ${sngTtl.slice(0, 8)}`).forEach((e, i) => { e.render((e, x, y) => { let area = x + i * 6; let tX = rollX; @@ -272,7 +283,7 @@ let QyDisplay = class extends RootDisplay { }); }); // tSig render - upThis.xgFont.getStr(`${sum.tSig[0].toString().padStart(2, " ")}/${sum.tSig[1].toString().padEnd(2, " ")}`).forEach((e, i) => { + usedFont.getStr(`${sum.tSig[0].toString().padStart(2, " ")}/${sum.tSig[1].toString().padEnd(2, " ")}`).forEach((e, i) => { e.render((e, x, y) => { upThis.#nmdb[3072 + x + i * 6 + y * 128] = e; }); @@ -286,14 +297,14 @@ let QyDisplay = class extends RootDisplay { let tPit = upThis.device.getPitchShift(upThis.#ch); let tStr = tPit < 0 ? "-" : "+"; tStr += `${Math.round(Math.abs(tPit))}`.padStart(2, "0"); - upThis.xgFont.getStr(tStr).forEach((e, i) => { + usedFont.getStr(tStr).forEach((e, i) => { e.render((e, x, y) => { upThis.#nmdb[3127 + x + i * 6 + y * 128] = e; }); }); }; // Jump render - upThis.xgFont.getStr("001").forEach((e, i) => { + usedFont.getStr("001").forEach((e, i) => { e.render((e, x, y) => { upThis.#nmdb[3181 + x + i * 6 + y * 128] = e; }); @@ -306,12 +317,12 @@ let QyDisplay = class extends RootDisplay { // Bank info { let voiceName = upThis.getChVoice(this.#ch); - upThis.xgFont.getStr(`${sum.chContr[chOff + ccToPos[0]].toString().padStart(3, "0")} ${sum.chProgr[this.#ch].toString().padStart(3, "0")} ${sum.chContr[chOff + ccToPos[32]].toString().padStart(3, "0")}`).forEach((e, i) => { + usedFont.getStr(`${sum.chContr[chOff + ccToPos[0]].toString().padStart(3, "0")} ${sum.chProgr[this.#ch].toString().padStart(3, "0")} ${sum.chContr[chOff + ccToPos[32]].toString().padStart(3, "0")}`).forEach((e, i) => { e.render((e, x, y) => { upThis.#nmdb[6145 + 6 * i + x + y * 128] = e; }); });; - upThis.xgFont.getStr(`${voiceName.standard}:${voiceName.name.slice(0, 8)}`).forEach((e, i) => { + usedFont.getStr(`${voiceName.standard}:${voiceName.name.slice(0, 8)}`).forEach((e, i) => { e.render((e, x, y) => { upThis.#nmdb[7169 + 6 * i + x + y * 128] = e; }); @@ -440,14 +451,16 @@ let QyDisplay = class extends RootDisplay { upThis.qyRsrc.getBm("PanIcon")?.render((e, x, y) => { upThis.#nmdb[4255 + tch * 12 + x + y * 128] = e; }); + upThis.#renderNeedle(tch * 12 + 35, 36, sum.chContr[rch * ccToPos.length + ccToPos[10]]); let volSlid = 15 - (sum.chContr[rch * ccToPos.length + ccToPos[7]] >> 3); upThis.qyRsrc.getBm("VolSlid")?.render((e, x, y) => { upThis.#nmdb[5535 + tch * 12 + x + (volSlid + y) * 128] = e; }); upThis.#renderFill(32 + tch * 12, 46 + volSlid, 8, 1); // Category render + let chType = upThis.device.getChType()[rch]; let curCat = upThis.#getCat(rch, sum.chContr[rch * ccToPos.length], sum.chProgr[rch]), - curCatBm = upThis.qyRsrc.getBm(`Vox_${curCat}`); + curCatBm = upThis.qyRsrc.getBm(`Vox_${[`${curCat}`, "dr", "ds1", "ds2", "ds3", "ds4", "ds5", "ds6", "ds7", "ds8"][chType]}`); if (curCatBm) { curCatBm.render((e, x, y) => { if (e) { @@ -455,7 +468,7 @@ let QyDisplay = class extends RootDisplay { }; }); } else { - upThis.xgFont.getStr(curCat).forEach((e, i) => { + usedFont.getStr(curCat).forEach((e, i) => { e.render((e, x, y) => { if (e) { upThis.#nmdb[3103 + tch * 12 + x + i * 6 + y * 128] = textTarget; @@ -471,7 +484,7 @@ let QyDisplay = class extends RootDisplay { upThis.qyRsrc.getBm("TxtDisp")?.render((e, x, y) => { upThis.#nmdb[(mixerView ? 655 : 1036) + x + y * 128] = e; }); - upThis.xgFont.getStr(sum.letter.text).forEach((e, i) => { + usedFont.getStr(sum.letter.text).forEach((e, i) => { let ri = (i % 16) * 6, ry = i >> 4; e.render((e, x, y) => { upThis.#nmdb[(mixerView ? 1686 : 2067) + ri + x + (y + ry * 8) * 128] = e; diff --git a/src/fakeNs5r/index.js b/src/fakeNs5r/index.js index 0a7ebcf3..6cc87f92 100644 --- a/src/fakeNs5r/index.js +++ b/src/fakeNs5r/index.js @@ -227,7 +227,7 @@ let renderThread = setInterval(function () { let curTime = audioPlayer.currentTime - (self.audioDelay || 0); if (curTime < lastTime) { }; - visualizer.render(curTime, dispCtx, location.hash?.length > 1); + visualizer.render(curTime, dispCtx, location.hash == "#trueMode"); lastTime = curTime; }; }, 20); diff --git a/src/fakeQy/index.js b/src/fakeQy/index.js index 4cfbd11f..405eb9c8 100644 --- a/src/fakeQy/index.js +++ b/src/fakeQy/index.js @@ -249,7 +249,7 @@ let renderThread = setInterval(function () { let curTime = audioPlayer.currentTime - (self.audioDelay || 0); if (curTime < lastTime) { }; - visualizer.render(curTime, dispCtx, mixerView, useMidiBus ? 0 : demoId); + visualizer.render(curTime, dispCtx, mixerView, useMidiBus ? 0 : demoId, location.hash == "#trueMode"); lastTime = curTime; }; }, 20); From c86a9a908a82a3d8a5b6299ad9578ad5120a2156 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 30 May 2023 13:30:38 +0000 Subject: [PATCH 08/31] Before relocation of Octavia system SysEx. --- data/bank/xg.tsv | 68 +++++++++++++++++++++++++++++++++++++++++ dist/cambiare.mjs | 22 ++++++------- dist/state.mjs | 2 +- dist/state_skim.mjs | 2 +- dist/xp_basic.mjs | 2 +- dist/xp_state.mjs | 2 +- src/state/bankReader.js | 7 ++++- src/state/index.mjs | 2 +- 8 files changed, 90 insertions(+), 17 deletions(-) diff --git a/data/bank/xg.tsv b/data/bank/xg.tsv index 84a96dc9..e4c25063 100644 --- a/data/bank/xg.tsv +++ b/data/bank/xg.tsv @@ -10,6 +10,8 @@ MSB PRG LSB NME 000 000 067 MIDI Grd 000 000 068 MIDI Gr2 000 000 069 OldAcPno +000 000 112 LvGrdPno +000 000 125 GrandP # 000 001 000 BritePno 000 001 001 BritPnoK 000 001 003 StBrtPno @@ -21,12 +23,14 @@ MSB PRG LSB NME 000 001 066 MIDI Gr3 000 001 067 MIDI Gr4 000 001 068 OldPiano +000 001 125 BriteP # 000 002 000 EGrndPno 000 002 001 EGndPnoK 000 002 032 Det.CP80 000 002 035 Synth CP 000 002 040 Layer CP 000 002 041 LayerCP2 +000 002 112 MIDIGrEP 000 003 000 HnkyTonk 000 003 001 HnkyTnkK 000 004 000 El.Piano @@ -53,6 +57,8 @@ MSB PRG LSB NME 000 004 079 Easy EP 000 004 080 Sine EP 000 004 081 Cheap EP +000 004 114 GalaxyEP +000 004 125 EPiano1# 000 005 000 ElPiano2 000 005 001 EPiano2K 000 005 012 ChorEPDc @@ -87,6 +93,9 @@ MSB PRG LSB NME 000 005 083 RattlDX+ 000 005 084 TinkerDX 000 005 085 TinkrDX+ +000 005 112 DXModern +000 005 113 HyprTine +000 005 125 EPiano2# 000 006 000 Hrpschrd 000 006 001 HpschrdK 000 006 002 Hpschrd2 @@ -111,6 +120,7 @@ MSB PRG LSB NME 000 007 072 HrdyPlk+ 000 007 073 DblFMClv 000 007 074 RobotClv +000 007 125 Clavi. # 000 008 000 Celesta 000 008 064 FM Celst 000 009 000 Glocken @@ -160,6 +170,9 @@ MSB PRG LSB NME 000 016 077 FM Organ 000 016 078 70sDrOr3 000 016 079 Mood Org +000 016 112 JazzOrgn +000 016 116 BriteOrg +000 016 125 DrawOrg# 000 017 000 PercOrgn 000 017 024 70sPcOrg 000 017 032 DetPrcOr @@ -178,29 +191,39 @@ MSB PRG LSB NME 000 017 075 BeepOrgn 000 017 076 Belief 000 017 077 Snap Org +000 017 125 PercOrg# 000 018 000 RockOrgn 000 018 064 RotaryOr 000 018 065 SlwRotar 000 018 066 FstRotar 000 018 067 GlaRotar +000 018 112 RockOrg* +000 018 117 CoolRotr +000 018 118 CoolOrgn +000 018 125 RockOrg# 000 019 000 ChrchOrg 000 019 032 ChurOrg3 000 019 035 ChurOrg2 000 019 040 NotreDam 000 019 064 OrgFlute 000 019 065 TrmOrgFl +000 019 113 ChapelOr 000 020 000 ReedOrgn 000 020 032 DtReedOr 000 020 040 PuffOrgn 000 020 064 SyReedDk 000 021 000 Acordion 000 021 032 AccordIt +000 021 112 Musette +000 021 113 TrdAcord 000 022 000 Harmnica 000 022 032 Harmo. 2 +000 022 112 SwtHarmo 000 023 000 TangoAcd 000 023 064 TngoAcd2 000 023 065 TightAcd 000 023 066 DetT.Acd +000 023 125 TngoAcd# 000 024 000 NylonGtr 000 024 016 NylonGt2 000 024 025 NylonGt3 @@ -212,6 +235,7 @@ MSB PRG LSB NME 000 024 066 MelEspGt 000 024 067 DecayEsG 000 024 096 Ukulele +000 024 125 NylonGt# 000 025 000 SteelGtr 000 025 016 SteelGt2 000 025 032 SteelGDt @@ -224,6 +248,7 @@ MSB PRG LSB NME 000 025 067 OldSampl 000 025 096 Mandolin 000 025 097 MndolnEn +000 025 125 SteelGt# 000 026 000 Jazz Gtr 000 026 018 MelloGtr 000 026 032 Jazz Amp @@ -239,6 +264,7 @@ MSB PRG LSB NME 000 026 071 NekRough 000 026 072 MidRough 000 026 096 PdlSteel +000 026 125 JazzGtr# 000 027 000 CleanGtr 000 027 032 ChorusGt 000 027 033 ChorGtLt @@ -255,6 +281,7 @@ MSB PRG LSB NME 000 027 074 SoFMChGt 000 027 075 PeskyGtr 000 027 076 ClaviGtr +000 027 117 60sClean 000 028 000 MutedGtr 000 028 040 Funk Gtr 000 028 041 MuteStrG @@ -266,6 +293,7 @@ MSB PRG LSB NME 000 028 067 Tin 000 028 068 GrvyMtGt 000 028 096 Mu.DstGt +000 028 125 MutedGt# 000 029 000 OvrDrvGt 000 029 032 OvdrGtDt 000 029 040 Parallel @@ -274,6 +302,7 @@ MSB PRG LSB NME 000 029 065 BriMnhtn 000 029 066 DetMnhtn 000 029 067 PwrMnhtn +000 029 125 Ovrdriv# 000 030 000 Dist.Gtr 000 030 012 DstRthmG 000 030 024 DistGtr2 @@ -294,6 +323,7 @@ MSB PRG LSB NME 000 030 069 Bombay 000 030 070 SusBmbay 000 030 071 Jaipur +000 030 125 Dist.Gt# 000 031 000 GtrHarmo 000 031 064 AcouHarm 000 031 065 GtFeedbk @@ -310,6 +340,7 @@ MSB PRG LSB NME 000 032 067 BrCoolth 000 032 096 WalkSyBa 000 032 097 Dim&Cool +000 032 125 Acou.Ba# 000 033 000 FngrBass 000 033 018 FingrDrk 000 033 027 FlangrBa @@ -323,6 +354,8 @@ MSB PRG LSB NME 000 033 067 RezChase 000 033 068 BlueBass 000 033 069 JazzyBa2 +000 033 112 FW EBass +000 033 125 FingrBa# 000 034 000 PickBass 000 034 006 PickBas2 000 034 028 M.PkBass @@ -340,6 +373,7 @@ MSB PRG LSB NME 000 035 067 NoizFret 000 035 096 SynFretl 000 035 097 SmthFrtl +000 035 125 Fretles# 000 036 000 Slp.Bass 000 036 021 CosmSlap 000 036 027 ResoSlap @@ -349,10 +383,12 @@ MSB PRG LSB NME 000 036 066 GlitzSlp 000 036 067 FM Slap 000 036 068 DetFMSlp +000 036 125 SlapBas# 000 037 000 SlpBass2 000 037 016 BrtSlpSp 000 037 022 Wah Slap 000 037 043 VeloSlap +000 037 125 SlapBa2# 000 038 000 Syn.Bass 000 038 018 SynBs1Dk 000 038 020 FastResB @@ -397,6 +433,8 @@ MSB PRG LSB NME 000 038 093 Miami Ba 000 038 094 RzTalkBx 000 038 096 Hammer +000 038 112 AnalogBa +000 038 113 ResoBass 000 039 000 SynBass2 000 039 006 MelloSBa 000 039 012 Seq.Bass @@ -422,6 +460,9 @@ MSB PRG LSB NME 000 039 076 PowerSaw 000 039 077 SmoothBa 000 039 078 SynthAtk +000 039 112 SmoothBs +000 039 113 Oct.Bass +000 039 114 PowerBas 000 040 000 Violin 000 040 008 SlwVioln 000 040 040 Unison @@ -430,6 +471,7 @@ MSB PRG LSB NME 000 040 066 ViolinSc 000 040 067 HdVlnSec 000 040 068 SlVlnSec +000 040 125 Violin # 000 041 000 Viola 000 041 040 DblViola 000 041 064 Sonata @@ -451,6 +493,7 @@ MSB PRG LSB NME 000 044 065 Det.Fear 000 044 066 Apoclyps 000 044 067 BrTrmStr +000 044 125 TremStr# 000 045 000 Pizz.Str 000 045 035 PizzOcta 000 045 040 Sleep @@ -486,6 +529,8 @@ MSB PRG LSB NME 000 048 074 Str+BrSc 000 048 075 3 OctStr 000 048 076 5PartStr +000 048 112 Strings* +000 048 125 Strngs1# 000 049 000 Strings2 000 049 003 StSlwStr 000 049 008 LegatoSt @@ -493,6 +538,8 @@ MSB PRG LSB NME 000 049 041 Kingdom 000 049 064 70s Str 000 049 065 Strings3 +000 049 112 ChmbrStr +000 049 125 Strngs2# 000 050 000 Syn. Str 000 050 008 Memory 000 050 018 Zephyr @@ -536,6 +583,7 @@ MSB PRG LSB NME 000 052 068 StereoAh 000 052 069 Aah Mix 000 052 070 OrcheAah +000 052 113 VocalEns 000 053 000 VoiceOoh 000 053 064 VoiceDoo 000 053 065 Hmm @@ -583,6 +631,8 @@ MSB PRG LSB NME 000 056 075 Fanfare 000 056 096 FlugelHr 000 056 097 Cornet +000 056 115 SwtTrp * +000 056 125 Trumpet# 000 057 000 Trombone 000 057 018 Trombon2 000 057 064 BrtTromb @@ -592,6 +642,8 @@ MSB PRG LSB NME 000 057 068 HardTrmb 000 057 069 BrtBsTrb 000 057 070 HrdBsTrb +000 057 113 TromSect +000 057 125 Trombon# 000 058 000 Tuba 000 058 016 Tuba 2 000 058 064 HardTuba @@ -601,6 +653,7 @@ MSB PRG LSB NME 000 059 040 Backyard 000 059 064 MuteTrp2 000 059 065 BakStair +000 059 125 MutedTp# 000 060 000 FrchHorn 000 060 006 FrHrSolo 000 060 032 FrHorn 2 @@ -637,6 +690,7 @@ MSB PRG LSB NME 000 061 076 Alps 000 061 077 SymphBrs 000 061 078 Phoenix +000 061 125 BrsSect# 000 062 000 SynBrass 000 062 012 QuackBrs 000 062 020 RezSynBr @@ -654,6 +708,7 @@ MSB PRG LSB NME 000 062 069 Anal.Hr2 000 062 070 OctAnaHr 000 062 071 PwSawBrs +000 062 113 80sBrass 000 063 000 SynBras2 000 063 018 SoftBras 000 063 040 SynBras4 @@ -667,6 +722,7 @@ MSB PRG LSB NME 000 064 008 VgSoprSx 000 064 064 Meditate 000 064 065 RezMedit +000 064 113 SwtSprno 000 065 000 Alto Sax 000 065 018 LgtAltSx 000 065 040 Sax Sect @@ -675,6 +731,7 @@ MSB PRG LSB NME 000 065 065 FakeAlto 000 065 066 FakeAlt+ 000 065 067 DFakeAlt +000 065 125 AltoSax# 000 066 000 TenorSax 000 066 040 BrthTnSx 000 066 041 SoftTenr @@ -683,10 +740,13 @@ MSB PRG LSB NME 000 066 066 SuprTnr+ 000 066 067 SupTnrSt 000 066 068 Tenr&Alt +000 066 114 BrthTnr2 +000 066 117 SwtTenor 000 067 000 Bari.Sax 000 068 000 Oboe 000 068 065 HeinzUni 000 068 066 Exp.Oboe +000 068 125 Oboe # 000 069 000 Eng.Horn 000 070 000 Bassoon 000 071 000 Clarinet @@ -701,6 +761,8 @@ MSB PRG LSB NME 000 073 066 Pastoral 000 073 067 Shepherd 000 073 096 Qu Di +000 073 114 SwtFlute +000 073 125 Flute # 000 074 000 Recorder 000 074 064 Piplith 000 074 065 Home @@ -708,6 +770,8 @@ MSB PRG LSB NME 000 075 064 PanFlut2 000 075 065 Meadow 000 075 096 Kawala +000 075 113 SwtPanFl +000 075 125 PanFlut# 000 076 000 BotlBlow 000 076 064 BotlLgto 000 077 000 Shakhchi @@ -783,6 +847,8 @@ MSB PRG LSB NME 000 081 090 Seq.Saw2 000 081 091 SimplSaw 000 081 096 SeqAnal. +000 081 115 Analogon +000 081 119 Fargo 000 082 000 CaliopLd 000 082 040 NoviceLd 000 082 064 VentSyn. @@ -821,6 +887,7 @@ MSB PRG LSB NME 000 088 064 Fantasy 000 088 065 Libra 000 088 066 Bell Pad +000 088 112 Fantasia 000 089 000 Warm Pad 000 089 016 ThickPad 000 089 017 Soft Pad @@ -917,6 +984,7 @@ MSB PRG LSB NME 000 100 065 ShinStar 000 100 066 Brt.Stab 000 100 096 Smokey +000 100 113 BellPad* 000 101 000 Goblins 000 101 064 GobSynth 000 101 065 Creeper diff --git a/dist/cambiare.mjs b/dist/cambiare.mjs index 398e0fe2..64879087 100644 --- a/dist/cambiare.mjs +++ b/dist/cambiare.mjs @@ -1,8 +1,8 @@ -var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var Ce=Object.getPrototypeOf,Me=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Te(n))!Me.call(e,t)&&t!==l&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,l)=>(l=e!=null?Se(Ce(e)):{},Oe(n||!e||!e.__esModule?j(l,"default",{value:e,enumerable:!0}):l,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],l={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return l.Uint8(o);if(typeof o=="string")return l.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return l.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(i){if(!i.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let s=new FileReader;s.readAsArrayBuffer(i.target.files[0]),s.onload=function(a){t(l.Uint8(new Uint8Array(a.target.result)))}})},Base64:function(o){let t=function(a){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(a=a.replace(/^.*?base64,/,""),a=String(a).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(a))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");a+="==".slice(2-(3&a.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var i=t.length;let s=new Uint8Array(new ArrayBuffer(i));for(let a=0;a{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)c+=p[p.length-b]*Math.pow(128,b);c+=f}return c}};if(t.data=new DataView(s.buffer,s.byteOffset,s.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let i={};i.formatType=t.readInt(2),i.tracks=t.readInt(2),i.track=[];var s=t.readInt(1),a=t.readInt(1);128<=s?(i.timeDivision=[],i.timeDivision[0]=s-128,i.timeDivision[1]=a):i.timeDivision=256*s+a;for(let c=1;c<=i.tracks;c++){i.track[c-1]={event:[]};var r,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,i.track[c-1].event[f-1]={},i.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){i.track[c-1].event[f-1].type=255,i.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(i.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:i.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:i.track[c-1].event[f-1].data=t.readInt(d);break;case 84:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1),i.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(t.readInt(d),i.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),i.track[c-1].event[f-1].type=parseInt(b[0],16),i.track[c-1].event[f-1].channel=parseInt(b[1],16),i.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(r=t.readIntVLV(),i.track[c-1].event[f-1].data=t.readInt(r),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:i.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||i.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return i},customInterpreter:null};if(typeof K<"u")K.exports=l;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=l}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),o=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,l)}catch(i){console.error(i)}}),this[`on${e}`]&&this[`on${e}`](l)}};var Z=function(e,n){let l=Math.min(e.length,n.length),o=e.slice(0,l),t=n.slice(0,l),i=0,s=0;for(;s0){let o=this.pool.length,t=1<=1&&s>=0;){if(s<=0)throw new Error("TTL reached.");if(i==o)i-=t;else{let r=Z(n,this.pool[i]);switch(r){case 0:{s=0;break}case 1:{i+t<=o&&(i+=t);break}case-1:{i!=0&&(i-=t);break}default:console.warn(`Unexpected result ${r}.`)}}t=t>>1,s--}let a=!0;if(i>=this.pool.length)a=!1;else{let r=this;this.pool[i].forEach(function(h,d,c){a&&h!=n[d]&&(a=!1)}),!a&&Z(n,this.pool[i])>0&&i++}return a||l?i:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...l):this.pool[o].data(n.slice(this.pool[o].length),...l):this.default(n,...l)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},B=class{#t;strictMode=!1;get(e=0,n=0,l=0,o){let t=[e,n,l],i,s=Array.from(arguments);switch(o){case"xg":{e==32?s[2]+=4:e==33||e==35||e==36?s[2]+=5:e==79?s[0]=95:e==80?s[0]=96:e==81?s[0]=97:e==82?s[0]=98:e==83?s[0]=99:e==84&&(s[0]=100);break}case"gs":{e==0&&l<5?s[2]=0:e>125&&l<5&&l!=2&&(s[2]=e,s[0]=0);break}case"sg":{e==8&&l==0&&(s[2]=5);break}case"s90es":{l<8?s[2]+=17:l<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}case"motif":{l<8?s[2]+=28:l<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}}let a=" ",r="M",h=!1,d=0;switch(s[0]){case 0:{s[2]==127?r="MT-a":s[2]==126?r="MT-b":s[2]==7?r="GM-k":s[2]==5?r="SG-a":s[2]==4?r="SP-l":s[2]==0||o=="gs"&&s[2]<5?r="GM-a":(r="y",h=!0);break}case 8:{o=="sg"?r="GM-s":r="r:";break}case 48:{r=`yM${(s[2]>>3).toString().padStart(2,"0")}`,h=!0;break}case 56:{r="GM-b";break}case 61:case 120:{r="rDrm";break}case 62:{r="kDrm";break}case 63:{if(s[2]<17){let b=s[2];r=b<10?"kP:":"kC:",r+=b%10}else s[2]<34?r=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][s[2]-17]:r="Ds";break}case 64:{r="ySFX";break}case 67:{r="DX:S";break}case 80:case 81:case 82:case 83:{r=`Prg${"UABC"[s[0]-80]}`;break}case 88:case 89:case 90:case 91:{r=`Cmb${"UABC"[s[0]-88]}`;break}case 95:{r=`${["DR","PC"][s[2]]}-d`;break}case 96:{r=s[2]==106?"AP-a":"PF",s[2]>63&&(d=63),h=!0;break}case 97:{r="VL:",h=!0,d=112;break}case 98:{r="SG-a";break}case 99:{r="DX",s[2]>63&&(d=63),h=!0;break}case 100:{r="AN",s[2]>63&&(d=63),h=!0;break}case 121:{r=`GM-${s[2]?"":"a"}`,h=!0;break}case 122:{r="lDrm";break}case 126:{r="yDrS";break}case 127:{s[2]==127?r="rDrm":r="yDrm";break}default:s[0]<48?r="r:":r="M"}r.length<4&&(r+=`${(h?l:e)-d}`.padStart(4-r.length,"0")),o=="xg"&&e==16&&(i=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,a=" ");let c=[s[0],s[1],s[2]];for(;!(i?.length>=0);)i=this.#t[s[1]||0][(s[0]<<7)+s[2]],i||(this.strictMode?(i="",a="?"):this.#t[s[1]||0][s[0]<<7]?s[0]==0?(s[2]=0,a="^"):s[2]<1?(s[0]=0,a="*"):(s[2]--,a="^"):e==48?(s[0]=0,s[2]=0,a="!"):e==62?(s[1]--,a=" ",s[1]<1&&!i?.length&&(s[0]=0,a="!")):e<63?s[0]==0?(s[2]=0,a="^"):s[2]<1?(s[0]=0,a="*"):s[2]--:e==80?(i=`PrgU:${n.toString().padStart(3,"0")}`,a="!"):e==88?(i=`CmbU:${n.toString().padStart(3,"0")}`,a="!"):e==121?(i=`GM2Vox0${l}`,a="#"):e==122?(s[1]==32?s[1]==0:s[1]%=7,i=this.#t[s[1]||0][(s[0]<<7)+s[2]],i?a=" ":(i="",a="*")):s[1]==0?(i=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,a="!"):s[0]==0?(s[2]=0,a="^"):s[2]>0?s[2]--:s[1]>0?(s[1]=0,a="!"):(s[0]=0,a="?"));let f=[s[0],s[1],s[2]];(o=="gs"||o=="ns5r")&&a=="^"&&(a=" "),e==127&&a=="^"&&(a=" "),a!=" "&&self.debugMode&&(i="");let p="??";switch(s[0]){case 0:{s[2]==0?p="GM":s[2]==5||s[2]==7?p="KG":s[2]<120?p="XG":s[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{s[2]<17?p="KR":s[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][s[2]];break}case 96:{p=s[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=s[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=s[2]==127?"MT":n==0?"GM":"XG";break}default:s[0]<48&&(s[0]==16&&o=="xg"?p="XG":p="GS")}return{name:i||`${H(e||0)} ${H(n||0)} ${H(l||0)}`,iid:c,eid:f,sid:t,ending:a,sect:r,standard:p}}async load(e,n,l){let o=this,t=[],i=0,s=0;e.split(` -`).forEach(function(a,r){let h=a.split(" "),d=[];r==0?h.forEach(function(c,f){t[De.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],i++),s++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${l||"(internal)"}": ${s} total, ${i} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let i=t<<7;for(let s=o[0];s<=o[1];s++){let a=i+s;for(let r=n[0];r<=n[1];r++)delete this.#t[r][a]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,o){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let l=!0;return n.forEach((o,t)=>{l=l&&e[t]==o}),l},ee=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},R=new TextDecoder,A=new J;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",o=[0,0,0,0],t=32,i=0,s=0,a=!0,r=[],h=0;for(;a;){let d=n.subarray(i);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(i+=80,s=1):i++},()=>{if(Ie(d.subarray(0,4),o))r.forEach((c,f,p)=>{let b=ee(n.subarray(c.start+4,c.start+8));c.length=b}),s=2;else{let c=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));r.push({type:c,start:f}),i+=8}},()=>{let c=r[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let b=t;for(;b()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Te(n))!Me.call(e,t)&&t!==l&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,l)=>(l=e!=null?Se(Ce(e)):{},Oe(n||!e||!e.__esModule?j(l,"default",{value:e,enumerable:!0}):l,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],l={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return l.Uint8(o);if(typeof o=="string")return l.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return l.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(i){if(!i.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(i.target.files[0]),a.onload=function(s){t(l.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var i=t.length;let a=new Uint8Array(new ArrayBuffer(i));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)c+=p[p.length-b]*Math.pow(128,b);c+=f}return c}};if(t.data=new DataView(a.buffer,a.byteOffset,a.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let i={};i.formatType=t.readInt(2),i.tracks=t.readInt(2),i.track=[];var a=t.readInt(1),s=t.readInt(1);128<=a?(i.timeDivision=[],i.timeDivision[0]=a-128,i.timeDivision[1]=s):i.timeDivision=256*a+s;for(let c=1;c<=i.tracks;c++){i.track[c-1]={event:[]};var r,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,i.track[c-1].event[f-1]={},i.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){i.track[c-1].event[f-1].type=255,i.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(i.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:i.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:i.track[c-1].event[f-1].data=t.readInt(d);break;case 84:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1),i.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(t.readInt(d),i.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),i.track[c-1].event[f-1].type=parseInt(b[0],16),i.track[c-1].event[f-1].channel=parseInt(b[1],16),i.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(r=t.readIntVLV(),i.track[c-1].event[f-1].data=t.readInt(r),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:i.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||i.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return i},customInterpreter:null};if(typeof K<"u")K.exports=l;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=l}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),o=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,l)}catch(i){console.error(i)}}),this[`on${e}`]&&this[`on${e}`](l)}};var Z=function(e,n){let l=Math.min(e.length,n.length),o=e.slice(0,l),t=n.slice(0,l),i=0,a=0;for(;a0){let o=this.pool.length,t=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(i==o)i-=t;else{let r=Z(n,this.pool[i]);switch(r){case 0:{a=0;break}case 1:{i+t<=o&&(i+=t);break}case-1:{i!=0&&(i-=t);break}default:console.warn(`Unexpected result ${r}.`)}}t=t>>1,a--}let s=!0;if(i>=this.pool.length)s=!1;else{let r=this;this.pool[i].forEach(function(h,d,c){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[i])>0&&i++}return s||l?i:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...l):this.pool[o].data(n.slice(this.pool[o].length),...l):this.default(n,...l)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},B=class{#t;strictMode=!1;get(e=0,n=0,l=0,o){let t=[e,n,l],i,a=Array.from(arguments);switch(o){case"xg":{e==32?a[2]+=4:e==33||e==35||e==36?a[2]+=5:e==79?a[0]=95:e==80?a[0]=96:e==81?a[0]=97:e==82?a[0]=98:e==83?a[0]=99:e==84&&(a[0]=100),l==126?a[2]=125:l==127&&(a[2]=0);break}case"gs":{e==0&&l<5?a[2]=0:e>125&&l<5&&l!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&l==0&&(a[2]=5);break}case"s90es":{l<8?a[2]+=17:l<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{l<8?a[2]+=28:l<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let s=" ",r="M",h=!1,d=0;switch(a[0]){case 0:{a[2]==127?r="MT-a":a[2]==126?r="MT-b":a[2]==7?r="GM-k":a[2]==5?r="SG-a":a[2]==4?r="SP-l":a[2]==0||o=="gs"&&a[2]<5?r="GM-a":(r="y",h=!0);break}case 8:{o=="sg"?r="GM-s":r="r:";break}case 48:{r=`yM${(a[2]>>3).toString().padStart(2,"0")}`,h=!0;break}case 56:{r="GM-b";break}case 61:case 120:{r="rDrm";break}case 62:{r="kDrm";break}case 63:{if(a[2]<17){let b=a[2];r=b<10?"kP:":"kC:",r+=b%10}else a[2]<34?r=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:r="Ds";break}case 64:{r="ySFX";break}case 67:{r="DX:S";break}case 80:case 81:case 82:case 83:{r=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{r=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{r=`${["DR","PC"][a[2]]}-d`;break}case 96:{r=a[2]==106?"AP-a":"PF",a[2]>63&&(d=63),h=!0;break}case 97:{r="VL:",h=!0,d=112;break}case 98:{r="SG-a";break}case 99:{r="DX",a[2]>63&&(d=63),h=!0;break}case 100:{r="AN",a[2]>63&&(d=63),h=!0;break}case 121:{r=`GM-${a[2]?"":"a"}`,h=!0;break}case 122:{r="lDrm";break}case 126:{r="yDrS";break}case 127:{a[2]==127?r="rDrm":r="yDrm";break}default:a[0]<48?r="r:":r="M"}r.length<4&&(r+=`${(h?l:e)-d}`.padStart(4-r.length,"0")),o=="xg"&&e==16&&(i=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,s=" ");let c=[a[0],a[1],a[2]];for(;!(i?.length>=0);)i=this.#t[a[1]||0][(a[0]<<7)+a[2]],i||(this.strictMode?(i="",s="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,s="^"):a[2]<1?(a[0]=0,s="*"):(a[2]--,s="^"):e==48?(a[0]=0,a[2]=0,s="!"):e==62?(a[1]--,s=" ",a[1]<1&&!i?.length&&(a[0]=0,s="!")):e<63?a[0]==0?(a[2]=0,s="^"):a[2]<1?(a[0]=0,s="*"):a[2]--:e==80?(i=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(i=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(i=`GM2Vox0${l}`,s="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,i=this.#t[a[1]||0][(a[0]<<7)+a[2]],i?s=" ":(i="",s="*")):a[1]==0?(i=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,s="!"):a[0]==0?(a[2]=0,s="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,s="!"):(a[0]=0,s="?"));let f=[a[0],a[1],a[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(i="");let p="??";switch(a[0]){case 0:{a[2]==0?p="GM":a[2]==5||a[2]==7?p="KG":a[2]<126?p="XG":a[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{a[2]<17?p="KR":a[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][a[2]];break}case 96:{p=a[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=a[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=a[2]==127?"MT":n==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&o=="xg"?p="XG":p="GS")}return{name:i||`${H(e||0)} ${H(n||0)} ${H(l||0)}`,iid:c,eid:f,sid:t,ending:s,sect:r,standard:p}}async load(e,n,l){let o=this,t=[],i=0,a=0;e.split(` +`).forEach(function(s,r){let h=s.split(" "),d=[];r==0?h.forEach(function(c,f){t[De.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],i++),a++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${l||"(internal)"}": ${a} total, ${i} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let i=t<<7;for(let a=o[0];a<=o[1];a++){let s=i+a;for(let r=n[0];r<=n[1];r++)delete this.#t[r][s]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,o){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let l=!0;return n.forEach((o,t)=>{l=l&&e[t]==o}),l},ee=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},R=new TextDecoder,A=new J;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",o=[0,0,0,0],t=32,i=0,a=0,s=!0,r=[],h=0;for(;s;){let d=n.subarray(i);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(i+=80,a=1):i++},()=>{if(Ie(d.subarray(0,4),o))r.forEach((c,f,p)=>{let b=ee(n.subarray(c.start+4,c.start+8));c.length=b}),a=2;else{let c=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));r.push({type:c,start:f}),i+=8}},()=>{let c=r[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let b=t;for(;b=r.length&&(s=3,a=!1)}][s]||(()=>{a=!1}))()}return l});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ue=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],C=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ie=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},re=function(e){return e>105?Ue[e-106]:e>100?e*1.1-100:e/10},ae=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +063 ${($[17]+1).toString().padStart(3,"0")} ${$[19].toString().padStart(3,"0")} ${w}`),y+=b}break}}h++,h>=r.length&&(a=3,s=!1)}][a]||(()=>{s=!1}))()}return l});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ue=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],C=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ie=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},re=function(e){return e>105?Ue[e-106]:e>100?e*1.1-100:e/10},ae=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ce=function(e,n,l){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},i=t[0];if(i?.length)return i+=`: ${(t[1]||function(){})(l)||l}`,i},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,l){let o=[],t=l==!1?n.readIntVLV():l;e==0||e==127;for(let i=0;i127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},S=function(e,n){let l=0,o=0;for(let t=0;t>i&1)<<7,a=e[t];a+=s,t%8!=0?(n(a,l,e),l++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],T=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],l=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(l,t)):o==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",l="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${l}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#c=new Uint8Array(g.ch);#i=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#a=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#v=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#T=new Uint8Array(g.ch);#B=0;#r=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#C=new Uint8Array(g.ch);#U=new Uint8Array(128);#k=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#S=0;#m=100;#O=0;#Q=500;#W=0;#M="";#L=0;#Y=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#S)>-1){if(l==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let l=e*128+n,o=this.#f.lastIndexOf(l);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[l]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let o=e*128+n,t=0;for(this.#v[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,l)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[l]=o;let t=this.#f[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,l,o)=>{let t=n>>7,i=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,i)})}};#J={8:function(e){let n=e.channel,l=e.data[0];this.#u.nOff(n,l)},9:function(e){let n=e.channel;this.#n[n]=1;let l=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,l,o):this.#u.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#f.indexOf(l)>-1&&(this.#d[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let l=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#v[n]=1,this.#u.ano(n);return}case 127:{this.#v[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let i=this.#e[g.cc*t];(i==56||i==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[l+u[99]],t=this.#e[l+u[98]];if(o==1){let i=Be.indexOf(t);if(i>-1)this.#e[l+u[71+i]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+i}.`),this.dispatchEvent("cc",{part:n,cc:71+i,data:e.data[1]});else{let s=ge.indexOf(t);s>-1?this.#K[n*10+s]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let s=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${s}is not necessary. Consider removing it.`):console.warn(`${s}is not supported.`)}else{let s=this.#i[n]-2;s<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#i[n]]}.`):this.#j[(s*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#i[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[l+u[100]]];this.#e[l+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#r[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[l+101]==0&&X[this.#e[l+100]]!=null&&(this.#r[n*g.rpn+X[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[l+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#a[n]=e.data,this.#C[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#f.forEach(function(o){let t=o>>7;l==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:l,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let l=n[0],o=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(l,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#V.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#R.run(n,l,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,l)=>{this.#D.run(n,l,e)},67:(e,n,l)=>{this.#E.run(n,l,e)},68:(e,n,l)=>{this.#z.run(n,l,e)},71:(e,n,l)=>{this.#X.run(n,l,e)},126:(e,n,l)=>{this.#_.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#F.run(n,l,e)}};#_;#F;#E;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,l=this.#e.subarray(n,n+g.cc);return l[u[0]]=l[u[0]]||this.#N,l[u[32]]=l[u[32]]||this.#S,l}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=T[l])}getPitch(){return this.#I}getProgram(){return this.#a}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,l=this;return l.#f.forEach(function(o,t){let i=Math.floor(o/128),s=o%128;e==i&&l.#d[o]>0&&n.set(s,{v:l.#d[o],s:l.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#M,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let l=Math.floor(n/128);e.#d[n]>e.#T[l]&&(e.#T[l]=e.#d[n])}),this.#T}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,o){e[o]=Math.floor(l*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,l,o){let t=e||this.#N,i=n,s=l||this.#S;x[this.#t]=="ns5r"&&t>0&&t<56&&(s=3);let a=this.userBank.get(t,i,s,o);if(x[this.#t]=="mt32"&&a.name.indexOf("MT-m:")==0){let r=parseInt(a.name.slice(5)),h=r*g.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG -0 127 ${i} ${d}`,!0),a.name=d,a.ending=" "}return(a.ending!=" "||!a.name.length)&&(a=this.baseBank.get(t,i,s,o)),a}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#a[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#C[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,o=3200){let t=this,i;t.#M=" ".repeat(l),e.forEach(s=>{t.#M+=String.fromCharCode(s>31?s:32),s<32&&(i=i||new Set,i.add(s))}),t.#L=Date.now()+3200,t.#M=t.#M.padEnd(32," "),i&&(i=Array.from(i),i.forEach((s,a,r)=>{r[a]=s.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${i.length>1?"s":""}: 0x${i.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let l=this.#b[n];if(l){if(I.indexOf(l)>=0)return this.#e[e*g.cc+u[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#S=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#a.fill(0),this.#d.fill(0),this.#f.fill(0),this.#T.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#M="",this.#h=0,this.#o=0,this.#g.fill(0),this.#l=!1,this.#Y=0,this.#x=!0,this.#c.forEach(function(n,l,o){o[l]=l}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#H.fill(0)),this.#e[g.cc*9]=T[0],this.#e[g.cc*25]=T[0],this.#e[g.cc*41]=T[0],this.#e[g.cc*57]=T[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#k.fill(0),this.#C.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=l,this.#o=0,this.#N=fe[0][l],this.#S=fe[1][l];for(let i=0;i0&&this.#e[i*g.cc+u[0]]==T[o]&&(this.#e[i*g.cc]=T[l]);switch(this.initOnReset,l){case m.mt32:{V.forEach((i,s)=>{let a=s+1;this.#n[a]||(this.#a[a]=i,this.#e[a*g.cc+u[91]]=127)});break}}let t;switch(l){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let i=0;i14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(o=>{e.channel=o,l=!0,this.#J[e.type].call(this,e)}),l||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ce=function(e,n,l){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},i=t[0];if(i?.length)return i+=`: ${(t[1]||function(){})(l)||l}`,i},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,l){let o=[],t=l==!1?n.readIntVLV():l;e==0||e==127;for(let i=0;i127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},S=function(e,n){let l=0,o=0;for(let t=0;t>i&1)<<7,s=e[t];s+=a,t%8!=0?(n(s,l,e),l++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],T=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],l=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(l,t)):o==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",l="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${l}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#c=new Uint8Array(g.ch);#i=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#a=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#v=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#T=new Uint8Array(g.ch);#B=0;#r=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#C=new Uint8Array(g.ch);#U=new Uint8Array(128);#k=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#S=0;#m=100;#O=0;#Q=500;#W=0;#M="";#L=0;#Y=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#S)>-1){if(l==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let l=e*128+n,o=this.#f.lastIndexOf(l);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[l]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let o=e*128+n,t=0;for(this.#v[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,l)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[l]=o;let t=this.#f[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,l,o)=>{let t=n>>7,i=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,i)})}};#J={8:function(e){let n=e.channel,l=e.data[0];this.#u.nOff(n,l)},9:function(e){let n=e.channel;this.#n[n]=1;let l=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,l,o):this.#u.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#f.indexOf(l)>-1&&(this.#d[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let l=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#v[n]=1,this.#u.ano(n);return}case 127:{this.#v[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let i=this.#e[g.cc*t];(i==56||i==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[l+u[99]],t=this.#e[l+u[98]];if(o==1){let i=Be.indexOf(t);if(i>-1)this.#e[l+u[71+i]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+i}.`),this.dispatchEvent("cc",{part:n,cc:71+i,data:e.data[1]});else{let a=ge.indexOf(t);a>-1?this.#K[n*10+a]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let a=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${a}is not necessary. Consider removing it.`):console.warn(`${a}is not supported.`)}else{let a=this.#i[n]-2;a<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#i[n]]}.`):this.#j[(a*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#i[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[l+u[100]]];this.#e[l+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#r[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[l+101]==0&&X[this.#e[l+100]]!=null&&(this.#r[n*g.rpn+X[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[l+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#a[n]=e.data,this.#C[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#f.forEach(function(o){let t=o>>7;l==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:l,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let l=n[0],o=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(l,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#V.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#R.run(n,l,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,l)=>{this.#D.run(n,l,e)},67:(e,n,l)=>{this.#E.run(n,l,e)},68:(e,n,l)=>{this.#z.run(n,l,e)},71:(e,n,l)=>{this.#X.run(n,l,e)},126:(e,n,l)=>{this.#_.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#F.run(n,l,e)}};#_;#F;#E;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,l=this.#e.subarray(n,n+g.cc);return l[u[0]]=l[u[0]]||this.#N,l[u[32]]=l[u[32]]||this.#S,l}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=T[l])}getPitch(){return this.#I}getProgram(){return this.#a}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,l=this;return l.#f.forEach(function(o,t){let i=Math.floor(o/128),a=o%128;e==i&&l.#d[o]>0&&n.set(a,{v:l.#d[o],s:l.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#M,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let l=Math.floor(n/128);e.#d[n]>e.#T[l]&&(e.#T[l]=e.#d[n])}),this.#T}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,o){e[o]=Math.floor(l*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,l,o){let t=e||this.#N,i=n,a=l||this.#S;x[this.#t]=="ns5r"&&t>0&&t<56&&(a=3);let s=this.userBank.get(t,i,a,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let r=parseInt(s.name.slice(5)),h=r*g.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG +0 127 ${i} ${d}`,!0),s.name=d,s.ending=" "}return(s.ending!=" "||!s.name.length)&&(s=this.baseBank.get(t,i,a,o)),s}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#a[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#C[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,o=3200){let t=this,i;t.#M=" ".repeat(l),e.forEach(a=>{t.#M+=String.fromCharCode(a>31?a:32),a<32&&(i=i||new Set,i.add(a))}),t.#L=Date.now()+3200,t.#M=t.#M.padEnd(32," "),i&&(i=Array.from(i),i.forEach((a,s,r)=>{r[s]=a.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${i.length>1?"s":""}: 0x${i.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let l=this.#b[n];if(l){if(I.indexOf(l)>=0)return this.#e[e*g.cc+u[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#S=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#a.fill(0),this.#d.fill(0),this.#f.fill(0),this.#T.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#M="",this.#h=0,this.#o=0,this.#g.fill(0),this.#l=!1,this.#Y=0,this.#x=!0,this.#c.forEach(function(n,l,o){o[l]=l}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#H.fill(0)),this.#e[g.cc*9]=T[0],this.#e[g.cc*25]=T[0],this.#e[g.cc*41]=T[0],this.#e[g.cc*57]=T[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#k.fill(0),this.#C.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=l,this.#o=0,this.#N=fe[0][l],this.#S=fe[1][l];for(let i=0;i0&&this.#e[i*g.cc+u[0]]==T[o]&&(this.#e[i*g.cc]=T[l]);switch(this.initOnReset,l){case m.mt32:{V.forEach((i,a)=>{let s=a+1;this.#n[s]||(this.#a[s]=i,this.#e[s*g.cc+u[91]]=127)});break}}let t;switch(l){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let i=0;i14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(o=>{e.channel=o,l=!0,this.#J[e.type].call(this,e)}),l||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let i=t.slice(2).split(":");switch(i[0]){case"hd":{i.slice(1).forEach((s,a)=>{s.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][a]}: ${s}`)});break}case"ln":{i.slice(1).forEach((s,a)=>{s.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][a]}: ${s}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,i){i<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,i){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,i){console.debug(`Track ${i} requests to get assigned to output ${t}.`),e.#H[i]=t+1},this.#y[81]=function(t,i){e.#Q=t/1e3},this.#y[127]=function(t,i){e.#G.run(t,i)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,i){e.#H[i]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#E=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#E.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#E.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let i=[0,0,0,0],s=(a,r)=>{i[r]=a};if(t.subarray(1).forEach((a,r)=>{let h=r+t[0];([s,s,s,s,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(a,r)}),t[0]<4){let a=0;i.forEach(r=>{a=a<<4,a+=r}),a-=1024}}}}).add([76,2,1],t=>{let i="XG ";t[0]<32?(i+="reverb ",t.subarray(1).forEach((s,a)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}time: ${ie(r)}s`)},r=>{console.debug(`${i}diffusion: ${r}`)},r=>{console.debug(`${i}initial delay: ${r}`)},r=>{console.debug(`${i}HPF cutoff: ${C[r]}Hz`)},r=>{console.debug(`${i}LPF cutoff: ${C[r]}Hz`)},r=>{console.debug(`${i}width: ${r}`)},r=>{console.debug(`${i}height: ${r}`)},r=>{console.debug(`${i}depth: ${r}`)},r=>{console.debug(`${i}wall type: ${r}`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${i}delay: ${r}`)},r=>{console.debug(`${i}density: ${r}`)},r=>{console.debug(`${i}balance: ${r}`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{}][t[0]+a]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(s)})):t[0]<64?(i+="chorus ",t.subarray(1).forEach((s,a)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}LFO: ${te[r]}Hz`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{console.debug(`${i}delay offset: ${re(r)}ms`)},r=>{},r=>{console.debug(`${i}low: ${C[r]}Hz`)},r=>{console.debug(`${i}low: ${r-64}dB`)},r=>{console.debug(`${i}high: ${C[r]}Hz`)},r=>{console.debug(`${i}high: ${r-64}dB`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${i}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${i}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+a]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(s)})):t[0]<86?(i+="variation ",t.subarray(1).forEach((s,a)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${i}sub type: ${r+1}`)}][t[0]-64+a]||function(){})(s)})):t[0]<97?(i+="variation ",t.subarray(1).forEach((s,a)=>{[r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},r=>{console.debug(`${i}to chorus: ${E(r)}dB`)},r=>{console.debug(`${i}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${i}channel: CH${r+1}`)},r=>{console.debug(`${i}mod wheel: ${r-64}`)},r=>{console.debug(`${i}bend wheel: ${r-64}`)},r=>{console.debug(`${i}channel after touch: ${r-64}`)},r=>{console.debug(`${i}AC1: ${r-64}`)},r=>{console.debug(`${i}AC2: ${r-64}`)}][t[0]-86+a](s)})):t[0]>111&&t[0]<118?i+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((i,s)=>{let a=s+t[0];if(a==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][i]}`);else{let r=a-1>>2,h=a-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${i-64}dB`)},()=>{console.debug(`${d}${i} (raw)`)},()=>{console.debug(`${d}${i/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!i]}`)}][h]()}})}).add([76,3],t=>{let i=t[0],s=t[1],a=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+i,!1,d),console.info(`${a}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+i,!0,d),console.debug(`${a}sub type: ${d+1}`)}][s+h]||function(){})(r)})}).add([76,6,0],t=>{let i=t[0];i<64?e.setLetterDisplay(t.subarray(1),"XG letter display",i):e.#L=Date.now()}).add([76,7,0],t=>{let i=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let s=t.subarray(1);for(let a=0;a>6-p&1,p++})}).add([76,8],(t,i)=>{let s=e.chRedir(t[0],i,!0),a=t[1],r=g.cc*s,h=`XG CH${s+1} `,d=`Unknown XG part address ${a}.`;t.subarray(2).forEach((c,f)=>{a<1?console.debug(d):a<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!c},()=>{},()=>{e.setChType(s,c,m.xg),console.debug(`${h}type: ${P[c]||c}`)},()=>{e.#r[g.rpn*s+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][a+f-1]||(()=>{}))():a<48?console.debug(d):a<111?a>102&&a<105&&(e.#e[r+u[[5,65][a&1]]]=c):a<114?console.debug(d):a<116?console.debug(`${h}EQ ${["bass","treble"][a&1]} gain: ${c-64}dB`):a<118?console.debug(d):a<120?console.debug(`${h}EQ ${["bass","treble"][a&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,i)=>{let s=e.chRedir(t[0],i,!0),a=t[1],r=`PLG-150VL CH${s+1} `;t.subarray(2).forEach((h,d)=>{let c=d+a;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,i)=>{let s=t[0];t.subarray(1).forEach((a,r)=>{let h=s+r;h==8?console.debug(`MU1000 set LCD contrast to ${a}.`):h>9&&h<16&&[()=>{e.dispatchEvent("channelactive",a)},()=>{a<8?(e.dispatchEvent("channelmin",a<<4),console.info(`Octavia System: Minimum CH${(a<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{a<8?(e.dispatchEvent("channelmax",(a<<4)+15),console.info(`Octavia System: Maximum CH${(a<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!a,console.info(`Octavia System: RS receiving ${["dis","en"][a]}abled.`)}][h-10]()})}).add([73,10,0],(t,i)=>{let s=t[0],a=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(s<16)switch(s){case 2:{let r=e.chRedir(0,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${a}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,i,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${a}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${a}unknown switch ${s} invoked.`)}else if(s<32){if(e.#x){let r=e.chRedir(s-16+(e.#Y<<4),i,!0);e.dispatchEvent("channelactive",r)}}else if(s<36){let r=e.chRedir(s-32<<4,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#Y=s-32),console.info(`${a}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,i)=>{let s=e.chRedir(t[0],i,!0),a=`PLG-100SG CH${s+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ae[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${a}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#E.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#E.add([89,0],(t,i,s)=>{if(e.eprom){let a=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${a} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let b=0;b<7;b++)h[r+7*f+b]+=(d>>6-b&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,i,s)=>{let a=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${a.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=a)}).add([89,2],(t,i,s)=>{if(e.eprom){let a=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${a.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[a+7*c+p]+=(h>>6-p&1)<<7;else r[a+7*c+f]=h})}}).add([89,3],(t,i,s)=>{}),this.#E.add([39,48],(t,i,s)=>{}).add([43,0,0],(t,i,s)=>{let a=[0,0,0,0],r=(h,d)=>{a[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;a.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,i,s)=>{}).add([43,2],(t,i,s)=>{let a=e.chRedir(t[0],i,!0),r=t[1],h=g.cc*a,d=`TG300 CH${a+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#a[a]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[a]=+!c},()=>{},()=>{},()=>{e.#r[g.rpn*a+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,i,s)=>{let a=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",a)}).add([43,7,1],(t,i,s)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(a,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,i,s)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#S=3,e.#l=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,i,s)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#l=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let a=[0,0,0,0],r=(h,d)=>{a[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;a.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let i=t[0];if(i<16){let s="".padStart(i," ");t.subarray(1).forEach((a,r)=>{s+=String.fromCharCode(Math.max(32,a))}),s=s.padEnd(16," "),console.debug(`GS patch name: ${s}`)}else i<48||(i<65?t.subarray(1).forEach((s,a)=>{let r=`GS ${i+a>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${_[s]}`),e.setEffectType(0,40,s)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${s}ms`)},()=>{console.info(`${r}type: ${oe[s]}`),e.setEffectType(1,40,16+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)},()=>{console.debug(`${r}to delay: ${E(s)}`)}][i+a-48]||(()=>{}))()}):i<80?console.debug(`Unknown GS patch address: ${i}`):i<91?t.subarray(1).forEach((s,a)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[s]}`),e.setEffectType(2,40,32+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)}][i+a-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${i}`))}).add([66,18,64,2],t=>{let i="GS EQ ";t.subarray(1).forEach((s,a)=>{([()=>{console.debug(`${i}low freq: ${[200,400][s]}Hz`)},()=>{console.debug(`${i}low gain: ${s-64}dB`)},()=>{console.debug(`${i}high freq: ${[3e3,6e3][s]}Hz`)},()=>{console.debug(`${i}high gain: ${s-64}dB`)}][t[0]+a]||function(){console.warn(`Unknown GS EQ address: ${t[0]+a}`)})()})}).add([66,18,64,3],t=>{let i="GS EFX ",s=function(a,r){let h=ce(e.#w.subarray(10,12),r,a);h&&console.debug(`${i}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((a,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+a)},()=>{e.setEffectTypeRaw(3,!0,a),console.info(`${i}type: ${F(e.#w.subarray(10,12))}`)},!1,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,()=>{console.debug(`${i}to reverb: ${E(a)}dB`)},()=>{console.debug(`${i}to chorus: ${E(a)}dB`)},()=>{console.debug(`${i}to delay: ${E(a)}dB`)},!1,()=>{console.debug(`${i}1 source: ${a}`),a&&a<96&&e.allocateAce(a)},()=>{console.debug(`${i}1 depth: ${a-64}`)},()=>{console.debug(`${i}2 source: ${a}`),a&&a<96&&e.allocateAce(a)},()=>{console.debug(`${i}2 depth: ${a-64}`)},()=>{console.debug(`${i}to EQ: ${a?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(a,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let i=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",i);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let i=e.#p[t[0]-1],s=t[1];i.fill(0);let a=t.subarray(2);for(let r=0;r>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,i,s){let a=t[0],r=g.cc*i,h=g.rpn*i,d=`GS CH${i+1} `;a<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#a[i]=c},()=>{let p=e.chRedir(c,s,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][a+f]()}):a<19||(a<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[i]=+!c},!1,()=>{e.setChType(i,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][a+f-19]||(()=>{}))()}):a<76||console.debug(`Unknown GS part address: ${a}`))},o=function(t,i){let s=t[0],a=`GS CH${i+1} `;s<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[g.cc*i+u[32]]=r},()=>{}][s+h]()}):s<32?console.warn(`Unknown GS misc address: ${s}`):s<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${a}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${a}EFX: o${["ff","n"][r]}`)}][s+h-32]()}):console.warn(`Unknown GS misc address: ${s}`)};this.#R.add([66,18,64,16],(t,i)=>{l(t,e.chRedir(9,i,!0),i)}).add([66,18,64,17],(t,i)=>{l(t,e.chRedir(0,i,!0),i)}).add([66,18,64,18],(t,i)=>{l(t,e.chRedir(1,i,!0),i)}).add([66,18,64,19],(t,i)=>{l(t,e.chRedir(2,i,!0),i)}).add([66,18,64,20],(t,i)=>{l(t,e.chRedir(3,i,!0),i)}).add([66,18,64,21],(t,i)=>{l(t,e.chRedir(4,i,!0),i)}).add([66,18,64,22],(t,i)=>{l(t,e.chRedir(5,i,!0),i)}).add([66,18,64,23],(t,i)=>{l(t,e.chRedir(6,i,!0),i)}).add([66,18,64,24],(t,i)=>{l(t,e.chRedir(7,i,!0),i)}).add([66,18,64,25],(t,i)=>{l(t,e.chRedir(8,i,!0),i)}).add([66,18,64,26],(t,i)=>{l(t,e.chRedir(10,i,!0),i)}).add([66,18,64,27],(t,i)=>{l(t,e.chRedir(11,i,!0),i)}).add([66,18,64,28],(t,i)=>{l(t,e.chRedir(12,i,!0),i)}).add([66,18,64,29],(t,i)=>{l(t,e.chRedir(13,i,!0),i)}).add([66,18,64,30],(t,i)=>{l(t,e.chRedir(14,i,!0),i)}).add([66,18,64,31],(t,i)=>{l(t,e.chRedir(15,i,!0),i)}).add([66,18,64,64],(t,i)=>{o(t,e.chRedir(9,i,!0))}).add([66,18,64,65],(t,i)=>{o(t,e.chRedir(0,i,!0))}).add([66,18,64,66],(t,i)=>{o(t,e.chRedir(1,i,!0))}).add([66,18,64,67],(t,i)=>{o(t,e.chRedir(2,i,!0))}).add([66,18,64,68],(t,i)=>{o(t,e.chRedir(3,i,!0))}).add([66,18,64,69],(t,i)=>{o(t,e.chRedir(4,i,!0))}).add([66,18,64,70],(t,i)=>{o(t,e.chRedir(5,i,!0))}).add([66,18,64,71],(t,i)=>{o(t,e.chRedir(6,i,!0))}).add([66,18,64,72],(t,i)=>{o(t,e.chRedir(7,i,!0))}).add([66,18,64,73],(t,i)=>{o(t,e.chRedir(8,i,!0))}).add([66,18,64,74],(t,i)=>{o(t,e.chRedir(10,i,!0))}).add([66,18,64,75],(t,i)=>{o(t,e.chRedir(11,i,!0))}).add([66,18,64,76],(t,i)=>{o(t,e.chRedir(12,i,!0))}).add([66,18,64,77],(t,i)=>{o(t,e.chRedir(13,i,!0))}).add([66,18,64,78],(t,i)=>{o(t,e.chRedir(14,i,!0))}).add([66,18,64,79],(t,i)=>{o(t,e.chRedir(15,i,!0))}),this.#D.add([54,65],(t,i)=>{e.switchMode("x5d");let s=(t[1]<<7)+t[0],a=(t[3]<<7)+t[2],r=e.chRedir(s&15,i,!0),h=g.cc*r;[()=>{a<1||(a<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=a-1,e.#e[h+u[0]]=82):a<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=a-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#a[r]=be[a-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=a},()=>{a<31&&(e.#e[h+u[10]]=Math.round((a-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(a)},()=>{e.#e[h+u[91]]=D(a)},()=>{e.#r[r*g.rpn+3]=a>8191?a-16320:64+a},()=>{e.#r[r*g.rpn+1]=a>8191?a-16320:64+a},()=>{a>0&&(e.#r[r*g.rpn]=a)},()=>{}][s>>4]()}).add([54,76,0],(t,i)=>{e.switchMode("x5d",!0);let s="",a=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` -${a} ${r} ${h} ${s.trim().replace("Init Voice","")}`,r++,s="";break}}r>99&&(a=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,i)=>{e.switchMode("x5d",!0);let s="",a=90,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` -${a} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,i)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,i)=>{e.switchMode("x5d",!0),S(t,(s,a)=>{a>0&&a<3&&e.setEffectType(a-1,44,s)})}).add([54,104],(t,i)=>{e.switchMode("x5d",!0),S(t,function(s,a,r,h){if(a<192){let d=e.chRedir(Math.floor(a/12),i,!0),c=d*g.cc;switch(a%12){case 0:{s<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#a[d]=s):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#a[d]=be[s-128]),s>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=s;break}case 2:{e.#r[d*g.rpn+3]=s>127?s-192:64+s;break}case 3:{e.#r[d*g.rpn+1]=s>127?s-192:64+s;break}case 4:{s<31&&(e.#e[c+u[10]]=Math.round((s-15)*4.2+64));break}case 5:{let f=s>>4,p=s&15;e.#e[c+u[91]]=D(p),e.#e[c+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(s&15,i,!0),p=s>>4;e.#c[d]=s,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(a-192,i,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,i,s)=>{e.switchMode("mt32");let a=e.chRedir(s,i,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#U[c+(a-1)*16]=h,([!1,()=>{let f=e.#U[a-1<<4];if(f<3)if(e.#C[a]=1,f==2)for(let p=0;p{e.#r[a*g.rpn+3]=h+40},()=>{e.#r[a*g.rpn+1]=h+14},()=>{e.#r[a*g.rpn]=h},!1,()=>{e.#e[g.cc*a+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*a+u[7]]=h},()=>{e.#e[g.cc*a+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,i,s)=>{e.switchMode("mt32");let a=e.chRedir(s,i,!0)}).add([22,18,2],(t,i,s)=>{e.switchMode("mt32");let a=e.chRedir(s,i,!0),r=t[1]+(t[0]<<7);r<10&&(e.#C[a]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#k[(a-1)*g.cmt+c]=h)})}).add([22,18,3],(t,i,s)=>{if(e.switchMode("mt32"),t[0]){let a=t[1]-16}else{let a=t[1];t.subarray(2).forEach((r,h)=>{let d=h+a;e.#U[d]=r;let c=e.chRedir(1+d>>4,i,!0),f=d&15;([!1,()=>{let p=e.#U[c-1<<4];if(p<3)if(e.#C[c]=1,p==2)for(let b=0;b{e.#r[c*g.rpn+3]=r+40},()=>{e.#r[c*g.rpn+1]=r+14},()=>{e.#r[c*g.rpn]=r},!1,()=>{e.#e[g.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[g.cc*c+u[7]]=r},()=>{e.#e[g.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,i,s)=>{e.switchMode("mt32");let a=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+a,c=e.chRedir(Math.floor(d/246+1),i,!0),f=d%246;f<14&&(e.#k[(c-1)*g.cmt+f]=r),f<10&&(e.#C[c]=1)})}).add([22,18,5],(t,i,s)=>{e.switchMode("mt32");let a=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=a+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME -000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,i,s)=>{e.switchMode("mt32");let a=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=a+h;d>1)*g.cmt+d]=r)})}).add([22,18,16],(t,i,s)=>{e.switchMode("mt32");let a=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+a;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let i=t[1],s=" ".repeat(i);t.subarray(2).forEach(a=>{a>31&&(s+=String.fromCharCode(a))}),e.#M=s.padStart(20," "),e.#L=Date.now()+3200}).add([22,18,82],(t,i)=>{let s=e.chRedir(0,i,!0);for(let a=0;a<16;a++)e.#u.ano(s+a),a&&a<10&&(e.#a[s+a]=V[a-1]);console.info("MT-32 alt reset complete.")}),this.#D.add([66,0],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,i)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,i)=>{let s=t[0];switch(s){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(s<10){let a=[0,0,0,0],r=(h,d)=>{a[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][s+d]()}),t[0]<4){let h=0;a.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,i)=>{}).add([66,18,0,2],(t,i)=>{}).add([66,18,1],(t,i)=>{let s=e.chRedir(t[0],i,!0),a=s*g.cc,r=t[1],h=`NS5R CH${s+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[a+u[0]]=d||121},()=>{e.#e[a+u[32]]=d},()=>{e.#a[s]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!d},()=>{e.setChType(s,d,m.ns5r),console.debug(`${h}type: ${P[d]}`)},()=>{e.#r[g.rpn*s+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[a+u[7]]=d},()=>{e.#e[a+u[11]]=d},()=>{},()=>{},()=>{e.#e[a+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[a+u[93]]=d},()=>{e.#e[a+u[91]]=d},()=>{e.#e[a+u[76]]=d},()=>{e.#e[a+u[77]]=d},()=>{e.#e[a+u[78]]=d},()=>{e.#e[a+u[74]]=d},()=>{e.#e[a+u[71]]=d},()=>{e.#e[a+u[73]]=d},()=>{e.#e[a+u[75]]=d},()=>{e.#e[a+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[a+u[5]]=d},()=>{e.#e[a+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,i)=>{let s=t[0];if(s<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let a=s-32;e.#h=Date.now()+3200,e.#o=10,e.#g.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+a,p=f>>4,b=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#g[b*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1;let s="";S(t,(a,r)=>{r<8?(a>31&&(s+=String.fromCharCode(a)),r==7&&(e.aiEfxName=s)):r<10&&e.setEffectType(r-8,44,a)})}).add([66,53],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(s,a){switch(!0){case a<2944:{let r=e.chRedir(Math.floor(a/92),i,!0),h=r*g.cc;switch(a%92){case 0:{e.#e[h+u[0]]=s||121;break}case 1:{e.#e[h+u[32]]=s;break}case 2:{e.#a[r]=s,s>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(s,i,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*g.rpn+3]=s<40||s>88?s+(s>63?-192:64):s;break}case 9:case 10:{e.#e[h+u[7]]=s;break}case 11:{e.#e[h+u[11]]=s;break}case 14:{e.#e[h+u[10]]=s||128;break}case 19:{e.#e[h+u[93]]=s;break}case 20:{e.#e[h+u[91]]=s;break}case 84:{e.#e[h+u[65]]=s;break}case 85:{e.#e[h+u[5]]=s;break}}break}case a<3096:break;case a<3134:break;case a<8566:break}})}).add([66,54],(t,i)=>{e.switchMode("ns5r",!0);let s="",a=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{a=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` -${a} ${r} ${h} ${s.trim().replace("Init Voice","")}`,r++,s="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,i)=>{e.switchMode("ns5r",!0);let s="",a=88,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%126;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:break;case p==12:break;case p==13:{d+=` -${a} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let i=new Uint8Array(5760);S(t,(s,a,r)=>{if(a<720)for(let h=0;h<8;h++)i[a*8+h]=s>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:i})}).add([76],(t,i,s)=>{e.#D.run([66,...t],i,s)}),this.#V.add([16,0,8,0],(t,i,s)=>{let a=(t[2]<<4)+t[3],r="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#S=a?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${a}`)},()=>{console.debug(`${r}reverb time: ${a}`)},()=>{console.debug(`${r}reverb time: ${a}`)},()=>{console.debug(`${r}reverb predelay: ${a}`)},()=>{console.debug(`${r}reverb predelay: ${a}`)},()=>{console.debug(`${r}depth high: ${a}`)},()=>{console.debug(`${r}depth high: ${a}`)},()=>{console.debug(`${r}depth low: ${a}`)},()=>{console.debug(`${r}depth low: ${a}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,i,s)=>{let a=e.chRedir(t[1],i,!0),r=g.cc*a,h=g.rpn*a,d=(t[3]<<4)+t[4],c=`K11 CH${a+1} `;([()=>{d<128?(e.setChType(a,e.CH_MELODIC,m.k11),e.#e[r+u[0]]=0,e.#a[a]=d):(e.setChType(a,e.CH_DRUMS,m.k11),e.#a[a]=d-128)},()=>{let f=e.chRedir(d,i,!0);e.#c[a]=f,a!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[r+u[7]]=d},()=>{e.#n[a]=d},()=>{e.#e[r+u[10]]=d},()=>{e.#r[h+3]=d+40},()=>{e.#r[h+1]=d>>1,e.#r[h+2]=d&1},()=>{e.#e[r+u[91]]=d?127:0},()=>{},()=>{e.#e[r+u[74]]=d},()=>{e.#e[r+u[73]]=d},()=>{e.#e[r+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,i,s)=>{let a=(t[2]<<4)+t[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${a}`)},()=>{console.debug(`${r}reverb time: ${a}`)},()=>{console.debug(`${r}reverb predelay: ${a}`)},()=>{console.debug(`${r}depth high: ${a}`)},()=>{console.debug(`${r}depth low: ${a}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,i,s)=>{let a=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc;[()=>{a<128?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#a[r]=a):a<160?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#a[r]=a-100):(e.setChType(r,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#a[r]=a-160)},()=>{let d=e.chRedir(a,i,!0);e.#c[r]=d,r!=d&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,i,s)=>{let a=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc,d=r*g.rpn,c=`GMLX CH${r+1} `;[()=>{e.#n[r]=a},()=>{e.#e[h+u[7]]=a},()=>{e.#e[h+u[10]]=a},()=>{e.#e[h+u[91]]=a?127:0},()=>{e.#r[d+3]=a+40},()=>{e.#r[d+1]=a},()=>{e.#r[d]=a},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,i,s)=>{let a=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=a*129/16383*100;break}case 5:{a-64;break}case 6:{console.debug(`SG global reverb: ${a?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[a]}`);break}}break}default:if(t[0]>>4==1){let r=e.chRedir(t[0]&15,i,!0);if(t[1]==2){let h=e.chRedir(a,i,!0);e.#c[r]=h,r!=h&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*r+u[7]]=a)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,i,s)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#E.add([127,0],(t,i,s)=>{e.switchMode("motif");let a=new Uint8Array([127,1,...t]);e.#E.run(a,i,s)}).add([127,1,0,0],(t,i,s)=>{e.switchMode("s90es");let a="S90/Motif ES system ",r=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][r+d]||(()=>{console.info(`Unrecognized ${a}ID: ${r+d}`)}))()})}).add([127,1,0,0,14],(t,i,s)=>{e.switchMode("s90es");let a="S90/Motif ES bulk header ",r=[];r[95]=(h,d,c)=>{console.debug(`${a}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${a}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,i,s)=>{e.switchMode("s90es");let a="S90/Motif ES bulk footer ",r=[];r[95]=(h,d,c)=>{console.debug(`${a}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${a}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,i,s)=>{e.switchMode("s90es");let a=e.chRedir(t[0],i,!0),r=g.cc*a,h=t[1],d=`S90/Motif ES bulk CH${a<16?a+1:"U"+(a-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[r+u[0]]=c},()=>{c&&(e.#n[a]=1),e.#e[r+u[32]]=c,e.#i[a]=this.setChType(a,[32,40].indexOf(c)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{c&&(e.#n[a]=1),e.#a[a]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[a]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[r+u[7]]=c},()=>{e.#e[r+u[10]]=c},!1,!1,!1,()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[128]]=c},()=>{},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},!1,()=>{e.#e[r+u[65]]=c},()=>{e.#e[r+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,i,s)=>{e.switchMode("s90es");let a=t[0];t.subarray(1).forEach((r,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=r-64},()=>{let f=C[r]},()=>{let f=r/10},()=>{let f=r}][a+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,l,o){this.#t=e,this.start=n,this.end=l,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,l){super(!0,e,n,l)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let l=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(l.push(i),t.#t=i.index)})}return l}getRange(e,n){e>n&&([e,n]=[n,e]);let l=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),i=!0;for(let s=0;s=e&&(o=s):o=o<0?s:o;for(;i;)this[o]?.end=e&&l.push(this[o]):i=!1,o++;return l}};var _e=0xffffffffffff,ve=function(e){let n=new Q,l=this,o=e.timeDivision,t=120,i=new Q,s=0,a=0;i.push(new q(0,_e,[120,0])),e.track.forEach(function(c){s=0,c.event.forEach(function(f){s+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,i[i.length-1]&&i.push(new q(s,0xffffffffffff,[t,0])))})}),i.fresh(),i.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let r=120;i.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):r==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),r=c.data[0])});let h=0,d=120;return i.forEach(function(c){let f=c.start,p=f/d/o*60+h;d=c.data[0],h=p-f/d/o*60,c.data[1]=h}),console.debug("All tempo changes: ",i),t=120,s=0,a=0,e.track.forEach(function(c,f){s=0,a=0;let p=f+1;c.event.forEach(function(b,y){s+=b.deltaTime;let $=i.step(s,!0)[0];$&&(t=$.data[0],a=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(s/t/o*60+a,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends U{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#c=120;#i=4;#e=4;#b=0;#a=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#i=4,this.#e=4,this.#b=0,this.#a=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#a/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#i)}get noteBeat(){let e=this.noteOverall%this.#i;return e<0&&(e+=this.#i),e}getTimeSig(){return[this.#i,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#a&&(this.#a=e);let n=this.#t?.step(e)||[],l=0,o=new Set,t=this,i=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&l++),y.data.type==8&&o.has($.part*128+$.data[0])&&l++;let w=t.device.runJson($);switch(w?.reply){case"meta":{i.push(w);break}}w?.reply&&delete w.reply}),i?.length>0&&this.dispatchEvent("meta",i);let s=this.device.getActive(),a=[],r=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let M=w[$]-t.#p[$],Y=u.length*$;if(M>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(M-M*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(M-M*t.smoothingDcy**L)}});let p=0;return s.forEach(function(y,$){y&&(a[$]=t.device.getVel($),p+=a[$].size)}),{extraPoly:l,curPoly:p,chInUse:s,chKeyPr:a,chPitch:r,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,l=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=l,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(i){(o.#h[i.meta]||console.debug).call(o,i.meta,i.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,i){o.#o?.length<1&&(o.#o=i)},this.#h[81]=function(t,i){let s=o.noteProgress,a=o.#n||.5;o.#c=6e7/i,o.#n=i/1e6,o.#b+=s*(a/o.#n)-s},this.#h[88]=function(t,i){let s=o.noteProgress,a=o.noteOverall,r=o.noteBar,h=o.noteBeat,d=o.#i,c=o.#e;o.#i=i[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,a=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[l%12]*this.noteHeight;if(o>0)switch(i.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,i.fillRect(s+1,a+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{i.clearRect(s+1+this.noteOutline,a+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let l=super.render(n),o=this,t=this.context,i=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let s=metrics.actualBoundingBoxLeft,a=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${l.eventCount.toString().padStart(3,"0")} ${(l.curPoly+l.extraPoly).toString().padStart(3,"0")}/512 ${l.tSig[0].toString().padStart(2," ")}/${l.tSig[1].toString().padEnd(2," ")} ${(l.noteBar+1).toString().padStart(3," ")}:${Math.floor(l.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(l.tempo).toString().padStart(3," ")}.${Math.floor(l.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(l.master.volume).toString().padStart(3," ")}.${Math.floor(l.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+s,a+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+s,a+o.fontPadding+o.lineHeight*2),l.chKeyPr.forEach((r,h)=>{r.forEach((d,c)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&r.part1?32:16)),c=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+s+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(c.name,o.fontPadding+s+(r>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+r%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(l.chContr[f+u[p]]/-127))})}}l.letter.expire<=i,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let r=0;r<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+r%(this.mode>1?32:16)),o.noteWidth*16*(l.strength[h]/255),o.lineHeight-1)}for(let r in o.eventBuffer)delete o.eventBuffer[r];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let l=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,i=t.part*128+t.note,s=this.eventBuffer[i];this.eventBuffer[i]=t,s?.velo>0&&t.velo==0&&this.eventQueue.push(s)})}},Dt=Fe;export{Dt as default}; +122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let i=t.slice(2).split(":");switch(i[0]){case"hd":{i.slice(1).forEach((a,s)=>{a.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][s]}: ${a}`)});break}case"ln":{i.slice(1).forEach((a,s)=>{a.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][s]}: ${a}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,i){i<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,i){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,i){console.debug(`Track ${i} requests to get assigned to output ${t}.`),e.#H[i]=t+1},this.#y[81]=function(t,i){e.#Q=t/1e3},this.#y[127]=function(t,i){e.#G.run(t,i)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,i){e.#H[i]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#E=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#E.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#E.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let i=[0,0,0,0],a=(s,r)=>{i[r]=s};if(t.subarray(1).forEach((s,r)=>{let h=r+t[0];([a,a,a,a,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(s,r)}),t[0]<4){let s=0;i.forEach(r=>{s=s<<4,s+=r}),s-=1024}}}}).add([76,2,1],t=>{let i="XG ";t[0]<32?(i+="reverb ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}time: ${ie(r)}s`)},r=>{console.debug(`${i}diffusion: ${r}`)},r=>{console.debug(`${i}initial delay: ${r}`)},r=>{console.debug(`${i}HPF cutoff: ${C[r]}Hz`)},r=>{console.debug(`${i}LPF cutoff: ${C[r]}Hz`)},r=>{console.debug(`${i}width: ${r}`)},r=>{console.debug(`${i}height: ${r}`)},r=>{console.debug(`${i}depth: ${r}`)},r=>{console.debug(`${i}wall type: ${r}`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${i}delay: ${r}`)},r=>{console.debug(`${i}density: ${r}`)},r=>{console.debug(`${i}balance: ${r}`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{}][t[0]+s]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(a)})):t[0]<64?(i+="chorus ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}LFO: ${te[r]}Hz`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{console.debug(`${i}delay offset: ${re(r)}ms`)},r=>{},r=>{console.debug(`${i}low: ${C[r]}Hz`)},r=>{console.debug(`${i}low: ${r-64}dB`)},r=>{console.debug(`${i}high: ${C[r]}Hz`)},r=>{console.debug(`${i}high: ${r-64}dB`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${i}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${i}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+s]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(a)})):t[0]<86?(i+="variation ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${i}sub type: ${r+1}`)}][t[0]-64+s]||function(){})(a)})):t[0]<97?(i+="variation ",t.subarray(1).forEach((a,s)=>{[r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},r=>{console.debug(`${i}to chorus: ${E(r)}dB`)},r=>{console.debug(`${i}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${i}channel: CH${r+1}`)},r=>{console.debug(`${i}mod wheel: ${r-64}`)},r=>{console.debug(`${i}bend wheel: ${r-64}`)},r=>{console.debug(`${i}channel after touch: ${r-64}`)},r=>{console.debug(`${i}AC1: ${r-64}`)},r=>{console.debug(`${i}AC2: ${r-64}`)}][t[0]-86+s](a)})):t[0]>111&&t[0]<118?i+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((i,a)=>{let s=a+t[0];if(s==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][i]}`);else{let r=s-1>>2,h=s-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${i-64}dB`)},()=>{console.debug(`${d}${i} (raw)`)},()=>{console.debug(`${d}${i/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!i]}`)}][h]()}})}).add([76,3],t=>{let i=t[0],a=t[1],s=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+i,!1,d),console.info(`${s}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+i,!0,d),console.debug(`${s}sub type: ${d+1}`)}][a+h]||function(){})(r)})}).add([76,6,0],t=>{let i=t[0];i<64?e.setLetterDisplay(t.subarray(1),"XG letter display",i):e.#L=Date.now()}).add([76,7,0],t=>{let i=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let a=t.subarray(1);for(let s=0;s>6-p&1,p++})}).add([76,8],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=t[1],r=g.cc*a,h=`XG CH${a+1} `,d=`Unknown XG part address ${s}.`;t.subarray(2).forEach((c,f)=>{s<1?console.debug(d):s<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#a[a]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[a]=+!c},()=>{},()=>{e.setChType(a,c,m.xg),console.debug(`${h}type: ${P[c]||c}`)},()=>{e.#r[g.rpn*a+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][s+f-1]||(()=>{}))():s<48?console.debug(d):s<111?s>102&&s<105&&(e.#e[r+u[[5,65][s&1]]]=c):s<114?console.debug(d):s<116?console.debug(`${h}EQ ${["bass","treble"][s&1]} gain: ${c-64}dB`):s<118?console.debug(d):s<120?console.debug(`${h}EQ ${["bass","treble"][s&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=t[1],r=`PLG-150VL CH${a+1} `;t.subarray(2).forEach((h,d)=>{let c=d+s;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,i)=>{let a=t[0];t.subarray(1).forEach((s,r)=>{let h=a+r;h==8?console.debug(`MU1000 set LCD contrast to ${s}.`):h>9&&h<16&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][h-10]()})}).add([73,10,0],(t,i)=>{let a=t[0],s=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(a<16)switch(a){case 2:{let r=e.chRedir(0,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${s}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,i,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${s}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${s}unknown switch ${a} invoked.`)}else if(a<32){if(e.#x){let r=e.chRedir(a-16+(e.#Y<<4),i,!0);e.dispatchEvent("channelactive",r)}}else if(a<36){let r=e.chRedir(a-32<<4,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#Y=a-32),console.info(`${s}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=`PLG-100SG CH${a+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ae[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${s}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#E.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#E.add([89,0],(t,i,a)=>{if(e.eprom){let s=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${s} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let b=0;b<7;b++)h[r+7*f+b]+=(d>>6-b&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,i,a)=>{let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${s.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=s)}).add([89,2],(t,i,a)=>{if(e.eprom){let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${s.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[s+7*c+p]+=(h>>6-p&1)<<7;else r[s+7*c+f]=h})}}).add([89,3],(t,i,a)=>{}),this.#E.add([39,48],(t,i,a)=>{}).add([43,0,0],(t,i,a)=>{let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,i,a)=>{}).add([43,2],(t,i,a)=>{let s=e.chRedir(t[0],i,!0),r=t[1],h=g.cc*s,d=`TG300 CH${s+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[s]=+!c},()=>{},()=>{},()=>{e.#r[g.rpn*s+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,i,a)=>{let s=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",s)}).add([43,7,1],(t,i,a)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(s,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,i,a)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#S=3,e.#l=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,i,a)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#l=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let i=t[0];if(i<16){let a="".padStart(i," ");t.subarray(1).forEach((s,r)=>{a+=String.fromCharCode(Math.max(32,s))}),a=a.padEnd(16," "),console.debug(`GS patch name: ${a}`)}else i<48||(i<65?t.subarray(1).forEach((a,s)=>{let r=`GS ${i+s>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${_[a]}`),e.setEffectType(0,40,a)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${a}ms`)},()=>{console.info(`${r}type: ${oe[a]}`),e.setEffectType(1,40,16+a)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(a)}`)},()=>{console.debug(`${r}to delay: ${E(a)}`)}][i+s-48]||(()=>{}))()}):i<80?console.debug(`Unknown GS patch address: ${i}`):i<91?t.subarray(1).forEach((a,s)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[a]}`),e.setEffectType(2,40,32+a)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(a)}`)}][i+s-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${i}`))}).add([66,18,64,2],t=>{let i="GS EQ ";t.subarray(1).forEach((a,s)=>{([()=>{console.debug(`${i}low freq: ${[200,400][a]}Hz`)},()=>{console.debug(`${i}low gain: ${a-64}dB`)},()=>{console.debug(`${i}high freq: ${[3e3,6e3][a]}Hz`)},()=>{console.debug(`${i}high gain: ${a-64}dB`)}][t[0]+s]||function(){console.warn(`Unknown GS EQ address: ${t[0]+s}`)})()})}).add([66,18,64,3],t=>{let i="GS EFX ",a=function(s,r){let h=ce(e.#w.subarray(10,12),r,s);h&&console.debug(`${i}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((s,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+s)},()=>{e.setEffectTypeRaw(3,!0,s),console.info(`${i}type: ${F(e.#w.subarray(10,12))}`)},!1,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,()=>{console.debug(`${i}to reverb: ${E(s)}dB`)},()=>{console.debug(`${i}to chorus: ${E(s)}dB`)},()=>{console.debug(`${i}to delay: ${E(s)}dB`)},!1,()=>{console.debug(`${i}1 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${i}1 depth: ${s-64}`)},()=>{console.debug(`${i}2 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${i}2 depth: ${s-64}`)},()=>{console.debug(`${i}to EQ: ${s?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(s,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let i=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",i);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let i=e.#p[t[0]-1],a=t[1];i.fill(0);let s=t.subarray(2);for(let r=0;r>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,i,a){let s=t[0],r=g.cc*i,h=g.rpn*i,d=`GS CH${i+1} `;s<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#a[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][s+f]()}):s<19||(s<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[i]=+!c},!1,()=>{e.setChType(i,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][s+f-19]||(()=>{}))()}):s<76||console.debug(`Unknown GS part address: ${s}`))},o=function(t,i){let a=t[0],s=`GS CH${i+1} `;a<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[g.cc*i+u[32]]=r},()=>{}][a+h]()}):a<32?console.warn(`Unknown GS misc address: ${a}`):a<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${s}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${s}EFX: o${["ff","n"][r]}`)}][a+h-32]()}):console.warn(`Unknown GS misc address: ${a}`)};this.#R.add([66,18,64,16],(t,i)=>{l(t,e.chRedir(9,i,!0),i)}).add([66,18,64,17],(t,i)=>{l(t,e.chRedir(0,i,!0),i)}).add([66,18,64,18],(t,i)=>{l(t,e.chRedir(1,i,!0),i)}).add([66,18,64,19],(t,i)=>{l(t,e.chRedir(2,i,!0),i)}).add([66,18,64,20],(t,i)=>{l(t,e.chRedir(3,i,!0),i)}).add([66,18,64,21],(t,i)=>{l(t,e.chRedir(4,i,!0),i)}).add([66,18,64,22],(t,i)=>{l(t,e.chRedir(5,i,!0),i)}).add([66,18,64,23],(t,i)=>{l(t,e.chRedir(6,i,!0),i)}).add([66,18,64,24],(t,i)=>{l(t,e.chRedir(7,i,!0),i)}).add([66,18,64,25],(t,i)=>{l(t,e.chRedir(8,i,!0),i)}).add([66,18,64,26],(t,i)=>{l(t,e.chRedir(10,i,!0),i)}).add([66,18,64,27],(t,i)=>{l(t,e.chRedir(11,i,!0),i)}).add([66,18,64,28],(t,i)=>{l(t,e.chRedir(12,i,!0),i)}).add([66,18,64,29],(t,i)=>{l(t,e.chRedir(13,i,!0),i)}).add([66,18,64,30],(t,i)=>{l(t,e.chRedir(14,i,!0),i)}).add([66,18,64,31],(t,i)=>{l(t,e.chRedir(15,i,!0),i)}).add([66,18,64,64],(t,i)=>{o(t,e.chRedir(9,i,!0))}).add([66,18,64,65],(t,i)=>{o(t,e.chRedir(0,i,!0))}).add([66,18,64,66],(t,i)=>{o(t,e.chRedir(1,i,!0))}).add([66,18,64,67],(t,i)=>{o(t,e.chRedir(2,i,!0))}).add([66,18,64,68],(t,i)=>{o(t,e.chRedir(3,i,!0))}).add([66,18,64,69],(t,i)=>{o(t,e.chRedir(4,i,!0))}).add([66,18,64,70],(t,i)=>{o(t,e.chRedir(5,i,!0))}).add([66,18,64,71],(t,i)=>{o(t,e.chRedir(6,i,!0))}).add([66,18,64,72],(t,i)=>{o(t,e.chRedir(7,i,!0))}).add([66,18,64,73],(t,i)=>{o(t,e.chRedir(8,i,!0))}).add([66,18,64,74],(t,i)=>{o(t,e.chRedir(10,i,!0))}).add([66,18,64,75],(t,i)=>{o(t,e.chRedir(11,i,!0))}).add([66,18,64,76],(t,i)=>{o(t,e.chRedir(12,i,!0))}).add([66,18,64,77],(t,i)=>{o(t,e.chRedir(13,i,!0))}).add([66,18,64,78],(t,i)=>{o(t,e.chRedir(14,i,!0))}).add([66,18,64,79],(t,i)=>{o(t,e.chRedir(15,i,!0))}),this.#D.add([54,65],(t,i)=>{e.switchMode("x5d");let a=(t[1]<<7)+t[0],s=(t[3]<<7)+t[2],r=e.chRedir(a&15,i,!0),h=g.cc*r;[()=>{s<1||(s<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=s-1,e.#e[h+u[0]]=82):s<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=s-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#a[r]=be[s-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=s},()=>{s<31&&(e.#e[h+u[10]]=Math.round((s-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(s)},()=>{e.#e[h+u[91]]=D(s)},()=>{e.#r[r*g.rpn+3]=s>8191?s-16320:64+s},()=>{e.#r[r*g.rpn+1]=s>8191?s-16320:64+s},()=>{s>0&&(e.#r[r*g.rpn]=s)},()=>{}][a>>4]()}).add([54,76,0],(t,i)=>{e.switchMode("x5d",!0);let a="",s=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{d+=` +${s} ${r} ${h} ${a.trim().replace("Init Voice","")}`,r++,a="";break}}r>99&&(s=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,i)=>{e.switchMode("x5d",!0);let a="",s=90,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{d+=` +${s} ${r} ${h} ${a.trim().replace("Init Combi","")}`,r++,a="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,i)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,i)=>{e.switchMode("x5d",!0),S(t,(a,s)=>{s>0&&s<3&&e.setEffectType(s-1,44,a)})}).add([54,104],(t,i)=>{e.switchMode("x5d",!0),S(t,function(a,s,r,h){if(s<192){let d=e.chRedir(Math.floor(s/12),i,!0),c=d*g.cc;switch(s%12){case 0:{a<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#a[d]=a):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#a[d]=be[a-128]),a>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=a;break}case 2:{e.#r[d*g.rpn+3]=a>127?a-192:64+a;break}case 3:{e.#r[d*g.rpn+1]=a>127?a-192:64+a;break}case 4:{a<31&&(e.#e[c+u[10]]=Math.round((a-15)*4.2+64));break}case 5:{let f=a>>4,p=a&15;e.#e[c+u[91]]=D(p),e.#e[c+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(a&15,i,!0),p=a>>4;e.#c[d]=a,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(s-192,i,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#U[c+(s-1)*16]=h,([!1,()=>{let f=e.#U[s-1<<4];if(f<3)if(e.#C[s]=1,f==2)for(let p=0;p{e.#r[s*g.rpn+3]=h+40},()=>{e.#r[s*g.rpn+1]=h+14},()=>{e.#r[s*g.rpn]=h},!1,()=>{e.#e[g.cc*s+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*s+u[7]]=h},()=>{e.#e[g.cc*s+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0)}).add([22,18,2],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0),r=t[1]+(t[0]<<7);r<10&&(e.#C[s]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#k[(s-1)*g.cmt+c]=h)})}).add([22,18,3],(t,i,a)=>{if(e.switchMode("mt32"),t[0]){let s=t[1]-16}else{let s=t[1];t.subarray(2).forEach((r,h)=>{let d=h+s;e.#U[d]=r;let c=e.chRedir(1+d>>4,i,!0),f=d&15;([!1,()=>{let p=e.#U[c-1<<4];if(p<3)if(e.#C[c]=1,p==2)for(let b=0;b{e.#r[c*g.rpn+3]=r+40},()=>{e.#r[c*g.rpn+1]=r+14},()=>{e.#r[c*g.rpn]=r},!1,()=>{e.#e[g.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[g.cc*c+u[7]]=r},()=>{e.#e[g.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,i,a)=>{e.switchMode("mt32");let s=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+s,c=e.chRedir(Math.floor(d/246+1),i,!0),f=d%246;f<14&&(e.#k[(c-1)*g.cmt+f]=r),f<10&&(e.#C[c]=1)})}).add([22,18,5],(t,i,a)=>{e.switchMode("mt32");let s=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=s+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME +000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,i,a)=>{e.switchMode("mt32");let s=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=s+h;d>1)*g.cmt+d]=r)})}).add([22,18,16],(t,i,a)=>{e.switchMode("mt32");let s=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+s;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let i=t[1],a=" ".repeat(i);t.subarray(2).forEach(s=>{s>31&&(a+=String.fromCharCode(s))}),e.#M=a.padStart(20," "),e.#L=Date.now()+3200}).add([22,18,82],(t,i)=>{let a=e.chRedir(0,i,!0);for(let s=0;s<16;s++)e.#u.ano(a+s),s&&s<10&&(e.#a[a+s]=V[s-1]);console.info("MT-32 alt reset complete.")}),this.#D.add([66,0],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,i)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,i)=>{let a=t[0];switch(a){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(a<10){let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][a+d]()}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,i)=>{}).add([66,18,0,2],(t,i)=>{}).add([66,18,1],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=a*g.cc,r=t[1],h=`NS5R CH${a+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[s+u[0]]=d||121},()=>{e.#e[s+u[32]]=d},()=>{e.#a[a]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[a]=+!d},()=>{e.setChType(a,d,m.ns5r),console.debug(`${h}type: ${P[d]}`)},()=>{e.#r[g.rpn*a+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[s+u[7]]=d},()=>{e.#e[s+u[11]]=d},()=>{},()=>{},()=>{e.#e[s+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[s+u[93]]=d},()=>{e.#e[s+u[91]]=d},()=>{e.#e[s+u[76]]=d},()=>{e.#e[s+u[77]]=d},()=>{e.#e[s+u[78]]=d},()=>{e.#e[s+u[74]]=d},()=>{e.#e[s+u[71]]=d},()=>{e.#e[s+u[73]]=d},()=>{e.#e[s+u[75]]=d},()=>{e.#e[s+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[s+u[5]]=d},()=>{e.#e[s+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,i)=>{let a=t[0];if(a<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let s=a-32;e.#h=Date.now()+3200,e.#o=10,e.#g.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+s,p=f>>4,b=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#g[b*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1;let a="";S(t,(s,r)=>{r<8?(s>31&&(a+=String.fromCharCode(s)),r==7&&(e.aiEfxName=a)):r<10&&e.setEffectType(r-8,44,s)})}).add([66,53],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(a,s){switch(!0){case s<2944:{let r=e.chRedir(Math.floor(s/92),i,!0),h=r*g.cc;switch(s%92){case 0:{e.#e[h+u[0]]=a||121;break}case 1:{e.#e[h+u[32]]=a;break}case 2:{e.#a[r]=a,a>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(a,i,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*g.rpn+3]=a<40||a>88?a+(a>63?-192:64):a;break}case 9:case 10:{e.#e[h+u[7]]=a;break}case 11:{e.#e[h+u[11]]=a;break}case 14:{e.#e[h+u[10]]=a||128;break}case 19:{e.#e[h+u[93]]=a;break}case 20:{e.#e[h+u[91]]=a;break}case 84:{e.#e[h+u[65]]=a;break}case 85:{e.#e[h+u[5]]=a;break}}break}case s<3096:break;case s<3134:break;case s<8566:break}})}).add([66,54],(t,i)=>{e.switchMode("ns5r",!0);let a="",s=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{s=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` +${s} ${r} ${h} ${a.trim().replace("Init Voice","")}`,r++,a="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,i)=>{e.switchMode("ns5r",!0);let a="",s=88,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%126;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:break;case p==12:break;case p==13:{d+=` +${s} ${r} ${h} ${a.trim().replace("Init Combi","")}`,r++,a="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let i=new Uint8Array(5760);S(t,(a,s,r)=>{if(s<720)for(let h=0;h<8;h++)i[s*8+h]=a>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:i})}).add([76],(t,i,a)=>{e.#D.run([66,...t],i,a)}),this.#V.add([16,0,8,0],(t,i,a)=>{let s=(t[2]<<4)+t[3],r="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#S=s?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,i,a)=>{let s=e.chRedir(t[1],i,!0),r=g.cc*s,h=g.rpn*s,d=(t[3]<<4)+t[4],c=`K11 CH${s+1} `;([()=>{d<128?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[r+u[0]]=0,e.#a[s]=d):(e.setChType(s,e.CH_DRUMS,m.k11),e.#a[s]=d-128)},()=>{let f=e.chRedir(d,i,!0);e.#c[s]=f,s!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[r+u[7]]=d},()=>{e.#n[s]=d},()=>{e.#e[r+u[10]]=d},()=>{e.#r[h+3]=d+40},()=>{e.#r[h+1]=d>>1,e.#r[h+2]=d&1},()=>{e.#e[r+u[91]]=d?127:0},()=>{},()=>{e.#e[r+u[74]]=d},()=>{e.#e[r+u[73]]=d},()=>{e.#e[r+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,i,a)=>{let s=(t[2]<<4)+t[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,i,a)=>{let s=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc;[()=>{s<128?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#a[r]=s):s<160?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#a[r]=s-100):(e.setChType(r,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#a[r]=s-160)},()=>{let d=e.chRedir(s,i,!0);e.#c[r]=d,r!=d&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,i,a)=>{let s=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc,d=r*g.rpn,c=`GMLX CH${r+1} `;[()=>{e.#n[r]=s},()=>{e.#e[h+u[7]]=s},()=>{e.#e[h+u[10]]=s},()=>{e.#e[h+u[91]]=s?127:0},()=>{e.#r[d+3]=s+40},()=>{e.#r[d+1]=s},()=>{e.#r[d]=s},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,i,a)=>{let s=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=s*129/16383*100;break}case 5:{s-64;break}case 6:{console.debug(`SG global reverb: ${s?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[s]}`);break}}break}default:if(t[0]>>4==1){let r=e.chRedir(t[0]&15,i,!0);if(t[1]==2){let h=e.chRedir(s,i,!0);e.#c[r]=h,r!=h&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*r+u[7]]=s)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,i,a)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#E.add([127,0],(t,i,a)=>{e.switchMode("motif");let s=new Uint8Array([127,1,...t]);e.#E.run(s,i,a)}).add([127,1,0,0],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES system ",r=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][r+d]||(()=>{console.info(`Unrecognized ${s}ID: ${r+d}`)}))()})}).add([127,1,0,0,14],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES bulk header ",r=[];r[95]=(h,d,c)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES bulk footer ",r=[];r[95]=(h,d,c)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,i,a)=>{e.switchMode("s90es");let s=e.chRedir(t[0],i,!0),r=g.cc*s,h=t[1],d=`S90/Motif ES bulk CH${s<16?s+1:"U"+(s-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[r+u[0]]=c},()=>{c&&(e.#n[s]=1),e.#e[r+u[32]]=c,e.#i[s]=this.setChType(s,[32,40].indexOf(c)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{c&&(e.#n[s]=1),e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[s]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[r+u[7]]=c},()=>{e.#e[r+u[10]]=c},!1,!1,!1,()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[128]]=c},()=>{},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},!1,()=>{e.#e[r+u[65]]=c},()=>{e.#e[r+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,i,a)=>{e.switchMode("s90es");let s=t[0];t.subarray(1).forEach((r,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=r-64},()=>{let f=C[r]},()=>{let f=r/10},()=>{let f=r}][s+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,l,o){this.#t=e,this.start=n,this.end=l,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,l){super(!0,e,n,l)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let l=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(l.push(i),t.#t=i.index)})}return l}getRange(e,n){e>n&&([e,n]=[n,e]);let l=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),i=!0;for(let a=0;a=e&&(o=a):o=o<0?a:o;for(;i;)this[o]?.end=e&&l.push(this[o]):i=!1,o++;return l}};var _e=0xffffffffffff,ve=function(e){let n=new Q,l=this,o=e.timeDivision,t=120,i=new Q,a=0,s=0;i.push(new q(0,_e,[120,0])),e.track.forEach(function(c){a=0,c.event.forEach(function(f){a+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,i[i.length-1]&&i.push(new q(a,0xffffffffffff,[t,0])))})}),i.fresh(),i.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let r=120;i.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):r==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),r=c.data[0])});let h=0,d=120;return i.forEach(function(c){let f=c.start,p=f/d/o*60+h;d=c.data[0],h=p-f/d/o*60,c.data[1]=h}),console.debug("All tempo changes: ",i),t=120,a=0,s=0,e.track.forEach(function(c,f){a=0,s=0;let p=f+1;c.event.forEach(function(b,y){a+=b.deltaTime;let $=i.step(a,!0)[0];$&&(t=$.data[0],s=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(a/t/o*60+s,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends U{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#c=120;#i=4;#e=4;#b=0;#a=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#i=4,this.#e=4,this.#b=0,this.#a=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#a/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#i)}get noteBeat(){let e=this.noteOverall%this.#i;return e<0&&(e+=this.#i),e}getTimeSig(){return[this.#i,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#a&&(this.#a=e);let n=this.#t?.step(e)||[],l=0,o=new Set,t=this,i=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&l++),y.data.type==8&&o.has($.part*128+$.data[0])&&l++;let w=t.device.runJson($);switch(w?.reply){case"meta":{i.push(w);break}}w?.reply&&delete w.reply}),i?.length>0&&this.dispatchEvent("meta",i);let a=this.device.getActive(),s=[],r=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let M=w[$]-t.#p[$],Y=u.length*$;if(M>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(M-M*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(M-M*t.smoothingDcy**L)}});let p=0;return a.forEach(function(y,$){y&&(s[$]=t.device.getVel($),p+=s[$].size)}),{extraPoly:l,curPoly:p,chInUse:a,chKeyPr:s,chPitch:r,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,l=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=l,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(i){(o.#h[i.meta]||console.debug).call(o,i.meta,i.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,i){o.#o?.length<1&&(o.#o=i)},this.#h[81]=function(t,i){let a=o.noteProgress,s=o.#n||.5;o.#c=6e7/i,o.#n=i/1e6,o.#b+=a*(s/o.#n)-a},this.#h[88]=function(t,i){let a=o.noteProgress,s=o.noteOverall,r=o.noteBar,h=o.noteBeat,d=o.#i,c=o.#e;o.#i=i[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,s=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[l%12]*this.noteHeight;if(o>0)switch(i.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,i.fillRect(a+1,s+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{i.clearRect(a+1+this.noteOutline,s+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let l=super.render(n),o=this,t=this.context,i=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let a=metrics.actualBoundingBoxLeft,s=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${l.eventCount.toString().padStart(3,"0")} ${(l.curPoly+l.extraPoly).toString().padStart(3,"0")}/512 ${l.tSig[0].toString().padStart(2," ")}/${l.tSig[1].toString().padEnd(2," ")} ${(l.noteBar+1).toString().padStart(3," ")}:${Math.floor(l.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(l.tempo).toString().padStart(3," ")}.${Math.floor(l.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(l.master.volume).toString().padStart(3," ")}.${Math.floor(l.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+a,s+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+a,s+o.fontPadding+o.lineHeight*2),l.chKeyPr.forEach((r,h)=>{r.forEach((d,c)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&r.part1?32:16)),c=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+a+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(c.name,o.fontPadding+a+(r>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+r%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(l.chContr[f+u[p]]/-127))})}}l.letter.expire<=i,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let r=0;r<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+r%(this.mode>1?32:16)),o.noteWidth*16*(l.strength[h]/255),o.lineHeight-1)}for(let r in o.eventBuffer)delete o.eventBuffer[r];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let l=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,i=t.part*128+t.note,a=this.eventBuffer[i];this.eventBuffer[i]=t,a?.velo>0&&t.velo==0&&this.eventQueue.push(a)})}},Dt=Fe;export{Dt as default}; diff --git a/dist/state.mjs b/dist/state.mjs index 8d49a908..5b492516 100644 --- a/dist/state.mjs +++ b/dist/state.mjs @@ -1,4 +1,4 @@ -var X=function(e,n){let l=Math.min(e.length,n.length),f=e.slice(0,l),t=n.slice(0,l),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(o,c,h){i&&o!=n[c]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||l?a:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...l):this.pool[f].data(n.slice(this.pool[f].length),...l):this.default(n,...l)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),f=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,l)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](l)}};var ce=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},H=class{#t;strictMode=!1;get(e=0,n=0,l=0,f){let t=[e,n,l],a,r=Array.from(arguments);switch(f){case"xg":{e==32?r[2]+=4:e==33||e==35||e==36?r[2]+=5:e==79?r[0]=95:e==80?r[0]=96:e==81?r[0]=97:e==82?r[0]=98:e==83?r[0]=99:e==84&&(r[0]=100);break}case"gs":{e==0&&l<5?r[2]=0:e>125&&l<5&&l!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&l==0&&(r[2]=5);break}case"s90es":{l<8?r[2]+=17:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{l<8?r[2]+=28:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",o=!1,c=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",o=!0);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,o=!0;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(c=63),o=!0;break}case 97:{s="VL:",o=!0,c=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(c=63),o=!0;break}case 100:{s="AN",r[2]>63&&(c=63),o=!0;break}case 121:{s=`GM-${r[2]?"":"a"}`,o=!0;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${(o?l:e)-c}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${l}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<120?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(l||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,l){let f=this,t=[],a=0,r=0;e.split(` +var X=function(e,n){let l=Math.min(e.length,n.length),f=e.slice(0,l),t=n.slice(0,l),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(o,c,h){i&&o!=n[c]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||l?a:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...l):this.pool[f].data(n.slice(this.pool[f].length),...l):this.default(n,...l)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),f=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,l)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](l)}};var ce=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},H=class{#t;strictMode=!1;get(e=0,n=0,l=0,f){let t=[e,n,l],a,r=Array.from(arguments);switch(f){case"xg":{e==32?r[2]+=4:e==33||e==35||e==36?r[2]+=5:e==79?r[0]=95:e==80?r[0]=96:e==81?r[0]=97:e==82?r[0]=98:e==83?r[0]=99:e==84&&(r[0]=100),l==126?r[2]=125:l==127&&(r[2]=0);break}case"gs":{e==0&&l<5?r[2]=0:e>125&&l<5&&l!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&l==0&&(r[2]=5);break}case"s90es":{l<8?r[2]+=17:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{l<8?r[2]+=28:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",o=!1,c=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",o=!0);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,o=!0;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(c=63),o=!0;break}case 97:{s="VL:",o=!0,c=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(c=63),o=!0;break}case 100:{s="AN",r[2]>63&&(c=63),o=!0;break}case 121:{s=`GM-${r[2]?"":"a"}`,o=!0;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${(o?l:e)-c}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${l}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(l||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,l){let f=this,t=[],a=0,r=0;e.split(` `).forEach(function(i,s){let o=i.split(" "),c=[];s==0?o.forEach(function(h,b){t[ce.indexOf(h)]=b}):o.forEach(async function(h,b){b>2?(f.#t[c[t[1]]]=f.#t[c[t[1]]]||[],(!f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]?.length||n)&&(f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]=o[3],a++),r++):c.push(parseInt(o[b]))})}),n||console.debug(`Map "${l||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,f){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let l=!0;return n.forEach((f,t)=>{l=l&&e[t]==f}),l},V=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},R=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],o=0;for(;i;){let c=n.subarray(a);([()=>{R.decode(c.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(c.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=R.decode(c.subarray(0,4)),b=V(c.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[o],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;${let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{e==32?a[2]+=4:e==33||e==35||e==36?a[2]+=5:e==79?a[0]=95:e==80?a[0]=96:e==81?a[0]=97:e==82?a[0]=98:e==83?a[0]=99:e==84&&(a[0]=100);break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=!1,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=!0);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=!0;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=!0;break}case 97:{c="VL:",u=!0,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=!0;break}case 100:{c="AN",a[2]>63&&(f=63),u=!0;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=!0;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${(u?s:e)-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<120?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` +`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{e==32?a[2]+=4:e==33||e==35||e==36?a[2]+=5:e==79?a[0]=95:e==80?a[0]=96:e==81?a[0]=97:e==82?a[0]=98:e==83?a[0]=99:e==84&&(a[0]=100),s==126?a[2]=125:s==127&&(a[2]=0);break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=!1,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=!0);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=!0;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=!0;break}case 97:{c="VL:",u=!0,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=!0;break}case 100:{c="AN",a[2]>63&&(f=63),u=!0;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=!0;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${(u?s:e)-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` `).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],B=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],I={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},H=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#I=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#H=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],H[i][0]),H[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#G.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#B.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#G;#B;#J;buildRchTree(){let e=[];this.#I.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG 0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#H.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#I.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#H.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=B[0][s],this.#u=B[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${I[e.type]?I[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index 76539cba..b1a40871 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -1,4 +1,4 @@ -var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(m=h[o])!=null&&m.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:m}),d++,d>4294967295&&(d=0)}else b.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var m=b.shift();s.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=f&&s.dispatchEvent(u("message",m.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(m.c,"."))};var v={};this.dispatchEvent=function(m){var x,A;if(Object.defineProperty(m,"target",{value:s}),Object.defineProperty(m,"currentTarget",{value:s}),(x=v[m.type])!=null&&x.length)for(var V=v[m.type],ae=0;ae-1&&v[m].splice(ae,1)}!((V=v[m])!=null&&V.length)&&v[m].constructor&&delete v[m]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||m>127&&m<160)throw new RangeError(`Invalid code point: ${m}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof Et<"u")Et.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){E(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){E(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{u==32?a[2]+=4:u==33||u==35||u==36?a[2]+=5:u==79?a[0]=95:u==80?a[0]=96:u==81?a[0]=97:u==82?a[0]=98:u==83?a[0]=99:u==84&&(a[0]=100);break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=!1,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=!0);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=!0;break}case 97:{i="VL:",s=!0,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=!0;break}case 100:{i="AN",a[2]>63&&(f=63),s=!0;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(s?n:u)-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<120?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` +var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(m=h[o])!=null&&m.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:m}),d++,d>4294967295&&(d=0)}else b.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var m=b.shift();s.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=f&&s.dispatchEvent(u("message",m.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(m.c,"."))};var v={};this.dispatchEvent=function(m){var x,A;if(Object.defineProperty(m,"target",{value:s}),Object.defineProperty(m,"currentTarget",{value:s}),(x=v[m.type])!=null&&x.length)for(var V=v[m.type],ae=0;ae-1&&v[m].splice(ae,1)}!((V=v[m])!=null&&V.length)&&v[m].constructor&&delete v[m]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||m>127&&m<160)throw new RangeError(`Invalid code point: ${m}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof Et<"u")Et.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){E(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){E(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{u==32?a[2]+=4:u==33||u==35||u==36?a[2]+=5:u==79?a[0]=95:u==80?a[0]=96:u==81?a[0]=97:u==82?a[0]=98:u==83?a[0]=99:u==84&&(a[0]=100),n==126?a[2]=125:n==127&&(a[2]=0);break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=!1,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=!0);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=!0;break}case 97:{i="VL:",s=!0,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=!0;break}case 100:{i="AN",a[2]>63&&(f=63),s=!0;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(s?n:u)-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` `).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);R();R();var Ge,Ot,Pt=(Ot=class{constructor(){E(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Dt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Pt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Dt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Dt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;ye in u?Rt(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var M=(u,e,n)=>(Ot(u,typeof e!="symbol"?e+"":e,n),n),st=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(st(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,c)=>(st(u,e,"write to private field"),c?c.call(u,n):e.set(u,n),n);(function(){var u=function(o,i,a){var l,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:a==null?void 0:a.ports}),Object.defineProperty(h,"source",{value:a==null?void 0:a.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),a&&o=="message"&&(h.data=i,a.source&&Object.defineProperty(h,"source",{value:a.source}),(l=a.ports)!=null&&l.length&&Object.defineProperty(h,"ports",{value:a.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],c={},d=function(o){var i,a=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=c[o])!=null&&i.constructor||(c[o]=[]),c[o].push(this);var l=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return l}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(a);B>-1?(e.postMessage({t:"d",c:o,i:l}),n.splice(B,1),(m=c[o])!=null&&m.constructor&&(B=c[o].indexOf(a),B>-1&&c[o].splice(B,1)),c[o].length||delete c[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:l,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:l}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();a.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=l&&a.dispatchEvent(u("message",m.d,{source:a})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(l," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:a}),Object.defineProperty(m,"currentTarget",{value:a}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var a=i.data,l=!1;switch(a.t){case"k":{l=!1,e.postMessage({t:"k"});break}case"m":{var h=c[a.c];if(h!=null&&h.length)for(var f=0;f{switch(c.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),c.addEventListener("error",r=>{s(c.error||r.data||new Error("Blob read error"))}),c.addEventListener("load",()=>{d(c.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{c.readAsArrayBuffer(e);break}case"string":case"text":{c.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,c=16,d=this,s=[];for(;n-1;){let r=d.lastIndexOf(u);s.unshift(d.slice(r+u.length)),d=d.slice(0,r),r==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length0){let c=this.pool.length,d=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(s==c)s-=d;else{let i=rt(e,this.pool[s]);switch(i){case 0:{r=0;break}case 1:{s+d<=c&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,r--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(a,l,h){o&&a!=e[l]&&(o=!1)}),!o&&rt(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let c=this.point(e);c>-1?e.subarray?this.pool[c].data(e.subarray(this.pool[c].length),...n):this.pool[c].data(e.slice(this.pool[c].length),...n):this.default(e,...n)}};var I,at,it=(at=class{constructor(){E(this,I,{})}addEventListener(u,e){t(this,I)[u]||(t(this,I)[u]=[]),t(this,I)[u].unshift(e)}removeEventListener(u,e){if(t(this,I)[u]){let n=t(this,I)[u].indexOf(e);n>-1&&t(this,I)[u].splice(n,1),t(this,I)[u].length<1&&delete t(this,I)[u]}}dispatchEvent(u,e){var d;let n=new Event(u),c=this;n.data=e,((d=t(this,I)[u])==null?void 0:d.length)>0&&t(this,I)[u].forEach(function(s){try{s==null||s.call(c,n)}catch(r){console.error(r)}}),this[`on${u}`]&&this[`on${u}`](n)}},I=new WeakMap,at);var Dt=["MSB","PRG","LSB"],Qe=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...u){E(this,F,void 0);M(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,c){let d=[u,e,n],s,r=Array.from(arguments);switch(c){case"xg":{u==32?r[2]+=4:u==33||u==35||u==36?r[2]+=5:u==79?r[0]=95:u==80?r[0]=96:u==81?r[0]=97:u==82?r[0]=98:u==83?r[0]=99:u==84&&(r[0]=100);break}case"gs":{u==0&&n<5?r[2]=0:u>125&&n<5&&n!=2&&(r[2]=u,r[0]=0);break}case"sg":{u==8&&n==0&&(r[2]=5);break}case"s90es":{n<8?r[2]+=17:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{n<8?r[2]+=28:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let o=" ",i="M",a=!1,l=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||c=="gs"&&r[2]<5?i="GM-a":(i="y",a=!0);break}case 8:{c=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,a=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let y=r[2];i=y<10?"kP:":"kC:",i+=y%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),a=!0;break}case 97:{i="VL:",a=!0,l=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(l=63),a=!0;break}case 100:{i="AN",r[2]>63&&(l=63),a=!0;break}case 121:{i=`GM-${r[2]?"":"a"}`,a=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(a?n:u)-l}`.padStart(4-i.length,"0")),c=="xg"&&u==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[r[0],r[1],r[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):(r[2]--,o="^"):u==48?(r[0]=0,r[2]=0,o="!"):u==62?(r[1]--,o=" ",r[1]<1&&!(s!=null&&s.length)&&(r[0]=0,o="!")):u<63?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):r[2]--:u==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(s=`GM2Vox0${n}`,o="#"):u==122?(r[1]==32?r[1]==0:r[1]%=7,s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s?o=" ":(s="",o="*")):r[1]==0?(s=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):r[0]==0?(r[2]=0,o="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,o="!"):(r[0]=0,o="?"));let f=[r[0],r[1],r[2]];(c=="gs"||c=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(r[0]){case 0:{r[2]==0?g="GM":r[2]==5||r[2]==7?g="KG":r[2]<120?g="XG":r[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{r[2]<17?g="KR":r[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][r[2]];break}case 96:{g=r[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=r[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=r[2]==127?"MT":e==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&c=="xg"?g="XG":g="GS")}return{name:s||`${Qe(u||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(u,e,n){let c=this,d=[],s=0,r=0;u.split(` +var Rt=Object.defineProperty;var Ot=(u,e,n)=>e in u?Rt(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var M=(u,e,n)=>(Ot(u,typeof e!="symbol"?e+"":e,n),n),st=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(st(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,c)=>(st(u,e,"write to private field"),c?c.call(u,n):e.set(u,n),n);(function(){var u=function(o,i,a){var l,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:a==null?void 0:a.ports}),Object.defineProperty(h,"source",{value:a==null?void 0:a.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),a&&o=="message"&&(h.data=i,a.source&&Object.defineProperty(h,"source",{value:a.source}),(l=a.ports)!=null&&l.length&&Object.defineProperty(h,"ports",{value:a.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],c={},d=function(o){var i,a=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=c[o])!=null&&i.constructor||(c[o]=[]),c[o].push(this);var l=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return l}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(a);B>-1?(e.postMessage({t:"d",c:o,i:l}),n.splice(B,1),(m=c[o])!=null&&m.constructor&&(B=c[o].indexOf(a),B>-1&&c[o].splice(B,1)),c[o].length||delete c[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:l,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:l}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();a.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=l&&a.dispatchEvent(u("message",m.d,{source:a})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(l," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:a}),Object.defineProperty(m,"currentTarget",{value:a}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var a=i.data,l=!1;switch(a.t){case"k":{l=!1,e.postMessage({t:"k"});break}case"m":{var h=c[a.c];if(h!=null&&h.length)for(var f=0;f{switch(c.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),c.addEventListener("error",r=>{s(c.error||r.data||new Error("Blob read error"))}),c.addEventListener("load",()=>{d(c.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{c.readAsArrayBuffer(e);break}case"string":case"text":{c.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,c=16,d=this,s=[];for(;n-1;){let r=d.lastIndexOf(u);s.unshift(d.slice(r+u.length)),d=d.slice(0,r),r==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length0){let c=this.pool.length,d=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(s==c)s-=d;else{let i=rt(e,this.pool[s]);switch(i){case 0:{r=0;break}case 1:{s+d<=c&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,r--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(a,l,h){o&&a!=e[l]&&(o=!1)}),!o&&rt(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let c=this.point(e);c>-1?e.subarray?this.pool[c].data(e.subarray(this.pool[c].length),...n):this.pool[c].data(e.slice(this.pool[c].length),...n):this.default(e,...n)}};var I,at,it=(at=class{constructor(){E(this,I,{})}addEventListener(u,e){t(this,I)[u]||(t(this,I)[u]=[]),t(this,I)[u].unshift(e)}removeEventListener(u,e){if(t(this,I)[u]){let n=t(this,I)[u].indexOf(e);n>-1&&t(this,I)[u].splice(n,1),t(this,I)[u].length<1&&delete t(this,I)[u]}}dispatchEvent(u,e){var d;let n=new Event(u),c=this;n.data=e,((d=t(this,I)[u])==null?void 0:d.length)>0&&t(this,I)[u].forEach(function(s){try{s==null||s.call(c,n)}catch(r){console.error(r)}}),this[`on${u}`]&&this[`on${u}`](n)}},I=new WeakMap,at);var Dt=["MSB","PRG","LSB"],Qe=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...u){E(this,F,void 0);M(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,c){let d=[u,e,n],s,r=Array.from(arguments);switch(c){case"xg":{u==32?r[2]+=4:u==33||u==35||u==36?r[2]+=5:u==79?r[0]=95:u==80?r[0]=96:u==81?r[0]=97:u==82?r[0]=98:u==83?r[0]=99:u==84&&(r[0]=100),n==126?r[2]=125:n==127&&(r[2]=0);break}case"gs":{u==0&&n<5?r[2]=0:u>125&&n<5&&n!=2&&(r[2]=u,r[0]=0);break}case"sg":{u==8&&n==0&&(r[2]=5);break}case"s90es":{n<8?r[2]+=17:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{n<8?r[2]+=28:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let o=" ",i="M",a=!1,l=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||c=="gs"&&r[2]<5?i="GM-a":(i="y",a=!0);break}case 8:{c=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,a=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let y=r[2];i=y<10?"kP:":"kC:",i+=y%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),a=!0;break}case 97:{i="VL:",a=!0,l=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(l=63),a=!0;break}case 100:{i="AN",r[2]>63&&(l=63),a=!0;break}case 121:{i=`GM-${r[2]?"":"a"}`,a=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(a?n:u)-l}`.padStart(4-i.length,"0")),c=="xg"&&u==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[r[0],r[1],r[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):(r[2]--,o="^"):u==48?(r[0]=0,r[2]=0,o="!"):u==62?(r[1]--,o=" ",r[1]<1&&!(s!=null&&s.length)&&(r[0]=0,o="!")):u<63?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):r[2]--:u==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(s=`GM2Vox0${n}`,o="#"):u==122?(r[1]==32?r[1]==0:r[1]%=7,s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s?o=" ":(s="",o="*")):r[1]==0?(s=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):r[0]==0?(r[2]=0,o="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,o="!"):(r[0]=0,o="?"));let f=[r[0],r[1],r[2]];(c=="gs"||c=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(r[0]){case 0:{r[2]==0?g="GM":r[2]==5||r[2]==7?g="KG":r[2]<126?g="XG":r[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{r[2]<17?g="KR":r[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][r[2]];break}case 96:{g=r[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=r[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=r[2]==127?"MT":e==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&c=="xg"?g="XG":g="GS")}return{name:s||`${Qe(u||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(u,e,n){let c=this,d=[],s=0,r=0;u.split(` `).forEach(function(o,i){let a=o.split(" "),l=[];i==0?a.forEach(function(h,f){d[Dt.indexOf(h)]=f}):a.forEach(async function(h,f){var g;f>2?(t(c,F)[l[d[1]]]=t(c,F)[l[d[1]]]||[],(!((g=t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]])!=null&&g.length)||e)&&(t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]]=a[3],s++),r++):l.push(parseInt(a[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${r} total, ${s} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],c=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let r=c[0];r<=c[1];r++){let o=s+r;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let u=0;u<128;u++)t(this,F).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,c){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,lt=(ot=class{constructor(){E(this,Oe,{});M(this,"context")}set(u,e){t(this,Oe)[u]=e}has(u){return!!t(this,Oe)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Oe)[u].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(u,e){let n=!0;return e.forEach((c,d)=>{n=n&&u[d]==c}),n},ct=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new lt;Ve.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",c=[0,0,0,0],d=32,s=0,r=0,o=!0,i=[],a=0;for(;o;){let l=e.subarray(s);([()=>{Le.decode(l.subarray(0,4))=="YSFC"?(s+=80,r=1):s++},()=>{if(Pt(l.subarray(0,4),c))i.forEach((h,f,g)=>{let y=ct(e.subarray(h.start+4,h.start+8));h.length=y}),r=2;else{let h=Le.decode(l.subarray(0,4)),f=ct(l.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[a],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;y 9 && ri < 16) { - // Octavia custom SysEx + // Octavia custom SysEx, starts from 10 [() => { upThis.dispatchEvent("channelactive", e); }, () => { From c3dfb69754b40410759fb7e0b31b8c7d63343a6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 30 May 2023 14:20:28 +0000 Subject: [PATCH 09/31] =?UTF-8?q?MU100=20Native=20+=20No=20more=20Schr?= =?UTF-8?q?=C3=B6dinger's=20font.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dist/basic.mjs | 8 ++-- dist/cambiare.mjs | 26 ++++++------- dist/state.mjs | 26 ++++++------- dist/state_skim.mjs | 2 +- dist/xp_basic.mjs | 20 +++++----- dist/xp_state.mjs | 22 +++++------ src/basic/mxReader.js | 16 +++++--- src/fakeMu/index.js | 4 +- src/state/bankReader.js | 85 ++++++++++++++++++++++++++--------------- src/state/index.mjs | 12 ++++-- 10 files changed, 127 insertions(+), 94 deletions(-) diff --git a/dist/basic.mjs b/dist/basic.mjs index a2691fa7..fa93e263 100644 --- a/dist/basic.mjs +++ b/dist/basic.mjs @@ -1,6 +1,6 @@ -var G=Object.create;var O=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var z=(e,i)=>()=>(i||e((i={exports:{}}).exports,i),i.exports);var K=(e,i,o,a)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of F(i))!X.call(e,t)&&t!==o&&O(e,t,{get:()=>i[t],enumerable:!(a=_(i,t))||a.enumerable});return e};var q=(e,i,o)=>(o=e!=null?G(V(e)):{},K(i||!e||!e.__esModule?O(o,"default",{value:e,enumerable:!0}):o,e));var L=z((ze,x)=>{(function(){"use strict";let e={fatal:!0},i=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(a,t){if(a instanceof Uint8Array)return o.Uint8(a);if(typeof a=="string")return o.Base64(a);if(a instanceof HTMLElement&&a.type==="file")return o.addListener(a,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(a,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(a===void 0||!(a instanceof HTMLElement)||a.tagName!=="INPUT"||a.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},a.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let l=new FileReader;l.readAsArrayBuffer(r.target.files[0]),l.onload=function(f){t(o.Uint8(new Uint8Array(f.target.result)))}})},Base64:function(a){let t=function(f){var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(f=f.replace(/^.*?base64,/,""),f=String(f).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(f))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");f+="==".slice(2-(3&f.length));let p,b="",s,n,h=0;for(;h>16&255):n===64?String.fromCharCode(p>>16&255,p>>8&255):String.fromCharCode(p>>16&255,p>>8&255,255&p);return b}(a=String(a));var r=t.length;let l=new Uint8Array(new ArrayBuffer(r));for(let f=0;f{n[c]=this.readInt(1)});for(let u=0;u191||g>127&&g<160)throw new RangeError(`Invalid code point: ${g}`)}h=!0,console.debug(`String byte sequence in ${i[u].encoding}`)}catch(c){console.debug(`SMF string ${c}`)}return d||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let s=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)s=this.readInt(1);else{let h=[];for(;128<=this.data.getUint8(this.pointer);)h.push(this.readInt(1)-128);var n=this.readInt(1);for(let d=1;d<=h.length;d++)s+=h[h.length-d]*Math.pow(128,d);s+=n}return s}};if(t.data=new DataView(l.buffer,l.byteOffset,l.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let r={};r.formatType=t.readInt(2),r.tracks=t.readInt(2),r.track=[];var l=t.readInt(1),f=t.readInt(1);128<=l?(r.timeDivision=[],r.timeDivision[0]=l-128,r.timeDivision[1]=f):r.timeDivision=256*l+f;for(let s=1;s<=r.tracks;s++){r.track[s-1]={event:[]};var $,p=t.readInt(4);if(p===-1)break;if(p!==1297379947)return!1;t.readInt(4);let n=0,h=!1,d,u;for(;!h&&(n++,r.track[s-1].event[n-1]={},r.track[s-1].event[n-1].deltaTime=t.readIntVLV(),(d=t.readInt(1))!==-1);)if(128<=d?u=d:(d=u,t.movePointer(-1)),d===255){r.track[s-1].event[n-1].type=255,r.track[s-1].event[n-1].metaType=t.readInt(1);var b=t.readIntVLV();switch(r.track[s-1].event[n-1].metaType){case 47:case-1:h=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[s-1].event[n-1].data=t.readStr(b);break;case 33:case 89:case 81:r.track[s-1].event[n-1].data=t.readInt(b);break;case 84:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1),r.track[s-1].event[n-1].data[2]=t.readInt(1),r.track[s-1].event[n-1].data[3]=t.readInt(1),r.track[s-1].event[n-1].data[4]=t.readInt(1);break;case 88:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1),r.track[s-1].event[n-1].data[2]=t.readInt(1),r.track[s-1].event[n-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].metaType,t,b)),this.customInterpreter!==null&&r.track[s-1].event[n-1].data!==!1||(t.readInt(b),r.track[s-1].event[n-1].data=t.readInt(b),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((d=d.toString(16).split(""))[1]||d.unshift("0"),r.track[s-1].event[n-1].type=parseInt(d[0],16),r.track[s-1].event[n-1].channel=parseInt(d[1],16),r.track[s-1].event[n-1].type){case 15:this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].type,t,!1)),this.customInterpreter!==null&&r.track[s-1].event[n-1].data!==!1||($=t.readIntVLV(),r.track[s-1].event[n-1].data=t.readInt($),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[s-1].event[n-1].data=[],r.track[s-1].event[n-1].data[0]=t.readInt(1),r.track[s-1].event[n-1].data[1]=t.readInt(1);break;case 12:case 13:r.track[s-1].event[n-1].data=t.readInt(1);break;case-1:h=!0;break;default:if(this.customInterpreter!==null&&(r.track[s-1].event[n-1].data=this.customInterpreter(r.track[s-1].event[n-1].metaType,t,!1)),this.customInterpreter===null||r.track[s-1].event[n-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof x<"u")x.exports=o;else{let a=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;a.MidiParser=o}})()});var k=class{#e={};addEventListener(e,i){this.#e[e]||(this.#e[e]=[]),this.#e[e].unshift(i)}removeEventListener(e,i){if(this.#e[e]){let o=this.#e[e].indexOf(i);o>-1&&this.#e[e].splice(o,1),this.#e[e].length<1&&delete this.#e[e]}}dispatchEvent(e,i){let o=new Event(e),a=this;o.data=i,this.#e[e]?.length>0&&this.#e[e].forEach(function(t){try{t?.call(a,o)}catch(r){console.error(r)}}),this[`on${e}`]&&this[`on${e}`](o)}};var D=class{#e={};context;set(e,i){this.#e[e]=i}has(e){return!!this.#e[e]}async read(e,i){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#e[e].call(this.context||this,i)}};var Q=function(e,i){let o=!0;return i.forEach((a,t)=>{o=o&&e[t]==a}),o},P=function(e){let i=0;return e.forEach(o=>{i*=256,i+=o}),i},w=new TextDecoder,I=new D;I.set("s7e",async function(e){let i=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",a=[0,0,0,0],t=32,r=0,l=0,f=!0,$=[],p=0;for(;f;){let b=i.subarray(r);([()=>{w.decode(b.subarray(0,4))=="YSFC"?(r+=80,l=1):r++},()=>{if(Q(b.subarray(0,4),a))$.forEach((s,n,h)=>{let d=P(i.subarray(s.start+4,s.start+8));s.length=d}),l=2;else{let s=w.decode(b.subarray(0,4)),n=P(b.subarray(4,8));$.push({type:s,start:n}),r+=8}},()=>{let s=$[p],n=i.subarray(s.start,s.start+s.length),h=32;switch(s.type){case"ENVC":{let d=t;for(;d()=>(i||e((i={exports:{}}).exports,i),i.exports);var K=(e,i,o,r)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of F(i))!X.call(e,t)&&t!==o&&O(e,t,{get:()=>i[t],enumerable:!(r=_(i,t))||r.enumerable});return e};var q=(e,i,o)=>(o=e!=null?G(V(e)):{},K(i||!e||!e.__esModule?O(o,"default",{value:e,enumerable:!0}):o,e));var N=z((ze,x)=>{(function(){"use strict";let e={fatal:!0},i=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(r,t){if(r instanceof Uint8Array)return o.Uint8(r);if(typeof r=="string")return o.Base64(r);if(r instanceof HTMLElement&&r.type==="file")return o.addListener(r,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(r,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(r===void 0||!(r instanceof HTMLElement)||r.tagName!=="INPUT"||r.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},r.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let l=new FileReader;l.readAsArrayBuffer(a.target.files[0]),l.onload=function(f){t(o.Uint8(new Uint8Array(f.target.result)))}})},Base64:function(r){let t=function(f){var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(f=f.replace(/^.*?base64,/,""),f=String(f).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(f))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");f+="==".slice(2-(3&f.length));let p,b="",s,n,h=0;for(;h>16&255):n===64?String.fromCharCode(p>>16&255,p>>8&255):String.fromCharCode(p>>16&255,p>>8&255,255&p);return b}(r=String(r));var a=t.length;let l=new Uint8Array(new ArrayBuffer(a));for(let f=0;f{n[c]=this.readInt(1)});for(let u=0;u191||g>127&&g<160)throw new RangeError(`Invalid code point: ${g}`)}h=!0,console.debug(`String byte sequence in ${i[u].encoding}`)}catch(c){console.debug(`SMF string ${c}`)}return d||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let s=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)s=this.readInt(1);else{let h=[];for(;128<=this.data.getUint8(this.pointer);)h.push(this.readInt(1)-128);var n=this.readInt(1);for(let d=1;d<=h.length;d++)s+=h[h.length-d]*Math.pow(128,d);s+=n}return s}};if(t.data=new DataView(l.buffer,l.byteOffset,l.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var l=t.readInt(1),f=t.readInt(1);128<=l?(a.timeDivision=[],a.timeDivision[0]=l-128,a.timeDivision[1]=f):a.timeDivision=256*l+f;for(let s=1;s<=a.tracks;s++){a.track[s-1]={event:[]};var $,p=t.readInt(4);if(p===-1)break;if(p!==1297379947)return!1;t.readInt(4);let n=0,h=!1,d,u;for(;!h&&(n++,a.track[s-1].event[n-1]={},a.track[s-1].event[n-1].deltaTime=t.readIntVLV(),(d=t.readInt(1))!==-1);)if(128<=d?u=d:(d=u,t.movePointer(-1)),d===255){a.track[s-1].event[n-1].type=255,a.track[s-1].event[n-1].metaType=t.readInt(1);var b=t.readIntVLV();switch(a.track[s-1].event[n-1].metaType){case 47:case-1:h=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[s-1].event[n-1].data=t.readStr(b);break;case 33:case 89:case 81:a.track[s-1].event[n-1].data=t.readInt(b);break;case 84:a.track[s-1].event[n-1].data=[],a.track[s-1].event[n-1].data[0]=t.readInt(1),a.track[s-1].event[n-1].data[1]=t.readInt(1),a.track[s-1].event[n-1].data[2]=t.readInt(1),a.track[s-1].event[n-1].data[3]=t.readInt(1),a.track[s-1].event[n-1].data[4]=t.readInt(1);break;case 88:a.track[s-1].event[n-1].data=[],a.track[s-1].event[n-1].data[0]=t.readInt(1),a.track[s-1].event[n-1].data[1]=t.readInt(1),a.track[s-1].event[n-1].data[2]=t.readInt(1),a.track[s-1].event[n-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[s-1].event[n-1].data=this.customInterpreter(a.track[s-1].event[n-1].metaType,t,b)),this.customInterpreter!==null&&a.track[s-1].event[n-1].data!==!1||(t.readInt(b),a.track[s-1].event[n-1].data=t.readInt(b),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((d=d.toString(16).split(""))[1]||d.unshift("0"),a.track[s-1].event[n-1].type=parseInt(d[0],16),a.track[s-1].event[n-1].channel=parseInt(d[1],16),a.track[s-1].event[n-1].type){case 15:this.customInterpreter!==null&&(a.track[s-1].event[n-1].data=this.customInterpreter(a.track[s-1].event[n-1].type,t,!1)),this.customInterpreter!==null&&a.track[s-1].event[n-1].data!==!1||($=t.readIntVLV(),a.track[s-1].event[n-1].data=t.readInt($),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[s-1].event[n-1].data=[],a.track[s-1].event[n-1].data[0]=t.readInt(1),a.track[s-1].event[n-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[s-1].event[n-1].data=t.readInt(1);break;case-1:h=!0;break;default:if(this.customInterpreter!==null&&(a.track[s-1].event[n-1].data=this.customInterpreter(a.track[s-1].event[n-1].metaType,t,!1)),this.customInterpreter===null||a.track[s-1].event[n-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof x<"u")x.exports=o;else{let r=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;r.MidiParser=o}})()});var k=class{#e={};addEventListener(e,i){this.#e[e]||(this.#e[e]=[]),this.#e[e].unshift(i)}removeEventListener(e,i){if(this.#e[e]){let o=this.#e[e].indexOf(i);o>-1&&this.#e[e].splice(o,1),this.#e[e].length<1&&delete this.#e[e]}}dispatchEvent(e,i){let o=new Event(e),r=this;o.data=i,this.#e[e]?.length>0&&this.#e[e].forEach(function(t){try{t?.call(r,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var D=class{#e={};context;set(e,i){this.#e[e]=i}has(e){return!!this.#e[e]}async read(e,i){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#e[e].call(this.context||this,i)}};var Q=function(e,i){let o=!0;return i.forEach((r,t)=>{o=o&&e[t]==r}),o},P=function(e){let i=0;return e.forEach(o=>{i*=256,i+=o}),i},m=new TextDecoder,I=new D;I.set("s7e",async function(e){let i=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",r=[0,0,0,0],t=32,a=0,l=0,f=!0,$=[],p=0;for(;f;){let b=i.subarray(a);([()=>{m.decode(b.subarray(0,4))=="YSFC"?(a+=80,l=1):a++},()=>{if(Q(b.subarray(0,4),r))$.forEach((s,n,h)=>{let d=P(i.subarray(s.start+4,s.start+8));s.length=d}),l=2;else{let s=m.decode(b.subarray(0,4)),n=P(b.subarray(4,8));$.push({type:s,start:n}),a+=8}},()=>{let s=$[p],n=i.subarray(s.start,s.start+s.length),h=32;switch(s.type){case"ENVC":{let d=t;for(;d=$.length&&(l=3,f=!1)}][l]||(()=>{f=!1}))()}return o});var j=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]);var Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),W={};`hi*, ka,か ki,き @@ -138,4 +138,4 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let i=e.split(",");W[i[0]]=i[1]});var U=function(e,i,o){let a=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let r=0;r127)return console.debug(`Early termination: ${a}`),a.pop(),i.backOne(),i.backOne(),new Uint8Array(a)}}}return new Uint8Array(a)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var m={length:S.length};S.forEach((e,i)=>{m[e]=i});var A={length:v.length};v.forEach((e,i)=>{A[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var M=q(L(),1);var N=class{#e=!1;constructor(e,i,o,a){this.#e=e,this.start=i,this.end=o,this.data=a}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},C=class extends N{constructor(e,i,o){super(!0,e,i,o)}},B=class extends N{constructor(e,i){super(!1,e,e,i)}},T=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let a=0;ae);a++){if(this[a].endt.#e&&(o.push(r),t.#e=r.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],a=-1,t=Math.ceil(Math.sqrt(this.length)),r=!0;for(let l=0;l=e&&(a=l):a=a<0?l:a;for(;r;)this[a]?.end=e&&o.push(this[a]):r=!1,a++;return o}};var ee=0xffffffffffff,H=function(e){let i=new T,o=this,a=e.timeDivision,t=120,r=new T,l=0,f=0;r.push(new C(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,r[r.length-1]&&r.push(new C(l,0xffffffffffff,[t,0])))})}),r.fresh(),r.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;r.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return r.forEach(function(s){let n=s.start,h=n/b/a*60+p;b=s.data[0],p=h-n/b/a*60,s.data[1]=p}),console.debug("All tempo changes: ",r),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=r.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/a*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};M.default.customInterpreter=U;var at=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#a=.5;#l=120;#t=4;#o=4;#r=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#a=.5,this.#l=120,this.#t=4,this.#o=4,this.#r=0,this.#c=0}async loadFile(e){this.#e=H(M.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#a}get noteOverall(){return this.noteProgress-this.#r}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,a=new Set,t=this,r=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?a.add(c.part*128+c.data[0]):a.has(c.part*128+c.data[0])&&o++),u.data.type==8&&a.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{r.push(g);break}}g?.reply&&delete g.reply}),r?.length>0&&this.dispatchEvent("meta",r);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=m.length*c;if(y>=0){let E=4*.25**(p[R+m[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+m[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let a=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(r){(a.#i[r.meta]||console.debug).call(a,r.meta,r.data)})}),this.device.addEventListener("mode",function(t){a.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){a.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){a.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){a.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){a.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){a.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,r){a.#s?.length<1&&(a.#s=r)},this.#i[81]=function(t,r){let l=a.noteProgress,f=a.#a||.5;a.#l=6e7/r,a.#a=r/1e6,a.#r+=l*(f/a.#a)-l},this.#i[88]=function(t,r){let l=a.noteProgress,f=a.noteOverall,$=a.noteBar,p=a.noteBeat,b=a.#t,s=a.#o;a.#t=r[0],a.#o=1<=b&&(b{let i=e.split(",");W[i[0]]=i[1]});var U=function(e,i,o){let r=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${r}`),r.pop(),i.backOne(),i.backOne(),new Uint8Array(r)}}}return new Uint8Array(r)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var w={length:S.length};S.forEach((e,i)=>{w[e]=i});var A={length:v.length};v.forEach((e,i)=>{A[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var T=q(N(),1);var L=class{#e=!1;constructor(e,i,o,r){this.#e=e,this.start=i,this.end=o,this.data=r}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},C=class extends L{constructor(e,i,o){super(!0,e,i,o)}},B=class extends L{constructor(e,i){super(!1,e,e,i)}},M=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let r=0;re);r++){if(this[r].endt.#e&&(o.push(a),t.#e=a.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],r=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let l=0;l=e&&(r=l):r=r<0?l:r;for(;a;)this[r]?.end=e&&o.push(this[r]):a=!1,r++;return o}};var ee=0xffffffffffff,H=function(e){let i=new M,o=this,r=e.timeDivision,t=120,a=new M,l=0,f=0;a.push(new C(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,a[a.length-1]&&a.push(new C(l,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;a.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return a.forEach(function(s){let n=s.start,h=n/b/r*60+p;b=s.data[0],p=h-n/b/r*60,s.data[1]=p}),console.debug("All tempo changes: ",a),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=a.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/r*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};T.default.customInterpreter=U;var rt=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#r=.5;#l=120;#t=4;#o=4;#a=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#r=.5,this.#l=120,this.#t=4,this.#o=4,this.#a=0,this.#c=0}async loadFile(e){this.#e=H(T.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#r}get noteOverall(){return this.noteProgress-this.#a}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,r=new Set,t=this,a=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?r.add(c.part*128+c.data[0]):r.has(c.part*128+c.data[0])&&o++),u.data.type==8&&r.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{a.push(g);break}}g?.reply&&delete g.reply}),a?.length>0&&this.dispatchEvent("meta",a);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=w.length*c;if(y>=0){let E=4*.25**(p[R+w[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+w[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let r=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(r.#i[a.meta]||console.debug).call(r,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){r.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){r.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){r.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){r.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){r.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){r.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,a){r.#s?.length<1&&(r.#s=a)},this.#i[81]=function(t,a){let l=r.noteProgress,f=r.#r||.5;r.#l=6e7/a,r.#r=a/1e6,r.#a+=l*(f/r.#r)-l},this.#i[88]=function(t,a){let l=r.noteProgress,f=r.noteOverall,$=r.noteBar,p=r.noteBeat,b=r.#t,s=r.#o;r.#t=a[0],r.#o=1<=b&&(b()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,l,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Te(n))!Me.call(e,t)&&t!==l&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,l)=>(l=e!=null?Se(Ce(e)):{},Oe(n||!e||!e.__esModule?j(l,"default",{value:e,enumerable:!0}):l,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],l={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return l.Uint8(o);if(typeof o=="string")return l.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return l.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(i){if(!i.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(i.target.files[0]),a.onload=function(s){t(l.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var i=t.length;let a=new Uint8Array(new ArrayBuffer(i));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)c+=p[p.length-b]*Math.pow(128,b);c+=f}return c}};if(t.data=new DataView(a.buffer,a.byteOffset,a.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let i={};i.formatType=t.readInt(2),i.tracks=t.readInt(2),i.track=[];var a=t.readInt(1),s=t.readInt(1);128<=a?(i.timeDivision=[],i.timeDivision[0]=a-128,i.timeDivision[1]=s):i.timeDivision=256*a+s;for(let c=1;c<=i.tracks;c++){i.track[c-1]={event:[]};var r,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,i.track[c-1].event[f-1]={},i.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){i.track[c-1].event[f-1].type=255,i.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(i.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:i.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:i.track[c-1].event[f-1].data=t.readInt(d);break;case 84:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1),i.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1),i.track[c-1].event[f-1].data[2]=t.readInt(1),i.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(t.readInt(d),i.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),i.track[c-1].event[f-1].type=parseInt(b[0],16),i.track[c-1].event[f-1].channel=parseInt(b[1],16),i.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&i.track[c-1].event[f-1].data!==!1||(r=t.readIntVLV(),i.track[c-1].event[f-1].data=t.readInt(r),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:i.track[c-1].event[f-1].data=[],i.track[c-1].event[f-1].data[0]=t.readInt(1),i.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:i.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(i.track[c-1].event[f-1].data=this.customInterpreter(i.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||i.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return i},customInterpreter:null};if(typeof K<"u")K.exports=l;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=l}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),o=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,l)}catch(i){console.error(i)}}),this[`on${e}`]&&this[`on${e}`](l)}};var Z=function(e,n){let l=Math.min(e.length,n.length),o=e.slice(0,l),t=n.slice(0,l),i=0,a=0;for(;a0){let o=this.pool.length,t=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(i==o)i-=t;else{let r=Z(n,this.pool[i]);switch(r){case 0:{a=0;break}case 1:{i+t<=o&&(i+=t);break}case-1:{i!=0&&(i-=t);break}default:console.warn(`Unexpected result ${r}.`)}}t=t>>1,a--}let s=!0;if(i>=this.pool.length)s=!1;else{let r=this;this.pool[i].forEach(function(h,d,c){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[i])>0&&i++}return s||l?i:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...l):this.pool[o].data(n.slice(this.pool[o].length),...l):this.default(n,...l)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},B=class{#t;strictMode=!1;get(e=0,n=0,l=0,o){let t=[e,n,l],i,a=Array.from(arguments);switch(o){case"xg":{e==32?a[2]+=4:e==33||e==35||e==36?a[2]+=5:e==79?a[0]=95:e==80?a[0]=96:e==81?a[0]=97:e==82?a[0]=98:e==83?a[0]=99:e==84&&(a[0]=100),l==126?a[2]=125:l==127&&(a[2]=0);break}case"gs":{e==0&&l<5?a[2]=0:e>125&&l<5&&l!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&l==0&&(a[2]=5);break}case"s90es":{l<8?a[2]+=17:l<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{l<8?a[2]+=28:l<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let s=" ",r="M",h=!1,d=0;switch(a[0]){case 0:{a[2]==127?r="MT-a":a[2]==126?r="MT-b":a[2]==7?r="GM-k":a[2]==5?r="SG-a":a[2]==4?r="SP-l":a[2]==0||o=="gs"&&a[2]<5?r="GM-a":(r="y",h=!0);break}case 8:{o=="sg"?r="GM-s":r="r:";break}case 48:{r=`yM${(a[2]>>3).toString().padStart(2,"0")}`,h=!0;break}case 56:{r="GM-b";break}case 61:case 120:{r="rDrm";break}case 62:{r="kDrm";break}case 63:{if(a[2]<17){let b=a[2];r=b<10?"kP:":"kC:",r+=b%10}else a[2]<34?r=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:r="Ds";break}case 64:{r="ySFX";break}case 67:{r="DX:S";break}case 80:case 81:case 82:case 83:{r=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{r=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{r=`${["DR","PC"][a[2]]}-d`;break}case 96:{r=a[2]==106?"AP-a":"PF",a[2]>63&&(d=63),h=!0;break}case 97:{r="VL:",h=!0,d=112;break}case 98:{r="SG-a";break}case 99:{r="DX",a[2]>63&&(d=63),h=!0;break}case 100:{r="AN",a[2]>63&&(d=63),h=!0;break}case 121:{r=`GM-${a[2]?"":"a"}`,h=!0;break}case 122:{r="lDrm";break}case 126:{r="yDrS";break}case 127:{a[2]==127?r="rDrm":r="yDrm";break}default:a[0]<48?r="r:":r="M"}r.length<4&&(r+=`${(h?l:e)-d}`.padStart(4-r.length,"0")),o=="xg"&&e==16&&(i=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,s=" ");let c=[a[0],a[1],a[2]];for(;!(i?.length>=0);)i=this.#t[a[1]||0][(a[0]<<7)+a[2]],i||(this.strictMode?(i="",s="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,s="^"):a[2]<1?(a[0]=0,s="*"):(a[2]--,s="^"):e==48?(a[0]=0,a[2]=0,s="!"):e==62?(a[1]--,s=" ",a[1]<1&&!i?.length&&(a[0]=0,s="!")):e<63?a[0]==0?(a[2]=0,s="^"):a[2]<1?(a[0]=0,s="*"):a[2]--:e==80?(i=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(i=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(i=`GM2Vox0${l}`,s="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,i=this.#t[a[1]||0][(a[0]<<7)+a[2]],i?s=" ":(i="",s="*")):a[1]==0?(i=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,s="!"):a[0]==0?(a[2]=0,s="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,s="!"):(a[0]=0,s="?"));let f=[a[0],a[1],a[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(i="");let p="??";switch(a[0]){case 0:{a[2]==0?p="GM":a[2]==5||a[2]==7?p="KG":a[2]<126?p="XG":a[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{a[2]<17?p="KR":a[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][a[2]];break}case 96:{p=a[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=a[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=a[2]==127?"MT":n==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&o=="xg"?p="XG":p="GS")}return{name:i||`${H(e||0)} ${H(n||0)} ${H(l||0)}`,iid:c,eid:f,sid:t,ending:s,sect:r,standard:p}}async load(e,n,l){let o=this,t=[],i=0,a=0;e.split(` -`).forEach(function(s,r){let h=s.split(" "),d=[];r==0?h.forEach(function(c,f){t[De.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],i++),a++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${l||"(internal)"}": ${a} total, ${i} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let i=t<<7;for(let a=o[0];a<=o[1];a++){let s=i+a;for(let r=n[0];r<=n[1];r++)delete this.#t[r][s]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,o){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let l=!0;return n.forEach((o,t)=>{l=l&&e[t]==o}),l},ee=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},R=new TextDecoder,A=new J;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",o=[0,0,0,0],t=32,i=0,a=0,s=!0,r=[],h=0;for(;s;){let d=n.subarray(i);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(i+=80,a=1):i++},()=>{if(Ie(d.subarray(0,4),o))r.forEach((c,f,p)=>{let b=ee(n.subarray(c.start+4,c.start+8));c.length=b}),a=2;else{let c=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));r.push({type:c,start:f}),i+=8}},()=>{let c=r[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let b=t;for(;b=r.length&&(a=3,s=!1)}][a]||(()=>{s=!1}))()}return l});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ue=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],C=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ie=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},re=function(e){return e>105?Ue[e-106]:e>100?e*1.1-100:e/10},ae=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,c,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Ce.call(e,t)&&t!==c&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,c)=>(c=e!=null?Se(Te(e)):{},Oe(n||!e||!e.__esModule?j(c,"default",{value:e,enumerable:!0}):c,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],c={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return c.Uint8(o);if(typeof o=="string")return c.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return c.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let r=new FileReader;r.readAsArrayBuffer(a.target.files[0]),r.onload=function(s){t(c.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",l,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var a=t.length;let r=new Uint8Array(new ArrayBuffer(a));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)l+=p[p.length-b]*Math.pow(128,b);l+=f}return l}};if(t.data=new DataView(r.buffer,r.byteOffset,r.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var r=t.readInt(1),s=t.readInt(1);128<=r?(a.timeDivision=[],a.timeDivision[0]=r-128,a.timeDivision[1]=s):a.timeDivision=256*r+s;for(let l=1;l<=a.tracks;l++){a.track[l-1]={event:[]};var i,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,a.track[l-1].event[f-1]={},a.track[l-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){a.track[l-1].event[f-1].type=255,a.track[l-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[l-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[l-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[l-1].event[f-1].data=t.readInt(d);break;case 84:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1),a.track[l-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(t.readInt(d),a.track[l-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),a.track[l-1].event[f-1].type=parseInt(b[0],16),a.track[l-1].event[f-1].channel=parseInt(b[1],16),a.track[l-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(i=t.readIntVLV(),a.track[l-1].event[f-1].data=t.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[l-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[l-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof K<"u")K.exports=c;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=c}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),o=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var Z=function(e,n){let c=Math.min(e.length,n.length),o=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let o=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==o)a-=t;else{let i=Z(n,this.pool[a]);switch(i){case 0:{r=0;break}case 1:{a+t<=o&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${i}.`)}}t=t>>1,r--}let s=!0;if(a>=this.pool.length)s=!1;else{let i=this;this.pool[a].forEach(function(h,d,l){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[a])>0&&a++}return s||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...c):this.pool[o].data(n.slice(this.pool[o].length),...c):this.default(n,...c)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},B=class{#t;strictMode=!1;get(e=0,n=0,c=0,o){let t=[e,n,c],a,r=Array.from(arguments);switch(o){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{r[0]+=16,c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let s=" ",i="M",h=0,d=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||o=="gs"&&r[2]<5?i="GM-a":(i="y",h=3);break}case 8:{o=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let b=r[2];i=b<10?"kP:":"kC:",i+=b%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(d=63),h=3;break}case 97:{i="VL:",h=3,d=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(d=63),h=3;break}case 100:{i="AN",r[2]>63&&(d=63),h=3;break}case 121:{i=`GM-${r[2]?"":"a"}`,h=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[e,c,r[0],r[1]][h]-d}`.padStart(4-i.length,"0")),o=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,s=" ");let l=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",s="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):(r[2]--,s="^"):e==48?(r[0]=0,r[2]=0,s="!"):e==62?(r[1]--,s=" ",r[1]<1&&!a?.length&&(r[0]=0,s="!")):e<63?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(a=`GM2Vox0${c}`,s="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?s=" ":(a="",s="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,s="!"):r[0]==0?(r[2]=0,s="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,s="!"):(r[0]=0,s="?"));let f=[r[0],r[1],r[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&o=="xg"?p="XG":p="GS")}return{name:a||`${H(e||0)} ${H(n||0)} ${H(c||0)}`,iid:l,eid:f,sid:t,ending:s,sect:i,standard:p}}async load(e,n,c){let o=this,t=[],a=0,r=0;e.split(` +`).forEach(function(s,i){let h=s.split(" "),d=[];i==0?h.forEach(function(l,f){t[De.indexOf(l)]=f}):h.forEach(async function(l,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],a++),r++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${c||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],c=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=c[0];t<=c[1];t++){let a=t<<7;for(let r=o[0];r<=o[1];r++){let s=a+r;for(let i=n[0];i<=n[1];i++)delete this.#t[i][s]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(c,o){try{await fetch(`./data/bank/${c}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,c)})}catch{console.error(`Failed loading "${c}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let c=!0;return n.forEach((o,t)=>{c=c&&e[t]==o}),c},ee=function(e){let n=0;return e.forEach(c=>{n*=256,n+=c}),n},R=new TextDecoder,A=new J;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),c="MSB LSB PRG NME",o=[0,0,0,0],t=32,a=0,r=0,s=!0,i=[],h=0;for(;s;){let d=n.subarray(a);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(Ie(d.subarray(0,4),o))i.forEach((l,f,p)=>{let b=ee(n.subarray(l.start+4,l.start+8));l.length=b}),r=2;else{let l=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));i.push({type:l,start:f}),a+=8}},()=>{let l=i[h],f=n.subarray(l.start,l.start+l.length),p=32;switch(l.type){case"ENVC":{let b=t;for(;b=i.length&&(r=3,s=!1)}][r]||(()=>{s=!1}))()}return c});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ue=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ae=function(e){let n=.1,c=-.3;return e>66?(n=5,c=315):e>56?(n=1,c=47):e>46&&(n=.5,c=18.5),n*e-c},ie=function(e){return e>105?Ue[e-106]:e>100?e*1.1-100:e/10},re=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ce=function(e,n,l){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},i=t[0];if(i?.length)return i+=`: ${(t[1]||function(){})(l)||l}`,i},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,l){let o=[],t=l==!1?n.readIntVLV():l;e==0||e==127;for(let i=0;i127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},S=function(e,n){let l=0,o=0;for(let t=0;t>i&1)<<7,s=e[t];s+=a,t%8!=0?(n(s,l,e),l++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],T=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],l=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(l,t)):o==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",l="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${l}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#c=new Uint8Array(g.ch);#i=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#a=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#v=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#T=new Uint8Array(g.ch);#B=0;#r=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#C=new Uint8Array(g.ch);#U=new Uint8Array(128);#k=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#S=0;#m=100;#O=0;#Q=500;#W=0;#M="";#L=0;#Y=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#S)>-1){if(l==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let l=e*128+n,o=this.#f.lastIndexOf(l);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[l]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let o=e*128+n,t=0;for(this.#v[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,l)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[l]=o;let t=this.#f[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[l],t=o>>7;e==t&&(this.#$[l]=this.NOTE_IDLE,this.#f[l]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,l,o)=>{let t=n>>7,i=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,i)})}};#J={8:function(e){let n=e.channel,l=e.data[0];this.#u.nOff(n,l)},9:function(e){let n=e.channel;this.#n[n]=1;let l=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,l,o):this.#u.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#f.indexOf(l)>-1&&(this.#d[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let l=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#v[n]=1,this.#u.ano(n);return}case 127:{this.#v[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let i=this.#e[g.cc*t];(i==56||i==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[l+u[99]],t=this.#e[l+u[98]];if(o==1){let i=Be.indexOf(t);if(i>-1)this.#e[l+u[71+i]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+i}.`),this.dispatchEvent("cc",{part:n,cc:71+i,data:e.data[1]});else{let a=ge.indexOf(t);a>-1?this.#K[n*10+a]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let a=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${a}is not necessary. Consider removing it.`):console.warn(`${a}is not supported.`)}else{let a=this.#i[n]-2;a<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#i[n]]}.`):this.#j[(a*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#i[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[l+u[100]]];this.#e[l+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#r[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[l+101]==0&&X[this.#e[l+100]]!=null&&(this.#r[n*g.rpn+X[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[l+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#a[n]=e.data,this.#C[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#f.forEach(function(o){let t=o>>7;l==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:l,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let l=n[0],o=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(l,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#V.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#R.run(n,l,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,l)=>{this.#D.run(n,l,e)},67:(e,n,l)=>{this.#E.run(n,l,e)},68:(e,n,l)=>{this.#z.run(n,l,e)},71:(e,n,l)=>{this.#X.run(n,l,e)},126:(e,n,l)=>{this.#_.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#F.run(n,l,e)}};#_;#F;#E;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,l=this.#e.subarray(n,n+g.cc);return l[u[0]]=l[u[0]]||this.#N,l[u[32]]=l[u[32]]||this.#S,l}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=T[l])}getPitch(){return this.#I}getProgram(){return this.#a}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,l=this;return l.#f.forEach(function(o,t){let i=Math.floor(o/128),a=o%128;e==i&&l.#d[o]>0&&n.set(a,{v:l.#d[o],s:l.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#M,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let l=Math.floor(n/128);e.#d[n]>e.#T[l]&&(e.#T[l]=e.#d[n])}),this.#T}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,o){e[o]=Math.floor(l*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,l,o){let t=e||this.#N,i=n,a=l||this.#S;x[this.#t]=="ns5r"&&t>0&&t<56&&(a=3);let s=this.userBank.get(t,i,a,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let r=parseInt(s.name.slice(5)),h=r*g.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG -0 127 ${i} ${d}`,!0),s.name=d,s.ending=" "}return(s.ending!=" "||!s.name.length)&&(s=this.baseBank.get(t,i,a,o)),s}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#a[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#C[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,o=3200){let t=this,i;t.#M=" ".repeat(l),e.forEach(a=>{t.#M+=String.fromCharCode(a>31?a:32),a<32&&(i=i||new Set,i.add(a))}),t.#L=Date.now()+3200,t.#M=t.#M.padEnd(32," "),i&&(i=Array.from(i),i.forEach((a,s,r)=>{r[s]=a.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${i.length>1?"s":""}: 0x${i.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let l=this.#b[n];if(l){if(I.indexOf(l)>=0)return this.#e[e*g.cc+u[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#S=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#a.fill(0),this.#d.fill(0),this.#f.fill(0),this.#T.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#M="",this.#h=0,this.#o=0,this.#g.fill(0),this.#l=!1,this.#Y=0,this.#x=!0,this.#c.forEach(function(n,l,o){o[l]=l}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#H.fill(0)),this.#e[g.cc*9]=T[0],this.#e[g.cc*25]=T[0],this.#e[g.cc*41]=T[0],this.#e[g.cc*57]=T[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#k.fill(0),this.#C.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=l,this.#o=0,this.#N=fe[0][l],this.#S=fe[1][l];for(let i=0;i0&&this.#e[i*g.cc+u[0]]==T[o]&&(this.#e[i*g.cc]=T[l]);switch(this.initOnReset,l){case m.mt32:{V.forEach((i,a)=>{let s=a+1;this.#n[s]||(this.#a[s]=i,this.#e[s*g.cc+u[91]]=127)});break}}let t;switch(l){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let i=0;i14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(o=>{e.channel=o,l=!0,this.#J[e.type].call(this,e)}),l||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],ce=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},le=function(e,n,c){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,c){let o=[],t=c==!1?n.readIntVLV():c;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,o=0;for(let t=0;t>a&1)<<7,s=e[t];s+=r,t%8!=0?(n(s,c,e),c++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],M=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],c=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(c,t)):o==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",c="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${c}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#l=new Uint8Array(g.ch);#a=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#r=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#k=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#M=new Uint8Array(g.ch);#B=0;#i=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#T=new Uint8Array(g.ch);#U=new Uint8Array(128);#S=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#C="";#L=0;#Y=0;#x=!0;#c=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(c==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let c=e*128+n,o=this.#f.lastIndexOf(c);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[c]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let o=e*128+n,t=0;for(this.#k[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,c)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[c]=o;let t=this.#f[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,c,o)=>{let t=n>>7,a=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,a)})}};#J={8:function(e){let n=e.channel,c=e.data[0];this.#u.nOff(n,c)},9:function(e){let n=e.channel;this.#n[n]=1;let c=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,c,o):this.#u.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#f.indexOf(c)>-1&&(this.#d[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let c=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#k[n]=1,this.#u.ano(n);return}case 127:{this.#k[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let a=this.#e[g.cc*t];(a==56||a==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[c+u[99]],t=this.#e[c+u[98]];if(o==1){let a=Be.indexOf(t);if(a>-1)this.#e[c+u[71+a]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=ge.indexOf(t);r>-1?this.#K[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let r=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#a[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#a[n]]}.`):this.#j[(r*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#a[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[c+u[100]]];this.#e[c+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#i[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&X[this.#e[c+100]]!=null&&(this.#i[n*g.rpn+X[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#r[n]=e.data,this.#T[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#f.forEach(function(o){let t=o>>7;c==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:c,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let c=n[0],o=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(c,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#V.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#R.run(n,c,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,c)=>{this.#D.run(n,c,e)},67:(e,n,c)=>{this.#v.run(n,c,e)},68:(e,n,c)=>{this.#z.run(n,c,e)},71:(e,n,c)=>{this.#X.run(n,c,e)},126:(e,n,c)=>{this.#_.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#F.run(n,c,e)}};#_;#F;#v;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#l.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,c=this.#e.subarray(n,n+g.cc);return c[u[0]]=c[u[0]]||this.#N,c[u[32]]=c[u[32]]||this.#E,c}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=M[c])}getPitch(){return this.#I}getProgram(){return this.#r}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,c=this;return c.#f.forEach(function(o,t){let a=Math.floor(o/128),r=o%128;e==a&&c.#d[o]>0&&n.set(r,{v:c.#d[o],s:c.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#C,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let c=Math.floor(n/128);e.#d[n]>e.#M[c]&&(e.#M[c]=e.#d[n])}),this.#M}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,o){e[o]=Math.floor(c*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#i}getNrpn(){return this.#K}getVoice(e,n,c,o){let t=e||this.#N,a=n,r=c||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let s=this.userBank.get(t,a,r,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let i=parseInt(s.name.slice(5)),h=i*g.cmt,d="";this.#A.subarray(h,h+10).forEach(l=>{l>31&&(d+=String.fromCharCode(l))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${d}`,!0),s.name=d,s.ending=" "}return(s.ending!=" "||!s.name.length)&&(s=this.baseBank.get(t,a,r,o)),s}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#r[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#T[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#i[n]+(this.#i[n+3]-64)+((this.#i[n+1]<<7)+this.#i[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,o=3200){let t=this,a;t.#C=" ".repeat(c),e.forEach(r=>{t.#C+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#L=Date.now()+3200,t.#C=t.#C.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,s,i)=>{i[s]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let c=this.#b[n];if(c){if(I.indexOf(c)>=0)return this.#e[e*g.cc+u[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#r.fill(0),this.#d.fill(0),this.#f.fill(0),this.#M.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#C="",this.#h=0,this.#o=0,this.#g.fill(0),this.#c=!1,this.#Y=0,this.#x=!0,this.#l.forEach(function(n,c,o){o[c]=c}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#H.fill(0)),this.#e[g.cc*9]=M[0],this.#e[g.cc*25]=M[0],this.#e[g.cc*41]=M[0],this.#e[g.cc*57]=M[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#T.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=c,this.#o=0,this.#N=fe[0][c],this.#E=fe[1][c];for(let a=0;a0&&this.#e[a*g.cc+u[0]]==M[o]&&(this.#e[a*g.cc]=M[c]);switch(this.initOnReset,c){case m.mt32:{V.forEach((a,r)=>{let s=r+1;this.#n[s]||(this.#r[s]=a,this.#e[s*g.cc+u[91]]=127)});break}}let t;switch(c){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(o=>{e.channel=o,c=!0,this.#J[e.type].call(this,e)}),c||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let i=t.slice(2).split(":");switch(i[0]){case"hd":{i.slice(1).forEach((a,s)=>{a.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][s]}: ${a}`)});break}case"ln":{i.slice(1).forEach((a,s)=>{a.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][s]}: ${a}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,i){i<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,i){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,i){console.debug(`Track ${i} requests to get assigned to output ${t}.`),e.#H[i]=t+1},this.#y[81]=function(t,i){e.#Q=t/1e3},this.#y[127]=function(t,i){e.#G.run(t,i)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,i){e.#H[i]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#E=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#E.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#E.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let i=[0,0,0,0],a=(s,r)=>{i[r]=s};if(t.subarray(1).forEach((s,r)=>{let h=r+t[0];([a,a,a,a,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(s,r)}),t[0]<4){let s=0;i.forEach(r=>{s=s<<4,s+=r}),s-=1024}}}}).add([76,2,1],t=>{let i="XG ";t[0]<32?(i+="reverb ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}time: ${ie(r)}s`)},r=>{console.debug(`${i}diffusion: ${r}`)},r=>{console.debug(`${i}initial delay: ${r}`)},r=>{console.debug(`${i}HPF cutoff: ${C[r]}Hz`)},r=>{console.debug(`${i}LPF cutoff: ${C[r]}Hz`)},r=>{console.debug(`${i}width: ${r}`)},r=>{console.debug(`${i}height: ${r}`)},r=>{console.debug(`${i}depth: ${r}`)},r=>{console.debug(`${i}wall type: ${r}`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${i}delay: ${r}`)},r=>{console.debug(`${i}density: ${r}`)},r=>{console.debug(`${i}balance: ${r}`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{}][t[0]+s]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(a)})):t[0]<64?(i+="chorus ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${i}sub type: ${r+1}`)},r=>{console.debug(`${i}LFO: ${te[r]}Hz`)},r=>{},r=>{console.debug(`${i}feedback: ${r}`)},r=>{console.debug(`${i}delay offset: ${re(r)}ms`)},r=>{},r=>{console.debug(`${i}low: ${C[r]}Hz`)},r=>{console.debug(`${i}low: ${r-64}dB`)},r=>{console.debug(`${i}high: ${C[r]}Hz`)},r=>{console.debug(`${i}high: ${r-64}dB`)},r=>{console.debug(`${i}dry/wet: ${r}`)},r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${i}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${i}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+s]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(a)})):t[0]<86?(i+="variation ",t.subarray(1).forEach((a,s)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${i}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${i}sub type: ${r+1}`)}][t[0]-64+s]||function(){})(a)})):t[0]<97?(i+="variation ",t.subarray(1).forEach((a,s)=>{[r=>{console.debug(`${i}send: ${E(r)}dB`)},r=>{console.debug(`${i}pan: ${r-64}`)},r=>{console.debug(`${i}to reverb: ${E(r)}dB`)},r=>{console.debug(`${i}to chorus: ${E(r)}dB`)},r=>{console.debug(`${i}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${i}channel: CH${r+1}`)},r=>{console.debug(`${i}mod wheel: ${r-64}`)},r=>{console.debug(`${i}bend wheel: ${r-64}`)},r=>{console.debug(`${i}channel after touch: ${r-64}`)},r=>{console.debug(`${i}AC1: ${r-64}`)},r=>{console.debug(`${i}AC2: ${r-64}`)}][t[0]-86+s](a)})):t[0]>111&&t[0]<118?i+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((i,a)=>{let s=a+t[0];if(s==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][i]}`);else{let r=s-1>>2,h=s-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${i-64}dB`)},()=>{console.debug(`${d}${i} (raw)`)},()=>{console.debug(`${d}${i/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!i]}`)}][h]()}})}).add([76,3],t=>{let i=t[0],a=t[1],s=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+i,!1,d),console.info(`${s}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+i,!0,d),console.debug(`${s}sub type: ${d+1}`)}][a+h]||function(){})(r)})}).add([76,6,0],t=>{let i=t[0];i<64?e.setLetterDisplay(t.subarray(1),"XG letter display",i):e.#L=Date.now()}).add([76,7,0],t=>{let i=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let a=t.subarray(1);for(let s=0;s>6-p&1,p++})}).add([76,8],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=t[1],r=g.cc*a,h=`XG CH${a+1} `,d=`Unknown XG part address ${s}.`;t.subarray(2).forEach((c,f)=>{s<1?console.debug(d):s<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#a[a]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[a]=+!c},()=>{},()=>{e.setChType(a,c,m.xg),console.debug(`${h}type: ${P[c]||c}`)},()=>{e.#r[g.rpn*a+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][s+f-1]||(()=>{}))():s<48?console.debug(d):s<111?s>102&&s<105&&(e.#e[r+u[[5,65][s&1]]]=c):s<114?console.debug(d):s<116?console.debug(`${h}EQ ${["bass","treble"][s&1]} gain: ${c-64}dB`):s<118?console.debug(d):s<120?console.debug(`${h}EQ ${["bass","treble"][s&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=t[1],r=`PLG-150VL CH${a+1} `;t.subarray(2).forEach((h,d)=>{let c=d+s;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,i)=>{let a=t[0];t.subarray(1).forEach((s,r)=>{let h=a+r;h==8?console.debug(`MU1000 set LCD contrast to ${s}.`):h>9&&h<16&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][h-10]()})}).add([73,10,0],(t,i)=>{let a=t[0],s=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(a<16)switch(a){case 2:{let r=e.chRedir(0,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${s}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,i,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${s}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${s}unknown switch ${a} invoked.`)}else if(a<32){if(e.#x){let r=e.chRedir(a-16+(e.#Y<<4),i,!0);e.dispatchEvent("channelactive",r)}}else if(a<36){let r=e.chRedir(a-32<<4,i,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#Y=a-32),console.info(`${s}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=`PLG-100SG CH${a+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ae[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${s}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#E.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#E.add([89,0],(t,i,a)=>{if(e.eprom){let s=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${s} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let b=0;b<7;b++)h[r+7*f+b]+=(d>>6-b&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,i,a)=>{let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${s.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=s)}).add([89,2],(t,i,a)=>{if(e.eprom){let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${s.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[s+7*c+p]+=(h>>6-p&1)<<7;else r[s+7*c+f]=h})}}).add([89,3],(t,i,a)=>{}),this.#E.add([39,48],(t,i,a)=>{}).add([43,0,0],(t,i,a)=>{let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,i,a)=>{}).add([43,2],(t,i,a)=>{let s=e.chRedir(t[0],i,!0),r=t[1],h=g.cc*s,d=`TG300 CH${s+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[s]=+!c},()=>{},()=>{},()=>{e.#r[g.rpn*s+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,i,a)=>{let s=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",s)}).add([43,7,1],(t,i,a)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(s,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,i,a)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#S=3,e.#l=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,i,a)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#l=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let i=t[0];if(i<16){let a="".padStart(i," ");t.subarray(1).forEach((s,r)=>{a+=String.fromCharCode(Math.max(32,s))}),a=a.padEnd(16," "),console.debug(`GS patch name: ${a}`)}else i<48||(i<65?t.subarray(1).forEach((a,s)=>{let r=`GS ${i+s>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${_[a]}`),e.setEffectType(0,40,a)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${a}ms`)},()=>{console.info(`${r}type: ${oe[a]}`),e.setEffectType(1,40,16+a)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(a)}`)},()=>{console.debug(`${r}to delay: ${E(a)}`)}][i+s-48]||(()=>{}))()}):i<80?console.debug(`Unknown GS patch address: ${i}`):i<91?t.subarray(1).forEach((a,s)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[a]}`),e.setEffectType(2,40,32+a)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(a)}`)}][i+s-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${i}`))}).add([66,18,64,2],t=>{let i="GS EQ ";t.subarray(1).forEach((a,s)=>{([()=>{console.debug(`${i}low freq: ${[200,400][a]}Hz`)},()=>{console.debug(`${i}low gain: ${a-64}dB`)},()=>{console.debug(`${i}high freq: ${[3e3,6e3][a]}Hz`)},()=>{console.debug(`${i}high gain: ${a-64}dB`)}][t[0]+s]||function(){console.warn(`Unknown GS EQ address: ${t[0]+s}`)})()})}).add([66,18,64,3],t=>{let i="GS EFX ",a=function(s,r){let h=ce(e.#w.subarray(10,12),r,s);h&&console.debug(`${i}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((s,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+s)},()=>{e.setEffectTypeRaw(3,!0,s),console.info(`${i}type: ${F(e.#w.subarray(10,12))}`)},!1,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,a,()=>{console.debug(`${i}to reverb: ${E(s)}dB`)},()=>{console.debug(`${i}to chorus: ${E(s)}dB`)},()=>{console.debug(`${i}to delay: ${E(s)}dB`)},!1,()=>{console.debug(`${i}1 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${i}1 depth: ${s-64}`)},()=>{console.debug(`${i}2 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${i}2 depth: ${s-64}`)},()=>{console.debug(`${i}to EQ: ${s?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(s,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let i=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",i);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let i=e.#p[t[0]-1],a=t[1];i.fill(0);let s=t.subarray(2);for(let r=0;r>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,i,a){let s=t[0],r=g.cc*i,h=g.rpn*i,d=`GS CH${i+1} `;s<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#a[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][s+f]()}):s<19||(s<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[i]=+!c},!1,()=>{e.setChType(i,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][s+f-19]||(()=>{}))()}):s<76||console.debug(`Unknown GS part address: ${s}`))},o=function(t,i){let a=t[0],s=`GS CH${i+1} `;a<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[g.cc*i+u[32]]=r},()=>{}][a+h]()}):a<32?console.warn(`Unknown GS misc address: ${a}`):a<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${s}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${s}EFX: o${["ff","n"][r]}`)}][a+h-32]()}):console.warn(`Unknown GS misc address: ${a}`)};this.#R.add([66,18,64,16],(t,i)=>{l(t,e.chRedir(9,i,!0),i)}).add([66,18,64,17],(t,i)=>{l(t,e.chRedir(0,i,!0),i)}).add([66,18,64,18],(t,i)=>{l(t,e.chRedir(1,i,!0),i)}).add([66,18,64,19],(t,i)=>{l(t,e.chRedir(2,i,!0),i)}).add([66,18,64,20],(t,i)=>{l(t,e.chRedir(3,i,!0),i)}).add([66,18,64,21],(t,i)=>{l(t,e.chRedir(4,i,!0),i)}).add([66,18,64,22],(t,i)=>{l(t,e.chRedir(5,i,!0),i)}).add([66,18,64,23],(t,i)=>{l(t,e.chRedir(6,i,!0),i)}).add([66,18,64,24],(t,i)=>{l(t,e.chRedir(7,i,!0),i)}).add([66,18,64,25],(t,i)=>{l(t,e.chRedir(8,i,!0),i)}).add([66,18,64,26],(t,i)=>{l(t,e.chRedir(10,i,!0),i)}).add([66,18,64,27],(t,i)=>{l(t,e.chRedir(11,i,!0),i)}).add([66,18,64,28],(t,i)=>{l(t,e.chRedir(12,i,!0),i)}).add([66,18,64,29],(t,i)=>{l(t,e.chRedir(13,i,!0),i)}).add([66,18,64,30],(t,i)=>{l(t,e.chRedir(14,i,!0),i)}).add([66,18,64,31],(t,i)=>{l(t,e.chRedir(15,i,!0),i)}).add([66,18,64,64],(t,i)=>{o(t,e.chRedir(9,i,!0))}).add([66,18,64,65],(t,i)=>{o(t,e.chRedir(0,i,!0))}).add([66,18,64,66],(t,i)=>{o(t,e.chRedir(1,i,!0))}).add([66,18,64,67],(t,i)=>{o(t,e.chRedir(2,i,!0))}).add([66,18,64,68],(t,i)=>{o(t,e.chRedir(3,i,!0))}).add([66,18,64,69],(t,i)=>{o(t,e.chRedir(4,i,!0))}).add([66,18,64,70],(t,i)=>{o(t,e.chRedir(5,i,!0))}).add([66,18,64,71],(t,i)=>{o(t,e.chRedir(6,i,!0))}).add([66,18,64,72],(t,i)=>{o(t,e.chRedir(7,i,!0))}).add([66,18,64,73],(t,i)=>{o(t,e.chRedir(8,i,!0))}).add([66,18,64,74],(t,i)=>{o(t,e.chRedir(10,i,!0))}).add([66,18,64,75],(t,i)=>{o(t,e.chRedir(11,i,!0))}).add([66,18,64,76],(t,i)=>{o(t,e.chRedir(12,i,!0))}).add([66,18,64,77],(t,i)=>{o(t,e.chRedir(13,i,!0))}).add([66,18,64,78],(t,i)=>{o(t,e.chRedir(14,i,!0))}).add([66,18,64,79],(t,i)=>{o(t,e.chRedir(15,i,!0))}),this.#D.add([54,65],(t,i)=>{e.switchMode("x5d");let a=(t[1]<<7)+t[0],s=(t[3]<<7)+t[2],r=e.chRedir(a&15,i,!0),h=g.cc*r;[()=>{s<1||(s<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=s-1,e.#e[h+u[0]]=82):s<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#a[r]=s-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#a[r]=be[s-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=s},()=>{s<31&&(e.#e[h+u[10]]=Math.round((s-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(s)},()=>{e.#e[h+u[91]]=D(s)},()=>{e.#r[r*g.rpn+3]=s>8191?s-16320:64+s},()=>{e.#r[r*g.rpn+1]=s>8191?s-16320:64+s},()=>{s>0&&(e.#r[r*g.rpn]=s)},()=>{}][a>>4]()}).add([54,76,0],(t,i)=>{e.switchMode("x5d",!0);let a="",s=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{d+=` -${s} ${r} ${h} ${a.trim().replace("Init Voice","")}`,r++,a="";break}}r>99&&(s=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,i)=>{e.switchMode("x5d",!0);let a="",s=90,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{d+=` -${s} ${r} ${h} ${a.trim().replace("Init Combi","")}`,r++,a="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,i)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,i)=>{e.switchMode("x5d",!0),S(t,(a,s)=>{s>0&&s<3&&e.setEffectType(s-1,44,a)})}).add([54,104],(t,i)=>{e.switchMode("x5d",!0),S(t,function(a,s,r,h){if(s<192){let d=e.chRedir(Math.floor(s/12),i,!0),c=d*g.cc;switch(s%12){case 0:{a<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#a[d]=a):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#a[d]=be[a-128]),a>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=a;break}case 2:{e.#r[d*g.rpn+3]=a>127?a-192:64+a;break}case 3:{e.#r[d*g.rpn+1]=a>127?a-192:64+a;break}case 4:{a<31&&(e.#e[c+u[10]]=Math.round((a-15)*4.2+64));break}case 5:{let f=a>>4,p=a&15;e.#e[c+u[91]]=D(p),e.#e[c+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(a&15,i,!0),p=a>>4;e.#c[d]=a,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(s-192,i,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#U[c+(s-1)*16]=h,([!1,()=>{let f=e.#U[s-1<<4];if(f<3)if(e.#C[s]=1,f==2)for(let p=0;p{e.#r[s*g.rpn+3]=h+40},()=>{e.#r[s*g.rpn+1]=h+14},()=>{e.#r[s*g.rpn]=h},!1,()=>{e.#e[g.cc*s+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*s+u[7]]=h},()=>{e.#e[g.cc*s+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0)}).add([22,18,2],(t,i,a)=>{e.switchMode("mt32");let s=e.chRedir(a,i,!0),r=t[1]+(t[0]<<7);r<10&&(e.#C[s]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#k[(s-1)*g.cmt+c]=h)})}).add([22,18,3],(t,i,a)=>{if(e.switchMode("mt32"),t[0]){let s=t[1]-16}else{let s=t[1];t.subarray(2).forEach((r,h)=>{let d=h+s;e.#U[d]=r;let c=e.chRedir(1+d>>4,i,!0),f=d&15;([!1,()=>{let p=e.#U[c-1<<4];if(p<3)if(e.#C[c]=1,p==2)for(let b=0;b{e.#r[c*g.rpn+3]=r+40},()=>{e.#r[c*g.rpn+1]=r+14},()=>{e.#r[c*g.rpn]=r},!1,()=>{e.#e[g.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[g.cc*c+u[7]]=r},()=>{e.#e[g.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,i,a)=>{e.switchMode("mt32");let s=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+s,c=e.chRedir(Math.floor(d/246+1),i,!0),f=d%246;f<14&&(e.#k[(c-1)*g.cmt+f]=r),f<10&&(e.#C[c]=1)})}).add([22,18,5],(t,i,a)=>{e.switchMode("mt32");let s=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=s+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME -000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,i,a)=>{e.switchMode("mt32");let s=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=s+h;d>1)*g.cmt+d]=r)})}).add([22,18,16],(t,i,a)=>{e.switchMode("mt32");let s=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+s;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let i=t[1],a=" ".repeat(i);t.subarray(2).forEach(s=>{s>31&&(a+=String.fromCharCode(s))}),e.#M=a.padStart(20," "),e.#L=Date.now()+3200}).add([22,18,82],(t,i)=>{let a=e.chRedir(0,i,!0);for(let s=0;s<16;s++)e.#u.ano(a+s),s&&s<10&&(e.#a[a+s]=V[s-1]);console.info("MT-32 alt reset complete.")}),this.#D.add([66,0],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,i)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,i)=>{let a=t[0];switch(a){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(a<10){let s=[0,0,0,0],r=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][a+d]()}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,i)=>{}).add([66,18,0,2],(t,i)=>{}).add([66,18,1],(t,i)=>{let a=e.chRedir(t[0],i,!0),s=a*g.cc,r=t[1],h=`NS5R CH${a+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[s+u[0]]=d||121},()=>{e.#e[s+u[32]]=d},()=>{e.#a[a]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,i,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[a]=+!d},()=>{e.setChType(a,d,m.ns5r),console.debug(`${h}type: ${P[d]}`)},()=>{e.#r[g.rpn*a+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[s+u[7]]=d},()=>{e.#e[s+u[11]]=d},()=>{},()=>{},()=>{e.#e[s+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[s+u[93]]=d},()=>{e.#e[s+u[91]]=d},()=>{e.#e[s+u[76]]=d},()=>{e.#e[s+u[77]]=d},()=>{e.#e[s+u[78]]=d},()=>{e.#e[s+u[74]]=d},()=>{e.#e[s+u[71]]=d},()=>{e.#e[s+u[73]]=d},()=>{e.#e[s+u[75]]=d},()=>{e.#e[s+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[s+u[5]]=d},()=>{e.#e[s+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,i)=>{let a=t[0];if(a<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let s=a-32;e.#h=Date.now()+3200,e.#o=10,e.#g.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+s,p=f>>4,b=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#g[b*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1;let a="";S(t,(s,r)=>{r<8?(s>31&&(a+=String.fromCharCode(s)),r==7&&(e.aiEfxName=a)):r<10&&e.setEffectType(r-8,44,s)})}).add([66,53],(t,i)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(a,s){switch(!0){case s<2944:{let r=e.chRedir(Math.floor(s/92),i,!0),h=r*g.cc;switch(s%92){case 0:{e.#e[h+u[0]]=a||121;break}case 1:{e.#e[h+u[32]]=a;break}case 2:{e.#a[r]=a,a>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(a,i,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*g.rpn+3]=a<40||a>88?a+(a>63?-192:64):a;break}case 9:case 10:{e.#e[h+u[7]]=a;break}case 11:{e.#e[h+u[11]]=a;break}case 14:{e.#e[h+u[10]]=a||128;break}case 19:{e.#e[h+u[93]]=a;break}case 20:{e.#e[h+u[91]]=a;break}case 84:{e.#e[h+u[65]]=a;break}case 85:{e.#e[h+u[5]]=a;break}}break}case s<3096:break;case s<3134:break;case s<8566:break}})}).add([66,54],(t,i)=>{e.switchMode("ns5r",!0);let a="",s=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:{s=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` -${s} ${r} ${h} ${a.trim().replace("Init Voice","")}`,r++,a="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,i)=>{e.switchMode("ns5r",!0);let a="",s=88,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%126;switch(!0){case p<10:{c>31&&(a+=String.fromCharCode(c));break}case p==11:break;case p==12:break;case p==13:{d+=` -${s} ${r} ${h} ${a.trim().replace("Init Combi","")}`,r++,a="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let i=new Uint8Array(5760);S(t,(a,s,r)=>{if(s<720)for(let h=0;h<8;h++)i[s*8+h]=a>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:i})}).add([76],(t,i,a)=>{e.#D.run([66,...t],i,a)}),this.#V.add([16,0,8,0],(t,i,a)=>{let s=(t[2]<<4)+t[3],r="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#S=s?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,i,a)=>{let s=e.chRedir(t[1],i,!0),r=g.cc*s,h=g.rpn*s,d=(t[3]<<4)+t[4],c=`K11 CH${s+1} `;([()=>{d<128?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[r+u[0]]=0,e.#a[s]=d):(e.setChType(s,e.CH_DRUMS,m.k11),e.#a[s]=d-128)},()=>{let f=e.chRedir(d,i,!0);e.#c[s]=f,s!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[r+u[7]]=d},()=>{e.#n[s]=d},()=>{e.#e[r+u[10]]=d},()=>{e.#r[h+3]=d+40},()=>{e.#r[h+1]=d>>1,e.#r[h+2]=d&1},()=>{e.#e[r+u[91]]=d?127:0},()=>{},()=>{e.#e[r+u[74]]=d},()=>{e.#e[r+u[73]]=d},()=>{e.#e[r+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,i,a)=>{let s=(t[2]<<4)+t[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${s}`)},()=>{console.debug(`${r}reverb time: ${s}`)},()=>{console.debug(`${r}reverb predelay: ${s}`)},()=>{console.debug(`${r}depth high: ${s}`)},()=>{console.debug(`${r}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,i,a)=>{let s=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc;[()=>{s<128?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#a[r]=s):s<160?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#a[r]=s-100):(e.setChType(r,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#a[r]=s-160)},()=>{let d=e.chRedir(s,i,!0);e.#c[r]=d,r!=d&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,i,a)=>{let s=(t[2]<<4)+t[3],r=e.chRedir(t[1],i,!0),h=r*g.cc,d=r*g.rpn,c=`GMLX CH${r+1} `;[()=>{e.#n[r]=s},()=>{e.#e[h+u[7]]=s},()=>{e.#e[h+u[10]]=s},()=>{e.#e[h+u[91]]=s?127:0},()=>{e.#r[d+3]=s+40},()=>{e.#r[d+1]=s},()=>{e.#r[d]=s},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,i,a)=>{let s=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=s*129/16383*100;break}case 5:{s-64;break}case 6:{console.debug(`SG global reverb: ${s?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[s]}`);break}}break}default:if(t[0]>>4==1){let r=e.chRedir(t[0]&15,i,!0);if(t[1]==2){let h=e.chRedir(s,i,!0);e.#c[r]=h,r!=h&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*r+u[7]]=s)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,i,a)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#E.add([127,0],(t,i,a)=>{e.switchMode("motif");let s=new Uint8Array([127,1,...t]);e.#E.run(s,i,a)}).add([127,1,0,0],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES system ",r=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][r+d]||(()=>{console.info(`Unrecognized ${s}ID: ${r+d}`)}))()})}).add([127,1,0,0,14],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES bulk header ",r=[];r[95]=(h,d,c)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,i,a)=>{e.switchMode("s90es");let s="S90/Motif ES bulk footer ",r=[];r[95]=(h,d,c)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,i,a)=>{e.switchMode("s90es");let s=e.chRedir(t[0],i,!0),r=g.cc*s,h=t[1],d=`S90/Motif ES bulk CH${s<16?s+1:"U"+(s-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[r+u[0]]=c},()=>{c&&(e.#n[s]=1),e.#e[r+u[32]]=c,e.#i[s]=this.setChType(s,[32,40].indexOf(c)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{c&&(e.#n[s]=1),e.#a[s]=c},()=>{let p=e.chRedir(c,i,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[s]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[r+u[7]]=c},()=>{e.#e[r+u[10]]=c},!1,!1,!1,()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[128]]=c},()=>{},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},!1,()=>{e.#e[r+u[65]]=c},()=>{e.#e[r+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,i,a)=>{e.switchMode("s90es");let s=t[0];t.subarray(1).forEach((r,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=r-64},()=>{let f=C[r]},()=>{let f=r/10},()=>{let f=r}][s+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,l,o){this.#t=e,this.start=n,this.end=l,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,l){super(!0,e,n,l)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let l=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(l.push(i),t.#t=i.index)})}return l}getRange(e,n){e>n&&([e,n]=[n,e]);let l=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),i=!0;for(let a=0;a=e&&(o=a):o=o<0?a:o;for(;i;)this[o]?.end=e&&l.push(this[o]):i=!1,o++;return l}};var _e=0xffffffffffff,ve=function(e){let n=new Q,l=this,o=e.timeDivision,t=120,i=new Q,a=0,s=0;i.push(new q(0,_e,[120,0])),e.track.forEach(function(c){a=0,c.event.forEach(function(f){a+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,i[i.length-1]&&i.push(new q(a,0xffffffffffff,[t,0])))})}),i.fresh(),i.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let r=120;i.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):r==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),r=c.data[0])});let h=0,d=120;return i.forEach(function(c){let f=c.start,p=f/d/o*60+h;d=c.data[0],h=p-f/d/o*60,c.data[1]=h}),console.debug("All tempo changes: ",i),t=120,a=0,s=0,e.track.forEach(function(c,f){a=0,s=0;let p=f+1;c.event.forEach(function(b,y){a+=b.deltaTime;let $=i.step(a,!0)[0];$&&(t=$.data[0],s=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(a/t/o*60+s,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends U{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#c=120;#i=4;#e=4;#b=0;#a=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#i=4,this.#e=4,this.#b=0,this.#a=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#a/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#i)}get noteBeat(){let e=this.noteOverall%this.#i;return e<0&&(e+=this.#i),e}getTimeSig(){return[this.#i,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#a&&(this.#a=e);let n=this.#t?.step(e)||[],l=0,o=new Set,t=this,i=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&l++),y.data.type==8&&o.has($.part*128+$.data[0])&&l++;let w=t.device.runJson($);switch(w?.reply){case"meta":{i.push(w);break}}w?.reply&&delete w.reply}),i?.length>0&&this.dispatchEvent("meta",i);let a=this.device.getActive(),s=[],r=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let M=w[$]-t.#p[$],Y=u.length*$;if(M>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(M-M*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(M-M*t.smoothingDcy**L)}});let p=0;return a.forEach(function(y,$){y&&(s[$]=t.device.getVel($),p+=s[$].size)}),{extraPoly:l,curPoly:p,chInUse:a,chKeyPr:s,chPitch:r,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,l=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=l,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(i){(o.#h[i.meta]||console.debug).call(o,i.meta,i.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,i){o.#o?.length<1&&(o.#o=i)},this.#h[81]=function(t,i){let a=o.noteProgress,s=o.#n||.5;o.#c=6e7/i,o.#n=i/1e6,o.#b+=a*(s/o.#n)-a},this.#h[88]=function(t,i){let a=o.noteProgress,s=o.noteOverall,r=o.noteBar,h=o.noteBeat,d=o.#i,c=o.#e;o.#i=i[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,s=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[l%12]*this.noteHeight;if(o>0)switch(i.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,i.fillRect(a+1,s+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{i.clearRect(a+1+this.noteOutline,s+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let l=super.render(n),o=this,t=this.context,i=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let a=metrics.actualBoundingBoxLeft,s=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${l.eventCount.toString().padStart(3,"0")} ${(l.curPoly+l.extraPoly).toString().padStart(3,"0")}/512 ${l.tSig[0].toString().padStart(2," ")}/${l.tSig[1].toString().padEnd(2," ")} ${(l.noteBar+1).toString().padStart(3," ")}:${Math.floor(l.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(l.tempo).toString().padStart(3," ")}.${Math.floor(l.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(l.master.volume).toString().padStart(3," ")}.${Math.floor(l.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+a,s+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+a,s+o.fontPadding+o.lineHeight*2),l.chKeyPr.forEach((r,h)=>{r.forEach((d,c)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&r.part1?32:16)),c=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+a+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(c.name,o.fontPadding+a+(r>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(r>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+r%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(l.chContr[f+u[p]]/-127))})}}l.letter.expire<=i,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let r=0;r<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+r%(this.mode>1?32:16)),o.noteWidth*16*(l.strength[h]/255),o.lineHeight-1)}for(let r in o.eventBuffer)delete o.eventBuffer[r];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let l=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,i=t.part*128+t.note,a=this.eventBuffer[i];this.eventBuffer[i]=t,a?.velo>0&&t.velo==0&&this.eventQueue.push(a)})}},Dt=Fe;export{Dt as default}; +122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#c=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#c=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#c=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#c=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#c=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,s)=>{r.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][s]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,s)=>{r.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][s]}: ${r}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#c?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#v=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#v.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#c=e.#c||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#v.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#c=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(s,i)=>{a[i]=s};if(t.subarray(1).forEach((s,i)=>{let h=i+t[0];([r,r,r,r,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(s,i)}),t[0]<4){let s=0;a.forEach(i=>{s=s<<4,s+=i}),s-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(0,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(0,!0,i),console.debug(`${a}sub type: ${i+1}`)},i=>{console.debug(`${a}time: ${ae(i)}s`)},i=>{console.debug(`${a}diffusion: ${i}`)},i=>{console.debug(`${a}initial delay: ${i}`)},i=>{console.debug(`${a}HPF cutoff: ${T[i]}Hz`)},i=>{console.debug(`${a}LPF cutoff: ${T[i]}Hz`)},i=>{console.debug(`${a}width: ${i}`)},i=>{console.debug(`${a}height: ${i}`)},i=>{console.debug(`${a}depth: ${i}`)},i=>{console.debug(`${a}wall type: ${i}`)},i=>{console.debug(`${a}dry/wet: ${i}`)},i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},!1,!1,i=>{console.debug(`${a}delay: ${i}`)},i=>{console.debug(`${a}density: ${i}`)},i=>{console.debug(`${a}balance: ${i}`)},i=>{},i=>{console.debug(`${a}feedback: ${i}`)},i=>{}][t[0]+s]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(1,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(1,!0,i),console.debug(`${a}sub type: ${i+1}`)},i=>{console.debug(`${a}LFO: ${te[i]}Hz`)},i=>{},i=>{console.debug(`${a}feedback: ${i}`)},i=>{console.debug(`${a}delay offset: ${ie(i)}ms`)},i=>{},i=>{console.debug(`${a}low: ${T[i]}Hz`)},i=>{console.debug(`${a}low: ${i-64}dB`)},i=>{console.debug(`${a}high: ${T[i]}Hz`)},i=>{console.debug(`${a}high: ${i-64}dB`)},i=>{console.debug(`${a}dry/wet: ${i}`)},i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},i=>{console.debug(`${a}to reverb: ${E(i)}dB`)},!1,i=>{},i=>{},i=>{},i=>{console.debug(`${a}LFO phase diff: ${(i-64)*3}deg`)},i=>{console.debug(`${a}input mode: ${i?"stereo":"mono"}`)},i=>{}][t[0]-32+s]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(2,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(2,!0,i),console.debug(`${a}sub type: ${i+1}`)}][t[0]-64+s]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,s)=>{[i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},i=>{console.debug(`${a}to reverb: ${E(i)}dB`)},i=>{console.debug(`${a}to chorus: ${E(i)}dB`)},i=>{console.debug(`${a}connection: ${i?"system":"insertion"}`)},i=>{console.debug(`${a}channel: CH${i+1}`)},i=>{console.debug(`${a}mod wheel: ${i-64}`)},i=>{console.debug(`${a}bend wheel: ${i-64}`)},i=>{console.debug(`${a}channel after touch: ${i-64}`)},i=>{console.debug(`${a}AC1: ${i-64}`)},i=>{console.debug(`${a}AC2: ${i-64}`)}][t[0]-86+s](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let s=r+t[0];if(s==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let i=s-1>>2,h=s-1&3,d=`XG EQ ${i} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],r=t[1],s=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((i,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${s}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${s}sub type: ${d+1}`)}][r+h]||function(){})(i)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#L=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let r=t.subarray(1);for(let s=0;s>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=t[1],i=g.cc*r,h=`XG CH${r+1} `,d=`Unknown XG part address ${s}.`;t.subarray(2).forEach((l,f)=>{s<1?console.debug(d):s<41?([()=>{e.#e[i+u[0]]=l},()=>{e.#e[i+u[32]]=l},()=>{e.#r[r]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[r]=p,r!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#k[r]=+!l},()=>{},()=>{e.setChType(r,l,m.xg),console.debug(`${h}type: ${P[l]||l}`)},()=>{e.#i[g.rpn*r+3]=l},!1,!1,()=>{e.#e[i+u[7]]=l},!1,!1,()=>{e.#e[i+u[10]]=l||128},!1,!1,()=>{e.#e[i+u[128]]=l},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[91]]=l},()=>{e.#e[i+u[94]]=l},()=>{e.#e[i+u[76]]=l},()=>{e.#e[i+u[77]]=l},()=>{e.#e[i+u[78]]=l},()=>{e.#e[i+u[74]]=l},()=>{e.#e[i+u[71]]=l},()=>{e.#e[i+u[73]]=l},()=>{e.#e[i+u[75]]=l},()=>{e.#e[i+u[72]]=l}][s+f-1]||(()=>{}))():s<48?console.debug(d):s<111?s>102&&s<105&&(e.#e[i+u[[5,65][s&1]]]=l):s<114?console.debug(d):s<116?console.debug(`${h}EQ ${["bass","treble"][s&1]} gain: ${l-64}dB`):s<118?console.debug(d):s<120?console.debug(`${h}EQ ${["bass","treble"][s&1]} freq: ${l}`):console.debug(d)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=t[1],i=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((h,d)=>{let l=d+s;switch(l){case 1:{console.info(`${i}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(l<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][l-3>>1];l&1?l<23?(console.debug(`${i}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${i}${f} scale break point: ${h}`):console.debug(`${i}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],s="MU1000 System: ";t.subarray(1).forEach((i,h)=>{let d=r+h;d==8?console.debug(`${s}LCD contrast set to ${i}.`):d==18?(e.#E=i?126:0,console.debug(`${s}bank defaults to ${i?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!i,console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],s=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let i=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",i),e.dispatchEvent("channelmax",i+63)),console.info(`${s}Show CH1~64`);break}case 3:{let i=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",i),e.#x&&e.dispatchEvent("channelmax",i+31),console.info(`${s}Show CH${i+1}~CH${i+32}`);break}default:console.debug(`${s}unknown switch ${r} invoked.`)}else if(r<32){if(e.#x){let i=e.chRedir(r-16+(e.#Y<<4),a,!0);e.dispatchEvent("channelactive",i)}}else if(r<36){let i=e.chRedir(r-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",i),e.dispatchEvent("channelmax",i+15),e.#Y=r-32),console.info(`${s}Show CH${i+1}~CH${i+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=`PLG-100SG CH${r+1} `,i=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((l,f)=>{f%2==0?h+=re[l]||l.toString().padStart("0"):d+=l*13}),i>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=i+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${s}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#v.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#v.add([89,0],(t,a,r)=>{if(e.eprom){let s=t[0],i=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${i.toString(16).padStart(6,"0")}, ${s} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,l)=>{let f=l>>3,p=l&7;if(p==7)for(let b=0;b<7;b++)h[i+7*f+b]+=(d>>6-b&1)<<7;else h[i+7*f+p]=d})}}).add([89,1],(t,a,r)=>{let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${s.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=s)}).add([89,2],(t,a,r)=>{if(e.eprom){let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${s.toString(16).padStart(6,"0")}.`);let i=e.eprom.data;t.subarray(4).forEach((h,d)=>{let l=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)i[s+7*l+p]+=(h>>6-p&1)<<7;else i[s+7*l+f]=h})}}).add([89,3],(t,a,r)=>{}),this.#v.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let l=d+t[0];[i,i,i,i,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][l](h,l)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let s=e.chRedir(t[0],a,!0),i=t[1],h=g.cc*s,d=`TG300 CH${s+1} `;t.subarray(2).forEach((l,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=l},()=>{e.#e[h+u[32]]=l},()=>{e.#r[s]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+i]||(()=>{}))(l,f+i):f<21||(f<47?([()=>{e.#k[s]=+!l},()=>{},()=>{},()=>{e.#i[g.rpn*s+3]=l},()=>{},()=>{e.#e[h+u[7]]=l},!1,!1,()=>{e.#e[h+u[10]]=l||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${l}`)},()=>{console.debug(`${d} AC2 at cc${l}`)},()=>{e.#e[h+u[128]]=l},()=>{e.#e[h+u[93]]=l},()=>{e.#e[h+u[91]]=l},()=>{e.#e[h+u[94]]=l},()=>{e.#e[h+u[76]]=l},()=>{e.#e[h+u[77]]=l},()=>{e.#e[h+u[74]]=l},()=>{e.#e[h+u[71]]=l},()=>{e.#e[h+u[73]]=l},()=>{e.#e[h+u[75]]=l},()=>{e.#e[h+u[72]]=l},()=>{e.#e[h+u[78]]=l}][f+i-21]||(()=>{}))(l,f+i):f<95||([()=>{e.#e[h+u[65]]=l},()=>{e.#e[h+u[5]]=l}][f+i-95]||(()=>{}))(l,f+i))})}).add([43,7,0],(t,a,r)=>{let s=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",s)}).add([43,7,1],(t,a,r)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(s,i){let h=Math.floor(i/16),d=i%16,l=(d*3+h)*7,f=7,p=0;for(l-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#E=3,e.#c=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#c=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let l=d+t[0];[i,i,i,i,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][l](h,d)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((s,i)=>{r+=String.fromCharCode(Math.max(32,s))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,s)=>{let i=`GS ${a+s>55?"chorus":"reverb"} `;([()=>{console.info(`${i}type: ${_[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${i}predelay: ${r}ms`)},()=>{console.info(`${i}type: ${oe[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${i}to reverb: ${E(r)}`)},()=>{console.debug(`${i}to delay: ${E(r)}`)}][a+s-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,s)=>{let i="GS delay ";([()=>{console.info(`${i}type: ${ce[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${i}to reverb: ${E(r)}`)}][a+s-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,s)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+s]||function(){console.warn(`Unknown GS EQ address: ${t[0]+s}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(s,i){let h=le(e.#w.subarray(10,12),i,s);h&&console.debug(`${a}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((s,i)=>{([()=>{e.setEffectTypeRaw(3,!1,32+s)},()=>{e.setEffectTypeRaw(3,!0,s),console.info(`${a}type: ${F(e.#w.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(s)}dB`)},()=>{console.debug(`${a}to chorus: ${E(s)}dB`)},()=>{console.debug(`${a}to delay: ${E(s)}dB`)},!1,()=>{console.debug(`${a}1 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${a}1 depth: ${s-64}`)},()=>{console.debug(`${a}2 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${a}2 depth: ${s-64}`)},()=>{console.debug(`${a}to EQ: ${s?"ON":"OFF"}`)}][t[0]+i]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(s,t[0]+i)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let a=e.#p[t[0]-1],r=t[1];a.fill(0);let s=t.subarray(2);for(let i=0;i>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,r){let s=t[0],i=g.cc*a,h=g.rpn*a,d=`GS CH${a+1} `;s<3?t.subarray(1).forEach((l,f)=>{[()=>{e.#e[i+u[0]]=l},()=>{e.#r[a]=l},()=>{let p=e.chRedir(l,r,!0);e.#l[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][s+f]()}):s<19||(s<44?t.subarray(1).forEach((l,f)=>{([()=>{e.#k[a]=+!l},!1,()=>{e.setChType(a,l<<1,m.gs),console.debug(`${d}type: ${l?"drum ":"melodic"}${l||""}`)},()=>{e.#i[h+3]=l},!1,()=>{e.#e[i+u[7]]=l},!1,!1,()=>{e.#e[i+u[10]]=l||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${l}`)},()=>{console.debug(`${d}CC 2: cc${l}`)},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[91]]=l},!1,!1,()=>{e.#i[h+1]=l},()=>{e.#i[h+2]=l},()=>{e.#e[i+u[94]]=l}][s+f-19]||(()=>{}))()}):s<76||console.debug(`Unknown GS part address: ${s}`))},o=function(t,a){let r=t[0],s=`GS CH${a+1} `;r<2?t.subarray(1).forEach((i,h)=>{[()=>{e.#e[g.cc*a+u[32]]=i},()=>{}][r+h]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((i,h)=>{[()=>{console.debug(`${s}EQ: o${["ff","n"][i]}`)},()=>{},()=>{console.debug(`${s}EFX: o${["ff","n"][i]}`)}][r+h-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#R.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{o(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{o(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{o(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{o(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{o(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{o(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{o(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{o(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{o(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{o(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{o(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{o(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{o(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{o(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{o(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{o(t,e.chRedir(15,a,!0))}),this.#D.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],s=(t[3]<<7)+t[2],i=e.chRedir(r&15,a,!0),h=g.cc*i;[()=>{s<1||(s<101?(e.setChType(i,e.CH_MELODIC,m.x5d),e.#r[i]=s-1,e.#e[h+u[0]]=82):s<229?(e.setChType(i,e.CH_MELODIC,m.x5d),e.#r[i]=s-101,e.#e[h+u[0]]=56):(e.setChType(i,e.CH_DRUMS,m.x5d),e.#r[i]=be[s-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=s},()=>{s<31&&(e.#e[h+u[10]]=Math.round((s-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(s)},()=>{e.#e[h+u[91]]=D(s)},()=>{e.#i[i*g.rpn+3]=s>8191?s-16320:64+s},()=>{e.#i[i*g.rpn+1]=s>8191?s-16320:64+s},()=>{s>0&&(e.#i[i*g.rpn]=s)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",s=82,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){if(f<16400){let p=f%164;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{d+=` +${s} ${i} ${h} ${r.trim().replace("Init Voice","")}`,i++,r="";break}}i>99&&(s=90,i=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",s=90,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){if(f<13600){let p=f%136;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{d+=` +${s} ${i} ${h} ${r.trim().replace("Init Combi","")}`,i++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,s)=>{s>0&&s<3&&e.setEffectType(s-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,s,i,h){if(s<192){let d=e.chRedir(Math.floor(s/12),a,!0),l=d*g.cc;switch(s%12){case 0:{r<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[l+u[0]]=82,e.#r[d]=r):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[l+u[0]]=62,e.#r[d]=be[r-128]),r>0&&(e.#n[d]=1);break}case 1:{e.#e[l+u[7]]=r;break}case 2:{e.#i[d*g.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#i[d*g.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[l+u[10]]=Math.round((r-15)*4.2+64));break}case 5:{let f=r>>4,p=r&15;e.#e[l+u[91]]=D(p),e.#e[l+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(r&15,a,!0),p=r>>4;e.#l[d]=r,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(s-192,a,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#c=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0),i=t[1];t.subarray(2).forEach((h,d)=>{let l=d+i;e.#U[l+(s-1)*16]=h,([!1,()=>{let f=e.#U[s-1<<4];if(f<3)if(e.#T[s]=1,f==2)for(let p=0;p{e.#i[s*g.rpn+3]=h+40},()=>{e.#i[s*g.rpn+1]=h+14},()=>{e.#i[s*g.rpn]=h},!1,()=>{e.#e[g.cc*s+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*s+u[7]]=h},()=>{e.#e[g.cc*s+u[10]]=Math.ceil(h*9.05)}][l]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0),i=t[1]+(t[0]<<7);i<10&&(e.#T[s]=1),t.subarray(2).forEach((h,d)=>{let l=d+i;l<14&&(e.#S[(s-1)*g.cmt+l]=h)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let s=t[1]-16}else{let s=t[1];t.subarray(2).forEach((i,h)=>{let d=h+s;e.#U[d]=i;let l=e.chRedir(1+d>>4,a,!0),f=d&15;([!1,()=>{let p=e.#U[l-1<<4];if(p<3)if(e.#T[l]=1,p==2)for(let b=0;b{e.#i[l*g.rpn+3]=i+40},()=>{e.#i[l*g.rpn+1]=i+14},()=>{e.#i[l*g.rpn]=i},!1,()=>{e.#e[g.cc*l+u[91]]=i?127:0},!1,()=>{e.#e[g.cc*l+u[7]]=i},()=>{e.#e[g.cc*l+u[10]]=Math.ceil(i*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let s=t[1]+(t[0]<<7);t.subarray(2).forEach((i,h)=>{let d=h+s,l=e.chRedir(Math.floor(d/246+1),a,!0),f=d%246;f<14&&(e.#S[(l-1)*g.cmt+f]=i),f<10&&(e.#T[l]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let s=(t[0]<<7)+t[1];t.subarray(2).forEach((i,h)=>{let d=s+h,l=Math.floor(d/8),f=d&7,p=l*8;e.#q[d]=i,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*l;y=`MT-m:${i.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,i+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:l}),e.userBank.load(`MSB LSB PRG NME +000 127 ${l} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let s=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((i,h)=>{let d=s+h;d>1)*g.cmt+d]=i)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let s=t[1],i=!1,h=function(d,l){e.#l[l-12]=d,i=!0};t.subarray(2).forEach((d,l)=>{let f=l+s;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,l)}),i&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(s=>{s>31&&(r+=String.fromCharCode(s))}),e.#C=r.padStart(20," "),e.#L=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let s=0;s<16;s++)e.#u.ano(r+s),s&&s<10&&(e.#r[r+s]=V[s-1]);console.info("MT-32 alt reset complete.")}),this.#D.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#c=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#c=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#c=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{[i,i,i,i,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][r+d]()}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=r*g.cc,i=t[1],h=`NS5R CH${r+1} `;t.subarray(2).forEach((d,l)=>{let f=i+l;f<3?[()=>{e.#e[s+u[0]]=d||121},()=>{e.#e[s+u[32]]=d},()=>{e.#r[r]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,a,!0);e.#l[r]=p,r!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#k[r]=+!d},()=>{e.setChType(r,d,m.ns5r),console.debug(`${h}type: ${P[d]}`)},()=>{e.#i[g.rpn*r+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[s+u[7]]=d},()=>{e.#e[s+u[11]]=d},()=>{},()=>{},()=>{e.#e[s+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[s+u[93]]=d},()=>{e.#e[s+u[91]]=d},()=>{e.#e[s+u[76]]=d},()=>{e.#e[s+u[77]]=d},()=>{e.#e[s+u[78]]=d},()=>{e.#e[s+u[74]]=d},()=>{e.#e[s+u[71]]=d},()=>{e.#e[s+u[73]]=d},()=>{e.#e[s+u[75]]=d},()=>{e.#e[s+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[s+u[5]]=d},()=>{e.#e[s+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let s=r-32;e.#h=Date.now()+3200,e.#o=10,e.#g.fill(0);let i=t.subarray(1),h=4;i.forEach(function(d,l){let f=l+s,p=f>>4,b=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#g[b*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#c=!1;let r="";S(t,(s,i)=>{i<8?(s>31&&(r+=String.fromCharCode(s)),i==7&&(e.aiEfxName=r)):i<10&&e.setEffectType(i-8,44,s)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#c=!1,S(t,function(r,s){switch(!0){case s<2944:{let i=e.chRedir(Math.floor(s/92),a,!0),h=i*g.cc;switch(s%92){case 0:{e.#e[h+u[0]]=r||121;break}case 1:{e.#e[h+u[32]]=r;break}case 2:{e.#r[i]=r,r>0&&(e.#n[i]=1);break}case 3:{let d=e.chRedir(r,a,!0);e.#l[i]=d,i!=d&&(console.info(`NS5R CH${i+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#i[i*g.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[h+u[7]]=r;break}case 11:{e.#e[h+u[11]]=r;break}case 14:{e.#e[h+u[10]]=r||128;break}case 19:{e.#e[h+u[93]]=r;break}case 20:{e.#e[h+u[91]]=r;break}case 84:{e.#e[h+u[65]]=r;break}case 85:{e.#e[h+u[5]]=r;break}}break}case s<3096:break;case s<3134:break;case s<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",s=80,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){let p=f%158;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{s=l&127;break}case p==12:{h=l&127;break}case p==13:{d+=` +${s} ${i} ${h} ${r.trim().replace("Init Voice","")}`,i++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",s=88,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){let p=f%126;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:break;case p==12:break;case p==13:{d+=` +${s} ${i} ${h} ${r.trim().replace("Init Combi","")}`,i++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,s,i)=>{if(s<720)for(let h=0;h<8;h++)a[s*8+h]=r>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#D.run([66,...t],a,r)}),this.#V.add([16,0,8,0],(t,a,r)=>{let s=(t[2]<<4)+t[3],i="K11 ";([()=>{e.switchMode("k11",!0),e.#c=!1,e.#E=s?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${i}reverb type: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let s=e.chRedir(t[1],a,!0),i=g.cc*s,h=g.rpn*s,d=(t[3]<<4)+t[4],l=`K11 CH${s+1} `;([()=>{d<128?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[i+u[0]]=0,e.#r[s]=d):(e.setChType(s,e.CH_DRUMS,m.k11),e.#r[s]=d-128)},()=>{let f=e.chRedir(d,a,!0);e.#l[s]=f,s!=f&&(e.buildRchTree(),console.info(`${l}receives from CH${f+1}`))},()=>{e.#e[i+u[7]]=d},()=>{e.#n[s]=d},()=>{e.#e[i+u[10]]=d},()=>{e.#i[h+3]=d+40},()=>{e.#i[h+1]=d>>1,e.#i[h+2]=d&1},()=>{e.#e[i+u[91]]=d?127:0},()=>{},()=>{e.#e[i+u[74]]=d},()=>{e.#e[i+u[73]]=d},()=>{e.#e[i+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let s=(t[2]<<4)+t[3],i="GMLX ";([()=>{console.debug(`${i}reverb type: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let s=(t[2]<<4)+t[3],i=e.chRedir(t[1],a,!0),h=i*g.cc;[()=>{s<128?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#r[i]=s):s<160?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#r[i]=s-100):(e.setChType(i,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#r[i]=s-160)},()=>{let d=e.chRedir(s,a,!0);e.#l[i]=d,i!=d&&(e.buildRchTree(),console.info(`GMLX CH${i+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let s=(t[2]<<4)+t[3],i=e.chRedir(t[1],a,!0),h=i*g.cc,d=i*g.rpn,l=`GMLX CH${i+1} `;[()=>{e.#n[i]=s},()=>{e.#e[h+u[7]]=s},()=>{e.#e[h+u[10]]=s},()=>{e.#e[h+u[91]]=s?127:0},()=>{e.#i[d+3]=s+40},()=>{e.#i[d+1]=s},()=>{e.#i[d]=s},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,a,r)=>{let s=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=s*129/16383*100;break}case 5:{s-64;break}case 6:{console.debug(`SG global reverb: ${s?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[s]}`);break}}break}default:if(t[0]>>4==1){let i=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let h=e.chRedir(s,a,!0);e.#l[i]=h,i!=h&&(e.buildRchTree(),console.info(`SG CH${i+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*i+u[7]]=s)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#v.add([127,0],(t,a,r)=>{e.switchMode("motif");let s=new Uint8Array([127,1,...t]);e.#v.run(s,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES system ",i=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][i+d]||(()=>{console.info(`Unrecognized ${s}ID: ${i+d}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES bulk header ",i=[];i[95]=(h,d,l)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(i[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES bulk footer ",i=[];i[95]=(h,d,l)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(i[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let s=e.chRedir(t[0],a,!0),i=g.cc*s,h=t[1],d=`S90/Motif ES bulk CH${s<16?s+1:"U"+(s-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((l,f)=>{([()=>{e.#e[i+u[0]]=l},()=>{l&&(e.#n[s]=1),e.#e[i+u[32]]=l,e.#a[s]=this.setChType(s,[32,40].indexOf(l)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{l&&(e.#n[s]=1),e.#r[s]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#k[s]=l?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[i+u[7]]=l},()=>{e.#e[i+u[10]]=l},!1,!1,!1,()=>{e.#e[i+u[91]]=l},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[94]]=l},()=>{e.#e[i+u[128]]=l},()=>{},()=>{e.#e[i+u[74]]=l},()=>{e.#e[i+u[71]]=l},!1,()=>{e.#e[i+u[65]]=l},()=>{e.#e[i+u[5]]=l},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let s=t[0];t.subarray(1).forEach((i,h)=>{let l=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=i-64},()=>{let f=T[i]},()=>{let f=i/10},()=>{let f=i}][s+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,c,o){this.#t=e,this.start=n,this.end=c,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,c){super(!0,e,n,c)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let c=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(c.push(a),t.#t=a.index)})}return c}getRange(e,n){e>n&&([e,n]=[n,e]);let c=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let r=0;r=e&&(o=r):o=o<0?r:o;for(;a;)this[o]?.end=e&&c.push(this[o]):a=!1,o++;return c}};var _e=0xffffffffffff,ve=function(e){let n=new Q,c=this,o=e.timeDivision,t=120,a=new Q,r=0,s=0;a.push(new q(0,_e,[120,0])),e.track.forEach(function(l){r=0,l.event.forEach(function(f){r+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,a[a.length-1]&&a.push(new q(r,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(l,f,p){f>0&&(p[f-1].end=l.start)});let i=120;a.forEach(function(l,f,p){f>0&&(l.end==l.start?p.splice(p.indexOf(l),1):i==l.data[0]&&(p[f-1].end=l.end,p.splice(p.indexOf(l),1)),i=l.data[0])});let h=0,d=120;return a.forEach(function(l){let f=l.start,p=f/d/o*60+h;d=l.data[0],h=p-f/d/o*60,l.data[1]=h}),console.debug("All tempo changes: ",a),t=120,r=0,s=0,e.track.forEach(function(l,f){r=0,s=0;let p=f+1;l.event.forEach(function(b,y){r+=b.deltaTime;let $=a.step(r,!0)[0];$&&(t=$.data[0],s=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(r/t/o*60+s,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends U{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#l=120;#a=4;#e=4;#b=0;#r=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#l=120,this.#a=4,this.#e=4,this.#b=0,this.#r=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#r/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#a)}get noteBeat(){let e=this.noteOverall%this.#a;return e<0&&(e+=this.#a),e}getTimeSig(){return[this.#a,this.#e]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#r&&(this.#r=e);let n=this.#t?.step(e)||[],c=0,o=new Set,t=this,a=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&c++),y.data.type==8&&o.has($.part*128+$.data[0])&&c++;let w=t.device.runJson($);switch(w?.reply){case"meta":{a.push(w);break}}w?.reply&&delete w.reply}),a?.length>0&&this.dispatchEvent("meta",a);let r=this.device.getActive(),s=[],i=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),l=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let C=w[$]-t.#p[$],Y=u.length*$;if(C>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(C-C*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(C-C*t.smoothingDcy**L)}});let p=0;return r.forEach(function(y,$){y&&(s[$]=t.device.getVel($),p+=s[$].size)}),{extraPoly:c,curPoly:p,chInUse:r,chKeyPr:s,chPitch:i,chProgr:d,chContr:h,chType:l,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,c=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=c,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(o.#h[a.meta]||console.debug).call(o,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,a){o.#o?.length<1&&(o.#o=a)},this.#h[81]=function(t,a){let r=o.noteProgress,s=o.#n||.5;o.#l=6e7/a,o.#n=a/1e6,o.#b+=r*(s/o.#n)-r},this.#h[88]=function(t,a){let r=o.noteProgress,s=o.noteOverall,i=o.noteBar,h=o.noteBeat,d=o.#a,l=o.#e;o.#a=a[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,s=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[c%12]*this.noteHeight;if(o>0)switch(a.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,a.fillRect(r+1,s+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{a.clearRect(r+1+this.noteOutline,s+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let c=super.render(n),o=this,t=this.context,a=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let r=metrics.actualBoundingBoxLeft,s=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${c.eventCount.toString().padStart(3,"0")} ${(c.curPoly+c.extraPoly).toString().padStart(3,"0")}/512 ${c.tSig[0].toString().padStart(2," ")}/${c.tSig[1].toString().padEnd(2," ")} ${(c.noteBar+1).toString().padStart(3," ")}:${Math.floor(c.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(c.tempo).toString().padStart(3," ")}.${Math.floor(c.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(c.master.volume).toString().padStart(3," ")}.${Math.floor(c.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+r,s+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+r,s+o.fontPadding+o.lineHeight*2),c.chKeyPr.forEach((i,h)=>{i.forEach((d,l)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&i.part1?32:16)),l=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+r+(i>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(l.name,o.fontPadding+r+(i>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(i>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+i%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(c.chContr[f+u[p]]/-127))})}}c.letter.expire<=a,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let i=0;i<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+i%(this.mode>1?32:16)),o.noteWidth*16*(c.strength[h]/255),o.lineHeight-1)}for(let i in o.eventBuffer)delete o.eventBuffer[i];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let c=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,a=t.part*128+t.note,r=this.eventBuffer[a];this.eventBuffer[a]=t,r?.velo>0&&t.velo==0&&this.eventQueue.push(r)})}},Dt=Fe;export{Dt as default}; diff --git a/dist/state.mjs b/dist/state.mjs index 5b492516..634e3ac5 100644 --- a/dist/state.mjs +++ b/dist/state.mjs @@ -1,8 +1,8 @@ -var X=function(e,n){let l=Math.min(e.length,n.length),f=e.slice(0,l),t=n.slice(0,l),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(o,c,h){i&&o!=n[c]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||l?a:-1}else return l?0:-1},this.add=function(n,l){return n.data=l,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let l=this.point(n);if(l>-1)return this.pool[l].data;this.default(n)},this.run=function(n,...l){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...l):this.pool[f].data(n.slice(this.pool[f].length),...l):this.default(n,...l)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let l=this.#t[e].indexOf(n);l>-1&&this.#t[e].splice(l,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let l=new Event(e),f=this;l.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,l)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](l)}};var ce=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),l=e%10;return`${n.toString(16)}${l}`},H=class{#t;strictMode=!1;get(e=0,n=0,l=0,f){let t=[e,n,l],a,r=Array.from(arguments);switch(f){case"xg":{e==32?r[2]+=4:e==33||e==35||e==36?r[2]+=5:e==79?r[0]=95:e==80?r[0]=96:e==81?r[0]=97:e==82?r[0]=98:e==83?r[0]=99:e==84&&(r[0]=100),l==126?r[2]=125:l==127&&(r[2]=0);break}case"gs":{e==0&&l<5?r[2]=0:e>125&&l<5&&l!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&l==0&&(r[2]=5);break}case"s90es":{l<8?r[2]+=17:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{l<8?r[2]+=28:l<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",o=!1,c=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",o=!0);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,o=!0;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(c=63),o=!0;break}case 97:{s="VL:",o=!0,c=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(c=63),o=!0;break}case 100:{s="AN",r[2]>63&&(c=63),o=!0;break}case 121:{s=`GM-${r[2]?"":"a"}`,o=!0;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${(o?l:e)-c}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(l*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${l}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${l.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(l||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,l){let f=this,t=[],a=0,r=0;e.split(` -`).forEach(function(i,s){let o=i.split(" "),c=[];s==0?o.forEach(function(h,b){t[ce.indexOf(h)]=b}):o.forEach(async function(h,b){b>2?(f.#t[c[t[1]]]=f.#t[c[t[1]]]||[],(!f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]?.length||n)&&(f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]=o[3],a++),r++):c.push(parseInt(o[b]))})}),n||console.debug(`Map "${l||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],l=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=l[0];t<=l[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(l,f){try{await fetch(`./data/bank/${l}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,l)})}catch{console.error(`Failed loading "${l}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let l=!0;return n.forEach((f,t)=>{l=l&&e[t]==f}),l},V=function(e){let n=0;return e.forEach(l=>{n*=256,n+=l}),n},R=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),l="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],o=0;for(;i;){let c=n.subarray(a);([()=>{R.decode(c.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(c.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=R.decode(c.subarray(0,4)),b=V(c.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[o],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return l});var v=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,l=-.3;return e>66?(n=5,l=315):e>56?(n=1,l=47):e>46&&(n=.5,l=18.5),n*e-l},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +var X=function(e,n){let o=Math.min(e.length,n.length),f=e.slice(0,o),t=n.slice(0,o),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(l,c,h){i&&l!=n[c]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...o):this.pool[f].data(n.slice(this.pool[f].length),...o):this.default(n,...o)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),f=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var ce=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},H=class{#t;strictMode=!1;get(e=0,n=0,o=0,f){let t=[e,n,o],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{o==126?r[2]=125:o==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{r[0]+=16,o==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(r[2]=0);break}}break}case"gs":{e==0&&o<5?r[2]=0:e>125&&o<5&&o!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&o==0&&(r[2]=5);break}case"s90es":{o<8?r[2]+=17:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{o<8?r[2]+=28:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",l=0,c=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",l=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,l=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(c=63),l=3;break}case 97:{s="VL:",l=3,c=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(c=63),l=3;break}case 100:{s="AN",r[2]>63&&(c=63),l=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,l=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,o,r[0],r[1]][l]-c}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(o||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,o){let f=this,t=[],a=0,r=0;e.split(` +`).forEach(function(i,s){let l=i.split(" "),c=[];s==0?l.forEach(function(h,b){t[ce.indexOf(h)]=b}):l.forEach(async function(h,b){b>2?(f.#t[c[t[1]]]=f.#t[c[t[1]]]||[],(!f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]?.length||n)&&(f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]=l[3],a++),r++):c.push(parseInt(l[b]))})}),n||console.debug(`Map "${o||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,f){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let o=!0;return n.forEach((f,t)=>{o=o&&e[t]==f}),o},V=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],l=0;for(;i;){let c=n.subarray(a);([()=>{v.decode(c.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(c.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(c.subarray(0,4)),b=V(c.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[l],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return o});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,o=-.3;return e>66?(n=5,o=315):e>56?(n=1,o=47):e>46&&(n=.5,o=18.5),n*e-o},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let l=n.indexOf("!");return l>-1&&n.length>1&&(n=n.slice(l+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,l){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(l)||l}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(l=>{n+=l,n=n&127}),~n+1&127},m=function(e,n){let l=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,l,e),l++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],l=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(l,t)):f==240&&(l=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},le=function(e,n="",l="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${l}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#m=0;#R=new Array(11);get#$(){return this.#R[this.#p]}set#$(e){this.#R[this.#p]=e}#l=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#v=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#w=new Uint8Array(u.ch);#c=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#E=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#k=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#S=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,l){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#k)>-1){if(l==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let l=e*128+n,f=this.#c.lastIndexOf(l);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[l],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[l],state:this.NOTE_SOSTENUTO_HELD})):(this.#c[f]=0,this.#o[l]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let f=e*128+n,t=0;for(this.#w[e]&&this.#h.ano(e);this.#d[t]>0&&this.#c[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,l)=>{if(n==this.NOTE_HELD){let f=this.#c[l],t=f>>7;e==t&&(this.#d[l]=this.NOTE_IDLE,this.#c[l]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,l)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[l]=f;let t=this.#c[l];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#c[l],t=f>>7;e==t&&(this.#d[l]=this.NOTE_IDLE,this.#c[l]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#c.forEach((n,l,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,l=e.data[0];this.#h.nOff(n,l)},9:function(e){let n=e.channel;this.#l[n]=1;let l=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,l,f):this.#h.nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];this.#c.indexOf(l)>-1&&(this.#o[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#l[n]=1);break}e.data[1]&&(this.#l[n]=1);break}default:{this.#l[n]=1;break}}})();let l=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#w[n]=1,this.#h.ano(n);return}case 127:{this.#w[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[l+d[99]],t=this.#e[l+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[l+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[l+d[100]]];this.#e[l+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[l+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[l+101]==0&&I[this.#e[l+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[l+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#l[n]=1);break}default:this.#l[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;this.#c.forEach(function(f){let t=f>>7;l==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:l,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let l=n[0],f=n[1];(this.#ee[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(l,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,l)=>{this.#F.run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)this.#T.run(n,l,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,l)=>{this.#U.run(n,l,e)},67:(e,n,l)=>{this.#y.run(n,l,e)},68:(e,n,l)=>{this.#V.run(n,l,e)},71:(e,n,l)=>{this.#K.run(n,l,e)},126:(e,n,l)=>{this.#I.run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),this.#X.run(n,l,e)}};#I;#X;#y;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,l)=>{e[n]?.constructor||(e[n]=[]),e[n].push(l)}),this.#Z=e}getActive(){let e=this.#l.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,l=this.#e.subarray(n,n+u.cc);return l[d[0]]=l[d[0]]||this.#H,l[d[32]]=l[d[32]]||this.#k,l}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[l])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,l=this;return l.#c.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&l.#o[f]>0&&n.set(r,{v:l.#o[f],s:l.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#m}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#c.forEach(function(n){let l=Math.floor(n/128);e.#o[n]>e.#C[l]&&(e.#C[l]=e.#o[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,f){e[f]=Math.floor(l*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,l,f){let t=e||this.#H,a=n,r=l||this.#k;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),o=s*u.cmt,c="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(c+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${c}`,!0),i.name=c,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#E.subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,f=3200){let t=this,a;t.#M=" ".repeat(l),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#v}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let l=this.#v[n];if(l){if(U.indexOf(l)>=0)return this.#e[e*u.cc+d[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#k=0,this.#O=0,this.#l.fill(0),this.#e.fill(0),this.#v.fill(0),this.#r.fill(0),this.#o.fill(0),this.#c.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#m=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#S=!0,this.#f.forEach(function(n,l,f){f[l]=l}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#E.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=l,this.#p=0,this.#H=se[0][l],this.#k=se[1][l];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[l]);switch(this.initOnReset,l){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#l[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(l){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),l=!1;this.#Z[n]?.forEach(f=>{e.channel=f,l=!0,this.#j[e.type].call(this,e)}),l||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#R[10]=new Uint8Array(512),this.#_=new S,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,o){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,o,e),o++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var le={length:A.length};A.forEach((e,n)=>{le[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],o=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(o,t)):f==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},oe=function(e,n="",o="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${o}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#o=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#l=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#c=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(o==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let o=e*128+n,f=this.#c.lastIndexOf(o);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#l[o],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#l[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#c[f]=0,this.#l[o]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#c[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_HELD){let f=this.#c[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#c[o]=0,this.#l[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,o)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[o]=f;let t=this.#c[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#l[t],state:f})}})},soOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#c[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#c[o]=0,this.#l[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#c.forEach((n,o,f)=>{let t=n>>7,a=n&127;n==0&&this.#l[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,o=e.data[0];this.#h.nOff(n,o)},9:function(e){let n=e.channel;this.#o[n]=1;let o=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,o,f):this.#h.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#c.indexOf(o)>-1&&(this.#l[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#o[n]=1);break}e.data[1]&&(this.#o[n]=1);break}default:{this.#o[n]=1;break}}})();let o=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[o+d[99]],t=this.#e[o+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[o+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+le[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[o+d[100]]];this.#e[o+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&I[this.#e[o+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#o[n]=1);break}default:this.#o[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#c.forEach(function(f){let t=f>>7;o==t&&(n.#l[f]=e.data,n.dispatchEvent("note",{part:o,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let o=n[0],f=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(o,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#F.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#T.run(n,o,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,o)=>{this.#U.run(n,o,e)},67:(e,n,o)=>{this.#w.run(n,o,e)},68:(e,n,o)=>{this.#V.run(n,o,e)},71:(e,n,o)=>{this.#K.run(n,o,e)},126:(e,n,o)=>{this.#I.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#X.run(n,o,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#o.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,o=this.#e.subarray(n,n+u.cc);return o[d[0]]=o[d[0]]||this.#H,o[d[32]]=o[d[32]]||this.#y,o}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[o])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,o=this;return o.#c.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&o.#l[f]>0&&n.set(r,{v:o.#l[f],s:o.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#c.forEach(function(n){let o=Math.floor(n/128);e.#l[n]>e.#C[o]&&(e.#C[o]=e.#l[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,f){e[f]=Math.floor(o*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,o,f){let t=e||this.#H,a=n,r=o||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),l=s*u.cmt,c="";this.#N.subarray(l,l+10).forEach(h=>{h>31&&(c+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${c}`,!0),i.name=c,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,f=3200){let t=this,a;t.#M=" ".repeat(o),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let o=this.#R[n];if(o){if(U.indexOf(o)>=0)return this.#e[e*u.cc+d[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#o.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#l.fill(0),this.#c.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#S=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,o,f){f[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=o,this.#p=0,this.#H=se[0][o],this.#y=se[1][o];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[o]);switch(this.initOnReset,o){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#o[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(o){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(f=>{e.channel=f,o=!0,this.#j[e.type].call(this,e)}),o||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${le(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${le(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new S("universal non-realtime"),this.#X=new S("universal realtime"),this.#y=new S("Yamaha"),this.#T=new S("Roland"),this.#U=new S("Korg"),this.#F=new S("Kawai"),this.#K=new S("Akai"),this.#V=new S("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#y.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#y.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let o=s+t[0];([r,r,r,r,c=>{this.#b=c*129/16383*100},c=>{},c=>{}][o]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${v[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${v[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${v[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,o=i-1&3,c=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${c}${a-64}dB`)},()=>{console.debug(`${c}${a} (raw)`)},()=>{console.debug(`${c}${a/10}`)},()=>{console.debug(`${c}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([c=>{e.setEffectTypeRaw(3+a,!1,c),console.info(`${i}main type: ${v[c]}`)},c=>{e.setEffectTypeRaw(3+a,!0,c),console.debug(`${i}sub type: ${c+1}`)}][r+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#m=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,o=`XG CH${r+1} `,c=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(c):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#w[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(c):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(c):i<116?console.debug(`${o}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(c):i<120?console.debug(`${o}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(c)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((o,c)=>{let h=c+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0];t.subarray(1).forEach((i,s)=>{let o=r+s;o==8?console.debug(`MU1000 set LCD contrast to ${i}.`):o>9&&o<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#S=!!i,console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][o-10]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#S?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#S&&e.dispatchEvent("channelmin",s),e.#S&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#S){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let o="",c=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):c+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(o)}`,e.#Y=s+Math.ceil(c/2)+e.#Q,k()&&console.debug(`${i}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#y.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#y.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((c,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(c>>6-$&1)<<7;else o[s+7*b+p]=c})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,c)=>{let h=c>>3,b=c&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(o>>6-p&1)<<7;else s[i+7*h+b]=o})}}).add([89,3],(t,a,r)=>{}),this.#y.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{let h=c+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*i,c=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#w[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${c} AC1 at cc${h}`)},()=>{console.debug(`${c} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#m=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let o=Math.floor(s/16),c=s%16,h=(c*3+o)*7,b=7,p=0;for(h-=c*5,o==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#k=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{let h=c+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,c)}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let o=ee(e.#g.subarray(10,12),s,i);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(o,c){console.warn(`Unknown GS EFX address: ${c}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#m=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#m=Date.now()+3200,e.#R[t[0]-1]?.length||(e.#R[t[0]-1]=new Uint8Array(256));let a=e.#R[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let l=function(t,a,r){let i=t[0],s=u.cc*a,o=u.rpn*a,c=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#w[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${c}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${c}CC 1: cc${h}`)},()=>{console.debug(`${c}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+o]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+o-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{l(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{l(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{l(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{l(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{l(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{l(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{l(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{l(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{l(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{l(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{l(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{l(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{l(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{l(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{l(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{l(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),o=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[o+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=i},()=>{i<31&&(e.#e[o+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(i)},()=>{e.#e[o+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` -${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` -${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),m(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),m(t,function(r,i,s,o){if(i<192){let c=e.chRedir(Math.floor(i/12),a,!0),h=c*u.cc;switch(i%12){case 0:{r<128?(e.setChType(c,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[c]=r):(e.setChType(c,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[c]=ne[r-128]),r>0&&(e.#l[c]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[c*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[c*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[c]=r,(b!=c||p)&&(console.info(`X5D Part CH${c+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let c=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((o,c)=>{let h=c+s;e.#A[h+(i-1)*16]=o,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=o+40},()=>{e.#s[i*u.rpn+1]=o+14},()=>{e.#s[i*u.rpn]=o},!1,()=>{e.#e[u.cc*i+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=o},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((o,c)=>{let h=c+s;h<14&&(e.#E[(i-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,o)=>{let c=o+i;e.#A[c]=s;let h=e.chRedir(1+c>>4,a,!0),b=c&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let c=o+i,h=e.chRedir(Math.floor(c/246+1),a,!0),b=c%246;b<14&&(e.#E[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let c=i+o,h=Math.floor(c/8),b=c&7,p=h*8;e.#q[c]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME -000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,o)=>{let c=i+o;c>1)*u.cmt+c]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,o=function(c,h){e.#f[h-12]=c,s=!0};t.subarray(2).forEach((c,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,o,o,o,o,o,o,o,o,o,()=>{e.#b=c}][b]||(()=>{}))(c,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(o,c)=>{i[c]=o};if(t.subarray(1).forEach((o,c)=>{[s,s,s,s,()=>{e.#b=o*129/16383*100},()=>o-64,()=>o-64,()=>{},()=>{},()=>{}][r+c]()}),t[0]<4){let o=0;i.forEach(c=>{o=o<<4,o+=c}),o-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],o=`NS5R CH${r+1} `;t.subarray(2).forEach((c,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=c||121},()=>{e.#e[i+d[32]]=c},()=>{e.#r[r]=c}][b]():b<8||(b<14?[()=>{let p=e.chRedir(c,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#w[r]=+!c},()=>{e.setChType(r,c,g.ns5r),console.debug(`${o}type: ${O[c]}`)},()=>{e.#s[u.rpn*r+3]=c},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=c},()=>{e.#e[i+d[11]]=c},()=>{},()=>{},()=>{e.#e[i+d[10]]=c||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=c},()=>{e.#e[i+d[91]]=c},()=>{e.#e[i+d[76]]=c},()=>{e.#e[i+d[77]]=c},()=>{e.#e[i+d[78]]=c},()=>{e.#e[i+d[74]]=c},()=>{e.#e[i+d[71]]=c},()=>{e.#e[i+d[73]]=c},()=>{e.#e[i+d[75]]=c},()=>{e.#e[i+d[72]]=c}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=c},()=>{e.#e[i+d[65]]=c}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#m=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),o=4;s.forEach(function(c,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";m(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,m(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),o=s*u.cc;switch(i%92){case 0:{e.#e[o+d[0]]=r||121;break}case 1:{e.#e[o+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#l[s]=1);break}case 3:{let c=e.chRedir(r,a,!0);e.#f[s]=c,s!=c&&(console.info(`NS5R CH${s+1} receives from CH${c+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[o+d[7]]=r;break}case 11:{e.#e[o+d[11]]=r;break}case 14:{e.#e[o+d[10]]=r||128;break}case 19:{e.#e[o+d[93]]=r;break}case 20:{e.#e[o+d[91]]=r;break}case 84:{e.#e[o+d[65]]=r;break}case 85:{e.#e[o+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{o=h&127;break}case p==13:{c+=` -${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(c)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,o=0,c="MSB PRG LSB NME";m(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{c+=` -${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(c)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);m(t,(r,i,s)=>{if(i<720)for(let o=0;o<8;o++)a[i*8+o]=r>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#k=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,o=u.rpn*i,c=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{c<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=c):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=c-128)},()=>{let b=e.chRedir(c,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=c},()=>{e.#l[i]=c},()=>{e.#e[s+d[10]]=c},()=>{e.#s[o+3]=c+40},()=>{e.#s[o+1]=c>>1,e.#s[o+2]=c&1},()=>{e.#e[s+d[91]]=c?127:0},()=>{},()=>{e.#e[s+d[74]]=c},()=>{e.#e[s+d[73]]=c},()=>{e.#e[s+d[72]]=c}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=i-160)},()=>{let c=e.chRedir(i,a,!0);e.#f[s]=c,s!=c&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${c+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,c=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#l[s]=i},()=>{e.#e[o+d[7]]=i},()=>{e.#e[o+d[10]]=i},()=>{e.#e[o+d[91]]=i?127:0},()=>{e.#s[c+3]=i+40},()=>{e.#s[c+1]=i},()=>{e.#s[c]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(i,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#y.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#y.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,c)=>{([()=>{e.#b=o*12900/16383}][s+c]||(()=>{console.info(`Unrecognized ${i}ID: ${s+c}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(o,c,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(o,c,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,o=t[1],c=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(c,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#l[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#l[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#w[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+o&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; +122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${oe(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${oe(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#T=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let l=s+t[0];([r,r,r,r,c=>{this.#b=c*129/16383*100},c=>{},c=>{}][l]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,l=i-1&3,c=`XG EQ ${s} ${["gain","freq","Q","shape"][l]}: `;[()=>{console.debug(`${c}${a-64}dB`)},()=>{console.debug(`${c}${a} (raw)`)},()=>{console.debug(`${c}${a/10}`)},()=>{console.debug(`${c}${["shelf","peak"][+!!a]}`)}][l]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,l)=>{([c=>{e.setEffectTypeRaw(3+a,!1,c),console.info(`${i}main type: ${R[c]}`)},c=>{e.setEffectTypeRaw(3+a,!0,c),console.debug(`${i}sub type: ${c+1}`)}][r+l]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,l=`XG CH${r+1} `,c=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(c):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${l}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(c):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(c):i<116?console.debug(`${l}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(c):i<120?console.debug(`${l}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(c)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((l,c)=>{let h=c+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][l]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(l)}`),l&&l<96&&e.allocateAce(l)):console.debug(`${s}${b} scale break point: ${l}`):console.debug(`${s}${b} depth: ${l-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,l)=>{let c=r+l;c==8?console.debug(`${i}LCD contrast set to ${s}.`):c==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):c>=64&&c<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][c-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let l="",c=0;t.subarray(2).forEach((h,b)=>{b%2==0?l+=Y[h]||h.toString().padStart("0"):c+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(l)}`,e.#Y=s+Math.ceil(c/2)+e.#Q,k()&&console.debug(`${i}vocals: ${l}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let l=e.eprom.data;t.subarray(4).forEach((c,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)l[s+7*b+$]+=(c>>6-$&1)<<7;else l[s+7*b+p]=c})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((l,c)=>{let h=c>>3,b=c&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(l>>6-p&1)<<7;else s[i+7*h+b]=l})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(l,c)=>{i[c]=l};if(t.subarray(1).forEach((l,c)=>{let h=c+t[0];[s,s,s,s,()=>{this.#b=l*129/16383*100},()=>l-64,()=>l||128,()=>l,()=>l,()=>{console.debug(`TG300 variation on cc${l}.`)}][h](l,h)}),t[0]<4){let l=0;i.forEach(c=>{l=l<<4,l+=c}),l-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],l=u.cc*i,c=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[l+d[0]]=h},()=>{e.#e[l+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[l+d[7]]=h},!1,!1,()=>{e.#e[l+d[10]]=h||128},!1,!1,()=>{console.debug(`${c} AC1 at cc${h}`)},()=>{console.debug(`${c} AC2 at cc${h}`)},()=>{e.#e[l+d[128]]=h},()=>{e.#e[l+d[93]]=h},()=>{e.#e[l+d[91]]=h},()=>{e.#e[l+d[94]]=h},()=>{e.#e[l+d[76]]=h},()=>{e.#e[l+d[77]]=h},()=>{e.#e[l+d[74]]=h},()=>{e.#e[l+d[71]]=h},()=>{e.#e[l+d[73]]=h},()=>{e.#e[l+d[75]]=h},()=>{e.#e[l+d[72]]=h},()=>{e.#e[l+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[l+d[65]]=h},()=>{e.#e[l+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let l=Math.floor(s/16),c=s%16,h=(c*3+l)*7,b=7,p=0;for(h-=c*5,l==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(l,c)=>{i[c]=l};if(t.subarray(1).forEach((l,c)=>{let h=c+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](l,c)}),t[0]<4){let l=0;i.forEach(c=>{l=l<<4,l+=c}),l-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let l=ee(e.#g.subarray(10,12),s,i);l&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${l}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(l,c){console.warn(`Unknown GS EFX address: ${c}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#S=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#S=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,r){let i=t[0],s=u.cc*a,l=u.rpn*a,c=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${c}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[l+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${c}CC 1: cc${h}`)},()=>{console.debug(`${c}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[l+1]=h},()=>{e.#s[l+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,l)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+l]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,l)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+l-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),l=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[l+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[l+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[l+d[0]]=62))},()=>{e.#e[l+d[7]]=i},()=>{i<31&&(e.#e[l+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[l+d[93]]=D(i)},()=>{e.#e[l+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,l=0,c="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` +${i} ${s} ${l} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,l=0,c="MSB PRG LSB NME";S(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` +${i} ${s} ${l} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,l){if(i<192){let c=e.chRedir(Math.floor(i/12),a,!0),h=c*u.cc;switch(i%12){case 0:{r<128?(e.setChType(c,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[c]=r):(e.setChType(c,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[c]=ne[r-128]),r>0&&(e.#o[c]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[c*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[c*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[c]=r,(b!=c||p)&&(console.info(`X5D Part CH${c+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let c=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((l,c)=>{let h=c+s;e.#A[h+(i-1)*16]=l,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=l+40},()=>{e.#s[i*u.rpn+1]=l+14},()=>{e.#s[i*u.rpn]=l},!1,()=>{e.#e[u.cc*i+d[91]]=l?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=l},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(l*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((l,c)=>{let h=c+s;h<14&&(e.#k[(i-1)*u.cmt+h]=l)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,l)=>{let c=l+i;e.#A[c]=s;let h=e.chRedir(1+c>>4,a,!0),b=c&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,l)=>{let c=l+i,h=e.chRedir(Math.floor(c/246+1),a,!0),b=c%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,l)=>{let c=i+l,h=Math.floor(c/8),b=c&7,p=h*8;e.#q[c]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME +000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,l)=>{let c=i+l;c>1)*u.cmt+c]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,l=function(c,h){e.#f[h-12]=c,s=!0};t.subarray(2).forEach((c,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,l,l,l,l,l,l,l,l,l,()=>{e.#b=c}][b]||(()=>{}))(c,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(l,c)=>{i[c]=l};if(t.subarray(1).forEach((l,c)=>{[s,s,s,s,()=>{e.#b=l*129/16383*100},()=>l-64,()=>l-64,()=>{},()=>{},()=>{}][r+c]()}),t[0]<4){let l=0;i.forEach(c=>{l=l<<4,l+=c}),l-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],l=`NS5R CH${r+1} `;t.subarray(2).forEach((c,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=c||121},()=>{e.#e[i+d[32]]=c},()=>{e.#r[r]=c}][b]():b<8||(b<14?[()=>{let p=e.chRedir(c,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[r]=+!c},()=>{e.setChType(r,c,g.ns5r),console.debug(`${l}type: ${O[c]}`)},()=>{e.#s[u.rpn*r+3]=c},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=c},()=>{e.#e[i+d[11]]=c},()=>{},()=>{},()=>{e.#e[i+d[10]]=c||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=c},()=>{e.#e[i+d[91]]=c},()=>{e.#e[i+d[76]]=c},()=>{e.#e[i+d[77]]=c},()=>{e.#e[i+d[78]]=c},()=>{e.#e[i+d[74]]=c},()=>{e.#e[i+d[71]]=c},()=>{e.#e[i+d[73]]=c},()=>{e.#e[i+d[75]]=c},()=>{e.#e[i+d[72]]=c}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=c},()=>{e.#e[i+d[65]]=c}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#S=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),l=4;s.forEach(function(c,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),l=s*u.cc;switch(i%92){case 0:{e.#e[l+d[0]]=r||121;break}case 1:{e.#e[l+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#o[s]=1);break}case 3:{let c=e.chRedir(r,a,!0);e.#f[s]=c,s!=c&&(console.info(`NS5R CH${s+1} receives from CH${c+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[l+d[7]]=r;break}case 11:{e.#e[l+d[11]]=r;break}case 14:{e.#e[l+d[10]]=r||128;break}case 19:{e.#e[l+d[93]]=r;break}case 20:{e.#e[l+d[91]]=r;break}case 84:{e.#e[l+d[65]]=r;break}case 85:{e.#e[l+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,l=0,c="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{l=h&127;break}case p==13:{c+=` +${i} ${s} ${l} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(c)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,l=0,c="MSB PRG LSB NME";S(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{c+=` +${i} ${s} ${l} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(c)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let l=0;l<8;l++)a[i*8+l]=r>>7-l&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,l=u.rpn*i,c=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{c<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=c):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=c-128)},()=>{let b=e.chRedir(c,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=c},()=>{e.#o[i]=c},()=>{e.#e[s+d[10]]=c},()=>{e.#s[l+3]=c+40},()=>{e.#s[l+1]=c>>1,e.#s[l+2]=c&1},()=>{e.#e[s+d[91]]=c?127:0},()=>{},()=>{e.#e[s+d[74]]=c},()=>{e.#e[s+d[73]]=c},()=>{e.#e[s+d[72]]=c}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),l=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[l+d[0]]=0,e.#e[l+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[l+d[0]]=0,e.#e[l+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[l+d[0]]=122,e.#e[l+d[32]]=0,e.#r[s]=i-160)},()=>{let c=e.chRedir(i,a,!0);e.#f[s]=c,s!=c&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${c+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),l=s*u.cc,c=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#o[s]=i},()=>{e.#e[l+d[7]]=i},()=>{e.#e[l+d[10]]=i},()=>{e.#e[l+d[91]]=i?127:0},()=>{e.#s[c+3]=i+40},()=>{e.#s[c+1]=i},()=>{e.#s[c]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${l+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((l,c)=>{([()=>{e.#b=l*12900/16383}][s+c]||(()=>{console.info(`Unrecognized ${i}ID: ${s+c}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(l,c,h)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(l,c,h)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,l=t[1],c=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(c,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#o[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#o[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][l+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,l)=>{let h=`S90/Motif ES EQ${(l>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+l&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,le as dnToPos}; diff --git a/dist/state_skim.mjs b/dist/state_skim.mjs index af5bfeeb..bed91640 100644 --- a/dist/state_skim.mjs +++ b/dist/state_skim.mjs @@ -138,7 +138,7 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{e==32?a[2]+=4:e==33||e==35||e==36?a[2]+=5:e==79?a[0]=95:e==80?a[0]=96:e==81?a[0]=97:e==82?a[0]=98:e==83?a[0]=99:e==84&&(a[0]=100),s==126?a[2]=125:s==127&&(a[2]=0);break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=!1,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=!0);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=!0;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=!0;break}case 97:{c="VL:",u=!0,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=!0;break}case 100:{c="AN",a[2]>63&&(f=63),u=!0;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=!0;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${(u?s:e)-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` +`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[1]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` `).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],B=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],I={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},H=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#I=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#H=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],H[i][0]),H[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#G.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#B.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#G;#B;#J;buildRchTree(){let e=[];this.#I.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG 0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#H.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#I.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#H.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=B[0][s],this.#u=B[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${I[e.type]?I[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index b1a40871..74419a8f 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -1,8 +1,8 @@ -var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(m=h[o])!=null&&m.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:m}),d++,d>4294967295&&(d=0)}else b.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var m=b.shift();s.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=f&&s.dispatchEvent(u("message",m.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(m.c,"."))};var v={};this.dispatchEvent=function(m){var x,A;if(Object.defineProperty(m,"target",{value:s}),Object.defineProperty(m,"currentTarget",{value:s}),(x=v[m.type])!=null&&x.length)for(var V=v[m.type],ae=0;ae-1&&v[m].splice(ae,1)}!((V=v[m])!=null&&V.length)&&v[m].constructor&&delete v[m]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||m>127&&m<160)throw new RangeError(`Invalid code point: ${m}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof Et<"u")Et.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){E(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){E(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{u==32?a[2]+=4:u==33||u==35||u==36?a[2]+=5:u==79?a[0]=95:u==80?a[0]=96:u==81?a[0]=97:u==82?a[0]=98:u==83?a[0]=99:u==84&&(a[0]=100),n==126?a[2]=125:n==127&&(a[2]=0);break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=!1,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=!0);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=!0;break}case 97:{i="VL:",s=!0,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=!0;break}case 100:{i="AN",a[2]>63&&(f=63),s=!0;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(s?n:u)-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` -`).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);R();R();var Ge,Ot,Pt=(Ot=class{constructor(){E(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Dt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Pt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Dt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Dt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;ye in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),m=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var E,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(E=h[o])!=null&&E.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(E){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:E}),d++,d>4294967295&&(d=0)}else b.push(E),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var E=b.shift();s.postMessage(E)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(E){E.c==o?E.i!=f&&s.dispatchEvent(u("message",E.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(E.c,"."))};var v={};this.dispatchEvent=function(E){var x,A;if(Object.defineProperty(E,"target",{value:s}),Object.defineProperty(E,"currentTarget",{value:s}),(x=v[E.type])!=null&&x.length)for(var V=v[E.type],ae=0;ae-1&&v[E].splice(ae,1)}!((V=v[E])!=null&&V.length)&&v[E].constructor&&delete v[E]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||E>127&&E<160)throw new RangeError(`Invalid code point: ${E}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof mt<"u")mt.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){m(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){m(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=0,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=3);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=3;break}case 97:{i="VL:",s=3,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=3;break}case 100:{i="AN",a[2]>63&&(f=63),s=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[1]][s]-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` +`).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);R();R();var Ge,Ot,Pt=(Ot=class{constructor(){m(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Dt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Pt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Dt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Dt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;y=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});R();var We=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ye=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],gr=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],_e=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],It=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],At=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},Ut=function(u){return u>105?gr[u-106]:u>100?u*1.1-100:u/10},Lt=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),ut={};`hi*, +063 024 ${k[19].toString().padStart(3,"0")} ${v}`),y+=b}break}case"EPVC":{let y=32,k=c;for(;k=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});R();var We=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ye=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],gr=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],_e=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],It=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],At=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},Ut=function(u){return u>105?gr[u-106]:u>100?u*1.1-100:u/10},Lt=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),ut={};`hi*, ka,か ki,き ku,く @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ie=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Er=[12,13,16,17,18,19],mr=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},P,j,ne,fe,W,de,Yt,U,H,O,p,ue,D,L,J,B,G,we,oe,Ce,S,Fe,et,ce,Ee,ee,Ve,me,Q,ve,te,X,pe,Xe,ze,le,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,Z,he,ge,Pe,De,Ie,Wt,oa=(Wt=class extends it{constructor(){super();E(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,P,0);E(this,j,0);E(this,ne,0);E(this,fe,new Array(11));E(this,U,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,O,new Uint8Array($.ch));E(this,p,new Uint8Array($.ch*$.cc));E(this,ue,new Uint8Array($.ace));E(this,D,new Uint8Array($.ch));E(this,L,new Uint8Array($.ch*$.nn));E(this,J,new Uint8Array($.ch));E(this,B,new Uint16Array($.pl));E(this,G,new Uint8Array($.pl));E(this,we,new Int16Array($.ch));E(this,oe,new Uint8Array($.ch));E(this,Ce,0);E(this,S,new Uint8Array($.ch*$.rpn));E(this,Fe,new Int8Array($.ch*qt.length));E(this,et,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ce,new Uint8Array($.ch));E(this,Ee,new Uint8Array(128));E(this,ee,new Uint8Array($.cmt*8));E(this,Ve,new Uint8Array(1024));E(this,me,new Uint8Array($.cmt*64));E(this,Q,new Uint8Array($.efx*3));E(this,ve,0);E(this,te,0);E(this,X,100);E(this,pe,0);E(this,Xe,500);E(this,ze,0);E(this,le,"");E(this,ke,0);E(this,Ke,0);E(this,re,!0);E(this,I,!1);E(this,tt,void 0);E(this,$t,new Uint8Array(2));E(this,T,[]);E(this,be,new Uint8Array($.ch));E(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,_,[]);E(this,Te,void 0);E(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,J)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,oe)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});E(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,P)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,J)[n]=1,t(this,N).ano(n);return}case 127:{t(this,J)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Er.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(Y()&&console.debug(`${$e[t(this,P)]}, CH${n+1}: ${e.data[1]}`),t(this,P)==0)e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,P)==M.gs)e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,P)==M.gm)e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,P)==M.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let c=0;for(let r=0;r<16;r++){let a=t(this,p)[$.cc*r];(a==56||a==62)&&c++}c>14&&this.switchMode("ag10",!0)}}switch(t(this,P)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,P))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,P)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=mr.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,P)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,P)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,D)[n]=e.data,t(this,ce)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});E(this,ot,{64:(e,n,h)=>{t(this,Pe).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,he).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,he).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,Z).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,De).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});E(this,Re,void 0);E(this,Oe,void 0);E(this,Z,void 0);E(this,he,void 0);E(this,ge,void 0);E(this,Pe,void 0);E(this,De,void 0);E(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new se),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ie=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],mr=[12,13,16,17,18,19],Er=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},P,j,ne,fe,W,de,Yt,U,H,O,p,ue,D,L,ee,B,G,we,oe,Ce,S,Fe,et,ce,me,te,Ve,Ee,Q,ve,Z,X,pe,Xe,ze,le,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,J,he,ge,Pe,De,Ie,Wt,oa=(Wt=class extends it{constructor(){super();m(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);m(this,P,0);m(this,j,0);m(this,ne,0);m(this,fe,new Array(11));m(this,U,new Uint8Array($.ch));m(this,H,new Uint8Array($.ch));m(this,O,new Uint8Array($.ch));m(this,p,new Uint8Array($.ch*$.cc));m(this,ue,new Uint8Array($.ace));m(this,D,new Uint8Array($.ch));m(this,L,new Uint8Array($.ch*$.nn));m(this,ee,new Uint8Array($.ch));m(this,B,new Uint16Array($.pl));m(this,G,new Uint8Array($.pl));m(this,we,new Int16Array($.ch));m(this,oe,new Uint8Array($.ch));m(this,Ce,0);m(this,S,new Uint8Array($.ch*$.rpn));m(this,Fe,new Int8Array($.ch*qt.length));m(this,et,new Uint8Array($.drm*$.dpn*$.dnc));m(this,ce,new Uint8Array($.ch));m(this,me,new Uint8Array(128));m(this,te,new Uint8Array($.cmt*8));m(this,Ve,new Uint8Array(1024));m(this,Ee,new Uint8Array($.cmt*64));m(this,Q,new Uint8Array($.efx*3));m(this,ve,0);m(this,Z,0);m(this,X,100);m(this,pe,0);m(this,Xe,500);m(this,ze,0);m(this,le,"");m(this,ke,0);m(this,Ke,0);m(this,re,!0);m(this,I,!1);m(this,tt,void 0);m(this,$t,new Uint8Array(2));m(this,T,[]);m(this,be,new Uint8Array($.ch));m(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");m(this,_,[]);m(this,Te,void 0);m(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,ee)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,oe)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});m(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,P)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,ee)[n]=1,t(this,N).ano(n);return}case 127:{t(this,ee)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(mr.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(Y()&&console.debug(`${$e[t(this,P)]}, CH${n+1}: ${e.data[1]}`),t(this,P)==0)e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,P)==M.gs)e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,P)==M.gm)e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,P)==M.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let c=0;for(let r=0;r<16;r++){let a=t(this,p)[$.cc*r];(a==56||a==62)&&c++}c>14&&this.switchMode("ag10",!0)}}switch(t(this,P)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,P))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,P)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=Er.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,P)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,P)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,D)[n]=e.data,t(this,ce)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});m(this,ot,{64:(e,n,h)=>{t(this,Pe).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,he).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,he).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,J).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,De).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});m(this,Re,void 0);m(this,Oe,void 0);m(this,J,void 0);m(this,he,void 0);m(this,ge,void 0);m(this,Pe,void 0);m(this,De,void 0);m(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new se),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,10 +147,10 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,_)[1]=function(r){switch(r.slice(0,2)){case"@I":{w(this,I,!0),t(this,T).unshift(`Kar.Info: ${r.slice(2)}`);break}case"@K":{w(this,I,!0),t(this,T).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${r.slice(2)}`);break}case"@L":{w(this,I,!0),t(this,T).unshift(`Language: ${r.slice(2)}`);break}case"@T":{w(this,I,!0),t(this,T).unshift(`Ka.Title: ${r.slice(2)}`);break}case"@V":{w(this,I,!0),t(this,T).unshift(`Kara.Ver: ${r.slice(2)}`);break}case"XF":{let a=r.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,T).unshift(`XGF_Data: ${r}`)}break}default:t(this,I)?r[0]=="\\"?t(this,T).unshift(`@ ${r.slice(1)}`):r[0]=="/"?t(this,T).unshift(r.slice(1)):t(this,T)[0]+=r:(t(this,T)[0]=r,t(this,T).unshift(""))}},t(this,_)[2]=function(r){t(this,T).unshift(`Copyrite: ${r}`)},t(this,_)[3]=function(r,a){a<1&&t(this,pe)<1&&t(this,T).unshift(`TrkTitle: ${r}`)},t(this,_)[4]=function(r,a){t(this,T).unshift(`${Qt(t(this,pe),""," ")}Instrmnt: ${r}`)},t(this,_)[5]=function(r){r.trim()==""?t(this,T).unshift(""):t(this,T)[0]+=`${r}`},t(this,_)[6]=function(r){t(this,T).unshift(`${Qt(t(this,pe),""," ")}C.Marker: ${r}`)},t(this,_)[7]=function(r){t(this,T).unshift(`CuePoint: ${r}`)},t(this,_)[32]=function(r){w(this,pe,r[0]+1)},t(this,_)[33]=function(r,a){console.debug(`Track ${a} requests to get assigned to output ${r}.`),t(e,Se)[a]=r+1},t(this,_)[81]=function(r,a){w(e,Xe,r/1e3)},t(this,_)[127]=function(r,a){t(e,Te).run(r,a)},t(this,Te).default=function(r){console.warn(`Unrecognized sequencer-specific byte sequence: ${r}`)},t(this,Te).add([67,0,1],function(r,a){t(e,Se)[a]=r[0]+1}),w(this,Re,new se("universal non-realtime")),w(this,Oe,new se("universal realtime")),w(this,Z,new se("Yamaha")),w(this,he,new se("Roland")),w(this,ge,new se("Korg")),w(this,Pe,new se("Kawai")),w(this,De,new se("Akai")),w(this,Ie,new se("Casio"));let n=function(r){console.info(`Unrecognized SysEx in "${this.name}" set.`,r)};t(this,Re).default=n,t(this,Oe).default=n,t(this,Z).default=n,t(this,he).default=n,t(this,ge).default=n,t(this,Pe).default=n,t(this,De).default=n,t(this,Ie).default=n,t(this,Re).add([9],r=>{e.switchMode(["gm","?","g2"][r[0]-1],!0),w(e,I,t(e,I)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][r[0]-1]}`),r[0]==2&&e.init()}),t(this,Oe).add([4,1],r=>{w(e,X,((r[1]<<7)+r[0])/16383*100)}).add([4,3],r=>((r[1]<<7)+r[0]-8192)/8192).add([4,4],r=>r[1]-64),t(this,Z).add([76,0,0],r=>{switch(r[0]){case 125:{console.info(`XG drum setup reset: ${r}`);break}case 126:{e.switchMode("xg",!0),w(e,I,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,s)=>{a[s]=i};if(r.subarray(1).forEach((i,s)=>{let f=s+r[0];([o,o,o,o,l=>{w(this,X,l*129/16383*100)},l=>{},l=>{}][f]||(()=>{}))(i,s)}),r[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],r=>{let a="XG ";r[0]<32?(a+="reverb ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${At(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][r[0]+i]||function(){console.warn(`Unknown XG reverb address: ${r[0]}.`)})(o)})):r[0]<64?(a+="chorus ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${It[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Ut(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${_e[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${_e[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][r[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${r[0]}.`)})(o)})):r[0]<86?(a+="variation ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][r[0]-64+i]||function(){})(o)})):r[0]<97?(a+="variation ",r.subarray(1).forEach((o,i)=>{[s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},s=>{console.debug(`${a}to chorus: ${q(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][r[0]-86+i](o)})):r[0]>111&&r[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${r[0]}`)}).add([76,2,64],r=>{r.subarray(1).forEach((a,o)=>{let i=o+r[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,f=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][f]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][f]()}})}).add([76,3],r=>{let a=r[0],o=r[1],i=`XG Insertion ${r[0]+1} `;r.subarray(2).forEach((s,f)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${We[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][o+f]||function(){})(s)})}).add([76,6,0],r=>{let a=r[0];a<64?e.setLetterDisplay(r.subarray(1),"XG letter display",a):w(e,ke,Date.now())}).add([76,7,0],r=>{let a=r[0];w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0);let o=r.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=$.cc*o,f=`XG CH${o+1} `,l=`Unknown XG part address ${i}.`;r.subarray(2).forEach((d,b)=>{i<1?console.debug(l):i<41?([()=>{t(e,p)[s+g[0]]=d},()=>{t(e,p)[s+g[32]]=d},()=>{t(e,D)[o]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,J)[o]=+!d},()=>{},()=>{e.setChType(o,d,M.xg),console.debug(`${f}type: ${Ye[d]||d}`)},()=>{t(e,S)[$.rpn*o+3]=d},!1,!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{t(e,p)[s+g[128]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[76]]=d},()=>{t(e,p)[s+g[77]]=d},()=>{t(e,p)[s+g[78]]=d},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},()=>{t(e,p)[s+g[73]]=d},()=>{t(e,p)[s+g[75]]=d},()=>{t(e,p)[s+g[72]]=d}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(t(e,p)[s+g[[5,65][i&1]]]=d):i<114?console.debug(l):i<116?console.debug(`${f}EQ ${["bass","treble"][i&1]} gain: ${d-64}dB`):i<118?console.debug(l):i<120?console.debug(`${f}EQ ${["bass","treble"][i&1]} freq: ${d}`):console.debug(l)})}).add([76,9],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=`PLG-150VL CH${o+1} `;r.subarray(2).forEach((f,l)=>{let d=l+i;switch(d){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][f]}`);break}case 0:case 27:case 28:break;default:if(d<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][d-3>>1];d&1?d<23?(console.debug(`${s}${b} control source: ${Nt(f)}`),f&&f<96&&e.allocateAce(f)):console.debug(`${s}${b} scale break point: ${f}`):console.debug(`${s}${b} depth: ${f-64}`)}}})}).add([76,10],r=>{}).add([76,16],r=>{}).add([76,17,0,0],r=>{}).add([76,112],r=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][r[0]]} for CH${r[2]+1}.`)}).add([73,0,0],(r,a)=>{let o=r[0];r.subarray(1).forEach((i,s)=>{let f=o+s;f==8?console.debug(`MU1000 set LCD contrast to ${i}.`):f>9&&f<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,re,!!i),console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][f-10]()})}).add([73,10,0],(r,a)=>{let o=r[0],i=`MU1000 RS${t(e,re)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let s=e.chRedir(0,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(r[1]<<5,a,!0);t(e,re)&&e.dispatchEvent("channelmin",s),t(e,re)&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,re)){let s=e.chRedir(o-16+(t(e,Ke)<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(o<36){let s=e.chRedir(o-32<<4,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),w(e,Ke,o-32)),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=`PLG-100SG CH${o+1} `,s=Date.now();if(r[1]==0){let f="",l=0;r.subarray(2).forEach((d,b)=>{b%2==0?f+=Lt[d]||d.toString().padStart("0"):l+=d*13}),s>=t(e,ze)&&t(e,T).unshift("SG Lyric: "),t(e,T)[0]+=`${Bt(f)}`,w(e,ze,s+Math.ceil(l/2)+t(e,Xe)),Y()&&console.debug(`${i}vocals: ${f}`)}else console.warn(`Unknown PLG-100SG data: ${r}`)}),t(this,Z).add([76,48],r=>{}).add([76,49],r=>{}).add([76,50],r=>{}).add([76,51],r=>{}),t(this,Z).add([89,0],(r,a,o)=>{if(e.eprom){let i=r[0],s=(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let f=e.eprom.data;r.subarray(4).forEach((l,d)=>{let b=d>>3,y=d&7;if(y==7)for(let k=0;k<7;k++)f[s+7*b+k]+=(l>>6-k&1)<<7;else f[s+7*b+y]=l})}}).add([89,1],(r,a,o)=>{let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3];Y()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(r,a,o)=>{if(e.eprom){let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;r.subarray(4).forEach((f,l)=>{let d=l>>3,b=l&7;if(b==7)for(let y=0;y<7;y++)s[i+7*d+y]+=(f>>6-y&1)<<7;else s[i+7*d+b]=f})}}).add([89,3],(r,a,o)=>{}),t(this,Z).add([39,48],(r,a,o)=>{}).add([43,0,0],(r,a,o)=>{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,()=>{w(this,X,f*129/16383*100)},()=>f-64,()=>f||128,()=>f,()=>f,()=>{console.debug(`TG300 variation on cc${f}.`)}][d](f,d)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}).add([43,1,0],(r,a,o)=>{}).add([43,2],(r,a,o)=>{let i=e.chRedir(r[0],a,!0),s=r[1],f=$.cc*i,l=`TG300 CH${i+1} `;r.subarray(2).forEach((d,b)=>{b<5?([()=>{},()=>{t(e,p)[f+g[0]]=d},()=>{t(e,p)[f+g[32]]=d},()=>{t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][b+s]||(()=>{}))(d,b+s):b<21||(b<47?([()=>{t(e,J)[i]=+!d},()=>{},()=>{},()=>{t(e,S)[$.rpn*i+3]=d},()=>{},()=>{t(e,p)[f+g[7]]=d},!1,!1,()=>{t(e,p)[f+g[10]]=d||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${d}`)},()=>{console.debug(`${l} AC2 at cc${d}`)},()=>{t(e,p)[f+g[128]]=d},()=>{t(e,p)[f+g[93]]=d},()=>{t(e,p)[f+g[91]]=d},()=>{t(e,p)[f+g[94]]=d},()=>{t(e,p)[f+g[76]]=d},()=>{t(e,p)[f+g[77]]=d},()=>{t(e,p)[f+g[74]]=d},()=>{t(e,p)[f+g[71]]=d},()=>{t(e,p)[f+g[73]]=d},()=>{t(e,p)[f+g[75]]=d},()=>{t(e,p)[f+g[72]]=d},()=>{t(e,p)[f+g[78]]=d}][b+s-21]||(()=>{}))(d,b+s):b<95||([()=>{t(e,p)[f+g[65]]=d},()=>{t(e,p)[f+g[5]]=d}][b+s-95]||(()=>{}))(d,b+s))})}).add([43,7,0],(r,a,o)=>{let i=r[0];e.setLetterDisplay(r.subarray(1),"TG300 letter display",i)}).add([43,7,1],(r,a,o)=>{w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0),r.forEach(function(i,s){let f=Math.floor(s/16),l=s%16,d=(l*3+f)*7,b=7,y=0;for(d-=l*5,f==2&&(b=2);y>6-y&1,y++})}),t(this,he).add([66,18,0,0,127],(r,a,o)=>{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,te,3),w(e,I,!1),t(e,be).fill(0),console.info(`GS system to ${["single","dual"][r[0]]} mode.`)}).add([66,18,64,0],(r,a,o)=>{switch(r[0]){case 127:{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,I,!1),t(e,be).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,b=>{w(this,X,b*129/16383*100)},b=>{},b=>{}][d](f,l)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,64,1],r=>{let a=r[0];if(a<16){let o="".padStart(a," ");r.subarray(1).forEach((i,s)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?r.subarray(1).forEach((o,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${pt[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${o}ms`)},()=>{console.info(`${s}type: ${Ht[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)},()=>{console.debug(`${s}to delay: ${q(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?r.subarray(1).forEach((o,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${Gt[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],r=>{let a="GS EQ ";r.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][r[0]+i]||function(){console.warn(`Unknown GS EQ address: ${r[0]+i}`)})()})}).add([66,18,64,3],r=>{let a="GS EFX ",o=function(i,s){let f=_t(t(e,Q).subarray(10,12),s,i);f&&console.debug(`${a}${bt(t(e,Q).subarray(10,12))} ${f}`)};r.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${bt(t(e,Q).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${q(i)}dB`)},()=>{console.debug(`${a}to chorus: ${q(i)}dB`)},()=>{console.debug(`${a}to delay: ${q(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][r[0]+s]||function(f,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,r[0]+s)})}).add([66,18,65],r=>{}).add([69,18,16],r=>{var a;switch(r[0]){case 0:{let o=r[1];e.setLetterDisplay(r.subarray(2),"GS display text",o);break}case 32:{w(e,ne,Date.now()+3200),r[1]==0&&w(e,j,Math.max(Math.min(r[2]-1,9),0));break}default:if(r[0]<11){t(e,j)>9&&w(e,j,0),w(e,ne,Date.now()+3200),(a=t(e,fe)[r[0]-1])!=null&&a.length||(t(e,fe)[r[0]-1]=new Uint8Array(256));let o=t(e,fe)[r[0]-1],i=r[1];o.fill(0);let s=r.subarray(2);for(let f=0;f>4-v&1,v++})}else console.warn(`Unknown GS display section: ${r[0]}`)}});let h=function(r,a,o){let i=r[0],s=$.cc*a,f=$.rpn*a,l=`GS CH${a+1} `;i<3?r.subarray(1).forEach((d,b)=>{[()=>{t(e,p)[s+g[0]]=d},()=>{t(e,D)[a]=d},()=>{let y=e.chRedir(d,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][i+b]()}):i<19||(i<44?r.subarray(1).forEach((d,b)=>{([()=>{t(e,J)[a]=+!d},!1,()=>{e.setChType(a,d<<1,M.gs),console.debug(`${l}type: ${d?"drum ":"melodic"}${d||""}`)},()=>{t(e,S)[f+3]=d},!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${d}`)},()=>{console.debug(`${l}CC 2: cc${d}`)},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},!1,!1,()=>{t(e,S)[f+1]=d},()=>{t(e,S)[f+2]=d},()=>{t(e,p)[s+g[94]]=d}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},c=function(r,a){let o=r[0],i=`GS CH${a+1} `;o<2?r.subarray(1).forEach((s,f)=>{[()=>{t(e,p)[$.cc*a+g[32]]=s},()=>{}][o+f]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?r.subarray(1).forEach((s,f)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][o+f-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,he).add([66,18,64,16],(r,a)=>{h(r,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(r,a)=>{h(r,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(r,a)=>{h(r,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(r,a)=>{h(r,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(r,a)=>{h(r,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(r,a)=>{h(r,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(r,a)=>{h(r,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(r,a)=>{h(r,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(r,a)=>{h(r,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(r,a)=>{h(r,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(r,a)=>{h(r,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(r,a)=>{h(r,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(r,a)=>{h(r,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(r,a)=>{h(r,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(r,a)=>{h(r,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(r,a)=>{h(r,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(r,a)=>{c(r,e.chRedir(9,a,!0))}).add([66,18,64,65],(r,a)=>{c(r,e.chRedir(0,a,!0))}).add([66,18,64,66],(r,a)=>{c(r,e.chRedir(1,a,!0))}).add([66,18,64,67],(r,a)=>{c(r,e.chRedir(2,a,!0))}).add([66,18,64,68],(r,a)=>{c(r,e.chRedir(3,a,!0))}).add([66,18,64,69],(r,a)=>{c(r,e.chRedir(4,a,!0))}).add([66,18,64,70],(r,a)=>{c(r,e.chRedir(5,a,!0))}).add([66,18,64,71],(r,a)=>{c(r,e.chRedir(6,a,!0))}).add([66,18,64,72],(r,a)=>{c(r,e.chRedir(7,a,!0))}).add([66,18,64,73],(r,a)=>{c(r,e.chRedir(8,a,!0))}).add([66,18,64,74],(r,a)=>{c(r,e.chRedir(10,a,!0))}).add([66,18,64,75],(r,a)=>{c(r,e.chRedir(11,a,!0))}).add([66,18,64,76],(r,a)=>{c(r,e.chRedir(12,a,!0))}).add([66,18,64,77],(r,a)=>{c(r,e.chRedir(13,a,!0))}).add([66,18,64,78],(r,a)=>{c(r,e.chRedir(14,a,!0))}).add([66,18,64,79],(r,a)=>{c(r,e.chRedir(15,a,!0))}),t(this,ge).add([54,65],(r,a)=>{e.switchMode("x5d");let o=(r[1]<<7)+r[0],i=(r[3]<<7)+r[2],s=e.chRedir(o&15,a,!0),f=$.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-1,t(e,p)[f+g[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-101,t(e,p)[f+g[0]]=56):(e.setChType(s,e.CH_DRUMS,M.x5d),t(e,D)[s]=jt[i-229]||0,t(e,p)[f+g[0]]=62))},()=>{t(e,p)[f+g[7]]=i},()=>{i<31&&(t(e,p)[f+g[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,p)[f+g[93]]=Ze(i)},()=>{t(e,p)[f+g[91]]=Ze(i)},()=>{t(e,S)[s*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,S)[s*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,S)[s*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=82,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<16400){let y=b%164;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` +122 006 000 `),t(this,_)[1]=function(r){switch(r.slice(0,2)){case"@I":{w(this,I,!0),t(this,T).unshift(`Kar.Info: ${r.slice(2)}`);break}case"@K":{w(this,I,!0),t(this,T).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${r.slice(2)}`);break}case"@L":{w(this,I,!0),t(this,T).unshift(`Language: ${r.slice(2)}`);break}case"@T":{w(this,I,!0),t(this,T).unshift(`Ka.Title: ${r.slice(2)}`);break}case"@V":{w(this,I,!0),t(this,T).unshift(`Kara.Ver: ${r.slice(2)}`);break}case"XF":{let a=r.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,T).unshift(`XGF_Data: ${r}`)}break}default:t(this,I)?r[0]=="\\"?t(this,T).unshift(`@ ${r.slice(1)}`):r[0]=="/"?t(this,T).unshift(r.slice(1)):t(this,T)[0]+=r:(t(this,T)[0]=r,t(this,T).unshift(""))}},t(this,_)[2]=function(r){t(this,T).unshift(`Copyrite: ${r}`)},t(this,_)[3]=function(r,a){a<1&&t(this,pe)<1&&t(this,T).unshift(`TrkTitle: ${r}`)},t(this,_)[4]=function(r,a){t(this,T).unshift(`${Qt(t(this,pe),""," ")}Instrmnt: ${r}`)},t(this,_)[5]=function(r){r.trim()==""?t(this,T).unshift(""):t(this,T)[0]+=`${r}`},t(this,_)[6]=function(r){t(this,T).unshift(`${Qt(t(this,pe),""," ")}C.Marker: ${r}`)},t(this,_)[7]=function(r){t(this,T).unshift(`CuePoint: ${r}`)},t(this,_)[32]=function(r){w(this,pe,r[0]+1)},t(this,_)[33]=function(r,a){console.debug(`Track ${a} requests to get assigned to output ${r}.`),t(e,Se)[a]=r+1},t(this,_)[81]=function(r,a){w(e,Xe,r/1e3)},t(this,_)[127]=function(r,a){t(e,Te).run(r,a)},t(this,Te).default=function(r){console.warn(`Unrecognized sequencer-specific byte sequence: ${r}`)},t(this,Te).add([67,0,1],function(r,a){t(e,Se)[a]=r[0]+1}),w(this,Re,new se("universal non-realtime")),w(this,Oe,new se("universal realtime")),w(this,J,new se("Yamaha")),w(this,he,new se("Roland")),w(this,ge,new se("Korg")),w(this,Pe,new se("Kawai")),w(this,De,new se("Akai")),w(this,Ie,new se("Casio"));let n=function(r){console.info(`Unrecognized SysEx in "${this.name}" set.`,r)};t(this,Re).default=n,t(this,Oe).default=n,t(this,J).default=n,t(this,he).default=n,t(this,ge).default=n,t(this,Pe).default=n,t(this,De).default=n,t(this,Ie).default=n,t(this,Re).add([9],r=>{e.switchMode(["gm","?","g2"][r[0]-1],!0),w(e,I,t(e,I)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][r[0]-1]}`),r[0]==2&&e.init()}),t(this,Oe).add([4,1],r=>{w(e,X,((r[1]<<7)+r[0])/16383*100)}).add([4,3],r=>((r[1]<<7)+r[0]-8192)/8192).add([4,4],r=>r[1]-64),t(this,J).add([76,0,0],r=>{switch(r[0]){case 125:{console.info(`XG drum setup reset: ${r}`);break}case 126:{e.switchMode("xg",!0),w(e,I,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,s)=>{a[s]=i};if(r.subarray(1).forEach((i,s)=>{let f=s+r[0];([o,o,o,o,l=>{w(this,X,l*129/16383*100)},l=>{},l=>{}][f]||(()=>{}))(i,s)}),r[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],r=>{let a="XG ";r[0]<32?(a+="reverb ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${At(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][r[0]+i]||function(){console.warn(`Unknown XG reverb address: ${r[0]}.`)})(o)})):r[0]<64?(a+="chorus ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${It[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Ut(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${_e[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${_e[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][r[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${r[0]}.`)})(o)})):r[0]<86?(a+="variation ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][r[0]-64+i]||function(){})(o)})):r[0]<97?(a+="variation ",r.subarray(1).forEach((o,i)=>{[s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},s=>{console.debug(`${a}to chorus: ${q(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][r[0]-86+i](o)})):r[0]>111&&r[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${r[0]}`)}).add([76,2,64],r=>{r.subarray(1).forEach((a,o)=>{let i=o+r[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,f=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][f]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][f]()}})}).add([76,3],r=>{let a=r[0],o=r[1],i=`XG Insertion ${r[0]+1} `;r.subarray(2).forEach((s,f)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${We[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][o+f]||function(){})(s)})}).add([76,6,0],r=>{let a=r[0];a<64?e.setLetterDisplay(r.subarray(1),"XG letter display",a):w(e,ke,Date.now())}).add([76,7,0],r=>{let a=r[0];w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0);let o=r.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=$.cc*o,f=`XG CH${o+1} `,l=`Unknown XG part address ${i}.`;r.subarray(2).forEach((d,b)=>{i<1?console.debug(l):i<41?([()=>{t(e,p)[s+g[0]]=d},()=>{t(e,p)[s+g[32]]=d},()=>{t(e,D)[o]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!d},()=>{},()=>{e.setChType(o,d,M.xg),console.debug(`${f}type: ${Ye[d]||d}`)},()=>{t(e,S)[$.rpn*o+3]=d},!1,!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{t(e,p)[s+g[128]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[76]]=d},()=>{t(e,p)[s+g[77]]=d},()=>{t(e,p)[s+g[78]]=d},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},()=>{t(e,p)[s+g[73]]=d},()=>{t(e,p)[s+g[75]]=d},()=>{t(e,p)[s+g[72]]=d}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(t(e,p)[s+g[[5,65][i&1]]]=d):i<114?console.debug(l):i<116?console.debug(`${f}EQ ${["bass","treble"][i&1]} gain: ${d-64}dB`):i<118?console.debug(l):i<120?console.debug(`${f}EQ ${["bass","treble"][i&1]} freq: ${d}`):console.debug(l)})}).add([76,9],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=`PLG-150VL CH${o+1} `;r.subarray(2).forEach((f,l)=>{let d=l+i;switch(d){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][f]}`);break}case 0:case 27:case 28:break;default:if(d<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][d-3>>1];d&1?d<23?(console.debug(`${s}${b} control source: ${Nt(f)}`),f&&f<96&&e.allocateAce(f)):console.debug(`${s}${b} scale break point: ${f}`):console.debug(`${s}${b} depth: ${f-64}`)}}})}).add([76,10],r=>{}).add([76,16],r=>{}).add([76,17,0,0],r=>{}).add([76,112],r=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][r[0]]} for CH${r[2]+1}.`)}).add([73,0,0],(r,a)=>{let o=r[0],i="MU1000 System: ";r.subarray(1).forEach((s,f)=>{let l=o+f;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(w(e,Z,s?126:0),console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,re,!!s),console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(r,a)=>{let o=r[0],i=`MU1000 RS${t(e,re)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let s=e.chRedir(0,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(r[1]<<5,a,!0);t(e,re)&&e.dispatchEvent("channelmin",s),t(e,re)&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,re)){let s=e.chRedir(o-16+(t(e,Ke)<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(o<36){let s=e.chRedir(o-32<<4,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),w(e,Ke,o-32)),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=`PLG-100SG CH${o+1} `,s=Date.now();if(r[1]==0){let f="",l=0;r.subarray(2).forEach((d,b)=>{b%2==0?f+=Lt[d]||d.toString().padStart("0"):l+=d*13}),s>=t(e,ze)&&t(e,T).unshift("SG Lyric: "),t(e,T)[0]+=`${Bt(f)}`,w(e,ze,s+Math.ceil(l/2)+t(e,Xe)),Y()&&console.debug(`${i}vocals: ${f}`)}else console.warn(`Unknown PLG-100SG data: ${r}`)}),t(this,J).add([76,48],r=>{}).add([76,49],r=>{}).add([76,50],r=>{}).add([76,51],r=>{}),t(this,J).add([89,0],(r,a,o)=>{if(e.eprom){let i=r[0],s=(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let f=e.eprom.data;r.subarray(4).forEach((l,d)=>{let b=d>>3,y=d&7;if(y==7)for(let k=0;k<7;k++)f[s+7*b+k]+=(l>>6-k&1)<<7;else f[s+7*b+y]=l})}}).add([89,1],(r,a,o)=>{let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3];Y()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(r,a,o)=>{if(e.eprom){let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;r.subarray(4).forEach((f,l)=>{let d=l>>3,b=l&7;if(b==7)for(let y=0;y<7;y++)s[i+7*d+y]+=(f>>6-y&1)<<7;else s[i+7*d+b]=f})}}).add([89,3],(r,a,o)=>{}),t(this,J).add([39,48],(r,a,o)=>{}).add([43,0,0],(r,a,o)=>{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,()=>{w(this,X,f*129/16383*100)},()=>f-64,()=>f||128,()=>f,()=>f,()=>{console.debug(`TG300 variation on cc${f}.`)}][d](f,d)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}).add([43,1,0],(r,a,o)=>{}).add([43,2],(r,a,o)=>{let i=e.chRedir(r[0],a,!0),s=r[1],f=$.cc*i,l=`TG300 CH${i+1} `;r.subarray(2).forEach((d,b)=>{b<5?([()=>{},()=>{t(e,p)[f+g[0]]=d},()=>{t(e,p)[f+g[32]]=d},()=>{t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][b+s]||(()=>{}))(d,b+s):b<21||(b<47?([()=>{t(e,ee)[i]=+!d},()=>{},()=>{},()=>{t(e,S)[$.rpn*i+3]=d},()=>{},()=>{t(e,p)[f+g[7]]=d},!1,!1,()=>{t(e,p)[f+g[10]]=d||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${d}`)},()=>{console.debug(`${l} AC2 at cc${d}`)},()=>{t(e,p)[f+g[128]]=d},()=>{t(e,p)[f+g[93]]=d},()=>{t(e,p)[f+g[91]]=d},()=>{t(e,p)[f+g[94]]=d},()=>{t(e,p)[f+g[76]]=d},()=>{t(e,p)[f+g[77]]=d},()=>{t(e,p)[f+g[74]]=d},()=>{t(e,p)[f+g[71]]=d},()=>{t(e,p)[f+g[73]]=d},()=>{t(e,p)[f+g[75]]=d},()=>{t(e,p)[f+g[72]]=d},()=>{t(e,p)[f+g[78]]=d}][b+s-21]||(()=>{}))(d,b+s):b<95||([()=>{t(e,p)[f+g[65]]=d},()=>{t(e,p)[f+g[5]]=d}][b+s-95]||(()=>{}))(d,b+s))})}).add([43,7,0],(r,a,o)=>{let i=r[0];e.setLetterDisplay(r.subarray(1),"TG300 letter display",i)}).add([43,7,1],(r,a,o)=>{w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0),r.forEach(function(i,s){let f=Math.floor(s/16),l=s%16,d=(l*3+f)*7,b=7,y=0;for(d-=l*5,f==2&&(b=2);y>6-y&1,y++})}),t(this,he).add([66,18,0,0,127],(r,a,o)=>{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,Z,3),w(e,I,!1),t(e,be).fill(0),console.info(`GS system to ${["single","dual"][r[0]]} mode.`)}).add([66,18,64,0],(r,a,o)=>{switch(r[0]){case 127:{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,I,!1),t(e,be).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,b=>{w(this,X,b*129/16383*100)},b=>{},b=>{}][d](f,l)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,64,1],r=>{let a=r[0];if(a<16){let o="".padStart(a," ");r.subarray(1).forEach((i,s)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?r.subarray(1).forEach((o,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${pt[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${o}ms`)},()=>{console.info(`${s}type: ${Ht[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)},()=>{console.debug(`${s}to delay: ${q(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?r.subarray(1).forEach((o,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${Gt[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],r=>{let a="GS EQ ";r.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][r[0]+i]||function(){console.warn(`Unknown GS EQ address: ${r[0]+i}`)})()})}).add([66,18,64,3],r=>{let a="GS EFX ",o=function(i,s){let f=_t(t(e,Q).subarray(10,12),s,i);f&&console.debug(`${a}${bt(t(e,Q).subarray(10,12))} ${f}`)};r.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${bt(t(e,Q).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${q(i)}dB`)},()=>{console.debug(`${a}to chorus: ${q(i)}dB`)},()=>{console.debug(`${a}to delay: ${q(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][r[0]+s]||function(f,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,r[0]+s)})}).add([66,18,65],r=>{}).add([69,18,16],r=>{var a;switch(r[0]){case 0:{let o=r[1];e.setLetterDisplay(r.subarray(2),"GS display text",o);break}case 32:{w(e,ne,Date.now()+3200),r[1]==0&&w(e,j,Math.max(Math.min(r[2]-1,9),0));break}default:if(r[0]<11){t(e,j)>9&&w(e,j,0),w(e,ne,Date.now()+3200),(a=t(e,fe)[r[0]-1])!=null&&a.length||(t(e,fe)[r[0]-1]=new Uint8Array(256));let o=t(e,fe)[r[0]-1],i=r[1];o.fill(0);let s=r.subarray(2);for(let f=0;f>4-v&1,v++})}else console.warn(`Unknown GS display section: ${r[0]}`)}});let h=function(r,a,o){let i=r[0],s=$.cc*a,f=$.rpn*a,l=`GS CH${a+1} `;i<3?r.subarray(1).forEach((d,b)=>{[()=>{t(e,p)[s+g[0]]=d},()=>{t(e,D)[a]=d},()=>{let y=e.chRedir(d,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][i+b]()}):i<19||(i<44?r.subarray(1).forEach((d,b)=>{([()=>{t(e,ee)[a]=+!d},!1,()=>{e.setChType(a,d<<1,M.gs),console.debug(`${l}type: ${d?"drum ":"melodic"}${d||""}`)},()=>{t(e,S)[f+3]=d},!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${d}`)},()=>{console.debug(`${l}CC 2: cc${d}`)},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},!1,!1,()=>{t(e,S)[f+1]=d},()=>{t(e,S)[f+2]=d},()=>{t(e,p)[s+g[94]]=d}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},c=function(r,a){let o=r[0],i=`GS CH${a+1} `;o<2?r.subarray(1).forEach((s,f)=>{[()=>{t(e,p)[$.cc*a+g[32]]=s},()=>{}][o+f]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?r.subarray(1).forEach((s,f)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][o+f-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,he).add([66,18,64,16],(r,a)=>{h(r,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(r,a)=>{h(r,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(r,a)=>{h(r,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(r,a)=>{h(r,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(r,a)=>{h(r,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(r,a)=>{h(r,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(r,a)=>{h(r,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(r,a)=>{h(r,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(r,a)=>{h(r,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(r,a)=>{h(r,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(r,a)=>{h(r,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(r,a)=>{h(r,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(r,a)=>{h(r,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(r,a)=>{h(r,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(r,a)=>{h(r,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(r,a)=>{h(r,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(r,a)=>{c(r,e.chRedir(9,a,!0))}).add([66,18,64,65],(r,a)=>{c(r,e.chRedir(0,a,!0))}).add([66,18,64,66],(r,a)=>{c(r,e.chRedir(1,a,!0))}).add([66,18,64,67],(r,a)=>{c(r,e.chRedir(2,a,!0))}).add([66,18,64,68],(r,a)=>{c(r,e.chRedir(3,a,!0))}).add([66,18,64,69],(r,a)=>{c(r,e.chRedir(4,a,!0))}).add([66,18,64,70],(r,a)=>{c(r,e.chRedir(5,a,!0))}).add([66,18,64,71],(r,a)=>{c(r,e.chRedir(6,a,!0))}).add([66,18,64,72],(r,a)=>{c(r,e.chRedir(7,a,!0))}).add([66,18,64,73],(r,a)=>{c(r,e.chRedir(8,a,!0))}).add([66,18,64,74],(r,a)=>{c(r,e.chRedir(10,a,!0))}).add([66,18,64,75],(r,a)=>{c(r,e.chRedir(11,a,!0))}).add([66,18,64,76],(r,a)=>{c(r,e.chRedir(12,a,!0))}).add([66,18,64,77],(r,a)=>{c(r,e.chRedir(13,a,!0))}).add([66,18,64,78],(r,a)=>{c(r,e.chRedir(14,a,!0))}).add([66,18,64,79],(r,a)=>{c(r,e.chRedir(15,a,!0))}),t(this,ge).add([54,65],(r,a)=>{e.switchMode("x5d");let o=(r[1]<<7)+r[0],i=(r[3]<<7)+r[2],s=e.chRedir(o&15,a,!0),f=$.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-1,t(e,p)[f+g[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-101,t(e,p)[f+g[0]]=56):(e.setChType(s,e.CH_DRUMS,M.x5d),t(e,D)[s]=jt[i-229]||0,t(e,p)[f+g[0]]=62))},()=>{t(e,p)[f+g[7]]=i},()=>{i<31&&(t(e,p)[f+g[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,p)[f+g[93]]=Ze(i)},()=>{t(e,p)[f+g[91]]=Ze(i)},()=>{t(e,S)[s*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,S)[s*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,S)[s*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=82,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<16400){let y=b%164;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=90,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<13600){let y=b%136;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ie(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ie(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,D)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,D)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,he).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,Ee)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,Ee)[i-1<<4];if(b<3)if(t(e,ce)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,ce)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,ee)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,Ee)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,Ee)[d-1<<4];if(y<3)if(t(e,ce)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,ee)[(d-1)*$.cmt+b]=s),b<10&&(t(e,ce)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let m=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME -000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,me)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,le,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,D)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,D)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,J)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,ne,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,m=0,x=y0;)t(e,W,de)[k*32+y*7+(x-m)]=v&1,v=v>>1,m++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ie(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ie(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,D)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ie(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ie(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,D)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,D)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,he).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,me)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,me)[i-1<<4];if(b<3)if(t(e,ce)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,ce)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,te)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,me)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,me)[d-1<<4];if(y<3)if(t(e,ce)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,te)[(d-1)*$.cmt+b]=s),b<10&&(t(e,ce)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let E=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME +000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,Ee)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,le,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,D)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,D)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,ne,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,E=0,x=y0;)t(e,W,de)[k*32+y*7+(x-E)]=v&1,v=v>>1,E++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ie(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ie(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,D)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=88,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%126;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:break;case y==12:break;case y==13:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,te,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,Z).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,Z).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0)},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,J)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,te))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,te),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,te)}return e}getChType(){return t(this,O)}setChType(e,n,h=t(this,P),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,te);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,me).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,D)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,P)]);if(t(this,ce)[e])switch(t(this,P)){case M.mt32:n.ending="~",n.name="",t(this,ee).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,le," ".repeat(h)),e.forEach(o=>{w(r,le,t(r,le)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,le,t(r,le).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,P,0),w(this,ve,0),w(this,te,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,D).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,oe).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,T,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,le,""),w(this,ne,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,O).fill(this.CH_MELODIC),t(this,O)[9]=this.CH_DRUM1,t(this,O)[25]=this.CH_DRUM3,t(this,O)[41]=this.CH_DRUMS,t(this,O)[57]=this.CH_DRUMS,t(this,O)[73]=this.CH_DRUM5,t(this,O)[89]=this.CH_DRUM7,t(this,O)[105]=this.CH_DRUMS,t(this,O)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,me).fill(0),t(this,Ee).fill(0),t(this,ee).fill(0),t(this,ce).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,P)==0||n){let c=t(this,P);w(this,P,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,te,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,O)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,D)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,oe).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,T).length>100&&t(this,T).splice(100,t(this,T).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},P=new WeakMap,j=new WeakMap,ne=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,O=new WeakMap,p=new WeakMap,ue=new WeakMap,D=new WeakMap,L=new WeakMap,J=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,oe=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,ce=new WeakMap,Ee=new WeakMap,ee=new WeakMap,Ve=new WeakMap,me=new WeakMap,Q=new WeakMap,ve=new WeakMap,te=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,le=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,T=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,Z=new WeakMap,he=new WeakMap,ge=new WeakMap,Pe=new WeakMap,De=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);R();R();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){E(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),mt=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);E(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new mt(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new mt(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let m={type:y.type,data:y.data,track:b,part:0};y.type>14?m.meta=y.metaType:m.part=y.channel,e.push(new rr(a/c/h*60+o,m))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");E(this,qe,void 0);E(this,Ue,"");E(this,Le,[]);E(this,Be,new Uint8ClampedArray(128));E(this,st,new Uint8ClampedArray(128));E(this,xe,.5);E(this,je,120);E(this,F,4);E(this,Ne,4);E(this,ye,0);E(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((m,x)=>{t(this,st)[x]=m}),r.device.newStrength(),n.forEach(function(m){let x=m.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),m.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(m,x,A){A[x]=Math.max(t(r,st)[x],m);let V=A[x]-t(r,Be)[x],ae=g.length*x;if(V>=0){let lt=4*.25**(f[ae+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[ae+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(m,x){m&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,Z,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,J).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,J).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0)},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,ee)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,Z))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,Z),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,Z)}return e}getChType(){return t(this,O)}setChType(e,n,h=t(this,P),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,Z);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,Ee).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,D)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,P)]);if(t(this,ce)[e])switch(t(this,P)){case M.mt32:n.ending="~",n.name="",t(this,te).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,le," ".repeat(h)),e.forEach(o=>{w(r,le,t(r,le)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,le,t(r,le).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,P,0),w(this,ve,0),w(this,Z,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,D).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,oe).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,T,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,le,""),w(this,ne,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,O).fill(this.CH_MELODIC),t(this,O)[9]=this.CH_DRUM1,t(this,O)[25]=this.CH_DRUM3,t(this,O)[41]=this.CH_DRUMS,t(this,O)[57]=this.CH_DRUMS,t(this,O)[73]=this.CH_DRUM5,t(this,O)[89]=this.CH_DRUM7,t(this,O)[105]=this.CH_DRUMS,t(this,O)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,Ee).fill(0),t(this,me).fill(0),t(this,te).fill(0),t(this,ce).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,P)==0||n){let c=t(this,P);w(this,P,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,Z,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,O)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,D)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,oe).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,T).length>100&&t(this,T).splice(100,t(this,T).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},P=new WeakMap,j=new WeakMap,ne=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,O=new WeakMap,p=new WeakMap,ue=new WeakMap,D=new WeakMap,L=new WeakMap,ee=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,oe=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,ce=new WeakMap,me=new WeakMap,te=new WeakMap,Ve=new WeakMap,Ee=new WeakMap,Q=new WeakMap,ve=new WeakMap,Z=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,le=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,T=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,J=new WeakMap,he=new WeakMap,ge=new WeakMap,Pe=new WeakMap,De=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);R();R();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){m(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),Et=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);m(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new Et(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new Et(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let E={type:y.type,data:y.data,track:b,part:0};y.type>14?E.meta=y.metaType:E.part=y.channel,e.push(new rr(a/c/h*60+o,E))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");m(this,qe,void 0);m(this,Ue,"");m(this,Le,[]);m(this,Be,new Uint8ClampedArray(128));m(this,st,new Uint8ClampedArray(128));m(this,xe,.5);m(this,je,120);m(this,F,4);m(this,Ne,4);m(this,ye,0);m(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((E,x)=>{t(this,st)[x]=E}),r.device.newStrength(),n.forEach(function(E){let x=E.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),E.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(E,x,A){A[x]=Math.max(t(r,st)[x],E);let V=A[x]-t(r,Be)[x],ae=g.length*x;if(V>=0){let lt=4*.25**(f[ae+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[ae+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(E,x){E&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; diff --git a/dist/xp_state.mjs b/dist/xp_state.mjs index c8935e52..d82aa537 100644 --- a/dist/xp_state.mjs +++ b/dist/xp_state.mjs @@ -1,8 +1,8 @@ -var Rt=Object.defineProperty;var Ot=(u,e,n)=>e in u?Rt(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var M=(u,e,n)=>(Ot(u,typeof e!="symbol"?e+"":e,n),n),st=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(st(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,c)=>(st(u,e,"write to private field"),c?c.call(u,n):e.set(u,n),n);(function(){var u=function(o,i,a){var l,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:a==null?void 0:a.ports}),Object.defineProperty(h,"source",{value:a==null?void 0:a.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),a&&o=="message"&&(h.data=i,a.source&&Object.defineProperty(h,"source",{value:a.source}),(l=a.ports)!=null&&l.length&&Object.defineProperty(h,"ports",{value:a.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],c={},d=function(o){var i,a=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=c[o])!=null&&i.constructor||(c[o]=[]),c[o].push(this);var l=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return l}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(a);B>-1?(e.postMessage({t:"d",c:o,i:l}),n.splice(B,1),(m=c[o])!=null&&m.constructor&&(B=c[o].indexOf(a),B>-1&&c[o].splice(B,1)),c[o].length||delete c[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:l,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:l}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();a.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=l&&a.dispatchEvent(u("message",m.d,{source:a})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(l," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:a}),Object.defineProperty(m,"currentTarget",{value:a}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var a=i.data,l=!1;switch(a.t){case"k":{l=!1,e.postMessage({t:"k"});break}case"m":{var h=c[a.c];if(h!=null&&h.length)for(var f=0;f{switch(c.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),c.addEventListener("error",r=>{s(c.error||r.data||new Error("Blob read error"))}),c.addEventListener("load",()=>{d(c.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{c.readAsArrayBuffer(e);break}case"string":case"text":{c.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,c=16,d=this,s=[];for(;n-1;){let r=d.lastIndexOf(u);s.unshift(d.slice(r+u.length)),d=d.slice(0,r),r==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length0){let c=this.pool.length,d=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(s==c)s-=d;else{let i=rt(e,this.pool[s]);switch(i){case 0:{r=0;break}case 1:{s+d<=c&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,r--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(a,l,h){o&&a!=e[l]&&(o=!1)}),!o&&rt(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let c=this.point(e);c>-1?e.subarray?this.pool[c].data(e.subarray(this.pool[c].length),...n):this.pool[c].data(e.slice(this.pool[c].length),...n):this.default(e,...n)}};var I,at,it=(at=class{constructor(){E(this,I,{})}addEventListener(u,e){t(this,I)[u]||(t(this,I)[u]=[]),t(this,I)[u].unshift(e)}removeEventListener(u,e){if(t(this,I)[u]){let n=t(this,I)[u].indexOf(e);n>-1&&t(this,I)[u].splice(n,1),t(this,I)[u].length<1&&delete t(this,I)[u]}}dispatchEvent(u,e){var d;let n=new Event(u),c=this;n.data=e,((d=t(this,I)[u])==null?void 0:d.length)>0&&t(this,I)[u].forEach(function(s){try{s==null||s.call(c,n)}catch(r){console.error(r)}}),this[`on${u}`]&&this[`on${u}`](n)}},I=new WeakMap,at);var Dt=["MSB","PRG","LSB"],Qe=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...u){E(this,F,void 0);M(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,c){let d=[u,e,n],s,r=Array.from(arguments);switch(c){case"xg":{u==32?r[2]+=4:u==33||u==35||u==36?r[2]+=5:u==79?r[0]=95:u==80?r[0]=96:u==81?r[0]=97:u==82?r[0]=98:u==83?r[0]=99:u==84&&(r[0]=100),n==126?r[2]=125:n==127&&(r[2]=0);break}case"gs":{u==0&&n<5?r[2]=0:u>125&&n<5&&n!=2&&(r[2]=u,r[0]=0);break}case"sg":{u==8&&n==0&&(r[2]=5);break}case"s90es":{n<8?r[2]+=17:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{n<8?r[2]+=28:n<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let o=" ",i="M",a=!1,l=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||c=="gs"&&r[2]<5?i="GM-a":(i="y",a=!0);break}case 8:{c=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,a=!0;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let y=r[2];i=y<10?"kP:":"kC:",i+=y%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),a=!0;break}case 97:{i="VL:",a=!0,l=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(l=63),a=!0;break}case 100:{i="AN",r[2]>63&&(l=63),a=!0;break}case 121:{i=`GM-${r[2]?"":"a"}`,a=!0;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${(a?n:u)-l}`.padStart(4-i.length,"0")),c=="xg"&&u==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[r[0],r[1],r[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):(r[2]--,o="^"):u==48?(r[0]=0,r[2]=0,o="!"):u==62?(r[1]--,o=" ",r[1]<1&&!(s!=null&&s.length)&&(r[0]=0,o="!")):u<63?r[0]==0?(r[2]=0,o="^"):r[2]<1?(r[0]=0,o="*"):r[2]--:u==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(s=`GM2Vox0${n}`,o="#"):u==122?(r[1]==32?r[1]==0:r[1]%=7,s=t(this,F)[r[1]||0][(r[0]<<7)+r[2]],s?o=" ":(s="",o="*")):r[1]==0?(s=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):r[0]==0?(r[2]=0,o="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,o="!"):(r[0]=0,o="?"));let f=[r[0],r[1],r[2]];(c=="gs"||c=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(r[0]){case 0:{r[2]==0?g="GM":r[2]==5||r[2]==7?g="KG":r[2]<126?g="XG":r[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{r[2]<17?g="KR":r[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][r[2]];break}case 96:{g=r[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=r[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=r[2]==127?"MT":e==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&c=="xg"?g="XG":g="GS")}return{name:s||`${Qe(u||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(u,e,n){let c=this,d=[],s=0,r=0;u.split(` -`).forEach(function(o,i){let a=o.split(" "),l=[];i==0?a.forEach(function(h,f){d[Dt.indexOf(h)]=f}):a.forEach(async function(h,f){var g;f>2?(t(c,F)[l[d[1]]]=t(c,F)[l[d[1]]]||[],(!((g=t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]])!=null&&g.length)||e)&&(t(c,F)[l[d[1]]][(l[d[0]]<<7)+l[d[2]]]=a[3],s++),r++):l.push(parseInt(a[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${r} total, ${s} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],c=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let r=c[0];r<=c[1];r++){let o=s+r;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let u=0;u<128;u++)t(this,F).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,c){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,lt=(ot=class{constructor(){E(this,Oe,{});M(this,"context")}set(u,e){t(this,Oe)[u]=e}has(u){return!!t(this,Oe)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Oe)[u].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(u,e){let n=!0;return e.forEach((c,d)=>{n=n&&u[d]==c}),n},ct=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new lt;Ve.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",c=[0,0,0,0],d=32,s=0,r=0,o=!0,i=[],a=0;for(;o;){let l=e.subarray(s);([()=>{Le.decode(l.subarray(0,4))=="YSFC"?(s+=80,r=1):s++},()=>{if(Pt(l.subarray(0,4),c))i.forEach((h,f,g)=>{let y=ct(e.subarray(h.start+4,h.start+8));h.length=y}),r=2;else{let h=Le.decode(l.subarray(0,4)),f=ct(l.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[a],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;ye in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var C=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var I,rt,it=(rt=class{constructor(){E(this,I,{})}addEventListener(b,e){t(this,I)[b]||(t(this,I)[b]=[]),t(this,I)[b].unshift(e)}removeEventListener(b,e){if(t(this,I)[b]){let n=t(this,I)[b].indexOf(e);n>-1&&t(this,I)[b].splice(n,1),t(this,I)[b].length<1&&delete t(this,I)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,I)[b])==null?void 0:d.length)>0&&t(this,I)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},I=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);C(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[1]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` +`).forEach(function(o,i){let r=o.split(" "),c=[];i==0?r.forEach(function(h,f){d[Dt.indexOf(h)]=f}):r.forEach(async function(h,f){var g;f>2?(t(l,F)[c[d[1]]]=t(l,F)[c[d[1]]]||[],(!((g=t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]])!=null&&g.length)||e)&&(t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]]=r[3],s++),a++):c.push(parseInt(r[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${s} loaded.`)}clearRange(b){let e=b.prg!=null?b.prg.constructor==Array?b.prg:[b.prg,b.prg]:[0,127],n=b.msb!=null?b.msb.constructor==Array?b.msb:[b.msb,b.msb]:[0,127],l=b.lsb!=null?b.lsb.constructor==Array?b.lsb:[b.lsb,b.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let a=l[0];a<=l[1];a++){let o=s+a;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let b=0;b<128;b++)t(this,F).push([""])}async loadFiles(...b){this.init();let e=this;b.forEach(async function(n,l){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,ct=(ot=class{constructor(){E(this,Oe,{});C(this,"context")}set(b,e){t(this,Oe)[b]=e}has(b){return!!t(this,Oe)[b]}async read(b,e){if(!this.has(b))throw new Error(`No decoder registered for "${b}"`);return await t(this,Oe)[b].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(b,e){let n=!0;return e.forEach((l,d)=>{n=n&&b[d]==l}),n},lt=function(b){let e=0;return b.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new ct;Ve.set("s7e",async function(b){let e=new Uint8Array(await b.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",l=[0,0,0,0],d=32,s=0,a=0,o=!0,i=[],r=0;for(;o;){let c=e.subarray(s);([()=>{Le.decode(c.subarray(0,4))=="YSFC"?(s+=80,a=1):s++},()=>{if(Pt(c.subarray(0,4),l))i.forEach((h,f,g)=>{let y=lt(e.subarray(h.start+4,h.start+8));h.length=y}),a=2;else{let h=Le.decode(c.subarray(0,4)),f=lt(c.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[r],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;y=i.length&&(r=3,o=!1)}][r]||(()=>{o=!1}))()}return n});var Be=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ge=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],At=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],De=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ht=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ft=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},dt=function(u){return u>105?At[u-106]:u>100?u*1.1-100:u/10},ut=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),We={};`hi*, +063 ${(k[17]+1).toString().padStart(3,"0")} ${k[19].toString().padStart(3,"0")} ${m}`),S+=y}break}}r++,r>=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});var Be=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ge=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],At=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],De=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ht=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ft=function(b){let e=.1,n=-.3;return b>66?(e=5,n=315):b>56?(e=1,n=47):b>46&&(e=.5,n=18.5),e*b-n},dt=function(b){return b>105?At[b-106]:b>100?b*1.1-100:b/10},ut=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),We={};`hi*, ka,か ki,き ku,く @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(u=>{let e=u.split(",");We[e[0]]=e[1]});var bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(c=>{for(;e.indexOf(c)>-1;)e=e.replace(c,c[0])});for(let c in We)e=e.replaceAll(c,We[c]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},Je=function(u){return Ut[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},yt=function(u,e,n){let c=(u[0]-32<<16)+(u[1]<<8)+e,d=Nt[c]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(u=64){return Math.round(2e3*Math.log10(u/64))/100};var wt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(u,e){let n=0,c=0;for(let d=0;d>s&1)<<7,o=u[d];o+=r,d%8!=0?(e(o,n,u),n++):c=u[d]}},_e=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Ie=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((u,e)=>{x[u]=e});var p={length:Ie.length};Ie.forEach((u,e)=>{p[u]=e});var Mt={length:qe.length};qe.forEach((u,e)=>{Mt[u]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(u){let e=[],n=0;return u==null||u.forEach(function(c,d){c==247?e.push(u.subarray(n,d)):c==240&&(n=d+1)}),e.length||e.push(u.subarray(0)),q()&&console.debug(e),e},xt=function(u,e="",n="",c=2){return u?`${e}${u.toString().padStart(c,"0")}${n}`:""},$={ch:128,cc:Ie.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,b,le,O,A,j,U,L,pe,se,me,v,Pe,Fe,re,ge,W,Ae,$e,V,ye,Y,_,ce,Ue,Ne,ae,we,He,J,D,Xe,tt,C,he,Ee,G,ve,N,Ke,ze,xe,Ce,Q,ie,fe,Me,Te,Re,Ct,ms=(Ct=class extends it{constructor(){super();E(this,z);M(this,"NOTE_IDLE",0);M(this,"NOTE_ATTACK",1);M(this,"NOTE_DECAY",2);M(this,"NOTE_SUSTAIN",3);M(this,"NOTE_HELD",4);M(this,"NOTE_RELEASE",5);M(this,"NOTE_SOSTENUTO_ATTACK",8);M(this,"NOTE_SOSTENUTO_DECAY",9);M(this,"NOTE_SOSTENUTO_SUSTAIN",10);M(this,"NOTE_SOSTENUTO_HELD",11);M(this,"CH_MELODIC",0);M(this,"CH_DRUMS",1);M(this,"CH_DRUM1",2);M(this,"CH_DRUM2",3);M(this,"CH_DRUM3",4);M(this,"CH_DRUM4",5);M(this,"CH_DRUM5",6);M(this,"CH_DRUM6",7);M(this,"CH_DRUM7",8);M(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,b,new Uint8Array($.ch*$.cc));E(this,le,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,j,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,re,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,W,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Y,0);E(this,_,100);E(this,ce,0);E(this,Ue,500);E(this,Ne,0);E(this,ae,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,C,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));M(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));M(this,"userBank",new je("gm"));M(this,"initOnReset",!1);M(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let c=e*128+n,d=t(this,U).lastIndexOf(c);d>-1&&(t(this,b)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[c],state:this.NOTE_HELD})):t(this,b)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[c],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[c]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let d=e*128+n,s=0;for(t(this,j)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=c,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,c)=>{if(n==this.NOTE_HELD){let d=t(this,U)[c],s=d>>7;e==s&&(t(this,L)[c]=this.NOTE_IDLE,t(this,U)[c]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,c)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[c]=d;let s=t(this,U)[c];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[c],s=d>>7;e==s&&(t(this,L)[c]=this.NOTE_IDLE,t(this,U)[c]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,c,d)=>{let s=n>>7,r=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,r)})}});E(this,Ke,{8:function(e){let n=e.channel,c=e.data[0];t(this,N).nOff(n,c)},9:function(e){let n=e.channel;t(this,P)[n]=1;let c=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,c,d):t(this,N).nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];t(this,U).indexOf(c)>-1&&(t(this,A)[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let c=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,b)[d+p[1]]=0,t(this,b)[d+p[5]]=0,t(this,b)[d+p[64]]=0,t(this,b)[d+p[65]]=0,t(this,b)[d+p[66]]=0,t(this,b)[d+p[67]]=0,t(this,b)[d+p[11]]=127,t(this,b)[d+p[101]]=127,t(this,b)[d+p[100]]=127,t(this,b)[d+p[99]]=127,t(this,b)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,j)[n]=1,t(this,N).ano(n);return}case 127:{t(this,j)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0)e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,b)[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,R)==x.gs)e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,b)[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,R)==x.gm)e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,R)==x.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let d=0;for(let s=0;s<16;s++){let r=t(this,b)[$.cc*s];(r==56||r==62)&&d++}d>14&&this.switchMode("ag10",!0)}}switch(t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,b)[c+p[99]],s=t(this,b)[c+p[98]];if(d==1){let r=Bt.indexOf(s);if(r>-1)t(this,b)[c+p[71+r]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+r}.`),this.dispatchEvent("cc",{part:n,cc:71+r,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Mt[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,b)[c+p[100]]];t(this,b)[c+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,b)[c+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,b)[c+101]==0&&et[t(this,b)[c+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,b)[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,b)[c+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,re)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;t(this,U).forEach(function(d){let s=d>>7;c==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:c,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let c=n[0],d=n[1];(t(this,ze)[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(c,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,ce,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,c)=>{t(this,Me).run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)t(this,ie).run(n,c,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,c)=>{t(this,fe).run(n,c,e)},67:(e,n,c)=>{t(this,Q).run(n,c,e)},68:(e,n,c)=>{t(this,Re).run(n,c,e)},71:(e,n,c)=>{t(this,Te).run(n,c,e)},126:(e,n,c)=>{t(this,xe).run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),t(this,Ce).run(n,c,e)}});E(this,xe,void 0);E(this,Ce,void 0);E(this,Q,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Me,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(b=>{let e=b.split(",");We[e[0]]=e[1]});var bt=function(b){let e=b;b[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;e.indexOf(l)>-1;)e=e.replace(l,l[0])});for(let l in We)e=e.replaceAll(l,We[l]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(b){return b?b<96?`cc${b}`:["aftertouch","velocity","pitch bend"][b-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",b=>"aiueo"[b]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",b=>["off","LPF","HPF"][b]],94984:["noise type",b=>["white","pink"][b]],94987:["disc type",b=>["LP","SP","EP","RND"]],94990:["hum type",b=>`${b+5}0Hz`],94993:["M/S",b=>["mono","stereo"][b]]},Je=function(b){return Ut[(b[0]-32<<8)+b[1]]||`0x${b[0].toString(16).padStart(2,"0")}${b[1].toString(16).padStart(2,"0")}`},yt=function(b,e,n){let l=(b[0]-32<<16)+(b[1]<<8)+e,d=Nt[l]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(b=64){return Math.round(2e3*Math.log10(b/64))/100};var wt=function(b){let e=0;return b.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(b,e){let n=0,l=0;for(let d=0;d>s&1)<<7,o=b[d];o+=a,d%8!=0?(e(o,n,b),n++):l=b[d]}},_e=function(b){let e=Math.floor(b*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Ie=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((b,e)=>{x[b]=e});var p={length:Ie.length};Ie.forEach((b,e)=>{p[b]=e});var Ct={length:qe.length};qe.forEach((b,e)=>{Ct[b]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(b){let e=[],n=0;return b==null||b.forEach(function(l,d){l==247?e.push(b.subarray(n,d)):l==240&&(n=d+1)}),e.length||e.push(b.subarray(0)),q()&&console.debug(e),e},xt=function(b,e="",n="",l=2){return b?`${e}${b.toString().padStart(l,"0")}${n}`:""},$={ch:128,cc:Ie.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,u,ce,O,A,W,U,L,pe,se,me,v,Pe,Fe,ae,ge,Y,Ae,$e,V,ye,Q,_,le,Ue,Ne,re,we,He,J,D,Xe,tt,M,he,Ee,G,ve,N,Ke,ze,xe,Me,j,ie,fe,Ce,Te,Re,Mt,ms=(Mt=class extends it{constructor(){super();E(this,z);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,u,new Uint8Array($.ch*$.cc));E(this,ce,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,W,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ae,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,Y,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Q,0);E(this,_,100);E(this,le,0);E(this,Ue,500);E(this,Ne,0);E(this,re,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,M,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));C(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new je("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let l=e*128+n,d=t(this,U).lastIndexOf(l);d>-1&&(t(this,u)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_HELD})):t(this,u)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[l]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let d=e*128+n,s=0;for(t(this,W)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=l,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,l)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[l]=d;let s=t(this,U)[l];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,l,d)=>{let s=n>>7,a=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,a)})}});E(this,Ke,{8:function(e){let n=e.channel,l=e.data[0];t(this,N).nOff(n,l)},9:function(e){let n=e.channel;t(this,P)[n]=1;let l=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,l,d):t(this,N).nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];t(this,U).indexOf(l)>-1&&(t(this,A)[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let l=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,u)[d+p[1]]=0,t(this,u)[d+p[5]]=0,t(this,u)[d+p[64]]=0,t(this,u)[d+p[65]]=0,t(this,u)[d+p[66]]=0,t(this,u)[d+p[67]]=0,t(this,u)[d+p[11]]=127,t(this,u)[d+p[101]]=127,t(this,u)[d+p[100]]=127,t(this,u)[d+p[99]]=127,t(this,u)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,W)[n]=1,t(this,N).ano(n);return}case 127:{t(this,W)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0)e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,R)==x.gs)e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,R)==x.gm)e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,R)==x.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let d=0;for(let s=0;s<16;s++){let a=t(this,u)[$.cc*s];(a==56||a==62)&&d++}d>14&&this.switchMode("ag10",!0)}}switch(t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,u)[l+p[99]],s=t(this,u)[l+p[98]];if(d==1){let a=Bt.indexOf(s);if(a>-1)t(this,u)[l+p[71+a]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Ct[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,u)[l+p[100]]];t(this,u)[l+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,u)[l+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,u)[l+101]==0&&et[t(this,u)[l+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,u)[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,u)[l+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,ae)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;t(this,U).forEach(function(d){let s=d>>7;l==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:l,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let l=n[0],d=n[1];(t(this,ze)[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(l,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,le,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,l)=>{t(this,Ce).run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)t(this,ie).run(n,l,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,l)=>{t(this,fe).run(n,l,e)},67:(e,n,l)=>{t(this,j).run(n,l,e)},68:(e,n,l)=>{t(this,Re).run(n,l,e)},71:(e,n,l)=>{t(this,Te).run(n,l,e)},126:(e,n,l)=>{t(this,xe).run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),t(this,Me).run(n,l,e)}});E(this,xe,void 0);E(this,Me,void 0);E(this,j,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Ce,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,10 +147,10 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,C).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,C).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,C).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,C).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,C).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let r=s.slice(2).split(":");switch(r[0]){case"hd":{r.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{r.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,C).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,C).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,C).unshift(s.slice(1)):t(this,C)[0]+=s:(t(this,C)[0]=s,t(this,C).unshift(""))}},t(this,G)[2]=function(s){t(this,C).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,r){r<1&&t(this,ce)<1&&t(this,C).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,r){t(this,C).unshift(`${xt(t(this,ce),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,C).unshift(""):t(this,C)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,C).unshift(`${xt(t(this,ce),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,C).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,ce,s[0]+1)},t(this,G)[33]=function(s,r){console.debug(`Track ${r} requests to get assigned to output ${s}.`),t(e,Ee)[r]=s+1},t(this,G)[81]=function(s,r){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,r){t(e,ve).run(s,r)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,r){t(e,Ee)[r]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Ce,new Z("universal realtime")),w(this,Q,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Me,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Ce).default=n,t(this,Q).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Me).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Ce).add([4,1],s=>{w(e,_,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,Q).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let r=[0,0,0,0],o=(i,a)=>{r[a]=i};if(s.subarray(1).forEach((i,a)=>{let l=a+s[0];([o,o,o,o,h=>{w(this,_,h*129/16383*100)},h=>{},h=>{}][l]||(()=>{}))(i,a)}),s[0]<4){let i=0;r.forEach(a=>{i=i<<4,i+=a}),i-=1024}}}}).add([76,2,1],s=>{let r="XG ";s[0]<32?(r+="reverb ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(0,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(0,!0,a),console.debug(`${r}sub type: ${a+1}`)},a=>{console.debug(`${r}time: ${ft(a)}s`)},a=>{console.debug(`${r}diffusion: ${a}`)},a=>{console.debug(`${r}initial delay: ${a}`)},a=>{console.debug(`${r}HPF cutoff: ${De[a]}Hz`)},a=>{console.debug(`${r}LPF cutoff: ${De[a]}Hz`)},a=>{console.debug(`${r}width: ${a}`)},a=>{console.debug(`${r}height: ${a}`)},a=>{console.debug(`${r}depth: ${a}`)},a=>{console.debug(`${r}wall type: ${a}`)},a=>{console.debug(`${r}dry/wet: ${a}`)},a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},!1,!1,a=>{console.debug(`${r}delay: ${a}`)},a=>{console.debug(`${r}density: ${a}`)},a=>{console.debug(`${r}balance: ${a}`)},a=>{},a=>{console.debug(`${r}feedback: ${a}`)},a=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(r+="chorus ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(1,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(1,!0,a),console.debug(`${r}sub type: ${a+1}`)},a=>{console.debug(`${r}LFO: ${ht[a]}Hz`)},a=>{},a=>{console.debug(`${r}feedback: ${a}`)},a=>{console.debug(`${r}delay offset: ${dt(a)}ms`)},a=>{},a=>{console.debug(`${r}low: ${De[a]}Hz`)},a=>{console.debug(`${r}low: ${a-64}dB`)},a=>{console.debug(`${r}high: ${De[a]}Hz`)},a=>{console.debug(`${r}high: ${a-64}dB`)},a=>{console.debug(`${r}dry/wet: ${a}`)},a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},a=>{console.debug(`${r}to reverb: ${X(a)}dB`)},!1,a=>{},a=>{},a=>{},a=>{console.debug(`${r}LFO phase diff: ${(a-64)*3}deg`)},a=>{console.debug(`${r}input mode: ${a?"stereo":"mono"}`)},a=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(r+="variation ",s.subarray(1).forEach((o,i)=>{([a=>{e.setEffectTypeRaw(2,!1,a),console.info(`${r}main type: ${Be[a]}`)},a=>{e.setEffectTypeRaw(2,!0,a),console.debug(`${r}sub type: ${a+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(r+="variation ",s.subarray(1).forEach((o,i)=>{[a=>{console.debug(`${r}send: ${X(a)}dB`)},a=>{console.debug(`${r}pan: ${a-64}`)},a=>{console.debug(`${r}to reverb: ${X(a)}dB`)},a=>{console.debug(`${r}to chorus: ${X(a)}dB`)},a=>{console.debug(`${r}connection: ${a?"system":"insertion"}`)},a=>{console.debug(`${r}channel: CH${a+1}`)},a=>{console.debug(`${r}mod wheel: ${a-64}`)},a=>{console.debug(`${r}bend wheel: ${a-64}`)},a=>{console.debug(`${r}channel after touch: ${a-64}`)},a=>{console.debug(`${r}AC1: ${a-64}`)},a=>{console.debug(`${r}AC2: ${a-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?r+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((r,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][r]}`);else{let a=i-1>>2,l=i-1&3,h=`XG EQ ${a} ${["gain","freq","Q","shape"][l]}: `;[()=>{console.debug(`${h}${r-64}dB`)},()=>{console.debug(`${h}${r} (raw)`)},()=>{console.debug(`${h}${r/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!r]}`)}][l]()}})}).add([76,3],s=>{let r=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((a,l)=>{([h=>{e.setEffectTypeRaw(3+r,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+r,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+l]||function(){})(a)})}).add([76,6,0],s=>{let r=s[0];r<64?e.setLetterDisplay(s.subarray(1),"XG letter display",r):w(e,we,Date.now())}).add([76,7,0],s=>{let r=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=s[1],a=$.cc*o,l=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,b)[a+p[0]]=f},()=>{t(e,b)[a+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,j)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${l}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,b)[a+p[7]]=f},!1,!1,()=>{t(e,b)[a+p[10]]=f||128},!1,!1,()=>{t(e,b)[a+p[128]]=f},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[91]]=f},()=>{t(e,b)[a+p[94]]=f},()=>{t(e,b)[a+p[76]]=f},()=>{t(e,b)[a+p[77]]=f},()=>{t(e,b)[a+p[78]]=f},()=>{t(e,b)[a+p[74]]=f},()=>{t(e,b)[a+p[71]]=f},()=>{t(e,b)[a+p[73]]=f},()=>{t(e,b)[a+p[75]]=f},()=>{t(e,b)[a+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,b)[a+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${l}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${l}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=s[1],a=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((l,h)=>{let f=h+i;switch(f){case 1:{console.info(`${a}breath mode: ${["system","breath","velocity","touch EG"][l]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${a}${g} control source: ${pt(l)}`),l&&l<96&&e.allocateAce(l)):console.debug(`${a}${g} scale break point: ${l}`):console.debug(`${a}${g} depth: ${l-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,r)=>{let o=s[0];s.subarray(1).forEach((i,a)=>{let l=o+a;l==8?console.debug(`MU1000 set LCD contrast to ${i}.`):l>9&&l<16&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!i),console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][l-10]()})}).add([73,10,0],(s,r)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let a=e.chRedir(0,r,!0);t(e,J)&&(e.dispatchEvent("channelmin",a),e.dispatchEvent("channelmax",a+63)),console.info(`${i}Show CH1~64`);break}case 3:{let a=e.chRedir(s[1]<<5,r,!0);t(e,J)&&e.dispatchEvent("channelmin",a),t(e,J)&&e.dispatchEvent("channelmax",a+31),console.info(`${i}Show CH${a+1}~CH${a+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let a=e.chRedir(o-16+(t(e,He)<<4),r,!0);e.dispatchEvent("channelactive",a)}}else if(o<36){let a=e.chRedir(o-32<<4,r,!0);t(e,J)&&(e.dispatchEvent("channelmin",a),e.dispatchEvent("channelmax",a+15),w(e,He,o-32)),console.info(`${i}Show CH${a+1}~CH${a+16}`)}}).add([93,3],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=`PLG-100SG CH${o+1} `,a=Date.now();if(s[1]==0){let l="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?l+=ut[f]||f.toString().padStart("0"):h+=f*13}),a>=t(e,Ne)&&t(e,C).unshift("SG Lyric: "),t(e,C)[0]+=`${bt(l)}`,w(e,Ne,a+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${l}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,Q).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,Q).add([89,0],(s,r,o)=>{if(e.eprom){let i=s[0],a=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${a.toString(16).padStart(6,"0")}, ${i} bytes.`);let l=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)l[a+7*g+S]+=(h>>6-S&1)<<7;else l[a+7*g+y]=h})}}).add([89,1],(s,r,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,r,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let a=e.eprom.data;s.subarray(4).forEach((l,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)a[i+7*f+y]+=(l>>6-y&1)<<7;else a[i+7*f+g]=l})}}).add([89,3],(s,r,o)=>{}),t(this,Q).add([39,48],(s,r,o)=>{}).add([43,0,0],(s,r,o)=>{let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{let f=h+s[0];[a,a,a,a,()=>{w(this,_,l*129/16383*100)},()=>l-64,()=>l||128,()=>l,()=>l,()=>{console.debug(`TG300 variation on cc${l}.`)}][f](l,f)}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}).add([43,1,0],(s,r,o)=>{}).add([43,2],(s,r,o)=>{let i=e.chRedir(s[0],r,!0),a=s[1],l=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,b)[l+p[0]]=f},()=>{t(e,b)[l+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+a]||(()=>{}))(f,g+a):g<21||(g<47?([()=>{t(e,j)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,b)[l+p[7]]=f},!1,!1,()=>{t(e,b)[l+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,b)[l+p[128]]=f},()=>{t(e,b)[l+p[93]]=f},()=>{t(e,b)[l+p[91]]=f},()=>{t(e,b)[l+p[94]]=f},()=>{t(e,b)[l+p[76]]=f},()=>{t(e,b)[l+p[77]]=f},()=>{t(e,b)[l+p[74]]=f},()=>{t(e,b)[l+p[71]]=f},()=>{t(e,b)[l+p[73]]=f},()=>{t(e,b)[l+p[75]]=f},()=>{t(e,b)[l+p[72]]=f},()=>{t(e,b)[l+p[78]]=f}][g+a-21]||(()=>{}))(f,g+a):g<95||([()=>{t(e,b)[l+p[65]]=f},()=>{t(e,b)[l+p[5]]=f}][g+a-95]||(()=>{}))(f,g+a))})}).add([43,7,0],(s,r,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,r,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,a){let l=Math.floor(a/16),h=a%16,f=(h*3+l)*7,g=7,y=0;for(f-=h*5,l==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,r,o)=>{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,Y,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,r,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{let f=h+s[0];[a,a,a,a,g=>{w(this,_,g*129/16383*100)},g=>{},g=>{}][f](l,h)}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}}}).add([66,18,64,1],s=>{let r=s[0];if(r<16){let o="".padStart(r," ");s.subarray(1).forEach((i,a)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else r<48||(r<65?s.subarray(1).forEach((o,i)=>{let a=`GS ${r+i>55?"chorus":"reverb"} `;([()=>{console.info(`${a}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${a}predelay: ${o}ms`)},()=>{console.info(`${a}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${a}to reverb: ${X(o)}`)},()=>{console.debug(`${a}to delay: ${X(o)}`)}][r+i-48]||(()=>{}))()}):r<80?console.debug(`Unknown GS patch address: ${r}`):r<91?s.subarray(1).forEach((o,i)=>{let a="GS delay ";([()=>{console.info(`${a}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${a}to reverb: ${X(o)}`)}][r+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${r}`))}).add([66,18,64,2],s=>{let r="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${r}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${r}low gain: ${o-64}dB`)},()=>{console.debug(`${r}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${r}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let r="GS EFX ",o=function(i,a){let l=yt(t(e,V).subarray(10,12),a,i);l&&console.debug(`${r}${Je(t(e,V).subarray(10,12))} ${l}`)};s.subarray(1).forEach((i,a)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${r}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${r}to reverb: ${X(i)}dB`)},()=>{console.debug(`${r}to chorus: ${X(i)}dB`)},()=>{console.debug(`${r}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${r}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${r}1 depth: ${i-64}`)},()=>{console.debug(`${r}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${r}2 depth: ${i-64}`)},()=>{console.debug(`${r}to EQ: ${i?"ON":"OFF"}`)}][s[0]+a]||function(l,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+a)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var r;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(r=t(e,oe)[s[0]-1])!=null&&r.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let a=s.subarray(2);for(let l=0;l>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let c=function(s,r,o){let i=s[0],a=$.cc*r,l=$.rpn*r,h=`GS CH${r+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,b)[a+p[0]]=f},()=>{t(e,O)[r]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[r]=y,r!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,j)[r]=+!f},!1,()=>{e.setChType(r,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[l+3]=f},!1,()=>{t(e,b)[a+p[7]]=f},!1,!1,()=>{t(e,b)[a+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[91]]=f},!1,!1,()=>{t(e,v)[l+1]=f},()=>{t(e,v)[l+2]=f},()=>{t(e,b)[a+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,r){let o=s[0],i=`GS CH${r+1} `;o<2?s.subarray(1).forEach((a,l)=>{[()=>{t(e,b)[$.cc*r+p[32]]=a},()=>{}][o+l]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((a,l)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][a]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][a]}`)}][o+l-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,r)=>{c(s,e.chRedir(9,r,!0),r)}).add([66,18,64,17],(s,r)=>{c(s,e.chRedir(0,r,!0),r)}).add([66,18,64,18],(s,r)=>{c(s,e.chRedir(1,r,!0),r)}).add([66,18,64,19],(s,r)=>{c(s,e.chRedir(2,r,!0),r)}).add([66,18,64,20],(s,r)=>{c(s,e.chRedir(3,r,!0),r)}).add([66,18,64,21],(s,r)=>{c(s,e.chRedir(4,r,!0),r)}).add([66,18,64,22],(s,r)=>{c(s,e.chRedir(5,r,!0),r)}).add([66,18,64,23],(s,r)=>{c(s,e.chRedir(6,r,!0),r)}).add([66,18,64,24],(s,r)=>{c(s,e.chRedir(7,r,!0),r)}).add([66,18,64,25],(s,r)=>{c(s,e.chRedir(8,r,!0),r)}).add([66,18,64,26],(s,r)=>{c(s,e.chRedir(10,r,!0),r)}).add([66,18,64,27],(s,r)=>{c(s,e.chRedir(11,r,!0),r)}).add([66,18,64,28],(s,r)=>{c(s,e.chRedir(12,r,!0),r)}).add([66,18,64,29],(s,r)=>{c(s,e.chRedir(13,r,!0),r)}).add([66,18,64,30],(s,r)=>{c(s,e.chRedir(14,r,!0),r)}).add([66,18,64,31],(s,r)=>{c(s,e.chRedir(15,r,!0),r)}).add([66,18,64,64],(s,r)=>{d(s,e.chRedir(9,r,!0))}).add([66,18,64,65],(s,r)=>{d(s,e.chRedir(0,r,!0))}).add([66,18,64,66],(s,r)=>{d(s,e.chRedir(1,r,!0))}).add([66,18,64,67],(s,r)=>{d(s,e.chRedir(2,r,!0))}).add([66,18,64,68],(s,r)=>{d(s,e.chRedir(3,r,!0))}).add([66,18,64,69],(s,r)=>{d(s,e.chRedir(4,r,!0))}).add([66,18,64,70],(s,r)=>{d(s,e.chRedir(5,r,!0))}).add([66,18,64,71],(s,r)=>{d(s,e.chRedir(6,r,!0))}).add([66,18,64,72],(s,r)=>{d(s,e.chRedir(7,r,!0))}).add([66,18,64,73],(s,r)=>{d(s,e.chRedir(8,r,!0))}).add([66,18,64,74],(s,r)=>{d(s,e.chRedir(10,r,!0))}).add([66,18,64,75],(s,r)=>{d(s,e.chRedir(11,r,!0))}).add([66,18,64,76],(s,r)=>{d(s,e.chRedir(12,r,!0))}).add([66,18,64,77],(s,r)=>{d(s,e.chRedir(13,r,!0))}).add([66,18,64,78],(s,r)=>{d(s,e.chRedir(14,r,!0))}).add([66,18,64,79],(s,r)=>{d(s,e.chRedir(15,r,!0))}),t(this,fe).add([54,65],(s,r)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],a=e.chRedir(o&15,r,!0),l=$.cc*a;[()=>{i<1||(i<101?(e.setChType(a,e.CH_MELODIC,x.x5d),t(e,O)[a]=i-1,t(e,b)[l+p[0]]=82):i<229?(e.setChType(a,e.CH_MELODIC,x.x5d),t(e,O)[a]=i-101,t(e,b)[l+p[0]]=56):(e.setChType(a,e.CH_DRUMS,x.x5d),t(e,O)[a]=vt[i-229]||0,t(e,b)[l+p[0]]=62))},()=>{t(e,b)[l+p[7]]=i},()=>{i<31&&(t(e,b)[l+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,b)[l+p[93]]=_e(i)},()=>{t(e,b)[l+p[91]]=_e(i)},()=>{t(e,v)[a*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[a*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[a*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,r)=>{e.switchMode("x5d",!0);let o="",i=82,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` -${i} ${a} ${l} ${o.trim().replace("Init Voice","")}`,a++,o="";break}}a>99&&(i=90,a=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,77,0],(s,r)=>{e.switchMode("x5d",!0);let o="",i=90,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<13600){let y=g%136;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` -${i} ${a} ${l} ${o.trim().replace("Init Combi","")}`,a++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,r)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,r)=>{e.switchMode("x5d",!0),ee(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,r)=>{e.switchMode("x5d",!0),ee(s,function(o,i,a,l){if(i<192){let h=e.chRedir(Math.floor(i/12),r,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,x.x5d),t(e,b)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,x.x5d),t(e,b)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,b)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,b)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,b)[f+p[91]]=_e(y),t(e,b)[f+p[93]]=_e(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,r,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,r,!0)}})}),t(this,ie).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0),a=s[1];s.subarray(2).forEach((l,h)=>{let f=h+a;t(e,ge)[f+(i-1)*16]=l,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,re)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=l+40},()=>{t(e,v)[i*$.rpn+1]=l+14},()=>{t(e,v)[i*$.rpn]=l},!1,()=>{t(e,b)[$.cc*i+p[91]]=l?127:0},!1,()=>{t(e,b)[$.cc*i+p[7]]=l},()=>{t(e,b)[$.cc*i+p[10]]=Math.ceil(l*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0)}).add([22,18,2],(s,r,o)=>{e.switchMode("mt32");let i=e.chRedir(o,r,!0),a=s[1]+(s[0]<<7);a<10&&(t(e,re)[i]=1),s.subarray(2).forEach((l,h)=>{let f=h+a;f<14&&(t(e,W)[(i-1)*$.cmt+f]=l)})}).add([22,18,3],(s,r,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((a,l)=>{let h=l+i;t(e,ge)[h]=a;let f=e.chRedir(1+h>>4,r,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,re)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=a+40},()=>{t(e,v)[f*$.rpn+1]=a+14},()=>{t(e,v)[f*$.rpn]=a},!1,()=>{t(e,b)[$.cc*f+p[91]]=a?127:0},!1,()=>{t(e,b)[$.cc*f+p[7]]=a},()=>{t(e,b)[$.cc*f+p[10]]=Math.ceil(a*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,r,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((a,l)=>{let h=l+i,f=e.chRedir(Math.floor(h/246+1),r,!0),g=h%246;g<14&&(t(e,W)[(f-1)*$.cmt+g]=a),g<10&&(t(e,re)[f]=1)})}).add([22,18,5],(s,r,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((a,l)=>{let h=i+l,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=a,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${a.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,a+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME -000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,r,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((a,l)=>{let h=i+l;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=a)})}).add([22,18,16],(s,r,o)=>{e.switchMode("mt32");let i=s[1],a=!1,l=function(h,f){t(e,H)[f-12]=h,a=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,l,l,l,l,l,l,l,l,l,()=>{w(e,_,h)}][g]||(()=>{}))(h,f)}),a&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let r=s[1],o=" ".repeat(r);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,ae,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,r)=>{let o=e.chRedir(0,r,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,r)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,r)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],a=(l,h)=>{i[h]=l};if(s.subarray(1).forEach((l,h)=>{[a,a,a,a,()=>{w(e,_,l*129/16383*100)},()=>l-64,()=>l-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let l=0;i.forEach(h=>{l=l<<4,l+=h}),l-=1024}}}}).add([66,18,0,1],(s,r)=>{}).add([66,18,0,2],(s,r)=>{}).add([66,18,1],(s,r)=>{let o=e.chRedir(s[0],r,!0),i=o*$.cc,a=s[1],l=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=a+f;g<3?[()=>{t(e,b)[i+p[0]]=h||121},()=>{t(e,b)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,r,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,j)[o]=+!h},()=>{e.setChType(o,h,x.ns5r),console.debug(`${l}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,b)[i+p[7]]=h},()=>{t(e,b)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,b)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,b)[i+p[93]]=h},()=>{t(e,b)[i+p[91]]=h},()=>{t(e,b)[i+p[76]]=h},()=>{t(e,b)[i+p[77]]=h},()=>{t(e,b)[i+p[78]]=h},()=>{t(e,b)[i+p[74]]=h},()=>{t(e,b)[i+p[71]]=h},()=>{t(e,b)[i+p[73]]=h},()=>{t(e,b)[i+p[75]]=h},()=>{t(e,b)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,b)[i+p[5]]=h},()=>{t(e,b)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,r)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,te,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let a=s.subarray(1),l=4;a.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";ee(s,(i,a)=>{a<8?(i>31&&(o+=String.fromCharCode(i)),a==7&&(e.aiEfxName=o)):a<10&&e.setEffectType(a-8,44,i)})}).add([66,53],(s,r)=>{e.switchMode("ns5r",!0),w(e,D,!1),ee(s,function(o,i){switch(!0){case i<2944:{let a=e.chRedir(Math.floor(i/92),r,!0),l=a*$.cc;switch(i%92){case 0:{t(e,b)[l+p[0]]=o||121;break}case 1:{t(e,b)[l+p[32]]=o;break}case 2:{t(e,O)[a]=o,o>0&&(t(e,P)[a]=1);break}case 3:{let h=e.chRedir(o,r,!0);t(e,H)[a]=h,a!=h&&(console.info(`NS5R CH${a+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[a*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,b)[l+p[7]]=o;break}case 11:{t(e,b)[l+p[11]]=o;break}case 14:{t(e,b)[l+p[10]]=o||128;break}case 19:{t(e,b)[l+p[93]]=o;break}case 20:{t(e,b)[l+p[91]]=o;break}case 84:{t(e,b)[l+p[65]]=o;break}case 85:{t(e,b)[l+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,r)=>{e.switchMode("ns5r",!0);let o="",i=80,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{l=f&127;break}case y==13:{h+=` -${i} ${a} ${l} ${o.trim().replace("Init Voice","")}`,a++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(h)}).add([66,55],(s,r)=>{e.switchMode("ns5r",!0);let o="",i=88,a=0,l=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%126;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:break;case y==12:break;case y==13:{h+=` -${i} ${a} ${l} ${o.trim().replace("Init Combi","")}`,a++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let r=new Uint8Array(5760);ee(s,(o,i,a)=>{if(i<720)for(let l=0;l<8;l++)r[i*8+l]=o>>7-l&1}),e.dispatchEvent("screen",{type:"ns5r",data:r})}).add([76],(s,r,o)=>{t(e,fe).run([66,...s],r,o)}),t(this,Me).add([16,0,8,0],(s,r,o)=>{let i=(s[2]<<4)+s[3],a="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Y,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${a}reverb type: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,r,o)=>{let i=e.chRedir(s[1],r,!0),a=$.cc*i,l=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,b)[a+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,r,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,b)[a+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,b)[a+p[10]]=h},()=>{t(e,v)[l+3]=h+40},()=>{t(e,v)[l+1]=h>>1,t(e,v)[l+2]=h&1},()=>{t(e,b)[a+p[91]]=h?127:0},()=>{},()=>{t(e,b)[a+p[74]]=h},()=>{t(e,b)[a+p[73]]=h},()=>{t(e,b)[a+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,r,o)=>{let i=(s[2]<<4)+s[3],a="GMLX ";([()=>{console.debug(`${a}reverb type: ${i}`)},()=>{console.debug(`${a}reverb time: ${i}`)},()=>{console.debug(`${a}reverb predelay: ${i}`)},()=>{console.debug(`${a}depth high: ${i}`)},()=>{console.debug(`${a}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,r,o)=>{let i=(s[2]<<4)+s[3],a=e.chRedir(s[1],r,!0),l=a*$.cc;[()=>{i<128?(e.setChType(a,e.CH_MELODIC,x.k11),t(e,b)[l+p[0]]=0,t(e,b)[l+p[32]]=0,t(e,O)[a]=i):i<160?(e.setChType(a,e.CH_MELODIC,x.k11),t(e,b)[l+p[0]]=0,t(e,b)[l+p[32]]=7,t(e,O)[a]=i-100):(e.setChType(a,e.CH_DRUMS,x.k11),t(e,b)[l+p[0]]=122,t(e,b)[l+p[32]]=0,t(e,O)[a]=i-160)},()=>{let h=e.chRedir(i,r,!0);t(e,H)[a]=h,a!=h&&(e.buildRchTree(),console.info(`GMLX CH${a+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,r,o)=>{let i=(s[2]<<4)+s[3],a=e.chRedir(s[1],r,!0),l=a*$.cc,h=a*$.rpn,f=`GMLX CH${a+1} `;[()=>{t(e,P)[a]=i},()=>{t(e,b)[l+p[7]]=i},()=>{t(e,b)[l+p[10]]=i},()=>{t(e,b)[l+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,r,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,_,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let a=e.chRedir(s[0]&15,r,!0);if(s[1]==2){let l=e.chRedir(i,r,!0);t(e,H)[a]=l,a!=l&&(e.buildRchTree(),console.info(`SG CH${a+1} receives from CH${l+1}`))}else s[1]==19&&(t(e,b)[$.cc*a+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,r,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,Q).add([127,0],(s,r,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,Q).run(i,r,o)}).add([127,1,0,0],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",a=s[0];s.subarray(1).forEach((l,h)=>{([()=>{w(e,_,l*12900/16383)}][a+h]||(()=>{console.info(`Unrecognized ${i}ID: ${a+h}`)}))()})}).add([127,1,0,0,14],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",a=[];a[95]=(l,h,f)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(a[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,r,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",a=[];a[95]=(l,h,f)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(a[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,r,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],r,!0),a=$.cc*i,l=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,b)[a+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,b)[a+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,r,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,j)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,b)[a+p[7]]=f},()=>{t(e,b)[a+p[10]]=f},!1,!1,!1,()=>{t(e,b)[a+p[91]]=f},()=>{t(e,b)[a+p[93]]=f},()=>{t(e,b)[a+p[94]]=f},()=>{t(e,b)[a+p[128]]=f},()=>{},()=>{t(e,b)[a+p[74]]=f},()=>{t(e,b)[a+p[71]]=f},!1,()=>{t(e,b)[a+p[65]]=f},()=>{t(e,b)[a+p[5]]=f},()=>{}][l+g]||(()=>{}))()})}).add([127,1,54,16],(s,r,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((a,l)=>{let f=`S90/Motif ES EQ${(l>>2)+1} `;([()=>{let g=a-64},()=>{let g=De[a]},()=>{let g=a/10},()=>{let g=a}][i+l&3]||(()=>{}))()})})}chRedir(e,n,c){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Y))>-1){if(c==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,c)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(c)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,c=t(this,b).subarray(n,n+$.cc);return c[p[0]]=c[p[0]]||t(this,ye),c[p[32]]=c[p[32]]||t(this,Y),c}getCcCh(e,n){if(Ie.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,b)[$.cc*e+p[n]]}getCcAll(){let e=t(this,b).slice();for(let n=0;n<$.ch;n++){let c=n*$.cc;e[c+p[0]]=e[c+p[0]]||t(this,ye),e[c+p[32]]=e[c+p[32]]||t(this,Y)}return e}getChType(){return t(this,T)}setChType(e,n,c=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,b)[e*$.cc+p[0]]=Se[c])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,C).slice()}getVel(e){let n=new Map,c=this;return t(c,U).forEach(function(d,s){let r=Math.floor(d/128),o=d%128;e==r&&t(c,A)[d]>0&&n.set(o,{v:t(c,A)[d],s:t(c,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,ae),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,_)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let c=Math.floor(n/128);t(e,A)[n]>t(e,se)[c]&&(t(e,se)[c]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,d){e[d]=Math.floor(c*t(n,b)[d*$.cc+p[7]]*t(n,b)[d*$.cc+p[11]]*t(n,_)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,c,d){let s=e||t(this,ye),r=n,o=c||t(this,Y);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,r,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let a=parseInt(i.name.slice(5)),l=a*$.cmt,h="";t(this,$e).subarray(l,l+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG -0 127 ${r} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,r,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,b)[e*$.cc+p[0]],t(this,O)[e],t(this,b)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,re)[e])switch(t(this,R)){case x.mt32:n.ending="~",n.name="",t(this,W).subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,d=3200){let s=this,r;w(s,ae," ".repeat(c)),e.forEach(o=>{w(s,ae,t(s,ae)+String.fromCharCode(o>31?o:32)),o<32&&(r=r||new Set,r.add(o))}),w(s,we,Date.now()+3200),w(s,ae,t(s,ae).padEnd(32," ")),r&&(r=Array.from(r),r.forEach((o,i,a)=>{a[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${r.length>1?"s":""}: 0x${r.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c<$.ace;)t(this,le)[c]==e?n=!1:t(this,le)[c]||(n=!1,t(this,le)[c]=e,console.info(`Allocated cc${e} to ACE slot ${c}.`)),c++;c>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,le)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let c=t(this,le)[n];if(c){if(Ie.indexOf(c)>=0)return t(this,b)[e*$.cc+p[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Y,0),w(this,ce,0),t(this,P).fill(0),t(this,b).fill(0),t(this,le).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,se).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,_,100),w(this,C,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,ae,""),w(this,te,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,c,d){d[c]=c}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,b)[$.cc*9]=Se[0],t(this,b)[$.cc*25]=Se[0],t(this,b)[$.cc*41]=Se[0],t(this,b)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,W).fill(0),t(this,re).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let c=n*$.cc;t(this,b)[c+p[7]]=100,t(this,b)[c+p[11]]=127,t(this,b)[c+p[10]]=64,t(this,b)[c+p[71]]=64,t(this,b)[c+p[72]]=64,t(this,b)[c+p[73]]=64,t(this,b)[c+p[74]]=64,t(this,b)[c+p[75]]=64,t(this,b)[c+p[76]]=64,t(this,b)[c+p[77]]=64,t(this,b)[c+p[78]]=64,t(this,b)[c+p[91]]=40,t(this,b)[c+p[101]]=127,t(this,b)[c+p[100]]=127,t(this,b)[c+p[99]]=127,t(this,b)[c+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let c=be.indexOf(e);if(c>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,c),w(this,K,0),w(this,ye,Et[0][c]),w(this,Y,Et[1][c]);for(let r=0;r<$.ch;r++)t(this,T)[r]>0&&t(this,b)[r*$.cc+p[0]]==Se[d]&&(t(this,b)[r*$.cc]=Se[c]);switch(this.initOnReset,c){case x.mt32:{Ze.forEach((r,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=r,t(this,b)[i*$.cc+p[91]]=127)});break}}let s;switch(c){case x.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case x.x5d:case x.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let r=0;r<$.efx;r++)t(this,V)[3*r]||(t(this,V)[3*r+1]=s[2*r],t(this,V)[3*r+2]=s[2*r+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,se).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let c=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[c])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${c+1} without any recipient.`)}t(this,C).length>100&&t(this,C).splice(100,t(this,C).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,te=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,b=new WeakMap,le=new WeakMap,O=new WeakMap,A=new WeakMap,j=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,se=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,re=new WeakMap,ge=new WeakMap,W=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Y=new WeakMap,_=new WeakMap,ce=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,ae=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,C=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,xe=new WeakMap,Ce=new WeakMap,Q=new WeakMap,ie=new WeakMap,fe=new WeakMap,Me=new WeakMap,Te=new WeakMap,Re=new WeakMap,Ct);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Mt as dnToPos}; +122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,M).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,M).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,M).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,M).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,M).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let a=s.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,M).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,M).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,M).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,M).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,M).unshift(s.slice(1)):t(this,M)[0]+=s:(t(this,M)[0]=s,t(this,M).unshift(""))}},t(this,G)[2]=function(s){t(this,M).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,a){a<1&&t(this,le)<1&&t(this,M).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,a){t(this,M).unshift(`${xt(t(this,le),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,M).unshift(""):t(this,M)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,M).unshift(`${xt(t(this,le),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,M).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,le,s[0]+1)},t(this,G)[33]=function(s,a){console.debug(`Track ${a} requests to get assigned to output ${s}.`),t(e,Ee)[a]=s+1},t(this,G)[81]=function(s,a){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,a){t(e,ve).run(s,a)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,a){t(e,Ee)[a]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Me,new Z("universal realtime")),w(this,j,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Ce,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Me).default=n,t(this,j).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Ce).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Me).add([4,1],s=>{w(e,_,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,j).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,r)=>{a[r]=i};if(s.subarray(1).forEach((i,r)=>{let c=r+s[0];([o,o,o,o,h=>{w(this,_,h*129/16383*100)},h=>{},h=>{}][c]||(()=>{}))(i,r)}),s[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],s=>{let a="XG ";s[0]<32?(a+="reverb ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${ft(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(a+="chorus ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ht[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${dt(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${De[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${De[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(a+="variation ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(a+="variation ",s.subarray(1).forEach((o,i)=>{[r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},r=>{console.debug(`${a}to chorus: ${X(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((a,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,c=i-1&3,h=`XG EQ ${r} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${h}${a-64}dB`)},()=>{console.debug(`${h}${a} (raw)`)},()=>{console.debug(`${h}${a/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],s=>{let a=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((r,c)=>{([h=>{e.setEffectTypeRaw(3+a,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+a,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+c]||function(){})(r)})}).add([76,6,0],s=>{let a=s[0];a<64?e.setLetterDisplay(s.subarray(1),"XG letter display",a):w(e,we,Date.now())}).add([76,7,0],s=>{let a=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=$.cc*o,c=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,u)[r+p[0]]=f},()=>{t(e,u)[r+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${c}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{t(e,u)[r+p[128]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[76]]=f},()=>{t(e,u)[r+p[77]]=f},()=>{t(e,u)[r+p[78]]=f},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},()=>{t(e,u)[r+p[73]]=f},()=>{t(e,u)[r+p[75]]=f},()=>{t(e,u)[r+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,u)[r+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((c,h)=>{let f=h+i;switch(f){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${r}${g} control source: ${pt(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${r}${g} scale break point: ${c}`):console.debug(`${r}${g} depth: ${c-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,a)=>{let o=s[0],i="MU1000 System: ";s.subarray(1).forEach((r,c)=>{let h=o+c;h==8?console.debug(`${i}LCD contrast set to ${r}.`):h==18?(w(e,Q,r?126:0),console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):h>=64&&h<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.info(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.info(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!r),console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][h-64]()})}).add([73,10,0],(s,a)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let r=e.chRedir(0,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(s[1]<<5,a,!0);t(e,J)&&e.dispatchEvent("channelmin",r),t(e,J)&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let r=e.chRedir(o-16+(t(e,He)<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(o<36){let r=e.chRedir(o-32<<4,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),w(e,He,o-32)),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=`PLG-100SG CH${o+1} `,r=Date.now();if(s[1]==0){let c="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?c+=ut[f]||f.toString().padStart("0"):h+=f*13}),r>=t(e,Ne)&&t(e,M).unshift("SG Lyric: "),t(e,M)[0]+=`${bt(c)}`,w(e,Ne,r+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,j).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,j).add([89,0],(s,a,o)=>{if(e.eprom){let i=s[0],r=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)c[r+7*g+S]+=(h>>6-S&1)<<7;else c[r+7*g+y]=h})}}).add([89,1],(s,a,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,a,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;s.subarray(4).forEach((c,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)r[i+7*f+y]+=(c>>6-y&1)<<7;else r[i+7*f+g]=c})}}).add([89,3],(s,a,o)=>{}),t(this,j).add([39,48],(s,a,o)=>{}).add([43,0,0],(s,a,o)=>{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,()=>{w(this,_,c*129/16383*100)},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][f](c,f)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}).add([43,1,0],(s,a,o)=>{}).add([43,2],(s,a,o)=>{let i=e.chRedir(s[0],a,!0),r=s[1],c=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,u)[c+p[0]]=f},()=>{t(e,u)[c+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+r]||(()=>{}))(f,g+r):g<21||(g<47?([()=>{t(e,W)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,u)[c+p[7]]=f},!1,!1,()=>{t(e,u)[c+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,u)[c+p[128]]=f},()=>{t(e,u)[c+p[93]]=f},()=>{t(e,u)[c+p[91]]=f},()=>{t(e,u)[c+p[94]]=f},()=>{t(e,u)[c+p[76]]=f},()=>{t(e,u)[c+p[77]]=f},()=>{t(e,u)[c+p[74]]=f},()=>{t(e,u)[c+p[71]]=f},()=>{t(e,u)[c+p[73]]=f},()=>{t(e,u)[c+p[75]]=f},()=>{t(e,u)[c+p[72]]=f},()=>{t(e,u)[c+p[78]]=f}][g+r-21]||(()=>{}))(f,g+r):g<95||([()=>{t(e,u)[c+p[65]]=f},()=>{t(e,u)[c+p[5]]=f}][g+r-95]||(()=>{}))(f,g+r))})}).add([43,7,0],(s,a,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,a,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,r){let c=Math.floor(r/16),h=r%16,f=(h*3+c)*7,g=7,y=0;for(f-=h*5,c==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,a,o)=>{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,Q,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,a,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,g=>{w(this,_,g*129/16383*100)},g=>{},g=>{}][f](c,h)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,64,1],s=>{let a=s[0];if(a<16){let o="".padStart(a," ");s.subarray(1).forEach((i,r)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?s.subarray(1).forEach((o,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${o}ms`)},()=>{console.info(`${r}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)},()=>{console.debug(`${r}to delay: ${X(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?s.subarray(1).forEach((o,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],s=>{let a="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let a="GS EFX ",o=function(i,r){let c=yt(t(e,V).subarray(10,12),r,i);c&&console.debug(`${a}${Je(t(e,V).subarray(10,12))} ${c}`)};s.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${X(i)}dB`)},()=>{console.debug(`${a}to chorus: ${X(i)}dB`)},()=>{console.debug(`${a}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][s[0]+r]||function(c,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+r)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var a;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(a=t(e,oe)[s[0]-1])!=null&&a.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let r=s.subarray(2);for(let c=0;c>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let l=function(s,a,o){let i=s[0],r=$.cc*a,c=$.rpn*a,h=`GS CH${a+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,u)[r+p[0]]=f},()=>{t(e,O)[a]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,W)[a]=+!f},!1,()=>{e.setChType(a,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[c+3]=f},!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},!1,!1,()=>{t(e,v)[c+1]=f},()=>{t(e,v)[c+2]=f},()=>{t(e,u)[r+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,a){let o=s[0],i=`GS CH${a+1} `;o<2?s.subarray(1).forEach((r,c)=>{[()=>{t(e,u)[$.cc*a+p[32]]=r},()=>{}][o+c]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((r,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][o+c-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,a)=>{l(s,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(s,a)=>{l(s,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(s,a)=>{l(s,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(s,a)=>{l(s,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(s,a)=>{l(s,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(s,a)=>{l(s,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(s,a)=>{l(s,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(s,a)=>{l(s,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(s,a)=>{l(s,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(s,a)=>{l(s,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(s,a)=>{l(s,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(s,a)=>{l(s,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(s,a)=>{l(s,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(s,a)=>{l(s,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(s,a)=>{l(s,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(s,a)=>{l(s,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(s,a)=>{d(s,e.chRedir(9,a,!0))}).add([66,18,64,65],(s,a)=>{d(s,e.chRedir(0,a,!0))}).add([66,18,64,66],(s,a)=>{d(s,e.chRedir(1,a,!0))}).add([66,18,64,67],(s,a)=>{d(s,e.chRedir(2,a,!0))}).add([66,18,64,68],(s,a)=>{d(s,e.chRedir(3,a,!0))}).add([66,18,64,69],(s,a)=>{d(s,e.chRedir(4,a,!0))}).add([66,18,64,70],(s,a)=>{d(s,e.chRedir(5,a,!0))}).add([66,18,64,71],(s,a)=>{d(s,e.chRedir(6,a,!0))}).add([66,18,64,72],(s,a)=>{d(s,e.chRedir(7,a,!0))}).add([66,18,64,73],(s,a)=>{d(s,e.chRedir(8,a,!0))}).add([66,18,64,74],(s,a)=>{d(s,e.chRedir(10,a,!0))}).add([66,18,64,75],(s,a)=>{d(s,e.chRedir(11,a,!0))}).add([66,18,64,76],(s,a)=>{d(s,e.chRedir(12,a,!0))}).add([66,18,64,77],(s,a)=>{d(s,e.chRedir(13,a,!0))}).add([66,18,64,78],(s,a)=>{d(s,e.chRedir(14,a,!0))}).add([66,18,64,79],(s,a)=>{d(s,e.chRedir(15,a,!0))}),t(this,fe).add([54,65],(s,a)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],r=e.chRedir(o&15,a,!0),c=$.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-1,t(e,u)[c+p[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-101,t(e,u)[c+p[0]]=56):(e.setChType(r,e.CH_DRUMS,x.x5d),t(e,O)[r]=vt[i-229]||0,t(e,u)[c+p[0]]=62))},()=>{t(e,u)[c+p[7]]=i},()=>{i<31&&(t(e,u)[c+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,u)[c+p[93]]=_e(i)},()=>{t(e,u)[c+p[91]]=_e(i)},()=>{t(e,v)[r*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[r*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[r*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=82,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}r>99&&(i=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,77,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=90,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<13600){let y=g%136;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,a)=>{e.switchMode("x5d",!0),ee(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,a)=>{e.switchMode("x5d",!0),ee(s,function(o,i,r,c){if(i<192){let h=e.chRedir(Math.floor(i/12),a,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,x.x5d),t(e,u)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,x.x5d),t(e,u)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,u)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,u)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,u)[f+p[91]]=_e(y),t(e,u)[f+p[93]]=_e(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,a,!0)}})}),t(this,ie).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1];s.subarray(2).forEach((c,h)=>{let f=h+r;t(e,ge)[f+(i-1)*16]=c,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,ae)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=c+40},()=>{t(e,v)[i*$.rpn+1]=c+14},()=>{t(e,v)[i*$.rpn]=c},!1,()=>{t(e,u)[$.cc*i+p[91]]=c?127:0},!1,()=>{t(e,u)[$.cc*i+p[7]]=c},()=>{t(e,u)[$.cc*i+p[10]]=Math.ceil(c*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1]+(s[0]<<7);r<10&&(t(e,ae)[i]=1),s.subarray(2).forEach((c,h)=>{let f=h+r;f<14&&(t(e,Y)[(i-1)*$.cmt+f]=c)})}).add([22,18,3],(s,a,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((r,c)=>{let h=c+i;t(e,ge)[h]=r;let f=e.chRedir(1+h>>4,a,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,ae)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=r+40},()=>{t(e,v)[f*$.rpn+1]=r+14},()=>{t(e,v)[f*$.rpn]=r},!1,()=>{t(e,u)[$.cc*f+p[91]]=r?127:0},!1,()=>{t(e,u)[$.cc*f+p[7]]=r},()=>{t(e,u)[$.cc*f+p[10]]=Math.ceil(r*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,a,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((r,c)=>{let h=c+i,f=e.chRedir(Math.floor(h/246+1),a,!0),g=h%246;g<14&&(t(e,Y)[(f-1)*$.cmt+g]=r),g<10&&(t(e,ae)[f]=1)})}).add([22,18,5],(s,a,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=r,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${r.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,r+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME +000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,a,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=r)})}).add([22,18,16],(s,a,o)=>{e.switchMode("mt32");let i=s[1],r=!1,c=function(h,f){t(e,H)[f-12]=h,r=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{w(e,_,h)}][g]||(()=>{}))(h,f)}),r&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let a=s[1],o=" ".repeat(a);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,re,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,a)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,a)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{[r,r,r,r,()=>{w(e,_,c*129/16383*100)},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,0,1],(s,a)=>{}).add([66,18,0,2],(s,a)=>{}).add([66,18,1],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=o*$.cc,r=s[1],c=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=r+f;g<3?[()=>{t(e,u)[i+p[0]]=h||121},()=>{t(e,u)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!h},()=>{e.setChType(o,h,x.ns5r),console.debug(`${c}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,u)[i+p[7]]=h},()=>{t(e,u)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,u)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,u)[i+p[93]]=h},()=>{t(e,u)[i+p[91]]=h},()=>{t(e,u)[i+p[76]]=h},()=>{t(e,u)[i+p[77]]=h},()=>{t(e,u)[i+p[78]]=h},()=>{t(e,u)[i+p[74]]=h},()=>{t(e,u)[i+p[71]]=h},()=>{t(e,u)[i+p[73]]=h},()=>{t(e,u)[i+p[75]]=h},()=>{t(e,u)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,u)[i+p[5]]=h},()=>{t(e,u)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,a)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,te,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let r=s.subarray(1),c=4;r.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";ee(s,(i,r)=>{r<8?(i>31&&(o+=String.fromCharCode(i)),r==7&&(e.aiEfxName=o)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),ee(s,function(o,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),c=r*$.cc;switch(i%92){case 0:{t(e,u)[c+p[0]]=o||121;break}case 1:{t(e,u)[c+p[32]]=o;break}case 2:{t(e,O)[r]=o,o>0&&(t(e,P)[r]=1);break}case 3:{let h=e.chRedir(o,a,!0);t(e,H)[r]=h,r!=h&&(console.info(`NS5R CH${r+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[r*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,u)[c+p[7]]=o;break}case 11:{t(e,u)[c+p[11]]=o;break}case 14:{t(e,u)[c+p[10]]=o||128;break}case 19:{t(e,u)[c+p[93]]=o;break}case 20:{t(e,u)[c+p[91]]=o;break}case 84:{t(e,u)[c+p[65]]=o;break}case 85:{t(e,u)[c+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=80,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{c=f&127;break}case y==13:{h+=` +${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(h)}).add([66,55],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=88,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%126;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:break;case y==12:break;case y==13:{h+=` +${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let a=new Uint8Array(5760);ee(s,(o,i,r)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=o>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(s,a,o)=>{t(e,fe).run([66,...s],a,o)}),t(this,Ce).add([16,0,8,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Q,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,a,o)=>{let i=e.chRedir(s[1],a,!0),r=$.cc*i,c=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,u)[r+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,a,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,u)[r+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,u)[r+p[10]]=h},()=>{t(e,v)[c+3]=h+40},()=>{t(e,v)[c+1]=h>>1,t(e,v)[c+2]=h&1},()=>{t(e,u)[r+p[91]]=h?127:0},()=>{},()=>{t(e,u)[r+p[74]]=h},()=>{t(e,u)[r+p[73]]=h},()=>{t(e,u)[r+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=0,t(e,O)[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=7,t(e,O)[r]=i-100):(e.setChType(r,e.CH_DRUMS,x.k11),t(e,u)[c+p[0]]=122,t(e,u)[c+p[32]]=0,t(e,O)[r]=i-160)},()=>{let h=e.chRedir(i,a,!0);t(e,H)[r]=h,r!=h&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc,h=r*$.rpn,f=`GMLX CH${r+1} `;[()=>{t(e,P)[r]=i},()=>{t(e,u)[c+p[7]]=i},()=>{t(e,u)[c+p[10]]=i},()=>{t(e,u)[c+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,a,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,_,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let r=e.chRedir(s[0]&15,a,!0);if(s[1]==2){let c=e.chRedir(i,a,!0);t(e,H)[r]=c,r!=c&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${c+1}`))}else s[1]==19&&(t(e,u)[$.cc*r+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,j).add([127,0],(s,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,j).run(i,a,o)}).add([127,1,0,0],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=s[0];s.subarray(1).forEach((c,h)=>{([()=>{w(e,_,c*12900/16383)}][r+h]||(()=>{console.info(`Unrecognized ${i}ID: ${r+h}`)}))()})}).add([127,1,0,0,14],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,a,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],a,!0),r=$.cc*i,c=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,u)[r+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,u)[r+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,W)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,u)[r+p[7]]=f},()=>{t(e,u)[r+p[10]]=f},!1,!1,!1,()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[128]]=f},()=>{},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},!1,()=>{t(e,u)[r+p[65]]=f},()=>{t(e,u)[r+p[5]]=f},()=>{}][c+g]||(()=>{}))()})}).add([127,1,54,16],(s,a,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((r,c)=>{let f=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let g=r-64},()=>{let g=De[r]},()=>{let g=r/10},()=>{let g=r}][i+c&3]||(()=>{}))()})})}chRedir(e,n,l){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Q))>-1){if(l==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,l)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(l)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,l=t(this,u).subarray(n,n+$.cc);return l[p[0]]=l[p[0]]||t(this,ye),l[p[32]]=l[p[32]]||t(this,Q),l}getCcCh(e,n){if(Ie.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,u)[$.cc*e+p[n]]}getCcAll(){let e=t(this,u).slice();for(let n=0;n<$.ch;n++){let l=n*$.cc;e[l+p[0]]=e[l+p[0]]||t(this,ye),e[l+p[32]]=e[l+p[32]]||t(this,Q)}return e}getChType(){return t(this,T)}setChType(e,n,l=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,u)[e*$.cc+p[0]]=Se[l])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,M).slice()}getVel(e){let n=new Map,l=this;return t(l,U).forEach(function(d,s){let a=Math.floor(d/128),o=d%128;e==a&&t(l,A)[d]>0&&n.set(o,{v:t(l,A)[d],s:t(l,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,re),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,_)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let l=Math.floor(n/128);t(e,A)[n]>t(e,se)[l]&&(t(e,se)[l]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,d){e[d]=Math.floor(l*t(n,u)[d*$.cc+p[7]]*t(n,u)[d*$.cc+p[11]]*t(n,_)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,l,d){let s=e||t(this,ye),a=n,o=l||t(this,Q);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,a,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),c=r*$.cmt,h="";t(this,$e).subarray(c,c+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,a,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,u)[e*$.cc+p[0]],t(this,O)[e],t(this,u)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,ae)[e])switch(t(this,R)){case x.mt32:n.ending="~",n.name="",t(this,Y).subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,d=3200){let s=this,a;w(s,re," ".repeat(l)),e.forEach(o=>{w(s,re,t(s,re)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(s,we,Date.now()+3200),w(s,re,t(s,re).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,r)=>{r[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l<$.ace;)t(this,ce)[l]==e?n=!1:t(this,ce)[l]||(n=!1,t(this,ce)[l]=e,console.info(`Allocated cc${e} to ACE slot ${l}.`)),l++;l>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ce)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let l=t(this,ce)[n];if(l){if(Ie.indexOf(l)>=0)return t(this,u)[e*$.cc+p[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Q,0),w(this,le,0),t(this,P).fill(0),t(this,u).fill(0),t(this,ce).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,se).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,_,100),w(this,M,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,re,""),w(this,te,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,l,d){d[l]=l}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,u)[$.cc*9]=Se[0],t(this,u)[$.cc*25]=Se[0],t(this,u)[$.cc*41]=Se[0],t(this,u)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,Y).fill(0),t(this,ae).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let l=n*$.cc;t(this,u)[l+p[7]]=100,t(this,u)[l+p[11]]=127,t(this,u)[l+p[10]]=64,t(this,u)[l+p[71]]=64,t(this,u)[l+p[72]]=64,t(this,u)[l+p[73]]=64,t(this,u)[l+p[74]]=64,t(this,u)[l+p[75]]=64,t(this,u)[l+p[76]]=64,t(this,u)[l+p[77]]=64,t(this,u)[l+p[78]]=64,t(this,u)[l+p[91]]=40,t(this,u)[l+p[101]]=127,t(this,u)[l+p[100]]=127,t(this,u)[l+p[99]]=127,t(this,u)[l+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let l=be.indexOf(e);if(l>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,l),w(this,K,0),w(this,ye,Et[0][l]),w(this,Q,Et[1][l]);for(let a=0;a<$.ch;a++)t(this,T)[a]>0&&t(this,u)[a*$.cc+p[0]]==Se[d]&&(t(this,u)[a*$.cc]=Se[l]);switch(this.initOnReset,l){case x.mt32:{Ze.forEach((a,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=a,t(this,u)[i*$.cc+p[91]]=127)});break}}let s;switch(l){case x.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case x.x5d:case x.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,V)[3*a]||(t(this,V)[3*a+1]=s[2*a],t(this,V)[3*a+2]=s[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,se).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let l=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[l])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${l+1} without any recipient.`)}t(this,M).length>100&&t(this,M).splice(100,t(this,M).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,te=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,u=new WeakMap,ce=new WeakMap,O=new WeakMap,A=new WeakMap,W=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,se=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,ae=new WeakMap,ge=new WeakMap,Y=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Q=new WeakMap,_=new WeakMap,le=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,re=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,M=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,xe=new WeakMap,Me=new WeakMap,j=new WeakMap,ie=new WeakMap,fe=new WeakMap,Ce=new WeakMap,Te=new WeakMap,Re=new WeakMap,Mt);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Ct as dnToPos}; diff --git a/src/basic/mxReader.js b/src/basic/mxReader.js index 4b3d2e25..34a33f40 100644 --- a/src/basic/mxReader.js +++ b/src/basic/mxReader.js @@ -27,9 +27,10 @@ Uint8Array.prototype.render = function (receiveFunc) { let MxFont40 = class { #fonts = []; - async load(text, allowOverwrite = false) { + async load(text, allowOverwrite = false, source = "(internal)") { let upThis = this; let loadCount = 0, allCount = 0; + console.debug(`Font "${source || "(internal)"}": loading started.`); text.split("\n").forEach(function (e, i) { if (i > 0 && e?.length > 0) { let arr = e.split("\t"); @@ -54,19 +55,22 @@ let MxFont40 = class { loadCount ++; }; }); - console.debug(`Font "${"(internal)"}": ${allCount} total, ${loadCount} loaded.`); + console.debug(`Font "${source || "(internal)"}": ${allCount} total, ${loadCount} loaded.`); }; async loadFile(fileSrc, allowOverwrite = false) { let upThis = this; console.debug(`Requested font file from "${fileSrc}".`); - await upThis.load(await (await fetch(fileSrc)).text(), allowOverwrite); + await upThis.load(await (await fetch(fileSrc)).text(), allowOverwrite, fileSrc); shiftLoading = false; }; constructor(...fileSrc) { shiftLoading = true; - fileSrc.forEach(async (e) => { - await this.loadFile(e); - }); + (async () => { + // Loading order is now enforced + for (let i = 0; i < fileSrc.length; i ++) { + await this.loadFile(fileSrc[i]); + }; + })(); }; getCP(codePoint) { return this.#fonts[codePoint]; diff --git a/src/fakeMu/index.js b/src/fakeMu/index.js index a78b417a..2c71f2ce 100644 --- a/src/fakeMu/index.js +++ b/src/fakeMu/index.js @@ -26,7 +26,7 @@ let useMidiBus = false; // Generate Octavia channel switch SysEx self.generateSwitch = function (ch = 0, min, max) { - let data = [67, 16, 73, 0, 0, 10, ch]; + let data = [67, 16, 73, 0, 0, 64, ch]; if (min?.constructor == Number) { data.push(min); if (max.constructor == Number) { @@ -514,7 +514,7 @@ self.performance = currentPerformance; // MU128 demo let perf = new TimedEvents(); // Disable native RS - perf.push(new PointEvent(0, {type: 15, track: 0, data: [67, 16, 73, 0, 0, 14, 0]})); + perf.push(new PointEvent(0, {type: 15, track: 0, data: [67, 16, 73, 0, 0, 68, 0]})); perf.push(new PointEvent(0, generateSwitch(0, 0, 0))); perf.push(new PointEvent(1.6, generateSwitch(0, 0, 3))); perf.push(new PointEvent(40.02, generateSwitch(48, 3, 3))); diff --git a/src/state/bankReader.js b/src/state/bankReader.js index 5c54c06a..8e08abdd 100644 --- a/src/state/bankReader.js +++ b/src/state/bankReader.js @@ -18,27 +18,52 @@ let VoiceBank = class { let args = Array.from(arguments); switch (mode) { case "xg": { - if (msb == 32) { - args[2] += 4; // PLG-150AP redirection - } else if (msb == 33 || msb == 35 || msb == 36) { - args[2] += 5; // PLG-150VL/DX/AN redirection - } else if (msb == 79) { - args[0] = 95; // PLG-150DR + PLG-150PC redirection - } else if (msb == 80) { - args[0] = 96; // PLG-150PF + PLG-150AP redirection - } else if (msb == 81) { - args[0] = 97; // PLG-150VL redirection - } else if (msb == 82) { - args[0] = 98; // PLG-100SG redirection - } else if (msb == 83) { - args[0] = 99; // PLG-100DX redirection - } else if (msb == 84) { - args[0] = 100; // PLG-100AN redirection - }; - if (lsb == 126) { - args[2] = 125; // MU100 Native - } else if (lsb == 127) { - args[2] = 0; // MU Basic + switch (msb) { + case 0: { + if (lsb == 126) { + args[2] = 125; // MU100 Native + } else if (lsb == 127) { + args[2] = 0; // MU Basic + }; + break; + }; + case 32: { + args[2] += 4; // PLG-150AP redirection + break; + }; + case 33: + case 35: + case 36: { + args[2] += 5; // PLG-150VL/DX/AN redirection + break; + }; + case 79: + case 80: + case 81: + case 82: + case 83: + case 84: { + // 79: PLG-150DR + PLG-150PC redirection + // 80: PLG-150PF + PLG-150AP redirection + // 81: PLG-150VL redirection + // 82: PLG-100SG redirection + // 83: PLG-100DX redirection + // 84: PLG-100AN redirection + args[0] += 16; + if (lsb == 126) { + args[2] = 0; // MU100 Native restore + }; + break; + }; + case 48: + case 64: + case 126: + case 127: { + if (lsb == 126) { + args[2] = 0; // MU100 Native restore + }; + break; + }; }; break; }; @@ -80,7 +105,7 @@ let VoiceBank = class { break; }; }; - let ending = " ", sect = `M`, useLsb = false, baseShift = 0; + let ending = " ", sect = `M`, useLsb = 0, baseShift = 0; // Section test switch (args[0]) { case 0: { @@ -100,7 +125,7 @@ let VoiceBank = class { sect = "GM-a"; } else { sect = "y"; - useLsb = true; + useLsb = 3; }; break; }; @@ -114,7 +139,7 @@ let VoiceBank = class { }; case 48: { sect = `yM${(args[2] >> 3).toString().padStart(2, "0")}`; - useLsb = true; + useLsb = 1; break; }; case 56: { @@ -173,12 +198,12 @@ let VoiceBank = class { if (args[2] > 63) { baseShift = 63; }; - useLsb = true; + useLsb = 3; break; }; case 97: { sect = "VL:"; - useLsb = true; + useLsb = 3; baseShift = 112; break; }; @@ -191,7 +216,7 @@ let VoiceBank = class { if (args[2] > 63) { baseShift = 63; }; - useLsb = true; + useLsb = 3; break; }; case 100: { @@ -199,12 +224,12 @@ let VoiceBank = class { if (args[2] > 63) { baseShift = 63; }; - useLsb = true; + useLsb = 3; break; }; case 121: { sect = `GM-${args[2] ? "" : "a"}`; - useLsb = true; + useLsb = 3; break; }; case 122: { @@ -232,7 +257,7 @@ let VoiceBank = class { }; }; if (sect.length < 4) { - sect += `${(useLsb ? lsb : msb) - baseShift}`.padStart(4 - sect.length, "0"); + sect += `${[msb, lsb, args[0], args[1]][useLsb] - baseShift}`.padStart(4 - sect.length, "0"); }; // Hijack XG MU2000 sampler if (mode == "xg" && msb == 16) { diff --git a/src/state/index.mjs b/src/state/index.mjs index b5fb6a27..d3a15fff 100644 --- a/src/state/index.mjs +++ b/src/state/index.mjs @@ -2009,12 +2009,16 @@ let OctaviaDevice = class extends CustomEventSource { }).add([73, 0, 0], (msg, track) => { // MU1000/2000 System let offset = msg[0]; + let dPref = `MU1000 System: `; msg.subarray(1).forEach((e, i) => { let ri = offset + i; if (ri == 8) { - console.debug(`MU1000 set LCD contrast to ${e}.`); - } else if (ri > 9 && ri < 16) { - // Octavia custom SysEx, starts from 10 + console.debug(`${dPref}LCD contrast set to ${e}.`); + } else if (ri == 18) { + upThis.#subLsb = e ? 126 : 0; + console.debug(`${dPref}bank defaults to ${e ? "MU100 Native" : "MU Basic"}.`); + } else if (ri >= 64 && ri < 69) { + // Octavia custom SysEx, starts from 64 (10 before) [() => { upThis.dispatchEvent("channelactive", e); }, () => { @@ -2039,7 +2043,7 @@ let OctaviaDevice = class extends CustomEventSource { }, () => { upThis.#receiveRS = !!e; console.info(`Octavia System: RS receiving ${["dis", "en"][e]}abled.`); - }][ri - 10](); + }][ri - 64](); }; }); }).add([73, 10, 0], (msg, track) => { From 5eb5b0bd9c320a4bf053c6c00aa7c4a7e188fa03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 30 May 2023 14:28:01 +0000 Subject: [PATCH 10/31] Bank category bug fix. --- src/state/bankReader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/state/bankReader.js b/src/state/bankReader.js index 8e08abdd..3fb186d1 100644 --- a/src/state/bankReader.js +++ b/src/state/bankReader.js @@ -257,7 +257,7 @@ let VoiceBank = class { }; }; if (sect.length < 4) { - sect += `${[msb, lsb, args[0], args[1]][useLsb] - baseShift}`.padStart(4 - sect.length, "0"); + sect += `${[msb, lsb, args[0], args[2]][useLsb] - baseShift}`.padStart(4 - sect.length, "0"); }; // Hijack XG MU2000 sampler if (mode == "xg" && msb == 16) { From 61cc741e0140826fcb18f7b9c167adc2b542ff9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 30 May 2023 15:48:59 +0000 Subject: [PATCH 11/31] Opportunistic pixel blur for NS5R. --- src/disp/colour.js | 6 ++- src/disp/disp_n5.mjs | 94 +++++++++++++++++++++++++++----------------- test/index.htm | 2 +- 3 files changed, 64 insertions(+), 38 deletions(-) diff --git a/src/disp/colour.js b/src/disp/colour.js index 77e10ebf..878712d7 100644 --- a/src/disp/colour.js +++ b/src/disp/colour.js @@ -11,7 +11,11 @@ let backlight = { lcdPixel = { black: "#000000", blue: "#0516bb", - purple: "#48009a" + purple: "#48009a", + inactive: 0x16, + medium: 0x3b, + active: 0xaa, + range: 0x94 }; // Generate caches for easier implementation diff --git a/src/disp/disp_n5.mjs b/src/disp/disp_n5.mjs index fe737d6c..e92250dd 100644 --- a/src/disp/disp_n5.mjs +++ b/src/disp/disp_n5.mjs @@ -9,17 +9,21 @@ import { bgOrange, bgWhite, bgRed, + lcdPixel, lcdCache } from "./colour.js"; let Ns5rDisplay = class extends RootDisplay { #omdb = new Uint8Array(5760); // Full display #nmdb = new Uint8Array(5760); // Full display, but on commit + #dmdb = new Uint8Array(5760); // Full display, but it's actually drawn #dumpData; #dumpExpire = 0; #mode = "?"; #ch = 0; #backlight; + #pixelLit = 255; + #pixelOff = 0; #refreshed = true; xgFont = new MxFont40("./data/bitmaps/xg/font.tsv"); trueFont = new MxFont40("./data/bitmaps/korg/font.tsv", "./data/bitmaps/xg/font.tsv"); @@ -68,13 +72,13 @@ let Ns5rDisplay = class extends RootDisplay { (pY == 14 && pX > 0) || (pY == 13) ) { - this.#nmdb[pY * 144 + pX + startX] = 1; + this.#nmdb[pY * 144 + pX + startX] = this.#pixelLit; } else if (pY > 0 && pY < 13) { if ( pX == 0 || pX > 9 || (pX == 5 && pY > 1 && pY < 12) ) { - this.#nmdb[pY * 144 + pX + startX] = 1; + this.#nmdb[pY * 144 + pX + startX] = this.#pixelLit; }; }; }; @@ -84,9 +88,9 @@ let Ns5rDisplay = class extends RootDisplay { let pX = c % 7, pY = Math.floor(c / 7), pcY = pY + (9 - convertedValue); if (pY != 1 || pX == 0 || pX == 6) { - this.#nmdb[pcY * 144 + pX + startX + 2] = 1; + this.#nmdb[pcY * 144 + pX + startX + 2] = this.#pixelLit; } else { - this.#nmdb[pcY * 144 + pX + startX + 2] = 0; + this.#nmdb[pcY * 144 + pX + startX + 2] = this.#pixelOff; }; }; }; @@ -100,22 +104,22 @@ let Ns5rDisplay = class extends RootDisplay { let theta = diffX / diffY; if (diffY < 0) { for (let p = 0; p >= diffY; p --) { - this.#nmdb[Math.round(theta * p + srcX) + (srcY + p) * 144] = 1; + this.#nmdb[Math.round(theta * p + srcX) + (srcY + p) * 144] = this.#pixelLit; }; } else { for (let p = 0; p <= diffY; p ++) { - this.#nmdb[Math.round(theta * p + srcX) + (srcY + p) * 144] = 1; + this.#nmdb[Math.round(theta * p + srcX) + (srcY + p) * 144] = this.#pixelLit; }; }; } else { let theta = diffY / diffX; if (diffX < 0) { for (let p = 0; p >= diffX; p --) { - this.#nmdb[Math.round(theta * p + srcY) * 144 + srcX + p] = 1; + this.#nmdb[Math.round(theta * p + srcY) * 144 + srcX + p] = this.#pixelLit; }; } else { for (let p = 0; p <= diffX; p ++) { - this.#nmdb[Math.round(theta * p + srcY) * 144 + srcX + p] = 1; + this.#nmdb[Math.round(theta * p + srcY) * 144 + srcX + p] = this.#pixelLit; }; }; }; @@ -128,7 +132,7 @@ let Ns5rDisplay = class extends RootDisplay { drawX = Math.sign(intX) * Math.round(Math.abs(intX)); let intY = radius * Math.cos(angle), drawY = Math.sign(intY) * Math.round(Math.abs(intY)); - this.#nmdb[(drawY + startY) * 144 + drawX + startX] = 1; + this.#nmdb[(drawY + startY) * 144 + drawX + startX] = this.#pixelLit; }; if (value < 128) { let normAngle = Math.floor(value / 9.85) * 22.5; @@ -138,11 +142,11 @@ let Ns5rDisplay = class extends RootDisplay { /* for (let c = 0; c <= lineStep; c ++) { let drawX = Math.round(c * deltaX), drawY = Math.round(c * deltaY); - this.#nmdb[(drawY + startY) * 144 + drawX + startX] = 1; + this.#nmdb[(drawY + startY) * 144 + drawX + startX] = this.#pixelLit; }; */ this.#renderLine(startX, startY, deltaX * lineStep, deltaY * lineStep); } else { - this.#nmdb[(startY) * 144 + startX] = 1; + this.#nmdb[(startY) * 144 + startX] = this.#pixelLit; }; }; render(time, ctx, trueMode) { @@ -173,11 +177,11 @@ let Ns5rDisplay = class extends RootDisplay { let chOff = this.#ch * ccToPos.length; if (timeNow < this.#dumpExpire) { this.#dumpData?.forEach((e, i) => { - this.#nmdb[i] = e; + this.#nmdb[i] = e ? this.#pixelLit : this.#pixelOff; }); } else { // Clear out the current working display buffer. - this.#nmdb.forEach((e, i, a) => {a[i] = 0}); + this.#nmdb.forEach((e, i, a) => {a[i] = this.#pixelOff}); // Screen buffer write begin. // Determine the used font let targetFont = trueMode ? this.trueFont : this.xgFont; @@ -187,7 +191,7 @@ let Ns5rDisplay = class extends RootDisplay { e0.forEach((e1, i1) => { let charX = i1 % 5, charY = Math.floor(i1 / 5); - this.#nmdb[charY * 144 + secX + charX] = e1; + this.#nmdb[charY * 144 + secX + charX] = e1 ? this.#pixelLit : this.#pixelOff; }); }); // Show current pitch shift @@ -197,14 +201,14 @@ let Ns5rDisplay = class extends RootDisplay { e0.forEach((e1, i1) => { let charX = i1 % 5, charY = Math.floor(i1 / 5) + 8; - this.#nmdb[charY * 144 + secX + charX] = e1; + this.#nmdb[charY * 144 + secX + charX] = e1 ? this.#pixelLit : this.#pixelOff; }); }); // Render bank background let bankFetched = upThis.getChVoice(this.#ch), bankInfo = bankFetched.sect; for (let bankSect = 0; bankSect < 225; bankSect ++) { let pixX = bankSect % 25, pixY = Math.floor(bankSect / 25) + 15; - this.#nmdb[pixY * 144 + pixX] = 1; + this.#nmdb[pixY * 144 + pixX] = this.#pixelLit; }; targetFont.getStr(bankInfo).forEach((e0, i0) => { let secX = i0 * 6 + 1; @@ -212,7 +216,7 @@ let Ns5rDisplay = class extends RootDisplay { let charX = i1 % 5, charY = Math.floor(i1 / 5) + 16; if (e1) { - this.#nmdb[charY * 144 + secX + charX] = 0; + this.#nmdb[charY * 144 + secX + charX] = this.#pixelOff; }; }); }); @@ -223,7 +227,7 @@ let Ns5rDisplay = class extends RootDisplay { e0.forEach((e1, i1) => { let charX = i1 % 5, charY = Math.floor(i1 / 5) + 16; - this.#nmdb[charY * 144 + secX + charX] = e1; + this.#nmdb[charY * 144 + secX + charX] = e1 ? this.#pixelLit : this.#pixelOff; }); }); targetFont.getStr(bankName).forEach((e0, i0) => { @@ -231,7 +235,7 @@ let Ns5rDisplay = class extends RootDisplay { e0.forEach((e1, i1) => { let charX = i1 % 5, charY = Math.floor(i1 / 5) + 16; - this.#nmdb[charY * 144 + secX + charX] = e1; + this.#nmdb[charY * 144 + secX + charX] = e1 ? this.#pixelLit : this.#pixelOff; }); }) // Render current channel @@ -240,7 +244,7 @@ let Ns5rDisplay = class extends RootDisplay { e0.forEach((e1, i1) => { let charX = i1 % 5, charY = Math.floor(i1 / 5) + 32; - this.#nmdb[charY * 144 + secX + charX] = e1; + this.#nmdb[charY * 144 + secX + charX] = e1 ? this.#pixelLit : this.#pixelOff; }); }); // Render channel strength @@ -258,9 +262,9 @@ let Ns5rDisplay = class extends RootDisplay { if (trueMode) { pixX ++; }; - this.#nmdb[pixY * 144 + pixX] = 1; - this.#nmdb[pixY * 144 + pixX + 1] = 1; - this.#nmdb[pixY * 144 + pixX + 2] = 1; + this.#nmdb[pixY * 144 + pixX] = this.#pixelLit; + this.#nmdb[pixY * 144 + pixX + 1] = this.#pixelLit; + this.#nmdb[pixY * 144 + pixX + 2] = this.#pixelLit; }; }); // Render effect types @@ -272,7 +276,7 @@ let Ns5rDisplay = class extends RootDisplay { e0.forEach((e1, i1) => { let charX = i1 % 5, charY = Math.floor(i1 / 5) + secY; - this.#nmdb[charY * 144 + secX + charX] = e1; + this.#nmdb[charY * 144 + secX + charX] = e1 ? this.#pixelLit : this.#pixelOff; }); }); // Render letter displays @@ -287,10 +291,10 @@ let Ns5rDisplay = class extends RootDisplay { (y == 18) || (y == 19 && x > 0) ) { - this.#nmdb[y * 144 + x + xShift] = 1; + this.#nmdb[y * 144 + x + xShift] = this.#pixelLit; }; if (y > 0 && y < 18) { - this.#nmdb[y * 144 + x + xShift] = +(x < 1 || x > 97); + this.#nmdb[y * 144 + x + xShift] = +(x < 1 || x > 97) ? this.#pixelLit : this.#pixelOff; }; }; // Actual text @@ -300,7 +304,7 @@ let Ns5rDisplay = class extends RootDisplay { e0.forEach((e1, i1) => { let charX = i1 % 5, charY = Math.floor(i1 / 5) + secY; - this.#nmdb[charY * 144 + secX + charX] = e1; + this.#nmdb[charY * 144 + secX + charX] = e1 ? this.#pixelLit : this.#pixelOff; }); }); } else { @@ -311,11 +315,11 @@ let Ns5rDisplay = class extends RootDisplay { if (trueMode) { if (sum.chContr[chOff + ccToPos[10]] < 128) { this.element.getBm(`Pan_${Math.floor(sum.chContr[chOff + ccToPos[10]] / 9.85)}`)?.render((e, x, y) => { - this.#nmdb[y * 144 + x + 48] = e; + this.#nmdb[y * 144 + x + 48] = e ? this.#pixelLit : this.#pixelOff; }); } else { this.element.getBm("PanRndm")?.render((e, x, y) => { - this.#nmdb[y * 144 + x + 48] = e; + this.#nmdb[y * 144 + x + 48] = e ? this.#pixelLit : this.#pixelOff; }); }; } else { @@ -339,10 +343,10 @@ let Ns5rDisplay = class extends RootDisplay { (y == 19) || (y == 20 && x > 0) ) { - this.#nmdb[realY * 144 + realX] = 1; + this.#nmdb[realY * 144 + realX] = this.#pixelLit; }; if (y > 0 && y < 19) { - this.#nmdb[realY * 144 + realX] = +(x < 1 || x > 34); + this.#nmdb[realY * 144 + realX] = +(x < 1 || x > 34) ? this.#pixelLit : this.#pixelOff; }; }; // Actual bitmap @@ -350,9 +354,9 @@ let Ns5rDisplay = class extends RootDisplay { for (let i = 0; i < 512; i += colUnit) { let x = i & 31, y = i >> 5; let realX = x + 79 + (+trueMode), realY = y + 21; - this.#nmdb[realY * 144 + realX] = sum.bitmap.bitmap[i / colUnit]; + this.#nmdb[realY * 144 + realX] = sum.bitmap.bitmap[i / colUnit] ? this.#pixelLit : this.#pixelOff; if (colUnit == 2) { - this.#nmdb[realY * 144 + realX + 1] = sum.bitmap.bitmap[i / colUnit]; + this.#nmdb[realY * 144 + realX + 1] = sum.bitmap.bitmap[i / colUnit] ? this.#pixelLit : this.#pixelOff; }; }; }; @@ -395,8 +399,18 @@ let Ns5rDisplay = class extends RootDisplay { drawPixMode = true; this.#refreshed = false; }; - // Commit to display accordingly. + // Transitional this.#nmdb.forEach((e, i) => { + let diff = e - this.#dmdb[i], + cap = 48; + if (Math.abs(diff) > cap) { + this.#dmdb[i] += Math.sign(diff) * cap; + } else { + this.#dmdb[i] = e; + }; + }); + // Commit to display accordingly. + this.#dmdb.forEach((e, i) => { let pixX = i % 144, pixY = Math.floor(i / 144); let hasDifference = this.#omdb[i] != e; if (!drawPixMode && hasDifference) { @@ -404,15 +418,23 @@ let Ns5rDisplay = class extends RootDisplay { ctx.fillRect(6 * pixX + 1, 12 + 6 * pixY, 6, 6); }; if (drawPixMode || hasDifference) { - ctx.fillStyle = lcdCache.black[e + 3]; + if (e >= this.#pixelLit) { + ctx.fillStyle = lcdCache.black[4]; + } else if (e <= this.#pixelOff) { + ctx.fillStyle = lcdCache.black[3]; + } else { + let colour = `${lcdPixel.black}${(Math.ceil(e * lcdPixel.range / 255) + lcdPixel.inactive).toString(16)}`; + ctx.fillStyle = colour; + }; if (drawPixMode) { ctx.fillStyle = ctx.fillStyle.slice(0, 7); }; ctx.fillRect(6 * pixX + 1, 12 + 6 * pixY, 5.5, 5.5); + self.pixelUpdates = (self.pixelUpdates || 0) + 1; }; }); // Commit to old display buffer. - this.#nmdb.forEach((e, i) => { + this.#dmdb.forEach((e, i) => { if (this.#omdb[i] != e) { this.#omdb[i] = e; }; diff --git a/test/index.htm b/test/index.htm index 93a1d08d..582016f1 100644 --- a/test/index.htm +++ b/test/index.htm @@ -40,7 +40,7 @@

          List of Octavia demos

          Fake Roland SC screen (has pixel blur)
        • - Fake KORG NS5R screen (no pixel blur) + Fake KORG NS5R screen (lazy pixel blur)
        • Fake YAMAHA QY screen (no pixel blur) From e1e12ff9f4ca4e35b2096fe375dc613578a8a380 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 30 May 2023 16:29:46 +0000 Subject: [PATCH 12/31] Decrease screen buffer write counts. --- dist/cambiare.mjs | 2 +- dist/state.mjs | 2 +- dist/state_skim.mjs | 2 +- dist/xp_basic.mjs | 2 +- dist/xp_state.mjs | 2 +- src/disp/disp_n5.mjs | 7 ++++--- src/disp/disp_sc.mjs | 7 ++++++- test/index.htm | 10 +++++----- 8 files changed, 20 insertions(+), 14 deletions(-) diff --git a/dist/cambiare.mjs b/dist/cambiare.mjs index 3b3e6d3f..c3047080 100644 --- a/dist/cambiare.mjs +++ b/dist/cambiare.mjs @@ -1,4 +1,4 @@ -var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,c,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Ce.call(e,t)&&t!==c&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,c)=>(c=e!=null?Se(Te(e)):{},Oe(n||!e||!e.__esModule?j(c,"default",{value:e,enumerable:!0}):c,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],c={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return c.Uint8(o);if(typeof o=="string")return c.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return c.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let r=new FileReader;r.readAsArrayBuffer(a.target.files[0]),r.onload=function(s){t(c.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",l,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var a=t.length;let r=new Uint8Array(new ArrayBuffer(a));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)l+=p[p.length-b]*Math.pow(128,b);l+=f}return l}};if(t.data=new DataView(r.buffer,r.byteOffset,r.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var r=t.readInt(1),s=t.readInt(1);128<=r?(a.timeDivision=[],a.timeDivision[0]=r-128,a.timeDivision[1]=s):a.timeDivision=256*r+s;for(let l=1;l<=a.tracks;l++){a.track[l-1]={event:[]};var i,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,a.track[l-1].event[f-1]={},a.track[l-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){a.track[l-1].event[f-1].type=255,a.track[l-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[l-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[l-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[l-1].event[f-1].data=t.readInt(d);break;case 84:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1),a.track[l-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(t.readInt(d),a.track[l-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),a.track[l-1].event[f-1].type=parseInt(b[0],16),a.track[l-1].event[f-1].channel=parseInt(b[1],16),a.track[l-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(i=t.readIntVLV(),a.track[l-1].event[f-1].data=t.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[l-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[l-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof K<"u")K.exports=c;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=c}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),o=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var Z=function(e,n){let c=Math.min(e.length,n.length),o=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let o=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==o)a-=t;else{let i=Z(n,this.pool[a]);switch(i){case 0:{r=0;break}case 1:{a+t<=o&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${i}.`)}}t=t>>1,r--}let s=!0;if(a>=this.pool.length)s=!1;else{let i=this;this.pool[a].forEach(function(h,d,l){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[a])>0&&a++}return s||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...c):this.pool[o].data(n.slice(this.pool[o].length),...c):this.default(n,...c)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},B=class{#t;strictMode=!1;get(e=0,n=0,c=0,o){let t=[e,n,c],a,r=Array.from(arguments);switch(o){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{r[0]+=16,c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let s=" ",i="M",h=0,d=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||o=="gs"&&r[2]<5?i="GM-a":(i="y",h=3);break}case 8:{o=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let b=r[2];i=b<10?"kP:":"kC:",i+=b%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(d=63),h=3;break}case 97:{i="VL:",h=3,d=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(d=63),h=3;break}case 100:{i="AN",r[2]>63&&(d=63),h=3;break}case 121:{i=`GM-${r[2]?"":"a"}`,h=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[e,c,r[0],r[1]][h]-d}`.padStart(4-i.length,"0")),o=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,s=" ");let l=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",s="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):(r[2]--,s="^"):e==48?(r[0]=0,r[2]=0,s="!"):e==62?(r[1]--,s=" ",r[1]<1&&!a?.length&&(r[0]=0,s="!")):e<63?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(a=`GM2Vox0${c}`,s="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?s=" ":(a="",s="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,s="!"):r[0]==0?(r[2]=0,s="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,s="!"):(r[0]=0,s="?"));let f=[r[0],r[1],r[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&o=="xg"?p="XG":p="GS")}return{name:a||`${H(e||0)} ${H(n||0)} ${H(c||0)}`,iid:l,eid:f,sid:t,ending:s,sect:i,standard:p}}async load(e,n,c){let o=this,t=[],a=0,r=0;e.split(` +var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,c,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Ce.call(e,t)&&t!==c&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,c)=>(c=e!=null?Se(Te(e)):{},Oe(n||!e||!e.__esModule?j(c,"default",{value:e,enumerable:!0}):c,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],c={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return c.Uint8(o);if(typeof o=="string")return c.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return c.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let r=new FileReader;r.readAsArrayBuffer(a.target.files[0]),r.onload=function(s){t(c.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",l,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var a=t.length;let r=new Uint8Array(new ArrayBuffer(a));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)l+=p[p.length-b]*Math.pow(128,b);l+=f}return l}};if(t.data=new DataView(r.buffer,r.byteOffset,r.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var r=t.readInt(1),s=t.readInt(1);128<=r?(a.timeDivision=[],a.timeDivision[0]=r-128,a.timeDivision[1]=s):a.timeDivision=256*r+s;for(let l=1;l<=a.tracks;l++){a.track[l-1]={event:[]};var i,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,a.track[l-1].event[f-1]={},a.track[l-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){a.track[l-1].event[f-1].type=255,a.track[l-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[l-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[l-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[l-1].event[f-1].data=t.readInt(d);break;case 84:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1),a.track[l-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(t.readInt(d),a.track[l-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),a.track[l-1].event[f-1].type=parseInt(b[0],16),a.track[l-1].event[f-1].channel=parseInt(b[1],16),a.track[l-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(i=t.readIntVLV(),a.track[l-1].event[f-1].data=t.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[l-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[l-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof K<"u")K.exports=c;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=c}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),o=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var Z=function(e,n){let c=Math.min(e.length,n.length),o=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let o=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==o)a-=t;else{let i=Z(n,this.pool[a]);switch(i){case 0:{r=0;break}case 1:{a+t<=o&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${i}.`)}}t=t>>1,r--}let s=!0;if(a>=this.pool.length)s=!1;else{let i=this;this.pool[a].forEach(function(h,d,l){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[a])>0&&a++}return s||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...c):this.pool[o].data(n.slice(this.pool[o].length),...c):this.default(n,...c)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},B=class{#t;strictMode=!1;get(e=0,n=0,c=0,o){let t=[e,n,c],a,r=Array.from(arguments);switch(o){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{r[0]+=16,c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let s=" ",i="M",h=0,d=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||o=="gs"&&r[2]<5?i="GM-a":(i="y",h=3);break}case 8:{o=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let b=r[2];i=b<10?"kP:":"kC:",i+=b%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(d=63),h=3;break}case 97:{i="VL:",h=3,d=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(d=63),h=3;break}case 100:{i="AN",r[2]>63&&(d=63),h=3;break}case 121:{i=`GM-${r[2]?"":"a"}`,h=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[e,c,r[0],r[2]][h]-d}`.padStart(4-i.length,"0")),o=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,s=" ");let l=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",s="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):(r[2]--,s="^"):e==48?(r[0]=0,r[2]=0,s="!"):e==62?(r[1]--,s=" ",r[1]<1&&!a?.length&&(r[0]=0,s="!")):e<63?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(a=`GM2Vox0${c}`,s="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?s=" ":(a="",s="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,s="!"):r[0]==0?(r[2]=0,s="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,s="!"):(r[0]=0,s="?"));let f=[r[0],r[1],r[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&o=="xg"?p="XG":p="GS")}return{name:a||`${H(e||0)} ${H(n||0)} ${H(c||0)}`,iid:l,eid:f,sid:t,ending:s,sect:i,standard:p}}async load(e,n,c){let o=this,t=[],a=0,r=0;e.split(` `).forEach(function(s,i){let h=s.split(" "),d=[];i==0?h.forEach(function(l,f){t[De.indexOf(l)]=f}):h.forEach(async function(l,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],a++),r++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${c||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],c=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=c[0];t<=c[1];t++){let a=t<<7;for(let r=o[0];r<=o[1];r++){let s=a+r;for(let i=n[0];i<=n[1];i++)delete this.#t[i][s]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(c,o){try{await fetch(`./data/bank/${c}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,c)})}catch{console.error(`Failed loading "${c}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let c=!0;return n.forEach((o,t)=>{c=c&&e[t]==o}),c},ee=function(e){let n=0;return e.forEach(c=>{n*=256,n+=c}),n},R=new TextDecoder,A=new J;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),c="MSB LSB PRG NME",o=[0,0,0,0],t=32,a=0,r=0,s=!0,i=[],h=0;for(;s;){let d=n.subarray(a);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(Ie(d.subarray(0,4),o))i.forEach((l,f,p)=>{let b=ee(n.subarray(l.start+4,l.start+8));l.length=b}),r=2;else{let l=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));i.push({type:l,start:f}),a+=8}},()=>{let l=i[h],f=n.subarray(l.start,l.start+l.length),p=32;switch(l.type){case"ENVC":{let b=t;for(;b0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(l,c,h){i&&l!=n[c]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...o):this.pool[f].data(n.slice(this.pool[f].length),...o):this.default(n,...o)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),f=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var ce=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},H=class{#t;strictMode=!1;get(e=0,n=0,o=0,f){let t=[e,n,o],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{o==126?r[2]=125:o==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{r[0]+=16,o==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(r[2]=0);break}}break}case"gs":{e==0&&o<5?r[2]=0:e>125&&o<5&&o!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&o==0&&(r[2]=5);break}case"s90es":{o<8?r[2]+=17:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{o<8?r[2]+=28:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",l=0,c=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",l=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,l=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(c=63),l=3;break}case 97:{s="VL:",l=3,c=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(c=63),l=3;break}case 100:{s="AN",r[2]>63&&(c=63),l=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,l=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,o,r[0],r[1]][l]-c}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(o||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,o){let f=this,t=[],a=0,r=0;e.split(` +var X=function(e,n){let o=Math.min(e.length,n.length),f=e.slice(0,o),t=n.slice(0,o),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(l,c,h){i&&l!=n[c]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...o):this.pool[f].data(n.slice(this.pool[f].length),...o):this.default(n,...o)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),f=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var ce=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},H=class{#t;strictMode=!1;get(e=0,n=0,o=0,f){let t=[e,n,o],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{o==126?r[2]=125:o==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{r[0]+=16,o==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(r[2]=0);break}}break}case"gs":{e==0&&o<5?r[2]=0:e>125&&o<5&&o!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&o==0&&(r[2]=5);break}case"s90es":{o<8?r[2]+=17:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{o<8?r[2]+=28:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",l=0,c=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",l=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,l=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(c=63),l=3;break}case 97:{s="VL:",l=3,c=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(c=63),l=3;break}case 100:{s="AN",r[2]>63&&(c=63),l=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,l=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,o,r[0],r[2]][l]-c}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(o||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,o){let f=this,t=[],a=0,r=0;e.split(` `).forEach(function(i,s){let l=i.split(" "),c=[];s==0?l.forEach(function(h,b){t[ce.indexOf(h)]=b}):l.forEach(async function(h,b){b>2?(f.#t[c[t[1]]]=f.#t[c[t[1]]]||[],(!f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]?.length||n)&&(f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]=l[3],a++),r++):c.push(parseInt(l[b]))})}),n||console.debug(`Map "${o||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,f){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let o=!0;return n.forEach((f,t)=>{o=o&&e[t]==f}),o},V=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],l=0;for(;i;){let c=n.subarray(a);([()=>{v.decode(c.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(c.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(c.subarray(0,4)),b=V(c.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[l],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;${let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[1]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` +`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[2]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` `).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],B=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],I={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},H=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#I=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#H=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],H[i][0]),H[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#G.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#B.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#G;#B;#J;buildRchTree(){let e=[];this.#I.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG 0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#H.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#I.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#H.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=B[0][s],this.#u=B[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${I[e.type]?I[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index 74419a8f..0afa9838 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -1,4 +1,4 @@ -var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),m=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var E,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(E=h[o])!=null&&E.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(E){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:E}),d++,d>4294967295&&(d=0)}else b.push(E),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var E=b.shift();s.postMessage(E)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(E){E.c==o?E.i!=f&&s.dispatchEvent(u("message",E.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(E.c,"."))};var v={};this.dispatchEvent=function(E){var x,A;if(Object.defineProperty(E,"target",{value:s}),Object.defineProperty(E,"currentTarget",{value:s}),(x=v[E.type])!=null&&x.length)for(var V=v[E.type],ae=0;ae-1&&v[E].splice(ae,1)}!((V=v[E])!=null&&V.length)&&v[E].constructor&&delete v[E]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||E>127&&E<160)throw new RangeError(`Invalid code point: ${E}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof mt<"u")mt.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){m(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){m(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=0,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=3);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=3;break}case 97:{i="VL:",s=3,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=3;break}case 100:{i="AN",a[2]>63&&(f=63),s=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[1]][s]-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` +var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),m=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var E,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(E=h[o])!=null&&E.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(E){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:E}),d++,d>4294967295&&(d=0)}else b.push(E),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var E=b.shift();s.postMessage(E)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(E){E.c==o?E.i!=f&&s.dispatchEvent(u("message",E.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(E.c,"."))};var v={};this.dispatchEvent=function(E){var x,A;if(Object.defineProperty(E,"target",{value:s}),Object.defineProperty(E,"currentTarget",{value:s}),(x=v[E.type])!=null&&x.length)for(var V=v[E.type],ae=0;ae-1&&v[E].splice(ae,1)}!((V=v[E])!=null&&V.length)&&v[E].constructor&&delete v[E]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||E>127&&E<160)throw new RangeError(`Invalid code point: ${E}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof mt<"u")mt.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){m(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){m(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=0,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=3);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=3;break}case 97:{i="VL:",s=3,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=3;break}case 100:{i="AN",a[2]>63&&(f=63),s=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[2]][s]-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` `).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);R();R();var Ge,Ot,Pt=(Ot=class{constructor(){m(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Dt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Pt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Dt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Dt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;ye in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var C=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var I,rt,it=(rt=class{constructor(){E(this,I,{})}addEventListener(b,e){t(this,I)[b]||(t(this,I)[b]=[]),t(this,I)[b].unshift(e)}removeEventListener(b,e){if(t(this,I)[b]){let n=t(this,I)[b].indexOf(e);n>-1&&t(this,I)[b].splice(n,1),t(this,I)[b].length<1&&delete t(this,I)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,I)[b])==null?void 0:d.length)>0&&t(this,I)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},I=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);C(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[1]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` +var Rt=Object.defineProperty;var Ot=(b,e,n)=>e in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var C=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var I,rt,it=(rt=class{constructor(){E(this,I,{})}addEventListener(b,e){t(this,I)[b]||(t(this,I)[b]=[]),t(this,I)[b].unshift(e)}removeEventListener(b,e){if(t(this,I)[b]){let n=t(this,I)[b].indexOf(e);n>-1&&t(this,I)[b].splice(n,1),t(this,I)[b].length<1&&delete t(this,I)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,I)[b])==null?void 0:d.length)>0&&t(this,I)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},I=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);C(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[2]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` `).forEach(function(o,i){let r=o.split(" "),c=[];i==0?r.forEach(function(h,f){d[Dt.indexOf(h)]=f}):r.forEach(async function(h,f){var g;f>2?(t(l,F)[c[d[1]]]=t(l,F)[c[d[1]]]||[],(!((g=t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]])!=null&&g.length)||e)&&(t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]]=r[3],s++),a++):c.push(parseInt(r[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${s} loaded.`)}clearRange(b){let e=b.prg!=null?b.prg.constructor==Array?b.prg:[b.prg,b.prg]:[0,127],n=b.msb!=null?b.msb.constructor==Array?b.msb:[b.msb,b.msb]:[0,127],l=b.lsb!=null?b.lsb.constructor==Array?b.lsb:[b.lsb,b.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let a=l[0];a<=l[1];a++){let o=s+a;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let b=0;b<128;b++)t(this,F).push([""])}async loadFiles(...b){this.init();let e=this;b.forEach(async function(n,l){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,ct=(ot=class{constructor(){E(this,Oe,{});C(this,"context")}set(b,e){t(this,Oe)[b]=e}has(b){return!!t(this,Oe)[b]}async read(b,e){if(!this.has(b))throw new Error(`No decoder registered for "${b}"`);return await t(this,Oe)[b].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(b,e){let n=!0;return e.forEach((l,d)=>{n=n&&b[d]==l}),n},lt=function(b){let e=0;return b.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new ct;Ve.set("s7e",async function(b){let e=new Uint8Array(await b.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",l=[0,0,0,0],d=32,s=0,a=0,o=!0,i=[],r=0;for(;o;){let c=e.subarray(s);([()=>{Le.decode(c.subarray(0,4))=="YSFC"?(s+=80,a=1):s++},()=>{if(Pt(c.subarray(0,4),l))i.forEach((h,f,g)=>{let y=lt(e.subarray(h.start+4,h.start+8));h.length=y}),a=2;else{let h=Le.decode(c.subarray(0,4)),f=lt(c.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[r],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;y { @@ -56,6 +57,7 @@ let Ns5rDisplay = class extends RootDisplay { this.#dumpExpire = Date.now() + 1600; }; }); + this.useBlur = !!conf?.useBlur; }; setCh(ch) { this.#ch = ch; @@ -405,7 +407,7 @@ let Ns5rDisplay = class extends RootDisplay { cap = 48; if (Math.abs(diff) > cap) { this.#dmdb[i] += Math.sign(diff) * cap; - } else { + } else if (diff != 0) { this.#dmdb[i] = e; }; }); @@ -430,7 +432,6 @@ let Ns5rDisplay = class extends RootDisplay { ctx.fillStyle = ctx.fillStyle.slice(0, 7); }; ctx.fillRect(6 * pixX + 1, 12 + 6 * pixY, 5.5, 5.5); - self.pixelUpdates = (self.pixelUpdates || 0) + 1; }; }); // Commit to old display buffer. diff --git a/src/disp/disp_sc.mjs b/src/disp/disp_sc.mjs index ee80cc9e..fba8f86b 100644 --- a/src/disp/disp_sc.mjs +++ b/src/disp/disp_sc.mjs @@ -7,7 +7,9 @@ import {MxFont40} from "../basic/mxReader.js"; import { bgOrange, inactivePixel, - activePixel + activePixel, + lcdPixel, + lcdCache } from "./colour.js"; let cmpWidth = 7, @@ -22,6 +24,8 @@ let ScDisplay = class extends RootDisplay { #tmdb = new Uint8Array(665); // Text display #pmdb = new Uint8Array(735); // Param display #bmdb = new Uint8Array(256); // Bitmap display + #pixelLit = 255; + #pixelOff = 0; #linger = new Uint8Array(64); #ch = 0; xgFont = new MxFont40("./data/bitmaps/korg/font.tsv", "./data/bitmaps/xg/font.tsv"); @@ -321,6 +325,7 @@ let ScDisplay = class extends RootDisplay { ctx.fillStyle = activePixel; }; ctx.fillText("L", 248, 233); + self.pixelUpdates = (self.pixelUpdates || 0) + 1; }; }; diff --git a/test/index.htm b/test/index.htm index 582016f1..5a11c083 100644 --- a/test/index.htm +++ b/test/index.htm @@ -34,19 +34,19 @@

          List of Octavia demos

          Text UI (for experimenting)
        • - Fake YAMAHA MU screen (has pixel blur) + Emulated YAMAHA MU screen (has pixel blur)
        • - Fake Roland SC screen (has pixel blur) + Emulated Roland SC screen (lazy pixel blur)
        • - Fake KORG NS5R screen (lazy pixel blur) + Emulated KORG NS5R screen (lazy pixel blur)
        • - Fake YAMAHA QY screen (no pixel blur) + Emulated YAMAHA QY screen (no pixel blur)
        • - Fake YAMAHA PSR screen (has pixel blur) + Emulated YAMAHA PSR screen (has pixel blur)
        • Cambiare (no blur) From 3f6615afd7676d53186a3394a76543e73a69e065 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 30 May 2023 16:58:21 +0000 Subject: [PATCH 13/31] Before optimizing fake SC (and regretting it) --- src/disp/disp_n5.mjs | 18 ++++++++++++------ src/fakeNs5r/index.js | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/disp/disp_n5.mjs b/src/disp/disp_n5.mjs index 4ce3fdf2..3df0a4e0 100644 --- a/src/disp/disp_n5.mjs +++ b/src/disp/disp_n5.mjs @@ -403,12 +403,18 @@ let Ns5rDisplay = class extends RootDisplay { }; // Transitional this.#nmdb.forEach((e, i) => { - let diff = e - this.#dmdb[i], - cap = 48; - if (Math.abs(diff) > cap) { - this.#dmdb[i] += Math.sign(diff) * cap; - } else if (diff != 0) { - this.#dmdb[i] = e; + if (this.useBlur) { + let diff = e - this.#dmdb[i], + cap = 48; + if (Math.abs(diff) > cap) { + this.#dmdb[i] += Math.sign(diff) * cap; + } else if (diff != 0) { + this.#dmdb[i] = e; + }; + } else { + if (this.#dmdb[i] != e) { + this.#dmdb[i] = e; + }; }; }); // Commit to display accordingly. diff --git a/src/fakeNs5r/index.js b/src/fakeNs5r/index.js index 6cc87f92..1f5526a0 100644 --- a/src/fakeNs5r/index.js +++ b/src/fakeNs5r/index.js @@ -112,7 +112,7 @@ getBlobFrom(`list.tsv`).then(async (response) => { // Start the visualizers self.sysexBitmap = sysexBitmap; -self.visualizer = new Ns5rDisplay(); +self.visualizer = new Ns5rDisplay({useBlur: true}); visualizer.addEventListener("reset", function (e) { console.info("Processor reset."); }); From a2b4140dd19f960e27ddbae61fe7533a8b986fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 30 May 2023 18:07:53 +0000 Subject: [PATCH 14/31] Optimized SC. --- dist/cambiare.mjs | 2 +- dist/state.mjs | 2 +- dist/xp_basic.mjs | 2 +- dist/xp_state.mjs | 12 +- src/disp/disp_n5.mjs | 3 +- src/disp/disp_sc.mjs | 296 +++++++++++++++++++++++-------------------- src/fakeSc/index.js | 2 +- src/state/index.mjs | 3 + test/index.htm | 8 +- 9 files changed, 178 insertions(+), 152 deletions(-) diff --git a/dist/cambiare.mjs b/dist/cambiare.mjs index c3047080..a8615e4b 100644 --- a/dist/cambiare.mjs +++ b/dist/cambiare.mjs @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],ce=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},le=function(e,n,c){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,c){let o=[],t=c==!1?n.readIntVLV():c;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,o=0;for(let t=0;t>a&1)<<7,s=e[t];s+=r,t%8!=0?(n(s,c,e),c++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],M=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],c=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(c,t)):o==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",c="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${c}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#l=new Uint8Array(g.ch);#a=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#r=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#k=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#M=new Uint8Array(g.ch);#B=0;#i=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#T=new Uint8Array(g.ch);#U=new Uint8Array(128);#S=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#C="";#L=0;#Y=0;#x=!0;#c=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(c==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let c=e*128+n,o=this.#f.lastIndexOf(c);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[c]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let o=e*128+n,t=0;for(this.#k[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,c)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[c]=o;let t=this.#f[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,c,o)=>{let t=n>>7,a=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,a)})}};#J={8:function(e){let n=e.channel,c=e.data[0];this.#u.nOff(n,c)},9:function(e){let n=e.channel;this.#n[n]=1;let c=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,c,o):this.#u.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#f.indexOf(c)>-1&&(this.#d[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let c=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#k[n]=1,this.#u.ano(n);return}case 127:{this.#k[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let a=this.#e[g.cc*t];(a==56||a==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[c+u[99]],t=this.#e[c+u[98]];if(o==1){let a=Be.indexOf(t);if(a>-1)this.#e[c+u[71+a]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=ge.indexOf(t);r>-1?this.#K[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let r=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#a[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#a[n]]}.`):this.#j[(r*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#a[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[c+u[100]]];this.#e[c+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#i[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&X[this.#e[c+100]]!=null&&(this.#i[n*g.rpn+X[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#r[n]=e.data,this.#T[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#f.forEach(function(o){let t=o>>7;c==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:c,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let c=n[0],o=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(c,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#V.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#R.run(n,c,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,c)=>{this.#D.run(n,c,e)},67:(e,n,c)=>{this.#v.run(n,c,e)},68:(e,n,c)=>{this.#z.run(n,c,e)},71:(e,n,c)=>{this.#X.run(n,c,e)},126:(e,n,c)=>{this.#_.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#F.run(n,c,e)}};#_;#F;#v;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#l.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,c=this.#e.subarray(n,n+g.cc);return c[u[0]]=c[u[0]]||this.#N,c[u[32]]=c[u[32]]||this.#E,c}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=M[c])}getPitch(){return this.#I}getProgram(){return this.#r}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,c=this;return c.#f.forEach(function(o,t){let a=Math.floor(o/128),r=o%128;e==a&&c.#d[o]>0&&n.set(r,{v:c.#d[o],s:c.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#C,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let c=Math.floor(n/128);e.#d[n]>e.#M[c]&&(e.#M[c]=e.#d[n])}),this.#M}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,o){e[o]=Math.floor(c*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#i}getNrpn(){return this.#K}getVoice(e,n,c,o){let t=e||this.#N,a=n,r=c||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let s=this.userBank.get(t,a,r,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let i=parseInt(s.name.slice(5)),h=i*g.cmt,d="";this.#A.subarray(h,h+10).forEach(l=>{l>31&&(d+=String.fromCharCode(l))}),this.userBank.load(`MSB LSB PRG +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],ce=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},le=function(e,n,c){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,c){let o=[],t=c==!1?n.readIntVLV():c;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,o=0;for(let t=0;t>a&1)<<7,s=e[t];s+=r,t%8!=0?(n(s,c,e),c++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],M=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],c=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(c,t)):o==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",c="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${c}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#l=new Uint8Array(g.ch);#a=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#r=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#k=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#M=new Uint8Array(g.ch);#B=0;#i=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#T=new Uint8Array(g.ch);#U=new Uint8Array(128);#S=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#C="";#L=0;#Y=0;#x=!0;#c=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(c==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let c=e*128+n,o=this.#f.lastIndexOf(c);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[c]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let o=e*128+n,t=0;for(this.#k[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,c)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[c]=o;let t=this.#f[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,c,o)=>{let t=n>>7,a=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,a)})}};#J={8:function(e){let n=e.channel,c=e.data[0];this.#u.nOff(n,c)},9:function(e){let n=e.channel;this.#n[n]=1;let c=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,c,o):this.#u.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#f.indexOf(c)>-1&&(this.#d[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let c=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#k[n]=1,this.#u.ano(n);return}case 127:{this.#k[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let a=this.#e[g.cc*t];(a==56||a==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[c+u[99]],t=this.#e[c+u[98]];if(o==1){let a=Be.indexOf(t);if(a>-1)this.#e[c+u[71+a]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=ge.indexOf(t);r>-1?this.#K[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let r=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#a[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#a[n]]}.`):this.#j[(r*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#a[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[c+u[100]]];this.#e[c+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#i[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&X[this.#e[c+100]]!=null&&(this.#i[n*g.rpn+X[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#r[n]=e.data,this.#T[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#f.forEach(function(o){let t=o>>7;c==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:c,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let c=n[0],o=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(c,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#V.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#R.run(n,c,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,c)=>{this.#D.run(n,c,e)},67:(e,n,c)=>{this.#v.run(n,c,e)},68:(e,n,c)=>{this.#z.run(n,c,e)},71:(e,n,c)=>{this.#X.run(n,c,e)},126:(e,n,c)=>{this.#_.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#F.run(n,c,e)}};#_;#F;#v;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#l.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,c=this.#e.subarray(n,n+g.cc);return c[u[0]]=c[u[0]]||this.#N,c[u[32]]=c[u[32]]||this.#E,c}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=M[c])}getPitch(){return this.#I}getProgram(){return this.#r}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,c=this;return c.#f.forEach(function(o,t){let a=Math.floor(o/128),r=o%128;e==a&&c.#d[o]>0&&n.set(r,{v:c.#d[o],s:c.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#C,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let c=Math.floor(n/128);e.#d[n]>e.#M[c]&&(e.#M[c]=e.#d[n])}),this.#M}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,o){e[o]=Math.floor(c*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#i}getNrpn(){return this.#K}getVoice(e,n,c,o){let t=e||this.#N,a=n,r=c||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let s=this.userBank.get(t,a,r,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let i=parseInt(s.name.slice(5)),h=i*g.cmt,d="";this.#A.subarray(h,h+10).forEach(l=>{l>31&&(d+=String.fromCharCode(l))}),this.userBank.load(`MSB LSB PRG 0 127 ${a} ${d}`,!0),s.name=d,s.ending=" "}return(s.ending!=" "||!s.name.length)&&(s=this.baseBank.get(t,a,r,o)),s}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#r[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#T[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#i[n]+(this.#i[n+3]-64)+((this.#i[n+1]<<7)+this.#i[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,o=3200){let t=this,a;t.#C=" ".repeat(c),e.forEach(r=>{t.#C+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#L=Date.now()+3200,t.#C=t.#C.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,s,i)=>{i[s]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let c=this.#b[n];if(c){if(I.indexOf(c)>=0)return this.#e[e*g.cc+u[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#r.fill(0),this.#d.fill(0),this.#f.fill(0),this.#M.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#C="",this.#h=0,this.#o=0,this.#g.fill(0),this.#c=!1,this.#Y=0,this.#x=!0,this.#l.forEach(function(n,c,o){o[c]=c}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#H.fill(0)),this.#e[g.cc*9]=M[0],this.#e[g.cc*25]=M[0],this.#e[g.cc*41]=M[0],this.#e[g.cc*57]=M[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#T.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=c,this.#o=0,this.#N=fe[0][c],this.#E=fe[1][c];for(let a=0;a0&&this.#e[a*g.cc+u[0]]==M[o]&&(this.#e[a*g.cc]=M[c]);switch(this.initOnReset,c){case m.mt32:{V.forEach((a,r)=>{let s=r+1;this.#n[s]||(this.#r[s]=a,this.#e[s*g.cc+u[91]]=127)});break}}let t;switch(c){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(o=>{e.channel=o,c=!0,this.#J[e.type].call(this,e)}),c||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 diff --git a/dist/state.mjs b/dist/state.mjs index e0f1e6cb..b9b512b1 100644 --- a/dist/state.mjs +++ b/dist/state.mjs @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,o){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,o,e),o++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var le={length:A.length};A.forEach((e,n)=>{le[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],o=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(o,t)):f==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},oe=function(e,n="",o="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${o}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#o=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#l=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#c=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(o==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let o=e*128+n,f=this.#c.lastIndexOf(o);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#l[o],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#l[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#c[f]=0,this.#l[o]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#c[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_HELD){let f=this.#c[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#c[o]=0,this.#l[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,o)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[o]=f;let t=this.#c[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#l[t],state:f})}})},soOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#c[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#c[o]=0,this.#l[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#c.forEach((n,o,f)=>{let t=n>>7,a=n&127;n==0&&this.#l[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,o=e.data[0];this.#h.nOff(n,o)},9:function(e){let n=e.channel;this.#o[n]=1;let o=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,o,f):this.#h.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#c.indexOf(o)>-1&&(this.#l[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#o[n]=1);break}e.data[1]&&(this.#o[n]=1);break}default:{this.#o[n]=1;break}}})();let o=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[o+d[99]],t=this.#e[o+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[o+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+le[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[o+d[100]]];this.#e[o+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&I[this.#e[o+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#o[n]=1);break}default:this.#o[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#c.forEach(function(f){let t=f>>7;o==t&&(n.#l[f]=e.data,n.dispatchEvent("note",{part:o,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let o=n[0],f=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(o,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#F.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#T.run(n,o,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,o)=>{this.#U.run(n,o,e)},67:(e,n,o)=>{this.#w.run(n,o,e)},68:(e,n,o)=>{this.#V.run(n,o,e)},71:(e,n,o)=>{this.#K.run(n,o,e)},126:(e,n,o)=>{this.#I.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#X.run(n,o,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#o.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,o=this.#e.subarray(n,n+u.cc);return o[d[0]]=o[d[0]]||this.#H,o[d[32]]=o[d[32]]||this.#y,o}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[o])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,o=this;return o.#c.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&o.#l[f]>0&&n.set(r,{v:o.#l[f],s:o.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#c.forEach(function(n){let o=Math.floor(n/128);e.#l[n]>e.#C[o]&&(e.#C[o]=e.#l[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,f){e[f]=Math.floor(o*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,o,f){let t=e||this.#H,a=n,r=o||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),l=s*u.cmt,c="";this.#N.subarray(l,l+10).forEach(h=>{h>31&&(c+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,o){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,o,e),o++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var le={length:A.length};A.forEach((e,n)=>{le[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],o=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(o,t)):f==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},oe=function(e,n="",o="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${o}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#o=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#l=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#c=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(o==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let o=e*128+n,f=this.#c.lastIndexOf(o);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#l[o],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#l[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#c[f]=0,this.#l[o]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#c[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_HELD){let f=this.#c[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#c[o]=0,this.#l[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,o)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[o]=f;let t=this.#c[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#l[t],state:f})}})},soOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#c[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#c[o]=0,this.#l[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#c.forEach((n,o,f)=>{let t=n>>7,a=n&127;n==0&&this.#l[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,o=e.data[0];this.#h.nOff(n,o)},9:function(e){let n=e.channel;this.#o[n]=1;let o=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,o,f):this.#h.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#c.indexOf(o)>-1&&(this.#l[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#o[n]=1);break}e.data[1]&&(this.#o[n]=1);break}default:{this.#o[n]=1;break}}})();let o=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[o+d[99]],t=this.#e[o+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[o+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+le[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[o+d[100]]];this.#e[o+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&I[this.#e[o+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#o[n]=1);break}default:this.#o[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#c.forEach(function(f){let t=f>>7;o==t&&(n.#l[f]=e.data,n.dispatchEvent("note",{part:o,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let o=n[0],f=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(o,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#F.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#T.run(n,o,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,o)=>{this.#U.run(n,o,e)},67:(e,n,o)=>{this.#w.run(n,o,e)},68:(e,n,o)=>{this.#V.run(n,o,e)},71:(e,n,o)=>{this.#K.run(n,o,e)},126:(e,n,o)=>{this.#I.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#X.run(n,o,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#o.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,o=this.#e.subarray(n,n+u.cc);return o[d[0]]=o[d[0]]||this.#H,o[d[32]]=o[d[32]]||this.#y,o}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[o])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,o=this;return o.#c.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&o.#l[f]>0&&n.set(r,{v:o.#l[f],s:o.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#c.forEach(function(n){let o=Math.floor(n/128);e.#l[n]>e.#C[o]&&(e.#C[o]=e.#l[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,f){e[f]=Math.floor(o*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,o,f){let t=e||this.#H,a=n,r=o||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),l=s*u.cmt,c="";this.#N.subarray(l,l+10).forEach(h=>{h>31&&(c+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG 0 127 ${a} ${c}`,!0),i.name=c,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,f=3200){let t=this,a;t.#M=" ".repeat(o),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let o=this.#R[n];if(o){if(U.indexOf(o)>=0)return this.#e[e*u.cc+d[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#o.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#l.fill(0),this.#c.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#S=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,o,f){f[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=o,this.#p=0,this.#H=se[0][o],this.#y=se[1][o];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[o]);switch(this.initOnReset,o){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#o[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(o){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(f=>{e.channel=f,o=!0,this.#j[e.type].call(this,e)}),o||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index 0afa9838..d26ae93f 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -152,5 +152,5 @@ ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}s>99&&(i=90 ${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ie(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ie(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,D)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,D)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,he).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,me)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,me)[i-1<<4];if(b<3)if(t(e,ce)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,ce)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,te)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,me)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,me)[d-1<<4];if(y<3)if(t(e,ce)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,te)[(d-1)*$.cmt+b]=s),b<10&&(t(e,ce)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let E=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME 000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,Ee)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,le,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,D)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,D)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,ne,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,E=0,x=y0;)t(e,W,de)[k*32+y*7+(x-E)]=v&1,v=v>>1,E++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ie(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ie(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,D)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=88,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%126;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:break;case y==12:break;case y==13:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,Z,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,J).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,J).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0)},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,ee)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,Z))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,Z),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,Z)}return e}getChType(){return t(this,O)}setChType(e,n,h=t(this,P),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,Z);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,Ee).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,Z,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,J).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,J).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0)},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,ee)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,Z))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,Z),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,Z)}return e}getChSource(){return t(this,H)}getChType(){return t(this,O)}setChType(e,n,h=t(this,P),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,Z);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,Ee).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG 0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,D)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,P)]);if(t(this,ce)[e])switch(t(this,P)){case M.mt32:n.ending="~",n.name="",t(this,te).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,le," ".repeat(h)),e.forEach(o=>{w(r,le,t(r,le)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,le,t(r,le).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,P,0),w(this,ve,0),w(this,Z,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,D).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,oe).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,T,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,le,""),w(this,ne,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,O).fill(this.CH_MELODIC),t(this,O)[9]=this.CH_DRUM1,t(this,O)[25]=this.CH_DRUM3,t(this,O)[41]=this.CH_DRUMS,t(this,O)[57]=this.CH_DRUMS,t(this,O)[73]=this.CH_DRUM5,t(this,O)[89]=this.CH_DRUM7,t(this,O)[105]=this.CH_DRUMS,t(this,O)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,Ee).fill(0),t(this,me).fill(0),t(this,te).fill(0),t(this,ce).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,P)==0||n){let c=t(this,P);w(this,P,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,Z,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,O)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,D)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,oe).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,T).length>100&&t(this,T).splice(100,t(this,T).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},P=new WeakMap,j=new WeakMap,ne=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,O=new WeakMap,p=new WeakMap,ue=new WeakMap,D=new WeakMap,L=new WeakMap,ee=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,oe=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,ce=new WeakMap,me=new WeakMap,te=new WeakMap,Ve=new WeakMap,Ee=new WeakMap,Q=new WeakMap,ve=new WeakMap,Z=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,le=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,T=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,J=new WeakMap,he=new WeakMap,ge=new WeakMap,Pe=new WeakMap,De=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);R();R();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){m(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),Et=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);m(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new Et(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new Et(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let E={type:y.type,data:y.data,track:b,part:0};y.type>14?E.meta=y.metaType:E.part=y.channel,e.push(new rr(a/c/h*60+o,E))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");m(this,qe,void 0);m(this,Ue,"");m(this,Le,[]);m(this,Be,new Uint8ClampedArray(128));m(this,st,new Uint8ClampedArray(128));m(this,xe,.5);m(this,je,120);m(this,F,4);m(this,Ne,4);m(this,ye,0);m(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((E,x)=>{t(this,st)[x]=E}),r.device.newStrength(),n.forEach(function(E){let x=E.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),E.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(E,x,A){A[x]=Math.max(t(r,st)[x],E);let V=A[x]-t(r,Be)[x],ae=g.length*x;if(V>=0){let lt=4*.25**(f[ae+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[ae+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(E,x){E&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; diff --git a/dist/xp_state.mjs b/dist/xp_state.mjs index aea2a4f3..78b33a33 100644 --- a/dist/xp_state.mjs +++ b/dist/xp_state.mjs @@ -1,5 +1,5 @@ -var Rt=Object.defineProperty;var Ot=(b,e,n)=>e in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var C=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var I,rt,it=(rt=class{constructor(){E(this,I,{})}addEventListener(b,e){t(this,I)[b]||(t(this,I)[b]=[]),t(this,I)[b].unshift(e)}removeEventListener(b,e){if(t(this,I)[b]){let n=t(this,I)[b].indexOf(e);n>-1&&t(this,I)[b].splice(n,1),t(this,I)[b].length<1&&delete t(this,I)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,I)[b])==null?void 0:d.length)>0&&t(this,I)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},I=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);C(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[2]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` -`).forEach(function(o,i){let r=o.split(" "),c=[];i==0?r.forEach(function(h,f){d[Dt.indexOf(h)]=f}):r.forEach(async function(h,f){var g;f>2?(t(l,F)[c[d[1]]]=t(l,F)[c[d[1]]]||[],(!((g=t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]])!=null&&g.length)||e)&&(t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]]=r[3],s++),a++):c.push(parseInt(r[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${s} loaded.`)}clearRange(b){let e=b.prg!=null?b.prg.constructor==Array?b.prg:[b.prg,b.prg]:[0,127],n=b.msb!=null?b.msb.constructor==Array?b.msb:[b.msb,b.msb]:[0,127],l=b.lsb!=null?b.lsb.constructor==Array?b.lsb:[b.lsb,b.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let a=l[0];a<=l[1];a++){let o=s+a;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let b=0;b<128;b++)t(this,F).push([""])}async loadFiles(...b){this.init();let e=this;b.forEach(async function(n,l){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,ct=(ot=class{constructor(){E(this,Oe,{});C(this,"context")}set(b,e){t(this,Oe)[b]=e}has(b){return!!t(this,Oe)[b]}async read(b,e){if(!this.has(b))throw new Error(`No decoder registered for "${b}"`);return await t(this,Oe)[b].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(b,e){let n=!0;return e.forEach((l,d)=>{n=n&&b[d]==l}),n},lt=function(b){let e=0;return b.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new ct;Ve.set("s7e",async function(b){let e=new Uint8Array(await b.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",l=[0,0,0,0],d=32,s=0,a=0,o=!0,i=[],r=0;for(;o;){let c=e.subarray(s);([()=>{Le.decode(c.subarray(0,4))=="YSFC"?(s+=80,a=1):s++},()=>{if(Pt(c.subarray(0,4),l))i.forEach((h,f,g)=>{let y=lt(e.subarray(h.start+4,h.start+8));h.length=y}),a=2;else{let h=Le.decode(c.subarray(0,4)),f=lt(c.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[r],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;ye in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var M=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var I,rt,it=(rt=class{constructor(){E(this,I,{})}addEventListener(b,e){t(this,I)[b]||(t(this,I)[b]=[]),t(this,I)[b].unshift(e)}removeEventListener(b,e){if(t(this,I)[b]){let n=t(this,I)[b].indexOf(e);n>-1&&t(this,I)[b].splice(n,1),t(this,I)[b].length<1&&delete t(this,I)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,I)[b])==null?void 0:d.length)>0&&t(this,I)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},I=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);M(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[2]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` +`).forEach(function(o,i){let r=o.split(" "),c=[];i==0?r.forEach(function(h,f){d[Dt.indexOf(h)]=f}):r.forEach(async function(h,f){var g;f>2?(t(l,F)[c[d[1]]]=t(l,F)[c[d[1]]]||[],(!((g=t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]])!=null&&g.length)||e)&&(t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]]=r[3],s++),a++):c.push(parseInt(r[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${s} loaded.`)}clearRange(b){let e=b.prg!=null?b.prg.constructor==Array?b.prg:[b.prg,b.prg]:[0,127],n=b.msb!=null?b.msb.constructor==Array?b.msb:[b.msb,b.msb]:[0,127],l=b.lsb!=null?b.lsb.constructor==Array?b.lsb:[b.lsb,b.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let a=l[0];a<=l[1];a++){let o=s+a;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let b=0;b<128;b++)t(this,F).push([""])}async loadFiles(...b){this.init();let e=this;b.forEach(async function(n,l){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,ct=(ot=class{constructor(){E(this,Oe,{});M(this,"context")}set(b,e){t(this,Oe)[b]=e}has(b){return!!t(this,Oe)[b]}async read(b,e){if(!this.has(b))throw new Error(`No decoder registered for "${b}"`);return await t(this,Oe)[b].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(b,e){let n=!0;return e.forEach((l,d)=>{n=n&&b[d]==l}),n},lt=function(b){let e=0;return b.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new ct;Ve.set("s7e",async function(b){let e=new Uint8Array(await b.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",l=[0,0,0,0],d=32,s=0,a=0,o=!0,i=[],r=0;for(;o;){let c=e.subarray(s);([()=>{Le.decode(c.subarray(0,4))=="YSFC"?(s+=80,a=1):s++},()=>{if(Pt(c.subarray(0,4),l))i.forEach((h,f,g)=>{let y=lt(e.subarray(h.start+4,h.start+8));h.length=y}),a=2;else{let h=Le.decode(c.subarray(0,4)),f=lt(c.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[r],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;y=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});var Be=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ge=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],At=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],De=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ht=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ft=function(b){let e=.1,n=-.3;return b>66?(e=5,n=315):b>56?(e=1,n=47):b>46&&(e=.5,n=18.5),e*b-n},dt=function(b){return b>105?At[b-106]:b>100?b*1.1-100:b/10},ut=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),We={};`hi*, @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(b=>{let e=b.split(",");We[e[0]]=e[1]});var bt=function(b){let e=b;b[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;e.indexOf(l)>-1;)e=e.replace(l,l[0])});for(let l in We)e=e.replaceAll(l,We[l]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(b){return b?b<96?`cc${b}`:["aftertouch","velocity","pitch bend"][b-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",b=>"aiueo"[b]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",b=>["off","LPF","HPF"][b]],94984:["noise type",b=>["white","pink"][b]],94987:["disc type",b=>["LP","SP","EP","RND"]],94990:["hum type",b=>`${b+5}0Hz`],94993:["M/S",b=>["mono","stereo"][b]]},Je=function(b){return Ut[(b[0]-32<<8)+b[1]]||`0x${b[0].toString(16).padStart(2,"0")}${b[1].toString(16).padStart(2,"0")}`},yt=function(b,e,n){let l=(b[0]-32<<16)+(b[1]<<8)+e,d=Nt[l]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(b=64){return Math.round(2e3*Math.log10(b/64))/100};var wt=function(b){let e=0;return b.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(b,e){let n=0,l=0;for(let d=0;d>s&1)<<7,o=b[d];o+=a,d%8!=0?(e(o,n,b),n++):l=b[d]}},_e=function(b){let e=Math.floor(b*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Ie=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((b,e)=>{x[b]=e});var p={length:Ie.length};Ie.forEach((b,e)=>{p[b]=e});var Ct={length:qe.length};qe.forEach((b,e)=>{Ct[b]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(b){let e=[],n=0;return b==null||b.forEach(function(l,d){l==247?e.push(b.subarray(n,d)):l==240&&(n=d+1)}),e.length||e.push(b.subarray(0)),q()&&console.debug(e),e},xt=function(b,e="",n="",l=2){return b?`${e}${b.toString().padStart(l,"0")}${n}`:""},$={ch:128,cc:Ie.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,u,ce,O,A,W,U,L,pe,se,me,v,Pe,Fe,ae,ge,Y,Ae,$e,V,ye,Q,_,le,Ue,Ne,re,we,He,J,D,Xe,tt,M,he,Ee,G,ve,N,Ke,ze,xe,Me,j,ie,fe,Ce,Te,Re,Mt,ms=(Mt=class extends it{constructor(){super();E(this,z);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,u,new Uint8Array($.ch*$.cc));E(this,ce,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,W,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ae,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,Y,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Q,0);E(this,_,100);E(this,le,0);E(this,Ue,500);E(this,Ne,0);E(this,re,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,M,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));C(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new je("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let l=e*128+n,d=t(this,U).lastIndexOf(l);d>-1&&(t(this,u)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_HELD})):t(this,u)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[l]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let d=e*128+n,s=0;for(t(this,W)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=l,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,l)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[l]=d;let s=t(this,U)[l];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,l,d)=>{let s=n>>7,a=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,a)})}});E(this,Ke,{8:function(e){let n=e.channel,l=e.data[0];t(this,N).nOff(n,l)},9:function(e){let n=e.channel;t(this,P)[n]=1;let l=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,l,d):t(this,N).nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];t(this,U).indexOf(l)>-1&&(t(this,A)[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let l=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,u)[d+p[1]]=0,t(this,u)[d+p[5]]=0,t(this,u)[d+p[64]]=0,t(this,u)[d+p[65]]=0,t(this,u)[d+p[66]]=0,t(this,u)[d+p[67]]=0,t(this,u)[d+p[11]]=127,t(this,u)[d+p[101]]=127,t(this,u)[d+p[100]]=127,t(this,u)[d+p[99]]=127,t(this,u)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,W)[n]=1,t(this,N).ano(n);return}case 127:{t(this,W)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0)e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,R)==x.gs)e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,R)==x.gm)e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,R)==x.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let d=0;for(let s=0;s<16;s++){let a=t(this,u)[$.cc*s];(a==56||a==62)&&d++}d>14&&this.switchMode("ag10",!0)}}switch(t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,u)[l+p[99]],s=t(this,u)[l+p[98]];if(d==1){let a=Bt.indexOf(s);if(a>-1)t(this,u)[l+p[71+a]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Ct[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,u)[l+p[100]]];t(this,u)[l+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,u)[l+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,u)[l+101]==0&&et[t(this,u)[l+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,u)[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,u)[l+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,ae)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;t(this,U).forEach(function(d){let s=d>>7;l==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:l,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let l=n[0],d=n[1];(t(this,ze)[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(l,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,le,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,l)=>{t(this,Ce).run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)t(this,ie).run(n,l,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,l)=>{t(this,fe).run(n,l,e)},67:(e,n,l)=>{t(this,j).run(n,l,e)},68:(e,n,l)=>{t(this,Re).run(n,l,e)},71:(e,n,l)=>{t(this,Te).run(n,l,e)},126:(e,n,l)=>{t(this,xe).run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),t(this,Me).run(n,l,e)}});E(this,xe,void 0);E(this,Me,void 0);E(this,j,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Ce,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(b=>{let e=b.split(",");We[e[0]]=e[1]});var bt=function(b){let e=b;b[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;e.indexOf(l)>-1;)e=e.replace(l,l[0])});for(let l in We)e=e.replaceAll(l,We[l]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(b){return b?b<96?`cc${b}`:["aftertouch","velocity","pitch bend"][b-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",b=>"aiueo"[b]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",b=>["off","LPF","HPF"][b]],94984:["noise type",b=>["white","pink"][b]],94987:["disc type",b=>["LP","SP","EP","RND"]],94990:["hum type",b=>`${b+5}0Hz`],94993:["M/S",b=>["mono","stereo"][b]]},Je=function(b){return Ut[(b[0]-32<<8)+b[1]]||`0x${b[0].toString(16).padStart(2,"0")}${b[1].toString(16).padStart(2,"0")}`},yt=function(b,e,n){let l=(b[0]-32<<16)+(b[1]<<8)+e,d=Nt[l]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(b=64){return Math.round(2e3*Math.log10(b/64))/100};var wt=function(b){let e=0;return b.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(b,e){let n=0,l=0;for(let d=0;d>s&1)<<7,o=b[d];o+=a,d%8!=0?(e(o,n,b),n++):l=b[d]}},_e=function(b){let e=Math.floor(b*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Ie=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((b,e)=>{x[b]=e});var p={length:Ie.length};Ie.forEach((b,e)=>{p[b]=e});var Mt={length:qe.length};qe.forEach((b,e)=>{Mt[b]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(b){let e=[],n=0;return b==null||b.forEach(function(l,d){l==247?e.push(b.subarray(n,d)):l==240&&(n=d+1)}),e.length||e.push(b.subarray(0)),q()&&console.debug(e),e},xt=function(b,e="",n="",l=2){return b?`${e}${b.toString().padStart(l,"0")}${n}`:""},$={ch:128,cc:Ie.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,u,ce,O,A,W,U,L,pe,se,me,v,Pe,Fe,ae,ge,Y,Ae,$e,V,ye,Q,_,le,Ue,Ne,re,we,He,J,D,Xe,tt,C,he,Ee,G,ve,N,Ke,ze,xe,Ce,j,ie,fe,Me,Te,Re,Ct,ms=(Ct=class extends it{constructor(){super();E(this,z);M(this,"NOTE_IDLE",0);M(this,"NOTE_ATTACK",1);M(this,"NOTE_DECAY",2);M(this,"NOTE_SUSTAIN",3);M(this,"NOTE_HELD",4);M(this,"NOTE_RELEASE",5);M(this,"NOTE_SOSTENUTO_ATTACK",8);M(this,"NOTE_SOSTENUTO_DECAY",9);M(this,"NOTE_SOSTENUTO_SUSTAIN",10);M(this,"NOTE_SOSTENUTO_HELD",11);M(this,"CH_MELODIC",0);M(this,"CH_DRUMS",1);M(this,"CH_DRUM1",2);M(this,"CH_DRUM2",3);M(this,"CH_DRUM3",4);M(this,"CH_DRUM4",5);M(this,"CH_DRUM5",6);M(this,"CH_DRUM6",7);M(this,"CH_DRUM7",8);M(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,u,new Uint8Array($.ch*$.cc));E(this,ce,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,W,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ae,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,Y,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Q,0);E(this,_,100);E(this,le,0);E(this,Ue,500);E(this,Ne,0);E(this,re,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,C,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));M(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));M(this,"userBank",new je("gm"));M(this,"initOnReset",!1);M(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let l=e*128+n,d=t(this,U).lastIndexOf(l);d>-1&&(t(this,u)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_HELD})):t(this,u)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[l]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let d=e*128+n,s=0;for(t(this,W)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=l,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,l)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[l]=d;let s=t(this,U)[l];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,l,d)=>{let s=n>>7,a=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,a)})}});E(this,Ke,{8:function(e){let n=e.channel,l=e.data[0];t(this,N).nOff(n,l)},9:function(e){let n=e.channel;t(this,P)[n]=1;let l=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,l,d):t(this,N).nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];t(this,U).indexOf(l)>-1&&(t(this,A)[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let l=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,u)[d+p[1]]=0,t(this,u)[d+p[5]]=0,t(this,u)[d+p[64]]=0,t(this,u)[d+p[65]]=0,t(this,u)[d+p[66]]=0,t(this,u)[d+p[67]]=0,t(this,u)[d+p[11]]=127,t(this,u)[d+p[101]]=127,t(this,u)[d+p[100]]=127,t(this,u)[d+p[99]]=127,t(this,u)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,W)[n]=1,t(this,N).ano(n);return}case 127:{t(this,W)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0)e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(t(this,R)==x.gs)e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(t(this,R)==x.gm)e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(t(this,R)==x.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let d=0;for(let s=0;s<16;s++){let a=t(this,u)[$.cc*s];(a==56||a==62)&&d++}d>14&&this.switchMode("ag10",!0)}}switch(t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,u)[l+p[99]],s=t(this,u)[l+p[98]];if(d==1){let a=Bt.indexOf(s);if(a>-1)t(this,u)[l+p[71+a]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Mt[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,u)[l+p[100]]];t(this,u)[l+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,u)[l+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,u)[l+101]==0&&et[t(this,u)[l+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,u)[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,u)[l+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,ae)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;t(this,U).forEach(function(d){let s=d>>7;l==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:l,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let l=n[0],d=n[1];(t(this,ze)[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(l,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,le,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,l)=>{t(this,Me).run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)t(this,ie).run(n,l,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,l)=>{t(this,fe).run(n,l,e)},67:(e,n,l)=>{t(this,j).run(n,l,e)},68:(e,n,l)=>{t(this,Re).run(n,l,e)},71:(e,n,l)=>{t(this,Te).run(n,l,e)},126:(e,n,l)=>{t(this,xe).run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),t(this,Ce).run(n,l,e)}});E(this,xe,void 0);E(this,Ce,void 0);E(this,j,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Me,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,10 +147,10 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,M).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,M).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,M).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,M).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,M).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let a=s.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,M).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,M).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,M).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,M).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,M).unshift(s.slice(1)):t(this,M)[0]+=s:(t(this,M)[0]=s,t(this,M).unshift(""))}},t(this,G)[2]=function(s){t(this,M).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,a){a<1&&t(this,le)<1&&t(this,M).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,a){t(this,M).unshift(`${xt(t(this,le),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,M).unshift(""):t(this,M)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,M).unshift(`${xt(t(this,le),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,M).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,le,s[0]+1)},t(this,G)[33]=function(s,a){console.debug(`Track ${a} requests to get assigned to output ${s}.`),t(e,Ee)[a]=s+1},t(this,G)[81]=function(s,a){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,a){t(e,ve).run(s,a)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,a){t(e,Ee)[a]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Me,new Z("universal realtime")),w(this,j,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Ce,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Me).default=n,t(this,j).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Ce).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Me).add([4,1],s=>{w(e,_,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,j).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,r)=>{a[r]=i};if(s.subarray(1).forEach((i,r)=>{let c=r+s[0];([o,o,o,o,h=>{w(this,_,h*129/16383*100)},h=>{},h=>{}][c]||(()=>{}))(i,r)}),s[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],s=>{let a="XG ";s[0]<32?(a+="reverb ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${ft(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(a+="chorus ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ht[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${dt(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${De[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${De[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(a+="variation ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(a+="variation ",s.subarray(1).forEach((o,i)=>{[r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},r=>{console.debug(`${a}to chorus: ${X(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((a,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,c=i-1&3,h=`XG EQ ${r} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${h}${a-64}dB`)},()=>{console.debug(`${h}${a} (raw)`)},()=>{console.debug(`${h}${a/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],s=>{let a=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((r,c)=>{([h=>{e.setEffectTypeRaw(3+a,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+a,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+c]||function(){})(r)})}).add([76,6,0],s=>{let a=s[0];a<64?e.setLetterDisplay(s.subarray(1),"XG letter display",a):w(e,we,Date.now())}).add([76,7,0],s=>{let a=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=$.cc*o,c=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,u)[r+p[0]]=f},()=>{t(e,u)[r+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${c}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{t(e,u)[r+p[128]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[76]]=f},()=>{t(e,u)[r+p[77]]=f},()=>{t(e,u)[r+p[78]]=f},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},()=>{t(e,u)[r+p[73]]=f},()=>{t(e,u)[r+p[75]]=f},()=>{t(e,u)[r+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,u)[r+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((c,h)=>{let f=h+i;switch(f){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${r}${g} control source: ${pt(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${r}${g} scale break point: ${c}`):console.debug(`${r}${g} depth: ${c-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,a)=>{let o=s[0],i="MU1000 System: ";s.subarray(1).forEach((r,c)=>{let h=o+c;h==8?console.debug(`${i}LCD contrast set to ${r}.`):h==18?(w(e,Q,r?126:0),console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):h>=64&&h<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.info(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.info(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!r),console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][h-64]()})}).add([73,10,0],(s,a)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let r=e.chRedir(0,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(s[1]<<5,a,!0);t(e,J)&&e.dispatchEvent("channelmin",r),t(e,J)&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let r=e.chRedir(o-16+(t(e,He)<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(o<36){let r=e.chRedir(o-32<<4,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),w(e,He,o-32)),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=`PLG-100SG CH${o+1} `,r=Date.now();if(s[1]==0){let c="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?c+=ut[f]||f.toString().padStart("0"):h+=f*13}),r>=t(e,Ne)&&t(e,M).unshift("SG Lyric: "),t(e,M)[0]+=`${bt(c)}`,w(e,Ne,r+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,j).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,j).add([89,0],(s,a,o)=>{if(e.eprom){let i=s[0],r=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)c[r+7*g+S]+=(h>>6-S&1)<<7;else c[r+7*g+y]=h})}}).add([89,1],(s,a,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,a,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;s.subarray(4).forEach((c,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)r[i+7*f+y]+=(c>>6-y&1)<<7;else r[i+7*f+g]=c})}}).add([89,3],(s,a,o)=>{}),t(this,j).add([39,48],(s,a,o)=>{}).add([43,0,0],(s,a,o)=>{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,()=>{w(this,_,c*129/16383*100)},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][f](c,f)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}).add([43,1,0],(s,a,o)=>{}).add([43,2],(s,a,o)=>{let i=e.chRedir(s[0],a,!0),r=s[1],c=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,u)[c+p[0]]=f},()=>{t(e,u)[c+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+r]||(()=>{}))(f,g+r):g<21||(g<47?([()=>{t(e,W)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,u)[c+p[7]]=f},!1,!1,()=>{t(e,u)[c+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,u)[c+p[128]]=f},()=>{t(e,u)[c+p[93]]=f},()=>{t(e,u)[c+p[91]]=f},()=>{t(e,u)[c+p[94]]=f},()=>{t(e,u)[c+p[76]]=f},()=>{t(e,u)[c+p[77]]=f},()=>{t(e,u)[c+p[74]]=f},()=>{t(e,u)[c+p[71]]=f},()=>{t(e,u)[c+p[73]]=f},()=>{t(e,u)[c+p[75]]=f},()=>{t(e,u)[c+p[72]]=f},()=>{t(e,u)[c+p[78]]=f}][g+r-21]||(()=>{}))(f,g+r):g<95||([()=>{t(e,u)[c+p[65]]=f},()=>{t(e,u)[c+p[5]]=f}][g+r-95]||(()=>{}))(f,g+r))})}).add([43,7,0],(s,a,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,a,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,r){let c=Math.floor(r/16),h=r%16,f=(h*3+c)*7,g=7,y=0;for(f-=h*5,c==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,a,o)=>{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,Q,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,a,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,g=>{w(this,_,g*129/16383*100)},g=>{},g=>{}][f](c,h)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,64,1],s=>{let a=s[0];if(a<16){let o="".padStart(a," ");s.subarray(1).forEach((i,r)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?s.subarray(1).forEach((o,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${o}ms`)},()=>{console.info(`${r}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)},()=>{console.debug(`${r}to delay: ${X(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?s.subarray(1).forEach((o,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],s=>{let a="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let a="GS EFX ",o=function(i,r){let c=yt(t(e,V).subarray(10,12),r,i);c&&console.debug(`${a}${Je(t(e,V).subarray(10,12))} ${c}`)};s.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${X(i)}dB`)},()=>{console.debug(`${a}to chorus: ${X(i)}dB`)},()=>{console.debug(`${a}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][s[0]+r]||function(c,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+r)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var a;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(a=t(e,oe)[s[0]-1])!=null&&a.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let r=s.subarray(2);for(let c=0;c>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let l=function(s,a,o){let i=s[0],r=$.cc*a,c=$.rpn*a,h=`GS CH${a+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,u)[r+p[0]]=f},()=>{t(e,O)[a]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,W)[a]=+!f},!1,()=>{e.setChType(a,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[c+3]=f},!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},!1,!1,()=>{t(e,v)[c+1]=f},()=>{t(e,v)[c+2]=f},()=>{t(e,u)[r+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,a){let o=s[0],i=`GS CH${a+1} `;o<2?s.subarray(1).forEach((r,c)=>{[()=>{t(e,u)[$.cc*a+p[32]]=r},()=>{}][o+c]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((r,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][o+c-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,a)=>{l(s,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(s,a)=>{l(s,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(s,a)=>{l(s,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(s,a)=>{l(s,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(s,a)=>{l(s,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(s,a)=>{l(s,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(s,a)=>{l(s,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(s,a)=>{l(s,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(s,a)=>{l(s,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(s,a)=>{l(s,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(s,a)=>{l(s,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(s,a)=>{l(s,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(s,a)=>{l(s,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(s,a)=>{l(s,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(s,a)=>{l(s,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(s,a)=>{l(s,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(s,a)=>{d(s,e.chRedir(9,a,!0))}).add([66,18,64,65],(s,a)=>{d(s,e.chRedir(0,a,!0))}).add([66,18,64,66],(s,a)=>{d(s,e.chRedir(1,a,!0))}).add([66,18,64,67],(s,a)=>{d(s,e.chRedir(2,a,!0))}).add([66,18,64,68],(s,a)=>{d(s,e.chRedir(3,a,!0))}).add([66,18,64,69],(s,a)=>{d(s,e.chRedir(4,a,!0))}).add([66,18,64,70],(s,a)=>{d(s,e.chRedir(5,a,!0))}).add([66,18,64,71],(s,a)=>{d(s,e.chRedir(6,a,!0))}).add([66,18,64,72],(s,a)=>{d(s,e.chRedir(7,a,!0))}).add([66,18,64,73],(s,a)=>{d(s,e.chRedir(8,a,!0))}).add([66,18,64,74],(s,a)=>{d(s,e.chRedir(10,a,!0))}).add([66,18,64,75],(s,a)=>{d(s,e.chRedir(11,a,!0))}).add([66,18,64,76],(s,a)=>{d(s,e.chRedir(12,a,!0))}).add([66,18,64,77],(s,a)=>{d(s,e.chRedir(13,a,!0))}).add([66,18,64,78],(s,a)=>{d(s,e.chRedir(14,a,!0))}).add([66,18,64,79],(s,a)=>{d(s,e.chRedir(15,a,!0))}),t(this,fe).add([54,65],(s,a)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],r=e.chRedir(o&15,a,!0),c=$.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-1,t(e,u)[c+p[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-101,t(e,u)[c+p[0]]=56):(e.setChType(r,e.CH_DRUMS,x.x5d),t(e,O)[r]=vt[i-229]||0,t(e,u)[c+p[0]]=62))},()=>{t(e,u)[c+p[7]]=i},()=>{i<31&&(t(e,u)[c+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,u)[c+p[93]]=_e(i)},()=>{t(e,u)[c+p[91]]=_e(i)},()=>{t(e,v)[r*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[r*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[r*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=82,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,C).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,C).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,C).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,C).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,C).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let a=s.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,C).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,C).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,C).unshift(s.slice(1)):t(this,C)[0]+=s:(t(this,C)[0]=s,t(this,C).unshift(""))}},t(this,G)[2]=function(s){t(this,C).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,a){a<1&&t(this,le)<1&&t(this,C).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,a){t(this,C).unshift(`${xt(t(this,le),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,C).unshift(""):t(this,C)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,C).unshift(`${xt(t(this,le),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,C).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,le,s[0]+1)},t(this,G)[33]=function(s,a){console.debug(`Track ${a} requests to get assigned to output ${s}.`),t(e,Ee)[a]=s+1},t(this,G)[81]=function(s,a){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,a){t(e,ve).run(s,a)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,a){t(e,Ee)[a]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Ce,new Z("universal realtime")),w(this,j,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Me,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Ce).default=n,t(this,j).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Me).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Ce).add([4,1],s=>{w(e,_,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,j).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,r)=>{a[r]=i};if(s.subarray(1).forEach((i,r)=>{let c=r+s[0];([o,o,o,o,h=>{w(this,_,h*129/16383*100)},h=>{},h=>{}][c]||(()=>{}))(i,r)}),s[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],s=>{let a="XG ";s[0]<32?(a+="reverb ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${ft(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(a+="chorus ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ht[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${dt(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${De[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${De[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(a+="variation ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(a+="variation ",s.subarray(1).forEach((o,i)=>{[r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},r=>{console.debug(`${a}to chorus: ${X(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((a,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,c=i-1&3,h=`XG EQ ${r} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${h}${a-64}dB`)},()=>{console.debug(`${h}${a} (raw)`)},()=>{console.debug(`${h}${a/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],s=>{let a=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((r,c)=>{([h=>{e.setEffectTypeRaw(3+a,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+a,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+c]||function(){})(r)})}).add([76,6,0],s=>{let a=s[0];a<64?e.setLetterDisplay(s.subarray(1),"XG letter display",a):w(e,we,Date.now())}).add([76,7,0],s=>{let a=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=$.cc*o,c=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,u)[r+p[0]]=f},()=>{t(e,u)[r+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${c}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{t(e,u)[r+p[128]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[76]]=f},()=>{t(e,u)[r+p[77]]=f},()=>{t(e,u)[r+p[78]]=f},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},()=>{t(e,u)[r+p[73]]=f},()=>{t(e,u)[r+p[75]]=f},()=>{t(e,u)[r+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,u)[r+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((c,h)=>{let f=h+i;switch(f){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${r}${g} control source: ${pt(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${r}${g} scale break point: ${c}`):console.debug(`${r}${g} depth: ${c-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,a)=>{let o=s[0],i="MU1000 System: ";s.subarray(1).forEach((r,c)=>{let h=o+c;h==8?console.debug(`${i}LCD contrast set to ${r}.`):h==18?(w(e,Q,r?126:0),console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):h>=64&&h<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.info(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.info(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!r),console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][h-64]()})}).add([73,10,0],(s,a)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let r=e.chRedir(0,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(s[1]<<5,a,!0);t(e,J)&&e.dispatchEvent("channelmin",r),t(e,J)&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let r=e.chRedir(o-16+(t(e,He)<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(o<36){let r=e.chRedir(o-32<<4,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),w(e,He,o-32)),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=`PLG-100SG CH${o+1} `,r=Date.now();if(s[1]==0){let c="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?c+=ut[f]||f.toString().padStart("0"):h+=f*13}),r>=t(e,Ne)&&t(e,C).unshift("SG Lyric: "),t(e,C)[0]+=`${bt(c)}`,w(e,Ne,r+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,j).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,j).add([89,0],(s,a,o)=>{if(e.eprom){let i=s[0],r=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)c[r+7*g+S]+=(h>>6-S&1)<<7;else c[r+7*g+y]=h})}}).add([89,1],(s,a,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,a,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;s.subarray(4).forEach((c,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)r[i+7*f+y]+=(c>>6-y&1)<<7;else r[i+7*f+g]=c})}}).add([89,3],(s,a,o)=>{}),t(this,j).add([39,48],(s,a,o)=>{}).add([43,0,0],(s,a,o)=>{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,()=>{w(this,_,c*129/16383*100)},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][f](c,f)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}).add([43,1,0],(s,a,o)=>{}).add([43,2],(s,a,o)=>{let i=e.chRedir(s[0],a,!0),r=s[1],c=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,u)[c+p[0]]=f},()=>{t(e,u)[c+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+r]||(()=>{}))(f,g+r):g<21||(g<47?([()=>{t(e,W)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,u)[c+p[7]]=f},!1,!1,()=>{t(e,u)[c+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,u)[c+p[128]]=f},()=>{t(e,u)[c+p[93]]=f},()=>{t(e,u)[c+p[91]]=f},()=>{t(e,u)[c+p[94]]=f},()=>{t(e,u)[c+p[76]]=f},()=>{t(e,u)[c+p[77]]=f},()=>{t(e,u)[c+p[74]]=f},()=>{t(e,u)[c+p[71]]=f},()=>{t(e,u)[c+p[73]]=f},()=>{t(e,u)[c+p[75]]=f},()=>{t(e,u)[c+p[72]]=f},()=>{t(e,u)[c+p[78]]=f}][g+r-21]||(()=>{}))(f,g+r):g<95||([()=>{t(e,u)[c+p[65]]=f},()=>{t(e,u)[c+p[5]]=f}][g+r-95]||(()=>{}))(f,g+r))})}).add([43,7,0],(s,a,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,a,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,r){let c=Math.floor(r/16),h=r%16,f=(h*3+c)*7,g=7,y=0;for(f-=h*5,c==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,a,o)=>{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,Q,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,a,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,g=>{w(this,_,g*129/16383*100)},g=>{},g=>{}][f](c,h)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,64,1],s=>{let a=s[0];if(a<16){let o="".padStart(a," ");s.subarray(1).forEach((i,r)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?s.subarray(1).forEach((o,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${o}ms`)},()=>{console.info(`${r}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)},()=>{console.debug(`${r}to delay: ${X(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?s.subarray(1).forEach((o,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],s=>{let a="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let a="GS EFX ",o=function(i,r){let c=yt(t(e,V).subarray(10,12),r,i);c&&console.debug(`${a}${Je(t(e,V).subarray(10,12))} ${c}`)};s.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${X(i)}dB`)},()=>{console.debug(`${a}to chorus: ${X(i)}dB`)},()=>{console.debug(`${a}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][s[0]+r]||function(c,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+r)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var a;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(a=t(e,oe)[s[0]-1])!=null&&a.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let r=s.subarray(2);for(let c=0;c>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let l=function(s,a,o){let i=s[0],r=$.cc*a,c=$.rpn*a,h=`GS CH${a+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,u)[r+p[0]]=f},()=>{t(e,O)[a]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,W)[a]=+!f},!1,()=>{e.setChType(a,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[c+3]=f},!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},!1,!1,()=>{t(e,v)[c+1]=f},()=>{t(e,v)[c+2]=f},()=>{t(e,u)[r+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,a){let o=s[0],i=`GS CH${a+1} `;o<2?s.subarray(1).forEach((r,c)=>{[()=>{t(e,u)[$.cc*a+p[32]]=r},()=>{}][o+c]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((r,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][o+c-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,a)=>{l(s,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(s,a)=>{l(s,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(s,a)=>{l(s,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(s,a)=>{l(s,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(s,a)=>{l(s,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(s,a)=>{l(s,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(s,a)=>{l(s,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(s,a)=>{l(s,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(s,a)=>{l(s,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(s,a)=>{l(s,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(s,a)=>{l(s,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(s,a)=>{l(s,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(s,a)=>{l(s,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(s,a)=>{l(s,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(s,a)=>{l(s,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(s,a)=>{l(s,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(s,a)=>{d(s,e.chRedir(9,a,!0))}).add([66,18,64,65],(s,a)=>{d(s,e.chRedir(0,a,!0))}).add([66,18,64,66],(s,a)=>{d(s,e.chRedir(1,a,!0))}).add([66,18,64,67],(s,a)=>{d(s,e.chRedir(2,a,!0))}).add([66,18,64,68],(s,a)=>{d(s,e.chRedir(3,a,!0))}).add([66,18,64,69],(s,a)=>{d(s,e.chRedir(4,a,!0))}).add([66,18,64,70],(s,a)=>{d(s,e.chRedir(5,a,!0))}).add([66,18,64,71],(s,a)=>{d(s,e.chRedir(6,a,!0))}).add([66,18,64,72],(s,a)=>{d(s,e.chRedir(7,a,!0))}).add([66,18,64,73],(s,a)=>{d(s,e.chRedir(8,a,!0))}).add([66,18,64,74],(s,a)=>{d(s,e.chRedir(10,a,!0))}).add([66,18,64,75],(s,a)=>{d(s,e.chRedir(11,a,!0))}).add([66,18,64,76],(s,a)=>{d(s,e.chRedir(12,a,!0))}).add([66,18,64,77],(s,a)=>{d(s,e.chRedir(13,a,!0))}).add([66,18,64,78],(s,a)=>{d(s,e.chRedir(14,a,!0))}).add([66,18,64,79],(s,a)=>{d(s,e.chRedir(15,a,!0))}),t(this,fe).add([54,65],(s,a)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],r=e.chRedir(o&15,a,!0),c=$.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-1,t(e,u)[c+p[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-101,t(e,u)[c+p[0]]=56):(e.setChType(r,e.CH_DRUMS,x.x5d),t(e,O)[r]=vt[i-229]||0,t(e,u)[c+p[0]]=62))},()=>{t(e,u)[c+p[7]]=i},()=>{i<31&&(t(e,u)[c+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,u)[c+p[93]]=_e(i)},()=>{t(e,u)[c+p[91]]=_e(i)},()=>{t(e,v)[r*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[r*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[r*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=82,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` ${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}r>99&&(i=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,77,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=90,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<13600){let y=g%136;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` ${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,a)=>{e.switchMode("x5d",!0),ee(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,a)=>{e.switchMode("x5d",!0),ee(s,function(o,i,r,c){if(i<192){let h=e.chRedir(Math.floor(i/12),a,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,x.x5d),t(e,u)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,x.x5d),t(e,u)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,u)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,u)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,u)[f+p[91]]=_e(y),t(e,u)[f+p[93]]=_e(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,a,!0)}})}),t(this,ie).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1];s.subarray(2).forEach((c,h)=>{let f=h+r;t(e,ge)[f+(i-1)*16]=c,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,ae)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=c+40},()=>{t(e,v)[i*$.rpn+1]=c+14},()=>{t(e,v)[i*$.rpn]=c},!1,()=>{t(e,u)[$.cc*i+p[91]]=c?127:0},!1,()=>{t(e,u)[$.cc*i+p[7]]=c},()=>{t(e,u)[$.cc*i+p[10]]=Math.ceil(c*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1]+(s[0]<<7);r<10&&(t(e,ae)[i]=1),s.subarray(2).forEach((c,h)=>{let f=h+r;f<14&&(t(e,Y)[(i-1)*$.cmt+f]=c)})}).add([22,18,3],(s,a,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((r,c)=>{let h=c+i;t(e,ge)[h]=r;let f=e.chRedir(1+h>>4,a,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,ae)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=r+40},()=>{t(e,v)[f*$.rpn+1]=r+14},()=>{t(e,v)[f*$.rpn]=r},!1,()=>{t(e,u)[$.cc*f+p[91]]=r?127:0},!1,()=>{t(e,u)[$.cc*f+p[7]]=r},()=>{t(e,u)[$.cc*f+p[10]]=Math.ceil(r*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,a,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((r,c)=>{let h=c+i,f=e.chRedir(Math.floor(h/246+1),a,!0),g=h%246;g<14&&(t(e,Y)[(f-1)*$.cmt+g]=r),g<10&&(t(e,ae)[f]=1)})}).add([22,18,5],(s,a,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=r,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${r.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,r+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME 000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,a,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=r)})}).add([22,18,16],(s,a,o)=>{e.switchMode("mt32");let i=s[1],r=!1,c=function(h,f){t(e,H)[f-12]=h,r=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{w(e,_,h)}][g]||(()=>{}))(h,f)}),r&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let a=s[1],o=" ".repeat(a);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,re,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,a)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,a)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{[r,r,r,r,()=>{w(e,_,c*129/16383*100)},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,0,1],(s,a)=>{}).add([66,18,0,2],(s,a)=>{}).add([66,18,1],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=o*$.cc,r=s[1],c=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=r+f;g<3?[()=>{t(e,u)[i+p[0]]=h||121},()=>{t(e,u)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!h},()=>{e.setChType(o,h,x.ns5r),console.debug(`${c}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,u)[i+p[7]]=h},()=>{t(e,u)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,u)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,u)[i+p[93]]=h},()=>{t(e,u)[i+p[91]]=h},()=>{t(e,u)[i+p[76]]=h},()=>{t(e,u)[i+p[77]]=h},()=>{t(e,u)[i+p[78]]=h},()=>{t(e,u)[i+p[74]]=h},()=>{t(e,u)[i+p[71]]=h},()=>{t(e,u)[i+p[73]]=h},()=>{t(e,u)[i+p[75]]=h},()=>{t(e,u)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,u)[i+p[5]]=h},()=>{t(e,u)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,a)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,te,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let r=s.subarray(1),c=4;r.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";ee(s,(i,r)=>{r<8?(i>31&&(o+=String.fromCharCode(i)),r==7&&(e.aiEfxName=o)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),ee(s,function(o,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),c=r*$.cc;switch(i%92){case 0:{t(e,u)[c+p[0]]=o||121;break}case 1:{t(e,u)[c+p[32]]=o;break}case 2:{t(e,O)[r]=o,o>0&&(t(e,P)[r]=1);break}case 3:{let h=e.chRedir(o,a,!0);t(e,H)[r]=h,r!=h&&(console.info(`NS5R CH${r+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[r*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,u)[c+p[7]]=o;break}case 11:{t(e,u)[c+p[11]]=o;break}case 14:{t(e,u)[c+p[10]]=o||128;break}case 19:{t(e,u)[c+p[93]]=o;break}case 20:{t(e,u)[c+p[91]]=o;break}case 84:{t(e,u)[c+p[65]]=o;break}case 85:{t(e,u)[c+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=80,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{c=f&127;break}case y==13:{h+=` ${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(h)}).add([66,55],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=88,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%126;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:break;case y==12:break;case y==13:{h+=` -${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let a=new Uint8Array(5760);ee(s,(o,i,r)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=o>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(s,a,o)=>{t(e,fe).run([66,...s],a,o)}),t(this,Ce).add([16,0,8,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Q,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,a,o)=>{let i=e.chRedir(s[1],a,!0),r=$.cc*i,c=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,u)[r+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,a,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,u)[r+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,u)[r+p[10]]=h},()=>{t(e,v)[c+3]=h+40},()=>{t(e,v)[c+1]=h>>1,t(e,v)[c+2]=h&1},()=>{t(e,u)[r+p[91]]=h?127:0},()=>{},()=>{t(e,u)[r+p[74]]=h},()=>{t(e,u)[r+p[73]]=h},()=>{t(e,u)[r+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=0,t(e,O)[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=7,t(e,O)[r]=i-100):(e.setChType(r,e.CH_DRUMS,x.k11),t(e,u)[c+p[0]]=122,t(e,u)[c+p[32]]=0,t(e,O)[r]=i-160)},()=>{let h=e.chRedir(i,a,!0);t(e,H)[r]=h,r!=h&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc,h=r*$.rpn,f=`GMLX CH${r+1} `;[()=>{t(e,P)[r]=i},()=>{t(e,u)[c+p[7]]=i},()=>{t(e,u)[c+p[10]]=i},()=>{t(e,u)[c+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,a,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,_,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let r=e.chRedir(s[0]&15,a,!0);if(s[1]==2){let c=e.chRedir(i,a,!0);t(e,H)[r]=c,r!=c&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${c+1}`))}else s[1]==19&&(t(e,u)[$.cc*r+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,j).add([127,0],(s,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,j).run(i,a,o)}).add([127,1,0,0],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=s[0];s.subarray(1).forEach((c,h)=>{([()=>{w(e,_,c*12900/16383)}][r+h]||(()=>{console.info(`Unrecognized ${i}ID: ${r+h}`)}))()})}).add([127,1,0,0,14],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,a,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],a,!0),r=$.cc*i,c=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,u)[r+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,u)[r+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,W)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,u)[r+p[7]]=f},()=>{t(e,u)[r+p[10]]=f},!1,!1,!1,()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[128]]=f},()=>{},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},!1,()=>{t(e,u)[r+p[65]]=f},()=>{t(e,u)[r+p[5]]=f},()=>{}][c+g]||(()=>{}))()})}).add([127,1,54,16],(s,a,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((r,c)=>{let f=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let g=r-64},()=>{let g=De[r]},()=>{let g=r/10},()=>{let g=r}][i+c&3]||(()=>{}))()})})}chRedir(e,n,l){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Q))>-1){if(l==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,l)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(l)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,l=t(this,u).subarray(n,n+$.cc);return l[p[0]]=l[p[0]]||t(this,ye),l[p[32]]=l[p[32]]||t(this,Q),l}getCcCh(e,n){if(Ie.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,u)[$.cc*e+p[n]]}getCcAll(){let e=t(this,u).slice();for(let n=0;n<$.ch;n++){let l=n*$.cc;e[l+p[0]]=e[l+p[0]]||t(this,ye),e[l+p[32]]=e[l+p[32]]||t(this,Q)}return e}getChType(){return t(this,T)}setChType(e,n,l=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,u)[e*$.cc+p[0]]=Se[l])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,M).slice()}getVel(e){let n=new Map,l=this;return t(l,U).forEach(function(d,s){let a=Math.floor(d/128),o=d%128;e==a&&t(l,A)[d]>0&&n.set(o,{v:t(l,A)[d],s:t(l,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,re),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,_)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let l=Math.floor(n/128);t(e,A)[n]>t(e,se)[l]&&(t(e,se)[l]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,d){e[d]=Math.floor(l*t(n,u)[d*$.cc+p[7]]*t(n,u)[d*$.cc+p[11]]*t(n,_)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,l,d){let s=e||t(this,ye),a=n,o=l||t(this,Q);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,a,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),c=r*$.cmt,h="";t(this,$e).subarray(c,c+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,a,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,u)[e*$.cc+p[0]],t(this,O)[e],t(this,u)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,ae)[e])switch(t(this,R)){case x.mt32:n.ending="~",n.name="",t(this,Y).subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,d=3200){let s=this,a;w(s,re," ".repeat(l)),e.forEach(o=>{w(s,re,t(s,re)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(s,we,Date.now()+3200),w(s,re,t(s,re).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,r)=>{r[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l<$.ace;)t(this,ce)[l]==e?n=!1:t(this,ce)[l]||(n=!1,t(this,ce)[l]=e,console.info(`Allocated cc${e} to ACE slot ${l}.`)),l++;l>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ce)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let l=t(this,ce)[n];if(l){if(Ie.indexOf(l)>=0)return t(this,u)[e*$.cc+p[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Q,0),w(this,le,0),t(this,P).fill(0),t(this,u).fill(0),t(this,ce).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,se).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,_,100),w(this,M,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,re,""),w(this,te,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,l,d){d[l]=l}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,u)[$.cc*9]=Se[0],t(this,u)[$.cc*25]=Se[0],t(this,u)[$.cc*41]=Se[0],t(this,u)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,Y).fill(0),t(this,ae).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let l=n*$.cc;t(this,u)[l+p[7]]=100,t(this,u)[l+p[11]]=127,t(this,u)[l+p[10]]=64,t(this,u)[l+p[71]]=64,t(this,u)[l+p[72]]=64,t(this,u)[l+p[73]]=64,t(this,u)[l+p[74]]=64,t(this,u)[l+p[75]]=64,t(this,u)[l+p[76]]=64,t(this,u)[l+p[77]]=64,t(this,u)[l+p[78]]=64,t(this,u)[l+p[91]]=40,t(this,u)[l+p[101]]=127,t(this,u)[l+p[100]]=127,t(this,u)[l+p[99]]=127,t(this,u)[l+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let l=be.indexOf(e);if(l>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,l),w(this,K,0),w(this,ye,Et[0][l]),w(this,Q,Et[1][l]);for(let a=0;a<$.ch;a++)t(this,T)[a]>0&&t(this,u)[a*$.cc+p[0]]==Se[d]&&(t(this,u)[a*$.cc]=Se[l]);switch(this.initOnReset,l){case x.mt32:{Ze.forEach((a,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=a,t(this,u)[i*$.cc+p[91]]=127)});break}}let s;switch(l){case x.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case x.x5d:case x.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,V)[3*a]||(t(this,V)[3*a+1]=s[2*a],t(this,V)[3*a+2]=s[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,se).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let l=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[l])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${l+1} without any recipient.`)}t(this,M).length>100&&t(this,M).splice(100,t(this,M).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,te=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,u=new WeakMap,ce=new WeakMap,O=new WeakMap,A=new WeakMap,W=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,se=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,ae=new WeakMap,ge=new WeakMap,Y=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Q=new WeakMap,_=new WeakMap,le=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,re=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,M=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,xe=new WeakMap,Me=new WeakMap,j=new WeakMap,ie=new WeakMap,fe=new WeakMap,Ce=new WeakMap,Te=new WeakMap,Re=new WeakMap,Mt);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Ct as dnToPos}; +${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let a=new Uint8Array(5760);ee(s,(o,i,r)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=o>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(s,a,o)=>{t(e,fe).run([66,...s],a,o)}),t(this,Me).add([16,0,8,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Q,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,a,o)=>{let i=e.chRedir(s[1],a,!0),r=$.cc*i,c=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,u)[r+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,a,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,u)[r+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,u)[r+p[10]]=h},()=>{t(e,v)[c+3]=h+40},()=>{t(e,v)[c+1]=h>>1,t(e,v)[c+2]=h&1},()=>{t(e,u)[r+p[91]]=h?127:0},()=>{},()=>{t(e,u)[r+p[74]]=h},()=>{t(e,u)[r+p[73]]=h},()=>{t(e,u)[r+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=0,t(e,O)[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=7,t(e,O)[r]=i-100):(e.setChType(r,e.CH_DRUMS,x.k11),t(e,u)[c+p[0]]=122,t(e,u)[c+p[32]]=0,t(e,O)[r]=i-160)},()=>{let h=e.chRedir(i,a,!0);t(e,H)[r]=h,r!=h&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc,h=r*$.rpn,f=`GMLX CH${r+1} `;[()=>{t(e,P)[r]=i},()=>{t(e,u)[c+p[7]]=i},()=>{t(e,u)[c+p[10]]=i},()=>{t(e,u)[c+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,a,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,_,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let r=e.chRedir(s[0]&15,a,!0);if(s[1]==2){let c=e.chRedir(i,a,!0);t(e,H)[r]=c,r!=c&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${c+1}`))}else s[1]==19&&(t(e,u)[$.cc*r+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,j).add([127,0],(s,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,j).run(i,a,o)}).add([127,1,0,0],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=s[0];s.subarray(1).forEach((c,h)=>{([()=>{w(e,_,c*12900/16383)}][r+h]||(()=>{console.info(`Unrecognized ${i}ID: ${r+h}`)}))()})}).add([127,1,0,0,14],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,a,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],a,!0),r=$.cc*i,c=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,u)[r+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,u)[r+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,W)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,u)[r+p[7]]=f},()=>{t(e,u)[r+p[10]]=f},!1,!1,!1,()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[128]]=f},()=>{},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},!1,()=>{t(e,u)[r+p[65]]=f},()=>{t(e,u)[r+p[5]]=f},()=>{}][c+g]||(()=>{}))()})}).add([127,1,54,16],(s,a,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((r,c)=>{let f=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let g=r-64},()=>{let g=De[r]},()=>{let g=r/10},()=>{let g=r}][i+c&3]||(()=>{}))()})})}chRedir(e,n,l){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Q))>-1){if(l==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,l)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(l)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,l=t(this,u).subarray(n,n+$.cc);return l[p[0]]=l[p[0]]||t(this,ye),l[p[32]]=l[p[32]]||t(this,Q),l}getCcCh(e,n){if(Ie.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,u)[$.cc*e+p[n]]}getCcAll(){let e=t(this,u).slice();for(let n=0;n<$.ch;n++){let l=n*$.cc;e[l+p[0]]=e[l+p[0]]||t(this,ye),e[l+p[32]]=e[l+p[32]]||t(this,Q)}return e}getChSource(){return t(this,H)}getChType(){return t(this,T)}setChType(e,n,l=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,u)[e*$.cc+p[0]]=Se[l])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,C).slice()}getVel(e){let n=new Map,l=this;return t(l,U).forEach(function(d,s){let a=Math.floor(d/128),o=d%128;e==a&&t(l,A)[d]>0&&n.set(o,{v:t(l,A)[d],s:t(l,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,re),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,_)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let l=Math.floor(n/128);t(e,A)[n]>t(e,se)[l]&&(t(e,se)[l]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,d){e[d]=Math.floor(l*t(n,u)[d*$.cc+p[7]]*t(n,u)[d*$.cc+p[11]]*t(n,_)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,l,d){let s=e||t(this,ye),a=n,o=l||t(this,Q);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,a,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),c=r*$.cmt,h="";t(this,$e).subarray(c,c+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,a,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,u)[e*$.cc+p[0]],t(this,O)[e],t(this,u)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,ae)[e])switch(t(this,R)){case x.mt32:n.ending="~",n.name="",t(this,Y).subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,d=3200){let s=this,a;w(s,re," ".repeat(l)),e.forEach(o=>{w(s,re,t(s,re)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(s,we,Date.now()+3200),w(s,re,t(s,re).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,r)=>{r[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l<$.ace;)t(this,ce)[l]==e?n=!1:t(this,ce)[l]||(n=!1,t(this,ce)[l]=e,console.info(`Allocated cc${e} to ACE slot ${l}.`)),l++;l>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ce)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let l=t(this,ce)[n];if(l){if(Ie.indexOf(l)>=0)return t(this,u)[e*$.cc+p[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Q,0),w(this,le,0),t(this,P).fill(0),t(this,u).fill(0),t(this,ce).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,se).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,_,100),w(this,C,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,re,""),w(this,te,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,l,d){d[l]=l}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,u)[$.cc*9]=Se[0],t(this,u)[$.cc*25]=Se[0],t(this,u)[$.cc*41]=Se[0],t(this,u)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,Y).fill(0),t(this,ae).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let l=n*$.cc;t(this,u)[l+p[7]]=100,t(this,u)[l+p[11]]=127,t(this,u)[l+p[10]]=64,t(this,u)[l+p[71]]=64,t(this,u)[l+p[72]]=64,t(this,u)[l+p[73]]=64,t(this,u)[l+p[74]]=64,t(this,u)[l+p[75]]=64,t(this,u)[l+p[76]]=64,t(this,u)[l+p[77]]=64,t(this,u)[l+p[78]]=64,t(this,u)[l+p[91]]=40,t(this,u)[l+p[101]]=127,t(this,u)[l+p[100]]=127,t(this,u)[l+p[99]]=127,t(this,u)[l+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let l=be.indexOf(e);if(l>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,l),w(this,K,0),w(this,ye,Et[0][l]),w(this,Q,Et[1][l]);for(let a=0;a<$.ch;a++)t(this,T)[a]>0&&t(this,u)[a*$.cc+p[0]]==Se[d]&&(t(this,u)[a*$.cc]=Se[l]);switch(this.initOnReset,l){case x.mt32:{Ze.forEach((a,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=a,t(this,u)[i*$.cc+p[91]]=127)});break}}let s;switch(l){case x.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case x.x5d:case x.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,V)[3*a]||(t(this,V)[3*a+1]=s[2*a],t(this,V)[3*a+2]=s[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,se).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let l=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[l])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${l+1} without any recipient.`)}t(this,C).length>100&&t(this,C).splice(100,t(this,C).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,te=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,u=new WeakMap,ce=new WeakMap,O=new WeakMap,A=new WeakMap,W=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,se=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,ae=new WeakMap,ge=new WeakMap,Y=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Q=new WeakMap,_=new WeakMap,le=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,re=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,C=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,xe=new WeakMap,Ce=new WeakMap,j=new WeakMap,ie=new WeakMap,fe=new WeakMap,Me=new WeakMap,Te=new WeakMap,Re=new WeakMap,Ct);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Mt as dnToPos}; diff --git a/src/disp/disp_n5.mjs b/src/disp/disp_n5.mjs index 3df0a4e0..2c3f3408 100644 --- a/src/disp/disp_n5.mjs +++ b/src/disp/disp_n5.mjs @@ -431,8 +431,7 @@ let Ns5rDisplay = class extends RootDisplay { } else if (e <= this.#pixelOff) { ctx.fillStyle = lcdCache.black[3]; } else { - let colour = `${lcdPixel.black}${(Math.ceil(e * lcdPixel.range / 255) + lcdPixel.inactive).toString(16)}`; - ctx.fillStyle = colour; + ctx.fillStyle = `${lcdPixel.black}${(Math.ceil(e * lcdPixel.range / 255) + lcdPixel.inactive).toString(16)}`; }; if (drawPixMode) { ctx.fillStyle = ctx.fillStyle.slice(0, 7); diff --git a/src/disp/disp_sc.mjs b/src/disp/disp_sc.mjs index fba8f86b..d5642f18 100644 --- a/src/disp/disp_sc.mjs +++ b/src/disp/disp_sc.mjs @@ -21,16 +21,27 @@ mspHeightY = 10, pdsX = cmpWidth * (17 + 2), pdsY = cmpWidth * (7 + 3) + 1; let ScDisplay = class extends RootDisplay { + // Opportunistic updates + // 0 ~ 664: Text display + // 665 ~ 1399: Param display + // 1400 ~ 1656: Bitmap display + #pixelLit = 255; + #pixelOff = 0; + #nmdb = new Uint8Array(1656); + #dmdb = new Uint8Array(1656); + #omdb = new Uint8Array(1656); #tmdb = new Uint8Array(665); // Text display #pmdb = new Uint8Array(735); // Param display #bmdb = new Uint8Array(256); // Bitmap display - #pixelLit = 255; - #pixelOff = 0; #linger = new Uint8Array(64); #ch = 0; + #lastBg = 0; + #countBg = 0; + useBlur = false; xgFont = new MxFont40("./data/bitmaps/korg/font.tsv", "./data/bitmaps/xg/font.tsv"); - constructor() { + constructor(conf) { super(new OctaviaDevice(), 0, 0.875); + this.useBlur = !!conf?.useBlur; }; setCh(ch) { this.#ch = ch; @@ -42,10 +53,64 @@ let ScDisplay = class extends RootDisplay { let sum = super.render(time); let upThis = this; let timeNow = Date.now(); + let fullRefresh = false; + upThis.#nmdb.fill(0); // Fill with orange - //ctx.fillStyle = "#af2"; - ctx.fillStyle = bgOrange; - ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); + if (upThis.#countBg < 4 && timeNow - upThis.#lastBg >= 4000) { + ctx.fillStyle = bgOrange.slice(0, 7); + ctx.fillRect(0, 0, ctx.canvas.width, ctx.canvas.height); + upThis.#lastBg = timeNow; + // Show text + ctx.fillStyle = "#000"; + ctx.textAlign = "left"; + ctx.font = '16px "Arial Web"'; + ctx.fillText("PART", 21, 20); + ctx.fillText("INSTRUMENT", 154, 20); + ctx.fillText("LEVEL", 21, 91); + ctx.fillText("PAN", 154, 91); + ctx.fillText("REVERB", 21, 162); + ctx.fillText("CHORUS", 154, 162); + ctx.fillText("KEY SHIFT", 21, 233); + ctx.fillText("MIDI CH", 154, 233); + ctx.textAlign = "center"; + for (let c = 1; c <= 16; c ++) { + ctx.fillText(`${c}`.padStart(2, "0"), 308 + cmpHeightX * c, 300); + }; + ctx.lineWidth = 1; + ctx.strokeStyle = "#000"; + let circle = 2 * Math.PI; + for (let c = 0; c < 16; c ++) { + let d = c % 8; + ctx.beginPath(); + if (!d) { + ctx.ellipse( + 316, + (15 - c) * 12 + 100, + 4, 4, + 0, 0, circle + ); + ctx.fill(); + } else if (d == 4) { + ctx.ellipse( + 316, + (15 - c) * 12 + 100, + 3, 3, + 0, 0, circle + ); + ctx.fill(); + } else { + ctx.ellipse( + 316, + (15 - c) * 12 + 100, + 2, 2, + 0, 0, circle + ); + ctx.stroke(); + }; + }; + fullRefresh = true; + upThis.#countBg ++; + }; // Universal offset let pdaX = 22, pdaY = 24; @@ -72,7 +137,6 @@ let ScDisplay = class extends RootDisplay { }; let chOff = this.#ch * ccToPos.length; // Text matrix display - this.#tmdb.forEach((e, i, a) => {a[i] = 0}); let infoTxt, isTextNull = sum.letter.text.trim(); while (isTextNull.indexOf(" ") > -1) { isTextNull = isTextNull.replaceAll(" ", " "); @@ -111,7 +175,7 @@ let ScDisplay = class extends RootDisplay { let pX = i0 * 6 + i1 % 5 + xShift, pY = Math.floor(i1 / 5); if (pX >= 0 && pX < 95) { - upThis.#tmdb[pY * 95 + pX] = e1; + upThis.#nmdb[pY * 95 + pX] = e1 ? upThis.#pixelLit : upThis.#pixelOff; }; }); }); @@ -123,33 +187,16 @@ let ScDisplay = class extends RootDisplay { e0.forEach(function (e1, i1) { let pX = i0 * 6 + i1 % 5, pY = Math.floor(i1 / 5); - upThis.#tmdb[pY * 95 + pX] = e1; + upThis.#nmdb[pY * 95 + pX] = e1 ? upThis.#pixelLit : upThis.#pixelOff; }); }); }; - // Commit to text matrix display - this.#tmdb.forEach(function (e, i) { - ctx.fillStyle = inactivePixel; - if (e) { - ctx.fillStyle = activePixel; - }; - let pixelX = i % 95, - pixelY = Math.floor(i / 95); - ctx.fillRect( - pdaX + 133 + pixelX * cmpWidth, - pdaY + pixelY * cmpWidth, - mspWidth, - mspWidth - ); - }); - // Param display - this.#pmdb.forEach((e, i, a) => {a[i] = 0}); // Assemble text let paramText = ""; - paramText += `${"ABCDEFGH"[this.#ch >> 4]}${(this.#ch % 16 + 1).toString().padStart(2, "0")}`; + paramText += `${"ABCDEFGH"[upThis.#ch >> 4]}${(upThis.#ch % 16 + 1).toString().padStart(2, "0")}`; paramText += sum.chContr[chOff + ccToPos[7]].toString().padStart(3, " "); paramText += sum.chContr[chOff + ccToPos[91]].toString().padStart(3, " "); - let cPit = this.device.getPitchShift(this.#ch); + let cPit = upThis.device.getPitchShift(upThis.#ch); if (cPit < 0) { paramText += "-"; } else { @@ -170,41 +217,18 @@ let ScDisplay = class extends RootDisplay { paramText += Math.abs(cPan - 64).toString().padStart(2, " "); }; paramText += sum.chContr[chOff + ccToPos[93]].toString().padStart(3, " "); - paramText += (sum.chContr[chOff + ccToPos[0]] || sum.chContr[chOff + ccToPos[32]]).toString().padStart(3, "0"); + paramText += (upThis.device.getChSource()[upThis.#ch] + 1).toString().padStart(3, "0"); // Render fonts - this.xgFont.getStr(paramText).forEach(function (e0, i0) { + upThis.xgFont.getStr(paramText).forEach(function (e0, i0) { e0.forEach(function (e1, i1) { let pX = Math.floor(i0 / 3) * 90 + i0 * 5 + i1 % 5, pY = Math.floor(i1 / 5); if (pY < 7) { - upThis.#pmdb[pY * 15 + pX] = e1; + upThis.#nmdb[pY * 15 + pX + 665] = e1 ? upThis.#pixelLit : upThis.#pixelOff; }; }); }); - // Commit to param display - this.#pmdb.forEach(function (e, i) { - ctx.fillStyle = inactivePixel; - if (e) { - ctx.fillStyle = activePixel; - }; - let regionX = i > 419 ? 1 : 0, - regionY = 0, - pixelX = i % 15 + Math.floor(i % 15 / 5), - pixelY = Math.floor((i % 105) / 15); - if (!regionX) { - regionY = Math.floor(i / 105); - } else { - regionY = Math.floor((i - 315) / 105); - }; - ctx.fillRect( - pdaX + pdsX * regionX + pixelX * cmpWidth, - pdaY + pdsY * regionY + pixelY * cmpWidth, - mspWidth, - mspWidth - ); - }); // Bitmap display - this.#bmdb.forEach((e, i, a) => {a[i] = 0}); let rendMode = Math.ceil(Math.log2(maxCh - minCh + 1) - 4), rendPos = 0; // Strength calculation @@ -219,9 +243,13 @@ let ScDisplay = class extends RootDisplay { upThis.#linger[i] = val; }; }); - let useBm = this.#bmdb; + let useBm = upThis.#nmdb.subarray(1400, 1656); if (timeNow <= sum.bitmap.expire) { - useBm = sum.bitmap.bitmap; + sum.bitmap.bitmap.forEach((e, i) => { + if (e) { + useBm[i] = upThis.#pixelLit; + }; + }); } else { let rendPos = 0; for (let c = minCh; c <= maxCh; c ++) { @@ -231,101 +259,97 @@ let ScDisplay = class extends RootDisplay { if (rendMode == 2) { let offY = 4 * (3 - rendPart); for (let d = 3 - strSmooth; d < 4; d ++) { - this.#bmdb[rendPos % 16 + (d + offY) * 16] = 1; + useBm[rendPos % 16 + (d + offY) * 16] = upThis.#pixelLit; }; } else if (rendMode == 1) { let offY = 8 * (1 - rendPart); for (let d = 7 - strSmooth; d < 8; d ++) { - this.#bmdb[rendPos % 16 + (d + offY) * 16] = 1; + useBm[rendPos % 16 + (d + offY) * 16] = upThis.#pixelLit; }; - this.#bmdb[rendPos % 16 + (7 - lingered + offY) * 16] = 1; + useBm[rendPos % 16 + (7 - lingered + offY) * 16] = upThis.#pixelLit; } else { for (let d = 15 - strSmooth; d < 16; d ++) { - this.#bmdb[rendPos % 16 + d * 16] = 1; + useBm[rendPos % 16 + d * 16] = upThis.#pixelLit; }; - this.#bmdb[rendPos + (15 - lingered) * 16] = 1; + useBm[rendPos + (15 - lingered) * 16] = upThis.#pixelLit; }; rendPos ++; }; }; - // Commit to bitmap display - useBm.forEach(function (e, i) { - ctx.fillStyle = inactivePixel; - if (e) { - ctx.fillStyle = activePixel; + // Guide the drawn matrix + upThis.#nmdb.forEach((e, i) => { + if (upThis.#dmdb[i] != e) { + if (upThis.useBlur) { + let diff = e - upThis.#dmdb[i], + cap = 48; + if (Math.abs(diff) > cap) { + upThis.#dmdb[i] += Math.sign(diff) * cap; + } else { + upThis.#dmdb[i] = e; + }; + } else { + upThis.#dmdb[i] = e; + }; }; - let pixelX = i % 16, - pixelY = Math.floor(i / 16); - ctx.fillRect( - pdaX + 302 + pixelX * cmpHeightX, - pdaY + 71 + pixelY * cmpHeightY, - mspHeightX, - mspHeightY - ); }); - // Show text - ctx.fillStyle = "#000c"; - ctx.textAlign = "left"; - ctx.font = '16px "Arial Web"'; - ctx.fillText("PART", 21, 20); - ctx.fillText("INSTRUMENT", 154, 20); - ctx.fillText("LEVEL", 21, 91); - ctx.fillText("PAN", 154, 91); - ctx.fillText("REVERB", 21, 162); - ctx.fillText("CHORUS", 154, 162); - ctx.fillText("KEY SHIFT", 21, 233); - ctx.fillText("BANK", 154, 233); - ctx.textAlign = "right"; - ctx.fillText("SB", 274, 233); - ctx.textAlign = "center"; - for (let c = 1; c <= 16; c ++) { - ctx.fillText(`${c}`.padStart(2, "0"), 308 + cmpHeightX * c, 300); - }; - ctx.lineWidth = 1; - ctx.strokeStyle = "#000c"; - let circle = 2 * Math.PI; - for (let c = 0; c < 16; c ++) { - let d = c % 8; - ctx.beginPath(); - if (!d) { - ctx.ellipse( - 316, - (15 - c) * 12 + 100, - 4, 4, - 0, 0, circle - ); - ctx.fill(); - } else if (d == 4) { - ctx.ellipse( - 316, - (15 - c) * 12 + 100, - 3, 3, - 0, 0, circle - ); - ctx.fill(); - } else { - ctx.ellipse( - 316, - (15 - c) * 12 + 100, - 2, 2, - 0, 0, circle - ); - ctx.stroke(); + // Do the actual drawing + upThis.#dmdb.forEach((e, oi) => { + if (fullRefresh || upThis.#omdb[oi] != e) { + let startX, startY, width = mspWidth, height = mspWidth; + // Position the pixels + if (oi < 665) { + // Generic text display + let i = oi; + let pixelX = i % 95, + pixelY = Math.floor(i / 95); + startX = pdaX + 133 + pixelX * cmpWidth, + startY = pdaY + pixelY * cmpWidth; + } else if (oi < 1400) { + // Param display + let i = oi - 665; + let regionX = i > 419 ? 1 : 0, + regionY = 0, + pixelX = i % 15 + Math.floor(i % 15 / 5), + pixelY = Math.floor((i % 105) / 15); + if (!regionX) { + regionY = Math.floor(i / 105); + } else { + regionY = Math.floor((i - 315) / 105); + }; + startX = pdaX + pdsX * regionX + pixelX * cmpWidth; + startY = pdaY + pdsY * regionY + pixelY * cmpWidth; + } else { + // Bitmap display + let i = oi - 1400; + let pixelX = i % 16, + pixelY = Math.floor(i / 16); + startX = pdaX + 302 + pixelX * cmpHeightX; + startY = pdaY + 71 + pixelY * cmpHeightY; + width = mspHeightX; + height = mspHeightY; + }; + // Clear the updated pixels + ctx.fillStyle = bgOrange.slice(0, 7); + ctx.fillRect(startX, startY, width, height); + // Paint the updated pixels + if (e <= upThis.#pixelOff) { + ctx.fillStyle = lcdCache.black[3]; + } else if (e >= upThis.#pixelLit) { + ctx.fillStyle = lcdCache.black[4]; + } else { + let colour = `${lcdPixel.black}${(Math.ceil(e * lcdPixel.range / 255) + lcdPixel.inactive).toString(16)}`; + ctx.fillStyle = colour; + }; + ctx.fillRect(startX, startY, width, height); + self.pixelUpdates = (self.pixelUpdates || 0) + 1; }; - }; - if (sum.chContr[chOff + ccToPos[0]]) { - ctx.fillStyle = activePixel; - } else { - ctx.fillStyle = inactivePixel; - }; - ctx.fillText("M", 236, 233); - if (sum.chContr[chOff + ccToPos[0]]) { - ctx.fillStyle = inactivePixel; - } else { - ctx.fillStyle = activePixel; - }; - ctx.fillText("L", 248, 233); - self.pixelUpdates = (self.pixelUpdates || 0) + 1; + }); + // Store the historical draws + upThis.#dmdb.forEach((e, i) => { + if (upThis.#omdb[i] != e) { + upThis.#omdb[i] = e; + }; + }); }; }; diff --git a/src/fakeSc/index.js b/src/fakeSc/index.js index a1ca59ea..e5b2e746 100644 --- a/src/fakeSc/index.js +++ b/src/fakeSc/index.js @@ -109,7 +109,7 @@ getBlobFrom(`list.tsv`).then(async (response) => { let title = ""; // Start the visualizers -self.visualizer = new ScDisplay(); +self.visualizer = new ScDisplay({useBlur: true}); visualizer.addEventListener("reset", function (e) { console.info("Processor reset."); title = ""; diff --git a/src/state/index.mjs b/src/state/index.mjs index d3a15fff..0015130f 100644 --- a/src/state/index.mjs +++ b/src/state/index.mjs @@ -997,6 +997,9 @@ let OctaviaDevice = class extends CustomEventSource { }; return arr; }; + getChSource() { + return this.#chReceive; + }; getChType() { return this.#chType; }; diff --git a/test/index.htm b/test/index.htm index 5a11c083..c5f40005 100644 --- a/test/index.htm +++ b/test/index.htm @@ -34,19 +34,19 @@

          List of Octavia demos

          Text UI (for experimenting)
        • - Emulated YAMAHA MU screen (has pixel blur) + Emulated YAMAHA MU screen (full pixel blur)
        • - Emulated Roland SC screen (lazy pixel blur) + Emulated Roland SC screen (lazy pixel blur by default)
        • - Emulated KORG NS5R screen (lazy pixel blur) + Emulated KORG NS5R screen (lazy pixel blur by default)
        • Emulated YAMAHA QY screen (no pixel blur)
        • - Emulated YAMAHA PSR screen (has pixel blur) + Emulated YAMAHA PSR screen (full pixel blur)
        • Cambiare (no blur) From 6b19a590dfb518372aa3fe3a7b00820a99539655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 30 May 2023 18:29:10 +0000 Subject: [PATCH 15/31] QoL additions for emulated SC. --- src/disp/disp_sc.mjs | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/disp/disp_sc.mjs b/src/disp/disp_sc.mjs index d5642f18..659f5457 100644 --- a/src/disp/disp_sc.mjs +++ b/src/disp/disp_sc.mjs @@ -180,8 +180,37 @@ let ScDisplay = class extends RootDisplay { }); }); } else { - infoTxt = `${sum.chProgr[this.#ch] + 1}`.padStart(3, "0"); - infoTxt += " "; + infoTxt = `${sum.chProgr[upThis.#ch] + 1}`.padStart(3, "0"); + switch (sum.chContr[chOff + ccToPos[0]]) { + case 0: { + switch (sum.chContr[chOff + ccToPos[32]]) { + case 0: + case 125: + case 126: + case 127: { + infoTxt += " "; + break; + }; + default: { + infoTxt += upThis.device.getMode() == "gs" ? " " : "+"; + }; + }; + break; + }; + case 56: + case 61: + case 62: + case 120: + case 122: + case 126: + case 127: { + infoTxt += " "; + break; + }; + default: { + infoTxt += "+"; + }; + }; infoTxt += (upThis.getChVoice(this.#ch).name).slice(0, 12).padEnd(12, " "); this.xgFont.getStr(infoTxt).forEach(function (e0, i0) { e0.forEach(function (e1, i1) { From fb4e0a4f954d50dbc36bb602ca620cd2a42bcc1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Fri, 9 Jun 2023 16:38:01 +0000 Subject: [PATCH 16/31] Hardcoded performance for MU100. --- src/fakeMu/index.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/fakeMu/index.js b/src/fakeMu/index.js index 2c71f2ce..94179225 100644 --- a/src/fakeMu/index.js +++ b/src/fakeMu/index.js @@ -498,6 +498,13 @@ self.performance = currentPerformance; perf.push(new PointEvent(24.89, generateSwitch(9))); perf.push(new PointEvent(25.37, generateSwitch(10))); perf.push(new PointEvent(25.89, generateSwitch(3))); + perf.push(new PointEvent(27.87, generateSwitch(1))); + perf.push(new PointEvent(29.85, generateSwitch(3))); + perf.push(new PointEvent(31.83, generateSwitch(2))); + perf.push(new PointEvent(33.81, generateSwitch(9))); + perf.push(new PointEvent(35.79, generateSwitch(10))); + perf.push(new PointEvent(37.75, generateSwitch(9))); + perf.push(new PointEvent(39.73, generateSwitch(25))); perf.push(new PointEvent(41.84, generateSwitch(15))); perf.push(new PointEvent(43.93, generateSwitch(14))); perf.push(new PointEvent(46.02, generateSwitch(15))); @@ -507,6 +514,26 @@ self.performance = currentPerformance; perf.push(new PointEvent(62.34, generateSwitch(15))); perf.push(new PointEvent(66.58, generateSwitch(16))); perf.push(new PointEvent(70.41, generateSwitch(15))); + perf.push(new PointEvent(74.64, generateSwitch(25))); + perf.push(new PointEvent(77.96, generateSwitch(14))); + perf.push(new PointEvent(79.97, generateSwitch(25))); + perf.push(new PointEvent(80.47, generateSwitch(10))); + perf.push(new PointEvent(80.97, generateSwitch(9))); + perf.push(new PointEvent(81.48, generateSwitch(14))); + perf.push(new PointEvent(81.98, generateSwitch(17))); + perf.push(new PointEvent(85.99, generateSwitch(18))); + perf.push(new PointEvent(88.03, generateSwitch(19))); + perf.push(new PointEvent(91.49, generateSwitch(20))); + perf.push(new PointEvent(93.15, generateSwitch(21))); + perf.push(new PointEvent(95.98, generateSwitch(22))); + perf.push(new PointEvent(99.99, generateSwitch(24))); + perf.push(new PointEvent(103.91, generateSwitch(22))); + perf.push(new PointEvent(107.97, generateSwitch(24))); + perf.push(new PointEvent(112.04, generateSwitch(22))); + perf.push(new PointEvent(116.05, generateSwitch(24))); + perf.push(new PointEvent(120.07, generateSwitch(22))); + perf.push(new PointEvent(127.1, generateSwitch(9))); + perf.push(new PointEvent(130, generateSwitch(0))); perf.fresh(); demoPerfs["MU100DEMO"] = perf; }; From db9a5b7646d1e7a60346fc62729ffd5f2a27ba60 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 13 Jun 2023 14:36:35 +0000 Subject: [PATCH 17/31] Bug fix for proxied PLG voices. --- src/state/bankReader.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/state/bankReader.js b/src/state/bankReader.js index 3fb186d1..9971bc39 100644 --- a/src/state/bankReader.js +++ b/src/state/bankReader.js @@ -50,6 +50,13 @@ let VoiceBank = class { // 83: PLG-100DX redirection // 84: PLG-100AN redirection args[0] += 16; + }; + case 95: + case 96: + case 97: + case 98: + case 99: + case 100: { if (lsb == 126) { args[2] = 0; // MU100 Native restore }; From 8b283525878919a0e346e13d98fcf0ae105012a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 13 Jun 2023 15:42:58 +0000 Subject: [PATCH 18/31] 128ch for NS5R. --- data/bitmaps/xg/voices.tsv | 1 + dist/cambiare.mjs | 2 +- dist/state.mjs | 22 +++++++++++----------- dist/state_skim.mjs | 2 +- dist/xp_basic.mjs | 2 +- dist/xp_state.mjs | 2 +- src/disp/disp_n5.mjs | 12 ++++++++++-- 7 files changed, 26 insertions(+), 17 deletions(-) diff --git a/data/bitmaps/xg/voices.tsv b/data/bitmaps/xg/voices.tsv index e09a724a..4e727dd8 100644 --- a/data/bitmaps/xg/voices.tsv +++ b/data/bitmaps/xg/voices.tsv @@ -113,6 +113,7 @@ FullOrgn @DrawOrgn GhostPad @NewAgePd Glocken @Glocken Goblins @Ice Rain +GrandP # @GrandPno GtrHarmo @OvrDrvGt Halo Pad @NewAgePd HammrPno @EGrndPno diff --git a/dist/cambiare.mjs b/dist/cambiare.mjs index a8615e4b..51d02919 100644 --- a/dist/cambiare.mjs +++ b/dist/cambiare.mjs @@ -1,4 +1,4 @@ -var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,c,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Ce.call(e,t)&&t!==c&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,c)=>(c=e!=null?Se(Te(e)):{},Oe(n||!e||!e.__esModule?j(c,"default",{value:e,enumerable:!0}):c,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],c={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return c.Uint8(o);if(typeof o=="string")return c.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return c.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let r=new FileReader;r.readAsArrayBuffer(a.target.files[0]),r.onload=function(s){t(c.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",l,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var a=t.length;let r=new Uint8Array(new ArrayBuffer(a));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)l+=p[p.length-b]*Math.pow(128,b);l+=f}return l}};if(t.data=new DataView(r.buffer,r.byteOffset,r.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var r=t.readInt(1),s=t.readInt(1);128<=r?(a.timeDivision=[],a.timeDivision[0]=r-128,a.timeDivision[1]=s):a.timeDivision=256*r+s;for(let l=1;l<=a.tracks;l++){a.track[l-1]={event:[]};var i,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,a.track[l-1].event[f-1]={},a.track[l-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){a.track[l-1].event[f-1].type=255,a.track[l-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[l-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[l-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[l-1].event[f-1].data=t.readInt(d);break;case 84:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1),a.track[l-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(t.readInt(d),a.track[l-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),a.track[l-1].event[f-1].type=parseInt(b[0],16),a.track[l-1].event[f-1].channel=parseInt(b[1],16),a.track[l-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(i=t.readIntVLV(),a.track[l-1].event[f-1].data=t.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[l-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[l-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof K<"u")K.exports=c;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=c}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),o=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var Z=function(e,n){let c=Math.min(e.length,n.length),o=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let o=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==o)a-=t;else{let i=Z(n,this.pool[a]);switch(i){case 0:{r=0;break}case 1:{a+t<=o&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${i}.`)}}t=t>>1,r--}let s=!0;if(a>=this.pool.length)s=!1;else{let i=this;this.pool[a].forEach(function(h,d,l){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[a])>0&&a++}return s||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...c):this.pool[o].data(n.slice(this.pool[o].length),...c):this.default(n,...c)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},B=class{#t;strictMode=!1;get(e=0,n=0,c=0,o){let t=[e,n,c],a,r=Array.from(arguments);switch(o){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{r[0]+=16,c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let s=" ",i="M",h=0,d=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||o=="gs"&&r[2]<5?i="GM-a":(i="y",h=3);break}case 8:{o=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let b=r[2];i=b<10?"kP:":"kC:",i+=b%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(d=63),h=3;break}case 97:{i="VL:",h=3,d=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(d=63),h=3;break}case 100:{i="AN",r[2]>63&&(d=63),h=3;break}case 121:{i=`GM-${r[2]?"":"a"}`,h=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[e,c,r[0],r[2]][h]-d}`.padStart(4-i.length,"0")),o=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,s=" ");let l=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",s="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):(r[2]--,s="^"):e==48?(r[0]=0,r[2]=0,s="!"):e==62?(r[1]--,s=" ",r[1]<1&&!a?.length&&(r[0]=0,s="!")):e<63?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(a=`GM2Vox0${c}`,s="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?s=" ":(a="",s="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,s="!"):r[0]==0?(r[2]=0,s="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,s="!"):(r[0]=0,s="?"));let f=[r[0],r[1],r[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&o=="xg"?p="XG":p="GS")}return{name:a||`${H(e||0)} ${H(n||0)} ${H(c||0)}`,iid:l,eid:f,sid:t,ending:s,sect:i,standard:p}}async load(e,n,c){let o=this,t=[],a=0,r=0;e.split(` +var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,c,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Ce.call(e,t)&&t!==c&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,c)=>(c=e!=null?Se(Te(e)):{},Oe(n||!e||!e.__esModule?j(c,"default",{value:e,enumerable:!0}):c,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],c={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return c.Uint8(o);if(typeof o=="string")return c.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return c.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let r=new FileReader;r.readAsArrayBuffer(a.target.files[0]),r.onload=function(s){t(c.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",l,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var a=t.length;let r=new Uint8Array(new ArrayBuffer(a));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)l+=p[p.length-b]*Math.pow(128,b);l+=f}return l}};if(t.data=new DataView(r.buffer,r.byteOffset,r.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var r=t.readInt(1),s=t.readInt(1);128<=r?(a.timeDivision=[],a.timeDivision[0]=r-128,a.timeDivision[1]=s):a.timeDivision=256*r+s;for(let l=1;l<=a.tracks;l++){a.track[l-1]={event:[]};var i,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,a.track[l-1].event[f-1]={},a.track[l-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){a.track[l-1].event[f-1].type=255,a.track[l-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[l-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[l-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[l-1].event[f-1].data=t.readInt(d);break;case 84:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1),a.track[l-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(t.readInt(d),a.track[l-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),a.track[l-1].event[f-1].type=parseInt(b[0],16),a.track[l-1].event[f-1].channel=parseInt(b[1],16),a.track[l-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(i=t.readIntVLV(),a.track[l-1].event[f-1].data=t.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[l-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[l-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof K<"u")K.exports=c;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=c}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),o=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var Z=function(e,n){let c=Math.min(e.length,n.length),o=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let o=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==o)a-=t;else{let i=Z(n,this.pool[a]);switch(i){case 0:{r=0;break}case 1:{a+t<=o&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${i}.`)}}t=t>>1,r--}let s=!0;if(a>=this.pool.length)s=!1;else{let i=this;this.pool[a].forEach(function(h,d,l){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[a])>0&&a++}return s||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...c):this.pool[o].data(n.slice(this.pool[o].length),...c):this.default(n,...c)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},B=class{#t;strictMode=!1;get(e=0,n=0,c=0,o){let t=[e,n,c],a,r=Array.from(arguments);switch(o){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let s=" ",i="M",h=0,d=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||o=="gs"&&r[2]<5?i="GM-a":(i="y",h=3);break}case 8:{o=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let b=r[2];i=b<10?"kP:":"kC:",i+=b%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(d=63),h=3;break}case 97:{i="VL:",h=3,d=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(d=63),h=3;break}case 100:{i="AN",r[2]>63&&(d=63),h=3;break}case 121:{i=`GM-${r[2]?"":"a"}`,h=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[e,c,r[0],r[2]][h]-d}`.padStart(4-i.length,"0")),o=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,s=" ");let l=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",s="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):(r[2]--,s="^"):e==48?(r[0]=0,r[2]=0,s="!"):e==62?(r[1]--,s=" ",r[1]<1&&!a?.length&&(r[0]=0,s="!")):e<63?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(a=`GM2Vox0${c}`,s="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?s=" ":(a="",s="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,s="!"):r[0]==0?(r[2]=0,s="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,s="!"):(r[0]=0,s="?"));let f=[r[0],r[1],r[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&o=="xg"?p="XG":p="GS")}return{name:a||`${H(e||0)} ${H(n||0)} ${H(c||0)}`,iid:l,eid:f,sid:t,ending:s,sect:i,standard:p}}async load(e,n,c){let o=this,t=[],a=0,r=0;e.split(` `).forEach(function(s,i){let h=s.split(" "),d=[];i==0?h.forEach(function(l,f){t[De.indexOf(l)]=f}):h.forEach(async function(l,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],a++),r++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${c||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],c=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=c[0];t<=c[1];t++){let a=t<<7;for(let r=o[0];r<=o[1];r++){let s=a+r;for(let i=n[0];i<=n[1];i++)delete this.#t[i][s]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(c,o){try{await fetch(`./data/bank/${c}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,c)})}catch{console.error(`Failed loading "${c}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let c=!0;return n.forEach((o,t)=>{c=c&&e[t]==o}),c},ee=function(e){let n=0;return e.forEach(c=>{n*=256,n+=c}),n},R=new TextDecoder,A=new J;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),c="MSB LSB PRG NME",o=[0,0,0,0],t=32,a=0,r=0,s=!0,i=[],h=0;for(;s;){let d=n.subarray(a);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(Ie(d.subarray(0,4),o))i.forEach((l,f,p)=>{let b=ee(n.subarray(l.start+4,l.start+8));l.length=b}),r=2;else{let l=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));i.push({type:l,start:f}),a+=8}},()=>{let l=i[h],f=n.subarray(l.start,l.start+l.length),p=32;switch(l.type){case"ENVC":{let b=t;for(;b0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(l,c,h){i&&l!=n[c]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...o):this.pool[f].data(n.slice(this.pool[f].length),...o):this.default(n,...o)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),f=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var ce=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},H=class{#t;strictMode=!1;get(e=0,n=0,o=0,f){let t=[e,n,o],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{o==126?r[2]=125:o==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{r[0]+=16,o==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(r[2]=0);break}}break}case"gs":{e==0&&o<5?r[2]=0:e>125&&o<5&&o!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&o==0&&(r[2]=5);break}case"s90es":{o<8?r[2]+=17:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{o<8?r[2]+=28:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",l=0,c=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",l=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,l=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(c=63),l=3;break}case 97:{s="VL:",l=3,c=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(c=63),l=3;break}case 100:{s="AN",r[2]>63&&(c=63),l=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,l=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,o,r[0],r[2]][l]-c}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(o||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,o){let f=this,t=[],a=0,r=0;e.split(` -`).forEach(function(i,s){let l=i.split(" "),c=[];s==0?l.forEach(function(h,b){t[ce.indexOf(h)]=b}):l.forEach(async function(h,b){b>2?(f.#t[c[t[1]]]=f.#t[c[t[1]]]||[],(!f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]?.length||n)&&(f.#t[c[t[1]]][(c[t[0]]<<7)+c[t[2]]]=l[3],a++),r++):c.push(parseInt(l[b]))})}),n||console.debug(`Map "${o||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,f){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let o=!0;return n.forEach((f,t)=>{o=o&&e[t]==f}),o},V=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],l=0;for(;i;){let c=n.subarray(a);([()=>{v.decode(c.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(c.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(c.subarray(0,4)),b=V(c.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[l],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(c,l,h){i&&c!=n[l]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...o):this.pool[f].data(n.slice(this.pool[f].length),...o):this.default(n,...o)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),f=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var le=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},H=class{#t;strictMode=!1;get(e=0,n=0,o=0,f){let t=[e,n,o],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{o==126?r[2]=125:o==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{o==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(r[2]=0);break}}break}case"gs":{e==0&&o<5?r[2]=0:e>125&&o<5&&o!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&o==0&&(r[2]=5);break}case"s90es":{o<8?r[2]+=17:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{o<8?r[2]+=28:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",c=0,l=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",c=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,c=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),c=3;break}case 97:{s="VL:",c=3,l=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(l=63),c=3;break}case 100:{s="AN",r[2]>63&&(l=63),c=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,c=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,o,r[0],r[2]][c]-l}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(o||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,o){let f=this,t=[],a=0,r=0;e.split(` +`).forEach(function(i,s){let c=i.split(" "),l=[];s==0?c.forEach(function(h,b){t[le.indexOf(h)]=b}):c.forEach(async function(h,b){b>2?(f.#t[l[t[1]]]=f.#t[l[t[1]]]||[],(!f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]?.length||n)&&(f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]=c[3],a++),r++):l.push(parseInt(c[b]))})}),n||console.debug(`Map "${o||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,f){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let o=!0;return n.forEach((f,t)=>{o=o&&e[t]==f}),o},V=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],c=0;for(;i;){let l=n.subarray(a);([()=>{v.decode(l.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(l.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(l.subarray(0,4)),b=V(l.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[c],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return o});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,o=-.3;return e>66?(n=5,o=315):e>56?(n=1,o=47):e>46&&(n=.5,o=18.5),n*e-o},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +063 ${(w[17]+1).toString().padStart(3,"0")} ${w[19].toString().padStart(3,"0")} ${M}`),y+=$}break}}c++,c>=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return o});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,o=-.3;return e>66?(n=5,o=315):e>56?(n=1,o=47):e>46&&(n=.5,o=18.5),n*e-o},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,o){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,o,e),o++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var le={length:A.length};A.forEach((e,n)=>{le[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],o=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(o,t)):f==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},oe=function(e,n="",o="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${o}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#o=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#l=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#c=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(o==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let o=e*128+n,f=this.#c.lastIndexOf(o);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#l[o],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#l[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#c[f]=0,this.#l[o]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#c[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_HELD){let f=this.#c[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#c[o]=0,this.#l[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,o)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[o]=f;let t=this.#c[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#l[t],state:f})}})},soOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#c[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#c[o]=0,this.#l[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#c.forEach((n,o,f)=>{let t=n>>7,a=n&127;n==0&&this.#l[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,o=e.data[0];this.#h.nOff(n,o)},9:function(e){let n=e.channel;this.#o[n]=1;let o=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,o,f):this.#h.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#c.indexOf(o)>-1&&(this.#l[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#o[n]=1);break}e.data[1]&&(this.#o[n]=1);break}default:{this.#o[n]=1;break}}})();let o=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[o+d[99]],t=this.#e[o+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[o+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+le[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[o+d[100]]];this.#e[o+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&I[this.#e[o+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#o[n]=1);break}default:this.#o[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#c.forEach(function(f){let t=f>>7;o==t&&(n.#l[f]=e.data,n.dispatchEvent("note",{part:o,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let o=n[0],f=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(o,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#F.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#T.run(n,o,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,o)=>{this.#U.run(n,o,e)},67:(e,n,o)=>{this.#w.run(n,o,e)},68:(e,n,o)=>{this.#V.run(n,o,e)},71:(e,n,o)=>{this.#K.run(n,o,e)},126:(e,n,o)=>{this.#I.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#X.run(n,o,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#o.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,o=this.#e.subarray(n,n+u.cc);return o[d[0]]=o[d[0]]||this.#H,o[d[32]]=o[d[32]]||this.#y,o}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[o])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,o=this;return o.#c.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&o.#l[f]>0&&n.set(r,{v:o.#l[f],s:o.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#c.forEach(function(n){let o=Math.floor(n/128);e.#l[n]>e.#C[o]&&(e.#C[o]=e.#l[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,f){e[f]=Math.floor(o*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,o,f){let t=e||this.#H,a=n,r=o||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),l=s*u.cmt,c="";this.#N.subarray(l,l+10).forEach(h=>{h>31&&(c+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${c}`,!0),i.name=c,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,f=3200){let t=this,a;t.#M=" ".repeat(o),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let o=this.#R[n];if(o){if(U.indexOf(o)>=0)return this.#e[e*u.cc+d[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#o.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#l.fill(0),this.#c.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#S=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,o,f){f[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=o,this.#p=0,this.#H=se[0][o],this.#y=se[1][o];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[o]);switch(this.initOnReset,o){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#o[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(o){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(f=>{e.channel=f,o=!0,this.#j[e.type].call(this,e)}),o||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,o){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,o,e),o++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var ce={length:A.length};A.forEach((e,n)=>{ce[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],o=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(o,t)):f==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},oe=function(e,n="",o="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${o}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#o=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#c=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#l=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(o==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let o=e*128+n,f=this.#l.lastIndexOf(o);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#c[o],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#c[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#l[f]=0,this.#c[o]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#l[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_HELD){let f=this.#l[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#l[o]=0,this.#c[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,o)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[o]=f;let t=this.#l[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#c[t],state:f})}})},soOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#l[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#l[o]=0,this.#c[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#l.forEach((n,o,f)=>{let t=n>>7,a=n&127;n==0&&this.#c[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,o=e.data[0];this.#h.nOff(n,o)},9:function(e){let n=e.channel;this.#o[n]=1;let o=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,o,f):this.#h.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#l.indexOf(o)>-1&&(this.#c[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#o[n]=1);break}e.data[1]&&(this.#o[n]=1);break}default:{this.#o[n]=1;break}}})();let o=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[o+d[99]],t=this.#e[o+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[o+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+ce[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[o+d[100]]];this.#e[o+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&I[this.#e[o+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#o[n]=1);break}default:this.#o[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#l.forEach(function(f){let t=f>>7;o==t&&(n.#c[f]=e.data,n.dispatchEvent("note",{part:o,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let o=n[0],f=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(o,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#F.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#T.run(n,o,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,o)=>{this.#U.run(n,o,e)},67:(e,n,o)=>{this.#w.run(n,o,e)},68:(e,n,o)=>{this.#V.run(n,o,e)},71:(e,n,o)=>{this.#K.run(n,o,e)},126:(e,n,o)=>{this.#I.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#X.run(n,o,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#o.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,o=this.#e.subarray(n,n+u.cc);return o[d[0]]=o[d[0]]||this.#H,o[d[32]]=o[d[32]]||this.#y,o}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[o])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,o=this;return o.#l.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&o.#c[f]>0&&n.set(r,{v:o.#c[f],s:o.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#l.forEach(function(n){let o=Math.floor(n/128);e.#c[n]>e.#C[o]&&(e.#C[o]=e.#c[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,f){e[f]=Math.floor(o*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,o,f){let t=e||this.#H,a=n,r=o||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),c=s*u.cmt,l="";this.#N.subarray(c,c+10).forEach(h=>{h>31&&(l+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,f=3200){let t=this,a;t.#M=" ".repeat(o),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let o=this.#R[n];if(o){if(U.indexOf(o)>=0)return this.#e[e*u.cc+d[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#o.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#c.fill(0),this.#l.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#S=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,o,f){f[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=o,this.#p=0,this.#H=se[0][o],this.#y=se[1][o];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[o]);switch(this.initOnReset,o){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#o[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(o){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(f=>{e.channel=f,o=!0,this.#j[e.type].call(this,e)}),o||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${oe(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${oe(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#T=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let l=s+t[0];([r,r,r,r,c=>{this.#b=c*129/16383*100},c=>{},c=>{}][l]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,l=i-1&3,c=`XG EQ ${s} ${["gain","freq","Q","shape"][l]}: `;[()=>{console.debug(`${c}${a-64}dB`)},()=>{console.debug(`${c}${a} (raw)`)},()=>{console.debug(`${c}${a/10}`)},()=>{console.debug(`${c}${["shelf","peak"][+!!a]}`)}][l]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,l)=>{([c=>{e.setEffectTypeRaw(3+a,!1,c),console.info(`${i}main type: ${R[c]}`)},c=>{e.setEffectTypeRaw(3+a,!0,c),console.debug(`${i}sub type: ${c+1}`)}][r+l]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,l=`XG CH${r+1} `,c=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(c):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${l}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(c):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(c):i<116?console.debug(`${l}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(c):i<120?console.debug(`${l}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(c)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((l,c)=>{let h=c+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][l]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(l)}`),l&&l<96&&e.allocateAce(l)):console.debug(`${s}${b} scale break point: ${l}`):console.debug(`${s}${b} depth: ${l-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,l)=>{let c=r+l;c==8?console.debug(`${i}LCD contrast set to ${s}.`):c==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):c>=64&&c<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][c-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let l="",c=0;t.subarray(2).forEach((h,b)=>{b%2==0?l+=Y[h]||h.toString().padStart("0"):c+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(l)}`,e.#Y=s+Math.ceil(c/2)+e.#Q,k()&&console.debug(`${i}vocals: ${l}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let l=e.eprom.data;t.subarray(4).forEach((c,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)l[s+7*b+$]+=(c>>6-$&1)<<7;else l[s+7*b+p]=c})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((l,c)=>{let h=c>>3,b=c&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(l>>6-p&1)<<7;else s[i+7*h+b]=l})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(l,c)=>{i[c]=l};if(t.subarray(1).forEach((l,c)=>{let h=c+t[0];[s,s,s,s,()=>{this.#b=l*129/16383*100},()=>l-64,()=>l||128,()=>l,()=>l,()=>{console.debug(`TG300 variation on cc${l}.`)}][h](l,h)}),t[0]<4){let l=0;i.forEach(c=>{l=l<<4,l+=c}),l-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],l=u.cc*i,c=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[l+d[0]]=h},()=>{e.#e[l+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[l+d[7]]=h},!1,!1,()=>{e.#e[l+d[10]]=h||128},!1,!1,()=>{console.debug(`${c} AC1 at cc${h}`)},()=>{console.debug(`${c} AC2 at cc${h}`)},()=>{e.#e[l+d[128]]=h},()=>{e.#e[l+d[93]]=h},()=>{e.#e[l+d[91]]=h},()=>{e.#e[l+d[94]]=h},()=>{e.#e[l+d[76]]=h},()=>{e.#e[l+d[77]]=h},()=>{e.#e[l+d[74]]=h},()=>{e.#e[l+d[71]]=h},()=>{e.#e[l+d[73]]=h},()=>{e.#e[l+d[75]]=h},()=>{e.#e[l+d[72]]=h},()=>{e.#e[l+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[l+d[65]]=h},()=>{e.#e[l+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let l=Math.floor(s/16),c=s%16,h=(c*3+l)*7,b=7,p=0;for(h-=c*5,l==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(l,c)=>{i[c]=l};if(t.subarray(1).forEach((l,c)=>{let h=c+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](l,c)}),t[0]<4){let l=0;i.forEach(c=>{l=l<<4,l+=c}),l-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let l=ee(e.#g.subarray(10,12),s,i);l&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${l}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(l,c){console.warn(`Unknown GS EFX address: ${c}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#S=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#S=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,r){let i=t[0],s=u.cc*a,l=u.rpn*a,c=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${c}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[l+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${c}CC 1: cc${h}`)},()=>{console.debug(`${c}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[l+1]=h},()=>{e.#s[l+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,l)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+l]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,l)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+l-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),l=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[l+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[l+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[l+d[0]]=62))},()=>{e.#e[l+d[7]]=i},()=>{i<31&&(e.#e[l+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[l+d[93]]=D(i)},()=>{e.#e[l+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,l=0,c="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` -${i} ${s} ${l} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,l=0,c="MSB PRG LSB NME";S(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{c+=` -${i} ${s} ${l} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(c)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,l){if(i<192){let c=e.chRedir(Math.floor(i/12),a,!0),h=c*u.cc;switch(i%12){case 0:{r<128?(e.setChType(c,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[c]=r):(e.setChType(c,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[c]=ne[r-128]),r>0&&(e.#o[c]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[c*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[c*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[c]=r,(b!=c||p)&&(console.info(`X5D Part CH${c+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let c=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((l,c)=>{let h=c+s;e.#A[h+(i-1)*16]=l,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=l+40},()=>{e.#s[i*u.rpn+1]=l+14},()=>{e.#s[i*u.rpn]=l},!1,()=>{e.#e[u.cc*i+d[91]]=l?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=l},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(l*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((l,c)=>{let h=c+s;h<14&&(e.#k[(i-1)*u.cmt+h]=l)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,l)=>{let c=l+i;e.#A[c]=s;let h=e.chRedir(1+c>>4,a,!0),b=c&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,l)=>{let c=l+i,h=e.chRedir(Math.floor(c/246+1),a,!0),b=c%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,l)=>{let c=i+l,h=Math.floor(c/8),b=c&7,p=h*8;e.#q[c]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME -000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,l)=>{let c=i+l;c>1)*u.cmt+c]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,l=function(c,h){e.#f[h-12]=c,s=!0};t.subarray(2).forEach((c,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,l,l,l,l,l,l,l,l,l,()=>{e.#b=c}][b]||(()=>{}))(c,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(l,c)=>{i[c]=l};if(t.subarray(1).forEach((l,c)=>{[s,s,s,s,()=>{e.#b=l*129/16383*100},()=>l-64,()=>l-64,()=>{},()=>{},()=>{}][r+c]()}),t[0]<4){let l=0;i.forEach(c=>{l=l<<4,l+=c}),l-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],l=`NS5R CH${r+1} `;t.subarray(2).forEach((c,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=c||121},()=>{e.#e[i+d[32]]=c},()=>{e.#r[r]=c}][b]():b<8||(b<14?[()=>{let p=e.chRedir(c,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[r]=+!c},()=>{e.setChType(r,c,g.ns5r),console.debug(`${l}type: ${O[c]}`)},()=>{e.#s[u.rpn*r+3]=c},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=c},()=>{e.#e[i+d[11]]=c},()=>{},()=>{},()=>{e.#e[i+d[10]]=c||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=c},()=>{e.#e[i+d[91]]=c},()=>{e.#e[i+d[76]]=c},()=>{e.#e[i+d[77]]=c},()=>{e.#e[i+d[78]]=c},()=>{e.#e[i+d[74]]=c},()=>{e.#e[i+d[71]]=c},()=>{e.#e[i+d[73]]=c},()=>{e.#e[i+d[75]]=c},()=>{e.#e[i+d[72]]=c}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=c},()=>{e.#e[i+d[65]]=c}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#S=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),l=4;s.forEach(function(c,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),l=s*u.cc;switch(i%92){case 0:{e.#e[l+d[0]]=r||121;break}case 1:{e.#e[l+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#o[s]=1);break}case 3:{let c=e.chRedir(r,a,!0);e.#f[s]=c,s!=c&&(console.info(`NS5R CH${s+1} receives from CH${c+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[l+d[7]]=r;break}case 11:{e.#e[l+d[11]]=r;break}case 14:{e.#e[l+d[10]]=r||128;break}case 19:{e.#e[l+d[93]]=r;break}case 20:{e.#e[l+d[91]]=r;break}case 84:{e.#e[l+d[65]]=r;break}case 85:{e.#e[l+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,l=0,c="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{l=h&127;break}case p==13:{c+=` -${i} ${s} ${l} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(c)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,l=0,c="MSB PRG LSB NME";S(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{c+=` -${i} ${s} ${l} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(c)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let l=0;l<8;l++)a[i*8+l]=r>>7-l&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,l=u.rpn*i,c=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{c<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=c):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=c-128)},()=>{let b=e.chRedir(c,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=c},()=>{e.#o[i]=c},()=>{e.#e[s+d[10]]=c},()=>{e.#s[l+3]=c+40},()=>{e.#s[l+1]=c>>1,e.#s[l+2]=c&1},()=>{e.#e[s+d[91]]=c?127:0},()=>{},()=>{e.#e[s+d[74]]=c},()=>{e.#e[s+d[73]]=c},()=>{e.#e[s+d[72]]=c}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),l=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[l+d[0]]=0,e.#e[l+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[l+d[0]]=0,e.#e[l+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[l+d[0]]=122,e.#e[l+d[32]]=0,e.#r[s]=i-160)},()=>{let c=e.chRedir(i,a,!0);e.#f[s]=c,s!=c&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${c+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),l=s*u.cc,c=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#o[s]=i},()=>{e.#e[l+d[7]]=i},()=>{e.#e[l+d[10]]=i},()=>{e.#e[l+d[91]]=i?127:0},()=>{e.#s[c+3]=i+40},()=>{e.#s[c+1]=i},()=>{e.#s[c]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${l+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((l,c)=>{([()=>{e.#b=l*12900/16383}][s+c]||(()=>{console.info(`Unrecognized ${i}ID: ${s+c}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(l,c,h)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(l,c,h)=>{console.debug(`${i}multi edit buffer: ${l[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,l=t[1],c=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(c,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#o[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#o[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][l+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,l)=>{let h=`S90/Motif ES EQ${(l>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+l&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,le as dnToPos}; +122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${oe(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${oe(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#T=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let c=s+t[0];([r,r,r,r,l=>{this.#b=l*129/16383*100},l=>{},l=>{}][c]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,c=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,c)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${R[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][r+c]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,c=`XG CH${r+1} `,l=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(l):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${c}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(l):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(l):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(l)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((c,l)=>{let h=l+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${s}${b} scale break point: ${c}`):console.debug(`${s}${b} depth: ${c-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,c)=>{let l=r+c;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let c="",l=0;t.subarray(2).forEach((h,b)=>{b%2==0?c+=Y[h]||h.toString().padStart("0"):l+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(c)}`,e.#Y=s+Math.ceil(l/2)+e.#Q,k()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;t.subarray(4).forEach((l,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)c[s+7*b+$]+=(l>>6-$&1)<<7;else c[s+7*b+p]=l})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((c,l)=>{let h=l>>3,b=l&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(c>>6-p&1)<<7;else s[i+7*h+b]=c})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(c,l)=>{i[l]=c};if(t.subarray(1).forEach((c,l)=>{let h=l+t[0];[s,s,s,s,()=>{this.#b=c*129/16383*100},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][h](c,h)}),t[0]<4){let c=0;i.forEach(l=>{c=c<<4,c+=l}),c-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],c=u.cc*i,l=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[c+d[0]]=h},()=>{e.#e[c+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[c+d[7]]=h},!1,!1,()=>{e.#e[c+d[10]]=h||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${h}`)},()=>{console.debug(`${l} AC2 at cc${h}`)},()=>{e.#e[c+d[128]]=h},()=>{e.#e[c+d[93]]=h},()=>{e.#e[c+d[91]]=h},()=>{e.#e[c+d[94]]=h},()=>{e.#e[c+d[76]]=h},()=>{e.#e[c+d[77]]=h},()=>{e.#e[c+d[74]]=h},()=>{e.#e[c+d[71]]=h},()=>{e.#e[c+d[73]]=h},()=>{e.#e[c+d[75]]=h},()=>{e.#e[c+d[72]]=h},()=>{e.#e[c+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[c+d[65]]=h},()=>{e.#e[c+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let c=Math.floor(s/16),l=s%16,h=(l*3+c)*7,b=7,p=0;for(h-=l*5,c==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(c,l)=>{i[l]=c};if(t.subarray(1).forEach((c,l)=>{let h=l+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](c,l)}),t[0]<4){let c=0;i.forEach(l=>{c=c<<4,c+=l}),c-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let c=ee(e.#g.subarray(10,12),s,i);c&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${c}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(c,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#S=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#S=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,r){let i=t[0],s=u.cc*a,c=u.rpn*a,l=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${l}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[c+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${h}`)},()=>{console.debug(`${l}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[c+1]=h},()=>{e.#s[c+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,c)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+c]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+c-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),c=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[c+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[c+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[c+d[0]]=62))},()=>{e.#e[c+d[7]]=i},()=>{i<31&&(e.#e[c+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[c+d[93]]=D(i)},()=>{e.#e[c+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` +${i} ${s} ${c} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` +${i} ${s} ${c} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,c){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),h=l*u.cc;switch(i%12){case 0:{r<128?(e.setChType(l,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[l]=r):(e.setChType(l,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[l]=ne[r-128]),r>0&&(e.#o[l]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[l*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[l*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[l]=r,(b!=l||p)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((c,l)=>{let h=l+s;e.#A[h+(i-1)*16]=c,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=c+40},()=>{e.#s[i*u.rpn+1]=c+14},()=>{e.#s[i*u.rpn]=c},!1,()=>{e.#e[u.cc*i+d[91]]=c?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=c},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(c*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((c,l)=>{let h=l+s;h<14&&(e.#k[(i-1)*u.cmt+h]=c)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,c)=>{let l=c+i;e.#A[l]=s;let h=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,c)=>{let l=c+i,h=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,c)=>{let l=i+c,h=Math.floor(l/8),b=l&7,p=h*8;e.#q[l]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME +000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,c)=>{let l=i+c;l>1)*u.cmt+l]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,c=function(l,h){e.#f[h-12]=l,s=!0};t.subarray(2).forEach((l,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{e.#b=l}][b]||(()=>{}))(l,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(c,l)=>{i[l]=c};if(t.subarray(1).forEach((c,l)=>{[s,s,s,s,()=>{e.#b=c*129/16383*100},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][r+l]()}),t[0]<4){let c=0;i.forEach(l=>{c=c<<4,c+=l}),c-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],c=`NS5R CH${r+1} `;t.subarray(2).forEach((l,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=l||121},()=>{e.#e[i+d[32]]=l},()=>{e.#r[r]=l}][b]():b<8||(b<14?[()=>{let p=e.chRedir(l,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#E[r]=+!l},()=>{e.setChType(r,l,g.ns5r),console.debug(`${c}type: ${O[l]}`)},()=>{e.#s[u.rpn*r+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=l},()=>{e.#e[i+d[11]]=l},()=>{},()=>{},()=>{e.#e[i+d[10]]=l||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=l},()=>{e.#e[i+d[91]]=l},()=>{e.#e[i+d[76]]=l},()=>{e.#e[i+d[77]]=l},()=>{e.#e[i+d[78]]=l},()=>{e.#e[i+d[74]]=l},()=>{e.#e[i+d[71]]=l},()=>{e.#e[i+d[73]]=l},()=>{e.#e[i+d[75]]=l},()=>{e.#e[i+d[72]]=l}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=l},()=>{e.#e[i+d[65]]=l}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#S=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),c=4;s.forEach(function(l,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),c=s*u.cc;switch(i%92){case 0:{e.#e[c+d[0]]=r||121;break}case 1:{e.#e[c+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#o[s]=1);break}case 3:{let l=e.chRedir(r,a,!0);e.#f[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[c+d[7]]=r;break}case 11:{e.#e[c+d[11]]=r;break}case 14:{e.#e[c+d[10]]=r||128;break}case 19:{e.#e[c+d[93]]=r;break}case 20:{e.#e[c+d[91]]=r;break}case 84:{e.#e[c+d[65]]=r;break}case 85:{e.#e[c+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{c=h&127;break}case p==13:{l+=` +${i} ${s} ${c} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{l+=` +${i} ${s} ${c} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=r>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,c=u.rpn*i,l=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=l):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=l},()=>{e.#o[i]=l},()=>{e.#e[s+d[10]]=l},()=>{e.#s[c+3]=l+40},()=>{e.#s[c+1]=l>>1,e.#s[c+2]=l&1},()=>{e.#e[s+d[91]]=l?127:0},()=>{},()=>{e.#e[s+d[74]]=l},()=>{e.#e[s+d[73]]=l},()=>{e.#e[s+d[72]]=l}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),c=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[c+d[0]]=0,e.#e[c+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[c+d[0]]=0,e.#e[c+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[c+d[0]]=122,e.#e[c+d[32]]=0,e.#r[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),c=s*u.cc,l=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#o[s]=i},()=>{e.#e[c+d[7]]=i},()=>{e.#e[c+d[10]]=i},()=>{e.#e[c+d[91]]=i?127:0},()=>{e.#s[l+3]=i+40},()=>{e.#s[l+1]=i},()=>{e.#s[l]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let c=e.chRedir(i,a,!0);e.#f[s]=c,s!=c&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${c+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((c,l)=>{([()=>{e.#b=c*12900/16383}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(c,l,h)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(c,l,h)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,c=t[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#o[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#o[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][c+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,c)=>{let h=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+c&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,ce as dnToPos}; diff --git a/dist/state_skim.mjs b/dist/state_skim.mjs index 3edacd92..b76a575a 100644 --- a/dist/state_skim.mjs +++ b/dist/state_skim.mjs @@ -138,7 +138,7 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[2]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` +`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[2]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` `).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],B=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],I={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},H=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#I=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#H=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],H[i][0]),H[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#G.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#B.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#G;#B;#J;buildRchTree(){let e=[];this.#I.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG 0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#H.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#I.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#H.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=B[0][s],this.#u=B[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${I[e.type]?I[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index d26ae93f..24277940 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -1,4 +1,4 @@ -var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),m=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var E,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(E=h[o])!=null&&E.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(E){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:E}),d++,d>4294967295&&(d=0)}else b.push(E),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var E=b.shift();s.postMessage(E)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(E){E.c==o?E.i!=f&&s.dispatchEvent(u("message",E.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(E.c,"."))};var v={};this.dispatchEvent=function(E){var x,A;if(Object.defineProperty(E,"target",{value:s}),Object.defineProperty(E,"currentTarget",{value:s}),(x=v[E.type])!=null&&x.length)for(var V=v[E.type],ae=0;ae-1&&v[E].splice(ae,1)}!((V=v[E])!=null&&V.length)&&v[E].constructor&&delete v[E]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||E>127&&E<160)throw new RangeError(`Invalid code point: ${E}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof mt<"u")mt.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){m(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){m(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=0,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=3);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=3;break}case 97:{i="VL:",s=3,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=3;break}case 100:{i="AN",a[2]>63&&(f=63),s=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[2]][s]-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` +var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),m=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var E,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(E=h[o])!=null&&E.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(E){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:E}),d++,d>4294967295&&(d=0)}else b.push(E),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var E=b.shift();s.postMessage(E)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(E){E.c==o?E.i!=f&&s.dispatchEvent(u("message",E.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(E.c,"."))};var v={};this.dispatchEvent=function(E){var x,A;if(Object.defineProperty(E,"target",{value:s}),Object.defineProperty(E,"currentTarget",{value:s}),(x=v[E.type])!=null&&x.length)for(var V=v[E.type],ae=0;ae-1&&v[E].splice(ae,1)}!((V=v[E])!=null&&V.length)&&v[E].constructor&&delete v[E]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||E>127&&E<160)throw new RangeError(`Invalid code point: ${E}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof mt<"u")mt.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){m(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){m(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=0,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=3);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=3;break}case 97:{i="VL:",s=3,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=3;break}case 100:{i="AN",a[2]>63&&(f=63),s=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[2]][s]-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` `).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);R();R();var Ge,Ot,Pt=(Ot=class{constructor(){m(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Dt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Pt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Dt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Dt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;ye in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var M=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var I,rt,it=(rt=class{constructor(){E(this,I,{})}addEventListener(b,e){t(this,I)[b]||(t(this,I)[b]=[]),t(this,I)[b].unshift(e)}removeEventListener(b,e){if(t(this,I)[b]){let n=t(this,I)[b].indexOf(e);n>-1&&t(this,I)[b].splice(n,1),t(this,I)[b].length<1&&delete t(this,I)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,I)[b])==null?void 0:d.length)>0&&t(this,I)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},I=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);M(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:{a[0]+=16,n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[2]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` +var Rt=Object.defineProperty;var Ot=(b,e,n)=>e in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var M=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var I,rt,it=(rt=class{constructor(){E(this,I,{})}addEventListener(b,e){t(this,I)[b]||(t(this,I)[b]=[]),t(this,I)[b].unshift(e)}removeEventListener(b,e){if(t(this,I)[b]){let n=t(this,I)[b].indexOf(e);n>-1&&t(this,I)[b].splice(n,1),t(this,I)[b].length<1&&delete t(this,I)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,I)[b])==null?void 0:d.length)>0&&t(this,I)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},I=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);M(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[2]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` `).forEach(function(o,i){let r=o.split(" "),c=[];i==0?r.forEach(function(h,f){d[Dt.indexOf(h)]=f}):r.forEach(async function(h,f){var g;f>2?(t(l,F)[c[d[1]]]=t(l,F)[c[d[1]]]||[],(!((g=t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]])!=null&&g.length)||e)&&(t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]]=r[3],s++),a++):c.push(parseInt(r[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${s} loaded.`)}clearRange(b){let e=b.prg!=null?b.prg.constructor==Array?b.prg:[b.prg,b.prg]:[0,127],n=b.msb!=null?b.msb.constructor==Array?b.msb:[b.msb,b.msb]:[0,127],l=b.lsb!=null?b.lsb.constructor==Array?b.lsb:[b.lsb,b.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let a=l[0];a<=l[1];a++){let o=s+a;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let b=0;b<128;b++)t(this,F).push([""])}async loadFiles(...b){this.init();let e=this;b.forEach(async function(n,l){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,ct=(ot=class{constructor(){E(this,Oe,{});M(this,"context")}set(b,e){t(this,Oe)[b]=e}has(b){return!!t(this,Oe)[b]}async read(b,e){if(!this.has(b))throw new Error(`No decoder registered for "${b}"`);return await t(this,Oe)[b].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(b,e){let n=!0;return e.forEach((l,d)=>{n=n&&b[d]==l}),n},lt=function(b){let e=0;return b.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new ct;Ve.set("s7e",async function(b){let e=new Uint8Array(await b.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",l=[0,0,0,0],d=32,s=0,a=0,o=!0,i=[],r=0;for(;o;){let c=e.subarray(s);([()=>{Le.decode(c.subarray(0,4))=="YSFC"?(s+=80,a=1):s++},()=>{if(Pt(c.subarray(0,4),l))i.forEach((h,f,g)=>{let y=lt(e.subarray(h.start+4,h.start+8));h.length=y}),a=2;else{let h=Le.decode(c.subarray(0,4)),f=lt(c.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[r],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;y= 0; c --) { - let pixX = (i % 32) * 4 + 12, - pixY = (i > 31 ? 32 : 39) - c; + let pixX = (i % 32) * 4 + 12, pixY = 0; + if (maxCh < 64) { + pixY = (i > 31 ? 32 : 39) - c; + } else { + let shifter = i % 64; + pixY = (i > 63 ? 31 : 39) - c - (shifter > 31 ? 2 : 0); + if (shifter > 31) { + pixX ++; + }; + }; if (trueMode) { pixX ++; }; From 7f26fabad4f3d07ed62ad3f9c6b90d8a73e3a8e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Tue, 13 Jun 2023 16:06:37 +0000 Subject: [PATCH 19/31] NSX5R XD --- src/disp/disp_n5.mjs | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/src/disp/disp_n5.mjs b/src/disp/disp_n5.mjs index de11c743..c2286ba6 100644 --- a/src/disp/disp_n5.mjs +++ b/src/disp/disp_n5.mjs @@ -251,24 +251,19 @@ let Ns5rDisplay = class extends RootDisplay { }); // Render channel strength let showReduction = 22; - if (maxCh > 31) { + if (maxCh > 63) { showReduction = 43; }; - sum.strength.forEach((e, i) => { + for (let i = sum.strength.length - 1; i >= 0; i --) { + let e = sum.strength[i]; if (maxCh < 32 && i > 31) { - return; + continue; + }; + if (maxCh < 64 && i > 63) { + continue; }; for (let c = Math.floor(e / showReduction); c >= 0; c --) { - let pixX = (i % 32) * 4 + 12, pixY = 0; - if (maxCh < 64) { - pixY = (i > 31 ? 32 : 39) - c; - } else { - let shifter = i % 64; - pixY = (i > 63 ? 31 : 39) - c - (shifter > 31 ? 2 : 0); - if (shifter > 31) { - pixX ++; - }; - }; + let pixX = (i % 32) * 4 + 12 + ((i >> 5) & 1), pixY = 39 - (((i >> 5) & 1) << 1) - c - ((i >> 6) << 3); if (trueMode) { pixX ++; }; @@ -276,7 +271,7 @@ let Ns5rDisplay = class extends RootDisplay { this.#nmdb[pixY * 144 + pixX + 1] = this.#pixelLit; this.#nmdb[pixY * 144 + pixX + 2] = this.#pixelLit; }; - }); + }; // Render effect types let efxShow = this.device.aiEfxName.slice(0, 7 + +trueMode) || "Rev/Cho"; targetFont.getStr(trueMode ? `Fx A:001${efxShow}` : `FxA:001${efxShow}`).forEach((e0, i0) => { From c782e9773403ce672df251df69e433c50d312655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Wed, 14 Jun 2023 04:13:26 +0000 Subject: [PATCH 20/31] Placeholder for S90/Motif ES and KROSS 2 voices. --- data/bitmaps/xg/system.tsv | 1 + src/disp/disp_mu.mjs | 10 ++++++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/data/bitmaps/xg/system.tsv b/data/bitmaps/xg/system.tsv index ae37debc..8625ddd2 100644 --- a/data/bitmaps/xg/system.tsv +++ b/data/bitmaps/xg/system.tsv @@ -5,6 +5,7 @@ boot_2 03e002e007e07a1f720f64034947480198078803441f622f7147709b78237fdf boot_3 0000ffffe01faf55ef1fef55ef1faf55e01fffff0000db330950c97b0910c913 cat_sfx 00000000038004400fe03ff87ffc7ffc2aa81ff0044003800000054009200000 cat_smpl 00100034005036b224f836fa36f836f2007000340010618692496db6f3cfffff +cat_drm 000ee01f700018e400e400e4738437c477c47fe47c647fe47fe457c457ca5391 ext_an 3fff249f3f9f64ff7fff6a556a55ea55e001ffff0000cc8b12c8deab1298d28b ext_ap 3f807fc07ff0fffeffffffffffff94a98001ffff0000cc7b1248de7b1240d243 ext_dr 00006064306e01e073c47ff47e3473e453e451ca0000ec670a50ea670a50ec57 diff --git a/src/disp/disp_mu.mjs b/src/disp/disp_mu.mjs index 4e449caf..29b076f0 100644 --- a/src/disp/disp_mu.mjs +++ b/src/disp/disp_mu.mjs @@ -231,7 +231,7 @@ let MuDisplay = class extends RootDisplay { let voiceName = (upThis.getChVoice(this.#ch).name).slice(0, 8).padEnd(8, " "); let bnkSel = (sum.chContr[chOff + ccToPos[0]] == 64 ? "SFX" : sum.chContr[chOff + ccToPos[0]] || sum.chContr[chOff + ccToPos[32]] || 0).toString().padStart(3, "0"); if (upThis.getMode() == "xg") { - if ([80, 81, 82, 83, 84, 96, 97, 98, 99, 100].indexOf(sum.chContr[chOff + ccToPos[0]]) > -1) { + if ([48, 63, 80, 81, 82, 83, 84, 96, 97, 98, 99, 100].indexOf(sum.chContr[chOff + ccToPos[0]]) > -1) { bnkSel = `${sum.chContr[chOff + ccToPos[32]] || 0}`.padStart(3, "0"); showLsb = true; }; @@ -344,8 +344,14 @@ let MuDisplay = class extends RootDisplay { this.#bmst = 0; let standard = upThis.getChVoice(this.#ch).standard.toLowerCase(); useBm = this.voxBm.getBm(upThis.getChVoice(this.#ch).name) || this.voxBm.getBm(upThis.getVoice(sum.chContr[chOff] + ccToPos[0], sum.chProgr[this.#ch], 0, sum.mode).name); - if (["an", "ap", "dr", "dx", "pc", "pf", "sg", "vl"].indexOf(standard) > -1) { + if (sum.chType[this.#ch]) { + useBm = this.sysBm.getBm(`cat_drm`); + } else if (["an", "ap", "dr", "dx", "pc", "pf", "sg", "vl"].indexOf(standard) > -1) { useBm = this.sysBm.getBm(`ext_${standard}`); + } else if (["mu", "es"]. indexOf(standard) > -1) { + useBm = this.sysBm.getBm(`boot_3`); + } else if (standard == "kr") { + useBm = this.sysBm.getBm(`st_korg`); }; if (!useBm && (sum.chContr[chOff + ccToPos[0]] < 48 || sum.chContr[chOff + ccToPos[0]] == 56)) { useBm = this.voxBm.getBm(upThis.getVoice(0, sum.chProgr[this.#ch], 0, sum.mode).name) From edbec76851240d961681916d64c2cf0c05b14498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Wed, 14 Jun 2023 05:44:14 +0000 Subject: [PATCH 21/31] Bug fix regarding param displays on MU. --- src/disp/disp_mu.mjs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/disp/disp_mu.mjs b/src/disp/disp_mu.mjs index 29b076f0..dc83a0eb 100644 --- a/src/disp/disp_mu.mjs +++ b/src/disp/disp_mu.mjs @@ -19,7 +19,7 @@ let normParamPaint = function (sup, offsetX, ctx) { let paramH = mprHeight * 1.5 - 1; let sub = sup >> 4; for (let i = 0; i < 8; i ++) { - if (sub > 0 || (sub == 0 && i != 0)) { + if (sup > 0 && sub >= 0) { ctx.fillStyle = activePixel; } else { ctx.fillStyle = inactivePixel; @@ -43,7 +43,7 @@ let efxParamPaint = function (sup, offsetX, ctx, useWB, wbArr) { ctx.strokeStyle = inactivePixel; }; } else { - if (sub > 0 || (sub == 0 && i != 0)) { + if (sup > 0 && sub >= 0) { ctx.strokeStyle = activePixel; } else { ctx.strokeStyle = inactivePixel; @@ -230,8 +230,12 @@ let MuDisplay = class extends RootDisplay { if (rendMode < 2) { let voiceName = (upThis.getChVoice(this.#ch).name).slice(0, 8).padEnd(8, " "); let bnkSel = (sum.chContr[chOff + ccToPos[0]] == 64 ? "SFX" : sum.chContr[chOff + ccToPos[0]] || sum.chContr[chOff + ccToPos[32]] || 0).toString().padStart(3, "0"); + if ([63].indexOf(sum.chContr[chOff + ccToPos[0]]) > -1) { + bnkSel = `${sum.chContr[chOff + ccToPos[32]] || 0}`.padStart(3, "0"); + showLsb = true; + }; if (upThis.getMode() == "xg") { - if ([48, 63, 80, 81, 82, 83, 84, 96, 97, 98, 99, 100].indexOf(sum.chContr[chOff + ccToPos[0]]) > -1) { + if ([48, 80, 81, 82, 83, 84, 96, 97, 98, 99, 100].indexOf(sum.chContr[chOff + ccToPos[0]]) > -1) { bnkSel = `${sum.chContr[chOff + ccToPos[32]] || 0}`.padStart(3, "0"); showLsb = true; }; From b8bee46f0fd1b0ad88398c0359d5259e6fdd492a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Sat, 24 Jun 2023 10:30:17 +0000 Subject: [PATCH 22/31] K11 reverb type. --- dist/cambiare.mjs | 14 +++++++------- dist/state.mjs | 26 +++++++++++++------------- dist/xp_basic.mjs | 2 +- dist/xp_state.mjs | 2 +- docs/support/implementation.md | 12 ++++++------ docs/support/target.md | 4 ++-- src/state/index.mjs | 1 + 7 files changed, 31 insertions(+), 30 deletions(-) diff --git a/dist/cambiare.mjs b/dist/cambiare.mjs index 51d02919..9df3d634 100644 --- a/dist/cambiare.mjs +++ b/dist/cambiare.mjs @@ -1,8 +1,8 @@ -var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Me=Object.getOwnPropertyNames;var Te=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,c,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Ce.call(e,t)&&t!==c&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,c)=>(c=e!=null?Se(Te(e)):{},Oe(n||!e||!e.__esModule?j(c,"default",{value:e,enumerable:!0}):c,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],c={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return c.Uint8(o);if(typeof o=="string")return c.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return c.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let r=new FileReader;r.readAsArrayBuffer(a.target.files[0]),r.onload=function(s){t(c.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",l,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var a=t.length;let r=new Uint8Array(new ArrayBuffer(a));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)l+=p[p.length-b]*Math.pow(128,b);l+=f}return l}};if(t.data=new DataView(r.buffer,r.byteOffset,r.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var r=t.readInt(1),s=t.readInt(1);128<=r?(a.timeDivision=[],a.timeDivision[0]=r-128,a.timeDivision[1]=s):a.timeDivision=256*r+s;for(let l=1;l<=a.tracks;l++){a.track[l-1]={event:[]};var i,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,a.track[l-1].event[f-1]={},a.track[l-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){a.track[l-1].event[f-1].type=255,a.track[l-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[l-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[l-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[l-1].event[f-1].data=t.readInt(d);break;case 84:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1),a.track[l-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(t.readInt(d),a.track[l-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),a.track[l-1].event[f-1].type=parseInt(b[0],16),a.track[l-1].event[f-1].channel=parseInt(b[1],16),a.track[l-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(i=t.readIntVLV(),a.track[l-1].event[f-1].data=t.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[l-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[l-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof K<"u")K.exports=c;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=c}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),o=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var Z=function(e,n){let c=Math.min(e.length,n.length),o=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let o=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==o)a-=t;else{let i=Z(n,this.pool[a]);switch(i){case 0:{r=0;break}case 1:{a+t<=o&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${i}.`)}}t=t>>1,r--}let s=!0;if(a>=this.pool.length)s=!1;else{let i=this;this.pool[a].forEach(function(h,d,l){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[a])>0&&a++}return s||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...c):this.pool[o].data(n.slice(this.pool[o].length),...c):this.default(n,...c)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},B=class{#t;strictMode=!1;get(e=0,n=0,c=0,o){let t=[e,n,c],a,r=Array.from(arguments);switch(o){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let s=" ",i="M",h=0,d=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||o=="gs"&&r[2]<5?i="GM-a":(i="y",h=3);break}case 8:{o=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let b=r[2];i=b<10?"kP:":"kC:",i+=b%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(d=63),h=3;break}case 97:{i="VL:",h=3,d=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(d=63),h=3;break}case 100:{i="AN",r[2]>63&&(d=63),h=3;break}case 121:{i=`GM-${r[2]?"":"a"}`,h=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[e,c,r[0],r[2]][h]-d}`.padStart(4-i.length,"0")),o=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,s=" ");let l=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",s="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):(r[2]--,s="^"):e==48?(r[0]=0,r[2]=0,s="!"):e==62?(r[1]--,s=" ",r[1]<1&&!a?.length&&(r[0]=0,s="!")):e<63?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(a=`GM2Vox0${c}`,s="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?s=" ":(a="",s="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,s="!"):r[0]==0?(r[2]=0,s="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,s="!"):(r[0]=0,s="?"));let f=[r[0],r[1],r[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&o=="xg"?p="XG":p="GS")}return{name:a||`${H(e||0)} ${H(n||0)} ${H(c||0)}`,iid:l,eid:f,sid:t,ending:s,sect:i,standard:p}}async load(e,n,c){let o=this,t=[],a=0,r=0;e.split(` +var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var Me=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,c,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Te(n))!Ce.call(e,t)&&t!==c&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,c)=>(c=e!=null?Se(Me(e)):{},Oe(n||!e||!e.__esModule?j(c,"default",{value:e,enumerable:!0}):c,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],c={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return c.Uint8(o);if(typeof o=="string")return c.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return c.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let r=new FileReader;r.readAsArrayBuffer(a.target.files[0]),r.onload=function(s){t(c.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",l,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var a=t.length;let r=new Uint8Array(new ArrayBuffer(a));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)l+=p[p.length-b]*Math.pow(128,b);l+=f}return l}};if(t.data=new DataView(r.buffer,r.byteOffset,r.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var r=t.readInt(1),s=t.readInt(1);128<=r?(a.timeDivision=[],a.timeDivision[0]=r-128,a.timeDivision[1]=s):a.timeDivision=256*r+s;for(let l=1;l<=a.tracks;l++){a.track[l-1]={event:[]};var i,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,a.track[l-1].event[f-1]={},a.track[l-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){a.track[l-1].event[f-1].type=255,a.track[l-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[l-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[l-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[l-1].event[f-1].data=t.readInt(d);break;case 84:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1),a.track[l-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(t.readInt(d),a.track[l-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),a.track[l-1].event[f-1].type=parseInt(b[0],16),a.track[l-1].event[f-1].channel=parseInt(b[1],16),a.track[l-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(i=t.readIntVLV(),a.track[l-1].event[f-1].data=t.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[l-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[l-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof K<"u")K.exports=c;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=c}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),o=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var Z=function(e,n){let c=Math.min(e.length,n.length),o=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let o=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==o)a-=t;else{let i=Z(n,this.pool[a]);switch(i){case 0:{r=0;break}case 1:{a+t<=o&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${i}.`)}}t=t>>1,r--}let s=!0;if(a>=this.pool.length)s=!1;else{let i=this;this.pool[a].forEach(function(h,d,l){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[a])>0&&a++}return s||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...c):this.pool[o].data(n.slice(this.pool[o].length),...c):this.default(n,...c)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},B=class{#t;strictMode=!1;get(e=0,n=0,c=0,o){let t=[e,n,c],a,r=Array.from(arguments);switch(o){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let s=" ",i="M",h=0,d=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||o=="gs"&&r[2]<5?i="GM-a":(i="y",h=3);break}case 8:{o=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let b=r[2];i=b<10?"kP:":"kC:",i+=b%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(d=63),h=3;break}case 97:{i="VL:",h=3,d=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(d=63),h=3;break}case 100:{i="AN",r[2]>63&&(d=63),h=3;break}case 121:{i=`GM-${r[2]?"":"a"}`,h=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[e,c,r[0],r[2]][h]-d}`.padStart(4-i.length,"0")),o=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,s=" ");let l=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",s="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):(r[2]--,s="^"):e==48?(r[0]=0,r[2]=0,s="!"):e==62?(r[1]--,s=" ",r[1]<1&&!a?.length&&(r[0]=0,s="!")):e<63?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(a=`GM2Vox0${c}`,s="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?s=" ":(a="",s="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,s="!"):r[0]==0?(r[2]=0,s="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,s="!"):(r[0]=0,s="?"));let f=[r[0],r[1],r[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&o=="xg"?p="XG":p="GS")}return{name:a||`${H(e||0)} ${H(n||0)} ${H(c||0)}`,iid:l,eid:f,sid:t,ending:s,sect:i,standard:p}}async load(e,n,c){let o=this,t=[],a=0,r=0;e.split(` `).forEach(function(s,i){let h=s.split(" "),d=[];i==0?h.forEach(function(l,f){t[De.indexOf(l)]=f}):h.forEach(async function(l,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],a++),r++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${c||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],c=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=c[0];t<=c[1];t++){let a=t<<7;for(let r=o[0];r<=o[1];r++){let s=a+r;for(let i=n[0];i<=n[1];i++)delete this.#t[i][s]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(c,o){try{await fetch(`./data/bank/${c}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,c)})}catch{console.error(`Failed loading "${c}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let c=!0;return n.forEach((o,t)=>{c=c&&e[t]==o}),c},ee=function(e){let n=0;return e.forEach(c=>{n*=256,n+=c}),n},R=new TextDecoder,A=new J;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),c="MSB LSB PRG NME",o=[0,0,0,0],t=32,a=0,r=0,s=!0,i=[],h=0;for(;s;){let d=n.subarray(a);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(Ie(d.subarray(0,4),o))i.forEach((l,f,p)=>{let b=ee(n.subarray(l.start+4,l.start+8));l.length=b}),r=2;else{let l=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));i.push({type:l,start:f}),a+=8}},()=>{let l=i[h],f=n.subarray(l.start,l.start+l.length),p=32;switch(l.type){case"ENVC":{let b=t;for(;b=i.length&&(r=3,s=!1)}][r]||(()=>{s=!1}))()}return c});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ue=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ae=function(e){let n=.1,c=-.3;return e>66?(n=5,c=315):e>56?(n=1,c=47):e>46&&(n=.5,c=18.5),n*e-c},ie=function(e){return e>105?Ue[e-106]:e>100?e*1.1-100:e/10},re=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +063 ${($[17]+1).toString().padStart(3,"0")} ${$[19].toString().padStart(3,"0")} ${w}`),y+=b}break}}h++,h>=i.length&&(r=3,s=!1)}][r]||(()=>{s=!1}))()}return c});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ue=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],M=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ae=function(e){let n=.1,c=-.3;return e>66?(n=5,c=315):e>56?(n=1,c=47):e>46&&(n=.5,c=18.5),n*e-c},ie=function(e){return e>105?Ue[e-106]:e>100?e*1.1-100:e/10},re=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],ce=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},le=function(e,n,c){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,c){let o=[],t=c==!1?n.readIntVLV():c;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,o=0;for(let t=0;t>a&1)<<7,s=e[t];s+=r,t%8!=0?(n(s,c,e),c++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],M=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],c=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(c,t)):o==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",c="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${c}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#l=new Uint8Array(g.ch);#a=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#r=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#k=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#M=new Uint8Array(g.ch);#B=0;#i=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#T=new Uint8Array(g.ch);#U=new Uint8Array(128);#S=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#C="";#L=0;#Y=0;#x=!0;#c=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(c==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let c=e*128+n,o=this.#f.lastIndexOf(c);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[c]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let o=e*128+n,t=0;for(this.#k[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,c)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[c]=o;let t=this.#f[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,c,o)=>{let t=n>>7,a=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,a)})}};#J={8:function(e){let n=e.channel,c=e.data[0];this.#u.nOff(n,c)},9:function(e){let n=e.channel;this.#n[n]=1;let c=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,c,o):this.#u.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#f.indexOf(c)>-1&&(this.#d[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let c=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#k[n]=1,this.#u.ano(n);return}case 127:{this.#k[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let a=this.#e[g.cc*t];(a==56||a==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[c+u[99]],t=this.#e[c+u[98]];if(o==1){let a=Be.indexOf(t);if(a>-1)this.#e[c+u[71+a]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=ge.indexOf(t);r>-1?this.#K[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let r=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#a[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#a[n]]}.`):this.#j[(r*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#a[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[c+u[100]]];this.#e[c+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#i[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&X[this.#e[c+100]]!=null&&(this.#i[n*g.rpn+X[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#r[n]=e.data,this.#T[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#f.forEach(function(o){let t=o>>7;c==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:c,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let c=n[0],o=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(c,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#V.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#R.run(n,c,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,c)=>{this.#D.run(n,c,e)},67:(e,n,c)=>{this.#v.run(n,c,e)},68:(e,n,c)=>{this.#z.run(n,c,e)},71:(e,n,c)=>{this.#X.run(n,c,e)},126:(e,n,c)=>{this.#_.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#F.run(n,c,e)}};#_;#F;#v;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#l.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,c=this.#e.subarray(n,n+g.cc);return c[u[0]]=c[u[0]]||this.#N,c[u[32]]=c[u[32]]||this.#E,c}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=M[c])}getPitch(){return this.#I}getProgram(){return this.#r}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,c=this;return c.#f.forEach(function(o,t){let a=Math.floor(o/128),r=o%128;e==a&&c.#d[o]>0&&n.set(r,{v:c.#d[o],s:c.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#C,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let c=Math.floor(n/128);e.#d[n]>e.#M[c]&&(e.#M[c]=e.#d[n])}),this.#M}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,o){e[o]=Math.floor(c*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#i}getNrpn(){return this.#K}getVoice(e,n,c,o){let t=e||this.#N,a=n,r=c||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let s=this.userBank.get(t,a,r,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let i=parseInt(s.name.slice(5)),h=i*g.cmt,d="";this.#A.subarray(h,h+10).forEach(l=>{l>31&&(d+=String.fromCharCode(l))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${d}`,!0),s.name=d,s.ending=" "}return(s.ending!=" "||!s.name.length)&&(s=this.baseBank.get(t,a,r,o)),s}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#r[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#T[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#i[n]+(this.#i[n+3]-64)+((this.#i[n+1]<<7)+this.#i[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,o=3200){let t=this,a;t.#C=" ".repeat(c),e.forEach(r=>{t.#C+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#L=Date.now()+3200,t.#C=t.#C.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,s,i)=>{i[s]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let c=this.#b[n];if(c){if(I.indexOf(c)>=0)return this.#e[e*g.cc+u[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#r.fill(0),this.#d.fill(0),this.#f.fill(0),this.#M.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#C="",this.#h=0,this.#o=0,this.#g.fill(0),this.#c=!1,this.#Y=0,this.#x=!0,this.#l.forEach(function(n,c,o){o[c]=c}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#H.fill(0)),this.#e[g.cc*9]=M[0],this.#e[g.cc*25]=M[0],this.#e[g.cc*41]=M[0],this.#e[g.cc*57]=M[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#T.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=c,this.#o=0,this.#N=fe[0][c],this.#E=fe[1][c];for(let a=0;a0&&this.#e[a*g.cc+u[0]]==M[o]&&(this.#e[a*g.cc]=M[c]);switch(this.initOnReset,c){case m.mt32:{V.forEach((a,r)=>{let s=r+1;this.#n[s]||(this.#r[s]=a,this.#e[s*g.cc+u[91]]=127)});break}}let t;switch(c){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(o=>{e.channel=o,c=!0,this.#J[e.type].call(this,e)}),c||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],ce=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},le=function(e,n,c){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,c){let o=[],t=c==!1?n.readIntVLV():c;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,o=0;for(let t=0;t>a&1)<<7,s=e[t];s+=r,t%8!=0?(n(s,c,e),c++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],T=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],c=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(c,t)):o==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",c="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${c}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#l=new Uint8Array(g.ch);#a=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#r=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#k=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#T=new Uint8Array(g.ch);#B=0;#i=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#M=new Uint8Array(g.ch);#U=new Uint8Array(128);#S=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#C="";#L=0;#Y=0;#x=!0;#c=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(c==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let c=e*128+n,o=this.#f.lastIndexOf(c);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[c]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let o=e*128+n,t=0;for(this.#k[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,c)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[c]=o;let t=this.#f[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,c,o)=>{let t=n>>7,a=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,a)})}};#J={8:function(e){let n=e.channel,c=e.data[0];this.#u.nOff(n,c)},9:function(e){let n=e.channel;this.#n[n]=1;let c=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,c,o):this.#u.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#f.indexOf(c)>-1&&(this.#d[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let c=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#k[n]=1,this.#u.ano(n);return}case 127:{this.#k[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let a=this.#e[g.cc*t];(a==56||a==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[c+u[99]],t=this.#e[c+u[98]];if(o==1){let a=Be.indexOf(t);if(a>-1)this.#e[c+u[71+a]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=ge.indexOf(t);r>-1?this.#K[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let r=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#a[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#a[n]]}.`):this.#j[(r*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#a[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[c+u[100]]];this.#e[c+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#i[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&X[this.#e[c+100]]!=null&&(this.#i[n*g.rpn+X[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#r[n]=e.data,this.#M[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#f.forEach(function(o){let t=o>>7;c==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:c,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let c=n[0],o=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(c,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#V.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#R.run(n,c,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,c)=>{this.#D.run(n,c,e)},67:(e,n,c)=>{this.#v.run(n,c,e)},68:(e,n,c)=>{this.#z.run(n,c,e)},71:(e,n,c)=>{this.#X.run(n,c,e)},126:(e,n,c)=>{this.#_.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#F.run(n,c,e)}};#_;#F;#v;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#l.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,c=this.#e.subarray(n,n+g.cc);return c[u[0]]=c[u[0]]||this.#N,c[u[32]]=c[u[32]]||this.#E,c}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=T[c])}getPitch(){return this.#I}getProgram(){return this.#r}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,c=this;return c.#f.forEach(function(o,t){let a=Math.floor(o/128),r=o%128;e==a&&c.#d[o]>0&&n.set(r,{v:c.#d[o],s:c.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#C,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let c=Math.floor(n/128);e.#d[n]>e.#T[c]&&(e.#T[c]=e.#d[n])}),this.#T}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,o){e[o]=Math.floor(c*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#i}getNrpn(){return this.#K}getVoice(e,n,c,o){let t=e||this.#N,a=n,r=c||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let s=this.userBank.get(t,a,r,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let i=parseInt(s.name.slice(5)),h=i*g.cmt,d="";this.#A.subarray(h,h+10).forEach(l=>{l>31&&(d+=String.fromCharCode(l))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${d}`,!0),s.name=d,s.ending=" "}return(s.ending!=" "||!s.name.length)&&(s=this.baseBank.get(t,a,r,o)),s}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#r[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#M[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#i[n]+(this.#i[n+3]-64)+((this.#i[n+1]<<7)+this.#i[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,o=3200){let t=this,a;t.#C=" ".repeat(c),e.forEach(r=>{t.#C+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#L=Date.now()+3200,t.#C=t.#C.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,s,i)=>{i[s]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let c=this.#b[n];if(c){if(I.indexOf(c)>=0)return this.#e[e*g.cc+u[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#r.fill(0),this.#d.fill(0),this.#f.fill(0),this.#T.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#C="",this.#h=0,this.#o=0,this.#g.fill(0),this.#c=!1,this.#Y=0,this.#x=!0,this.#l.forEach(function(n,c,o){o[c]=c}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#H.fill(0)),this.#e[g.cc*9]=T[0],this.#e[g.cc*25]=T[0],this.#e[g.cc*41]=T[0],this.#e[g.cc*57]=T[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#M.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=c,this.#o=0,this.#N=fe[0][c],this.#E=fe[1][c];for(let a=0;a0&&this.#e[a*g.cc+u[0]]==T[o]&&(this.#e[a*g.cc]=T[c]);switch(this.initOnReset,c){case m.mt32:{V.forEach((a,r)=>{let s=r+1;this.#n[s]||(this.#r[s]=a,this.#e[s*g.cc+u[91]]=127)});break}}let t;switch(c){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(o=>{e.channel=o,c=!0,this.#J[e.type].call(this,e)}),c||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#c=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#c=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#c=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#c=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#c=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,s)=>{r.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][s]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,s)=>{r.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][s]}: ${r}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#c?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#v=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#v.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#c=e.#c||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#v.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#c=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(s,i)=>{a[i]=s};if(t.subarray(1).forEach((s,i)=>{let h=i+t[0];([r,r,r,r,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(s,i)}),t[0]<4){let s=0;a.forEach(i=>{s=s<<4,s+=i}),s-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(0,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(0,!0,i),console.debug(`${a}sub type: ${i+1}`)},i=>{console.debug(`${a}time: ${ae(i)}s`)},i=>{console.debug(`${a}diffusion: ${i}`)},i=>{console.debug(`${a}initial delay: ${i}`)},i=>{console.debug(`${a}HPF cutoff: ${T[i]}Hz`)},i=>{console.debug(`${a}LPF cutoff: ${T[i]}Hz`)},i=>{console.debug(`${a}width: ${i}`)},i=>{console.debug(`${a}height: ${i}`)},i=>{console.debug(`${a}depth: ${i}`)},i=>{console.debug(`${a}wall type: ${i}`)},i=>{console.debug(`${a}dry/wet: ${i}`)},i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},!1,!1,i=>{console.debug(`${a}delay: ${i}`)},i=>{console.debug(`${a}density: ${i}`)},i=>{console.debug(`${a}balance: ${i}`)},i=>{},i=>{console.debug(`${a}feedback: ${i}`)},i=>{}][t[0]+s]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(1,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(1,!0,i),console.debug(`${a}sub type: ${i+1}`)},i=>{console.debug(`${a}LFO: ${te[i]}Hz`)},i=>{},i=>{console.debug(`${a}feedback: ${i}`)},i=>{console.debug(`${a}delay offset: ${ie(i)}ms`)},i=>{},i=>{console.debug(`${a}low: ${T[i]}Hz`)},i=>{console.debug(`${a}low: ${i-64}dB`)},i=>{console.debug(`${a}high: ${T[i]}Hz`)},i=>{console.debug(`${a}high: ${i-64}dB`)},i=>{console.debug(`${a}dry/wet: ${i}`)},i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},i=>{console.debug(`${a}to reverb: ${E(i)}dB`)},!1,i=>{},i=>{},i=>{},i=>{console.debug(`${a}LFO phase diff: ${(i-64)*3}deg`)},i=>{console.debug(`${a}input mode: ${i?"stereo":"mono"}`)},i=>{}][t[0]-32+s]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(2,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(2,!0,i),console.debug(`${a}sub type: ${i+1}`)}][t[0]-64+s]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,s)=>{[i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},i=>{console.debug(`${a}to reverb: ${E(i)}dB`)},i=>{console.debug(`${a}to chorus: ${E(i)}dB`)},i=>{console.debug(`${a}connection: ${i?"system":"insertion"}`)},i=>{console.debug(`${a}channel: CH${i+1}`)},i=>{console.debug(`${a}mod wheel: ${i-64}`)},i=>{console.debug(`${a}bend wheel: ${i-64}`)},i=>{console.debug(`${a}channel after touch: ${i-64}`)},i=>{console.debug(`${a}AC1: ${i-64}`)},i=>{console.debug(`${a}AC2: ${i-64}`)}][t[0]-86+s](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let s=r+t[0];if(s==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let i=s-1>>2,h=s-1&3,d=`XG EQ ${i} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],r=t[1],s=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((i,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${s}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${s}sub type: ${d+1}`)}][r+h]||function(){})(i)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#L=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let r=t.subarray(1);for(let s=0;s>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=t[1],i=g.cc*r,h=`XG CH${r+1} `,d=`Unknown XG part address ${s}.`;t.subarray(2).forEach((l,f)=>{s<1?console.debug(d):s<41?([()=>{e.#e[i+u[0]]=l},()=>{e.#e[i+u[32]]=l},()=>{e.#r[r]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[r]=p,r!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#k[r]=+!l},()=>{},()=>{e.setChType(r,l,m.xg),console.debug(`${h}type: ${P[l]||l}`)},()=>{e.#i[g.rpn*r+3]=l},!1,!1,()=>{e.#e[i+u[7]]=l},!1,!1,()=>{e.#e[i+u[10]]=l||128},!1,!1,()=>{e.#e[i+u[128]]=l},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[91]]=l},()=>{e.#e[i+u[94]]=l},()=>{e.#e[i+u[76]]=l},()=>{e.#e[i+u[77]]=l},()=>{e.#e[i+u[78]]=l},()=>{e.#e[i+u[74]]=l},()=>{e.#e[i+u[71]]=l},()=>{e.#e[i+u[73]]=l},()=>{e.#e[i+u[75]]=l},()=>{e.#e[i+u[72]]=l}][s+f-1]||(()=>{}))():s<48?console.debug(d):s<111?s>102&&s<105&&(e.#e[i+u[[5,65][s&1]]]=l):s<114?console.debug(d):s<116?console.debug(`${h}EQ ${["bass","treble"][s&1]} gain: ${l-64}dB`):s<118?console.debug(d):s<120?console.debug(`${h}EQ ${["bass","treble"][s&1]} freq: ${l}`):console.debug(d)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=t[1],i=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((h,d)=>{let l=d+s;switch(l){case 1:{console.info(`${i}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(l<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][l-3>>1];l&1?l<23?(console.debug(`${i}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${i}${f} scale break point: ${h}`):console.debug(`${i}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],s="MU1000 System: ";t.subarray(1).forEach((i,h)=>{let d=r+h;d==8?console.debug(`${s}LCD contrast set to ${i}.`):d==18?(e.#E=i?126:0,console.debug(`${s}bank defaults to ${i?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!i,console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],s=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let i=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",i),e.dispatchEvent("channelmax",i+63)),console.info(`${s}Show CH1~64`);break}case 3:{let i=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",i),e.#x&&e.dispatchEvent("channelmax",i+31),console.info(`${s}Show CH${i+1}~CH${i+32}`);break}default:console.debug(`${s}unknown switch ${r} invoked.`)}else if(r<32){if(e.#x){let i=e.chRedir(r-16+(e.#Y<<4),a,!0);e.dispatchEvent("channelactive",i)}}else if(r<36){let i=e.chRedir(r-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",i),e.dispatchEvent("channelmax",i+15),e.#Y=r-32),console.info(`${s}Show CH${i+1}~CH${i+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=`PLG-100SG CH${r+1} `,i=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((l,f)=>{f%2==0?h+=re[l]||l.toString().padStart("0"):d+=l*13}),i>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=i+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${s}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#v.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#v.add([89,0],(t,a,r)=>{if(e.eprom){let s=t[0],i=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${i.toString(16).padStart(6,"0")}, ${s} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,l)=>{let f=l>>3,p=l&7;if(p==7)for(let b=0;b<7;b++)h[i+7*f+b]+=(d>>6-b&1)<<7;else h[i+7*f+p]=d})}}).add([89,1],(t,a,r)=>{let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${s.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=s)}).add([89,2],(t,a,r)=>{if(e.eprom){let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${s.toString(16).padStart(6,"0")}.`);let i=e.eprom.data;t.subarray(4).forEach((h,d)=>{let l=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)i[s+7*l+p]+=(h>>6-p&1)<<7;else i[s+7*l+f]=h})}}).add([89,3],(t,a,r)=>{}),this.#v.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let l=d+t[0];[i,i,i,i,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][l](h,l)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let s=e.chRedir(t[0],a,!0),i=t[1],h=g.cc*s,d=`TG300 CH${s+1} `;t.subarray(2).forEach((l,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=l},()=>{e.#e[h+u[32]]=l},()=>{e.#r[s]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+i]||(()=>{}))(l,f+i):f<21||(f<47?([()=>{e.#k[s]=+!l},()=>{},()=>{},()=>{e.#i[g.rpn*s+3]=l},()=>{},()=>{e.#e[h+u[7]]=l},!1,!1,()=>{e.#e[h+u[10]]=l||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${l}`)},()=>{console.debug(`${d} AC2 at cc${l}`)},()=>{e.#e[h+u[128]]=l},()=>{e.#e[h+u[93]]=l},()=>{e.#e[h+u[91]]=l},()=>{e.#e[h+u[94]]=l},()=>{e.#e[h+u[76]]=l},()=>{e.#e[h+u[77]]=l},()=>{e.#e[h+u[74]]=l},()=>{e.#e[h+u[71]]=l},()=>{e.#e[h+u[73]]=l},()=>{e.#e[h+u[75]]=l},()=>{e.#e[h+u[72]]=l},()=>{e.#e[h+u[78]]=l}][f+i-21]||(()=>{}))(l,f+i):f<95||([()=>{e.#e[h+u[65]]=l},()=>{e.#e[h+u[5]]=l}][f+i-95]||(()=>{}))(l,f+i))})}).add([43,7,0],(t,a,r)=>{let s=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",s)}).add([43,7,1],(t,a,r)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(s,i){let h=Math.floor(i/16),d=i%16,l=(d*3+h)*7,f=7,p=0;for(l-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#E=3,e.#c=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#c=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let l=d+t[0];[i,i,i,i,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][l](h,d)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((s,i)=>{r+=String.fromCharCode(Math.max(32,s))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,s)=>{let i=`GS ${a+s>55?"chorus":"reverb"} `;([()=>{console.info(`${i}type: ${_[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${i}predelay: ${r}ms`)},()=>{console.info(`${i}type: ${oe[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${i}to reverb: ${E(r)}`)},()=>{console.debug(`${i}to delay: ${E(r)}`)}][a+s-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,s)=>{let i="GS delay ";([()=>{console.info(`${i}type: ${ce[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${i}to reverb: ${E(r)}`)}][a+s-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,s)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+s]||function(){console.warn(`Unknown GS EQ address: ${t[0]+s}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(s,i){let h=le(e.#w.subarray(10,12),i,s);h&&console.debug(`${a}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((s,i)=>{([()=>{e.setEffectTypeRaw(3,!1,32+s)},()=>{e.setEffectTypeRaw(3,!0,s),console.info(`${a}type: ${F(e.#w.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(s)}dB`)},()=>{console.debug(`${a}to chorus: ${E(s)}dB`)},()=>{console.debug(`${a}to delay: ${E(s)}dB`)},!1,()=>{console.debug(`${a}1 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${a}1 depth: ${s-64}`)},()=>{console.debug(`${a}2 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${a}2 depth: ${s-64}`)},()=>{console.debug(`${a}to EQ: ${s?"ON":"OFF"}`)}][t[0]+i]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(s,t[0]+i)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let a=e.#p[t[0]-1],r=t[1];a.fill(0);let s=t.subarray(2);for(let i=0;i>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,r){let s=t[0],i=g.cc*a,h=g.rpn*a,d=`GS CH${a+1} `;s<3?t.subarray(1).forEach((l,f)=>{[()=>{e.#e[i+u[0]]=l},()=>{e.#r[a]=l},()=>{let p=e.chRedir(l,r,!0);e.#l[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][s+f]()}):s<19||(s<44?t.subarray(1).forEach((l,f)=>{([()=>{e.#k[a]=+!l},!1,()=>{e.setChType(a,l<<1,m.gs),console.debug(`${d}type: ${l?"drum ":"melodic"}${l||""}`)},()=>{e.#i[h+3]=l},!1,()=>{e.#e[i+u[7]]=l},!1,!1,()=>{e.#e[i+u[10]]=l||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${l}`)},()=>{console.debug(`${d}CC 2: cc${l}`)},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[91]]=l},!1,!1,()=>{e.#i[h+1]=l},()=>{e.#i[h+2]=l},()=>{e.#e[i+u[94]]=l}][s+f-19]||(()=>{}))()}):s<76||console.debug(`Unknown GS part address: ${s}`))},o=function(t,a){let r=t[0],s=`GS CH${a+1} `;r<2?t.subarray(1).forEach((i,h)=>{[()=>{e.#e[g.cc*a+u[32]]=i},()=>{}][r+h]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((i,h)=>{[()=>{console.debug(`${s}EQ: o${["ff","n"][i]}`)},()=>{},()=>{console.debug(`${s}EFX: o${["ff","n"][i]}`)}][r+h-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#R.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{o(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{o(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{o(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{o(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{o(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{o(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{o(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{o(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{o(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{o(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{o(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{o(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{o(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{o(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{o(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{o(t,e.chRedir(15,a,!0))}),this.#D.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],s=(t[3]<<7)+t[2],i=e.chRedir(r&15,a,!0),h=g.cc*i;[()=>{s<1||(s<101?(e.setChType(i,e.CH_MELODIC,m.x5d),e.#r[i]=s-1,e.#e[h+u[0]]=82):s<229?(e.setChType(i,e.CH_MELODIC,m.x5d),e.#r[i]=s-101,e.#e[h+u[0]]=56):(e.setChType(i,e.CH_DRUMS,m.x5d),e.#r[i]=be[s-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=s},()=>{s<31&&(e.#e[h+u[10]]=Math.round((s-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(s)},()=>{e.#e[h+u[91]]=D(s)},()=>{e.#i[i*g.rpn+3]=s>8191?s-16320:64+s},()=>{e.#i[i*g.rpn+1]=s>8191?s-16320:64+s},()=>{s>0&&(e.#i[i*g.rpn]=s)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",s=82,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){if(f<16400){let p=f%164;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{d+=` +122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#c=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#c=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#c=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#c=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#c=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,s)=>{r.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][s]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,s)=>{r.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][s]}: ${r}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#c?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#v=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#v.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#c=e.#c||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#v.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#c=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(s,i)=>{a[i]=s};if(t.subarray(1).forEach((s,i)=>{let h=i+t[0];([r,r,r,r,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(s,i)}),t[0]<4){let s=0;a.forEach(i=>{s=s<<4,s+=i}),s-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(0,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(0,!0,i),console.debug(`${a}sub type: ${i+1}`)},i=>{console.debug(`${a}time: ${ae(i)}s`)},i=>{console.debug(`${a}diffusion: ${i}`)},i=>{console.debug(`${a}initial delay: ${i}`)},i=>{console.debug(`${a}HPF cutoff: ${M[i]}Hz`)},i=>{console.debug(`${a}LPF cutoff: ${M[i]}Hz`)},i=>{console.debug(`${a}width: ${i}`)},i=>{console.debug(`${a}height: ${i}`)},i=>{console.debug(`${a}depth: ${i}`)},i=>{console.debug(`${a}wall type: ${i}`)},i=>{console.debug(`${a}dry/wet: ${i}`)},i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},!1,!1,i=>{console.debug(`${a}delay: ${i}`)},i=>{console.debug(`${a}density: ${i}`)},i=>{console.debug(`${a}balance: ${i}`)},i=>{},i=>{console.debug(`${a}feedback: ${i}`)},i=>{}][t[0]+s]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(1,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(1,!0,i),console.debug(`${a}sub type: ${i+1}`)},i=>{console.debug(`${a}LFO: ${te[i]}Hz`)},i=>{},i=>{console.debug(`${a}feedback: ${i}`)},i=>{console.debug(`${a}delay offset: ${ie(i)}ms`)},i=>{},i=>{console.debug(`${a}low: ${M[i]}Hz`)},i=>{console.debug(`${a}low: ${i-64}dB`)},i=>{console.debug(`${a}high: ${M[i]}Hz`)},i=>{console.debug(`${a}high: ${i-64}dB`)},i=>{console.debug(`${a}dry/wet: ${i}`)},i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},i=>{console.debug(`${a}to reverb: ${E(i)}dB`)},!1,i=>{},i=>{},i=>{},i=>{console.debug(`${a}LFO phase diff: ${(i-64)*3}deg`)},i=>{console.debug(`${a}input mode: ${i?"stereo":"mono"}`)},i=>{}][t[0]-32+s]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(2,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(2,!0,i),console.debug(`${a}sub type: ${i+1}`)}][t[0]-64+s]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,s)=>{[i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},i=>{console.debug(`${a}to reverb: ${E(i)}dB`)},i=>{console.debug(`${a}to chorus: ${E(i)}dB`)},i=>{console.debug(`${a}connection: ${i?"system":"insertion"}`)},i=>{console.debug(`${a}channel: CH${i+1}`)},i=>{console.debug(`${a}mod wheel: ${i-64}`)},i=>{console.debug(`${a}bend wheel: ${i-64}`)},i=>{console.debug(`${a}channel after touch: ${i-64}`)},i=>{console.debug(`${a}AC1: ${i-64}`)},i=>{console.debug(`${a}AC2: ${i-64}`)}][t[0]-86+s](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let s=r+t[0];if(s==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let i=s-1>>2,h=s-1&3,d=`XG EQ ${i} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],r=t[1],s=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((i,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${s}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${s}sub type: ${d+1}`)}][r+h]||function(){})(i)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#L=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let r=t.subarray(1);for(let s=0;s>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=t[1],i=g.cc*r,h=`XG CH${r+1} `,d=`Unknown XG part address ${s}.`;t.subarray(2).forEach((l,f)=>{s<1?console.debug(d):s<41?([()=>{e.#e[i+u[0]]=l},()=>{e.#e[i+u[32]]=l},()=>{e.#r[r]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[r]=p,r!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#k[r]=+!l},()=>{},()=>{e.setChType(r,l,m.xg),console.debug(`${h}type: ${P[l]||l}`)},()=>{e.#i[g.rpn*r+3]=l},!1,!1,()=>{e.#e[i+u[7]]=l},!1,!1,()=>{e.#e[i+u[10]]=l||128},!1,!1,()=>{e.#e[i+u[128]]=l},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[91]]=l},()=>{e.#e[i+u[94]]=l},()=>{e.#e[i+u[76]]=l},()=>{e.#e[i+u[77]]=l},()=>{e.#e[i+u[78]]=l},()=>{e.#e[i+u[74]]=l},()=>{e.#e[i+u[71]]=l},()=>{e.#e[i+u[73]]=l},()=>{e.#e[i+u[75]]=l},()=>{e.#e[i+u[72]]=l}][s+f-1]||(()=>{}))():s<48?console.debug(d):s<111?s>102&&s<105&&(e.#e[i+u[[5,65][s&1]]]=l):s<114?console.debug(d):s<116?console.debug(`${h}EQ ${["bass","treble"][s&1]} gain: ${l-64}dB`):s<118?console.debug(d):s<120?console.debug(`${h}EQ ${["bass","treble"][s&1]} freq: ${l}`):console.debug(d)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=t[1],i=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((h,d)=>{let l=d+s;switch(l){case 1:{console.info(`${i}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(l<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][l-3>>1];l&1?l<23?(console.debug(`${i}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${i}${f} scale break point: ${h}`):console.debug(`${i}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],s="MU1000 System: ";t.subarray(1).forEach((i,h)=>{let d=r+h;d==8?console.debug(`${s}LCD contrast set to ${i}.`):d==18?(e.#E=i?126:0,console.debug(`${s}bank defaults to ${i?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!i,console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],s=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let i=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",i),e.dispatchEvent("channelmax",i+63)),console.info(`${s}Show CH1~64`);break}case 3:{let i=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",i),e.#x&&e.dispatchEvent("channelmax",i+31),console.info(`${s}Show CH${i+1}~CH${i+32}`);break}default:console.debug(`${s}unknown switch ${r} invoked.`)}else if(r<32){if(e.#x){let i=e.chRedir(r-16+(e.#Y<<4),a,!0);e.dispatchEvent("channelactive",i)}}else if(r<36){let i=e.chRedir(r-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",i),e.dispatchEvent("channelmax",i+15),e.#Y=r-32),console.info(`${s}Show CH${i+1}~CH${i+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=`PLG-100SG CH${r+1} `,i=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((l,f)=>{f%2==0?h+=re[l]||l.toString().padStart("0"):d+=l*13}),i>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=i+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${s}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#v.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#v.add([89,0],(t,a,r)=>{if(e.eprom){let s=t[0],i=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${i.toString(16).padStart(6,"0")}, ${s} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,l)=>{let f=l>>3,p=l&7;if(p==7)for(let b=0;b<7;b++)h[i+7*f+b]+=(d>>6-b&1)<<7;else h[i+7*f+p]=d})}}).add([89,1],(t,a,r)=>{let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${s.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=s)}).add([89,2],(t,a,r)=>{if(e.eprom){let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${s.toString(16).padStart(6,"0")}.`);let i=e.eprom.data;t.subarray(4).forEach((h,d)=>{let l=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)i[s+7*l+p]+=(h>>6-p&1)<<7;else i[s+7*l+f]=h})}}).add([89,3],(t,a,r)=>{}),this.#v.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let l=d+t[0];[i,i,i,i,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][l](h,l)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let s=e.chRedir(t[0],a,!0),i=t[1],h=g.cc*s,d=`TG300 CH${s+1} `;t.subarray(2).forEach((l,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=l},()=>{e.#e[h+u[32]]=l},()=>{e.#r[s]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+i]||(()=>{}))(l,f+i):f<21||(f<47?([()=>{e.#k[s]=+!l},()=>{},()=>{},()=>{e.#i[g.rpn*s+3]=l},()=>{},()=>{e.#e[h+u[7]]=l},!1,!1,()=>{e.#e[h+u[10]]=l||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${l}`)},()=>{console.debug(`${d} AC2 at cc${l}`)},()=>{e.#e[h+u[128]]=l},()=>{e.#e[h+u[93]]=l},()=>{e.#e[h+u[91]]=l},()=>{e.#e[h+u[94]]=l},()=>{e.#e[h+u[76]]=l},()=>{e.#e[h+u[77]]=l},()=>{e.#e[h+u[74]]=l},()=>{e.#e[h+u[71]]=l},()=>{e.#e[h+u[73]]=l},()=>{e.#e[h+u[75]]=l},()=>{e.#e[h+u[72]]=l},()=>{e.#e[h+u[78]]=l}][f+i-21]||(()=>{}))(l,f+i):f<95||([()=>{e.#e[h+u[65]]=l},()=>{e.#e[h+u[5]]=l}][f+i-95]||(()=>{}))(l,f+i))})}).add([43,7,0],(t,a,r)=>{let s=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",s)}).add([43,7,1],(t,a,r)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(s,i){let h=Math.floor(i/16),d=i%16,l=(d*3+h)*7,f=7,p=0;for(l-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#E=3,e.#c=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#c=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let l=d+t[0];[i,i,i,i,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][l](h,d)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((s,i)=>{r+=String.fromCharCode(Math.max(32,s))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,s)=>{let i=`GS ${a+s>55?"chorus":"reverb"} `;([()=>{console.info(`${i}type: ${_[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${i}predelay: ${r}ms`)},()=>{console.info(`${i}type: ${oe[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${i}to reverb: ${E(r)}`)},()=>{console.debug(`${i}to delay: ${E(r)}`)}][a+s-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,s)=>{let i="GS delay ";([()=>{console.info(`${i}type: ${ce[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${i}to reverb: ${E(r)}`)}][a+s-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,s)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+s]||function(){console.warn(`Unknown GS EQ address: ${t[0]+s}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(s,i){let h=le(e.#w.subarray(10,12),i,s);h&&console.debug(`${a}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((s,i)=>{([()=>{e.setEffectTypeRaw(3,!1,32+s)},()=>{e.setEffectTypeRaw(3,!0,s),console.info(`${a}type: ${F(e.#w.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(s)}dB`)},()=>{console.debug(`${a}to chorus: ${E(s)}dB`)},()=>{console.debug(`${a}to delay: ${E(s)}dB`)},!1,()=>{console.debug(`${a}1 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${a}1 depth: ${s-64}`)},()=>{console.debug(`${a}2 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${a}2 depth: ${s-64}`)},()=>{console.debug(`${a}to EQ: ${s?"ON":"OFF"}`)}][t[0]+i]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(s,t[0]+i)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let a=e.#p[t[0]-1],r=t[1];a.fill(0);let s=t.subarray(2);for(let i=0;i>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,r){let s=t[0],i=g.cc*a,h=g.rpn*a,d=`GS CH${a+1} `;s<3?t.subarray(1).forEach((l,f)=>{[()=>{e.#e[i+u[0]]=l},()=>{e.#r[a]=l},()=>{let p=e.chRedir(l,r,!0);e.#l[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][s+f]()}):s<19||(s<44?t.subarray(1).forEach((l,f)=>{([()=>{e.#k[a]=+!l},!1,()=>{e.setChType(a,l<<1,m.gs),console.debug(`${d}type: ${l?"drum ":"melodic"}${l||""}`)},()=>{e.#i[h+3]=l},!1,()=>{e.#e[i+u[7]]=l},!1,!1,()=>{e.#e[i+u[10]]=l||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${l}`)},()=>{console.debug(`${d}CC 2: cc${l}`)},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[91]]=l},!1,!1,()=>{e.#i[h+1]=l},()=>{e.#i[h+2]=l},()=>{e.#e[i+u[94]]=l}][s+f-19]||(()=>{}))()}):s<76||console.debug(`Unknown GS part address: ${s}`))},o=function(t,a){let r=t[0],s=`GS CH${a+1} `;r<2?t.subarray(1).forEach((i,h)=>{[()=>{e.#e[g.cc*a+u[32]]=i},()=>{}][r+h]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((i,h)=>{[()=>{console.debug(`${s}EQ: o${["ff","n"][i]}`)},()=>{},()=>{console.debug(`${s}EFX: o${["ff","n"][i]}`)}][r+h-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#R.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{o(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{o(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{o(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{o(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{o(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{o(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{o(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{o(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{o(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{o(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{o(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{o(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{o(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{o(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{o(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{o(t,e.chRedir(15,a,!0))}),this.#D.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],s=(t[3]<<7)+t[2],i=e.chRedir(r&15,a,!0),h=g.cc*i;[()=>{s<1||(s<101?(e.setChType(i,e.CH_MELODIC,m.x5d),e.#r[i]=s-1,e.#e[h+u[0]]=82):s<229?(e.setChType(i,e.CH_MELODIC,m.x5d),e.#r[i]=s-101,e.#e[h+u[0]]=56):(e.setChType(i,e.CH_DRUMS,m.x5d),e.#r[i]=be[s-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=s},()=>{s<31&&(e.#e[h+u[10]]=Math.round((s-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(s)},()=>{e.#e[h+u[91]]=D(s)},()=>{e.#i[i*g.rpn+3]=s>8191?s-16320:64+s},()=>{e.#i[i*g.rpn+1]=s>8191?s-16320:64+s},()=>{s>0&&(e.#i[i*g.rpn]=s)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",s=82,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){if(f<16400){let p=f%164;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{d+=` ${s} ${i} ${h} ${r.trim().replace("Init Voice","")}`,i++,r="";break}}i>99&&(s=90,i=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",s=90,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){if(f<13600){let p=f%136;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{d+=` -${s} ${i} ${h} ${r.trim().replace("Init Combi","")}`,i++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,s)=>{s>0&&s<3&&e.setEffectType(s-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,s,i,h){if(s<192){let d=e.chRedir(Math.floor(s/12),a,!0),l=d*g.cc;switch(s%12){case 0:{r<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[l+u[0]]=82,e.#r[d]=r):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[l+u[0]]=62,e.#r[d]=be[r-128]),r>0&&(e.#n[d]=1);break}case 1:{e.#e[l+u[7]]=r;break}case 2:{e.#i[d*g.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#i[d*g.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[l+u[10]]=Math.round((r-15)*4.2+64));break}case 5:{let f=r>>4,p=r&15;e.#e[l+u[91]]=D(p),e.#e[l+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(r&15,a,!0),p=r>>4;e.#l[d]=r,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(s-192,a,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#c=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0),i=t[1];t.subarray(2).forEach((h,d)=>{let l=d+i;e.#U[l+(s-1)*16]=h,([!1,()=>{let f=e.#U[s-1<<4];if(f<3)if(e.#T[s]=1,f==2)for(let p=0;p{e.#i[s*g.rpn+3]=h+40},()=>{e.#i[s*g.rpn+1]=h+14},()=>{e.#i[s*g.rpn]=h},!1,()=>{e.#e[g.cc*s+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*s+u[7]]=h},()=>{e.#e[g.cc*s+u[10]]=Math.ceil(h*9.05)}][l]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0),i=t[1]+(t[0]<<7);i<10&&(e.#T[s]=1),t.subarray(2).forEach((h,d)=>{let l=d+i;l<14&&(e.#S[(s-1)*g.cmt+l]=h)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let s=t[1]-16}else{let s=t[1];t.subarray(2).forEach((i,h)=>{let d=h+s;e.#U[d]=i;let l=e.chRedir(1+d>>4,a,!0),f=d&15;([!1,()=>{let p=e.#U[l-1<<4];if(p<3)if(e.#T[l]=1,p==2)for(let b=0;b{e.#i[l*g.rpn+3]=i+40},()=>{e.#i[l*g.rpn+1]=i+14},()=>{e.#i[l*g.rpn]=i},!1,()=>{e.#e[g.cc*l+u[91]]=i?127:0},!1,()=>{e.#e[g.cc*l+u[7]]=i},()=>{e.#e[g.cc*l+u[10]]=Math.ceil(i*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let s=t[1]+(t[0]<<7);t.subarray(2).forEach((i,h)=>{let d=h+s,l=e.chRedir(Math.floor(d/246+1),a,!0),f=d%246;f<14&&(e.#S[(l-1)*g.cmt+f]=i),f<10&&(e.#T[l]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let s=(t[0]<<7)+t[1];t.subarray(2).forEach((i,h)=>{let d=s+h,l=Math.floor(d/8),f=d&7,p=l*8;e.#q[d]=i,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*l;y=`MT-m:${i.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,i+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:l}),e.userBank.load(`MSB LSB PRG NME +${s} ${i} ${h} ${r.trim().replace("Init Combi","")}`,i++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,s)=>{s>0&&s<3&&e.setEffectType(s-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,s,i,h){if(s<192){let d=e.chRedir(Math.floor(s/12),a,!0),l=d*g.cc;switch(s%12){case 0:{r<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[l+u[0]]=82,e.#r[d]=r):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[l+u[0]]=62,e.#r[d]=be[r-128]),r>0&&(e.#n[d]=1);break}case 1:{e.#e[l+u[7]]=r;break}case 2:{e.#i[d*g.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#i[d*g.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[l+u[10]]=Math.round((r-15)*4.2+64));break}case 5:{let f=r>>4,p=r&15;e.#e[l+u[91]]=D(p),e.#e[l+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(r&15,a,!0),p=r>>4;e.#l[d]=r,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(s-192,a,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#c=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0),i=t[1];t.subarray(2).forEach((h,d)=>{let l=d+i;e.#U[l+(s-1)*16]=h,([!1,()=>{let f=e.#U[s-1<<4];if(f<3)if(e.#M[s]=1,f==2)for(let p=0;p{e.#i[s*g.rpn+3]=h+40},()=>{e.#i[s*g.rpn+1]=h+14},()=>{e.#i[s*g.rpn]=h},!1,()=>{e.#e[g.cc*s+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*s+u[7]]=h},()=>{e.#e[g.cc*s+u[10]]=Math.ceil(h*9.05)}][l]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0),i=t[1]+(t[0]<<7);i<10&&(e.#M[s]=1),t.subarray(2).forEach((h,d)=>{let l=d+i;l<14&&(e.#S[(s-1)*g.cmt+l]=h)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let s=t[1]-16}else{let s=t[1];t.subarray(2).forEach((i,h)=>{let d=h+s;e.#U[d]=i;let l=e.chRedir(1+d>>4,a,!0),f=d&15;([!1,()=>{let p=e.#U[l-1<<4];if(p<3)if(e.#M[l]=1,p==2)for(let b=0;b{e.#i[l*g.rpn+3]=i+40},()=>{e.#i[l*g.rpn+1]=i+14},()=>{e.#i[l*g.rpn]=i},!1,()=>{e.#e[g.cc*l+u[91]]=i?127:0},!1,()=>{e.#e[g.cc*l+u[7]]=i},()=>{e.#e[g.cc*l+u[10]]=Math.ceil(i*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let s=t[1]+(t[0]<<7);t.subarray(2).forEach((i,h)=>{let d=h+s,l=e.chRedir(Math.floor(d/246+1),a,!0),f=d%246;f<14&&(e.#S[(l-1)*g.cmt+f]=i),f<10&&(e.#M[l]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let s=(t[0]<<7)+t[1];t.subarray(2).forEach((i,h)=>{let d=s+h,l=Math.floor(d/8),f=d&7,p=l*8;e.#q[d]=i,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*l;y=`MT-m:${i.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,i+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:l}),e.userBank.load(`MSB LSB PRG NME 000 127 ${l} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let s=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((i,h)=>{let d=s+h;d>1)*g.cmt+d]=i)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let s=t[1],i=!1,h=function(d,l){e.#l[l-12]=d,i=!0};t.subarray(2).forEach((d,l)=>{let f=l+s;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,l)}),i&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(s=>{s>31&&(r+=String.fromCharCode(s))}),e.#C=r.padStart(20," "),e.#L=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let s=0;s<16;s++)e.#u.ano(r+s),s&&s<10&&(e.#r[r+s]=V[s-1]);console.info("MT-32 alt reset complete.")}),this.#D.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#c=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#c=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#c=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{[i,i,i,i,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][r+d]()}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=r*g.cc,i=t[1],h=`NS5R CH${r+1} `;t.subarray(2).forEach((d,l)=>{let f=i+l;f<3?[()=>{e.#e[s+u[0]]=d||121},()=>{e.#e[s+u[32]]=d},()=>{e.#r[r]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,a,!0);e.#l[r]=p,r!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#k[r]=+!d},()=>{e.setChType(r,d,m.ns5r),console.debug(`${h}type: ${P[d]}`)},()=>{e.#i[g.rpn*r+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[s+u[7]]=d},()=>{e.#e[s+u[11]]=d},()=>{},()=>{},()=>{e.#e[s+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[s+u[93]]=d},()=>{e.#e[s+u[91]]=d},()=>{e.#e[s+u[76]]=d},()=>{e.#e[s+u[77]]=d},()=>{e.#e[s+u[78]]=d},()=>{e.#e[s+u[74]]=d},()=>{e.#e[s+u[71]]=d},()=>{e.#e[s+u[73]]=d},()=>{e.#e[s+u[75]]=d},()=>{e.#e[s+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[s+u[5]]=d},()=>{e.#e[s+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let s=r-32;e.#h=Date.now()+3200,e.#o=10,e.#g.fill(0);let i=t.subarray(1),h=4;i.forEach(function(d,l){let f=l+s,p=f>>4,b=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#g[b*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#c=!1;let r="";S(t,(s,i)=>{i<8?(s>31&&(r+=String.fromCharCode(s)),i==7&&(e.aiEfxName=r)):i<10&&e.setEffectType(i-8,44,s)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#c=!1,S(t,function(r,s){switch(!0){case s<2944:{let i=e.chRedir(Math.floor(s/92),a,!0),h=i*g.cc;switch(s%92){case 0:{e.#e[h+u[0]]=r||121;break}case 1:{e.#e[h+u[32]]=r;break}case 2:{e.#r[i]=r,r>0&&(e.#n[i]=1);break}case 3:{let d=e.chRedir(r,a,!0);e.#l[i]=d,i!=d&&(console.info(`NS5R CH${i+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#i[i*g.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[h+u[7]]=r;break}case 11:{e.#e[h+u[11]]=r;break}case 14:{e.#e[h+u[10]]=r||128;break}case 19:{e.#e[h+u[93]]=r;break}case 20:{e.#e[h+u[91]]=r;break}case 84:{e.#e[h+u[65]]=r;break}case 85:{e.#e[h+u[5]]=r;break}}break}case s<3096:break;case s<3134:break;case s<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",s=80,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){let p=f%158;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{s=l&127;break}case p==12:{h=l&127;break}case p==13:{d+=` ${s} ${i} ${h} ${r.trim().replace("Init Voice","")}`,i++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",s=88,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){let p=f%126;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:break;case p==12:break;case p==13:{d+=` -${s} ${i} ${h} ${r.trim().replace("Init Combi","")}`,i++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,s,i)=>{if(s<720)for(let h=0;h<8;h++)a[s*8+h]=r>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#D.run([66,...t],a,r)}),this.#V.add([16,0,8,0],(t,a,r)=>{let s=(t[2]<<4)+t[3],i="K11 ";([()=>{e.switchMode("k11",!0),e.#c=!1,e.#E=s?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${i}reverb type: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let s=e.chRedir(t[1],a,!0),i=g.cc*s,h=g.rpn*s,d=(t[3]<<4)+t[4],l=`K11 CH${s+1} `;([()=>{d<128?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[i+u[0]]=0,e.#r[s]=d):(e.setChType(s,e.CH_DRUMS,m.k11),e.#r[s]=d-128)},()=>{let f=e.chRedir(d,a,!0);e.#l[s]=f,s!=f&&(e.buildRchTree(),console.info(`${l}receives from CH${f+1}`))},()=>{e.#e[i+u[7]]=d},()=>{e.#n[s]=d},()=>{e.#e[i+u[10]]=d},()=>{e.#i[h+3]=d+40},()=>{e.#i[h+1]=d>>1,e.#i[h+2]=d&1},()=>{e.#e[i+u[91]]=d?127:0},()=>{},()=>{e.#e[i+u[74]]=d},()=>{e.#e[i+u[73]]=d},()=>{e.#e[i+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let s=(t[2]<<4)+t[3],i="GMLX ";([()=>{console.debug(`${i}reverb type: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let s=(t[2]<<4)+t[3],i=e.chRedir(t[1],a,!0),h=i*g.cc;[()=>{s<128?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#r[i]=s):s<160?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#r[i]=s-100):(e.setChType(i,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#r[i]=s-160)},()=>{let d=e.chRedir(s,a,!0);e.#l[i]=d,i!=d&&(e.buildRchTree(),console.info(`GMLX CH${i+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let s=(t[2]<<4)+t[3],i=e.chRedir(t[1],a,!0),h=i*g.cc,d=i*g.rpn,l=`GMLX CH${i+1} `;[()=>{e.#n[i]=s},()=>{e.#e[h+u[7]]=s},()=>{e.#e[h+u[10]]=s},()=>{e.#e[h+u[91]]=s?127:0},()=>{e.#i[d+3]=s+40},()=>{e.#i[d+1]=s},()=>{e.#i[d]=s},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,a,r)=>{let s=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=s*129/16383*100;break}case 5:{s-64;break}case 6:{console.debug(`SG global reverb: ${s?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[s]}`);break}}break}default:if(t[0]>>4==1){let i=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let h=e.chRedir(s,a,!0);e.#l[i]=h,i!=h&&(e.buildRchTree(),console.info(`SG CH${i+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*i+u[7]]=s)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#v.add([127,0],(t,a,r)=>{e.switchMode("motif");let s=new Uint8Array([127,1,...t]);e.#v.run(s,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES system ",i=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][i+d]||(()=>{console.info(`Unrecognized ${s}ID: ${i+d}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES bulk header ",i=[];i[95]=(h,d,l)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(i[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES bulk footer ",i=[];i[95]=(h,d,l)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(i[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let s=e.chRedir(t[0],a,!0),i=g.cc*s,h=t[1],d=`S90/Motif ES bulk CH${s<16?s+1:"U"+(s-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((l,f)=>{([()=>{e.#e[i+u[0]]=l},()=>{l&&(e.#n[s]=1),e.#e[i+u[32]]=l,e.#a[s]=this.setChType(s,[32,40].indexOf(l)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{l&&(e.#n[s]=1),e.#r[s]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#k[s]=l?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[i+u[7]]=l},()=>{e.#e[i+u[10]]=l},!1,!1,!1,()=>{e.#e[i+u[91]]=l},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[94]]=l},()=>{e.#e[i+u[128]]=l},()=>{},()=>{e.#e[i+u[74]]=l},()=>{e.#e[i+u[71]]=l},!1,()=>{e.#e[i+u[65]]=l},()=>{e.#e[i+u[5]]=l},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let s=t[0];t.subarray(1).forEach((i,h)=>{let l=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=i-64},()=>{let f=T[i]},()=>{let f=i/10},()=>{let f=i}][s+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,c,o){this.#t=e,this.start=n,this.end=c,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,c){super(!0,e,n,c)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let c=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(c.push(a),t.#t=a.index)})}return c}getRange(e,n){e>n&&([e,n]=[n,e]);let c=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let r=0;r=e&&(o=r):o=o<0?r:o;for(;a;)this[o]?.end=e&&c.push(this[o]):a=!1,o++;return c}};var _e=0xffffffffffff,ve=function(e){let n=new Q,c=this,o=e.timeDivision,t=120,a=new Q,r=0,s=0;a.push(new q(0,_e,[120,0])),e.track.forEach(function(l){r=0,l.event.forEach(function(f){r+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,a[a.length-1]&&a.push(new q(r,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(l,f,p){f>0&&(p[f-1].end=l.start)});let i=120;a.forEach(function(l,f,p){f>0&&(l.end==l.start?p.splice(p.indexOf(l),1):i==l.data[0]&&(p[f-1].end=l.end,p.splice(p.indexOf(l),1)),i=l.data[0])});let h=0,d=120;return a.forEach(function(l){let f=l.start,p=f/d/o*60+h;d=l.data[0],h=p-f/d/o*60,l.data[1]=h}),console.debug("All tempo changes: ",a),t=120,r=0,s=0,e.track.forEach(function(l,f){r=0,s=0;let p=f+1;l.event.forEach(function(b,y){r+=b.deltaTime;let $=a.step(r,!0)[0];$&&(t=$.data[0],s=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(r/t/o*60+s,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends U{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#l=120;#a=4;#e=4;#b=0;#r=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#l=120,this.#a=4,this.#e=4,this.#b=0,this.#r=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#r/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#a)}get noteBeat(){let e=this.noteOverall%this.#a;return e<0&&(e+=this.#a),e}getTimeSig(){return[this.#a,this.#e]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#r&&(this.#r=e);let n=this.#t?.step(e)||[],c=0,o=new Set,t=this,a=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&c++),y.data.type==8&&o.has($.part*128+$.data[0])&&c++;let w=t.device.runJson($);switch(w?.reply){case"meta":{a.push(w);break}}w?.reply&&delete w.reply}),a?.length>0&&this.dispatchEvent("meta",a);let r=this.device.getActive(),s=[],i=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),l=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let C=w[$]-t.#p[$],Y=u.length*$;if(C>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(C-C*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(C-C*t.smoothingDcy**L)}});let p=0;return r.forEach(function(y,$){y&&(s[$]=t.device.getVel($),p+=s[$].size)}),{extraPoly:c,curPoly:p,chInUse:r,chKeyPr:s,chPitch:i,chProgr:d,chContr:h,chType:l,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,c=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=c,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(o.#h[a.meta]||console.debug).call(o,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,a){o.#o?.length<1&&(o.#o=a)},this.#h[81]=function(t,a){let r=o.noteProgress,s=o.#n||.5;o.#l=6e7/a,o.#n=a/1e6,o.#b+=r*(s/o.#n)-r},this.#h[88]=function(t,a){let r=o.noteProgress,s=o.noteOverall,i=o.noteBar,h=o.noteBeat,d=o.#a,l=o.#e;o.#a=a[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,s=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[c%12]*this.noteHeight;if(o>0)switch(a.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,a.fillRect(r+1,s+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{a.clearRect(r+1+this.noteOutline,s+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let c=super.render(n),o=this,t=this.context,a=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let r=metrics.actualBoundingBoxLeft,s=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${c.eventCount.toString().padStart(3,"0")} ${(c.curPoly+c.extraPoly).toString().padStart(3,"0")}/512 ${c.tSig[0].toString().padStart(2," ")}/${c.tSig[1].toString().padEnd(2," ")} ${(c.noteBar+1).toString().padStart(3," ")}:${Math.floor(c.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(c.tempo).toString().padStart(3," ")}.${Math.floor(c.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(c.master.volume).toString().padStart(3," ")}.${Math.floor(c.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+r,s+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+r,s+o.fontPadding+o.lineHeight*2),c.chKeyPr.forEach((i,h)=>{i.forEach((d,l)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&i.part1?32:16)),l=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+r+(i>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(l.name,o.fontPadding+r+(i>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(i>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+i%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(c.chContr[f+u[p]]/-127))})}}c.letter.expire<=a,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let i=0;i<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+i%(this.mode>1?32:16)),o.noteWidth*16*(c.strength[h]/255),o.lineHeight-1)}for(let i in o.eventBuffer)delete o.eventBuffer[i];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let c=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,a=t.part*128+t.note,r=this.eventBuffer[a];this.eventBuffer[a]=t,r?.velo>0&&t.velo==0&&this.eventQueue.push(r)})}},Dt=Fe;export{Dt as default}; +${s} ${i} ${h} ${r.trim().replace("Init Combi","")}`,i++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,s,i)=>{if(s<720)for(let h=0;h<8;h++)a[s*8+h]=r>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#D.run([66,...t],a,r)}),this.#V.add([16,0,8,0],(t,a,r)=>{let s=(t[2]<<4)+t[3],i="K11 ";([()=>{e.switchMode("k11",!0),e.#c=!1,e.#E=s?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,s),console.debug(`${i}reverb type: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let s=e.chRedir(t[1],a,!0),i=g.cc*s,h=g.rpn*s,d=(t[3]<<4)+t[4],l=`K11 CH${s+1} `;([()=>{d<128?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[i+u[0]]=0,e.#r[s]=d):(e.setChType(s,e.CH_DRUMS,m.k11),e.#r[s]=d-128)},()=>{let f=e.chRedir(d,a,!0);e.#l[s]=f,s!=f&&(e.buildRchTree(),console.info(`${l}receives from CH${f+1}`))},()=>{e.#e[i+u[7]]=d},()=>{e.#n[s]=d},()=>{e.#e[i+u[10]]=d},()=>{e.#i[h+3]=d+40},()=>{e.#i[h+1]=d>>1,e.#i[h+2]=d&1},()=>{e.#e[i+u[91]]=d?127:0},()=>{},()=>{e.#e[i+u[74]]=d},()=>{e.#e[i+u[73]]=d},()=>{e.#e[i+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let s=(t[2]<<4)+t[3],i="GMLX ";([()=>{console.debug(`${i}reverb type: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let s=(t[2]<<4)+t[3],i=e.chRedir(t[1],a,!0),h=i*g.cc;[()=>{s<128?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#r[i]=s):s<160?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#r[i]=s-100):(e.setChType(i,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#r[i]=s-160)},()=>{let d=e.chRedir(s,a,!0);e.#l[i]=d,i!=d&&(e.buildRchTree(),console.info(`GMLX CH${i+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let s=(t[2]<<4)+t[3],i=e.chRedir(t[1],a,!0),h=i*g.cc,d=i*g.rpn,l=`GMLX CH${i+1} `;[()=>{e.#n[i]=s},()=>{e.#e[h+u[7]]=s},()=>{e.#e[h+u[10]]=s},()=>{e.#e[h+u[91]]=s?127:0},()=>{e.#i[d+3]=s+40},()=>{e.#i[d+1]=s},()=>{e.#i[d]=s},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,a,r)=>{let s=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=s*129/16383*100;break}case 5:{s-64;break}case 6:{console.debug(`SG global reverb: ${s?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[s]}`);break}}break}default:if(t[0]>>4==1){let i=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let h=e.chRedir(s,a,!0);e.#l[i]=h,i!=h&&(e.buildRchTree(),console.info(`SG CH${i+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*i+u[7]]=s)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#v.add([127,0],(t,a,r)=>{e.switchMode("motif");let s=new Uint8Array([127,1,...t]);e.#v.run(s,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES system ",i=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][i+d]||(()=>{console.info(`Unrecognized ${s}ID: ${i+d}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES bulk header ",i=[];i[95]=(h,d,l)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(i[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES bulk footer ",i=[];i[95]=(h,d,l)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(i[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let s=e.chRedir(t[0],a,!0),i=g.cc*s,h=t[1],d=`S90/Motif ES bulk CH${s<16?s+1:"U"+(s-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((l,f)=>{([()=>{e.#e[i+u[0]]=l},()=>{l&&(e.#n[s]=1),e.#e[i+u[32]]=l,e.#a[s]=this.setChType(s,[32,40].indexOf(l)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{l&&(e.#n[s]=1),e.#r[s]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#k[s]=l?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[i+u[7]]=l},()=>{e.#e[i+u[10]]=l},!1,!1,!1,()=>{e.#e[i+u[91]]=l},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[94]]=l},()=>{e.#e[i+u[128]]=l},()=>{},()=>{e.#e[i+u[74]]=l},()=>{e.#e[i+u[71]]=l},!1,()=>{e.#e[i+u[65]]=l},()=>{e.#e[i+u[5]]=l},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let s=t[0];t.subarray(1).forEach((i,h)=>{let l=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=i-64},()=>{let f=M[i]},()=>{let f=i/10},()=>{let f=i}][s+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,c,o){this.#t=e,this.start=n,this.end=c,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,c){super(!0,e,n,c)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let c=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(c.push(a),t.#t=a.index)})}return c}getRange(e,n){e>n&&([e,n]=[n,e]);let c=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let r=0;r=e&&(o=r):o=o<0?r:o;for(;a;)this[o]?.end=e&&c.push(this[o]):a=!1,o++;return c}};var _e=0xffffffffffff,ve=function(e){let n=new Q,c=this,o=e.timeDivision,t=120,a=new Q,r=0,s=0;a.push(new q(0,_e,[120,0])),e.track.forEach(function(l){r=0,l.event.forEach(function(f){r+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,a[a.length-1]&&a.push(new q(r,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(l,f,p){f>0&&(p[f-1].end=l.start)});let i=120;a.forEach(function(l,f,p){f>0&&(l.end==l.start?p.splice(p.indexOf(l),1):i==l.data[0]&&(p[f-1].end=l.end,p.splice(p.indexOf(l),1)),i=l.data[0])});let h=0,d=120;return a.forEach(function(l){let f=l.start,p=f/d/o*60+h;d=l.data[0],h=p-f/d/o*60,l.data[1]=h}),console.debug("All tempo changes: ",a),t=120,r=0,s=0,e.track.forEach(function(l,f){r=0,s=0;let p=f+1;l.event.forEach(function(b,y){r+=b.deltaTime;let $=a.step(r,!0)[0];$&&(t=$.data[0],s=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(r/t/o*60+s,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends U{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#l=120;#a=4;#e=4;#b=0;#r=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#l=120,this.#a=4,this.#e=4,this.#b=0,this.#r=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#r/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#a)}get noteBeat(){let e=this.noteOverall%this.#a;return e<0&&(e+=this.#a),e}getTimeSig(){return[this.#a,this.#e]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#r&&(this.#r=e);let n=this.#t?.step(e)||[],c=0,o=new Set,t=this,a=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&c++),y.data.type==8&&o.has($.part*128+$.data[0])&&c++;let w=t.device.runJson($);switch(w?.reply){case"meta":{a.push(w);break}}w?.reply&&delete w.reply}),a?.length>0&&this.dispatchEvent("meta",a);let r=this.device.getActive(),s=[],i=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),l=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let C=w[$]-t.#p[$],Y=u.length*$;if(C>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(C-C*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(C-C*t.smoothingDcy**L)}});let p=0;return r.forEach(function(y,$){y&&(s[$]=t.device.getVel($),p+=s[$].size)}),{extraPoly:c,curPoly:p,chInUse:r,chKeyPr:s,chPitch:i,chProgr:d,chContr:h,chType:l,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,c=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=c,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(o.#h[a.meta]||console.debug).call(o,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,a){o.#o?.length<1&&(o.#o=a)},this.#h[81]=function(t,a){let r=o.noteProgress,s=o.#n||.5;o.#l=6e7/a,o.#n=a/1e6,o.#b+=r*(s/o.#n)-r},this.#h[88]=function(t,a){let r=o.noteProgress,s=o.noteOverall,i=o.noteBar,h=o.noteBeat,d=o.#a,l=o.#e;o.#a=a[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,s=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[c%12]*this.noteHeight;if(o>0)switch(a.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,a.fillRect(r+1,s+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{a.clearRect(r+1+this.noteOutline,s+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let c=super.render(n),o=this,t=this.context,a=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let r=metrics.actualBoundingBoxLeft,s=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${c.eventCount.toString().padStart(3,"0")} ${(c.curPoly+c.extraPoly).toString().padStart(3,"0")}/512 ${c.tSig[0].toString().padStart(2," ")}/${c.tSig[1].toString().padEnd(2," ")} ${(c.noteBar+1).toString().padStart(3," ")}:${Math.floor(c.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(c.tempo).toString().padStart(3," ")}.${Math.floor(c.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(c.master.volume).toString().padStart(3," ")}.${Math.floor(c.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+r,s+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+r,s+o.fontPadding+o.lineHeight*2),c.chKeyPr.forEach((i,h)=>{i.forEach((d,l)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&i.part1?32:16)),l=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+r+(i>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(l.name,o.fontPadding+r+(i>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(i>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+i%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(c.chContr[f+u[p]]/-127))})}}c.letter.expire<=a,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let i=0;i<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+i%(this.mode>1?32:16)),o.noteWidth*16*(c.strength[h]/255),o.lineHeight-1)}for(let i in o.eventBuffer)delete o.eventBuffer[i];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let c=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,a=t.part*128+t.note,r=this.eventBuffer[a];this.eventBuffer[a]=t,r?.velo>0&&t.velo==0&&this.eventQueue.push(r)})}},Dt=Fe;export{Dt as default}; diff --git a/dist/state.mjs b/dist/state.mjs index cb0f31da..0fad8a89 100644 --- a/dist/state.mjs +++ b/dist/state.mjs @@ -1,8 +1,8 @@ -var X=function(e,n){let o=Math.min(e.length,n.length),f=e.slice(0,o),t=n.slice(0,o),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(c,l,h){i&&c!=n[l]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...o):this.pool[f].data(n.slice(this.pool[f].length),...o):this.default(n,...o)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),f=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var le=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},H=class{#t;strictMode=!1;get(e=0,n=0,o=0,f){let t=[e,n,o],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{o==126?r[2]=125:o==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{o==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(r[2]=0);break}}break}case"gs":{e==0&&o<5?r[2]=0:e>125&&o<5&&o!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&o==0&&(r[2]=5);break}case"s90es":{o<8?r[2]+=17:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{o<8?r[2]+=28:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",c=0,l=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",c=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,c=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),c=3;break}case 97:{s="VL:",c=3,l=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(l=63),c=3;break}case 100:{s="AN",r[2]>63&&(l=63),c=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,c=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,o,r[0],r[2]][c]-l}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(o||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,o){let f=this,t=[],a=0,r=0;e.split(` -`).forEach(function(i,s){let c=i.split(" "),l=[];s==0?c.forEach(function(h,b){t[le.indexOf(h)]=b}):c.forEach(async function(h,b){b>2?(f.#t[l[t[1]]]=f.#t[l[t[1]]]||[],(!f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]?.length||n)&&(f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]=c[3],a++),r++):l.push(parseInt(c[b]))})}),n||console.debug(`Map "${o||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,f){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let o=!0;return n.forEach((f,t)=>{o=o&&e[t]==f}),o},V=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],c=0;for(;i;){let l=n.subarray(a);([()=>{v.decode(l.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(l.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(l.subarray(0,4)),b=V(l.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[c],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return o});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,o=-.3;return e>66?(n=5,o=315):e>56?(n=1,o=47):e>46&&(n=.5,o=18.5),n*e-o},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +var X=function(e,n){let c=Math.min(e.length,n.length),f=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(o,l,h){i&&o!=n[l]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...c):this.pool[f].data(n.slice(this.pool[f].length),...c):this.default(n,...c)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),f=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var le=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},H=class{#t;strictMode=!1;get(e=0,n=0,c=0,f){let t=[e,n,c],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",o=0,l=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",o=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,o=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),o=3;break}case 97:{s="VL:",o=3,l=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(l=63),o=3;break}case 100:{s="AN",r[2]>63&&(l=63),o=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,o=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,c,r[0],r[2]][o]-l}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${c}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(c||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,c){let f=this,t=[],a=0,r=0;e.split(` +`).forEach(function(i,s){let o=i.split(" "),l=[];s==0?o.forEach(function(h,b){t[le.indexOf(h)]=b}):o.forEach(async function(h,b){b>2?(f.#t[l[t[1]]]=f.#t[l[t[1]]]||[],(!f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]?.length||n)&&(f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]=o[3],a++),r++):l.push(parseInt(o[b]))})}),n||console.debug(`Map "${c||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],c=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=c[0];t<=c[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(c,f){try{await fetch(`./data/bank/${c}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,c)})}catch{console.error(`Failed loading "${c}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let c=!0;return n.forEach((f,t)=>{c=c&&e[t]==f}),c},V=function(e){let n=0;return e.forEach(c=>{n*=256,n+=c}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),c="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],o=0;for(;i;){let l=n.subarray(a);([()=>{v.decode(l.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(l.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(l.subarray(0,4)),b=V(l.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[o],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return c});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,c=-.3;return e>66?(n=5,c=315):e>56?(n=1,c=47):e>46&&(n=.5,c=18.5),n*e-c},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,o){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,o,e),o++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var ce={length:A.length};A.forEach((e,n)=>{ce[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],o=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(o,t)):f==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},oe=function(e,n="",o="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${o}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#o=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#c=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#l=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(o==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let o=e*128+n,f=this.#l.lastIndexOf(o);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#c[o],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#c[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#l[f]=0,this.#c[o]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#l[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_HELD){let f=this.#l[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#l[o]=0,this.#c[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,o)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[o]=f;let t=this.#l[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#c[t],state:f})}})},soOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#l[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#l[o]=0,this.#c[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#l.forEach((n,o,f)=>{let t=n>>7,a=n&127;n==0&&this.#c[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,o=e.data[0];this.#h.nOff(n,o)},9:function(e){let n=e.channel;this.#o[n]=1;let o=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,o,f):this.#h.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#l.indexOf(o)>-1&&(this.#c[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#o[n]=1);break}e.data[1]&&(this.#o[n]=1);break}default:{this.#o[n]=1;break}}})();let o=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[o+d[99]],t=this.#e[o+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[o+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+ce[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[o+d[100]]];this.#e[o+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&I[this.#e[o+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#o[n]=1);break}default:this.#o[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#l.forEach(function(f){let t=f>>7;o==t&&(n.#c[f]=e.data,n.dispatchEvent("note",{part:o,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let o=n[0],f=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(o,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#F.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#T.run(n,o,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,o)=>{this.#U.run(n,o,e)},67:(e,n,o)=>{this.#w.run(n,o,e)},68:(e,n,o)=>{this.#V.run(n,o,e)},71:(e,n,o)=>{this.#K.run(n,o,e)},126:(e,n,o)=>{this.#I.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#X.run(n,o,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#o.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,o=this.#e.subarray(n,n+u.cc);return o[d[0]]=o[d[0]]||this.#H,o[d[32]]=o[d[32]]||this.#y,o}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[o])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,o=this;return o.#l.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&o.#c[f]>0&&n.set(r,{v:o.#c[f],s:o.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#l.forEach(function(n){let o=Math.floor(n/128);e.#c[n]>e.#C[o]&&(e.#C[o]=e.#c[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,f){e[f]=Math.floor(o*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,o,f){let t=e||this.#H,a=n,r=o||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),c=s*u.cmt,l="";this.#N.subarray(c,c+10).forEach(h=>{h>31&&(l+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,f=3200){let t=this,a;t.#M=" ".repeat(o),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let o=this.#R[n];if(o){if(U.indexOf(o)>=0)return this.#e[e*u.cc+d[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#o.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#c.fill(0),this.#l.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#S=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,o,f){f[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=o,this.#p=0,this.#H=se[0][o],this.#y=se[1][o];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[o]);switch(this.initOnReset,o){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#o[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(o){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(f=>{e.channel=f,o=!0,this.#j[e.type].call(this,e)}),o||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,c){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,c,e),c++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],c=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(c,t)):f==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ce=function(e,n="",c="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${c}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#c=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#l=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(c==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let c=e*128+n,f=this.#l.lastIndexOf(c);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#l[f]=0,this.#o[c]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#l[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,c)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[c]=f;let t=this.#l[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#l.forEach((n,c,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,c=e.data[0];this.#h.nOff(n,c)},9:function(e){let n=e.channel;this.#c[n]=1;let c=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,c,f):this.#h.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#l.indexOf(c)>-1&&(this.#o[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#c[n]=1);break}e.data[1]&&(this.#c[n]=1);break}default:{this.#c[n]=1;break}}})();let c=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==g.gs)e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==g.gm)e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==g.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let f=0;for(let t=0;t<16;t++){let a=this.#e[u.cc*t];(a==56||a==62)&&f++}f>14&&this.switchMode("ag10",!0)}}switch(this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[c+d[99]],t=this.#e[c+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[c+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[c+d[100]]];this.#e[c+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&I[this.#e[c+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#c[n]=1);break}default:this.#c[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#l.forEach(function(f){let t=f>>7;c==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:c,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let c=n[0],f=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(c,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#F.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#T.run(n,c,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,c)=>{this.#U.run(n,c,e)},67:(e,n,c)=>{this.#w.run(n,c,e)},68:(e,n,c)=>{this.#V.run(n,c,e)},71:(e,n,c)=>{this.#K.run(n,c,e)},126:(e,n,c)=>{this.#I.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#X.run(n,c,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#c.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,c=this.#e.subarray(n,n+u.cc);return c[d[0]]=c[d[0]]||this.#H,c[d[32]]=c[d[32]]||this.#y,c}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[c])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,c=this;return c.#l.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&c.#o[f]>0&&n.set(r,{v:c.#o[f],s:c.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#l.forEach(function(n){let c=Math.floor(n/128);e.#o[n]>e.#C[c]&&(e.#C[c]=e.#o[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,f){e[f]=Math.floor(c*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,c,f){let t=e||this.#H,a=n,r=c||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),o=s*u.cmt,l="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(l+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,f=3200){let t=this,a;t.#M=" ".repeat(c),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let c=this.#R[n];if(c){if(U.indexOf(c)>=0)return this.#e[e*u.cc+d[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#c.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#o.fill(0),this.#l.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#S=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,c,f){f[c]=c}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=c,this.#p=0,this.#H=se[0][c],this.#y=se[1][c];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[c]);switch(this.initOnReset,c){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#c[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(c){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(f=>{e.channel=f,c=!0,this.#j[e.type].call(this,e)}),c||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${oe(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${oe(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#T=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let c=s+t[0];([r,r,r,r,l=>{this.#b=l*129/16383*100},l=>{},l=>{}][c]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,c=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,c)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${R[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][r+c]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,c=`XG CH${r+1} `,l=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(l):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${c}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(l):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(l):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(l)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((c,l)=>{let h=l+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${s}${b} scale break point: ${c}`):console.debug(`${s}${b} depth: ${c-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,c)=>{let l=r+c;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let c="",l=0;t.subarray(2).forEach((h,b)=>{b%2==0?c+=Y[h]||h.toString().padStart("0"):l+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(c)}`,e.#Y=s+Math.ceil(l/2)+e.#Q,k()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;t.subarray(4).forEach((l,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)c[s+7*b+$]+=(l>>6-$&1)<<7;else c[s+7*b+p]=l})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((c,l)=>{let h=l>>3,b=l&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(c>>6-p&1)<<7;else s[i+7*h+b]=c})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(c,l)=>{i[l]=c};if(t.subarray(1).forEach((c,l)=>{let h=l+t[0];[s,s,s,s,()=>{this.#b=c*129/16383*100},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][h](c,h)}),t[0]<4){let c=0;i.forEach(l=>{c=c<<4,c+=l}),c-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],c=u.cc*i,l=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[c+d[0]]=h},()=>{e.#e[c+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[c+d[7]]=h},!1,!1,()=>{e.#e[c+d[10]]=h||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${h}`)},()=>{console.debug(`${l} AC2 at cc${h}`)},()=>{e.#e[c+d[128]]=h},()=>{e.#e[c+d[93]]=h},()=>{e.#e[c+d[91]]=h},()=>{e.#e[c+d[94]]=h},()=>{e.#e[c+d[76]]=h},()=>{e.#e[c+d[77]]=h},()=>{e.#e[c+d[74]]=h},()=>{e.#e[c+d[71]]=h},()=>{e.#e[c+d[73]]=h},()=>{e.#e[c+d[75]]=h},()=>{e.#e[c+d[72]]=h},()=>{e.#e[c+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[c+d[65]]=h},()=>{e.#e[c+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let c=Math.floor(s/16),l=s%16,h=(l*3+c)*7,b=7,p=0;for(h-=l*5,c==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(c,l)=>{i[l]=c};if(t.subarray(1).forEach((c,l)=>{let h=l+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](c,l)}),t[0]<4){let c=0;i.forEach(l=>{c=c<<4,c+=l}),c-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let c=ee(e.#g.subarray(10,12),s,i);c&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${c}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(c,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#S=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#S=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,r){let i=t[0],s=u.cc*a,c=u.rpn*a,l=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${l}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[c+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${h}`)},()=>{console.debug(`${l}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[c+1]=h},()=>{e.#s[c+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,c)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+c]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+c-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),c=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[c+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[c+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[c+d[0]]=62))},()=>{e.#e[c+d[7]]=i},()=>{i<31&&(e.#e[c+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[c+d[93]]=D(i)},()=>{e.#e[c+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` -${i} ${s} ${c} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` -${i} ${s} ${c} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,c){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),h=l*u.cc;switch(i%12){case 0:{r<128?(e.setChType(l,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[l]=r):(e.setChType(l,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[l]=ne[r-128]),r>0&&(e.#o[l]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[l*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[l*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[l]=r,(b!=l||p)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((c,l)=>{let h=l+s;e.#A[h+(i-1)*16]=c,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=c+40},()=>{e.#s[i*u.rpn+1]=c+14},()=>{e.#s[i*u.rpn]=c},!1,()=>{e.#e[u.cc*i+d[91]]=c?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=c},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(c*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((c,l)=>{let h=l+s;h<14&&(e.#k[(i-1)*u.cmt+h]=c)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,c)=>{let l=c+i;e.#A[l]=s;let h=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,c)=>{let l=c+i,h=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,c)=>{let l=i+c,h=Math.floor(l/8),b=l&7,p=h*8;e.#q[l]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME -000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,c)=>{let l=i+c;l>1)*u.cmt+l]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,c=function(l,h){e.#f[h-12]=l,s=!0};t.subarray(2).forEach((l,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{e.#b=l}][b]||(()=>{}))(l,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(c,l)=>{i[l]=c};if(t.subarray(1).forEach((c,l)=>{[s,s,s,s,()=>{e.#b=c*129/16383*100},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][r+l]()}),t[0]<4){let c=0;i.forEach(l=>{c=c<<4,c+=l}),c-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],c=`NS5R CH${r+1} `;t.subarray(2).forEach((l,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=l||121},()=>{e.#e[i+d[32]]=l},()=>{e.#r[r]=l}][b]():b<8||(b<14?[()=>{let p=e.chRedir(l,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#E[r]=+!l},()=>{e.setChType(r,l,g.ns5r),console.debug(`${c}type: ${O[l]}`)},()=>{e.#s[u.rpn*r+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=l},()=>{e.#e[i+d[11]]=l},()=>{},()=>{},()=>{e.#e[i+d[10]]=l||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=l},()=>{e.#e[i+d[91]]=l},()=>{e.#e[i+d[76]]=l},()=>{e.#e[i+d[77]]=l},()=>{e.#e[i+d[78]]=l},()=>{e.#e[i+d[74]]=l},()=>{e.#e[i+d[71]]=l},()=>{e.#e[i+d[73]]=l},()=>{e.#e[i+d[75]]=l},()=>{e.#e[i+d[72]]=l}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=l},()=>{e.#e[i+d[65]]=l}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#S=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),c=4;s.forEach(function(l,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),c=s*u.cc;switch(i%92){case 0:{e.#e[c+d[0]]=r||121;break}case 1:{e.#e[c+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#o[s]=1);break}case 3:{let l=e.chRedir(r,a,!0);e.#f[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[c+d[7]]=r;break}case 11:{e.#e[c+d[11]]=r;break}case 14:{e.#e[c+d[10]]=r||128;break}case 19:{e.#e[c+d[93]]=r;break}case 20:{e.#e[c+d[91]]=r;break}case 84:{e.#e[c+d[65]]=r;break}case 85:{e.#e[c+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{c=h&127;break}case p==13:{l+=` -${i} ${s} ${c} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{l+=` -${i} ${s} ${c} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=r>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,c=u.rpn*i,l=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=l):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=l},()=>{e.#o[i]=l},()=>{e.#e[s+d[10]]=l},()=>{e.#s[c+3]=l+40},()=>{e.#s[c+1]=l>>1,e.#s[c+2]=l&1},()=>{e.#e[s+d[91]]=l?127:0},()=>{},()=>{e.#e[s+d[74]]=l},()=>{e.#e[s+d[73]]=l},()=>{e.#e[s+d[72]]=l}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),c=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[c+d[0]]=0,e.#e[c+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[c+d[0]]=0,e.#e[c+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[c+d[0]]=122,e.#e[c+d[32]]=0,e.#r[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),c=s*u.cc,l=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#o[s]=i},()=>{e.#e[c+d[7]]=i},()=>{e.#e[c+d[10]]=i},()=>{e.#e[c+d[91]]=i?127:0},()=>{e.#s[l+3]=i+40},()=>{e.#s[l+1]=i},()=>{e.#s[l]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let c=e.chRedir(i,a,!0);e.#f[s]=c,s!=c&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${c+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((c,l)=>{([()=>{e.#b=c*12900/16383}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(c,l,h)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(c,l,h)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,c=t[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#o[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#o[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][c+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,c)=>{let h=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+c&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,ce as dnToPos}; +122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${ce(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${ce(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#T=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let o=s+t[0];([r,r,r,r,l=>{this.#b=l*129/16383*100},l=>{},l=>{}][o]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,o=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${R[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][r+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,o=`XG CH${r+1} `,l=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(l):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(l):i<116?console.debug(`${o}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(l):i<120?console.debug(`${o}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(l)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((o,l)=>{let h=l+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,o)=>{let l=r+o;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let o="",l=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):l+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(o)}`,e.#Y=s+Math.ceil(l/2)+e.#Q,k()&&console.debug(`${i}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((l,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(l>>6-$&1)<<7;else o[s+7*b+p]=l})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,l)=>{let h=l>>3,b=l&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(o>>6-p&1)<<7;else s[i+7*h+b]=o})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*i,l=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${h}`)},()=>{console.debug(`${l} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let o=Math.floor(s/16),l=s%16,h=(l*3+o)*7,b=7,p=0;for(h-=l*5,o==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,l)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let o=ee(e.#g.subarray(10,12),s,i);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(o,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#S=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#S=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,r){let i=t[0],s=u.cc*a,o=u.rpn*a,l=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${l}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${h}`)},()=>{console.debug(`${l}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+o]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+o-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),o=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[o+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=i},()=>{i<31&&(e.#e[o+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(i)},()=>{e.#e[o+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` +${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,o){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),h=l*u.cc;switch(i%12){case 0:{r<128?(e.setChType(l,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[l]=r):(e.setChType(l,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[l]=ne[r-128]),r>0&&(e.#c[l]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[l*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[l*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[l]=r,(b!=l||p)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((o,l)=>{let h=l+s;e.#A[h+(i-1)*16]=o,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=o+40},()=>{e.#s[i*u.rpn+1]=o+14},()=>{e.#s[i*u.rpn]=o},!1,()=>{e.#e[u.cc*i+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=o},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((o,l)=>{let h=l+s;h<14&&(e.#k[(i-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,o)=>{let l=o+i;e.#A[l]=s;let h=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let l=o+i,h=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o,h=Math.floor(l/8),b=l&7,p=h*8;e.#q[l]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME +000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o;l>1)*u.cmt+l]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,o=function(l,h){e.#f[h-12]=l,s=!0};t.subarray(2).forEach((l,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,o,o,o,o,o,o,o,o,o,()=>{e.#b=l}][b]||(()=>{}))(l,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{[s,s,s,s,()=>{e.#b=o*129/16383*100},()=>o-64,()=>o-64,()=>{},()=>{},()=>{}][r+l]()}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],o=`NS5R CH${r+1} `;t.subarray(2).forEach((l,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=l||121},()=>{e.#e[i+d[32]]=l},()=>{e.#r[r]=l}][b]():b<8||(b<14?[()=>{let p=e.chRedir(l,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!l},()=>{e.setChType(r,l,g.ns5r),console.debug(`${o}type: ${O[l]}`)},()=>{e.#s[u.rpn*r+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=l},()=>{e.#e[i+d[11]]=l},()=>{},()=>{},()=>{e.#e[i+d[10]]=l||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=l},()=>{e.#e[i+d[91]]=l},()=>{e.#e[i+d[76]]=l},()=>{e.#e[i+d[77]]=l},()=>{e.#e[i+d[78]]=l},()=>{e.#e[i+d[74]]=l},()=>{e.#e[i+d[71]]=l},()=>{e.#e[i+d[73]]=l},()=>{e.#e[i+d[75]]=l},()=>{e.#e[i+d[72]]=l}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=l},()=>{e.#e[i+d[65]]=l}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#S=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),o=4;s.forEach(function(l,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),o=s*u.cc;switch(i%92){case 0:{e.#e[o+d[0]]=r||121;break}case 1:{e.#e[o+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#c[s]=1);break}case 3:{let l=e.chRedir(r,a,!0);e.#f[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[o+d[7]]=r;break}case 11:{e.#e[o+d[11]]=r;break}case 14:{e.#e[o+d[10]]=r||128;break}case 19:{e.#e[o+d[93]]=r;break}case 20:{e.#e[o+d[91]]=r;break}case 84:{e.#e[o+d[65]]=r;break}case 85:{e.#e[o+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{o=h&127;break}case p==13:{l+=` +${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{l+=` +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let o=0;o<8;o++)a[i*8+o]=r>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,o=u.rpn*i,l=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=l):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=l},()=>{e.#c[i]=l},()=>{e.#e[s+d[10]]=l},()=>{e.#s[o+3]=l+40},()=>{e.#s[o+1]=l>>1,e.#s[o+2]=l&1},()=>{e.#e[s+d[91]]=l?127:0},()=>{},()=>{e.#e[s+d[74]]=l},()=>{e.#e[s+d[73]]=l},()=>{e.#e[s+d[72]]=l}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,l=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#c[s]=i},()=>{e.#e[o+d[7]]=i},()=>{e.#e[o+d[10]]=i},()=>{e.#e[o+d[91]]=i?127:0},()=>{e.#s[l+3]=i+40},()=>{e.#s[l+1]=i},()=>{e.#s[l]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(i,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,l)=>{([()=>{e.#b=o*12900/16383}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,o=t[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#c[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#c[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+o&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index 24277940..740cd3a3 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -152,5 +152,5 @@ ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}s>99&&(i=90 ${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ie(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ie(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,D)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,D)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,he).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,me)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,me)[i-1<<4];if(b<3)if(t(e,ce)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,ce)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,te)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,me)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,me)[d-1<<4];if(y<3)if(t(e,ce)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,te)[(d-1)*$.cmt+b]=s),b<10&&(t(e,ce)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let E=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME 000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,Ee)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,le,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,D)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,D)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,ne,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,E=0,x=y0;)t(e,W,de)[k*32+y*7+(x-E)]=v&1,v=v>>1,E++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ie(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ie(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,D)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=88,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%126;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:break;case y==12:break;case y==13:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,Z,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,J).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,J).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0)},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,ee)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,Z))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,Z),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,Z)}return e}getChSource(){return t(this,H)}getChType(){return t(this,O)}setChType(e,n,h=t(this,P),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,Z);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,Ee).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,Z,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,J).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,J).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0)},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,ee)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,Z))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,Z),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,Z)}return e}getChSource(){return t(this,H)}getChType(){return t(this,O)}setChType(e,n,h=t(this,P),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,Z);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,Ee).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG 0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,D)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,P)]);if(t(this,ce)[e])switch(t(this,P)){case M.mt32:n.ending="~",n.name="",t(this,te).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,le," ".repeat(h)),e.forEach(o=>{w(r,le,t(r,le)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,le,t(r,le).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,P,0),w(this,ve,0),w(this,Z,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,D).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,oe).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,T,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,le,""),w(this,ne,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,O).fill(this.CH_MELODIC),t(this,O)[9]=this.CH_DRUM1,t(this,O)[25]=this.CH_DRUM3,t(this,O)[41]=this.CH_DRUMS,t(this,O)[57]=this.CH_DRUMS,t(this,O)[73]=this.CH_DRUM5,t(this,O)[89]=this.CH_DRUM7,t(this,O)[105]=this.CH_DRUMS,t(this,O)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,Ee).fill(0),t(this,me).fill(0),t(this,te).fill(0),t(this,ce).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,P)==0||n){let c=t(this,P);w(this,P,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,Z,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,O)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,D)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,oe).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,T).length>100&&t(this,T).splice(100,t(this,T).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},P=new WeakMap,j=new WeakMap,ne=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,O=new WeakMap,p=new WeakMap,ue=new WeakMap,D=new WeakMap,L=new WeakMap,ee=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,oe=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,ce=new WeakMap,me=new WeakMap,te=new WeakMap,Ve=new WeakMap,Ee=new WeakMap,Q=new WeakMap,ve=new WeakMap,Z=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,le=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,T=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,J=new WeakMap,he=new WeakMap,ge=new WeakMap,Pe=new WeakMap,De=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);R();R();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){m(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),Et=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);m(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new Et(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new Et(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let E={type:y.type,data:y.data,track:b,part:0};y.type>14?E.meta=y.metaType:E.part=y.channel,e.push(new rr(a/c/h*60+o,E))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");m(this,qe,void 0);m(this,Ue,"");m(this,Le,[]);m(this,Be,new Uint8ClampedArray(128));m(this,st,new Uint8ClampedArray(128));m(this,xe,.5);m(this,je,120);m(this,F,4);m(this,Ne,4);m(this,ye,0);m(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((E,x)=>{t(this,st)[x]=E}),r.device.newStrength(),n.forEach(function(E){let x=E.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),E.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(E,x,A){A[x]=Math.max(t(r,st)[x],E);let V=A[x]-t(r,Be)[x],ae=g.length*x;if(V>=0){let lt=4*.25**(f[ae+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[ae+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(E,x){E&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; diff --git a/dist/xp_state.mjs b/dist/xp_state.mjs index b27e4713..51c6bc87 100644 --- a/dist/xp_state.mjs +++ b/dist/xp_state.mjs @@ -152,5 +152,5 @@ ${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}r>99&&(i=90 ${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,a)=>{e.switchMode("x5d",!0),ee(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,a)=>{e.switchMode("x5d",!0),ee(s,function(o,i,r,c){if(i<192){let h=e.chRedir(Math.floor(i/12),a,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,x.x5d),t(e,u)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,x.x5d),t(e,u)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,u)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,u)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,u)[f+p[91]]=_e(y),t(e,u)[f+p[93]]=_e(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,a,!0)}})}),t(this,ie).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1];s.subarray(2).forEach((c,h)=>{let f=h+r;t(e,ge)[f+(i-1)*16]=c,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,ae)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=c+40},()=>{t(e,v)[i*$.rpn+1]=c+14},()=>{t(e,v)[i*$.rpn]=c},!1,()=>{t(e,u)[$.cc*i+p[91]]=c?127:0},!1,()=>{t(e,u)[$.cc*i+p[7]]=c},()=>{t(e,u)[$.cc*i+p[10]]=Math.ceil(c*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1]+(s[0]<<7);r<10&&(t(e,ae)[i]=1),s.subarray(2).forEach((c,h)=>{let f=h+r;f<14&&(t(e,Y)[(i-1)*$.cmt+f]=c)})}).add([22,18,3],(s,a,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((r,c)=>{let h=c+i;t(e,ge)[h]=r;let f=e.chRedir(1+h>>4,a,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,ae)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=r+40},()=>{t(e,v)[f*$.rpn+1]=r+14},()=>{t(e,v)[f*$.rpn]=r},!1,()=>{t(e,u)[$.cc*f+p[91]]=r?127:0},!1,()=>{t(e,u)[$.cc*f+p[7]]=r},()=>{t(e,u)[$.cc*f+p[10]]=Math.ceil(r*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,a,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((r,c)=>{let h=c+i,f=e.chRedir(Math.floor(h/246+1),a,!0),g=h%246;g<14&&(t(e,Y)[(f-1)*$.cmt+g]=r),g<10&&(t(e,ae)[f]=1)})}).add([22,18,5],(s,a,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=r,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${r.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,r+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME 000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,a,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=r)})}).add([22,18,16],(s,a,o)=>{e.switchMode("mt32");let i=s[1],r=!1,c=function(h,f){t(e,H)[f-12]=h,r=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{w(e,_,h)}][g]||(()=>{}))(h,f)}),r&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let a=s[1],o=" ".repeat(a);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,re,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,a)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,a)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{[r,r,r,r,()=>{w(e,_,c*129/16383*100)},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,0,1],(s,a)=>{}).add([66,18,0,2],(s,a)=>{}).add([66,18,1],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=o*$.cc,r=s[1],c=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=r+f;g<3?[()=>{t(e,u)[i+p[0]]=h||121},()=>{t(e,u)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!h},()=>{e.setChType(o,h,x.ns5r),console.debug(`${c}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,u)[i+p[7]]=h},()=>{t(e,u)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,u)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,u)[i+p[93]]=h},()=>{t(e,u)[i+p[91]]=h},()=>{t(e,u)[i+p[76]]=h},()=>{t(e,u)[i+p[77]]=h},()=>{t(e,u)[i+p[78]]=h},()=>{t(e,u)[i+p[74]]=h},()=>{t(e,u)[i+p[71]]=h},()=>{t(e,u)[i+p[73]]=h},()=>{t(e,u)[i+p[75]]=h},()=>{t(e,u)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,u)[i+p[5]]=h},()=>{t(e,u)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,a)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,te,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let r=s.subarray(1),c=4;r.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";ee(s,(i,r)=>{r<8?(i>31&&(o+=String.fromCharCode(i)),r==7&&(e.aiEfxName=o)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),ee(s,function(o,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),c=r*$.cc;switch(i%92){case 0:{t(e,u)[c+p[0]]=o||121;break}case 1:{t(e,u)[c+p[32]]=o;break}case 2:{t(e,O)[r]=o,o>0&&(t(e,P)[r]=1);break}case 3:{let h=e.chRedir(o,a,!0);t(e,H)[r]=h,r!=h&&(console.info(`NS5R CH${r+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[r*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,u)[c+p[7]]=o;break}case 11:{t(e,u)[c+p[11]]=o;break}case 14:{t(e,u)[c+p[10]]=o||128;break}case 19:{t(e,u)[c+p[93]]=o;break}case 20:{t(e,u)[c+p[91]]=o;break}case 84:{t(e,u)[c+p[65]]=o;break}case 85:{t(e,u)[c+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=80,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{c=f&127;break}case y==13:{h+=` ${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(h)}).add([66,55],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=88,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%126;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:break;case y==12:break;case y==13:{h+=` -${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let a=new Uint8Array(5760);ee(s,(o,i,r)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=o>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(s,a,o)=>{t(e,fe).run([66,...s],a,o)}),t(this,Me).add([16,0,8,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Q,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,a,o)=>{let i=e.chRedir(s[1],a,!0),r=$.cc*i,c=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,u)[r+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,a,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,u)[r+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,u)[r+p[10]]=h},()=>{t(e,v)[c+3]=h+40},()=>{t(e,v)[c+1]=h>>1,t(e,v)[c+2]=h&1},()=>{t(e,u)[r+p[91]]=h?127:0},()=>{},()=>{t(e,u)[r+p[74]]=h},()=>{t(e,u)[r+p[73]]=h},()=>{t(e,u)[r+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=0,t(e,O)[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=7,t(e,O)[r]=i-100):(e.setChType(r,e.CH_DRUMS,x.k11),t(e,u)[c+p[0]]=122,t(e,u)[c+p[32]]=0,t(e,O)[r]=i-160)},()=>{let h=e.chRedir(i,a,!0);t(e,H)[r]=h,r!=h&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc,h=r*$.rpn,f=`GMLX CH${r+1} `;[()=>{t(e,P)[r]=i},()=>{t(e,u)[c+p[7]]=i},()=>{t(e,u)[c+p[10]]=i},()=>{t(e,u)[c+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,a,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,_,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let r=e.chRedir(s[0]&15,a,!0);if(s[1]==2){let c=e.chRedir(i,a,!0);t(e,H)[r]=c,r!=c&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${c+1}`))}else s[1]==19&&(t(e,u)[$.cc*r+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,j).add([127,0],(s,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,j).run(i,a,o)}).add([127,1,0,0],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=s[0];s.subarray(1).forEach((c,h)=>{([()=>{w(e,_,c*12900/16383)}][r+h]||(()=>{console.info(`Unrecognized ${i}ID: ${r+h}`)}))()})}).add([127,1,0,0,14],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,a,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],a,!0),r=$.cc*i,c=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,u)[r+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,u)[r+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,W)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,u)[r+p[7]]=f},()=>{t(e,u)[r+p[10]]=f},!1,!1,!1,()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[128]]=f},()=>{},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},!1,()=>{t(e,u)[r+p[65]]=f},()=>{t(e,u)[r+p[5]]=f},()=>{}][c+g]||(()=>{}))()})}).add([127,1,54,16],(s,a,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((r,c)=>{let f=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let g=r-64},()=>{let g=De[r]},()=>{let g=r/10},()=>{let g=r}][i+c&3]||(()=>{}))()})})}chRedir(e,n,l){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Q))>-1){if(l==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,l)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(l)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,l=t(this,u).subarray(n,n+$.cc);return l[p[0]]=l[p[0]]||t(this,ye),l[p[32]]=l[p[32]]||t(this,Q),l}getCcCh(e,n){if(Ie.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,u)[$.cc*e+p[n]]}getCcAll(){let e=t(this,u).slice();for(let n=0;n<$.ch;n++){let l=n*$.cc;e[l+p[0]]=e[l+p[0]]||t(this,ye),e[l+p[32]]=e[l+p[32]]||t(this,Q)}return e}getChSource(){return t(this,H)}getChType(){return t(this,T)}setChType(e,n,l=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,u)[e*$.cc+p[0]]=Se[l])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,C).slice()}getVel(e){let n=new Map,l=this;return t(l,U).forEach(function(d,s){let a=Math.floor(d/128),o=d%128;e==a&&t(l,A)[d]>0&&n.set(o,{v:t(l,A)[d],s:t(l,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,re),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,_)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let l=Math.floor(n/128);t(e,A)[n]>t(e,se)[l]&&(t(e,se)[l]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,d){e[d]=Math.floor(l*t(n,u)[d*$.cc+p[7]]*t(n,u)[d*$.cc+p[11]]*t(n,_)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,l,d){let s=e||t(this,ye),a=n,o=l||t(this,Q);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,a,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),c=r*$.cmt,h="";t(this,$e).subarray(c,c+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG +${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let a=new Uint8Array(5760);ee(s,(o,i,r)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=o>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(s,a,o)=>{t(e,fe).run([66,...s],a,o)}),t(this,Me).add([16,0,8,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Q,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,a,o)=>{let i=e.chRedir(s[1],a,!0),r=$.cc*i,c=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,u)[r+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,a,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,u)[r+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,u)[r+p[10]]=h},()=>{t(e,v)[c+3]=h+40},()=>{t(e,v)[c+1]=h>>1,t(e,v)[c+2]=h&1},()=>{t(e,u)[r+p[91]]=h?127:0},()=>{},()=>{t(e,u)[r+p[74]]=h},()=>{t(e,u)[r+p[73]]=h},()=>{t(e,u)[r+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=0,t(e,O)[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=7,t(e,O)[r]=i-100):(e.setChType(r,e.CH_DRUMS,x.k11),t(e,u)[c+p[0]]=122,t(e,u)[c+p[32]]=0,t(e,O)[r]=i-160)},()=>{let h=e.chRedir(i,a,!0);t(e,H)[r]=h,r!=h&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc,h=r*$.rpn,f=`GMLX CH${r+1} `;[()=>{t(e,P)[r]=i},()=>{t(e,u)[c+p[7]]=i},()=>{t(e,u)[c+p[10]]=i},()=>{t(e,u)[c+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,a,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,_,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let r=e.chRedir(s[0]&15,a,!0);if(s[1]==2){let c=e.chRedir(i,a,!0);t(e,H)[r]=c,r!=c&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${c+1}`))}else s[1]==19&&(t(e,u)[$.cc*r+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,j).add([127,0],(s,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,j).run(i,a,o)}).add([127,1,0,0],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=s[0];s.subarray(1).forEach((c,h)=>{([()=>{w(e,_,c*12900/16383)}][r+h]||(()=>{console.info(`Unrecognized ${i}ID: ${r+h}`)}))()})}).add([127,1,0,0,14],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,a,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],a,!0),r=$.cc*i,c=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,u)[r+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,u)[r+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,W)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,u)[r+p[7]]=f},()=>{t(e,u)[r+p[10]]=f},!1,!1,!1,()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[128]]=f},()=>{},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},!1,()=>{t(e,u)[r+p[65]]=f},()=>{t(e,u)[r+p[5]]=f},()=>{}][c+g]||(()=>{}))()})}).add([127,1,54,16],(s,a,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((r,c)=>{let f=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let g=r-64},()=>{let g=De[r]},()=>{let g=r/10},()=>{let g=r}][i+c&3]||(()=>{}))()})})}chRedir(e,n,l){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Q))>-1){if(l==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,l)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(l)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,l=t(this,u).subarray(n,n+$.cc);return l[p[0]]=l[p[0]]||t(this,ye),l[p[32]]=l[p[32]]||t(this,Q),l}getCcCh(e,n){if(Ie.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,u)[$.cc*e+p[n]]}getCcAll(){let e=t(this,u).slice();for(let n=0;n<$.ch;n++){let l=n*$.cc;e[l+p[0]]=e[l+p[0]]||t(this,ye),e[l+p[32]]=e[l+p[32]]||t(this,Q)}return e}getChSource(){return t(this,H)}getChType(){return t(this,T)}setChType(e,n,l=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,u)[e*$.cc+p[0]]=Se[l])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,C).slice()}getVel(e){let n=new Map,l=this;return t(l,U).forEach(function(d,s){let a=Math.floor(d/128),o=d%128;e==a&&t(l,A)[d]>0&&n.set(o,{v:t(l,A)[d],s:t(l,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,re),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,_)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let l=Math.floor(n/128);t(e,A)[n]>t(e,se)[l]&&(t(e,se)[l]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,d){e[d]=Math.floor(l*t(n,u)[d*$.cc+p[7]]*t(n,u)[d*$.cc+p[11]]*t(n,_)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,l,d){let s=e||t(this,ye),a=n,o=l||t(this,Q);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,a,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),c=r*$.cmt,h="";t(this,$e).subarray(c,c+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG 0 127 ${a} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,a,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,u)[e*$.cc+p[0]],t(this,O)[e],t(this,u)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,ae)[e])switch(t(this,R)){case x.mt32:n.ending="~",n.name="",t(this,Y).subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,d=3200){let s=this,a;w(s,re," ".repeat(l)),e.forEach(o=>{w(s,re,t(s,re)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(s,we,Date.now()+3200),w(s,re,t(s,re).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,r)=>{r[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l<$.ace;)t(this,ce)[l]==e?n=!1:t(this,ce)[l]||(n=!1,t(this,ce)[l]=e,console.info(`Allocated cc${e} to ACE slot ${l}.`)),l++;l>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ce)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let l=t(this,ce)[n];if(l){if(Ie.indexOf(l)>=0)return t(this,u)[e*$.cc+p[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Q,0),w(this,le,0),t(this,P).fill(0),t(this,u).fill(0),t(this,ce).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,se).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,_,100),w(this,C,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,re,""),w(this,te,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,l,d){d[l]=l}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,u)[$.cc*9]=Se[0],t(this,u)[$.cc*25]=Se[0],t(this,u)[$.cc*41]=Se[0],t(this,u)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,Y).fill(0),t(this,ae).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let l=n*$.cc;t(this,u)[l+p[7]]=100,t(this,u)[l+p[11]]=127,t(this,u)[l+p[10]]=64,t(this,u)[l+p[71]]=64,t(this,u)[l+p[72]]=64,t(this,u)[l+p[73]]=64,t(this,u)[l+p[74]]=64,t(this,u)[l+p[75]]=64,t(this,u)[l+p[76]]=64,t(this,u)[l+p[77]]=64,t(this,u)[l+p[78]]=64,t(this,u)[l+p[91]]=40,t(this,u)[l+p[101]]=127,t(this,u)[l+p[100]]=127,t(this,u)[l+p[99]]=127,t(this,u)[l+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let l=be.indexOf(e);if(l>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,l),w(this,K,0),w(this,ye,Et[0][l]),w(this,Q,Et[1][l]);for(let a=0;a<$.ch;a++)t(this,T)[a]>0&&t(this,u)[a*$.cc+p[0]]==Se[d]&&(t(this,u)[a*$.cc]=Se[l]);switch(this.initOnReset,l){case x.mt32:{Ze.forEach((a,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=a,t(this,u)[i*$.cc+p[91]]=127)});break}}let s;switch(l){case x.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case x.x5d:case x.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,V)[3*a]||(t(this,V)[3*a+1]=s[2*a],t(this,V)[3*a+2]=s[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,se).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let l=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[l])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${l+1} without any recipient.`)}t(this,C).length>100&&t(this,C).splice(100,t(this,C).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,te=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,u=new WeakMap,ce=new WeakMap,O=new WeakMap,A=new WeakMap,W=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,se=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,ae=new WeakMap,ge=new WeakMap,Y=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Q=new WeakMap,_=new WeakMap,le=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,re=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,C=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,xe=new WeakMap,Ce=new WeakMap,j=new WeakMap,ie=new WeakMap,fe=new WeakMap,Me=new WeakMap,Te=new WeakMap,Re=new WeakMap,Ct);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Mt as dnToPos}; diff --git a/docs/support/implementation.md b/docs/support/implementation.md index fb81f89b..91e04ecc 100644 --- a/docs/support/implementation.md +++ b/docs/support/implementation.md @@ -371,17 +371,17 @@ - YAMAHA PLG-150VL - ✕ + YAMAHA PLG-100SG + ✓ - YAMAHA TG - ✕ + YAMAHA PLG-150VL + ✓ - YAMAHA PLG-100SG + YAMAHA TG300 ✓ @@ -412,7 +412,7 @@ KORG 05R/W - ✕ + ✓ diff --git a/docs/support/target.md b/docs/support/target.md index 1bd46b6b..9c5f6422 100644 --- a/docs/support/target.md +++ b/docs/support/target.md @@ -17,14 +17,14 @@ For specific SysEx support range, refer to [Supported SysEx Instructions](./syse | YAMAHA | XG¹ | S | ✓ | ✓ | | YAMAHA | PLG-150AN | P | ✓ | ✕ | | YAMAHA | PLG-150AP | P | ✓ | ✕ | -| YAMAHA | PLG-150DR | P | ✓ | ✓ | +| YAMAHA | PLG-150DR | P | ✓ | ✕ | | YAMAHA | PLG-150DX | P | ✓ | ✕ | | YAMAHA | PLG-150PC | P | ✓ | ✕ | | YAMAHA | PLG-150PF | P | ✓ | ✕ | | YAMAHA | PLG-150VL | P | ✓ | ✓ | | YAMAHA | PLG-100SG | P | ✓ | ✓ | | KORG | AG-10 | M | ✓ | ✓ | -| KORG | 05R/W | L | ✓ | ✕ | +| KORG | 05R/W | L | ✓ | ✓ | | KORG | X5DR | L | ✓ | ✓ | | KORG | NS5R/NX5R | L | ✓ | ✓ | | KAWAI | GMega | L | ✓ | ✓ | diff --git a/src/state/index.mjs b/src/state/index.mjs index 0015130f..e81c2367 100644 --- a/src/state/index.mjs +++ b/src/state/index.mjs @@ -3573,6 +3573,7 @@ let OctaviaDevice = class extends CustomEventSource { upThis.#subLsb = e ? 4 : 0; console.info("MIDI reset: GMega/K11"); }, () => { + upThis.setEffectType(0, 24, e); console.debug(`${dPref}reverb type: ${e}`); }, () => { console.debug(`${dPref}reverb time: ${e}`); From 8bf627de2d3883cb8d0e7992c79aedfbab27ce56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Sat, 24 Jun 2023 10:34:52 +0000 Subject: [PATCH 23/31] Cambiare alpha is now archived. --- dist/cambiare.mjs | 156 ---------------------- {src => oldsrc}/cambiare/index.mjs | 0 {test => oldsrc/cambiare_wa}/cambiare.htm | 0 {src => oldsrc}/cambiare_wa/index.js | 0 4 files changed, 156 deletions(-) delete mode 100644 dist/cambiare.mjs rename {src => oldsrc}/cambiare/index.mjs (100%) rename {test => oldsrc/cambiare_wa}/cambiare.htm (100%) rename {src => oldsrc}/cambiare_wa/index.js (100%) diff --git a/dist/cambiare.mjs b/dist/cambiare.mjs deleted file mode 100644 index 9df3d634..00000000 --- a/dist/cambiare.mjs +++ /dev/null @@ -1,156 +0,0 @@ -var Se=Object.create;var j=Object.defineProperty;var xe=Object.getOwnPropertyDescriptor;var Te=Object.getOwnPropertyNames;var Me=Object.getPrototypeOf,Ce=Object.prototype.hasOwnProperty;var Re=(e,n)=>()=>(n||e((n={exports:{}}).exports,n),n.exports);var Oe=(e,n,c,o)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Te(n))!Ce.call(e,t)&&t!==c&&j(e,t,{get:()=>n[t],enumerable:!(o=xe(n,t))||o.enumerable});return e};var Pe=(e,n,c)=>(c=e!=null?Se(Me(e)):{},Oe(n||!e||!e.__esModule?j(c,"default",{value:e,enumerable:!0}):c,e));var me=Re((gt,K)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],c={debug:!1,parse:function(o,t){if(o instanceof Uint8Array)return c.Uint8(o);if(typeof o=="string")return c.Base64(o);if(o instanceof HTMLElement&&o.type==="file")return c.addListener(o,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(o,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(o===void 0||!(o instanceof HTMLElement)||o.tagName!=="INPUT"||o.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},o.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let r=new FileReader;r.readAsArrayBuffer(a.target.files[0]),r.onload=function(s){t(c.Uint8(new Uint8Array(s.target.result)))}})},Base64:function(o){let t=function(s){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(s=s.replace(/^.*?base64,/,""),s=String(s).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(s))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");s+="==".slice(2-(3&s.length));let h,d="",l,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(o=String(o));var a=t.length;let r=new Uint8Array(new ArrayBuffer(a));for(let s=0;s{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return b||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let b=1;b<=p.length;b++)l+=p[p.length-b]*Math.pow(128,b);l+=f}return l}};if(t.data=new DataView(r.buffer,r.byteOffset,r.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var r=t.readInt(1),s=t.readInt(1);128<=r?(a.timeDivision=[],a.timeDivision[0]=r-128,a.timeDivision[1]=s):a.timeDivision=256*r+s;for(let l=1;l<=a.tracks;l++){a.track[l-1]={event:[]};var i,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,b,y;for(;!p&&(f++,a.track[l-1].event[f-1]={},a.track[l-1].event[f-1].deltaTime=t.readIntVLV(),(b=t.readInt(1))!==-1);)if(128<=b?y=b:(b=y,t.movePointer(-1)),b===255){a.track[l-1].event[f-1].type=255,a.track[l-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[l-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[l-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[l-1].event[f-1].data=t.readInt(d);break;case 84:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1),a.track[l-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1),a.track[l-1].event[f-1].data[2]=t.readInt(1),a.track[l-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(t.readInt(d),a.track[l-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((b=b.toString(16).split(""))[1]||b.unshift("0"),a.track[l-1].event[f-1].type=parseInt(b[0],16),a.track[l-1].event[f-1].channel=parseInt(b[1],16),a.track[l-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[l-1].event[f-1].data!==!1||(i=t.readIntVLV(),a.track[l-1].event[f-1].data=t.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[l-1].event[f-1].data=[],a.track[l-1].event[f-1].data[0]=t.readInt(1),a.track[l-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[l-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[l-1].event[f-1].data=this.customInterpreter(a.track[l-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[l-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof K<"u")K.exports=c;else{let o=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;o.MidiParser=c}})()});var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),o=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(o,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var Z=function(e,n){let c=Math.min(e.length,n.length),o=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let o=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==o)a-=t;else{let i=Z(n,this.pool[a]);switch(i){case 0:{r=0;break}case 1:{a+t<=o&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${i}.`)}}t=t>>1,r--}let s=!0;if(a>=this.pool.length)s=!1;else{let i=this;this.pool[a].forEach(function(h,d,l){s&&h!=n[d]&&(s=!1)}),!s&&Z(n,this.pool[a])>0&&a++}return s||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let o=this.point(n);o>-1?n.subarray?this.pool[o].data(n.subarray(this.pool[o].length),...c):this.pool[o].data(n.slice(this.pool[o].length),...c):this.default(n,...c)}};var De=["MSB","PRG","LSB"],H=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},B=class{#t;strictMode=!1;get(e=0,n=0,c=0,o){let t=[e,n,c],a,r=Array.from(arguments);switch(o){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let s=" ",i="M",h=0,d=0;switch(r[0]){case 0:{r[2]==127?i="MT-a":r[2]==126?i="MT-b":r[2]==7?i="GM-k":r[2]==5?i="SG-a":r[2]==4?i="SP-l":r[2]==0||o=="gs"&&r[2]<5?i="GM-a":(i="y",h=3);break}case 8:{o=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(r[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(r[2]<17){let b=r[2];i=b<10?"kP:":"kC:",i+=b%10}else r[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{i=`${["DR","PC"][r[2]]}-d`;break}case 96:{i=r[2]==106?"AP-a":"PF",r[2]>63&&(d=63),h=3;break}case 97:{i="VL:",h=3,d=112;break}case 98:{i="SG-a";break}case 99:{i="DX",r[2]>63&&(d=63),h=3;break}case 100:{i="AN",r[2]>63&&(d=63),h=3;break}case 121:{i=`GM-${r[2]?"":"a"}`,h=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{r[2]==127?i="rDrm":i="yDrm";break}default:r[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[e,c,r[0],r[2]][h]-d}`.padStart(4-i.length,"0")),o=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,s=" ");let l=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",s="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):(r[2]--,s="^"):e==48?(r[0]=0,r[2]=0,s="!"):e==62?(r[1]--,s=" ",r[1]<1&&!a?.length&&(r[0]=0,s="!")):e<63?r[0]==0?(r[2]=0,s="^"):r[2]<1?(r[0]=0,s="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,s="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,s="!"):e==121?(a=`GM2Vox0${c}`,s="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?s=" ":(a="",s="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,s="!"):r[0]==0?(r[2]=0,s="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,s="!"):(r[0]=0,s="?"));let f=[r[0],r[1],r[2]];(o=="gs"||o=="ns5r")&&s=="^"&&(s=" "),e==127&&s=="^"&&(s=" "),s!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&o=="xg"?p="XG":p="GS")}return{name:a||`${H(e||0)} ${H(n||0)} ${H(c||0)}`,iid:l,eid:f,sid:t,ending:s,sect:i,standard:p}}async load(e,n,c){let o=this,t=[],a=0,r=0;e.split(` -`).forEach(function(s,i){let h=s.split(" "),d=[];i==0?h.forEach(function(l,f){t[De.indexOf(l)]=f}):h.forEach(async function(l,f){f>2?(o.#t[d[t[1]]]=o.#t[d[t[1]]]||[],(!o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(o.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],a++),r++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${c||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],c=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],o=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=c[0];t<=c[1];t++){let a=t<<7;for(let r=o[0];r<=o[1];r++){let s=a+r;for(let i=n[0];i<=n[1];i++)delete this.#t[i][s]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(c,o){try{await fetch(`./data/bank/${c}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,c)})}catch{console.error(`Failed loading "${c}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var J=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ie=function(e,n){let c=!0;return n.forEach((o,t)=>{c=c&&e[t]==o}),c},ee=function(e){let n=0;return e.forEach(c=>{n*=256,n+=c}),n},R=new TextDecoder,A=new J;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),c="MSB LSB PRG NME",o=[0,0,0,0],t=32,a=0,r=0,s=!0,i=[],h=0;for(;s;){let d=n.subarray(a);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(Ie(d.subarray(0,4),o))i.forEach((l,f,p)=>{let b=ee(n.subarray(l.start+4,l.start+8));l.length=b}),r=2;else{let l=R.decode(d.subarray(0,4)),f=ee(d.subarray(4,8));i.push({type:l,start:f}),a+=8}},()=>{let l=i[h],f=n.subarray(l.start,l.start+l.length),p=32;switch(l.type){case"ENVC":{let b=t;for(;b=i.length&&(r=3,s=!1)}][r]||(()=>{s=!1}))()}return c});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),P=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ue=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],M=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],te=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ae=function(e){let n=.1,c=-.3;return e>66?(n=5,c=315):e>56?(n=1,c=47):e>46&&(n=.5,c=18.5),n*e-c},ie=function(e){return e>105?Ue[e-106]:e>100?e*1.1-100:e/10},re=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, -ka,か -ki,き -ku,く -ke,け -ko,こ -ky,き! -kw,くl -tsu,つ -ts,つl -sa,さ -si,すぃ -su,す -se,せ -so,そ -shi,し -sh,し! -ta,た -ti,てぃ -tu,とぅ -te,て -to,と -tchy,ち! -tchi,ち -na,な -ni,に -nu,ぬ -ne,ね -no,の -ny,に! -nn,ん -ha,は -hi,ひ -hu,ほぅ -he,へ -ho,ほ -hy,ひ! -fa,ふぁ -fi,ふぃ -fu,ふ -fe,ふぇ -fo,ふぉ -ma,ま -mi,み -mu,む -me,め -mo,も -my,み! -mm, -ra,ら -ri,り -ru,る -re,れ -ro,ろ -ry,り! -wa,わ -wi,うぃ -we,うぇ -wo,を -nga,ガ -ngi,ギ -ngu,グ -nge,ゲ -ngo,ゴ -ngy,ギ! -ng, -ga,が -gi,ぎ -gu,ぐ -ge,げ -go,ご -gy,ぎ! -gw,ぐl -za,ざ -zi,ずぃ -zu,ず -ze,ぜ -zo,ぞ -ja,じゃ -ji,じ -ju,じゅ -je,じぇ -jo,じょ -jy,じ! -da,だ -di,でぃ -du,どぅ -de,で -do,ど -dy,で! -ba,ば -bi,び -bu,ぶ -be,べ -bo,ぼ -by,び! -va,ゔぁ -vi,ゔぃ -vu,ゔ -ve,ゔぇ -vo,ゔぉ -pa,ぱ -pi,ぴ -pu,ぷ -pe,ペ -po,ぽ -py,ぴ! -!ya,ゃ -!yu,ゅ -!ye,ぇ -!yo,ょ -ya,や -yu,ゆ -ye,いぇ -yo,よ -!a,ゃ -!u,ゅ -!e,ぇ -!o,ょ -!a,ゃ -!u,ゅ -!e,ぇ -!o,ょ -la,ぁ -li,ぃ -lu,ぅ -le,ぇ -lo,ぉ -a,あ -i,い -u,う -e,え -o,お -*,っ -~, -^, -_,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var se=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(o=>{for(;n.indexOf(o)>-1;)n=n.replace(o,o[0])});for(let o in G)n=n.replaceAll(o,G[o]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},ne=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var _=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],oe=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],ce=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ae={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},F=function(e){return Ae[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},le=function(e,n,c){let o=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[o]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},V=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},he=function(e,n,c){let o=[],t=c==!1?n.readIntVLV():c;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${o}`),o.pop(),n.backOne(),n.backOne(),new Uint8Array(o)}}}return new Uint8Array(o)},de=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,o=0;for(let t=0;t>a&1)<<7,s=e[t];s+=r,t%8!=0?(n(s,c,e),c++):o=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],fe=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],T=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Le=[0,3,81,84,88],ue={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},X={0:0,1:1,2:3,5:4},pe=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],N=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],He=[12,13,16,17,18,19],Be=[33,99,100,32,102,8,9,10],be=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var z={length:N.length};N.forEach((e,n)=>{z[e]=n});var v=function(){return!!self.Bun||self.debugMode||!1},Ge=function(e){let n=[],c=0;return e?.forEach(function(o,t){o==247?n.push(e.subarray(c,t)):o==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),v()&&console.debug(n),n},$e=function(e,n="",c="",o=2){return e?`${n}${e.toString().padStart(o,"0")}${c}`:""},g={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:N.length,dnc:128,efx:7},ye=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#h=0;#p=new Array(11);get#g(){return this.#p[this.#o]}set#g(e){this.#p[this.#o]=e}#n=new Uint8Array(g.ch);#l=new Uint8Array(g.ch);#a=new Uint8Array(g.ch);#e=new Uint8Array(g.ch*g.cc);#b=new Uint8Array(g.ace);#r=new Uint8Array(g.ch);#d=new Uint8Array(g.ch*g.nn);#k=new Uint8Array(g.ch);#f=new Uint16Array(g.pl);#$=new Uint8Array(g.pl);#I=new Int16Array(g.ch);#T=new Uint8Array(g.ch);#B=0;#i=new Uint8Array(g.ch*g.rpn);#K=new Int8Array(g.ch*ge.length);#j=new Uint8Array(g.drm*g.dpn*g.dnc);#M=new Uint8Array(g.ch);#U=new Uint8Array(128);#S=new Uint8Array(g.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(g.cmt*64);#w=new Uint8Array(g.efx*3);#N=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#C="";#L=0;#Y=0;#x=!0;#c=!1;#Z;#te=new Uint8Array(2);#s=[];#P=new Uint8Array(g.ch);#H=new Uint8Array(g.tr);baseBank=new B("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new B("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(c==1)return e;let o=0,t=!0;for(;t;)this.#P[e+o]==0?(this.#P[e+o]=n,console.debug(`Assign track ${n} to channel ${e+o+1}.`),t=!1):this.#P[e+o]==n?t=!1:(o+=16,o>=128&&(o=0,t=!1));return e+o}else return e}#y=[];#G;#u={nOff:(e,n)=>{let c=e*128+n,o=this.#f.lastIndexOf(c);o>-1&&(this.#e[g.cc*e+u[64]]>63?(this.#$[o]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_HELD})):this.#e[g.cc*e+u[66]]>63&&this.#$[o]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[o]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#d[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#f[o]=0,this.#d[c]=0,this.#$[o]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let o=e*128+n,t=0;for(this.#k[e]&&this.#u.ano(e);this.#$[t]>0&&this.#f[t]!=o;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,c)=>{let o;switch(n){case this.NOTE_ATTACK:{o=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{o=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{o=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(o){this.#$[c]=o;let t=this.#f[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#d[t],state:o})}})},soOf:e=>{this.#$.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let o=this.#f[c],t=o>>7;e==t&&(this.#$[c]=this.NOTE_IDLE,this.#f[c]=0,this.#d[o]=0,this.dispatchEvent("note",{part:e,note:o&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#f.forEach((n,c,o)=>{let t=n>>7,a=n&127;n==0&&this.#d[0]==0||t==e&&this.#u.nOff(t,a)})}};#J={8:function(e){let n=e.channel,c=e.data[0];this.#u.nOff(n,c)},9:function(e){let n=e.channel;this.#n[n]=1;let c=e.data[0],o=e.data[1];o>0?this.#u.nOn(n,c,o):this.#u.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#f.indexOf(c)>-1&&(this.#d[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let c=n*g.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#u.ano(n),this.#I[n]=0;let o=n*g.cc;this.#e[o+u[1]]=0,this.#e[o+u[5]]=0,this.#e[o+u[64]]=0,this.#e[o+u[65]]=0,this.#e[o+u[66]]=0,this.#e[o+u[67]]=0,this.#e[o+u[11]]=127,this.#e[o+u[101]]=127,this.#e[o+u[100]]=127,this.#e[o+u[99]]=127,this.#e[o+u[98]]=127;return}case 123:{this.#u.ano(n);return}case 124:{this.#u.ano(n);return}case 125:{this.#u.ano(n);return}case 126:{this.#k[n]=1,this.#u.ano(n);return}case 127:{this.#k[n]=0,this.#u.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(He.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{if(v()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==m.gs)e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`));else if(this.#t==m.gm)e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==m.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let o=0;for(let t=0;t<16;t++){let a=this.#e[g.cc*t];(a==56||a==62)&&o++}o>14&&this.switchMode("ag10",!0)}}switch(this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let o=this.#e[c+u[99]],t=this.#e[c+u[98]];if(o==1){let a=Be.indexOf(t);if(a>-1)this.#e[c+u[71+a]]=e.data[1],v()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=ge.indexOf(t);r>-1?this.#K[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),v()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(N.indexOf(o)<0){let r=`NRPN 0x${o.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;o==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#a[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${P[this.#a[n]]}.`):this.#j[(r*g.dpn+z[o])*g.dnc+t]=e.data[1]-64}v()&&console.debug(`CH${n+1} (${P[this.#a[n]]}) drum NRPN ${o} commit`)}}else{let o=X[this.#e[c+u[100]]];this.#e[c+u[101]]==0&&o!=null&&(v()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],pe[o][0]),pe[o][1]),this.#i[n*g.rpn+o]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&X[this.#e[c+100]]!=null&&(this.#i[n*g.rpn+X[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#u.hoOf(n);break}case 66:{e.data[1]>>6?this.#u.soOn(n):this.#u.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#r[n]=e.data,this.#M[n]=0,v()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#f.forEach(function(o){let t=o>>7;c==t&&(n.#d[o]=e.data,n.dispatchEvent("note",{part:c,note:o&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Ge(e.data).forEach(n=>{let c=n[0],o=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(o,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(c,o,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=Le.indexOf(e.meta)>-1;if(v()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#V.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#R.run(n,c,e),console.warn("Unknown device SysEx!");else{let o=n[n.length-1],t=de(n.subarray(2,n.length-1));o==t?this.#R.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${o}. Should be ${t}.`)}},66:(e,n,c)=>{this.#D.run(n,c,e)},67:(e,n,c)=>{this.#v.run(n,c,e)},68:(e,n,c)=>{this.#z.run(n,c,e)},71:(e,n,c)=>{this.#X.run(n,c,e)},126:(e,n,c)=>{this.#_.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#F.run(n,c,e)}};#_;#F;#v;#R;#D;#V;#X;#z;buildRchTree(){let e=[];this.#l.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*g.cc,c=this.#e.subarray(n,n+g.cc);return c[u[0]]=c[u[0]]||this.#N,c[u[32]]=c[u[32]]||this.#E,c}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[g.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!o&&(this.#e[e*g.cc+u[0]]=T[c])}getPitch(){return this.#I}getProgram(){return this.#r}getTexts(){return this.#s.slice()}getVel(e){let n=new Map,c=this;return c.#f.forEach(function(o,t){let a=Math.floor(o/128),r=o%128;e==a&&c.#d[o]>0&&n.set(r,{v:c.#d[o],s:c.#$[t]})}),n}getBitmap(){return{bitmap:this.#g,expire:this.#h}}getLetter(){return{text:this.#C,expire:this.#L}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#f.forEach(function(n){let c=Math.floor(n/128);e.#d[n]>e.#T[c]&&(e.#T[c]=e.#d[n])}),this.#T}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,o){e[o]=Math.floor(c*n.#e[o*g.cc+u[7]]*n.#e[o*g.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#i}getNrpn(){return this.#K}getVoice(e,n,c,o){let t=e||this.#N,a=n,r=c||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let s=this.userBank.get(t,a,r,o);if(x[this.#t]=="mt32"&&s.name.indexOf("MT-m:")==0){let i=parseInt(s.name.slice(5)),h=i*g.cmt,d="";this.#A.subarray(h,h+10).forEach(l=>{l>31&&(d+=String.fromCharCode(l))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${d}`,!0),s.name=d,s.ending=" "}return(s.ending!=" "||!s.name.length)&&(s=this.baseBank.get(t,a,r,o)),s}getChVoice(e){let n=this.getVoice(this.#e[e*g.cc+u[0]],this.#r[e],this.#e[e*g.cc+u[32]],x[this.#t]);if(this.#M[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*g.rpn;return this.#I[e]/8192*this.#i[n]+(this.#i[n+3]-64)+((this.#i[n+1]<<7)+this.#i[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let o=3*e;this.#w[o]=1,this.#w[o+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,o=3200){let t=this,a;t.#C=" ".repeat(c),e.forEach(r=>{t.#C+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#L=Date.now()+3200,t.#C=t.#C.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,s,i)=>{i[s]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=g.ace&&console.warn("ACE slots are full.")}getAce(){return this.#b}getChAce(e,n){if(n<0||n>=g.ace)throw new RangeError("No such ACE slot");let c=this.#b[n];if(c){if(I.indexOf(c)>=0)return this.#e[e*g.cc+u[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#N=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#b.fill(0),this.#r.fill(0),this.#d.fill(0),this.#f.fill(0),this.#T.fill(0),this.#I.fill(0),this.#K.fill(0),this.#j.fill(0),this.#m=100,this.#s=[],this.#Q=500,this.#W=0,this.#L=0,this.#C="",this.#h=0,this.#o=0,this.#g.fill(0),this.#c=!1,this.#Y=0,this.#x=!0,this.#l.forEach(function(n,c,o){o[c]=c}),this.buildRchTree(),e==0&&(this.#P.fill(0),this.#H.fill(0)),this.#e[g.cc*9]=T[0],this.#e[g.cc*25]=T[0],this.#e[g.cc*41]=T[0],this.#e[g.cc*57]=T[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#M.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let o=this.#t;this.#t=c,this.#o=0,this.#N=fe[0][c],this.#E=fe[1][c];for(let a=0;a0&&this.#e[a*g.cc+u[0]]==T[o]&&(this.#e[a*g.cc]=T[c]);switch(this.initOnReset,c){case m.mt32:{V.forEach((a,r)=>{let s=r+1;this.#n[s]||(this.#r[s]=a,this.#e[s*g.cc+u[91]]=127)});break}}let t;switch(c){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(o=>{e.channel=o,c=!0,this.#J[e.type].call(this,e)}),c||console.warn(`${ue[e.type]?ue[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#g=new Uint8Array(256),this.#p[10]=new Uint8Array(512),this.#G=new k,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME -062 000 000 -122 000 000 -122 001 000 -122 002 000 -122 003 000 -122 004 000 -122 005 000 -122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#c=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#c=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#c=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#c=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#c=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,s)=>{r.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][s]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,s)=>{r.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][s]}: ${r}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#c?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#y[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#s.unshift(`${$e(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#y[6]=function(t){this.#s.unshift(`${$e(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new k("universal non-realtime"),this.#F=new k("universal realtime"),this.#v=new k("Yamaha"),this.#R=new k("Roland"),this.#D=new k("Korg"),this.#V=new k("Kawai"),this.#X=new k("Akai"),this.#z=new k("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#v.default=n,this.#R.default=n,this.#D.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#c=e.#c||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#v.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#c=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(s,i)=>{a[i]=s};if(t.subarray(1).forEach((s,i)=>{let h=i+t[0];([r,r,r,r,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(s,i)}),t[0]<4){let s=0;a.forEach(i=>{s=s<<4,s+=i}),s-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(0,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(0,!0,i),console.debug(`${a}sub type: ${i+1}`)},i=>{console.debug(`${a}time: ${ae(i)}s`)},i=>{console.debug(`${a}diffusion: ${i}`)},i=>{console.debug(`${a}initial delay: ${i}`)},i=>{console.debug(`${a}HPF cutoff: ${M[i]}Hz`)},i=>{console.debug(`${a}LPF cutoff: ${M[i]}Hz`)},i=>{console.debug(`${a}width: ${i}`)},i=>{console.debug(`${a}height: ${i}`)},i=>{console.debug(`${a}depth: ${i}`)},i=>{console.debug(`${a}wall type: ${i}`)},i=>{console.debug(`${a}dry/wet: ${i}`)},i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},!1,!1,i=>{console.debug(`${a}delay: ${i}`)},i=>{console.debug(`${a}density: ${i}`)},i=>{console.debug(`${a}balance: ${i}`)},i=>{},i=>{console.debug(`${a}feedback: ${i}`)},i=>{}][t[0]+s]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(1,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(1,!0,i),console.debug(`${a}sub type: ${i+1}`)},i=>{console.debug(`${a}LFO: ${te[i]}Hz`)},i=>{},i=>{console.debug(`${a}feedback: ${i}`)},i=>{console.debug(`${a}delay offset: ${ie(i)}ms`)},i=>{},i=>{console.debug(`${a}low: ${M[i]}Hz`)},i=>{console.debug(`${a}low: ${i-64}dB`)},i=>{console.debug(`${a}high: ${M[i]}Hz`)},i=>{console.debug(`${a}high: ${i-64}dB`)},i=>{console.debug(`${a}dry/wet: ${i}`)},i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},i=>{console.debug(`${a}to reverb: ${E(i)}dB`)},!1,i=>{},i=>{},i=>{},i=>{console.debug(`${a}LFO phase diff: ${(i-64)*3}deg`)},i=>{console.debug(`${a}input mode: ${i?"stereo":"mono"}`)},i=>{}][t[0]-32+s]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,s)=>{([i=>{e.setEffectTypeRaw(2,!1,i),console.info(`${a}main type: ${O[i]}`)},i=>{e.setEffectTypeRaw(2,!0,i),console.debug(`${a}sub type: ${i+1}`)}][t[0]-64+s]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,s)=>{[i=>{console.debug(`${a}send: ${E(i)}dB`)},i=>{console.debug(`${a}pan: ${i-64}`)},i=>{console.debug(`${a}to reverb: ${E(i)}dB`)},i=>{console.debug(`${a}to chorus: ${E(i)}dB`)},i=>{console.debug(`${a}connection: ${i?"system":"insertion"}`)},i=>{console.debug(`${a}channel: CH${i+1}`)},i=>{console.debug(`${a}mod wheel: ${i-64}`)},i=>{console.debug(`${a}bend wheel: ${i-64}`)},i=>{console.debug(`${a}channel after touch: ${i-64}`)},i=>{console.debug(`${a}AC1: ${i-64}`)},i=>{console.debug(`${a}AC2: ${i-64}`)}][t[0]-86+s](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let s=r+t[0];if(s==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let i=s-1>>2,h=s-1&3,d=`XG EQ ${i} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],r=t[1],s=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((i,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${s}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${s}sub type: ${d+1}`)}][r+h]||function(){})(i)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#L=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0);let r=t.subarray(1);for(let s=0;s>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=t[1],i=g.cc*r,h=`XG CH${r+1} `,d=`Unknown XG part address ${s}.`;t.subarray(2).forEach((l,f)=>{s<1?console.debug(d):s<41?([()=>{e.#e[i+u[0]]=l},()=>{e.#e[i+u[32]]=l},()=>{e.#r[r]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[r]=p,r!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#k[r]=+!l},()=>{},()=>{e.setChType(r,l,m.xg),console.debug(`${h}type: ${P[l]||l}`)},()=>{e.#i[g.rpn*r+3]=l},!1,!1,()=>{e.#e[i+u[7]]=l},!1,!1,()=>{e.#e[i+u[10]]=l||128},!1,!1,()=>{e.#e[i+u[128]]=l},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[91]]=l},()=>{e.#e[i+u[94]]=l},()=>{e.#e[i+u[76]]=l},()=>{e.#e[i+u[77]]=l},()=>{e.#e[i+u[78]]=l},()=>{e.#e[i+u[74]]=l},()=>{e.#e[i+u[71]]=l},()=>{e.#e[i+u[73]]=l},()=>{e.#e[i+u[75]]=l},()=>{e.#e[i+u[72]]=l}][s+f-1]||(()=>{}))():s<48?console.debug(d):s<111?s>102&&s<105&&(e.#e[i+u[[5,65][s&1]]]=l):s<114?console.debug(d):s<116?console.debug(`${h}EQ ${["bass","treble"][s&1]} gain: ${l-64}dB`):s<118?console.debug(d):s<120?console.debug(`${h}EQ ${["bass","treble"][s&1]} freq: ${l}`):console.debug(d)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=t[1],i=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((h,d)=>{let l=d+s;switch(l){case 1:{console.info(`${i}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(l<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][l-3>>1];l&1?l<23?(console.debug(`${i}${f} control source: ${ne(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${i}${f} scale break point: ${h}`):console.debug(`${i}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],s="MU1000 System: ";t.subarray(1).forEach((i,h)=>{let d=r+h;d==8?console.debug(`${s}LCD contrast set to ${i}.`):d==18?(e.#E=i?126:0,console.debug(`${s}bank defaults to ${i?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",i)},()=>{i<8?(e.dispatchEvent("channelmin",i<<4),console.info(`Octavia System: Minimum CH${(i<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{i<8?(e.dispatchEvent("channelmax",(i<<4)+15),console.info(`Octavia System: Maximum CH${(i<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!i,console.info(`Octavia System: RS receiving ${["dis","en"][i]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],s=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let i=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",i),e.dispatchEvent("channelmax",i+63)),console.info(`${s}Show CH1~64`);break}case 3:{let i=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",i),e.#x&&e.dispatchEvent("channelmax",i+31),console.info(`${s}Show CH${i+1}~CH${i+32}`);break}default:console.debug(`${s}unknown switch ${r} invoked.`)}else if(r<32){if(e.#x){let i=e.chRedir(r-16+(e.#Y<<4),a,!0);e.dispatchEvent("channelactive",i)}}else if(r<36){let i=e.chRedir(r-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",i),e.dispatchEvent("channelmax",i+15),e.#Y=r-32),console.info(`${s}Show CH${i+1}~CH${i+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=`PLG-100SG CH${r+1} `,i=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((l,f)=>{f%2==0?h+=re[l]||l.toString().padStart("0"):d+=l*13}),i>=e.#W&&e.#s.unshift("SG Lyric: "),e.#s[0]+=`${se(h)}`,e.#W=i+Math.ceil(d/2)+e.#Q,v()&&console.debug(`${s}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#v.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#v.add([89,0],(t,a,r)=>{if(e.eprom){let s=t[0],i=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM trail to 0x${i.toString(16).padStart(6,"0")}, ${s} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,l)=>{let f=l>>3,p=l&7;if(p==7)for(let b=0;b<7;b++)h[i+7*f+b]+=(d>>6-b&1)<<7;else h[i+7*f+p]=d})}}).add([89,1],(t,a,r)=>{let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];v()&&console.debug(`MU1000 EPROM jump to 0x${s.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=s)}).add([89,2],(t,a,r)=>{if(e.eprom){let s=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);v()&&console.debug(`MU1000 EPROM write to 0x${s.toString(16).padStart(6,"0")}.`);let i=e.eprom.data;t.subarray(4).forEach((h,d)=>{let l=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)i[s+7*l+p]+=(h>>6-p&1)<<7;else i[s+7*l+f]=h})}}).add([89,3],(t,a,r)=>{}),this.#v.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let l=d+t[0];[i,i,i,i,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][l](h,l)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let s=e.chRedir(t[0],a,!0),i=t[1],h=g.cc*s,d=`TG300 CH${s+1} `;t.subarray(2).forEach((l,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=l},()=>{e.#e[h+u[32]]=l},()=>{e.#r[s]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+i]||(()=>{}))(l,f+i):f<21||(f<47?([()=>{e.#k[s]=+!l},()=>{},()=>{},()=>{e.#i[g.rpn*s+3]=l},()=>{},()=>{e.#e[h+u[7]]=l},!1,!1,()=>{e.#e[h+u[10]]=l||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${l}`)},()=>{console.debug(`${d} AC2 at cc${l}`)},()=>{e.#e[h+u[128]]=l},()=>{e.#e[h+u[93]]=l},()=>{e.#e[h+u[91]]=l},()=>{e.#e[h+u[94]]=l},()=>{e.#e[h+u[76]]=l},()=>{e.#e[h+u[77]]=l},()=>{e.#e[h+u[74]]=l},()=>{e.#e[h+u[71]]=l},()=>{e.#e[h+u[73]]=l},()=>{e.#e[h+u[75]]=l},()=>{e.#e[h+u[72]]=l},()=>{e.#e[h+u[78]]=l}][f+i-21]||(()=>{}))(l,f+i):f<95||([()=>{e.#e[h+u[65]]=l},()=>{e.#e[h+u[5]]=l}][f+i-95]||(()=>{}))(l,f+i))})}).add([43,7,0],(t,a,r)=>{let s=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",s)}).add([43,7,1],(t,a,r)=>{e.#o=0,e.#h=Date.now()+3200,e.#g.fill(0),t.forEach(function(s,i){let h=Math.floor(i/16),d=i%16,l=(d*3+h)*7,f=7,p=0;for(l-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#E=3,e.#c=!1,e.#P.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[g.cc*9]=120,e.#e[g.cc*25]=120,e.#e[g.cc*41]=120,e.#e[g.cc*57]=120,e.#c=!1,e.#P.fill(0),console.info("MIDI reset: GS");break}default:{let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{let l=d+t[0];[i,i,i,i,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][l](h,d)}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((s,i)=>{r+=String.fromCharCode(Math.max(32,s))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,s)=>{let i=`GS ${a+s>55?"chorus":"reverb"} `;([()=>{console.info(`${i}type: ${_[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${i}predelay: ${r}ms`)},()=>{console.info(`${i}type: ${oe[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${i}to reverb: ${E(r)}`)},()=>{console.debug(`${i}to delay: ${E(r)}`)}][a+s-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,s)=>{let i="GS delay ";([()=>{console.info(`${i}type: ${ce[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${i}to reverb: ${E(r)}`)}][a+s-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,s)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+s]||function(){console.warn(`Unknown GS EQ address: ${t[0]+s}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(s,i){let h=le(e.#w.subarray(10,12),i,s);h&&console.debug(`${a}${F(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((s,i)=>{([()=>{e.setEffectTypeRaw(3,!1,32+s)},()=>{e.setEffectTypeRaw(3,!0,s),console.info(`${a}type: ${F(e.#w.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(s)}dB`)},()=>{console.debug(`${a}to chorus: ${E(s)}dB`)},()=>{console.debug(`${a}to delay: ${E(s)}dB`)},!1,()=>{console.debug(`${a}1 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${a}1 depth: ${s-64}`)},()=>{console.debug(`${a}2 source: ${s}`),s&&s<96&&e.allocateAce(s)},()=>{console.debug(`${a}2 depth: ${s-64}`)},()=>{console.debug(`${a}to EQ: ${s?"ON":"OFF"}`)}][t[0]+i]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(s,t[0]+i)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#h=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#h=Date.now()+3200,e.#p[t[0]-1]?.length||(e.#p[t[0]-1]=new Uint8Array(256));let a=e.#p[t[0]-1],r=t[1];a.fill(0);let s=t.subarray(2);for(let i=0;i>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,r){let s=t[0],i=g.cc*a,h=g.rpn*a,d=`GS CH${a+1} `;s<3?t.subarray(1).forEach((l,f)=>{[()=>{e.#e[i+u[0]]=l},()=>{e.#r[a]=l},()=>{let p=e.chRedir(l,r,!0);e.#l[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][s+f]()}):s<19||(s<44?t.subarray(1).forEach((l,f)=>{([()=>{e.#k[a]=+!l},!1,()=>{e.setChType(a,l<<1,m.gs),console.debug(`${d}type: ${l?"drum ":"melodic"}${l||""}`)},()=>{e.#i[h+3]=l},!1,()=>{e.#e[i+u[7]]=l},!1,!1,()=>{e.#e[i+u[10]]=l||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${l}`)},()=>{console.debug(`${d}CC 2: cc${l}`)},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[91]]=l},!1,!1,()=>{e.#i[h+1]=l},()=>{e.#i[h+2]=l},()=>{e.#e[i+u[94]]=l}][s+f-19]||(()=>{}))()}):s<76||console.debug(`Unknown GS part address: ${s}`))},o=function(t,a){let r=t[0],s=`GS CH${a+1} `;r<2?t.subarray(1).forEach((i,h)=>{[()=>{e.#e[g.cc*a+u[32]]=i},()=>{}][r+h]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((i,h)=>{[()=>{console.debug(`${s}EQ: o${["ff","n"][i]}`)},()=>{},()=>{console.debug(`${s}EFX: o${["ff","n"][i]}`)}][r+h-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#R.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{o(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{o(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{o(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{o(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{o(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{o(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{o(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{o(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{o(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{o(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{o(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{o(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{o(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{o(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{o(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{o(t,e.chRedir(15,a,!0))}),this.#D.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],s=(t[3]<<7)+t[2],i=e.chRedir(r&15,a,!0),h=g.cc*i;[()=>{s<1||(s<101?(e.setChType(i,e.CH_MELODIC,m.x5d),e.#r[i]=s-1,e.#e[h+u[0]]=82):s<229?(e.setChType(i,e.CH_MELODIC,m.x5d),e.#r[i]=s-101,e.#e[h+u[0]]=56):(e.setChType(i,e.CH_DRUMS,m.x5d),e.#r[i]=be[s-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=s},()=>{s<31&&(e.#e[h+u[10]]=Math.round((s-15)*4.2+64))},()=>{e.#e[h+u[93]]=D(s)},()=>{e.#e[h+u[91]]=D(s)},()=>{e.#i[i*g.rpn+3]=s>8191?s-16320:64+s},()=>{e.#i[i*g.rpn+1]=s>8191?s-16320:64+s},()=>{s>0&&(e.#i[i*g.rpn]=s)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",s=82,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){if(f<16400){let p=f%164;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{d+=` -${s} ${i} ${h} ${r.trim().replace("Init Voice","")}`,i++,r="";break}}i>99&&(s=90,i=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",s=90,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){if(f<13600){let p=f%136;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{d+=` -${s} ${i} ${h} ${r.trim().replace("Init Combi","")}`,i++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,s)=>{s>0&&s<3&&e.setEffectType(s-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,s,i,h){if(s<192){let d=e.chRedir(Math.floor(s/12),a,!0),l=d*g.cc;switch(s%12){case 0:{r<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[l+u[0]]=82,e.#r[d]=r):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[l+u[0]]=62,e.#r[d]=be[r-128]),r>0&&(e.#n[d]=1);break}case 1:{e.#e[l+u[7]]=r;break}case 2:{e.#i[d*g.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#i[d*g.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[l+u[10]]=Math.round((r-15)*4.2+64));break}case 5:{let f=r>>4,p=r&15;e.#e[l+u[91]]=D(p),e.#e[l+u[93]]=D(f);break}case 10:break;case 11:{let f=e.chRedir(r&15,a,!0),p=r>>4;e.#l[d]=r,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(s-192,a,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#c=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0),i=t[1];t.subarray(2).forEach((h,d)=>{let l=d+i;e.#U[l+(s-1)*16]=h,([!1,()=>{let f=e.#U[s-1<<4];if(f<3)if(e.#M[s]=1,f==2)for(let p=0;p{e.#i[s*g.rpn+3]=h+40},()=>{e.#i[s*g.rpn+1]=h+14},()=>{e.#i[s*g.rpn]=h},!1,()=>{e.#e[g.cc*s+u[91]]=h?127:0},!1,()=>{e.#e[g.cc*s+u[7]]=h},()=>{e.#e[g.cc*s+u[10]]=Math.ceil(h*9.05)}][l]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let s=e.chRedir(r,a,!0),i=t[1]+(t[0]<<7);i<10&&(e.#M[s]=1),t.subarray(2).forEach((h,d)=>{let l=d+i;l<14&&(e.#S[(s-1)*g.cmt+l]=h)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let s=t[1]-16}else{let s=t[1];t.subarray(2).forEach((i,h)=>{let d=h+s;e.#U[d]=i;let l=e.chRedir(1+d>>4,a,!0),f=d&15;([!1,()=>{let p=e.#U[l-1<<4];if(p<3)if(e.#M[l]=1,p==2)for(let b=0;b{e.#i[l*g.rpn+3]=i+40},()=>{e.#i[l*g.rpn+1]=i+14},()=>{e.#i[l*g.rpn]=i},!1,()=>{e.#e[g.cc*l+u[91]]=i?127:0},!1,()=>{e.#e[g.cc*l+u[7]]=i},()=>{e.#e[g.cc*l+u[10]]=Math.ceil(i*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let s=t[1]+(t[0]<<7);t.subarray(2).forEach((i,h)=>{let d=h+s,l=e.chRedir(Math.floor(d/246+1),a,!0),f=d%246;f<14&&(e.#S[(l-1)*g.cmt+f]=i),f<10&&(e.#M[l]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let s=(t[0]<<7)+t[1];t.subarray(2).forEach((i,h)=>{let d=s+h,l=Math.floor(d/8),f=d&7,p=l*8;e.#q[d]=i,([!1,()=>{let b=e.#q[p];if(b<3){let y="";if(b==2){let $=g.cmt*l;y=`MT-m:${i.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,i+(b<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:l}),e.userBank.load(`MSB LSB PRG NME -000 127 ${l} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let s=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((i,h)=>{let d=s+h;d>1)*g.cmt+d]=i)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let s=t[1],i=!1,h=function(d,l){e.#l[l-12]=d,i=!0};t.subarray(2).forEach((d,l)=>{let f=l+s;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,l)}),i&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(s=>{s>31&&(r+=String.fromCharCode(s))}),e.#C=r.padStart(20," "),e.#L=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let s=0;s<16;s++)e.#u.ano(r+s),s&&s<10&&(e.#r[r+s]=V[s-1]);console.info("MT-32 alt reset complete.")}),this.#D.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#c=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#c=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#c=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let s=[0,0,0,0],i=(h,d)=>{s[d]=h};if(t.subarray(1).forEach((h,d)=>{[i,i,i,i,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][r+d]()}),t[0]<4){let h=0;s.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),s=r*g.cc,i=t[1],h=`NS5R CH${r+1} `;t.subarray(2).forEach((d,l)=>{let f=i+l;f<3?[()=>{e.#e[s+u[0]]=d||121},()=>{e.#e[s+u[32]]=d},()=>{e.#r[r]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,a,!0);e.#l[r]=p,r!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#k[r]=+!d},()=>{e.setChType(r,d,m.ns5r),console.debug(`${h}type: ${P[d]}`)},()=>{e.#i[g.rpn*r+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[s+u[7]]=d},()=>{e.#e[s+u[11]]=d},()=>{},()=>{},()=>{e.#e[s+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[s+u[93]]=d},()=>{e.#e[s+u[91]]=d},()=>{e.#e[s+u[76]]=d},()=>{e.#e[s+u[77]]=d},()=>{e.#e[s+u[78]]=d},()=>{e.#e[s+u[74]]=d},()=>{e.#e[s+u[71]]=d},()=>{e.#e[s+u[73]]=d},()=>{e.#e[s+u[75]]=d},()=>{e.#e[s+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[s+u[5]]=d},()=>{e.#e[s+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let s=r-32;e.#h=Date.now()+3200,e.#o=10,e.#g.fill(0);let i=t.subarray(1),h=4;i.forEach(function(d,l){let f=l+s,p=f>>4,b=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#g[b*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#c=!1;let r="";S(t,(s,i)=>{i<8?(s>31&&(r+=String.fromCharCode(s)),i==7&&(e.aiEfxName=r)):i<10&&e.setEffectType(i-8,44,s)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#c=!1,S(t,function(r,s){switch(!0){case s<2944:{let i=e.chRedir(Math.floor(s/92),a,!0),h=i*g.cc;switch(s%92){case 0:{e.#e[h+u[0]]=r||121;break}case 1:{e.#e[h+u[32]]=r;break}case 2:{e.#r[i]=r,r>0&&(e.#n[i]=1);break}case 3:{let d=e.chRedir(r,a,!0);e.#l[i]=d,i!=d&&(console.info(`NS5R CH${i+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#i[i*g.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[h+u[7]]=r;break}case 11:{e.#e[h+u[11]]=r;break}case 14:{e.#e[h+u[10]]=r||128;break}case 19:{e.#e[h+u[93]]=r;break}case 20:{e.#e[h+u[91]]=r;break}case 84:{e.#e[h+u[65]]=r;break}case 85:{e.#e[h+u[5]]=r;break}}break}case s<3096:break;case s<3134:break;case s<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",s=80,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){let p=f%158;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:{s=l&127;break}case p==12:{h=l&127;break}case p==13:{d+=` -${s} ${i} ${h} ${r.trim().replace("Init Voice","")}`,i++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",s=88,i=0,h=0,d="MSB PRG LSB NME";S(t,function(l,f){let p=f%126;switch(!0){case p<10:{l>31&&(r+=String.fromCharCode(l));break}case p==11:break;case p==12:break;case p==13:{d+=` -${s} ${i} ${h} ${r.trim().replace("Init Combi","")}`,i++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,s,i)=>{if(s<720)for(let h=0;h<8;h++)a[s*8+h]=r>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#D.run([66,...t],a,r)}),this.#V.add([16,0,8,0],(t,a,r)=>{let s=(t[2]<<4)+t[3],i="K11 ";([()=>{e.switchMode("k11",!0),e.#c=!1,e.#E=s?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,s),console.debug(`${i}reverb type: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let s=e.chRedir(t[1],a,!0),i=g.cc*s,h=g.rpn*s,d=(t[3]<<4)+t[4],l=`K11 CH${s+1} `;([()=>{d<128?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[i+u[0]]=0,e.#r[s]=d):(e.setChType(s,e.CH_DRUMS,m.k11),e.#r[s]=d-128)},()=>{let f=e.chRedir(d,a,!0);e.#l[s]=f,s!=f&&(e.buildRchTree(),console.info(`${l}receives from CH${f+1}`))},()=>{e.#e[i+u[7]]=d},()=>{e.#n[s]=d},()=>{e.#e[i+u[10]]=d},()=>{e.#i[h+3]=d+40},()=>{e.#i[h+1]=d>>1,e.#i[h+2]=d&1},()=>{e.#e[i+u[91]]=d?127:0},()=>{},()=>{e.#e[i+u[74]]=d},()=>{e.#e[i+u[73]]=d},()=>{e.#e[i+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let s=(t[2]<<4)+t[3],i="GMLX ";([()=>{console.debug(`${i}reverb type: ${s}`)},()=>{console.debug(`${i}reverb time: ${s}`)},()=>{console.debug(`${i}reverb predelay: ${s}`)},()=>{console.debug(`${i}depth high: ${s}`)},()=>{console.debug(`${i}depth low: ${s}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let s=(t[2]<<4)+t[3],i=e.chRedir(t[1],a,!0),h=i*g.cc;[()=>{s<128?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#r[i]=s):s<160?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#r[i]=s-100):(e.setChType(i,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#r[i]=s-160)},()=>{let d=e.chRedir(s,a,!0);e.#l[i]=d,i!=d&&(e.buildRchTree(),console.info(`GMLX CH${i+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let s=(t[2]<<4)+t[3],i=e.chRedir(t[1],a,!0),h=i*g.cc,d=i*g.rpn,l=`GMLX CH${i+1} `;[()=>{e.#n[i]=s},()=>{e.#e[h+u[7]]=s},()=>{e.#e[h+u[10]]=s},()=>{e.#e[h+u[91]]=s?127:0},()=>{e.#i[d+3]=s+40},()=>{e.#i[d+1]=s},()=>{e.#i[d]=s},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,a,r)=>{let s=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=s*129/16383*100;break}case 5:{s-64;break}case 6:{console.debug(`SG global reverb: ${s?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${_[s]}`);break}}break}default:if(t[0]>>4==1){let i=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let h=e.chRedir(s,a,!0);e.#l[i]=h,i!=h&&(e.buildRchTree(),console.info(`SG CH${i+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[g.cc*i+u[7]]=s)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#v.add([127,0],(t,a,r)=>{e.switchMode("motif");let s=new Uint8Array([127,1,...t]);e.#v.run(s,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES system ",i=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][i+d]||(()=>{console.info(`Unrecognized ${s}ID: ${i+d}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES bulk header ",i=[];i[95]=(h,d,l)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(i[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let s="S90/Motif ES bulk footer ",i=[];i[95]=(h,d,l)=>{console.debug(`${s}multi edit buffer: ${h[1]}`)},(i[t[0]]||(()=>{console.info(`Unrecognized ${s}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let s=e.chRedir(t[0],a,!0),i=g.cc*s,h=t[1],d=`S90/Motif ES bulk CH${s<16?s+1:"U"+(s-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((l,f)=>{([()=>{e.#e[i+u[0]]=l},()=>{l&&(e.#n[s]=1),e.#e[i+u[32]]=l,e.#a[s]=this.setChType(s,[32,40].indexOf(l)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{l&&(e.#n[s]=1),e.#r[s]=l},()=>{let p=e.chRedir(l,a,!0);e.#l[s]=p,s!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#k[s]=l?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[i+u[7]]=l},()=>{e.#e[i+u[10]]=l},!1,!1,!1,()=>{e.#e[i+u[91]]=l},()=>{e.#e[i+u[93]]=l},()=>{e.#e[i+u[94]]=l},()=>{e.#e[i+u[128]]=l},()=>{},()=>{e.#e[i+u[74]]=l},()=>{e.#e[i+u[71]]=l},!1,()=>{e.#e[i+u[65]]=l},()=>{e.#e[i+u[5]]=l},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let s=t[0];t.subarray(1).forEach((i,h)=>{let l=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=i-64},()=>{let f=M[i]},()=>{let f=i/10},()=>{let f=i}][s+h&3]||(()=>{}))()})})}};var W=Pe(me(),1);var we=class{#t=!1;constructor(e,n,c,o){this.#t=e,this.start=n,this.end=c,this.data=o}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},q=class extends we{constructor(e,n,c){super(!0,e,n,c)}},Ee=class extends we{constructor(e,n){super(!1,e,e,n)}},Q=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let c=[];if(n)for(let o=0;oe);o++){if(this[o].endt.#t&&(c.push(a),t.#t=a.index)})}return c}getRange(e,n){e>n&&([e,n]=[n,e]);let c=[],o=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let r=0;r=e&&(o=r):o=o<0?r:o;for(;a;)this[o]?.end=e&&c.push(this[o]):a=!1,o++;return c}};var _e=0xffffffffffff,ve=function(e){let n=new Q,c=this,o=e.timeDivision,t=120,a=new Q,r=0,s=0;a.push(new q(0,_e,[120,0])),e.track.forEach(function(l){r=0,l.event.forEach(function(f){r+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,a[a.length-1]&&a.push(new q(r,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(l,f,p){f>0&&(p[f-1].end=l.start)});let i=120;a.forEach(function(l,f,p){f>0&&(l.end==l.start?p.splice(p.indexOf(l),1):i==l.data[0]&&(p[f-1].end=l.end,p.splice(p.indexOf(l),1)),i=l.data[0])});let h=0,d=120;return a.forEach(function(l){let f=l.start,p=f/d/o*60+h;d=l.data[0],h=p-f/d/o*60,l.data[1]=h}),console.debug("All tempo changes: ",a),t=120,r=0,s=0,e.track.forEach(function(l,f){r=0,s=0;let p=f+1;l.event.forEach(function(b,y){r+=b.deltaTime;let $=a.step(r,!0)[0];$&&(t=$.data[0],s=$.data[1]);let w={type:b.type,data:b.data,track:p,part:0};b.type>14?w.meta=b.metaType:w.part=b.channel,n.push(new Ee(r/t/o*60+s,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};W.default.customInterpreter=he;var ke=class extends U{device;#t;#o="";#h=[];#p=new Uint8ClampedArray(128);#g=new Uint8ClampedArray(128);#n=.5;#l=120;#a=4;#e=4;#b=0;#r=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#l=120,this.#a=4,this.#e=4,this.#b=0,this.#r=0}async loadFile(e){this.#t=ve(W.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#r/this.#n}get noteOverall(){return this.noteProgress-this.#b}get noteBar(){return Math.floor(this.noteOverall/this.#a)}get noteBeat(){let e=this.noteOverall%this.#a;return e<0&&(e+=this.#a),e}getTimeSig(){return[this.#a,this.#e]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#r&&(this.#r=e);let n=this.#t?.step(e)||[],c=0,o=new Set,t=this,a=[];this.device.getStrength().forEach((y,$)=>{this.#g[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?o.add($.part*128+$.data[0]):o.has($.part*128+$.data[0])&&c++),y.data.type==8&&o.has($.part*128+$.data[0])&&c++;let w=t.device.runJson($);switch(w?.reply){case"meta":{a.push(w);break}}w?.reply&&delete w.reply}),a?.length>0&&this.dispatchEvent("meta",a);let r=this.device.getActive(),s=[],i=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),l=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#g[$],y);let C=w[$]-t.#p[$],Y=u.length*$;if(C>=0){let L=4*.25**(h[Y+u[73]]/64);t.#p[$]+=Math.ceil(C-C*t.smoothingAtk**L)}else{let L=4*.25**(h[Y+u[72]]/64);t.#p[$]+=Math.floor(C-C*t.smoothingDcy**L)}});let p=0;return r.forEach(function(y,$){y&&(s[$]=t.device.getVel($),p+=s[$].size)}),{extraPoly:c,curPoly:p,chInUse:r,chKeyPr:s,chPitch:i,chProgr:d,chContr:h,chType:l,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#p.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,c=.5){super();let o=this;this.smoothingAtk=n,this.smoothingDcy=c,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(o.#h[a.meta]||console.debug).call(o,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){o.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){o.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){o.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){o.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){o.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){o.dispatchEvent("screen",t.data)}),this.#h[3]=function(t,a){o.#o?.length<1&&(o.#o=a)},this.#h[81]=function(t,a){let r=o.noteProgress,s=o.#n||.5;o.#l=6e7/a,o.#n=a/1e6,o.#b+=r*(s/o.#n)-r},this.#h[88]=function(t,a){let r=o.noteProgress,s=o.noteOverall,i=o.noteBar,h=o.noteBeat,d=o.#a,l=o.#e;o.#a=a[0],o.#e=1<=d&&(d>1)*(n>>(this.mode>1?5:4))+this.device.getPitchShift(n)/12*this.noteRegW,s=(3+n%(this.mode>1?32:16))*this.lineHeight+this.noteTops[c%12]*this.noteHeight;if(o>0)switch(a.fillStyle=`#ffffff${(o*2).toString(16).padStart(2,"0")}`,a.fillRect(r+1,s+1,this.noteWidth-2,this.noteHeight-2),t){case this.device.NOTE_HELD:case this.device.NOTE_SOSTENUTO_HELD:{a.clearRect(r+1+this.noteOutline,s+1+this.noteOutline,this.noteWidth-2*(1+this.noteOutline),this.noteHeight-2*(1+this.noteOutline));break}}}render(n){let c=super.render(n),o=this,t=this.context,a=Date.now();t.globalCompositeOperation="source-over",t.clearRect(0,0,t.canvas.width,t.canvas.height),t.font=`${this.lineHeight-this.fontPadding*2}px "Noto Sans Mono", "Noto Sans Mono Web", mono`,self.metrics=t.measureText("Op");let r=metrics.actualBoundingBoxLeft,s=metrics.actualBoundingBoxAscent;t.fillStyle="#fff",t.fillText(`${c.eventCount.toString().padStart(3,"0")} ${(c.curPoly+c.extraPoly).toString().padStart(3,"0")}/512 ${c.tSig[0].toString().padStart(2," ")}/${c.tSig[1].toString().padEnd(2," ")} ${(c.noteBar+1).toString().padStart(3," ")}:${Math.floor(c.noteBeat+1).toString().padEnd(2," ")} ${Math.floor(c.tempo).toString().padStart(3," ")}.${Math.floor(c.tempo*100%100).toString().padStart(2,"0")}bpm ${Math.floor(c.master.volume).toString().padStart(3," ")}.${Math.floor(c.master.volume*100%100).toString().padStart(2,"0")}%`,o.fontPadding+r,s+o.fontPadding),t.fillText("Voices VEMRCDBP12",o.fontPadding+r,s+o.fontPadding+o.lineHeight*2),c.chKeyPr.forEach((i,h)=>{i.forEach((d,l)=>{let f=o.startPort<<4,p=(o.startPort<<4)+(16<=f&&h{let h=o.startPort<<4,d=(o.startPort<<4)+(16<=h&&i.part1?32:16)),l=o.device.getChVoice(h);t.fillText(`${h+1}`.padStart(2,"0"),o.fontPadding+r+(i>>(this.mode>1?5:4))*(t.canvas.width>>1),d,o.noteWidth*2.5),t.fillText(l.name,o.fontPadding+r+(i>>(this.mode>1?5:4))*(t.canvas.width>>1)+o.noteWidth*3,d,o.noteWidth*13);let f=u.length*h;[7,11,1,91,93,94,74,5,12,13].forEach((p,b)=>{t.fillRect(o.fontPadding*2+o.noteWidth*(16+b)+(i>>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(4+i%(this.mode>1?32:16)),o.noteWidth-o.noteOutline,(o.lineHeight-1)*(c.chContr[f+u[p]]/-127))})}}c.letter.expire<=a,t.globalCompositeOperation="xor",t.fillStyle="#fff";for(let i=0;i<16<>(this.mode>1?5:4))*(t.canvas.width>>1),o.lineHeight*(3+i%(this.mode>1?32:16)),o.noteWidth*16*(c.strength[h]/255),o.lineHeight-1)}for(let i in o.eventBuffer)delete o.eventBuffer[i];for(;o.eventQueue.length>0;)delete o.eventQueue[0],o.eventQueue.shift()}constructor(n){super(new ye,.1,.75);let c=this;this.context=n,this.resizeCanvas(1280,720),this.device.addEventListener("note",o=>{let t=o.data,a=t.part*128+t.note,r=this.eventBuffer[a];this.eventBuffer[a]=t,r?.velo>0&&t.velo==0&&this.eventQueue.push(r)})}},Dt=Fe;export{Dt as default}; diff --git a/src/cambiare/index.mjs b/oldsrc/cambiare/index.mjs similarity index 100% rename from src/cambiare/index.mjs rename to oldsrc/cambiare/index.mjs diff --git a/test/cambiare.htm b/oldsrc/cambiare_wa/cambiare.htm similarity index 100% rename from test/cambiare.htm rename to oldsrc/cambiare_wa/cambiare.htm diff --git a/src/cambiare_wa/index.js b/oldsrc/cambiare_wa/index.js similarity index 100% rename from src/cambiare_wa/index.js rename to oldsrc/cambiare_wa/index.js From 4bce65b5f5fa1667b8a1980be429dc08c236afa7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Sat, 24 Jun 2023 10:36:46 +0000 Subject: [PATCH 24/31] Removing dangling links. --- test/js/cambiare.mjs | 1 - test/js/cambiare_wa.js | 1 - 2 files changed, 2 deletions(-) delete mode 120000 test/js/cambiare.mjs delete mode 120000 test/js/cambiare_wa.js diff --git a/test/js/cambiare.mjs b/test/js/cambiare.mjs deleted file mode 120000 index 2514fdde..00000000 --- a/test/js/cambiare.mjs +++ /dev/null @@ -1 +0,0 @@ -../../dist/cambiare.mjs \ No newline at end of file diff --git a/test/js/cambiare_wa.js b/test/js/cambiare_wa.js deleted file mode 120000 index 801e8b59..00000000 --- a/test/js/cambiare_wa.js +++ /dev/null @@ -1 +0,0 @@ -../../dist/cambiare_wa.js \ No newline at end of file From e0d384000bc2d3f2596beaa624370ec00acaebf4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Sat, 24 Jun 2023 10:45:55 +0000 Subject: [PATCH 25/31] Scaffolding of the new Cambiare. --- dist/cambiare.mjs | 0 libs/bulma@jgthms/bulma.min.css | 1 + src/cambiare/index.mjs | 1 + src/cambiare_demo/index.js | 1 + test/cambiare.htm | 17 +++++++++++++++++ test/css/bulma.css | 1 + test/css/cambiare.css | 0 test/js/cambiare.mjs | 1 + test/js/cambiare_demo.js | 1 + 9 files changed, 23 insertions(+) create mode 100644 dist/cambiare.mjs create mode 100644 libs/bulma@jgthms/bulma.min.css create mode 100644 src/cambiare/index.mjs create mode 100644 src/cambiare_demo/index.js create mode 100644 test/cambiare.htm create mode 120000 test/css/bulma.css create mode 100644 test/css/cambiare.css create mode 120000 test/js/cambiare.mjs create mode 120000 test/js/cambiare_demo.js diff --git a/dist/cambiare.mjs b/dist/cambiare.mjs new file mode 100644 index 00000000..e69de29b diff --git a/libs/bulma@jgthms/bulma.min.css b/libs/bulma@jgthms/bulma.min.css new file mode 100644 index 00000000..bdadf6bd --- /dev/null +++ b/libs/bulma@jgthms/bulma.min.css @@ -0,0 +1 @@ +/*! bulma.io v0.9.4 | MIT License | github.com/jgthms/bulma */.button,.file-cta,.file-name,.input,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.select select,.textarea{-moz-appearance:none;-webkit-appearance:none;align-items:center;border:1px solid transparent;border-radius:4px;box-shadow:none;display:inline-flex;font-size:1rem;height:2.5em;justify-content:flex-start;line-height:1.5;padding-bottom:calc(.5em - 1px);padding-left:calc(.75em - 1px);padding-right:calc(.75em - 1px);padding-top:calc(.5em - 1px);position:relative;vertical-align:top}.button:active,.button:focus,.file-cta:active,.file-cta:focus,.file-name:active,.file-name:focus,.input:active,.input:focus,.is-active.button,.is-active.file-cta,.is-active.file-name,.is-active.input,.is-active.pagination-ellipsis,.is-active.pagination-link,.is-active.pagination-next,.is-active.pagination-previous,.is-active.textarea,.is-focused.button,.is-focused.file-cta,.is-focused.file-name,.is-focused.input,.is-focused.pagination-ellipsis,.is-focused.pagination-link,.is-focused.pagination-next,.is-focused.pagination-previous,.is-focused.textarea,.pagination-ellipsis:active,.pagination-ellipsis:focus,.pagination-link:active,.pagination-link:focus,.pagination-next:active,.pagination-next:focus,.pagination-previous:active,.pagination-previous:focus,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{outline:0}.button[disabled],.file-cta[disabled],.file-name[disabled],.input[disabled],.pagination-ellipsis[disabled],.pagination-link[disabled],.pagination-next[disabled],.pagination-previous[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .button,fieldset[disabled] .file-cta,fieldset[disabled] .file-name,fieldset[disabled] .input,fieldset[disabled] .pagination-ellipsis,fieldset[disabled] .pagination-link,fieldset[disabled] .pagination-next,fieldset[disabled] .pagination-previous,fieldset[disabled] .select select,fieldset[disabled] .textarea{cursor:not-allowed}.breadcrumb,.button,.file,.is-unselectable,.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous,.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.navbar-link:not(.is-arrowless)::after,.select:not(.is-multiple):not(.is-loading)::after{border:3px solid transparent;border-radius:2px;border-right:0;border-top:0;content:" ";display:block;height:.625em;margin-top:-.4375em;pointer-events:none;position:absolute;top:50%;transform:rotate(-45deg);transform-origin:center;width:.625em}.block:not(:last-child),.box:not(:last-child),.breadcrumb:not(:last-child),.content:not(:last-child),.level:not(:last-child),.message:not(:last-child),.notification:not(:last-child),.pagination:not(:last-child),.progress:not(:last-child),.subtitle:not(:last-child),.table-container:not(:last-child),.table:not(:last-child),.tabs:not(:last-child),.title:not(:last-child){margin-bottom:1.5rem}.delete,.modal-close{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:9999px;cursor:pointer;pointer-events:auto;display:inline-block;flex-grow:0;flex-shrink:0;font-size:0;height:20px;max-height:20px;max-width:20px;min-height:20px;min-width:20px;outline:0;position:relative;vertical-align:top;width:20px}.delete::after,.delete::before,.modal-close::after,.modal-close::before{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.delete::before,.modal-close::before{height:2px;width:50%}.delete::after,.modal-close::after{height:50%;width:2px}.delete:focus,.delete:hover,.modal-close:focus,.modal-close:hover{background-color:rgba(10,10,10,.3)}.delete:active,.modal-close:active{background-color:rgba(10,10,10,.4)}.is-small.delete,.is-small.modal-close{height:16px;max-height:16px;max-width:16px;min-height:16px;min-width:16px;width:16px}.is-medium.delete,.is-medium.modal-close{height:24px;max-height:24px;max-width:24px;min-height:24px;min-width:24px;width:24px}.is-large.delete,.is-large.modal-close{height:32px;max-height:32px;max-width:32px;min-height:32px;min-width:32px;width:32px}.button.is-loading::after,.control.is-loading::after,.loader,.select.is-loading::after{-webkit-animation:spinAround .5s infinite linear;animation:spinAround .5s infinite linear;border:2px solid #dbdbdb;border-radius:9999px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.hero-video,.image.is-16by9 .has-ratio,.image.is-16by9 img,.image.is-1by1 .has-ratio,.image.is-1by1 img,.image.is-1by2 .has-ratio,.image.is-1by2 img,.image.is-1by3 .has-ratio,.image.is-1by3 img,.image.is-2by1 .has-ratio,.image.is-2by1 img,.image.is-2by3 .has-ratio,.image.is-2by3 img,.image.is-3by1 .has-ratio,.image.is-3by1 img,.image.is-3by2 .has-ratio,.image.is-3by2 img,.image.is-3by4 .has-ratio,.image.is-3by4 img,.image.is-3by5 .has-ratio,.image.is-3by5 img,.image.is-4by3 .has-ratio,.image.is-4by3 img,.image.is-4by5 .has-ratio,.image.is-4by5 img,.image.is-5by3 .has-ratio,.image.is-5by3 img,.image.is-5by4 .has-ratio,.image.is-5by4 img,.image.is-9by16 .has-ratio,.image.is-9by16 img,.image.is-square .has-ratio,.image.is-square img,.is-overlay,.modal,.modal-background{bottom:0;left:0;position:absolute;right:0;top:0}.navbar-burger{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:0 0;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0}/*! minireset.css v0.0.6 | MIT License | github.com/jgthms/minireset.css */blockquote,body,dd,dl,dt,fieldset,figure,h1,h2,h3,h4,h5,h6,hr,html,iframe,legend,li,ol,p,pre,textarea,ul{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*,::after,::before{box-sizing:inherit}img,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}td:not([align]),th:not([align]){text-align:inherit}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,optgroup,select,textarea{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1em;font-weight:400;line-height:1.5}a{color:#485fc7;cursor:pointer;text-decoration:none}a strong{color:currentColor}a:hover{color:#363636}code{background-color:#f5f5f5;color:#da1039;font-size:.875em;font-weight:400;padding:.25em .5em .25em}hr{background-color:#f5f5f5;border:none;display:block;height:2px;margin:1.5rem 0}img{height:auto;max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:.875em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}fieldset{border:none}pre{-webkit-overflow-scrolling:touch;background-color:#f5f5f5;color:#4a4a4a;font-size:.875em;overflow-x:auto;padding:1.25rem 1.5rem;white-space:pre;word-wrap:normal}pre code{background-color:transparent;color:currentColor;font-size:1em;padding:0}table td,table th{vertical-align:top}table td:not([align]),table th:not([align]){text-align:inherit}table th{color:#363636}@-webkit-keyframes spinAround{from{transform:rotate(0)}to{transform:rotate(359deg)}}@keyframes spinAround{from{transform:rotate(0)}to{transform:rotate(359deg)}}.box{background-color:#fff;border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);color:#4a4a4a;display:block;padding:1.25rem}a.box:focus,a.box:hover{box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px #485fc7}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2),0 0 0 1px #485fc7}.button{background-color:#fff;border-color:#dbdbdb;border-width:1px;color:#363636;cursor:pointer;justify-content:center;padding-bottom:calc(.5em - 1px);padding-left:1em;padding-right:1em;padding-top:calc(.5em - 1px);text-align:center;white-space:nowrap}.button strong{color:inherit}.button .icon,.button .icon.is-large,.button .icon.is-medium,.button .icon.is-small{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.5em - 1px);margin-right:.25em}.button .icon:last-child:not(:first-child){margin-left:.25em;margin-right:calc(-.5em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.5em - 1px);margin-right:calc(-.5em - 1px)}.button.is-hovered,.button:hover{border-color:#b5b5b5;color:#363636}.button.is-focused,.button:focus{border-color:#485fc7;color:#363636}.button.is-focused:not(:active),.button:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button.is-active,.button:active{border-color:#4a4a4a;color:#363636}.button.is-text{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-text.is-focused,.button.is-text.is-hovered,.button.is-text:focus,.button.is-text:hover{background-color:#f5f5f5;color:#363636}.button.is-text.is-active,.button.is-text:active{background-color:#e8e8e8;color:#363636}.button.is-text[disabled],fieldset[disabled] .button.is-text{background-color:transparent;border-color:transparent;box-shadow:none}.button.is-ghost{background:0 0;border-color:transparent;color:#485fc7;text-decoration:none}.button.is-ghost.is-hovered,.button.is-ghost:hover{color:#485fc7;text-decoration:underline}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white.is-hovered,.button.is-white:hover{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white.is-focused,.button.is-white:focus{border-color:transparent;color:#0a0a0a}.button.is-white.is-focused:not(:active),.button.is-white:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.button.is-white.is-active,.button.is-white:active{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.button.is-white[disabled],fieldset[disabled] .button.is-white{background-color:#fff;border-color:#fff;box-shadow:none}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-hovered,.button.is-white.is-inverted:hover{background-color:#000}.button.is-white.is-inverted[disabled],fieldset[disabled] .button.is-white.is-inverted{background-color:#0a0a0a;border-color:transparent;box-shadow:none;color:#fff}.button.is-white.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined.is-focused,.button.is-white.is-outlined.is-hovered,.button.is-white.is-outlined:focus,.button.is-white.is-outlined:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-outlined.is-loading.is-focused::after,.button.is-white.is-outlined.is-loading.is-hovered::after,.button.is-white.is-outlined.is-loading:focus::after,.button.is-white.is-outlined.is-loading:hover::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-white.is-outlined[disabled],fieldset[disabled] .button.is-white.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined.is-focused,.button.is-white.is-inverted.is-outlined.is-hovered,.button.is-white.is-inverted.is-outlined:focus,.button.is-white.is-inverted.is-outlined:hover{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-white.is-inverted.is-outlined.is-loading:focus::after,.button.is-white.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-white.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black.is-hovered,.button.is-black:hover{background-color:#040404;border-color:transparent;color:#fff}.button.is-black.is-focused,.button.is-black:focus{border-color:transparent;color:#fff}.button.is-black.is-focused:not(:active),.button.is-black:focus:not(:active){box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.button.is-black.is-active,.button.is-black:active{background-color:#000;border-color:transparent;color:#fff}.button.is-black[disabled],fieldset[disabled] .button.is-black{background-color:#0a0a0a;border-color:#0a0a0a;box-shadow:none}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-hovered,.button.is-black.is-inverted:hover{background-color:#f2f2f2}.button.is-black.is-inverted[disabled],fieldset[disabled] .button.is-black.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#0a0a0a}.button.is-black.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined.is-focused,.button.is-black.is-outlined.is-hovered,.button.is-black.is-outlined:focus,.button.is-black.is-outlined:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-black.is-outlined.is-loading.is-focused::after,.button.is-black.is-outlined.is-loading.is-hovered::after,.button.is-black.is-outlined.is-loading:focus::after,.button.is-black.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-black.is-outlined[disabled],fieldset[disabled] .button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;box-shadow:none;color:#0a0a0a}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined.is-focused,.button.is-black.is-inverted.is-outlined.is-hovered,.button.is-black.is-inverted.is-outlined:focus,.button.is-black.is-inverted.is-outlined:hover{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-black.is-inverted.is-outlined.is-loading:focus::after,.button.is-black.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #0a0a0a #0a0a0a!important}.button.is-black.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-hovered,.button.is-light:hover{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused,.button.is-light:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light.is-focused:not(:active),.button.is-light:focus:not(:active){box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.button.is-light.is-active,.button.is-light:active{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-light[disabled],fieldset[disabled] .button.is-light{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none}.button.is-light.is-inverted{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-hovered,.button.is-light.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-light.is-inverted[disabled],fieldset[disabled] .button.is-light.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#f5f5f5}.button.is-light.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined.is-focused,.button.is-light.is-outlined.is-hovered,.button.is-light.is-outlined:focus,.button.is-light.is-outlined:hover{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.button.is-light.is-outlined.is-loading::after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-outlined.is-loading.is-focused::after,.button.is-light.is-outlined.is-loading.is-hovered::after,.button.is-light.is-outlined.is-loading:focus::after,.button.is-light.is-outlined.is-loading:hover::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-light.is-outlined[disabled],fieldset[disabled] .button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;box-shadow:none;color:#f5f5f5}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-light.is-inverted.is-outlined.is-focused,.button.is-light.is-inverted.is-outlined.is-hovered,.button.is-light.is-inverted.is-outlined:focus,.button.is-light.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#f5f5f5}.button.is-light.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-light.is-inverted.is-outlined.is-loading:focus::after,.button.is-light.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #f5f5f5 #f5f5f5!important}.button.is-light.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-dark{background-color:#363636;border-color:transparent;color:#fff}.button.is-dark.is-hovered,.button.is-dark:hover{background-color:#2f2f2f;border-color:transparent;color:#fff}.button.is-dark.is-focused,.button.is-dark:focus{border-color:transparent;color:#fff}.button.is-dark.is-focused:not(:active),.button.is-dark:focus:not(:active){box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.button.is-dark.is-active,.button.is-dark:active{background-color:#292929;border-color:transparent;color:#fff}.button.is-dark[disabled],fieldset[disabled] .button.is-dark{background-color:#363636;border-color:#363636;box-shadow:none}.button.is-dark.is-inverted{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-hovered,.button.is-dark.is-inverted:hover{background-color:#f2f2f2}.button.is-dark.is-inverted[disabled],fieldset[disabled] .button.is-dark.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#363636}.button.is-dark.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined.is-focused,.button.is-dark.is-outlined.is-hovered,.button.is-dark.is-outlined:focus,.button.is-dark.is-outlined:hover{background-color:#363636;border-color:#363636;color:#fff}.button.is-dark.is-outlined.is-loading::after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-outlined.is-loading.is-focused::after,.button.is-dark.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-outlined.is-loading:focus::after,.button.is-dark.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-dark.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-outlined{background-color:transparent;border-color:#363636;box-shadow:none;color:#363636}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-dark.is-inverted.is-outlined.is-focused,.button.is-dark.is-inverted.is-outlined.is-hovered,.button.is-dark.is-inverted.is-outlined:focus,.button.is-dark.is-inverted.is-outlined:hover{background-color:#fff;color:#363636}.button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-dark.is-inverted.is-outlined.is-loading:focus::after,.button.is-dark.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #363636 #363636!important}.button.is-dark.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary.is-hovered,.button.is-primary:hover{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary.is-focused,.button.is-primary:focus{border-color:transparent;color:#fff}.button.is-primary.is-focused:not(:active),.button.is-primary:focus:not(:active){box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.button.is-primary.is-active,.button.is-primary:active{background-color:#00b89c;border-color:transparent;color:#fff}.button.is-primary[disabled],fieldset[disabled] .button.is-primary{background-color:#00d1b2;border-color:#00d1b2;box-shadow:none}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-hovered,.button.is-primary.is-inverted:hover{background-color:#f2f2f2}.button.is-primary.is-inverted[disabled],fieldset[disabled] .button.is-primary.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#00d1b2}.button.is-primary.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined.is-focused,.button.is-primary.is-outlined.is-hovered,.button.is-primary.is-outlined:focus,.button.is-primary.is-outlined:hover{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading::after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-outlined.is-loading.is-focused::after,.button.is-primary.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-outlined.is-loading:focus::after,.button.is-primary.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-primary.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;box-shadow:none;color:#00d1b2}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined.is-focused,.button.is-primary.is-inverted.is-outlined.is-hovered,.button.is-primary.is-inverted.is-outlined:focus,.button.is-primary.is-inverted.is-outlined:hover{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-primary.is-inverted.is-outlined.is-loading:focus::after,.button.is-primary.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #00d1b2 #00d1b2!important}.button.is-primary.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-primary.is-light{background-color:#ebfffc;color:#00947e}.button.is-primary.is-light.is-hovered,.button.is-primary.is-light:hover{background-color:#defffa;border-color:transparent;color:#00947e}.button.is-primary.is-light.is-active,.button.is-primary.is-light:active{background-color:#d1fff8;border-color:transparent;color:#00947e}.button.is-link{background-color:#485fc7;border-color:transparent;color:#fff}.button.is-link.is-hovered,.button.is-link:hover{background-color:#3e56c4;border-color:transparent;color:#fff}.button.is-link.is-focused,.button.is-link:focus{border-color:transparent;color:#fff}.button.is-link.is-focused:not(:active),.button.is-link:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.button.is-link.is-active,.button.is-link:active{background-color:#3a51bb;border-color:transparent;color:#fff}.button.is-link[disabled],fieldset[disabled] .button.is-link{background-color:#485fc7;border-color:#485fc7;box-shadow:none}.button.is-link.is-inverted{background-color:#fff;color:#485fc7}.button.is-link.is-inverted.is-hovered,.button.is-link.is-inverted:hover{background-color:#f2f2f2}.button.is-link.is-inverted[disabled],fieldset[disabled] .button.is-link.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#485fc7}.button.is-link.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;color:#485fc7}.button.is-link.is-outlined.is-focused,.button.is-link.is-outlined.is-hovered,.button.is-link.is-outlined:focus,.button.is-link.is-outlined:hover{background-color:#485fc7;border-color:#485fc7;color:#fff}.button.is-link.is-outlined.is-loading::after{border-color:transparent transparent #485fc7 #485fc7!important}.button.is-link.is-outlined.is-loading.is-focused::after,.button.is-link.is-outlined.is-loading.is-hovered::after,.button.is-link.is-outlined.is-loading:focus::after,.button.is-link.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-link.is-outlined[disabled],fieldset[disabled] .button.is-link.is-outlined{background-color:transparent;border-color:#485fc7;box-shadow:none;color:#485fc7}.button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-link.is-inverted.is-outlined.is-focused,.button.is-link.is-inverted.is-outlined.is-hovered,.button.is-link.is-inverted.is-outlined:focus,.button.is-link.is-inverted.is-outlined:hover{background-color:#fff;color:#485fc7}.button.is-link.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-link.is-inverted.is-outlined.is-loading:focus::after,.button.is-link.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #485fc7 #485fc7!important}.button.is-link.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-link.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-link.is-light{background-color:#eff1fa;color:#3850b7}.button.is-link.is-light.is-hovered,.button.is-link.is-light:hover{background-color:#e6e9f7;border-color:transparent;color:#3850b7}.button.is-link.is-light.is-active,.button.is-link.is-light:active{background-color:#dce0f4;border-color:transparent;color:#3850b7}.button.is-info{background-color:#3e8ed0;border-color:transparent;color:#fff}.button.is-info.is-hovered,.button.is-info:hover{background-color:#3488ce;border-color:transparent;color:#fff}.button.is-info.is-focused,.button.is-info:focus{border-color:transparent;color:#fff}.button.is-info.is-focused:not(:active),.button.is-info:focus:not(:active){box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.button.is-info.is-active,.button.is-info:active{background-color:#3082c5;border-color:transparent;color:#fff}.button.is-info[disabled],fieldset[disabled] .button.is-info{background-color:#3e8ed0;border-color:#3e8ed0;box-shadow:none}.button.is-info.is-inverted{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted.is-hovered,.button.is-info.is-inverted:hover{background-color:#f2f2f2}.button.is-info.is-inverted[disabled],fieldset[disabled] .button.is-info.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#3e8ed0}.button.is-info.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;color:#3e8ed0}.button.is-info.is-outlined.is-focused,.button.is-info.is-outlined.is-hovered,.button.is-info.is-outlined:focus,.button.is-info.is-outlined:hover{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.button.is-info.is-outlined.is-loading::after{border-color:transparent transparent #3e8ed0 #3e8ed0!important}.button.is-info.is-outlined.is-loading.is-focused::after,.button.is-info.is-outlined.is-loading.is-hovered::after,.button.is-info.is-outlined.is-loading:focus::after,.button.is-info.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-info.is-outlined[disabled],fieldset[disabled] .button.is-info.is-outlined{background-color:transparent;border-color:#3e8ed0;box-shadow:none;color:#3e8ed0}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined.is-focused,.button.is-info.is-inverted.is-outlined.is-hovered,.button.is-info.is-inverted.is-outlined:focus,.button.is-info.is-inverted.is-outlined:hover{background-color:#fff;color:#3e8ed0}.button.is-info.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-info.is-inverted.is-outlined.is-loading:focus::after,.button.is-info.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #3e8ed0 #3e8ed0!important}.button.is-info.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-info.is-light{background-color:#eff5fb;color:#296fa8}.button.is-info.is-light.is-hovered,.button.is-info.is-light:hover{background-color:#e4eff9;border-color:transparent;color:#296fa8}.button.is-info.is-light.is-active,.button.is-info.is-light:active{background-color:#dae9f6;border-color:transparent;color:#296fa8}.button.is-success{background-color:#48c78e;border-color:transparent;color:#fff}.button.is-success.is-hovered,.button.is-success:hover{background-color:#3ec487;border-color:transparent;color:#fff}.button.is-success.is-focused,.button.is-success:focus{border-color:transparent;color:#fff}.button.is-success.is-focused:not(:active),.button.is-success:focus:not(:active){box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.button.is-success.is-active,.button.is-success:active{background-color:#3abb81;border-color:transparent;color:#fff}.button.is-success[disabled],fieldset[disabled] .button.is-success{background-color:#48c78e;border-color:#48c78e;box-shadow:none}.button.is-success.is-inverted{background-color:#fff;color:#48c78e}.button.is-success.is-inverted.is-hovered,.button.is-success.is-inverted:hover{background-color:#f2f2f2}.button.is-success.is-inverted[disabled],fieldset[disabled] .button.is-success.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#48c78e}.button.is-success.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;color:#48c78e}.button.is-success.is-outlined.is-focused,.button.is-success.is-outlined.is-hovered,.button.is-success.is-outlined:focus,.button.is-success.is-outlined:hover{background-color:#48c78e;border-color:#48c78e;color:#fff}.button.is-success.is-outlined.is-loading::after{border-color:transparent transparent #48c78e #48c78e!important}.button.is-success.is-outlined.is-loading.is-focused::after,.button.is-success.is-outlined.is-loading.is-hovered::after,.button.is-success.is-outlined.is-loading:focus::after,.button.is-success.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-success.is-outlined[disabled],fieldset[disabled] .button.is-success.is-outlined{background-color:transparent;border-color:#48c78e;box-shadow:none;color:#48c78e}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined.is-focused,.button.is-success.is-inverted.is-outlined.is-hovered,.button.is-success.is-inverted.is-outlined:focus,.button.is-success.is-inverted.is-outlined:hover{background-color:#fff;color:#48c78e}.button.is-success.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-success.is-inverted.is-outlined.is-loading:focus::after,.button.is-success.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #48c78e #48c78e!important}.button.is-success.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-success.is-light{background-color:#effaf5;color:#257953}.button.is-success.is-light.is-hovered,.button.is-success.is-light:hover{background-color:#e6f7ef;border-color:transparent;color:#257953}.button.is-success.is-light.is-active,.button.is-success.is-light:active{background-color:#dcf4e9;border-color:transparent;color:#257953}.button.is-warning{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-hovered,.button.is-warning:hover{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused,.button.is-warning:focus{border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning.is-focused:not(:active),.button.is-warning:focus:not(:active){box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.button.is-warning.is-active,.button.is-warning:active{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning[disabled],fieldset[disabled] .button.is-warning{background-color:#ffe08a;border-color:#ffe08a;box-shadow:none}.button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);color:#ffe08a}.button.is-warning.is-inverted.is-hovered,.button.is-warning.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-warning.is-inverted[disabled],fieldset[disabled] .button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);border-color:transparent;box-shadow:none;color:#ffe08a}.button.is-warning.is-loading::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;color:#ffe08a}.button.is-warning.is-outlined.is-focused,.button.is-warning.is-outlined.is-hovered,.button.is-warning.is-outlined:focus,.button.is-warning.is-outlined:hover{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.button.is-warning.is-outlined.is-loading::after{border-color:transparent transparent #ffe08a #ffe08a!important}.button.is-warning.is-outlined.is-loading.is-focused::after,.button.is-warning.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-outlined.is-loading:focus::after,.button.is-warning.is-outlined.is-loading:hover::after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7)!important}.button.is-warning.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-outlined{background-color:transparent;border-color:#ffe08a;box-shadow:none;color:#ffe08a}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted.is-outlined.is-focused,.button.is-warning.is-inverted.is-outlined.is-hovered,.button.is-warning.is-inverted.is-outlined:focus,.button.is-warning.is-inverted.is-outlined:hover{background-color:rgba(0,0,0,.7);color:#ffe08a}.button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-warning.is-inverted.is-outlined.is-loading:focus::after,.button.is-warning.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #ffe08a #ffe08a!important}.button.is-warning.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);box-shadow:none;color:rgba(0,0,0,.7)}.button.is-warning.is-light{background-color:#fffaeb;color:#946c00}.button.is-warning.is-light.is-hovered,.button.is-warning.is-light:hover{background-color:#fff6de;border-color:transparent;color:#946c00}.button.is-warning.is-light.is-active,.button.is-warning.is-light:active{background-color:#fff3d1;border-color:transparent;color:#946c00}.button.is-danger{background-color:#f14668;border-color:transparent;color:#fff}.button.is-danger.is-hovered,.button.is-danger:hover{background-color:#f03a5f;border-color:transparent;color:#fff}.button.is-danger.is-focused,.button.is-danger:focus{border-color:transparent;color:#fff}.button.is-danger.is-focused:not(:active),.button.is-danger:focus:not(:active){box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.button.is-danger.is-active,.button.is-danger:active{background-color:#ef2e55;border-color:transparent;color:#fff}.button.is-danger[disabled],fieldset[disabled] .button.is-danger{background-color:#f14668;border-color:#f14668;box-shadow:none}.button.is-danger.is-inverted{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-hovered,.button.is-danger.is-inverted:hover{background-color:#f2f2f2}.button.is-danger.is-inverted[disabled],fieldset[disabled] .button.is-danger.is-inverted{background-color:#fff;border-color:transparent;box-shadow:none;color:#f14668}.button.is-danger.is-loading::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;color:#f14668}.button.is-danger.is-outlined.is-focused,.button.is-danger.is-outlined.is-hovered,.button.is-danger.is-outlined:focus,.button.is-danger.is-outlined:hover{background-color:#f14668;border-color:#f14668;color:#fff}.button.is-danger.is-outlined.is-loading::after{border-color:transparent transparent #f14668 #f14668!important}.button.is-danger.is-outlined.is-loading.is-focused::after,.button.is-danger.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-outlined.is-loading:focus::after,.button.is-danger.is-outlined.is-loading:hover::after{border-color:transparent transparent #fff #fff!important}.button.is-danger.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-outlined{background-color:transparent;border-color:#f14668;box-shadow:none;color:#f14668}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined.is-focused,.button.is-danger.is-inverted.is-outlined.is-hovered,.button.is-danger.is-inverted.is-outlined:focus,.button.is-danger.is-inverted.is-outlined:hover{background-color:#fff;color:#f14668}.button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after,.button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after,.button.is-danger.is-inverted.is-outlined.is-loading:focus::after,.button.is-danger.is-inverted.is-outlined.is-loading:hover::after{border-color:transparent transparent #f14668 #f14668!important}.button.is-danger.is-inverted.is-outlined[disabled],fieldset[disabled] .button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;box-shadow:none;color:#fff}.button.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.button.is-danger.is-light.is-hovered,.button.is-danger.is-light:hover{background-color:#fde0e6;border-color:transparent;color:#cc0f35}.button.is-danger.is-light.is-active,.button.is-danger.is-light:active{background-color:#fcd4dc;border-color:transparent;color:#cc0f35}.button.is-small{font-size:.75rem}.button.is-small:not(.is-rounded){border-radius:2px}.button.is-normal{font-size:1rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],fieldset[disabled] .button{background-color:#fff;border-color:#dbdbdb;box-shadow:none;opacity:.5}.button.is-fullwidth{display:flex;width:100%}.button.is-loading{color:transparent!important;pointer-events:none}.button.is-loading::after{position:absolute;left:calc(50% - (1em * .5));top:calc(50% - (1em * .5));position:absolute!important}.button.is-static{background-color:#f5f5f5;border-color:#dbdbdb;color:#7a7a7a;box-shadow:none;pointer-events:none}.button.is-rounded{border-radius:9999px;padding-left:calc(1em + .25em);padding-right:calc(1em + .25em)}.buttons{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.buttons .button{margin-bottom:.5rem}.buttons .button:not(:last-child):not(.is-fullwidth){margin-right:.5rem}.buttons:last-child{margin-bottom:-.5rem}.buttons:not(:last-child){margin-bottom:1rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large){font-size:.75rem}.buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large):not(.is-rounded){border-radius:2px}.buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large){font-size:1.25rem}.buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium){font-size:1.5rem}.buttons.has-addons .button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.buttons.has-addons .button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0;margin-right:-1px}.buttons.has-addons .button:last-child{margin-right:0}.buttons.has-addons .button.is-hovered,.buttons.has-addons .button:hover{z-index:2}.buttons.has-addons .button.is-active,.buttons.has-addons .button.is-focused,.buttons.has-addons .button.is-selected,.buttons.has-addons .button:active,.buttons.has-addons .button:focus{z-index:3}.buttons.has-addons .button.is-active:hover,.buttons.has-addons .button.is-focused:hover,.buttons.has-addons .button.is-selected:hover,.buttons.has-addons .button:active:hover,.buttons.has-addons .button:focus:hover{z-index:4}.buttons.has-addons .button.is-expanded{flex-grow:1;flex-shrink:1}.buttons.is-centered{justify-content:center}.buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}.buttons.is-right{justify-content:flex-end}.buttons.is-right:not(.has-addons) .button:not(.is-fullwidth){margin-left:.25rem;margin-right:.25rem}@media screen and (max-width:768px){.button.is-responsive.is-small{font-size:.5625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.65625rem}.button.is-responsive.is-medium{font-size:.75rem}.button.is-responsive.is-large{font-size:1rem}}@media screen and (min-width:769px) and (max-width:1023px){.button.is-responsive.is-small{font-size:.65625rem}.button.is-responsive,.button.is-responsive.is-normal{font-size:.75rem}.button.is-responsive.is-medium{font-size:1rem}.button.is-responsive.is-large{font-size:1.25rem}}.container{flex-grow:1;margin:0 auto;position:relative;width:auto}.container.is-fluid{max-width:none!important;padding-left:32px;padding-right:32px;width:100%}@media screen and (min-width:1024px){.container{max-width:960px}}@media screen and (max-width:1215px){.container.is-widescreen:not(.is-max-desktop){max-width:1152px}}@media screen and (max-width:1407px){.container.is-fullhd:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}@media screen and (min-width:1216px){.container:not(.is-max-desktop){max-width:1152px}}@media screen and (min-width:1408px){.container:not(.is-max-desktop):not(.is-max-widescreen){max-width:1344px}}.content li+li{margin-top:.25em}.content blockquote:not(:last-child),.content dl:not(:last-child),.content ol:not(:last-child),.content p:not(:last-child),.content pre:not(:last-child),.content table:not(:last-child),.content ul:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:600;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style-position:outside;margin-left:2em;margin-top:1em}.content ol:not([type]){list-style-type:decimal}.content ol:not([type]).is-lower-alpha{list-style-type:lower-alpha}.content ol:not([type]).is-lower-roman{list-style-type:lower-roman}.content ol:not([type]).is-upper-alpha{list-style-type:upper-alpha}.content ol:not([type]).is-upper-roman{list-style-type:upper-roman}.content ul{list-style:disc outside;margin-left:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content dd{margin-left:2em}.content figure{margin-left:2em;margin-right:2em;text-align:center}.content figure:not(:first-child){margin-top:2em}.content figure:not(:last-child){margin-bottom:2em}.content figure img{display:inline-block}.content figure figcaption{font-style:italic}.content pre{-webkit-overflow-scrolling:touch;overflow-x:auto;padding:1.25em 1.5em;white-space:pre;word-wrap:normal}.content sub,.content sup{font-size:75%}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636}.content table th:not([align]){text-align:inherit}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content .tabs li+li{margin-top:0}.content.is-small{font-size:.75rem}.content.is-normal{font-size:1rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.icon{align-items:center;display:inline-flex;justify-content:center;height:1.5rem;width:1.5rem}.icon.is-small{height:1rem;width:1rem}.icon.is-medium{height:2rem;width:2rem}.icon.is-large{height:3rem;width:3rem}.icon-text{align-items:flex-start;color:inherit;display:inline-flex;flex-wrap:wrap;line-height:1.5rem;vertical-align:top}.icon-text .icon{flex-grow:0;flex-shrink:0}.icon-text .icon:not(:last-child){margin-right:.25em}.icon-text .icon:not(:first-child){margin-left:.25em}div.icon-text{display:flex}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image img.is-rounded{border-radius:9999px}.image.is-fullwidth{width:100%}.image.is-16by9 .has-ratio,.image.is-16by9 img,.image.is-1by1 .has-ratio,.image.is-1by1 img,.image.is-1by2 .has-ratio,.image.is-1by2 img,.image.is-1by3 .has-ratio,.image.is-1by3 img,.image.is-2by1 .has-ratio,.image.is-2by1 img,.image.is-2by3 .has-ratio,.image.is-2by3 img,.image.is-3by1 .has-ratio,.image.is-3by1 img,.image.is-3by2 .has-ratio,.image.is-3by2 img,.image.is-3by4 .has-ratio,.image.is-3by4 img,.image.is-3by5 .has-ratio,.image.is-3by5 img,.image.is-4by3 .has-ratio,.image.is-4by3 img,.image.is-4by5 .has-ratio,.image.is-4by5 img,.image.is-5by3 .has-ratio,.image.is-5by3 img,.image.is-5by4 .has-ratio,.image.is-5by4 img,.image.is-9by16 .has-ratio,.image.is-9by16 img,.image.is-square .has-ratio,.image.is-square img{height:100%;width:100%}.image.is-1by1,.image.is-square{padding-top:100%}.image.is-5by4{padding-top:80%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-5by3{padding-top:60%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-3by1{padding-top:33.3333%}.image.is-4by5{padding-top:125%}.image.is-3by4{padding-top:133.3333%}.image.is-2by3{padding-top:150%}.image.is-3by5{padding-top:166.6666%}.image.is-9by16{padding-top:177.7777%}.image.is-1by2{padding-top:200%}.image.is-1by3{padding-top:300%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:4px;position:relative;padding:1.25rem 2.5rem 1.25rem 1.5rem}.notification a:not(.button):not(.dropdown-item){color:currentColor;text-decoration:underline}.notification strong{color:currentColor}.notification code,.notification pre{background:#fff}.notification pre code{background:0 0}.notification>.delete{right:.5rem;position:absolute;top:.5rem}.notification .content,.notification .subtitle,.notification .title{color:currentColor}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.notification.is-dark{background-color:#363636;color:#fff}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-primary.is-light{background-color:#ebfffc;color:#00947e}.notification.is-link{background-color:#485fc7;color:#fff}.notification.is-link.is-light{background-color:#eff1fa;color:#3850b7}.notification.is-info{background-color:#3e8ed0;color:#fff}.notification.is-info.is-light{background-color:#eff5fb;color:#296fa8}.notification.is-success{background-color:#48c78e;color:#fff}.notification.is-success.is-light{background-color:#effaf5;color:#257953}.notification.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.notification.is-warning.is-light{background-color:#fffaeb;color:#946c00}.notification.is-danger{background-color:#f14668;color:#fff}.notification.is-danger.is-light{background-color:#feecf0;color:#cc0f35}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:9999px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress::-webkit-progress-bar{background-color:#ededed}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress::-ms-fill{background-color:#4a4a4a;border:none}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-white::-ms-fill{background-color:#fff}.progress.is-white:indeterminate{background-image:linear-gradient(to right,#fff 30%,#ededed 30%)}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-black::-ms-fill{background-color:#0a0a0a}.progress.is-black:indeterminate{background-image:linear-gradient(to right,#0a0a0a 30%,#ededed 30%)}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-light::-ms-fill{background-color:#f5f5f5}.progress.is-light:indeterminate{background-image:linear-gradient(to right,#f5f5f5 30%,#ededed 30%)}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-dark::-ms-fill{background-color:#363636}.progress.is-dark:indeterminate{background-image:linear-gradient(to right,#363636 30%,#ededed 30%)}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-primary::-ms-fill{background-color:#00d1b2}.progress.is-primary:indeterminate{background-image:linear-gradient(to right,#00d1b2 30%,#ededed 30%)}.progress.is-link::-webkit-progress-value{background-color:#485fc7}.progress.is-link::-moz-progress-bar{background-color:#485fc7}.progress.is-link::-ms-fill{background-color:#485fc7}.progress.is-link:indeterminate{background-image:linear-gradient(to right,#485fc7 30%,#ededed 30%)}.progress.is-info::-webkit-progress-value{background-color:#3e8ed0}.progress.is-info::-moz-progress-bar{background-color:#3e8ed0}.progress.is-info::-ms-fill{background-color:#3e8ed0}.progress.is-info:indeterminate{background-image:linear-gradient(to right,#3e8ed0 30%,#ededed 30%)}.progress.is-success::-webkit-progress-value{background-color:#48c78e}.progress.is-success::-moz-progress-bar{background-color:#48c78e}.progress.is-success::-ms-fill{background-color:#48c78e}.progress.is-success:indeterminate{background-image:linear-gradient(to right,#48c78e 30%,#ededed 30%)}.progress.is-warning::-webkit-progress-value{background-color:#ffe08a}.progress.is-warning::-moz-progress-bar{background-color:#ffe08a}.progress.is-warning::-ms-fill{background-color:#ffe08a}.progress.is-warning:indeterminate{background-image:linear-gradient(to right,#ffe08a 30%,#ededed 30%)}.progress.is-danger::-webkit-progress-value{background-color:#f14668}.progress.is-danger::-moz-progress-bar{background-color:#f14668}.progress.is-danger::-ms-fill{background-color:#f14668}.progress.is-danger:indeterminate{background-image:linear-gradient(to right,#f14668 30%,#ededed 30%)}.progress:indeterminate{-webkit-animation-duration:1.5s;animation-duration:1.5s;-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite;-webkit-animation-name:moveIndeterminate;animation-name:moveIndeterminate;-webkit-animation-timing-function:linear;animation-timing-function:linear;background-color:#ededed;background-image:linear-gradient(to right,#4a4a4a 30%,#ededed 30%);background-position:top left;background-repeat:no-repeat;background-size:150% 150%}.progress:indeterminate::-webkit-progress-bar{background-color:transparent}.progress:indeterminate::-moz-progress-bar{background-color:transparent}.progress:indeterminate::-ms-fill{animation-name:none}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}@-webkit-keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}@keyframes moveIndeterminate{from{background-position:200% 0}to{background-position:-200% 0}}.table{background-color:#fff;color:#363636}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-white,.table th.is-white{background-color:#fff;border-color:#fff;color:#0a0a0a}.table td.is-black,.table th.is-black{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.table td.is-light,.table th.is-light{background-color:#f5f5f5;border-color:#f5f5f5;color:rgba(0,0,0,.7)}.table td.is-dark,.table th.is-dark{background-color:#363636;border-color:#363636;color:#fff}.table td.is-primary,.table th.is-primary{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.table td.is-link,.table th.is-link{background-color:#485fc7;border-color:#485fc7;color:#fff}.table td.is-info,.table th.is-info{background-color:#3e8ed0;border-color:#3e8ed0;color:#fff}.table td.is-success,.table th.is-success{background-color:#48c78e;border-color:#48c78e;color:#fff}.table td.is-warning,.table th.is-warning{background-color:#ffe08a;border-color:#ffe08a;color:rgba(0,0,0,.7)}.table td.is-danger,.table th.is-danger{background-color:#f14668;border-color:#f14668;color:#fff}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table td.is-selected,.table th.is-selected{background-color:#00d1b2;color:#fff}.table td.is-selected a,.table td.is-selected strong,.table th.is-selected a,.table th.is-selected strong{color:currentColor}.table td.is-vcentered,.table th.is-vcentered{vertical-align:middle}.table th{color:#363636}.table th:not([align]){text-align:left}.table tr.is-selected{background-color:#00d1b2;color:#fff}.table tr.is-selected a,.table tr.is-selected strong{color:currentColor}.table tr.is-selected td,.table tr.is-selected th{border-color:#fff;color:currentColor}.table thead{background-color:transparent}.table thead td,.table thead th{border-width:0 0 2px;color:#363636}.table tfoot{background-color:transparent}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#363636}.table tbody{background-color:transparent}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-fullwidth{width:100%}.table.is-hoverable tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover{background-color:#fafafa}.table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(2n){background-color:#f5f5f5}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:not(.is-selected):nth-child(2n){background-color:#fafafa}.table-container{-webkit-overflow-scrolling:touch;overflow:auto;overflow-y:hidden;max-width:100%}.tags{align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-start}.tags .tag{margin-bottom:.5rem}.tags .tag:not(:last-child){margin-right:.5rem}.tags:last-child{margin-bottom:-.5rem}.tags:not(:last-child){margin-bottom:1rem}.tags.are-medium .tag:not(.is-normal):not(.is-large){font-size:1rem}.tags.are-large .tag:not(.is-normal):not(.is-medium){font-size:1.25rem}.tags.is-centered{justify-content:center}.tags.is-centered .tag{margin-right:.25rem;margin-left:.25rem}.tags.is-right{justify-content:flex-end}.tags.is-right .tag:not(:first-child){margin-left:.5rem}.tags.is-right .tag:not(:last-child){margin-right:0}.tags.has-addons .tag{margin-right:0}.tags.has-addons .tag:not(:first-child){margin-left:0;border-top-left-radius:0;border-bottom-left-radius:0}.tags.has-addons .tag:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.tag:not(body){align-items:center;background-color:#f5f5f5;border-radius:4px;color:#4a4a4a;display:inline-flex;font-size:.75rem;height:2em;justify-content:center;line-height:1.5;padding-left:.75em;padding-right:.75em;white-space:nowrap}.tag:not(body) .delete{margin-left:.25rem;margin-right:-.375rem}.tag:not(body).is-white{background-color:#fff;color:#0a0a0a}.tag:not(body).is-black{background-color:#0a0a0a;color:#fff}.tag:not(body).is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.tag:not(body).is-dark{background-color:#363636;color:#fff}.tag:not(body).is-primary{background-color:#00d1b2;color:#fff}.tag:not(body).is-primary.is-light{background-color:#ebfffc;color:#00947e}.tag:not(body).is-link{background-color:#485fc7;color:#fff}.tag:not(body).is-link.is-light{background-color:#eff1fa;color:#3850b7}.tag:not(body).is-info{background-color:#3e8ed0;color:#fff}.tag:not(body).is-info.is-light{background-color:#eff5fb;color:#296fa8}.tag:not(body).is-success{background-color:#48c78e;color:#fff}.tag:not(body).is-success.is-light{background-color:#effaf5;color:#257953}.tag:not(body).is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.tag:not(body).is-warning.is-light{background-color:#fffaeb;color:#946c00}.tag:not(body).is-danger{background-color:#f14668;color:#fff}.tag:not(body).is-danger.is-light{background-color:#feecf0;color:#cc0f35}.tag:not(body).is-normal{font-size:.75rem}.tag:not(body).is-medium{font-size:1rem}.tag:not(body).is-large{font-size:1.25rem}.tag:not(body) .icon:first-child:not(:last-child){margin-left:-.375em;margin-right:.1875em}.tag:not(body) .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:-.375em}.tag:not(body) .icon:first-child:last-child{margin-left:-.375em;margin-right:-.375em}.tag:not(body).is-delete{margin-left:1px;padding:0;position:relative;width:2em}.tag:not(body).is-delete::after,.tag:not(body).is-delete::before{background-color:currentColor;content:"";display:block;left:50%;position:absolute;top:50%;transform:translateX(-50%) translateY(-50%) rotate(45deg);transform-origin:center center}.tag:not(body).is-delete::before{height:1px;width:50%}.tag:not(body).is-delete::after{height:50%;width:1px}.tag:not(body).is-delete:focus,.tag:not(body).is-delete:hover{background-color:#e8e8e8}.tag:not(body).is-delete:active{background-color:#dbdbdb}.tag:not(body).is-rounded{border-radius:9999px}a.tag:hover{text-decoration:underline}.subtitle,.title{word-break:break-word}.subtitle em,.subtitle span,.title em,.title span{font-weight:inherit}.subtitle sub,.title sub{font-size:.75em}.subtitle sup,.title sup{font-size:.75em}.subtitle .tag,.title .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:600;line-height:1.125}.title strong{color:inherit;font-weight:inherit}.title:not(.is-spaced)+.subtitle{margin-top:-1.25rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.title.is-7{font-size:.75rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:400;line-height:1.25}.subtitle strong{color:#363636;font-weight:600}.subtitle:not(.is-spaced)+.title{margin-top:-1.25rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.subtitle.is-7{font-size:.75rem}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.number{align-items:center;background-color:#f5f5f5;border-radius:9999px;display:inline-flex;font-size:1.25rem;height:2em;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.input,.select select,.textarea{background-color:#fff;border-color:#dbdbdb;border-radius:4px;color:#363636}.input::-moz-placeholder,.select select::-moz-placeholder,.textarea::-moz-placeholder{color:rgba(54,54,54,.3)}.input::-webkit-input-placeholder,.select select::-webkit-input-placeholder,.textarea::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input:-moz-placeholder,.select select:-moz-placeholder,.textarea:-moz-placeholder{color:rgba(54,54,54,.3)}.input:-ms-input-placeholder,.select select:-ms-input-placeholder,.textarea:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input:hover,.is-hovered.input,.is-hovered.textarea,.select select.is-hovered,.select select:hover,.textarea:hover{border-color:#b5b5b5}.input:active,.input:focus,.is-active.input,.is-active.textarea,.is-focused.input,.is-focused.textarea,.select select.is-active,.select select.is-focused,.select select:active,.select select:focus,.textarea:active,.textarea:focus{border-color:#485fc7;box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.input[disabled],.select fieldset[disabled] select,.select select[disabled],.textarea[disabled],fieldset[disabled] .input,fieldset[disabled] .select select,fieldset[disabled] .textarea{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.input[disabled]::-moz-placeholder,.select fieldset[disabled] select::-moz-placeholder,.select select[disabled]::-moz-placeholder,.textarea[disabled]::-moz-placeholder,fieldset[disabled] .input::-moz-placeholder,fieldset[disabled] .select select::-moz-placeholder,fieldset[disabled] .textarea::-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]::-webkit-input-placeholder,.select fieldset[disabled] select::-webkit-input-placeholder,.select select[disabled]::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,fieldset[disabled] .input::-webkit-input-placeholder,fieldset[disabled] .select select::-webkit-input-placeholder,fieldset[disabled] .textarea::-webkit-input-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-moz-placeholder,.select fieldset[disabled] select:-moz-placeholder,.select select[disabled]:-moz-placeholder,.textarea[disabled]:-moz-placeholder,fieldset[disabled] .input:-moz-placeholder,fieldset[disabled] .select select:-moz-placeholder,fieldset[disabled] .textarea:-moz-placeholder{color:rgba(122,122,122,.3)}.input[disabled]:-ms-input-placeholder,.select fieldset[disabled] select:-ms-input-placeholder,.select select[disabled]:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,fieldset[disabled] .input:-ms-input-placeholder,fieldset[disabled] .select select:-ms-input-placeholder,fieldset[disabled] .textarea:-ms-input-placeholder{color:rgba(122,122,122,.3)}.input,.textarea{box-shadow:inset 0 .0625em .125em rgba(10,10,10,.05);max-width:100%;width:100%}.input[readonly],.textarea[readonly]{box-shadow:none}.is-white.input,.is-white.textarea{border-color:#fff}.is-white.input:active,.is-white.input:focus,.is-white.is-active.input,.is-white.is-active.textarea,.is-white.is-focused.input,.is-white.is-focused.textarea,.is-white.textarea:active,.is-white.textarea:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.is-black.input,.is-black.textarea{border-color:#0a0a0a}.is-black.input:active,.is-black.input:focus,.is-black.is-active.input,.is-black.is-active.textarea,.is-black.is-focused.input,.is-black.is-focused.textarea,.is-black.textarea:active,.is-black.textarea:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.is-light.input,.is-light.textarea{border-color:#f5f5f5}.is-light.input:active,.is-light.input:focus,.is-light.is-active.input,.is-light.is-active.textarea,.is-light.is-focused.input,.is-light.is-focused.textarea,.is-light.textarea:active,.is-light.textarea:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.is-dark.input,.is-dark.textarea{border-color:#363636}.is-dark.input:active,.is-dark.input:focus,.is-dark.is-active.input,.is-dark.is-active.textarea,.is-dark.is-focused.input,.is-dark.is-focused.textarea,.is-dark.textarea:active,.is-dark.textarea:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.is-primary.input,.is-primary.textarea{border-color:#00d1b2}.is-primary.input:active,.is-primary.input:focus,.is-primary.is-active.input,.is-primary.is-active.textarea,.is-primary.is-focused.input,.is-primary.is-focused.textarea,.is-primary.textarea:active,.is-primary.textarea:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.is-link.input,.is-link.textarea{border-color:#485fc7}.is-link.input:active,.is-link.input:focus,.is-link.is-active.input,.is-link.is-active.textarea,.is-link.is-focused.input,.is-link.is-focused.textarea,.is-link.textarea:active,.is-link.textarea:focus{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.is-info.input,.is-info.textarea{border-color:#3e8ed0}.is-info.input:active,.is-info.input:focus,.is-info.is-active.input,.is-info.is-active.textarea,.is-info.is-focused.input,.is-info.is-focused.textarea,.is-info.textarea:active,.is-info.textarea:focus{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.is-success.input,.is-success.textarea{border-color:#48c78e}.is-success.input:active,.is-success.input:focus,.is-success.is-active.input,.is-success.is-active.textarea,.is-success.is-focused.input,.is-success.is-focused.textarea,.is-success.textarea:active,.is-success.textarea:focus{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.is-warning.input,.is-warning.textarea{border-color:#ffe08a}.is-warning.input:active,.is-warning.input:focus,.is-warning.is-active.input,.is-warning.is-active.textarea,.is-warning.is-focused.input,.is-warning.is-focused.textarea,.is-warning.textarea:active,.is-warning.textarea:focus{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.is-danger.input,.is-danger.textarea{border-color:#f14668}.is-danger.input:active,.is-danger.input:focus,.is-danger.is-active.input,.is-danger.is-active.textarea,.is-danger.is-focused.input,.is-danger.is-focused.textarea,.is-danger.textarea:active,.is-danger.textarea:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.is-small.input,.is-small.textarea{border-radius:2px;font-size:.75rem}.is-medium.input,.is-medium.textarea{font-size:1.25rem}.is-large.input,.is-large.textarea{font-size:1.5rem}.is-fullwidth.input,.is-fullwidth.textarea{display:block;width:100%}.is-inline.input,.is-inline.textarea{display:inline;width:auto}.input.is-rounded{border-radius:9999px;padding-left:calc(calc(.75em - 1px) + .375em);padding-right:calc(calc(.75em - 1px) + .375em)}.input.is-static{background-color:transparent;border-color:transparent;box-shadow:none;padding-left:0;padding-right:0}.textarea{display:block;max-width:100%;min-width:100%;padding:calc(.75em - 1px);resize:vertical}.textarea:not([rows]){max-height:40em;min-height:8em}.textarea[rows]{height:initial}.textarea.has-fixed-size{resize:none}.checkbox,.radio{cursor:pointer;display:inline-block;line-height:1.25;position:relative}.checkbox input,.radio input{cursor:pointer}.checkbox:hover,.radio:hover{color:#363636}.checkbox input[disabled],.checkbox[disabled],.radio input[disabled],.radio[disabled],fieldset[disabled] .checkbox,fieldset[disabled] .radio{color:#7a7a7a;cursor:not-allowed}.radio+.radio{margin-left:.5em}.select{display:inline-block;max-width:100%;position:relative;vertical-align:top}.select:not(.is-multiple){height:2.5em}.select:not(.is-multiple):not(.is-loading)::after{border-color:#485fc7;right:1.125em;z-index:4}.select.is-rounded select{border-radius:9999px;padding-left:1em}.select select{cursor:pointer;display:block;font-size:1em;max-width:100%;outline:0}.select select::-ms-expand{display:none}.select select[disabled]:hover,fieldset[disabled] .select select:hover{border-color:#f5f5f5}.select select:not([multiple]){padding-right:2.5em}.select select[multiple]{height:auto;padding:0}.select select[multiple] option{padding:.5em 1em}.select:not(.is-multiple):not(.is-loading):hover::after{border-color:#363636}.select.is-white:not(:hover)::after{border-color:#fff}.select.is-white select{border-color:#fff}.select.is-white select.is-hovered,.select.is-white select:hover{border-color:#f2f2f2}.select.is-white select.is-active,.select.is-white select.is-focused,.select.is-white select:active,.select.is-white select:focus{box-shadow:0 0 0 .125em rgba(255,255,255,.25)}.select.is-black:not(:hover)::after{border-color:#0a0a0a}.select.is-black select{border-color:#0a0a0a}.select.is-black select.is-hovered,.select.is-black select:hover{border-color:#000}.select.is-black select.is-active,.select.is-black select.is-focused,.select.is-black select:active,.select.is-black select:focus{box-shadow:0 0 0 .125em rgba(10,10,10,.25)}.select.is-light:not(:hover)::after{border-color:#f5f5f5}.select.is-light select{border-color:#f5f5f5}.select.is-light select.is-hovered,.select.is-light select:hover{border-color:#e8e8e8}.select.is-light select.is-active,.select.is-light select.is-focused,.select.is-light select:active,.select.is-light select:focus{box-shadow:0 0 0 .125em rgba(245,245,245,.25)}.select.is-dark:not(:hover)::after{border-color:#363636}.select.is-dark select{border-color:#363636}.select.is-dark select.is-hovered,.select.is-dark select:hover{border-color:#292929}.select.is-dark select.is-active,.select.is-dark select.is-focused,.select.is-dark select:active,.select.is-dark select:focus{box-shadow:0 0 0 .125em rgba(54,54,54,.25)}.select.is-primary:not(:hover)::after{border-color:#00d1b2}.select.is-primary select{border-color:#00d1b2}.select.is-primary select.is-hovered,.select.is-primary select:hover{border-color:#00b89c}.select.is-primary select.is-active,.select.is-primary select.is-focused,.select.is-primary select:active,.select.is-primary select:focus{box-shadow:0 0 0 .125em rgba(0,209,178,.25)}.select.is-link:not(:hover)::after{border-color:#485fc7}.select.is-link select{border-color:#485fc7}.select.is-link select.is-hovered,.select.is-link select:hover{border-color:#3a51bb}.select.is-link select.is-active,.select.is-link select.is-focused,.select.is-link select:active,.select.is-link select:focus{box-shadow:0 0 0 .125em rgba(72,95,199,.25)}.select.is-info:not(:hover)::after{border-color:#3e8ed0}.select.is-info select{border-color:#3e8ed0}.select.is-info select.is-hovered,.select.is-info select:hover{border-color:#3082c5}.select.is-info select.is-active,.select.is-info select.is-focused,.select.is-info select:active,.select.is-info select:focus{box-shadow:0 0 0 .125em rgba(62,142,208,.25)}.select.is-success:not(:hover)::after{border-color:#48c78e}.select.is-success select{border-color:#48c78e}.select.is-success select.is-hovered,.select.is-success select:hover{border-color:#3abb81}.select.is-success select.is-active,.select.is-success select.is-focused,.select.is-success select:active,.select.is-success select:focus{box-shadow:0 0 0 .125em rgba(72,199,142,.25)}.select.is-warning:not(:hover)::after{border-color:#ffe08a}.select.is-warning select{border-color:#ffe08a}.select.is-warning select.is-hovered,.select.is-warning select:hover{border-color:#ffd970}.select.is-warning select.is-active,.select.is-warning select.is-focused,.select.is-warning select:active,.select.is-warning select:focus{box-shadow:0 0 0 .125em rgba(255,224,138,.25)}.select.is-danger:not(:hover)::after{border-color:#f14668}.select.is-danger select{border-color:#f14668}.select.is-danger select.is-hovered,.select.is-danger select:hover{border-color:#ef2e55}.select.is-danger select.is-active,.select.is-danger select.is-focused,.select.is-danger select:active,.select.is-danger select:focus{box-shadow:0 0 0 .125em rgba(241,70,104,.25)}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-disabled::after{border-color:#7a7a7a!important;opacity:.5}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.select.is-loading::after{margin-top:0;position:absolute;right:.625em;top:.625em;transform:none}.select.is-loading.is-small:after{font-size:.75rem}.select.is-loading.is-medium:after{font-size:1.25rem}.select.is-loading.is-large:after{font-size:1.5rem}.file{align-items:stretch;display:flex;justify-content:flex-start;position:relative}.file.is-white .file-cta{background-color:#fff;border-color:transparent;color:#0a0a0a}.file.is-white.is-hovered .file-cta,.file.is-white:hover .file-cta{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.file.is-white.is-focused .file-cta,.file.is-white:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,255,255,.25);color:#0a0a0a}.file.is-white.is-active .file-cta,.file.is-white:active .file-cta{background-color:#f2f2f2;border-color:transparent;color:#0a0a0a}.file.is-black .file-cta{background-color:#0a0a0a;border-color:transparent;color:#fff}.file.is-black.is-hovered .file-cta,.file.is-black:hover .file-cta{background-color:#040404;border-color:transparent;color:#fff}.file.is-black.is-focused .file-cta,.file.is-black:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(10,10,10,.25);color:#fff}.file.is-black.is-active .file-cta,.file.is-black:active .file-cta{background-color:#000;border-color:transparent;color:#fff}.file.is-light .file-cta{background-color:#f5f5f5;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-hovered .file-cta,.file.is-light:hover .file-cta{background-color:#eee;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-light.is-focused .file-cta,.file.is-light:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(245,245,245,.25);color:rgba(0,0,0,.7)}.file.is-light.is-active .file-cta,.file.is-light:active .file-cta{background-color:#e8e8e8;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-dark .file-cta{background-color:#363636;border-color:transparent;color:#fff}.file.is-dark.is-hovered .file-cta,.file.is-dark:hover .file-cta{background-color:#2f2f2f;border-color:transparent;color:#fff}.file.is-dark.is-focused .file-cta,.file.is-dark:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#fff}.file.is-dark.is-active .file-cta,.file.is-dark:active .file-cta{background-color:#292929;border-color:transparent;color:#fff}.file.is-primary .file-cta{background-color:#00d1b2;border-color:transparent;color:#fff}.file.is-primary.is-hovered .file-cta,.file.is-primary:hover .file-cta{background-color:#00c4a7;border-color:transparent;color:#fff}.file.is-primary.is-focused .file-cta,.file.is-primary:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.file.is-primary.is-active .file-cta,.file.is-primary:active .file-cta{background-color:#00b89c;border-color:transparent;color:#fff}.file.is-link .file-cta{background-color:#485fc7;border-color:transparent;color:#fff}.file.is-link.is-hovered .file-cta,.file.is-link:hover .file-cta{background-color:#3e56c4;border-color:transparent;color:#fff}.file.is-link.is-focused .file-cta,.file.is-link:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,95,199,.25);color:#fff}.file.is-link.is-active .file-cta,.file.is-link:active .file-cta{background-color:#3a51bb;border-color:transparent;color:#fff}.file.is-info .file-cta{background-color:#3e8ed0;border-color:transparent;color:#fff}.file.is-info.is-hovered .file-cta,.file.is-info:hover .file-cta{background-color:#3488ce;border-color:transparent;color:#fff}.file.is-info.is-focused .file-cta,.file.is-info:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(62,142,208,.25);color:#fff}.file.is-info.is-active .file-cta,.file.is-info:active .file-cta{background-color:#3082c5;border-color:transparent;color:#fff}.file.is-success .file-cta{background-color:#48c78e;border-color:transparent;color:#fff}.file.is-success.is-hovered .file-cta,.file.is-success:hover .file-cta{background-color:#3ec487;border-color:transparent;color:#fff}.file.is-success.is-focused .file-cta,.file.is-success:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(72,199,142,.25);color:#fff}.file.is-success.is-active .file-cta,.file.is-success:active .file-cta{background-color:#3abb81;border-color:transparent;color:#fff}.file.is-warning .file-cta{background-color:#ffe08a;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-hovered .file-cta,.file.is-warning:hover .file-cta{background-color:#ffdc7d;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-warning.is-focused .file-cta,.file.is-warning:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(255,224,138,.25);color:rgba(0,0,0,.7)}.file.is-warning.is-active .file-cta,.file.is-warning:active .file-cta{background-color:#ffd970;border-color:transparent;color:rgba(0,0,0,.7)}.file.is-danger .file-cta{background-color:#f14668;border-color:transparent;color:#fff}.file.is-danger.is-hovered .file-cta,.file.is-danger:hover .file-cta{background-color:#f03a5f;border-color:transparent;color:#fff}.file.is-danger.is-focused .file-cta,.file.is-danger:focus .file-cta{border-color:transparent;box-shadow:0 0 .5em rgba(241,70,104,.25);color:#fff}.file.is-danger.is-active .file-cta,.file.is-danger:active .file-cta{background-color:#ef2e55;border-color:transparent;color:#fff}.file.is-small{font-size:.75rem}.file.is-normal{font-size:1rem}.file.is-medium{font-size:1.25rem}.file.is-medium .file-icon .fa{font-size:21px}.file.is-large{font-size:1.5rem}.file.is-large .file-icon .fa{font-size:28px}.file.has-name .file-cta{border-bottom-right-radius:0;border-top-right-radius:0}.file.has-name .file-name{border-bottom-left-radius:0;border-top-left-radius:0}.file.has-name.is-empty .file-cta{border-radius:4px}.file.has-name.is-empty .file-name{display:none}.file.is-boxed .file-label{flex-direction:column}.file.is-boxed .file-cta{flex-direction:column;height:auto;padding:1em 3em}.file.is-boxed .file-name{border-width:0 1px 1px}.file.is-boxed .file-icon{height:1.5em;width:1.5em}.file.is-boxed .file-icon .fa{font-size:21px}.file.is-boxed.is-small .file-icon .fa{font-size:14px}.file.is-boxed.is-medium .file-icon .fa{font-size:28px}.file.is-boxed.is-large .file-icon .fa{font-size:35px}.file.is-boxed.has-name .file-cta{border-radius:4px 4px 0 0}.file.is-boxed.has-name .file-name{border-radius:0 0 4px 4px;border-width:0 1px 1px}.file.is-centered{justify-content:center}.file.is-fullwidth .file-label{width:100%}.file.is-fullwidth .file-name{flex-grow:1;max-width:none}.file.is-right{justify-content:flex-end}.file.is-right .file-cta{border-radius:0 4px 4px 0}.file.is-right .file-name{border-radius:4px 0 0 4px;border-width:1px 0 1px 1px;order:-1}.file-label{align-items:stretch;display:flex;cursor:pointer;justify-content:flex-start;overflow:hidden;position:relative}.file-label:hover .file-cta{background-color:#eee;color:#363636}.file-label:hover .file-name{border-color:#d5d5d5}.file-label:active .file-cta{background-color:#e8e8e8;color:#363636}.file-label:active .file-name{border-color:#cfcfcf}.file-input{height:100%;left:0;opacity:0;outline:0;position:absolute;top:0;width:100%}.file-cta,.file-name{border-color:#dbdbdb;border-radius:4px;font-size:1em;padding-left:1em;padding-right:1em;white-space:nowrap}.file-cta{background-color:#f5f5f5;color:#4a4a4a}.file-name{border-color:#dbdbdb;border-style:solid;border-width:1px 1px 1px 0;display:block;max-width:16em;overflow:hidden;text-align:inherit;text-overflow:ellipsis}.file-icon{align-items:center;display:flex;height:1em;justify-content:center;margin-right:.5em;width:1em}.file-icon .fa{font-size:14px}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.label.is-small{font-size:.75rem}.label.is-medium{font-size:1.25rem}.label.is-large{font-size:1.5rem}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-link{color:#485fc7}.help.is-info{color:#3e8ed0}.help.is-success{color:#48c78e}.help.is-warning{color:#ffe08a}.help.is-danger{color:#f14668}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:flex;justify-content:flex-start}.field.has-addons .control:not(:last-child){margin-right:-1px}.field.has-addons .control:not(:first-child):not(:last-child) .button,.field.has-addons .control:not(:first-child):not(:last-child) .input,.field.has-addons .control:not(:first-child):not(:last-child) .select select{border-radius:0}.field.has-addons .control:first-child:not(:only-child) .button,.field.has-addons .control:first-child:not(:only-child) .input,.field.has-addons .control:first-child:not(:only-child) .select select{border-bottom-right-radius:0;border-top-right-radius:0}.field.has-addons .control:last-child:not(:only-child) .button,.field.has-addons .control:last-child:not(:only-child) .input,.field.has-addons .control:last-child:not(:only-child) .select select{border-bottom-left-radius:0;border-top-left-radius:0}.field.has-addons .control .button:not([disabled]).is-hovered,.field.has-addons .control .button:not([disabled]):hover,.field.has-addons .control .input:not([disabled]).is-hovered,.field.has-addons .control .input:not([disabled]):hover,.field.has-addons .control .select select:not([disabled]).is-hovered,.field.has-addons .control .select select:not([disabled]):hover{z-index:2}.field.has-addons .control .button:not([disabled]).is-active,.field.has-addons .control .button:not([disabled]).is-focused,.field.has-addons .control .button:not([disabled]):active,.field.has-addons .control .button:not([disabled]):focus,.field.has-addons .control .input:not([disabled]).is-active,.field.has-addons .control .input:not([disabled]).is-focused,.field.has-addons .control .input:not([disabled]):active,.field.has-addons .control .input:not([disabled]):focus,.field.has-addons .control .select select:not([disabled]).is-active,.field.has-addons .control .select select:not([disabled]).is-focused,.field.has-addons .control .select select:not([disabled]):active,.field.has-addons .control .select select:not([disabled]):focus{z-index:3}.field.has-addons .control .button:not([disabled]).is-active:hover,.field.has-addons .control .button:not([disabled]).is-focused:hover,.field.has-addons .control .button:not([disabled]):active:hover,.field.has-addons .control .button:not([disabled]):focus:hover,.field.has-addons .control .input:not([disabled]).is-active:hover,.field.has-addons .control .input:not([disabled]).is-focused:hover,.field.has-addons .control .input:not([disabled]):active:hover,.field.has-addons .control .input:not([disabled]):focus:hover,.field.has-addons .control .select select:not([disabled]).is-active:hover,.field.has-addons .control .select select:not([disabled]).is-focused:hover,.field.has-addons .control .select select:not([disabled]):active:hover,.field.has-addons .control .select select:not([disabled]):focus:hover{z-index:4}.field.has-addons .control.is-expanded{flex-grow:1;flex-shrink:1}.field.has-addons.has-addons-centered{justify-content:center}.field.has-addons.has-addons-right{justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{flex-grow:1;flex-shrink:0}.field.is-grouped{display:flex;justify-content:flex-start}.field.is-grouped>.control{flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{flex-grow:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{justify-content:center}.field.is-grouped.is-grouped-right{justify-content:flex-end}.field.is-grouped.is-grouped-multiline{flex-wrap:wrap}.field.is-grouped.is-grouped-multiline>.control:last-child,.field.is-grouped.is-grouped-multiline>.control:not(:last-child){margin-bottom:.75rem}.field.is-grouped.is-grouped-multiline:last-child{margin-bottom:-.75rem}.field.is-grouped.is-grouped-multiline:not(:last-child){margin-bottom:0}@media screen and (min-width:769px),print{.field.is-horizontal{display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width:768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width:769px),print{.field-label{flex-basis:0;flex-grow:1;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}.field-body .field .field{margin-bottom:0}@media screen and (min-width:769px),print{.field-body{display:flex;flex-basis:0;flex-grow:5;flex-shrink:1}.field-body .field{margin-bottom:0}.field-body>.field{flex-shrink:1}.field-body>.field:not(.is-narrow){flex-grow:1}.field-body>.field:not(:last-child){margin-right:.75rem}}.control{box-sizing:border-box;clear:both;font-size:1rem;position:relative;text-align:inherit}.control.has-icons-left .input:focus~.icon,.control.has-icons-left .select:focus~.icon,.control.has-icons-right .input:focus~.icon,.control.has-icons-right .select:focus~.icon{color:#4a4a4a}.control.has-icons-left .input.is-small~.icon,.control.has-icons-left .select.is-small~.icon,.control.has-icons-right .input.is-small~.icon,.control.has-icons-right .select.is-small~.icon{font-size:.75rem}.control.has-icons-left .input.is-medium~.icon,.control.has-icons-left .select.is-medium~.icon,.control.has-icons-right .input.is-medium~.icon,.control.has-icons-right .select.is-medium~.icon{font-size:1.25rem}.control.has-icons-left .input.is-large~.icon,.control.has-icons-left .select.is-large~.icon,.control.has-icons-right .input.is-large~.icon,.control.has-icons-right .select.is-large~.icon{font-size:1.5rem}.control.has-icons-left .icon,.control.has-icons-right .icon{color:#dbdbdb;height:2.5em;pointer-events:none;position:absolute;top:0;width:2.5em;z-index:4}.control.has-icons-left .input,.control.has-icons-left .select select{padding-left:2.5em}.control.has-icons-left .icon.is-left{left:0}.control.has-icons-right .input,.control.has-icons-right .select select{padding-right:2.5em}.control.has-icons-right .icon.is-right{right:0}.control.is-loading::after{position:absolute!important;right:.625em;top:.625em;z-index:4}.control.is-loading.is-small:after{font-size:.75rem}.control.is-loading.is-medium:after{font-size:1.25rem}.control.is-loading.is-large:after{font-size:1.5rem}.breadcrumb{font-size:1rem;white-space:nowrap}.breadcrumb a{align-items:center;color:#485fc7;display:flex;justify-content:center;padding:0 .75em}.breadcrumb a:hover{color:#363636}.breadcrumb li{align-items:center;display:flex}.breadcrumb li:first-child a{padding-left:0}.breadcrumb li.is-active a{color:#363636;cursor:default;pointer-events:none}.breadcrumb li+li::before{color:#b5b5b5;content:"\0002f"}.breadcrumb ol,.breadcrumb ul{align-items:flex-start;display:flex;flex-wrap:wrap;justify-content:flex-start}.breadcrumb .icon:first-child{margin-right:.5em}.breadcrumb .icon:last-child{margin-left:.5em}.breadcrumb.is-centered ol,.breadcrumb.is-centered ul{justify-content:center}.breadcrumb.is-right ol,.breadcrumb.is-right ul{justify-content:flex-end}.breadcrumb.is-small{font-size:.75rem}.breadcrumb.is-medium{font-size:1.25rem}.breadcrumb.is-large{font-size:1.5rem}.breadcrumb.has-arrow-separator li+li::before{content:"\02192"}.breadcrumb.has-bullet-separator li+li::before{content:"\02022"}.breadcrumb.has-dot-separator li+li::before{content:"\000b7"}.breadcrumb.has-succeeds-separator li+li::before{content:"\0227B"}.card{background-color:#fff;border-radius:.25rem;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);color:#4a4a4a;max-width:100%;position:relative}.card-content:first-child,.card-footer:first-child,.card-header:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-content:last-child,.card-footer:last-child,.card-header:last-child{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-header{background-color:transparent;align-items:stretch;box-shadow:0 .125em .25em rgba(10,10,10,.1);display:flex}.card-header-title{align-items:center;color:#363636;display:flex;flex-grow:1;font-weight:700;padding:.75rem 1rem}.card-header-title.is-centered{justify-content:center}.card-header-icon{-moz-appearance:none;-webkit-appearance:none;appearance:none;background:0 0;border:none;color:currentColor;font-family:inherit;font-size:1em;margin:0;padding:0;align-items:center;cursor:pointer;display:flex;justify-content:center;padding:.75rem 1rem}.card-image{display:block;position:relative}.card-image:first-child img{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-image:last-child img{border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.card-content{background-color:transparent;padding:1.5rem}.card-footer{background-color:transparent;border-top:1px solid #ededed;align-items:stretch;display:flex}.card-footer-item{align-items:center;display:flex;flex-basis:0;flex-grow:1;flex-shrink:0;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #ededed}.card .media:not(:last-child){margin-bottom:1.5rem}.dropdown{display:inline-flex;position:relative;vertical-align:top}.dropdown.is-active .dropdown-menu,.dropdown.is-hoverable:hover .dropdown-menu{display:block}.dropdown.is-right .dropdown-menu{left:auto;right:0}.dropdown.is-up .dropdown-menu{bottom:100%;padding-bottom:4px;padding-top:initial;top:auto}.dropdown-menu{display:none;left:0;min-width:12rem;padding-top:4px;position:absolute;top:100%;z-index:20}.dropdown-content{background-color:#fff;border-radius:4px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);padding-bottom:.5rem;padding-top:.5rem}.dropdown-item{color:#4a4a4a;display:block;font-size:.875rem;line-height:1.5;padding:.375rem 1rem;position:relative}a.dropdown-item,button.dropdown-item{padding-right:3rem;text-align:inherit;white-space:nowrap;width:100%}a.dropdown-item:hover,button.dropdown-item:hover{background-color:#f5f5f5;color:#0a0a0a}a.dropdown-item.is-active,button.dropdown-item.is-active{background-color:#485fc7;color:#fff}.dropdown-divider{background-color:#ededed;border:none;display:block;height:1px;margin:.5rem 0}.level{align-items:center;justify-content:space-between}.level code{border-radius:4px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0;margin-right:.75rem}.level.is-mobile .level-item:not(.is-narrow){flex-grow:1}@media screen and (min-width:769px),print{.level{display:flex}.level>.level-item:not(.is-narrow){flex-grow:1}}.level-item{align-items:center;display:flex;flex-basis:auto;flex-grow:0;flex-shrink:0;justify-content:center}.level-item .subtitle,.level-item .title{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{flex-grow:1}@media screen and (min-width:769px),print{.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}}.level-left{align-items:center;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width:769px),print{.level-left{display:flex}}.level-right{align-items:center;justify-content:flex-end}@media screen and (min-width:769px),print{.level-right{display:flex}}.media{align-items:flex-start;display:flex;text-align:inherit}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.media-left,.media-right{flex-basis:auto;flex-grow:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{flex-basis:auto;flex-grow:1;flex-shrink:1;text-align:inherit}@media screen and (max-width:768px){.media-content{overflow-x:auto}}.menu{font-size:1rem}.menu.is-small{font-size:.75rem}.menu.is-medium{font-size:1.25rem}.menu.is-large{font-size:1.5rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#363636}.menu-list a.is-active{background-color:#485fc7;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.75em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:4px;font-size:1rem}.message strong{color:currentColor}.message a:not(.button):not(.tag):not(.dropdown-item){color:currentColor;text-decoration:underline}.message.is-small{font-size:.75rem}.message.is-medium{font-size:1.25rem}.message.is-large{font-size:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.message.is-light .message-body{border-color:#f5f5f5}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#fff}.message.is-dark .message-body{border-color:#363636}.message.is-primary{background-color:#ebfffc}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#00947e}.message.is-link{background-color:#eff1fa}.message.is-link .message-header{background-color:#485fc7;color:#fff}.message.is-link .message-body{border-color:#485fc7;color:#3850b7}.message.is-info{background-color:#eff5fb}.message.is-info .message-header{background-color:#3e8ed0;color:#fff}.message.is-info .message-body{border-color:#3e8ed0;color:#296fa8}.message.is-success{background-color:#effaf5}.message.is-success .message-header{background-color:#48c78e;color:#fff}.message.is-success .message-body{border-color:#48c78e;color:#257953}.message.is-warning{background-color:#fffaeb}.message.is-warning .message-header{background-color:#ffe08a;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffe08a;color:#946c00}.message.is-danger{background-color:#feecf0}.message.is-danger .message-header{background-color:#f14668;color:#fff}.message.is-danger .message-body{border-color:#f14668;color:#cc0f35}.message-header{align-items:center;background-color:#4a4a4a;border-radius:4px 4px 0 0;color:#fff;display:flex;font-weight:700;justify-content:space-between;line-height:1.25;padding:.75em 1em;position:relative}.message-header .delete{flex-grow:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-width:0;border-top-left-radius:0;border-top-right-radius:0}.message-body{border-color:#dbdbdb;border-radius:4px;border-style:solid;border-width:0 0 0 4px;color:#4a4a4a;padding:1.25em 1.5em}.message-body code,.message-body pre{background-color:#fff}.message-body pre code{background-color:transparent}.modal{align-items:center;display:none;flex-direction:column;justify-content:center;overflow:hidden;position:fixed;z-index:40}.modal.is-active{display:flex}.modal-background{background-color:rgba(10,10,10,.86)}.modal-card,.modal-content{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width:769px){.modal-card,.modal-content{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{background:0 0;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-card{display:flex;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden;-ms-overflow-y:visible}.modal-card-foot,.modal-card-head{align-items:center;background-color:#f5f5f5;display:flex;flex-shrink:0;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:6px;border-top-right-radius:6px}.modal-card-title{color:#363636;flex-grow:1;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:.5em}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;flex-grow:1;flex-shrink:1;overflow:auto;padding:20px}.navbar{background-color:#fff;min-height:3.25rem;position:relative;z-index:30}.navbar.is-white{background-color:#fff;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link,.navbar.is-white .navbar-brand>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link.is-active,.navbar.is-white .navbar-brand .navbar-link:focus,.navbar.is-white .navbar-brand .navbar-link:hover,.navbar.is-white .navbar-brand>a.navbar-item.is-active,.navbar.is-white .navbar-brand>a.navbar-item:focus,.navbar.is-white .navbar-brand>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-brand .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-burger{color:#0a0a0a}@media screen and (min-width:1024px){.navbar.is-white .navbar-end .navbar-link,.navbar.is-white .navbar-end>.navbar-item,.navbar.is-white .navbar-start .navbar-link,.navbar.is-white .navbar-start>.navbar-item{color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link.is-active,.navbar.is-white .navbar-end .navbar-link:focus,.navbar.is-white .navbar-end .navbar-link:hover,.navbar.is-white .navbar-end>a.navbar-item.is-active,.navbar.is-white .navbar-end>a.navbar-item:focus,.navbar.is-white .navbar-end>a.navbar-item:hover,.navbar.is-white .navbar-start .navbar-link.is-active,.navbar.is-white .navbar-start .navbar-link:focus,.navbar.is-white .navbar-start .navbar-link:hover,.navbar.is-white .navbar-start>a.navbar-item.is-active,.navbar.is-white .navbar-start>a.navbar-item:focus,.navbar.is-white .navbar-start>a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-end .navbar-link::after,.navbar.is-white .navbar-start .navbar-link::after{border-color:#0a0a0a}.navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-white .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-white .navbar-item.has-dropdown:hover .navbar-link{background-color:#f2f2f2;color:#0a0a0a}.navbar.is-white .navbar-dropdown a.navbar-item.is-active{background-color:#fff;color:#0a0a0a}}.navbar.is-black{background-color:#0a0a0a;color:#fff}.navbar.is-black .navbar-brand .navbar-link,.navbar.is-black .navbar-brand>.navbar-item{color:#fff}.navbar.is-black .navbar-brand .navbar-link.is-active,.navbar.is-black .navbar-brand .navbar-link:focus,.navbar.is-black .navbar-brand .navbar-link:hover,.navbar.is-black .navbar-brand>a.navbar-item.is-active,.navbar.is-black .navbar-brand>a.navbar-item:focus,.navbar.is-black .navbar-brand>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-black .navbar-end .navbar-link,.navbar.is-black .navbar-end>.navbar-item,.navbar.is-black .navbar-start .navbar-link,.navbar.is-black .navbar-start>.navbar-item{color:#fff}.navbar.is-black .navbar-end .navbar-link.is-active,.navbar.is-black .navbar-end .navbar-link:focus,.navbar.is-black .navbar-end .navbar-link:hover,.navbar.is-black .navbar-end>a.navbar-item.is-active,.navbar.is-black .navbar-end>a.navbar-item:focus,.navbar.is-black .navbar-end>a.navbar-item:hover,.navbar.is-black .navbar-start .navbar-link.is-active,.navbar.is-black .navbar-start .navbar-link:focus,.navbar.is-black .navbar-start .navbar-link:hover,.navbar.is-black .navbar-start>a.navbar-item.is-active,.navbar.is-black .navbar-start>a.navbar-item:focus,.navbar.is-black .navbar-start>a.navbar-item:hover{background-color:#000;color:#fff}.navbar.is-black .navbar-end .navbar-link::after,.navbar.is-black .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-black .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-black .navbar-item.has-dropdown:hover .navbar-link{background-color:#000;color:#fff}.navbar.is-black .navbar-dropdown a.navbar-item.is-active{background-color:#0a0a0a;color:#fff}}.navbar.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link,.navbar.is-light .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link.is-active,.navbar.is-light .navbar-brand .navbar-link:focus,.navbar.is-light .navbar-brand .navbar-link:hover,.navbar.is-light .navbar-brand>a.navbar-item.is-active,.navbar.is-light .navbar-brand>a.navbar-item:focus,.navbar.is-light .navbar-brand>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-light .navbar-end .navbar-link,.navbar.is-light .navbar-end>.navbar-item,.navbar.is-light .navbar-start .navbar-link,.navbar.is-light .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link.is-active,.navbar.is-light .navbar-end .navbar-link:focus,.navbar.is-light .navbar-end .navbar-link:hover,.navbar.is-light .navbar-end>a.navbar-item.is-active,.navbar.is-light .navbar-end>a.navbar-item:focus,.navbar.is-light .navbar-end>a.navbar-item:hover,.navbar.is-light .navbar-start .navbar-link.is-active,.navbar.is-light .navbar-start .navbar-link:focus,.navbar.is-light .navbar-start .navbar-link:hover,.navbar.is-light .navbar-start>a.navbar-item.is-active,.navbar.is-light .navbar-start>a.navbar-item:focus,.navbar.is-light .navbar-start>a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-end .navbar-link::after,.navbar.is-light .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-light .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-light .navbar-item.has-dropdown:hover .navbar-link{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.navbar.is-light .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:rgba(0,0,0,.7)}}.navbar.is-dark{background-color:#363636;color:#fff}.navbar.is-dark .navbar-brand .navbar-link,.navbar.is-dark .navbar-brand>.navbar-item{color:#fff}.navbar.is-dark .navbar-brand .navbar-link.is-active,.navbar.is-dark .navbar-brand .navbar-link:focus,.navbar.is-dark .navbar-brand .navbar-link:hover,.navbar.is-dark .navbar-brand>a.navbar-item.is-active,.navbar.is-dark .navbar-brand>a.navbar-item:focus,.navbar.is-dark .navbar-brand>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-dark .navbar-end .navbar-link,.navbar.is-dark .navbar-end>.navbar-item,.navbar.is-dark .navbar-start .navbar-link,.navbar.is-dark .navbar-start>.navbar-item{color:#fff}.navbar.is-dark .navbar-end .navbar-link.is-active,.navbar.is-dark .navbar-end .navbar-link:focus,.navbar.is-dark .navbar-end .navbar-link:hover,.navbar.is-dark .navbar-end>a.navbar-item.is-active,.navbar.is-dark .navbar-end>a.navbar-item:focus,.navbar.is-dark .navbar-end>a.navbar-item:hover,.navbar.is-dark .navbar-start .navbar-link.is-active,.navbar.is-dark .navbar-start .navbar-link:focus,.navbar.is-dark .navbar-start .navbar-link:hover,.navbar.is-dark .navbar-start>a.navbar-item.is-active,.navbar.is-dark .navbar-start>a.navbar-item:focus,.navbar.is-dark .navbar-start>a.navbar-item:hover{background-color:#292929;color:#fff}.navbar.is-dark .navbar-end .navbar-link::after,.navbar.is-dark .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link{background-color:#292929;color:#fff}.navbar.is-dark .navbar-dropdown a.navbar-item.is-active{background-color:#363636;color:#fff}}.navbar.is-primary{background-color:#00d1b2;color:#fff}.navbar.is-primary .navbar-brand .navbar-link,.navbar.is-primary .navbar-brand>.navbar-item{color:#fff}.navbar.is-primary .navbar-brand .navbar-link.is-active,.navbar.is-primary .navbar-brand .navbar-link:focus,.navbar.is-primary .navbar-brand .navbar-link:hover,.navbar.is-primary .navbar-brand>a.navbar-item.is-active,.navbar.is-primary .navbar-brand>a.navbar-item:focus,.navbar.is-primary .navbar-brand>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-primary .navbar-end .navbar-link,.navbar.is-primary .navbar-end>.navbar-item,.navbar.is-primary .navbar-start .navbar-link,.navbar.is-primary .navbar-start>.navbar-item{color:#fff}.navbar.is-primary .navbar-end .navbar-link.is-active,.navbar.is-primary .navbar-end .navbar-link:focus,.navbar.is-primary .navbar-end .navbar-link:hover,.navbar.is-primary .navbar-end>a.navbar-item.is-active,.navbar.is-primary .navbar-end>a.navbar-item:focus,.navbar.is-primary .navbar-end>a.navbar-item:hover,.navbar.is-primary .navbar-start .navbar-link.is-active,.navbar.is-primary .navbar-start .navbar-link:focus,.navbar.is-primary .navbar-start .navbar-link:hover,.navbar.is-primary .navbar-start>a.navbar-item.is-active,.navbar.is-primary .navbar-start>a.navbar-item:focus,.navbar.is-primary .navbar-start>a.navbar-item:hover{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-end .navbar-link::after,.navbar.is-primary .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link{background-color:#00b89c;color:#fff}.navbar.is-primary .navbar-dropdown a.navbar-item.is-active{background-color:#00d1b2;color:#fff}}.navbar.is-link{background-color:#485fc7;color:#fff}.navbar.is-link .navbar-brand .navbar-link,.navbar.is-link .navbar-brand>.navbar-item{color:#fff}.navbar.is-link .navbar-brand .navbar-link.is-active,.navbar.is-link .navbar-brand .navbar-link:focus,.navbar.is-link .navbar-brand .navbar-link:hover,.navbar.is-link .navbar-brand>a.navbar-item.is-active,.navbar.is-link .navbar-brand>a.navbar-item:focus,.navbar.is-link .navbar-brand>a.navbar-item:hover{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-link .navbar-end .navbar-link,.navbar.is-link .navbar-end>.navbar-item,.navbar.is-link .navbar-start .navbar-link,.navbar.is-link .navbar-start>.navbar-item{color:#fff}.navbar.is-link .navbar-end .navbar-link.is-active,.navbar.is-link .navbar-end .navbar-link:focus,.navbar.is-link .navbar-end .navbar-link:hover,.navbar.is-link .navbar-end>a.navbar-item.is-active,.navbar.is-link .navbar-end>a.navbar-item:focus,.navbar.is-link .navbar-end>a.navbar-item:hover,.navbar.is-link .navbar-start .navbar-link.is-active,.navbar.is-link .navbar-start .navbar-link:focus,.navbar.is-link .navbar-start .navbar-link:hover,.navbar.is-link .navbar-start>a.navbar-item.is-active,.navbar.is-link .navbar-start>a.navbar-item:focus,.navbar.is-link .navbar-start>a.navbar-item:hover{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-end .navbar-link::after,.navbar.is-link .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-link .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-link .navbar-item.has-dropdown:hover .navbar-link{background-color:#3a51bb;color:#fff}.navbar.is-link .navbar-dropdown a.navbar-item.is-active{background-color:#485fc7;color:#fff}}.navbar.is-info{background-color:#3e8ed0;color:#fff}.navbar.is-info .navbar-brand .navbar-link,.navbar.is-info .navbar-brand>.navbar-item{color:#fff}.navbar.is-info .navbar-brand .navbar-link.is-active,.navbar.is-info .navbar-brand .navbar-link:focus,.navbar.is-info .navbar-brand .navbar-link:hover,.navbar.is-info .navbar-brand>a.navbar-item.is-active,.navbar.is-info .navbar-brand>a.navbar-item:focus,.navbar.is-info .navbar-brand>a.navbar-item:hover{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-info .navbar-end .navbar-link,.navbar.is-info .navbar-end>.navbar-item,.navbar.is-info .navbar-start .navbar-link,.navbar.is-info .navbar-start>.navbar-item{color:#fff}.navbar.is-info .navbar-end .navbar-link.is-active,.navbar.is-info .navbar-end .navbar-link:focus,.navbar.is-info .navbar-end .navbar-link:hover,.navbar.is-info .navbar-end>a.navbar-item.is-active,.navbar.is-info .navbar-end>a.navbar-item:focus,.navbar.is-info .navbar-end>a.navbar-item:hover,.navbar.is-info .navbar-start .navbar-link.is-active,.navbar.is-info .navbar-start .navbar-link:focus,.navbar.is-info .navbar-start .navbar-link:hover,.navbar.is-info .navbar-start>a.navbar-item.is-active,.navbar.is-info .navbar-start>a.navbar-item:focus,.navbar.is-info .navbar-start>a.navbar-item:hover{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-end .navbar-link::after,.navbar.is-info .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-info .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-info .navbar-item.has-dropdown:hover .navbar-link{background-color:#3082c5;color:#fff}.navbar.is-info .navbar-dropdown a.navbar-item.is-active{background-color:#3e8ed0;color:#fff}}.navbar.is-success{background-color:#48c78e;color:#fff}.navbar.is-success .navbar-brand .navbar-link,.navbar.is-success .navbar-brand>.navbar-item{color:#fff}.navbar.is-success .navbar-brand .navbar-link.is-active,.navbar.is-success .navbar-brand .navbar-link:focus,.navbar.is-success .navbar-brand .navbar-link:hover,.navbar.is-success .navbar-brand>a.navbar-item.is-active,.navbar.is-success .navbar-brand>a.navbar-item:focus,.navbar.is-success .navbar-brand>a.navbar-item:hover{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-success .navbar-end .navbar-link,.navbar.is-success .navbar-end>.navbar-item,.navbar.is-success .navbar-start .navbar-link,.navbar.is-success .navbar-start>.navbar-item{color:#fff}.navbar.is-success .navbar-end .navbar-link.is-active,.navbar.is-success .navbar-end .navbar-link:focus,.navbar.is-success .navbar-end .navbar-link:hover,.navbar.is-success .navbar-end>a.navbar-item.is-active,.navbar.is-success .navbar-end>a.navbar-item:focus,.navbar.is-success .navbar-end>a.navbar-item:hover,.navbar.is-success .navbar-start .navbar-link.is-active,.navbar.is-success .navbar-start .navbar-link:focus,.navbar.is-success .navbar-start .navbar-link:hover,.navbar.is-success .navbar-start>a.navbar-item.is-active,.navbar.is-success .navbar-start>a.navbar-item:focus,.navbar.is-success .navbar-start>a.navbar-item:hover{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-end .navbar-link::after,.navbar.is-success .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-success .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-success .navbar-item.has-dropdown:hover .navbar-link{background-color:#3abb81;color:#fff}.navbar.is-success .navbar-dropdown a.navbar-item.is-active{background-color:#48c78e;color:#fff}}.navbar.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link,.navbar.is-warning .navbar-brand>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link.is-active,.navbar.is-warning .navbar-brand .navbar-link:focus,.navbar.is-warning .navbar-brand .navbar-link:hover,.navbar.is-warning .navbar-brand>a.navbar-item.is-active,.navbar.is-warning .navbar-brand>a.navbar-item:focus,.navbar.is-warning .navbar-brand>a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-brand .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-burger{color:rgba(0,0,0,.7)}@media screen and (min-width:1024px){.navbar.is-warning .navbar-end .navbar-link,.navbar.is-warning .navbar-end>.navbar-item,.navbar.is-warning .navbar-start .navbar-link,.navbar.is-warning .navbar-start>.navbar-item{color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link.is-active,.navbar.is-warning .navbar-end .navbar-link:focus,.navbar.is-warning .navbar-end .navbar-link:hover,.navbar.is-warning .navbar-end>a.navbar-item.is-active,.navbar.is-warning .navbar-end>a.navbar-item:focus,.navbar.is-warning .navbar-end>a.navbar-item:hover,.navbar.is-warning .navbar-start .navbar-link.is-active,.navbar.is-warning .navbar-start .navbar-link:focus,.navbar.is-warning .navbar-start .navbar-link:hover,.navbar.is-warning .navbar-start>a.navbar-item.is-active,.navbar.is-warning .navbar-start>a.navbar-item:focus,.navbar.is-warning .navbar-start>a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-end .navbar-link::after,.navbar.is-warning .navbar-start .navbar-link::after{border-color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link{background-color:#ffd970;color:rgba(0,0,0,.7)}.navbar.is-warning .navbar-dropdown a.navbar-item.is-active{background-color:#ffe08a;color:rgba(0,0,0,.7)}}.navbar.is-danger{background-color:#f14668;color:#fff}.navbar.is-danger .navbar-brand .navbar-link,.navbar.is-danger .navbar-brand>.navbar-item{color:#fff}.navbar.is-danger .navbar-brand .navbar-link.is-active,.navbar.is-danger .navbar-brand .navbar-link:focus,.navbar.is-danger .navbar-brand .navbar-link:hover,.navbar.is-danger .navbar-brand>a.navbar-item.is-active,.navbar.is-danger .navbar-brand>a.navbar-item:focus,.navbar.is-danger .navbar-brand>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-brand .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-burger{color:#fff}@media screen and (min-width:1024px){.navbar.is-danger .navbar-end .navbar-link,.navbar.is-danger .navbar-end>.navbar-item,.navbar.is-danger .navbar-start .navbar-link,.navbar.is-danger .navbar-start>.navbar-item{color:#fff}.navbar.is-danger .navbar-end .navbar-link.is-active,.navbar.is-danger .navbar-end .navbar-link:focus,.navbar.is-danger .navbar-end .navbar-link:hover,.navbar.is-danger .navbar-end>a.navbar-item.is-active,.navbar.is-danger .navbar-end>a.navbar-item:focus,.navbar.is-danger .navbar-end>a.navbar-item:hover,.navbar.is-danger .navbar-start .navbar-link.is-active,.navbar.is-danger .navbar-start .navbar-link:focus,.navbar.is-danger .navbar-start .navbar-link:hover,.navbar.is-danger .navbar-start>a.navbar-item.is-active,.navbar.is-danger .navbar-start>a.navbar-item:focus,.navbar.is-danger .navbar-start>a.navbar-item:hover{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-end .navbar-link::after,.navbar.is-danger .navbar-start .navbar-link::after{border-color:#fff}.navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link,.navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link{background-color:#ef2e55;color:#fff}.navbar.is-danger .navbar-dropdown a.navbar-item.is-active{background-color:#f14668;color:#fff}}.navbar>.container{align-items:stretch;display:flex;min-height:3.25rem;width:100%}.navbar.has-shadow{box-shadow:0 2px 0 0 #f5f5f5}.navbar.is-fixed-bottom,.navbar.is-fixed-top{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom{bottom:0}.navbar.is-fixed-bottom.has-shadow{box-shadow:0 -2px 0 0 #f5f5f5}.navbar.is-fixed-top{top:0}body.has-navbar-fixed-top,html.has-navbar-fixed-top{padding-top:3.25rem}body.has-navbar-fixed-bottom,html.has-navbar-fixed-bottom{padding-bottom:3.25rem}.navbar-brand,.navbar-tabs{align-items:stretch;display:flex;flex-shrink:0;min-height:3.25rem}.navbar-brand a.navbar-item:focus,.navbar-brand a.navbar-item:hover{background-color:transparent}.navbar-tabs{-webkit-overflow-scrolling:touch;max-width:100vw;overflow-x:auto;overflow-y:hidden}.navbar-burger{color:#4a4a4a;-moz-appearance:none;-webkit-appearance:none;appearance:none;background:0 0;border:none;cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem;margin-left:auto}.navbar-burger span{background-color:currentColor;display:block;height:1px;left:calc(50% - 8px);position:absolute;transform-origin:center;transition-duration:86ms;transition-property:background-color,opacity,transform;transition-timing-function:ease-out;width:16px}.navbar-burger span:first-child{top:calc(50% - 6px)}.navbar-burger span:nth-child(2){top:calc(50% - 1px)}.navbar-burger span:nth-child(3){top:calc(50% + 4px)}.navbar-burger:hover{background-color:rgba(0,0,0,.05)}.navbar-burger.is-active span:first-child{transform:translateY(5px) rotate(45deg)}.navbar-burger.is-active span:nth-child(2){opacity:0}.navbar-burger.is-active span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}.navbar-menu{display:none}.navbar-item,.navbar-link{color:#4a4a4a;display:block;line-height:1.5;padding:.5rem .75rem;position:relative}.navbar-item .icon:only-child,.navbar-link .icon:only-child{margin-left:-.25rem;margin-right:-.25rem}.navbar-link,a.navbar-item{cursor:pointer}.navbar-link.is-active,.navbar-link:focus,.navbar-link:focus-within,.navbar-link:hover,a.navbar-item.is-active,a.navbar-item:focus,a.navbar-item:focus-within,a.navbar-item:hover{background-color:#0002;color:#485fc7}.navbar-item{flex-grow:0;flex-shrink:0}.navbar-item img{max-height:1.75rem}.navbar-item.has-dropdown{padding:0}.navbar-item.is-expanded{flex-grow:1;flex-shrink:1}.navbar-item.is-tab{border-bottom:1px solid transparent;min-height:3.25rem;padding-bottom:calc(.5rem - 1px)}.navbar-item.is-tab:focus,.navbar-item.is-tab:hover{background-color:transparent;border-bottom-color:#485fc7}.navbar-item.is-tab.is-active{background-color:transparent;border-bottom-color:#485fc7;border-bottom-style:solid;border-bottom-width:3px;color:#485fc7;padding-bottom:calc(.5rem - 3px)}.navbar-content{flex-grow:1;flex-shrink:1}.navbar-link:not(.is-arrowless){padding-right:2.5em}.navbar-link:not(.is-arrowless)::after{border-color:#485fc7;margin-top:-.375em;right:1.125em}.navbar-dropdown{font-size:.875rem;padding-bottom:.5rem;padding-top:.5rem}.navbar-dropdown .navbar-item{padding-left:1.5rem;padding-right:1.5rem}.navbar-divider{background-color:#f5f5f5;border:none;display:none;height:2px;margin:.5rem 0}@media screen and (max-width:1023px){.navbar>.container{display:block}.navbar-brand .navbar-item,.navbar-tabs .navbar-item{align-items:center;display:flex}.navbar-link::after{display:none}.navbar-menu{background-color:#fff;box-shadow:0 8px 16px rgba(10,10,10,.1);padding:.5rem 0}.navbar-menu.is-active{display:block}.navbar.is-fixed-bottom-touch,.navbar.is-fixed-top-touch{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-touch{bottom:0}.navbar.is-fixed-bottom-touch.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-touch{top:0}.navbar.is-fixed-top .navbar-menu,.navbar.is-fixed-top-touch .navbar-menu{-webkit-overflow-scrolling:touch;max-height:calc(100vh - 3.25rem);overflow:auto}body.has-navbar-fixed-top-touch,html.has-navbar-fixed-top-touch{padding-top:3.25rem}body.has-navbar-fixed-bottom-touch,html.has-navbar-fixed-bottom-touch{padding-bottom:3.25rem}}@media screen and (min-width:1024px){.navbar,.navbar-end,.navbar-menu,.navbar-start{align-items:stretch;display:flex}.navbar{min-height:3.25rem}.navbar.is-spaced{padding:1rem 2rem}.navbar.is-spaced .navbar-end,.navbar.is-spaced .navbar-start{align-items:center}.navbar.is-spaced .navbar-link,.navbar.is-spaced a.navbar-item{border-radius:4px}.navbar.is-transparent .navbar-link.is-active,.navbar.is-transparent .navbar-link:focus,.navbar.is-transparent .navbar-link:hover,.navbar.is-transparent a.navbar-item.is-active,.navbar.is-transparent a.navbar-item:focus,.navbar.is-transparent a.navbar-item:hover{background-color:transparent!important}.navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link,.navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link{background-color:transparent!important}.navbar.is-transparent .navbar-dropdown a.navbar-item:focus,.navbar.is-transparent .navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar.is-transparent .navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-burger{display:none}.navbar-item,.navbar-link{align-items:center;display:flex}.navbar-item.has-dropdown{align-items:stretch}.navbar-item.has-dropdown-up .navbar-link::after{transform:rotate(135deg) translate(.25em,-.25em)}.navbar-item.has-dropdown-up .navbar-dropdown{border-bottom:2px solid #dbdbdb;border-radius:6px 6px 0 0;border-top:none;bottom:100%;box-shadow:0 -8px 8px rgba(10,10,10,.1);top:auto}.navbar-item.is-active .navbar-dropdown,.navbar-item.is-hoverable:focus .navbar-dropdown,.navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar-item.is-hoverable:hover .navbar-dropdown{display:block}.navbar-item.is-active .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed,.navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-item.is-active .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown,.navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown{opacity:1;pointer-events:auto;transform:translateY(0)}.navbar-menu{flex-grow:1;flex-shrink:0}.navbar-start{justify-content:flex-start;margin-right:auto}.navbar-end{justify-content:flex-end;margin-left:auto}.navbar-dropdown{background-color:#fff;border-bottom-left-radius:6px;border-bottom-right-radius:6px;border-top:2px solid #dbdbdb;box-shadow:0 8px 8px rgba(10,10,10,.1);display:none;font-size:.875rem;left:0;min-width:100%;position:absolute;top:100%;z-index:20}.navbar-dropdown .navbar-item{padding:.375rem 1rem;white-space:nowrap}.navbar-dropdown a.navbar-item{padding-right:3rem}.navbar-dropdown a.navbar-item:focus,.navbar-dropdown a.navbar-item:hover{background-color:#f5f5f5;color:#0a0a0a}.navbar-dropdown a.navbar-item.is-active{background-color:#f5f5f5;color:#485fc7}.navbar-dropdown.is-boxed,.navbar.is-spaced .navbar-dropdown{border-radius:6px;border-top:none;box-shadow:0 8px 8px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;opacity:0;pointer-events:none;top:calc(100% + (-4px));transform:translateY(-5px);transition-duration:86ms;transition-property:opacity,transform}.navbar-dropdown.is-right{left:auto;right:0}.navbar-divider{display:block}.container>.navbar .navbar-brand,.navbar>.container .navbar-brand{margin-left:-.75rem}.container>.navbar .navbar-menu,.navbar>.container .navbar-menu{margin-right:-.75rem}.navbar.is-fixed-bottom-desktop,.navbar.is-fixed-top-desktop{left:0;position:fixed;right:0;z-index:30}.navbar.is-fixed-bottom-desktop{bottom:0}.navbar.is-fixed-bottom-desktop.has-shadow{box-shadow:0 -2px 3px rgba(10,10,10,.1)}.navbar.is-fixed-top-desktop{top:0}body.has-navbar-fixed-top-desktop,html.has-navbar-fixed-top-desktop{padding-top:3.25rem}body.has-navbar-fixed-bottom-desktop,html.has-navbar-fixed-bottom-desktop{padding-bottom:3.25rem}body.has-spaced-navbar-fixed-top,html.has-spaced-navbar-fixed-top{padding-top:5.25rem}body.has-spaced-navbar-fixed-bottom,html.has-spaced-navbar-fixed-bottom{padding-bottom:5.25rem}.navbar-link.is-active,a.navbar-item.is-active{color:#0a0a0a}.navbar-link.is-active:not(:focus):not(:hover),a.navbar-item.is-active:not(:focus):not(:hover){background-color:transparent}.navbar-item.has-dropdown.is-active .navbar-link,.navbar-item.has-dropdown:focus .navbar-link,.navbar-item.has-dropdown:hover .navbar-link{background-color:#fafafa}}.hero.is-fullheight-with-navbar{min-height:calc(100vh - 3.25rem)}.pagination{font-size:1rem;margin:-.25rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination.is-rounded .pagination-next,.pagination.is-rounded .pagination-previous{padding-left:1em;padding-right:1em;border-radius:9999px}.pagination.is-rounded .pagination-link{border-radius:9999px}.pagination,.pagination-list{align-items:center;display:flex;justify-content:center;text-align:center}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{font-size:1em;justify-content:center;margin:.25rem;padding-left:.5em;padding-right:.5em;text-align:center}.pagination-link,.pagination-next,.pagination-previous{border-color:#dbdbdb;color:#363636;min-width:2.5em}.pagination-link:hover,.pagination-next:hover,.pagination-previous:hover{border-color:#b5b5b5;color:#363636}.pagination-link:focus,.pagination-next:focus,.pagination-previous:focus{border-color:#485fc7}.pagination-link:active,.pagination-next:active,.pagination-previous:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-link.is-disabled,.pagination-link[disabled],.pagination-next.is-disabled,.pagination-next[disabled],.pagination-previous.is-disabled,.pagination-previous[disabled]{background-color:#dbdbdb;border-color:#dbdbdb;box-shadow:none;color:#7a7a7a;opacity:.5}.pagination-next,.pagination-previous{padding-left:.75em;padding-right:.75em;white-space:nowrap}.pagination-link.is-current{background-color:#485fc7;border-color:#485fc7;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list{flex-wrap:wrap}.pagination-list li{list-style:none}@media screen and (max-width:768px){.pagination{flex-wrap:wrap}.pagination-next,.pagination-previous{flex-grow:1;flex-shrink:1}.pagination-list li{flex-grow:1;flex-shrink:1}}@media screen and (min-width:769px),print{.pagination-list{flex-grow:1;flex-shrink:1;justify-content:flex-start;order:1}.pagination-ellipsis,.pagination-link,.pagination-next,.pagination-previous{margin-bottom:0;margin-top:0}.pagination-previous{order:2}.pagination-next{order:3}.pagination{justify-content:space-between;margin-bottom:0;margin-top:0}.pagination.is-centered .pagination-previous{order:1}.pagination.is-centered .pagination-list{justify-content:center;order:2}.pagination.is-centered .pagination-next{order:3}.pagination.is-right .pagination-previous{order:1}.pagination.is-right .pagination-next{order:2}.pagination.is-right .pagination-list{justify-content:flex-end;order:3}}.panel{border-radius:6px;box-shadow:0 .5em 1em -.125em rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.02);font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel.is-white .panel-heading{background-color:#fff;color:#0a0a0a}.panel.is-white .panel-tabs a.is-active{border-bottom-color:#fff}.panel.is-white .panel-block.is-active .panel-icon{color:#fff}.panel.is-black .panel-heading{background-color:#0a0a0a;color:#fff}.panel.is-black .panel-tabs a.is-active{border-bottom-color:#0a0a0a}.panel.is-black .panel-block.is-active .panel-icon{color:#0a0a0a}.panel.is-light .panel-heading{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.panel.is-light .panel-tabs a.is-active{border-bottom-color:#f5f5f5}.panel.is-light .panel-block.is-active .panel-icon{color:#f5f5f5}.panel.is-dark .panel-heading{background-color:#363636;color:#fff}.panel.is-dark .panel-tabs a.is-active{border-bottom-color:#363636}.panel.is-dark .panel-block.is-active .panel-icon{color:#363636}.panel.is-primary .panel-heading{background-color:#00d1b2;color:#fff}.panel.is-primary .panel-tabs a.is-active{border-bottom-color:#00d1b2}.panel.is-primary .panel-block.is-active .panel-icon{color:#00d1b2}.panel.is-link .panel-heading{background-color:#485fc7;color:#fff}.panel.is-link .panel-tabs a.is-active{border-bottom-color:#485fc7}.panel.is-link .panel-block.is-active .panel-icon{color:#485fc7}.panel.is-info .panel-heading{background-color:#3e8ed0;color:#fff}.panel.is-info .panel-tabs a.is-active{border-bottom-color:#3e8ed0}.panel.is-info .panel-block.is-active .panel-icon{color:#3e8ed0}.panel.is-success .panel-heading{background-color:#48c78e;color:#fff}.panel.is-success .panel-tabs a.is-active{border-bottom-color:#48c78e}.panel.is-success .panel-block.is-active .panel-icon{color:#48c78e}.panel.is-warning .panel-heading{background-color:#ffe08a;color:rgba(0,0,0,.7)}.panel.is-warning .panel-tabs a.is-active{border-bottom-color:#ffe08a}.panel.is-warning .panel-block.is-active .panel-icon{color:#ffe08a}.panel.is-danger .panel-heading{background-color:#f14668;color:#fff}.panel.is-danger .panel-tabs a.is-active{border-bottom-color:#f14668}.panel.is-danger .panel-block.is-active .panel-icon{color:#f14668}.panel-block:not(:last-child),.panel-tabs:not(:last-child){border-bottom:1px solid #ededed}.panel-heading{background-color:#ededed;border-radius:6px 6px 0 0;color:#363636;font-size:1.25em;font-weight:700;line-height:1.25;padding:.75em 1em}.panel-tabs{align-items:flex-end;display:flex;font-size:.875em;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#485fc7}.panel-block{align-items:center;color:#363636;display:flex;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{flex-grow:1;flex-shrink:1;width:100%}.panel-block.is-wrapped{flex-wrap:wrap}.panel-block.is-active{border-left-color:#485fc7;color:#363636}.panel-block.is-active .panel-icon{color:#485fc7}.panel-block:last-child{border-bottom-left-radius:6px;border-bottom-right-radius:6px}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-overflow-scrolling:touch;align-items:stretch;display:flex;font-size:1rem;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs a{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;color:#4a4a4a;display:flex;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#485fc7;color:#485fc7}.tabs ul{align-items:center;border-bottom-color:#dbdbdb;border-bottom-style:solid;border-bottom-width:1px;display:flex;flex-grow:1;flex-shrink:0;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{flex:none;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{justify-content:center}.tabs.is-right ul{justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:4px 4px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent!important}.tabs.is-fullwidth li{flex-grow:1;flex-shrink:0}.tabs.is-toggle a{border-color:#dbdbdb;border-style:solid;border-width:1px;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabs.is-toggle li:last-child a{border-top-right-radius:4px;border-bottom-right-radius:4px}.tabs.is-toggle li.is-active a{background-color:#485fc7;border-color:#485fc7;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-toggle.is-toggle-rounded li:first-child a{border-bottom-left-radius:9999px;border-top-left-radius:9999px;padding-left:1.25em}.tabs.is-toggle.is-toggle-rounded li:last-child a{border-bottom-right-radius:9999px;border-top-right-radius:9999px;padding-right:1.25em}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;flex-basis:0;flex-grow:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{flex:none;width:unset}.columns.is-mobile>.column.is-full{flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{flex:none;width:50%}.columns.is-mobile>.column.is-one-third{flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{flex:none;width:25%}.columns.is-mobile>.column.is-one-fifth{flex:none;width:20%}.columns.is-mobile>.column.is-two-fifths{flex:none;width:40%}.columns.is-mobile>.column.is-three-fifths{flex:none;width:60%}.columns.is-mobile>.column.is-four-fifths{flex:none;width:80%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-offset-one-fifth{margin-left:20%}.columns.is-mobile>.column.is-offset-two-fifths{margin-left:40%}.columns.is-mobile>.column.is-offset-three-fifths{margin-left:60%}.columns.is-mobile>.column.is-offset-four-fifths{margin-left:80%}.columns.is-mobile>.column.is-0{flex:none;width:0%}.columns.is-mobile>.column.is-offset-0{margin-left:0}.columns.is-mobile>.column.is-1{flex:none;width:8.33333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333%}.columns.is-mobile>.column.is-2{flex:none;width:16.66667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66667%}.columns.is-mobile>.column.is-3{flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{flex:none;width:33.33333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333%}.columns.is-mobile>.column.is-5{flex:none;width:41.66667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66667%}.columns.is-mobile>.column.is-6{flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{flex:none;width:58.33333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333%}.columns.is-mobile>.column.is-8{flex:none;width:66.66667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66667%}.columns.is-mobile>.column.is-9{flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{flex:none;width:83.33333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333%}.columns.is-mobile>.column.is-11{flex:none;width:91.66667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66667%}.columns.is-mobile>.column.is-12{flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width:768px){.column.is-narrow-mobile{flex:none;width:unset}.column.is-full-mobile{flex:none;width:100%}.column.is-three-quarters-mobile{flex:none;width:75%}.column.is-two-thirds-mobile{flex:none;width:66.6666%}.column.is-half-mobile{flex:none;width:50%}.column.is-one-third-mobile{flex:none;width:33.3333%}.column.is-one-quarter-mobile{flex:none;width:25%}.column.is-one-fifth-mobile{flex:none;width:20%}.column.is-two-fifths-mobile{flex:none;width:40%}.column.is-three-fifths-mobile{flex:none;width:60%}.column.is-four-fifths-mobile{flex:none;width:80%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-offset-one-fifth-mobile{margin-left:20%}.column.is-offset-two-fifths-mobile{margin-left:40%}.column.is-offset-three-fifths-mobile{margin-left:60%}.column.is-offset-four-fifths-mobile{margin-left:80%}.column.is-0-mobile{flex:none;width:0%}.column.is-offset-0-mobile{margin-left:0}.column.is-1-mobile{flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width:769px),print{.column.is-narrow,.column.is-narrow-tablet{flex:none;width:unset}.column.is-full,.column.is-full-tablet{flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{flex:none;width:25%}.column.is-one-fifth,.column.is-one-fifth-tablet{flex:none;width:20%}.column.is-two-fifths,.column.is-two-fifths-tablet{flex:none;width:40%}.column.is-three-fifths,.column.is-three-fifths-tablet{flex:none;width:60%}.column.is-four-fifths,.column.is-four-fifths-tablet{flex:none;width:80%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-offset-one-fifth,.column.is-offset-one-fifth-tablet{margin-left:20%}.column.is-offset-two-fifths,.column.is-offset-two-fifths-tablet{margin-left:40%}.column.is-offset-three-fifths,.column.is-offset-three-fifths-tablet{margin-left:60%}.column.is-offset-four-fifths,.column.is-offset-four-fifths-tablet{margin-left:80%}.column.is-0,.column.is-0-tablet{flex:none;width:0%}.column.is-offset-0,.column.is-offset-0-tablet{margin-left:0}.column.is-1,.column.is-1-tablet{flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (max-width:1023px){.column.is-narrow-touch{flex:none;width:unset}.column.is-full-touch{flex:none;width:100%}.column.is-three-quarters-touch{flex:none;width:75%}.column.is-two-thirds-touch{flex:none;width:66.6666%}.column.is-half-touch{flex:none;width:50%}.column.is-one-third-touch{flex:none;width:33.3333%}.column.is-one-quarter-touch{flex:none;width:25%}.column.is-one-fifth-touch{flex:none;width:20%}.column.is-two-fifths-touch{flex:none;width:40%}.column.is-three-fifths-touch{flex:none;width:60%}.column.is-four-fifths-touch{flex:none;width:80%}.column.is-offset-three-quarters-touch{margin-left:75%}.column.is-offset-two-thirds-touch{margin-left:66.6666%}.column.is-offset-half-touch{margin-left:50%}.column.is-offset-one-third-touch{margin-left:33.3333%}.column.is-offset-one-quarter-touch{margin-left:25%}.column.is-offset-one-fifth-touch{margin-left:20%}.column.is-offset-two-fifths-touch{margin-left:40%}.column.is-offset-three-fifths-touch{margin-left:60%}.column.is-offset-four-fifths-touch{margin-left:80%}.column.is-0-touch{flex:none;width:0%}.column.is-offset-0-touch{margin-left:0}.column.is-1-touch{flex:none;width:8.33333%}.column.is-offset-1-touch{margin-left:8.33333%}.column.is-2-touch{flex:none;width:16.66667%}.column.is-offset-2-touch{margin-left:16.66667%}.column.is-3-touch{flex:none;width:25%}.column.is-offset-3-touch{margin-left:25%}.column.is-4-touch{flex:none;width:33.33333%}.column.is-offset-4-touch{margin-left:33.33333%}.column.is-5-touch{flex:none;width:41.66667%}.column.is-offset-5-touch{margin-left:41.66667%}.column.is-6-touch{flex:none;width:50%}.column.is-offset-6-touch{margin-left:50%}.column.is-7-touch{flex:none;width:58.33333%}.column.is-offset-7-touch{margin-left:58.33333%}.column.is-8-touch{flex:none;width:66.66667%}.column.is-offset-8-touch{margin-left:66.66667%}.column.is-9-touch{flex:none;width:75%}.column.is-offset-9-touch{margin-left:75%}.column.is-10-touch{flex:none;width:83.33333%}.column.is-offset-10-touch{margin-left:83.33333%}.column.is-11-touch{flex:none;width:91.66667%}.column.is-offset-11-touch{margin-left:91.66667%}.column.is-12-touch{flex:none;width:100%}.column.is-offset-12-touch{margin-left:100%}}@media screen and (min-width:1024px){.column.is-narrow-desktop{flex:none;width:unset}.column.is-full-desktop{flex:none;width:100%}.column.is-three-quarters-desktop{flex:none;width:75%}.column.is-two-thirds-desktop{flex:none;width:66.6666%}.column.is-half-desktop{flex:none;width:50%}.column.is-one-third-desktop{flex:none;width:33.3333%}.column.is-one-quarter-desktop{flex:none;width:25%}.column.is-one-fifth-desktop{flex:none;width:20%}.column.is-two-fifths-desktop{flex:none;width:40%}.column.is-three-fifths-desktop{flex:none;width:60%}.column.is-four-fifths-desktop{flex:none;width:80%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-offset-one-fifth-desktop{margin-left:20%}.column.is-offset-two-fifths-desktop{margin-left:40%}.column.is-offset-three-fifths-desktop{margin-left:60%}.column.is-offset-four-fifths-desktop{margin-left:80%}.column.is-0-desktop{flex:none;width:0%}.column.is-offset-0-desktop{margin-left:0}.column.is-1-desktop{flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width:1216px){.column.is-narrow-widescreen{flex:none;width:unset}.column.is-full-widescreen{flex:none;width:100%}.column.is-three-quarters-widescreen{flex:none;width:75%}.column.is-two-thirds-widescreen{flex:none;width:66.6666%}.column.is-half-widescreen{flex:none;width:50%}.column.is-one-third-widescreen{flex:none;width:33.3333%}.column.is-one-quarter-widescreen{flex:none;width:25%}.column.is-one-fifth-widescreen{flex:none;width:20%}.column.is-two-fifths-widescreen{flex:none;width:40%}.column.is-three-fifths-widescreen{flex:none;width:60%}.column.is-four-fifths-widescreen{flex:none;width:80%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-offset-one-fifth-widescreen{margin-left:20%}.column.is-offset-two-fifths-widescreen{margin-left:40%}.column.is-offset-three-fifths-widescreen{margin-left:60%}.column.is-offset-four-fifths-widescreen{margin-left:80%}.column.is-0-widescreen{flex:none;width:0%}.column.is-offset-0-widescreen{margin-left:0}.column.is-1-widescreen{flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}@media screen and (min-width:1408px){.column.is-narrow-fullhd{flex:none;width:unset}.column.is-full-fullhd{flex:none;width:100%}.column.is-three-quarters-fullhd{flex:none;width:75%}.column.is-two-thirds-fullhd{flex:none;width:66.6666%}.column.is-half-fullhd{flex:none;width:50%}.column.is-one-third-fullhd{flex:none;width:33.3333%}.column.is-one-quarter-fullhd{flex:none;width:25%}.column.is-one-fifth-fullhd{flex:none;width:20%}.column.is-two-fifths-fullhd{flex:none;width:40%}.column.is-three-fifths-fullhd{flex:none;width:60%}.column.is-four-fifths-fullhd{flex:none;width:80%}.column.is-offset-three-quarters-fullhd{margin-left:75%}.column.is-offset-two-thirds-fullhd{margin-left:66.6666%}.column.is-offset-half-fullhd{margin-left:50%}.column.is-offset-one-third-fullhd{margin-left:33.3333%}.column.is-offset-one-quarter-fullhd{margin-left:25%}.column.is-offset-one-fifth-fullhd{margin-left:20%}.column.is-offset-two-fifths-fullhd{margin-left:40%}.column.is-offset-three-fifths-fullhd{margin-left:60%}.column.is-offset-four-fifths-fullhd{margin-left:80%}.column.is-0-fullhd{flex:none;width:0%}.column.is-offset-0-fullhd{margin-left:0}.column.is-1-fullhd{flex:none;width:8.33333%}.column.is-offset-1-fullhd{margin-left:8.33333%}.column.is-2-fullhd{flex:none;width:16.66667%}.column.is-offset-2-fullhd{margin-left:16.66667%}.column.is-3-fullhd{flex:none;width:25%}.column.is-offset-3-fullhd{margin-left:25%}.column.is-4-fullhd{flex:none;width:33.33333%}.column.is-offset-4-fullhd{margin-left:33.33333%}.column.is-5-fullhd{flex:none;width:41.66667%}.column.is-offset-5-fullhd{margin-left:41.66667%}.column.is-6-fullhd{flex:none;width:50%}.column.is-offset-6-fullhd{margin-left:50%}.column.is-7-fullhd{flex:none;width:58.33333%}.column.is-offset-7-fullhd{margin-left:58.33333%}.column.is-8-fullhd{flex:none;width:66.66667%}.column.is-offset-8-fullhd{margin-left:66.66667%}.column.is-9-fullhd{flex:none;width:75%}.column.is-offset-9-fullhd{margin-left:75%}.column.is-10-fullhd{flex:none;width:83.33333%}.column.is-offset-10-fullhd{margin-left:83.33333%}.column.is-11-fullhd{flex:none;width:91.66667%}.column.is-offset-11-fullhd{margin-left:91.66667%}.column.is-12-fullhd{flex:none;width:100%}.column.is-offset-12-fullhd{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:calc(1.5rem - .75rem)}.columns.is-centered{justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless>.column{margin:0;padding:0!important}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-mobile{display:flex}.columns.is-multiline{flex-wrap:wrap}.columns.is-vcentered{align-items:center}@media screen and (min-width:769px),print{.columns:not(.is-desktop){display:flex}}@media screen and (min-width:1024px){.columns.is-desktop{display:flex}}.columns.is-variable{--columnGap:0.75rem;margin-left:calc(-1 * var(--columnGap));margin-right:calc(-1 * var(--columnGap))}.columns.is-variable>.column{padding-left:var(--columnGap);padding-right:var(--columnGap)}.columns.is-variable.is-0{--columnGap:0rem}@media screen and (max-width:768px){.columns.is-variable.is-0-mobile{--columnGap:0rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-0-tablet{--columnGap:0rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-0-tablet-only{--columnGap:0rem}}@media screen and (max-width:1023px){.columns.is-variable.is-0-touch{--columnGap:0rem}}@media screen and (min-width:1024px){.columns.is-variable.is-0-desktop{--columnGap:0rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-0-desktop-only{--columnGap:0rem}}@media screen and (min-width:1216px){.columns.is-variable.is-0-widescreen{--columnGap:0rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-0-widescreen-only{--columnGap:0rem}}@media screen and (min-width:1408px){.columns.is-variable.is-0-fullhd{--columnGap:0rem}}.columns.is-variable.is-1{--columnGap:0.25rem}@media screen and (max-width:768px){.columns.is-variable.is-1-mobile{--columnGap:0.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-1-tablet{--columnGap:0.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-1-tablet-only{--columnGap:0.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-1-touch{--columnGap:0.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-1-desktop{--columnGap:0.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-1-desktop-only{--columnGap:0.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-1-widescreen{--columnGap:0.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-1-widescreen-only{--columnGap:0.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-1-fullhd{--columnGap:0.25rem}}.columns.is-variable.is-2{--columnGap:0.5rem}@media screen and (max-width:768px){.columns.is-variable.is-2-mobile{--columnGap:0.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-2-tablet{--columnGap:0.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-2-tablet-only{--columnGap:0.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-2-touch{--columnGap:0.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-2-desktop{--columnGap:0.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-2-desktop-only{--columnGap:0.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-2-widescreen{--columnGap:0.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-2-widescreen-only{--columnGap:0.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-2-fullhd{--columnGap:0.5rem}}.columns.is-variable.is-3{--columnGap:0.75rem}@media screen and (max-width:768px){.columns.is-variable.is-3-mobile{--columnGap:0.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-3-tablet{--columnGap:0.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-3-tablet-only{--columnGap:0.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-3-touch{--columnGap:0.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-3-desktop{--columnGap:0.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-3-desktop-only{--columnGap:0.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-3-widescreen{--columnGap:0.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-3-widescreen-only{--columnGap:0.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-3-fullhd{--columnGap:0.75rem}}.columns.is-variable.is-4{--columnGap:1rem}@media screen and (max-width:768px){.columns.is-variable.is-4-mobile{--columnGap:1rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-4-tablet{--columnGap:1rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-4-tablet-only{--columnGap:1rem}}@media screen and (max-width:1023px){.columns.is-variable.is-4-touch{--columnGap:1rem}}@media screen and (min-width:1024px){.columns.is-variable.is-4-desktop{--columnGap:1rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-4-desktop-only{--columnGap:1rem}}@media screen and (min-width:1216px){.columns.is-variable.is-4-widescreen{--columnGap:1rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-4-widescreen-only{--columnGap:1rem}}@media screen and (min-width:1408px){.columns.is-variable.is-4-fullhd{--columnGap:1rem}}.columns.is-variable.is-5{--columnGap:1.25rem}@media screen and (max-width:768px){.columns.is-variable.is-5-mobile{--columnGap:1.25rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-5-tablet{--columnGap:1.25rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-5-tablet-only{--columnGap:1.25rem}}@media screen and (max-width:1023px){.columns.is-variable.is-5-touch{--columnGap:1.25rem}}@media screen and (min-width:1024px){.columns.is-variable.is-5-desktop{--columnGap:1.25rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-5-desktop-only{--columnGap:1.25rem}}@media screen and (min-width:1216px){.columns.is-variable.is-5-widescreen{--columnGap:1.25rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-5-widescreen-only{--columnGap:1.25rem}}@media screen and (min-width:1408px){.columns.is-variable.is-5-fullhd{--columnGap:1.25rem}}.columns.is-variable.is-6{--columnGap:1.5rem}@media screen and (max-width:768px){.columns.is-variable.is-6-mobile{--columnGap:1.5rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-6-tablet{--columnGap:1.5rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-6-tablet-only{--columnGap:1.5rem}}@media screen and (max-width:1023px){.columns.is-variable.is-6-touch{--columnGap:1.5rem}}@media screen and (min-width:1024px){.columns.is-variable.is-6-desktop{--columnGap:1.5rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-6-desktop-only{--columnGap:1.5rem}}@media screen and (min-width:1216px){.columns.is-variable.is-6-widescreen{--columnGap:1.5rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-6-widescreen-only{--columnGap:1.5rem}}@media screen and (min-width:1408px){.columns.is-variable.is-6-fullhd{--columnGap:1.5rem}}.columns.is-variable.is-7{--columnGap:1.75rem}@media screen and (max-width:768px){.columns.is-variable.is-7-mobile{--columnGap:1.75rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-7-tablet{--columnGap:1.75rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-7-tablet-only{--columnGap:1.75rem}}@media screen and (max-width:1023px){.columns.is-variable.is-7-touch{--columnGap:1.75rem}}@media screen and (min-width:1024px){.columns.is-variable.is-7-desktop{--columnGap:1.75rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-7-desktop-only{--columnGap:1.75rem}}@media screen and (min-width:1216px){.columns.is-variable.is-7-widescreen{--columnGap:1.75rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-7-widescreen-only{--columnGap:1.75rem}}@media screen and (min-width:1408px){.columns.is-variable.is-7-fullhd{--columnGap:1.75rem}}.columns.is-variable.is-8{--columnGap:2rem}@media screen and (max-width:768px){.columns.is-variable.is-8-mobile{--columnGap:2rem}}@media screen and (min-width:769px),print{.columns.is-variable.is-8-tablet{--columnGap:2rem}}@media screen and (min-width:769px) and (max-width:1023px){.columns.is-variable.is-8-tablet-only{--columnGap:2rem}}@media screen and (max-width:1023px){.columns.is-variable.is-8-touch{--columnGap:2rem}}@media screen and (min-width:1024px){.columns.is-variable.is-8-desktop{--columnGap:2rem}}@media screen and (min-width:1024px) and (max-width:1215px){.columns.is-variable.is-8-desktop-only{--columnGap:2rem}}@media screen and (min-width:1216px){.columns.is-variable.is-8-widescreen{--columnGap:2rem}}@media screen and (min-width:1216px) and (max-width:1407px){.columns.is-variable.is-8-widescreen-only{--columnGap:2rem}}@media screen and (min-width:1408px){.columns.is-variable.is-8-fullhd{--columnGap:2rem}}.tile{align-items:stretch;display:block;flex-basis:0;flex-grow:1;flex-shrink:1;min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0!important}.tile.is-parent{padding:.75rem}.tile.is-vertical{flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem!important}@media screen and (min-width:769px),print{.tile:not(.is-child){display:flex}.tile.is-1{flex:none;width:8.33333%}.tile.is-2{flex:none;width:16.66667%}.tile.is-3{flex:none;width:25%}.tile.is-4{flex:none;width:33.33333%}.tile.is-5{flex:none;width:41.66667%}.tile.is-6{flex:none;width:50%}.tile.is-7{flex:none;width:58.33333%}.tile.is-8{flex:none;width:66.66667%}.tile.is-9{flex:none;width:75%}.tile.is-10{flex:none;width:83.33333%}.tile.is-11{flex:none;width:91.66667%}.tile.is-12{flex:none;width:100%}}.has-text-white{color:#fff!important}a.has-text-white:focus,a.has-text-white:hover{color:#e6e6e6!important}.has-background-white{background-color:#fff!important}.has-text-black{color:#0a0a0a!important}a.has-text-black:focus,a.has-text-black:hover{color:#000!important}.has-background-black{background-color:#0a0a0a!important}.has-text-light{color:#f5f5f5!important}a.has-text-light:focus,a.has-text-light:hover{color:#dbdbdb!important}.has-background-light{background-color:#f5f5f5!important}.has-text-dark{color:#363636!important}a.has-text-dark:focus,a.has-text-dark:hover{color:#1c1c1c!important}.has-background-dark{background-color:#363636!important}.has-text-primary{color:#00d1b2!important}a.has-text-primary:focus,a.has-text-primary:hover{color:#009e86!important}.has-background-primary{background-color:#00d1b2!important}.has-text-primary-light{color:#ebfffc!important}a.has-text-primary-light:focus,a.has-text-primary-light:hover{color:#b8fff4!important}.has-background-primary-light{background-color:#ebfffc!important}.has-text-primary-dark{color:#00947e!important}a.has-text-primary-dark:focus,a.has-text-primary-dark:hover{color:#00c7a9!important}.has-background-primary-dark{background-color:#00947e!important}.has-text-link{color:#485fc7!important}a.has-text-link:focus,a.has-text-link:hover{color:#3449a8!important}.has-background-link{background-color:#485fc7!important}.has-text-link-light{color:#eff1fa!important}a.has-text-link-light:focus,a.has-text-link-light:hover{color:#c8cfee!important}.has-background-link-light{background-color:#eff1fa!important}.has-text-link-dark{color:#3850b7!important}a.has-text-link-dark:focus,a.has-text-link-dark:hover{color:#576dcb!important}.has-background-link-dark{background-color:#3850b7!important}.has-text-info{color:#3e8ed0!important}a.has-text-info:focus,a.has-text-info:hover{color:#2b74b1!important}.has-background-info{background-color:#3e8ed0!important}.has-text-info-light{color:#eff5fb!important}a.has-text-info-light:focus,a.has-text-info-light:hover{color:#c6ddf1!important}.has-background-info-light{background-color:#eff5fb!important}.has-text-info-dark{color:#296fa8!important}a.has-text-info-dark:focus,a.has-text-info-dark:hover{color:#368ace!important}.has-background-info-dark{background-color:#296fa8!important}.has-text-success{color:#48c78e!important}a.has-text-success:focus,a.has-text-success:hover{color:#34a873!important}.has-background-success{background-color:#48c78e!important}.has-text-success-light{color:#effaf5!important}a.has-text-success-light:focus,a.has-text-success-light:hover{color:#c8eedd!important}.has-background-success-light{background-color:#effaf5!important}.has-text-success-dark{color:#257953!important}a.has-text-success-dark:focus,a.has-text-success-dark:hover{color:#31a06e!important}.has-background-success-dark{background-color:#257953!important}.has-text-warning{color:#ffe08a!important}a.has-text-warning:focus,a.has-text-warning:hover{color:#ffd257!important}.has-background-warning{background-color:#ffe08a!important}.has-text-warning-light{color:#fffaeb!important}a.has-text-warning-light:focus,a.has-text-warning-light:hover{color:#ffecb8!important}.has-background-warning-light{background-color:#fffaeb!important}.has-text-warning-dark{color:#946c00!important}a.has-text-warning-dark:focus,a.has-text-warning-dark:hover{color:#c79200!important}.has-background-warning-dark{background-color:#946c00!important}.has-text-danger{color:#f14668!important}a.has-text-danger:focus,a.has-text-danger:hover{color:#ee1742!important}.has-background-danger{background-color:#f14668!important}.has-text-danger-light{color:#feecf0!important}a.has-text-danger-light:focus,a.has-text-danger-light:hover{color:#fabdc9!important}.has-background-danger-light{background-color:#feecf0!important}.has-text-danger-dark{color:#cc0f35!important}a.has-text-danger-dark:focus,a.has-text-danger-dark:hover{color:#ee2049!important}.has-background-danger-dark{background-color:#cc0f35!important}.has-text-black-bis{color:#121212!important}.has-background-black-bis{background-color:#121212!important}.has-text-black-ter{color:#242424!important}.has-background-black-ter{background-color:#242424!important}.has-text-grey-darker{color:#363636!important}.has-background-grey-darker{background-color:#363636!important}.has-text-grey-dark{color:#4a4a4a!important}.has-background-grey-dark{background-color:#4a4a4a!important}.has-text-grey{color:#7a7a7a!important}.has-background-grey{background-color:#7a7a7a!important}.has-text-grey-light{color:#b5b5b5!important}.has-background-grey-light{background-color:#b5b5b5!important}.has-text-grey-lighter{color:#dbdbdb!important}.has-background-grey-lighter{background-color:#dbdbdb!important}.has-text-white-ter{color:#f5f5f5!important}.has-background-white-ter{background-color:#f5f5f5!important}.has-text-white-bis{color:#fafafa!important}.has-background-white-bis{background-color:#fafafa!important}.is-flex-direction-row{flex-direction:row!important}.is-flex-direction-row-reverse{flex-direction:row-reverse!important}.is-flex-direction-column{flex-direction:column!important}.is-flex-direction-column-reverse{flex-direction:column-reverse!important}.is-flex-wrap-nowrap{flex-wrap:nowrap!important}.is-flex-wrap-wrap{flex-wrap:wrap!important}.is-flex-wrap-wrap-reverse{flex-wrap:wrap-reverse!important}.is-justify-content-flex-start{justify-content:flex-start!important}.is-justify-content-flex-end{justify-content:flex-end!important}.is-justify-content-center{justify-content:center!important}.is-justify-content-space-between{justify-content:space-between!important}.is-justify-content-space-around{justify-content:space-around!important}.is-justify-content-space-evenly{justify-content:space-evenly!important}.is-justify-content-start{justify-content:start!important}.is-justify-content-end{justify-content:end!important}.is-justify-content-left{justify-content:left!important}.is-justify-content-right{justify-content:right!important}.is-align-content-flex-start{align-content:flex-start!important}.is-align-content-flex-end{align-content:flex-end!important}.is-align-content-center{align-content:center!important}.is-align-content-space-between{align-content:space-between!important}.is-align-content-space-around{align-content:space-around!important}.is-align-content-space-evenly{align-content:space-evenly!important}.is-align-content-stretch{align-content:stretch!important}.is-align-content-start{align-content:start!important}.is-align-content-end{align-content:end!important}.is-align-content-baseline{align-content:baseline!important}.is-align-items-stretch{align-items:stretch!important}.is-align-items-flex-start{align-items:flex-start!important}.is-align-items-flex-end{align-items:flex-end!important}.is-align-items-center{align-items:center!important}.is-align-items-baseline{align-items:baseline!important}.is-align-items-start{align-items:start!important}.is-align-items-end{align-items:end!important}.is-align-items-self-start{align-items:self-start!important}.is-align-items-self-end{align-items:self-end!important}.is-align-self-auto{align-self:auto!important}.is-align-self-flex-start{align-self:flex-start!important}.is-align-self-flex-end{align-self:flex-end!important}.is-align-self-center{align-self:center!important}.is-align-self-baseline{align-self:baseline!important}.is-align-self-stretch{align-self:stretch!important}.is-flex-grow-0{flex-grow:0!important}.is-flex-grow-1{flex-grow:1!important}.is-flex-grow-2{flex-grow:2!important}.is-flex-grow-3{flex-grow:3!important}.is-flex-grow-4{flex-grow:4!important}.is-flex-grow-5{flex-grow:5!important}.is-flex-shrink-0{flex-shrink:0!important}.is-flex-shrink-1{flex-shrink:1!important}.is-flex-shrink-2{flex-shrink:2!important}.is-flex-shrink-3{flex-shrink:3!important}.is-flex-shrink-4{flex-shrink:4!important}.is-flex-shrink-5{flex-shrink:5!important}.is-clearfix::after{clear:both;content:" ";display:table}.is-pulled-left{float:left!important}.is-pulled-right{float:right!important}.is-radiusless{border-radius:0!important}.is-shadowless{box-shadow:none!important}.is-clickable{cursor:pointer!important;pointer-events:all!important}.is-clipped{overflow:hidden!important}.is-relative{position:relative!important}.is-marginless{margin:0!important}.is-paddingless{padding:0!important}.m-0{margin:0!important}.mt-0{margin-top:0!important}.mr-0{margin-right:0!important}.mb-0{margin-bottom:0!important}.ml-0{margin-left:0!important}.mx-0{margin-left:0!important;margin-right:0!important}.my-0{margin-top:0!important;margin-bottom:0!important}.m-1{margin:.25rem!important}.mt-1{margin-top:.25rem!important}.mr-1{margin-right:.25rem!important}.mb-1{margin-bottom:.25rem!important}.ml-1{margin-left:.25rem!important}.mx-1{margin-left:.25rem!important;margin-right:.25rem!important}.my-1{margin-top:.25rem!important;margin-bottom:.25rem!important}.m-2{margin:.5rem!important}.mt-2{margin-top:.5rem!important}.mr-2{margin-right:.5rem!important}.mb-2{margin-bottom:.5rem!important}.ml-2{margin-left:.5rem!important}.mx-2{margin-left:.5rem!important;margin-right:.5rem!important}.my-2{margin-top:.5rem!important;margin-bottom:.5rem!important}.m-3{margin:.75rem!important}.mt-3{margin-top:.75rem!important}.mr-3{margin-right:.75rem!important}.mb-3{margin-bottom:.75rem!important}.ml-3{margin-left:.75rem!important}.mx-3{margin-left:.75rem!important;margin-right:.75rem!important}.my-3{margin-top:.75rem!important;margin-bottom:.75rem!important}.m-4{margin:1rem!important}.mt-4{margin-top:1rem!important}.mr-4{margin-right:1rem!important}.mb-4{margin-bottom:1rem!important}.ml-4{margin-left:1rem!important}.mx-4{margin-left:1rem!important;margin-right:1rem!important}.my-4{margin-top:1rem!important;margin-bottom:1rem!important}.m-5{margin:1.5rem!important}.mt-5{margin-top:1.5rem!important}.mr-5{margin-right:1.5rem!important}.mb-5{margin-bottom:1.5rem!important}.ml-5{margin-left:1.5rem!important}.mx-5{margin-left:1.5rem!important;margin-right:1.5rem!important}.my-5{margin-top:1.5rem!important;margin-bottom:1.5rem!important}.m-6{margin:3rem!important}.mt-6{margin-top:3rem!important}.mr-6{margin-right:3rem!important}.mb-6{margin-bottom:3rem!important}.ml-6{margin-left:3rem!important}.mx-6{margin-left:3rem!important;margin-right:3rem!important}.my-6{margin-top:3rem!important;margin-bottom:3rem!important}.m-auto{margin:auto!important}.mt-auto{margin-top:auto!important}.mr-auto{margin-right:auto!important}.mb-auto{margin-bottom:auto!important}.ml-auto{margin-left:auto!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-auto{margin-top:auto!important;margin-bottom:auto!important}.p-0{padding:0!important}.pt-0{padding-top:0!important}.pr-0{padding-right:0!important}.pb-0{padding-bottom:0!important}.pl-0{padding-left:0!important}.px-0{padding-left:0!important;padding-right:0!important}.py-0{padding-top:0!important;padding-bottom:0!important}.p-1{padding:.25rem!important}.pt-1{padding-top:.25rem!important}.pr-1{padding-right:.25rem!important}.pb-1{padding-bottom:.25rem!important}.pl-1{padding-left:.25rem!important}.px-1{padding-left:.25rem!important;padding-right:.25rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.p-2{padding:.5rem!important}.pt-2{padding-top:.5rem!important}.pr-2{padding-right:.5rem!important}.pb-2{padding-bottom:.5rem!important}.pl-2{padding-left:.5rem!important}.px-2{padding-left:.5rem!important;padding-right:.5rem!important}.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.p-3{padding:.75rem!important}.pt-3{padding-top:.75rem!important}.pr-3{padding-right:.75rem!important}.pb-3{padding-bottom:.75rem!important}.pl-3{padding-left:.75rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.p-4{padding:1rem!important}.pt-4{padding-top:1rem!important}.pr-4{padding-right:1rem!important}.pb-4{padding-bottom:1rem!important}.pl-4{padding-left:1rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.py-4{padding-top:1rem!important;padding-bottom:1rem!important}.p-5{padding:1.5rem!important}.pt-5{padding-top:1.5rem!important}.pr-5{padding-right:1.5rem!important}.pb-5{padding-bottom:1.5rem!important}.pl-5{padding-left:1.5rem!important}.px-5{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-5{padding-top:1.5rem!important;padding-bottom:1.5rem!important}.p-6{padding:3rem!important}.pt-6{padding-top:3rem!important}.pr-6{padding-right:3rem!important}.pb-6{padding-bottom:3rem!important}.pl-6{padding-left:3rem!important}.px-6{padding-left:3rem!important;padding-right:3rem!important}.py-6{padding-top:3rem!important;padding-bottom:3rem!important}.p-auto{padding:auto!important}.pt-auto{padding-top:auto!important}.pr-auto{padding-right:auto!important}.pb-auto{padding-bottom:auto!important}.pl-auto{padding-left:auto!important}.px-auto{padding-left:auto!important;padding-right:auto!important}.py-auto{padding-top:auto!important;padding-bottom:auto!important}.is-size-1{font-size:3rem!important}.is-size-2{font-size:2.5rem!important}.is-size-3{font-size:2rem!important}.is-size-4{font-size:1.5rem!important}.is-size-5{font-size:1.25rem!important}.is-size-6{font-size:1rem!important}.is-size-7{font-size:.75rem!important}@media screen and (max-width:768px){.is-size-1-mobile{font-size:3rem!important}.is-size-2-mobile{font-size:2.5rem!important}.is-size-3-mobile{font-size:2rem!important}.is-size-4-mobile{font-size:1.5rem!important}.is-size-5-mobile{font-size:1.25rem!important}.is-size-6-mobile{font-size:1rem!important}.is-size-7-mobile{font-size:.75rem!important}}@media screen and (min-width:769px),print{.is-size-1-tablet{font-size:3rem!important}.is-size-2-tablet{font-size:2.5rem!important}.is-size-3-tablet{font-size:2rem!important}.is-size-4-tablet{font-size:1.5rem!important}.is-size-5-tablet{font-size:1.25rem!important}.is-size-6-tablet{font-size:1rem!important}.is-size-7-tablet{font-size:.75rem!important}}@media screen and (max-width:1023px){.is-size-1-touch{font-size:3rem!important}.is-size-2-touch{font-size:2.5rem!important}.is-size-3-touch{font-size:2rem!important}.is-size-4-touch{font-size:1.5rem!important}.is-size-5-touch{font-size:1.25rem!important}.is-size-6-touch{font-size:1rem!important}.is-size-7-touch{font-size:.75rem!important}}@media screen and (min-width:1024px){.is-size-1-desktop{font-size:3rem!important}.is-size-2-desktop{font-size:2.5rem!important}.is-size-3-desktop{font-size:2rem!important}.is-size-4-desktop{font-size:1.5rem!important}.is-size-5-desktop{font-size:1.25rem!important}.is-size-6-desktop{font-size:1rem!important}.is-size-7-desktop{font-size:.75rem!important}}@media screen and (min-width:1216px){.is-size-1-widescreen{font-size:3rem!important}.is-size-2-widescreen{font-size:2.5rem!important}.is-size-3-widescreen{font-size:2rem!important}.is-size-4-widescreen{font-size:1.5rem!important}.is-size-5-widescreen{font-size:1.25rem!important}.is-size-6-widescreen{font-size:1rem!important}.is-size-7-widescreen{font-size:.75rem!important}}@media screen and (min-width:1408px){.is-size-1-fullhd{font-size:3rem!important}.is-size-2-fullhd{font-size:2.5rem!important}.is-size-3-fullhd{font-size:2rem!important}.is-size-4-fullhd{font-size:1.5rem!important}.is-size-5-fullhd{font-size:1.25rem!important}.is-size-6-fullhd{font-size:1rem!important}.is-size-7-fullhd{font-size:.75rem!important}}.has-text-centered{text-align:center!important}.has-text-justified{text-align:justify!important}.has-text-left{text-align:left!important}.has-text-right{text-align:right!important}@media screen and (max-width:768px){.has-text-centered-mobile{text-align:center!important}}@media screen and (min-width:769px),print{.has-text-centered-tablet{text-align:center!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-centered-tablet-only{text-align:center!important}}@media screen and (max-width:1023px){.has-text-centered-touch{text-align:center!important}}@media screen and (min-width:1024px){.has-text-centered-desktop{text-align:center!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-centered-desktop-only{text-align:center!important}}@media screen and (min-width:1216px){.has-text-centered-widescreen{text-align:center!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-centered-widescreen-only{text-align:center!important}}@media screen and (min-width:1408px){.has-text-centered-fullhd{text-align:center!important}}@media screen and (max-width:768px){.has-text-justified-mobile{text-align:justify!important}}@media screen and (min-width:769px),print{.has-text-justified-tablet{text-align:justify!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-justified-tablet-only{text-align:justify!important}}@media screen and (max-width:1023px){.has-text-justified-touch{text-align:justify!important}}@media screen and (min-width:1024px){.has-text-justified-desktop{text-align:justify!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-justified-desktop-only{text-align:justify!important}}@media screen and (min-width:1216px){.has-text-justified-widescreen{text-align:justify!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-justified-widescreen-only{text-align:justify!important}}@media screen and (min-width:1408px){.has-text-justified-fullhd{text-align:justify!important}}@media screen and (max-width:768px){.has-text-left-mobile{text-align:left!important}}@media screen and (min-width:769px),print{.has-text-left-tablet{text-align:left!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-left-tablet-only{text-align:left!important}}@media screen and (max-width:1023px){.has-text-left-touch{text-align:left!important}}@media screen and (min-width:1024px){.has-text-left-desktop{text-align:left!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-left-desktop-only{text-align:left!important}}@media screen and (min-width:1216px){.has-text-left-widescreen{text-align:left!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-left-widescreen-only{text-align:left!important}}@media screen and (min-width:1408px){.has-text-left-fullhd{text-align:left!important}}@media screen and (max-width:768px){.has-text-right-mobile{text-align:right!important}}@media screen and (min-width:769px),print{.has-text-right-tablet{text-align:right!important}}@media screen and (min-width:769px) and (max-width:1023px){.has-text-right-tablet-only{text-align:right!important}}@media screen and (max-width:1023px){.has-text-right-touch{text-align:right!important}}@media screen and (min-width:1024px){.has-text-right-desktop{text-align:right!important}}@media screen and (min-width:1024px) and (max-width:1215px){.has-text-right-desktop-only{text-align:right!important}}@media screen and (min-width:1216px){.has-text-right-widescreen{text-align:right!important}}@media screen and (min-width:1216px) and (max-width:1407px){.has-text-right-widescreen-only{text-align:right!important}}@media screen and (min-width:1408px){.has-text-right-fullhd{text-align:right!important}}.is-capitalized{text-transform:capitalize!important}.is-lowercase{text-transform:lowercase!important}.is-uppercase{text-transform:uppercase!important}.is-italic{font-style:italic!important}.is-underlined{text-decoration:underline!important}.has-text-weight-light{font-weight:300!important}.has-text-weight-normal{font-weight:400!important}.has-text-weight-medium{font-weight:500!important}.has-text-weight-semibold{font-weight:600!important}.has-text-weight-bold{font-weight:700!important}.is-family-primary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-secondary{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-sans-serif{font-family:BlinkMacSystemFont,-apple-system,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Helvetica,Arial,sans-serif!important}.is-family-monospace{font-family:monospace!important}.is-family-code{font-family:monospace!important}.is-block{display:block!important}@media screen and (max-width:768px){.is-block-mobile{display:block!important}}@media screen and (min-width:769px),print{.is-block-tablet{display:block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-block-tablet-only{display:block!important}}@media screen and (max-width:1023px){.is-block-touch{display:block!important}}@media screen and (min-width:1024px){.is-block-desktop{display:block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-block-desktop-only{display:block!important}}@media screen and (min-width:1216px){.is-block-widescreen{display:block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-block-widescreen-only{display:block!important}}@media screen and (min-width:1408px){.is-block-fullhd{display:block!important}}.is-flex{display:flex!important}@media screen and (max-width:768px){.is-flex-mobile{display:flex!important}}@media screen and (min-width:769px),print{.is-flex-tablet{display:flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-flex-tablet-only{display:flex!important}}@media screen and (max-width:1023px){.is-flex-touch{display:flex!important}}@media screen and (min-width:1024px){.is-flex-desktop{display:flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-flex-desktop-only{display:flex!important}}@media screen and (min-width:1216px){.is-flex-widescreen{display:flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-flex-widescreen-only{display:flex!important}}@media screen and (min-width:1408px){.is-flex-fullhd{display:flex!important}}.is-inline{display:inline!important}@media screen and (max-width:768px){.is-inline-mobile{display:inline!important}}@media screen and (min-width:769px),print{.is-inline-tablet{display:inline!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-tablet-only{display:inline!important}}@media screen and (max-width:1023px){.is-inline-touch{display:inline!important}}@media screen and (min-width:1024px){.is-inline-desktop{display:inline!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-desktop-only{display:inline!important}}@media screen and (min-width:1216px){.is-inline-widescreen{display:inline!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-widescreen-only{display:inline!important}}@media screen and (min-width:1408px){.is-inline-fullhd{display:inline!important}}.is-inline-block{display:inline-block!important}@media screen and (max-width:768px){.is-inline-block-mobile{display:inline-block!important}}@media screen and (min-width:769px),print{.is-inline-block-tablet{display:inline-block!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-block-tablet-only{display:inline-block!important}}@media screen and (max-width:1023px){.is-inline-block-touch{display:inline-block!important}}@media screen and (min-width:1024px){.is-inline-block-desktop{display:inline-block!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-block-desktop-only{display:inline-block!important}}@media screen and (min-width:1216px){.is-inline-block-widescreen{display:inline-block!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-block-widescreen-only{display:inline-block!important}}@media screen and (min-width:1408px){.is-inline-block-fullhd{display:inline-block!important}}.is-inline-flex{display:inline-flex!important}@media screen and (max-width:768px){.is-inline-flex-mobile{display:inline-flex!important}}@media screen and (min-width:769px),print{.is-inline-flex-tablet{display:inline-flex!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-inline-flex-tablet-only{display:inline-flex!important}}@media screen and (max-width:1023px){.is-inline-flex-touch{display:inline-flex!important}}@media screen and (min-width:1024px){.is-inline-flex-desktop{display:inline-flex!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-inline-flex-desktop-only{display:inline-flex!important}}@media screen and (min-width:1216px){.is-inline-flex-widescreen{display:inline-flex!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-inline-flex-widescreen-only{display:inline-flex!important}}@media screen and (min-width:1408px){.is-inline-flex-fullhd{display:inline-flex!important}}.is-hidden{display:none!important}.is-sr-only{border:none!important;clip:rect(0,0,0,0)!important;height:.01em!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:.01em!important}@media screen and (max-width:768px){.is-hidden-mobile{display:none!important}}@media screen and (min-width:769px),print{.is-hidden-tablet{display:none!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-hidden-tablet-only{display:none!important}}@media screen and (max-width:1023px){.is-hidden-touch{display:none!important}}@media screen and (min-width:1024px){.is-hidden-desktop{display:none!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-hidden-desktop-only{display:none!important}}@media screen and (min-width:1216px){.is-hidden-widescreen{display:none!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-hidden-widescreen-only{display:none!important}}@media screen and (min-width:1408px){.is-hidden-fullhd{display:none!important}}.is-invisible{visibility:hidden!important}@media screen and (max-width:768px){.is-invisible-mobile{visibility:hidden!important}}@media screen and (min-width:769px),print{.is-invisible-tablet{visibility:hidden!important}}@media screen and (min-width:769px) and (max-width:1023px){.is-invisible-tablet-only{visibility:hidden!important}}@media screen and (max-width:1023px){.is-invisible-touch{visibility:hidden!important}}@media screen and (min-width:1024px){.is-invisible-desktop{visibility:hidden!important}}@media screen and (min-width:1024px) and (max-width:1215px){.is-invisible-desktop-only{visibility:hidden!important}}@media screen and (min-width:1216px){.is-invisible-widescreen{visibility:hidden!important}}@media screen and (min-width:1216px) and (max-width:1407px){.is-invisible-widescreen-only{visibility:hidden!important}}@media screen and (min-width:1408px){.is-invisible-fullhd{visibility:hidden!important}}.hero{align-items:stretch;display:flex;flex-direction:column;justify-content:space-between}.hero .navbar{background:0 0}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a:not(.button),.hero.is-white .subtitle strong{color:#0a0a0a}@media screen and (max-width:1023px){.hero.is-white .navbar-menu{background-color:#fff}}.hero.is-white .navbar-item,.hero.is-white .navbar-link{color:rgba(10,10,10,.7)}.hero.is-white .navbar-link.is-active,.hero.is-white .navbar-link:hover,.hero.is-white a.navbar-item.is-active,.hero.is-white a.navbar-item:hover{background-color:#f2f2f2;color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{color:#fff!important;opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-white.is-bold .navbar-menu{background-image:linear-gradient(141deg,#e6e6e6 0,#fff 71%,#fff 100%)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a:not(.button),.hero.is-black .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-black .navbar-menu{background-color:#0a0a0a}}.hero.is-black .navbar-item,.hero.is-black .navbar-link{color:rgba(255,255,255,.7)}.hero.is-black .navbar-link.is-active,.hero.is-black .navbar-link:hover,.hero.is-black a.navbar-item.is-active,.hero.is-black a.navbar-item:hover{background-color:#000;color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{color:#0a0a0a!important;opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}@media screen and (max-width:768px){.hero.is-black.is-bold .navbar-menu{background-image:linear-gradient(141deg,#000 0,#0a0a0a 71%,#181616 100%)}}.hero.is-light{background-color:#f5f5f5;color:rgba(0,0,0,.7)}.hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-light strong{color:inherit}.hero.is-light .title{color:rgba(0,0,0,.7)}.hero.is-light .subtitle{color:rgba(0,0,0,.9)}.hero.is-light .subtitle a:not(.button),.hero.is-light .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-light .navbar-menu{background-color:#f5f5f5}}.hero.is-light .navbar-item,.hero.is-light .navbar-link{color:rgba(0,0,0,.7)}.hero.is-light .navbar-link.is-active,.hero.is-light .navbar-link:hover,.hero.is-light a.navbar-item.is-active,.hero.is-light a.navbar-item:hover{background-color:#e8e8e8;color:rgba(0,0,0,.7)}.hero.is-light .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{color:#f5f5f5!important;opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#f5f5f5}.hero.is-light.is-bold{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-light.is-bold .navbar-menu{background-image:linear-gradient(141deg,#dfd8d9 0,#f5f5f5 71%,#fff 100%)}}.hero.is-dark{background-color:#363636;color:#fff}.hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#fff}.hero.is-dark .subtitle{color:rgba(255,255,255,.9)}.hero.is-dark .subtitle a:not(.button),.hero.is-dark .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-dark .navbar-menu{background-color:#363636}}.hero.is-dark .navbar-item,.hero.is-dark .navbar-link{color:rgba(255,255,255,.7)}.hero.is-dark .navbar-link.is-active,.hero.is-dark .navbar-link:hover,.hero.is-dark a.navbar-item.is-active,.hero.is-dark a.navbar-item:hover{background-color:#292929;color:#fff}.hero.is-dark .tabs a{color:#fff;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{color:#363636!important;opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#fff}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#363636}.hero.is-dark.is-bold{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}@media screen and (max-width:768px){.hero.is-dark.is-bold .navbar-menu{background-image:linear-gradient(141deg,#1f191a 0,#363636 71%,#46403f 100%)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a:not(.button),.hero.is-primary .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-primary .navbar-menu{background-color:#00d1b2}}.hero.is-primary .navbar-item,.hero.is-primary .navbar-link{color:rgba(255,255,255,.7)}.hero.is-primary .navbar-link.is-active,.hero.is-primary .navbar-link:hover,.hero.is-primary a.navbar-item.is-active,.hero.is-primary a.navbar-item:hover{background-color:#00b89c;color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{color:#00d1b2!important;opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}@media screen and (max-width:768px){.hero.is-primary.is-bold .navbar-menu{background-image:linear-gradient(141deg,#009e6c 0,#00d1b2 71%,#00e7eb 100%)}}.hero.is-link{background-color:#485fc7;color:#fff}.hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-link strong{color:inherit}.hero.is-link .title{color:#fff}.hero.is-link .subtitle{color:rgba(255,255,255,.9)}.hero.is-link .subtitle a:not(.button),.hero.is-link .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-link .navbar-menu{background-color:#485fc7}}.hero.is-link .navbar-item,.hero.is-link .navbar-link{color:rgba(255,255,255,.7)}.hero.is-link .navbar-link.is-active,.hero.is-link .navbar-link:hover,.hero.is-link a.navbar-item.is-active,.hero.is-link a.navbar-item:hover{background-color:#3a51bb;color:#fff}.hero.is-link .tabs a{color:#fff;opacity:.9}.hero.is-link .tabs a:hover{opacity:1}.hero.is-link .tabs li.is-active a{color:#485fc7!important;opacity:1}.hero.is-link .tabs.is-boxed a,.hero.is-link .tabs.is-toggle a{color:#fff}.hero.is-link .tabs.is-boxed a:hover,.hero.is-link .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-link .tabs.is-boxed li.is-active a,.hero.is-link .tabs.is-boxed li.is-active a:hover,.hero.is-link .tabs.is-toggle li.is-active a,.hero.is-link .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#485fc7}.hero.is-link.is-bold{background-image:linear-gradient(141deg,#2959b3 0,#485fc7 71%,#5658d2 100%)}@media screen and (max-width:768px){.hero.is-link.is-bold .navbar-menu{background-image:linear-gradient(141deg,#2959b3 0,#485fc7 71%,#5658d2 100%)}}.hero.is-info{background-color:#3e8ed0;color:#fff}.hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a:not(.button),.hero.is-info .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-info .navbar-menu{background-color:#3e8ed0}}.hero.is-info .navbar-item,.hero.is-info .navbar-link{color:rgba(255,255,255,.7)}.hero.is-info .navbar-link.is-active,.hero.is-info .navbar-link:hover,.hero.is-info a.navbar-item.is-active,.hero.is-info a.navbar-item:hover{background-color:#3082c5;color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{color:#3e8ed0!important;opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3e8ed0}.hero.is-info.is-bold{background-image:linear-gradient(141deg,#208fbc 0,#3e8ed0 71%,#4d83db 100%)}@media screen and (max-width:768px){.hero.is-info.is-bold .navbar-menu{background-image:linear-gradient(141deg,#208fbc 0,#3e8ed0 71%,#4d83db 100%)}}.hero.is-success{background-color:#48c78e;color:#fff}.hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a:not(.button),.hero.is-success .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-success .navbar-menu{background-color:#48c78e}}.hero.is-success .navbar-item,.hero.is-success .navbar-link{color:rgba(255,255,255,.7)}.hero.is-success .navbar-link.is-active,.hero.is-success .navbar-link:hover,.hero.is-success a.navbar-item.is-active,.hero.is-success a.navbar-item:hover{background-color:#3abb81;color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{color:#48c78e!important;opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#48c78e}.hero.is-success.is-bold{background-image:linear-gradient(141deg,#29b35e 0,#48c78e 71%,#56d2af 100%)}@media screen and (max-width:768px){.hero.is-success.is-bold .navbar-menu{background-image:linear-gradient(141deg,#29b35e 0,#48c78e 71%,#56d2af 100%)}}.hero.is-warning{background-color:#ffe08a;color:rgba(0,0,0,.7)}.hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a:not(.button),.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}@media screen and (max-width:1023px){.hero.is-warning .navbar-menu{background-color:#ffe08a}}.hero.is-warning .navbar-item,.hero.is-warning .navbar-link{color:rgba(0,0,0,.7)}.hero.is-warning .navbar-link.is-active,.hero.is-warning .navbar-link:hover,.hero.is-warning a.navbar-item.is-active,.hero.is-warning a.navbar-item:hover{background-color:#ffd970;color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{color:#ffe08a!important;opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffe08a}.hero.is-warning.is-bold{background-image:linear-gradient(141deg,#ffb657 0,#ffe08a 71%,#fff6a3 100%)}@media screen and (max-width:768px){.hero.is-warning.is-bold .navbar-menu{background-image:linear-gradient(141deg,#ffb657 0,#ffe08a 71%,#fff6a3 100%)}}.hero.is-danger{background-color:#f14668;color:#fff}.hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current),.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a:not(.button),.hero.is-danger .subtitle strong{color:#fff}@media screen and (max-width:1023px){.hero.is-danger .navbar-menu{background-color:#f14668}}.hero.is-danger .navbar-item,.hero.is-danger .navbar-link{color:rgba(255,255,255,.7)}.hero.is-danger .navbar-link.is-active,.hero.is-danger .navbar-link:hover,.hero.is-danger a.navbar-item.is-active,.hero.is-danger a.navbar-item:hover{background-color:#ef2e55;color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{color:#f14668!important;opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#f14668}.hero.is-danger.is-bold{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}@media screen and (max-width:768px){.hero.is-danger.is-bold .navbar-menu{background-image:linear-gradient(141deg,#fa0a62 0,#f14668 71%,#f7595f 100%)}}.hero.is-small .hero-body{padding:1.5rem}@media screen and (min-width:769px),print{.hero.is-medium .hero-body{padding:9rem 4.5rem}}@media screen and (min-width:769px),print{.hero.is-large .hero-body{padding:18rem 6rem}}.hero.is-fullheight .hero-body,.hero.is-fullheight-with-navbar .hero-body,.hero.is-halfheight .hero-body{align-items:center;display:flex}.hero.is-fullheight .hero-body>.container,.hero.is-fullheight-with-navbar .hero-body>.container,.hero.is-halfheight .hero-body>.container{flex-grow:1;flex-shrink:1}.hero.is-halfheight{min-height:50vh}.hero.is-fullheight{min-height:100vh}.hero-video{overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;transform:translate3d(-50%,-50%,0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width:768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width:768px){.hero-buttons .button{display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width:769px),print{.hero-buttons{display:flex;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-foot,.hero-head{flex-grow:0;flex-shrink:0}.hero-body{flex-grow:1;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width:769px),print{.hero-body{padding:3rem 3rem}}.section{padding:3rem 1.5rem}@media screen and (min-width:1024px){.section{padding:3rem 3rem}.section.is-medium{padding:9rem 4.5rem}.section.is-large{padding:18rem 6rem}}.footer{background-color:#fafafa;padding:3rem 1.5rem 6rem} \ No newline at end of file diff --git a/src/cambiare/index.mjs b/src/cambiare/index.mjs new file mode 100644 index 00000000..3918c74e --- /dev/null +++ b/src/cambiare/index.mjs @@ -0,0 +1 @@ +"use strict"; diff --git a/src/cambiare_demo/index.js b/src/cambiare_demo/index.js new file mode 100644 index 00000000..3918c74e --- /dev/null +++ b/src/cambiare_demo/index.js @@ -0,0 +1 @@ +"use strict"; diff --git a/test/cambiare.htm b/test/cambiare.htm new file mode 100644 index 00000000..fd3d7f78 --- /dev/null +++ b/test/cambiare.htm @@ -0,0 +1,17 @@ + + + + Octavia Cambiare (beta) + + + + + + + + + + + + + diff --git a/test/css/bulma.css b/test/css/bulma.css new file mode 120000 index 00000000..a948d802 --- /dev/null +++ b/test/css/bulma.css @@ -0,0 +1 @@ +../../libs/bulma@jgthms/bulma.min.css \ No newline at end of file diff --git a/test/css/cambiare.css b/test/css/cambiare.css new file mode 100644 index 00000000..e69de29b diff --git a/test/js/cambiare.mjs b/test/js/cambiare.mjs new file mode 120000 index 00000000..2514fdde --- /dev/null +++ b/test/js/cambiare.mjs @@ -0,0 +1 @@ +../../dist/cambiare.mjs \ No newline at end of file diff --git a/test/js/cambiare_demo.js b/test/js/cambiare_demo.js new file mode 120000 index 00000000..36d4eab2 --- /dev/null +++ b/test/js/cambiare_demo.js @@ -0,0 +1 @@ +../../dist/cambiare_demo.js \ No newline at end of file From ce8751e4a9c4f5e7dafa1b0b86fb63d7bf651162 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Sat, 24 Jun 2023 10:54:18 +0000 Subject: [PATCH 26/31] Add AlpineJS. --- libs/alpine@alpinejs/alpine.min.js | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 libs/alpine@alpinejs/alpine.min.js diff --git a/libs/alpine@alpinejs/alpine.min.js b/libs/alpine@alpinejs/alpine.min.js new file mode 100644 index 00000000..0f3b603b --- /dev/null +++ b/libs/alpine@alpinejs/alpine.min.js @@ -0,0 +1,5 @@ +"use strict";var Ye=!1,Xe=!1,V=[],Ze=-1;function Bt(e){bn(e)}function bn(e){V.includes(e)||V.push(e),vn()}function ye(e){let t=V.indexOf(e);t!==-1&&t>Ze&&V.splice(t,1)}function vn(){!Xe&&!Ye&&(Ye=!0,queueMicrotask(wn))}function wn(){Ye=!1,Xe=!0;for(let e=0;ee.effect(t,{scheduler:r=>{et?Bt(r):r()}}),Qe=e.raw}function tt(e){P=e}function Vt(e){let t=()=>{};return[n=>{let i=P(n);return e._x_effects||(e._x_effects=new Set,e._x_runEffects=()=>{e._x_effects.forEach(o=>o())}),e._x_effects.add(i),t=()=>{i!==void 0&&(e._x_effects.delete(i),$(i))},i},()=>{t()}]}var Ht=[],qt=[],Ut=[];function Wt(e){Ut.push(e)}function be(e,t){typeof t=="function"?(e._x_cleanups||(e._x_cleanups=[]),e._x_cleanups.push(t)):(t=e,qt.push(t))}function Gt(e){Ht.push(e)}function Jt(e,t,r){e._x_attributeCleanups||(e._x_attributeCleanups={}),e._x_attributeCleanups[t]||(e._x_attributeCleanups[t]=[]),e._x_attributeCleanups[t].push(r)}function rt(e,t){!e._x_attributeCleanups||Object.entries(e._x_attributeCleanups).forEach(([r,n])=>{(t===void 0||t.includes(r))&&(n.forEach(i=>i()),delete e._x_attributeCleanups[r])})}var it=new MutationObserver(nt),ot=!1;function se(){it.observe(document,{subtree:!0,childList:!0,attributes:!0,attributeOldValue:!0}),ot=!0}function st(){En(),it.disconnect(),ot=!1}var ae=[],at=!1;function En(){ae=ae.concat(it.takeRecords()),ae.length&&!at&&(at=!0,queueMicrotask(()=>{Sn(),at=!1}))}function Sn(){nt(ae),ae.length=0}function h(e){if(!ot)return e();st();let t=e();return se(),t}var ct=!1,ve=[];function Yt(){ct=!0}function Xt(){ct=!1,nt(ve),ve=[]}function nt(e){if(ct){ve=ve.concat(e);return}let t=[],r=[],n=new Map,i=new Map;for(let o=0;os.nodeType===1&&t.push(s)),e[o].removedNodes.forEach(s=>s.nodeType===1&&r.push(s))),e[o].type==="attributes")){let s=e[o].target,a=e[o].attributeName,c=e[o].oldValue,l=()=>{n.has(s)||n.set(s,[]),n.get(s).push({name:a,value:s.getAttribute(a)})},u=()=>{i.has(s)||i.set(s,[]),i.get(s).push(a)};s.hasAttribute(a)&&c===null?l():s.hasAttribute(a)?(u(),l()):u()}i.forEach((o,s)=>{rt(s,o)}),n.forEach((o,s)=>{Ht.forEach(a=>a(s,o))});for(let o of r)if(!t.includes(o)&&(qt.forEach(s=>s(o)),o._x_cleanups))for(;o._x_cleanups.length;)o._x_cleanups.pop()();t.forEach(o=>{o._x_ignoreSelf=!0,o._x_ignore=!0});for(let o of t)r.includes(o)||!o.isConnected||(delete o._x_ignoreSelf,delete o._x_ignore,Ut.forEach(s=>s(o)),o._x_ignore=!0,o._x_ignoreSelf=!0);t.forEach(o=>{delete o._x_ignoreSelf,delete o._x_ignore}),t=null,r=null,n=null,i=null}function we(e){return F(L(e))}function M(e,t,r){return e._x_dataStack=[t,...L(r||e)],()=>{e._x_dataStack=e._x_dataStack.filter(n=>n!==t)}}function L(e){return e._x_dataStack?e._x_dataStack:typeof ShadowRoot=="function"&&e instanceof ShadowRoot?L(e.host):e.parentNode?L(e.parentNode):[]}function F(e){let t=new Proxy({},{ownKeys:()=>Array.from(new Set(e.flatMap(r=>Object.keys(r)))),has:(r,n)=>e.some(i=>i.hasOwnProperty(n)),get:(r,n)=>(e.find(i=>{if(i.hasOwnProperty(n)){let o=Object.getOwnPropertyDescriptor(i,n);if(o.get&&o.get._x_alreadyBound||o.set&&o.set._x_alreadyBound)return!0;if((o.get||o.set)&&o.enumerable){let s=o.get,a=o.set,c=o;s=s&&s.bind(t),a=a&&a.bind(t),s&&(s._x_alreadyBound=!0),a&&(a._x_alreadyBound=!0),Object.defineProperty(i,n,{...c,get:s,set:a})}return!0}return!1})||{})[n],set:(r,n,i)=>{let o=e.find(s=>s.hasOwnProperty(n));return o?o[n]=i:e[e.length-1][n]=i,!0}});return t}function Ee(e){let t=n=>typeof n=="object"&&!Array.isArray(n)&&n!==null,r=(n,i="")=>{Object.entries(Object.getOwnPropertyDescriptors(n)).forEach(([o,{value:s,enumerable:a}])=>{if(a===!1||s===void 0)return;let c=i===""?o:`${i}.${o}`;typeof s=="object"&&s!==null&&s._x_interceptor?n[o]=s.initialize(e,c,o):t(s)&&s!==n&&!(s instanceof Element)&&r(s,c)})};return r(e)}function Se(e,t=()=>{}){let r={initialValue:void 0,_x_interceptor:!0,initialize(n,i,o){return e(this.initialValue,()=>An(n,i),s=>lt(n,i,s),i,o)}};return t(r),n=>{if(typeof n=="object"&&n!==null&&n._x_interceptor){let i=r.initialize.bind(r);r.initialize=(o,s,a)=>{let c=n.initialize(o,s,a);return r.initialValue=c,i(o,s,a)}}else r.initialValue=n;return r}}function An(e,t){return t.split(".").reduce((r,n)=>r[n],e)}function lt(e,t,r){if(typeof t=="string"&&(t=t.split(".")),t.length===1)e[t[0]]=r;else{if(t.length===0)throw error;return e[t[0]]||(e[t[0]]={}),lt(e[t[0]],t.slice(1),r)}}var Zt={};function y(e,t){Zt[e]=t}function ce(e,t){return Object.entries(Zt).forEach(([r,n])=>{let i=null;function o(){if(i)return i;{let[s,a]=ut(t);return i={interceptor:Se,...s},be(t,a),i}}Object.defineProperty(e,`$${r}`,{get(){return n(t,o())},enumerable:!1})}),e}function Qt(e,t,r,...n){try{return r(...n)}catch(i){X(i,e,t)}}function X(e,t,r=void 0){Object.assign(e,{el:t,expression:r}),console.warn(`Alpine Expression Error: ${e.message} + +${r?'Expression: "'+r+`" + +`:""}`,t),setTimeout(()=>{throw e},0)}var Ae=!0;function er(e){let t=Ae;Ae=!1,e(),Ae=t}function D(e,t,r={}){let n;return x(e,t)(i=>n=i,r),n}function x(...e){return tr(...e)}var tr=ft;function rr(e){tr=e}function ft(e,t){let r={};ce(r,e);let n=[r,...L(e)],i=typeof t=="function"?On(n,t):Tn(n,t,e);return Qt.bind(null,e,t,i)}function On(e,t){return(r=()=>{},{scope:n={},params:i=[]}={})=>{let o=t.apply(F([n,...e]),i);Oe(r,o)}}var dt={};function Cn(e,t){if(dt[e])return dt[e];let r=Object.getPrototypeOf(async function(){}).constructor,n=/^[\n\s]*if.*\(.*\)/.test(e)||/^(let|const)\s/.test(e)?`(async()=>{ ${e} })()`:e,o=(()=>{try{return new r(["__self","scope"],`with (scope) { __self.result = ${n} }; __self.finished = true; return __self.result;`)}catch(s){return X(s,t,e),Promise.resolve()}})();return dt[e]=o,o}function Tn(e,t,r){let n=Cn(t,r);return(i=()=>{},{scope:o={},params:s=[]}={})=>{n.result=void 0,n.finished=!1;let a=F([o,...e]);if(typeof n=="function"){let c=n(n,a).catch(l=>X(l,r,t));n.finished?(Oe(i,n.result,a,s,r),n.result=void 0):c.then(l=>{Oe(i,l,a,s,r)}).catch(l=>X(l,r,t)).finally(()=>n.result=void 0)}}}function Oe(e,t,r,n,i){if(Ae&&typeof t=="function"){let o=t.apply(r,n);o instanceof Promise?o.then(s=>Oe(e,s,r,n)).catch(s=>X(s,i,t)):e(o)}else typeof t=="object"&&t instanceof Promise?t.then(o=>e(o)):e(t)}var pt="x-";function O(e=""){return pt+e}function nr(e){pt=e}var mt={};function p(e,t){return mt[e]=t,{before(r){if(!mt[r]){console.warn("Cannot find directive `${directive}`. `${name}` will use the default order of execution");return}let n=H.indexOf(r);H.splice(n>=0?n:H.indexOf("DEFAULT"),0,e)}}}function le(e,t,r){if(t=Array.from(t),e._x_virtualDirectives){let o=Object.entries(e._x_virtualDirectives).map(([a,c])=>({name:a,value:c})),s=ht(o);o=o.map(a=>s.find(c=>c.name===a.name)?{name:`x-bind:${a.name}`,value:`"${a.value}"`}:a),t=t.concat(o)}let n={};return t.map(ir((o,s)=>n[o]=s)).filter(or).map(Mn(n,r)).sort(Nn).map(o=>Rn(e,o))}function ht(e){return Array.from(e).map(ir()).filter(t=>!or(t))}var _t=!1,ue=new Map,sr=Symbol();function ar(e){_t=!0;let t=Symbol();sr=t,ue.set(t,[]);let r=()=>{for(;ue.get(t).length;)ue.get(t).shift()();ue.delete(t)},n=()=>{_t=!1,r()};e(r),n()}function ut(e){let t=[],r=a=>t.push(a),[n,i]=Vt(e);return t.push(i),[{Alpine:j,effect:n,cleanup:r,evaluateLater:x.bind(x,e),evaluate:D.bind(D,e)},()=>t.forEach(a=>a())]}function Rn(e,t){let r=()=>{},n=mt[t.type]||r,[i,o]=ut(e);Jt(e,t.original,o);let s=()=>{e._x_ignore||e._x_ignoreSelf||(n.inline&&n.inline(e,t,i),n=n.bind(n,e,t,i),_t?ue.get(sr).push(n):n())};return s.runCleanups=o,s}var Te=(e,t)=>({name:r,value:n})=>(r.startsWith(e)&&(r=r.replace(e,t)),{name:r,value:n}),Ce=e=>e;function ir(e=()=>{}){return({name:t,value:r})=>{let{name:n,value:i}=cr.reduce((o,s)=>s(o),{name:t,value:r});return n!==t&&e(n,t),{name:n,value:i}}}var cr=[];function Z(e){cr.push(e)}function or({name:e}){return lr().test(e)}var lr=()=>new RegExp(`^${pt}([^:^.]+)\\b`);function Mn(e,t){return({name:r,value:n})=>{let i=r.match(lr()),o=r.match(/:([a-zA-Z0-9\-:]+)/),s=r.match(/\.[^.\]]+(?=[^\]]*$)/g)||[],a=t||e[r]||r;return{type:i?i[1]:null,value:o?o[1]:null,modifiers:s.map(c=>c.replace(".","")),expression:n,original:a}}}var gt="DEFAULT",H=["ignore","ref","data","id","bind","init","for","model","modelable","transition","show","if",gt,"teleport"];function Nn(e,t){let r=H.indexOf(e.type)===-1?gt:e.type,n=H.indexOf(t.type)===-1?gt:t.type;return H.indexOf(r)-H.indexOf(n)}function q(e,t,r={}){e.dispatchEvent(new CustomEvent(t,{detail:r,bubbles:!0,composed:!0,cancelable:!0}))}function T(e,t){if(typeof ShadowRoot=="function"&&e instanceof ShadowRoot){Array.from(e.children).forEach(i=>T(i,t));return}let r=!1;if(t(e,()=>r=!0),r)return;let n=e.firstElementChild;for(;n;)T(n,t,!1),n=n.nextElementSibling}function S(e,...t){console.warn(`Alpine Warning: ${e}`,...t)}var ur=!1;function dr(){ur&&S("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),ur=!0,document.body||S("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's ` +
          +
          +
          Open from
          +
          MIDI
          +
          audio
          +
          capture
          +
          line in
          +
          line out
          +
          +
          +
          +
          Set mode to
          + +
          +
          +
          +
          Display mode
          + +
          Starting port
          + +
          +
          +
          +
          Audio
          +
          Play
          +
          +
          +
          +
          +
          +
          +
          +
          Demo
          + +
          +
          +
          +
          diff --git a/test/css/cambiare.css b/test/css/cambiare.css index e69de29b..0e96a498 100644 --- a/test/css/cambiare.css +++ b/test/css/cambiare.css @@ -0,0 +1,20 @@ +div.cambiare { + font-family: "PT Sans Narrow"; + width: 100vw; + height: 100vh; + display: grid; + align-items: center; + justify-content: center; + background: #000; +} + +div.cambiare > div.cambiare-container { + overflow: hidden; +} + +div.cambiare div.cambiare-canvas { + background: #222; + width: 1920px; + height: 1080px; + transform-origin: 0 0; +} diff --git a/test/css/cambiare_demo.css b/test/css/cambiare_demo.css new file mode 100644 index 00000000..17e9db92 --- /dev/null +++ b/test/css/cambiare_demo.css @@ -0,0 +1,38 @@ +body { + font-family: "PT Sans Narrow"; +} + +.is-full-height { + min-height: 100vh; +} + +.container { + padding: 16px; + font-size: 20px; + cursor: default; +} +.column-option { + max-width: max-content; + height: max-content; + border: 2px solid #0000; + border-radius: 4px; + padding: 0.6rem; + margin: 0.15rem; +} +.column-option[active='true']{ + border-color: #0008; +} +.column-button { + background: #0000; + transition: background 0.2s; +} +.column-button:hover { + background: #0001; +} +.column-button[disabled='true'] { + opacity: 0.5; +} + +.cambiare { + margin: 0 auto; +} diff --git a/test/css/fonts.css b/test/css/fonts.css index 4f4e5127..0618428b 100644 --- a/test/css/fonts.css +++ b/test/css/fonts.css @@ -12,7 +12,13 @@ font-weight: 700; src: url("../font/arialbd.woff2") format("woff2"); } - -body { - font-family: "Noto Sans Mono", "Noto Sans Mono Web", mono; +@font-face { + font-family: "PT Sans Narrow"; + font-weight: 400; + src: local("PT Sans Narrow"), url("../font/PTSansNarrow.woff2") format("woff2"); +} +@font-face { + font-family: "PT Sans Narrow"; + font-weight: 700; + src: url("../font/PTSansNarrow_b.woff2") format("woff2"); } diff --git a/test/css/tui.css b/test/css/tui.css index 942d2919..0f63b608 100644 --- a/test/css/tui.css +++ b/test/css/tui.css @@ -1,5 +1,6 @@ body { min-width: 768px; + font-family: "Noto Sans Mono", "Noto Sans Mono Web", mono; } p { diff --git a/test/font/PTSansNarrow.woff2 b/test/font/PTSansNarrow.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..af5a3c6bee4986fd04eebb9df73cf848179fb113 GIT binary patch literal 91440 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�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 H1^@s6diG)a literal 0 HcmV?d00001 diff --git a/test/font/PTSansNarrow_b.woff2 b/test/font/PTSansNarrow_b.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..2040bb0de525e89e5eef79fad4a6c6ebcc14e116 GIT binary patch literal 124496 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

        • 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 Baccko literal 0 HcmV?d00001 From 59caa42507e3ca57ce622e4ddd42df8378c0e666 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Sun, 25 Jun 2023 15:27:58 +0000 Subject: [PATCH 28/31] Pushing all lingering modifications. --- test/cambiare.htm | 2 +- test/css/cambiare_demo.css | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/cambiare.htm b/test/cambiare.htm index 614fa783..781e6611 100644 --- a/test/cambiare.htm +++ b/test/cambiare.htm @@ -16,7 +16,7 @@ -
          +
          Open from
          MIDI
          diff --git a/test/css/cambiare_demo.css b/test/css/cambiare_demo.css index 17e9db92..73f80e71 100644 --- a/test/css/cambiare_demo.css +++ b/test/css/cambiare_demo.css @@ -7,7 +7,7 @@ body { } .container { - padding: 16px; + padding: 24px; font-size: 20px; cursor: default; } From 4b4fa2af16f068e1610149c76864aaff5874a519 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Wed, 28 Jun 2023 04:38:17 +0000 Subject: [PATCH 29/31] Removed AG-10 and merged it with 05R/W / X5D. --- dist/basic.mjs | 2 +- dist/cambiare.mjs | 4 ++-- dist/state.mjs | 26 +++++++++++++------------- dist/state_skim.mjs | 2 +- dist/xp_basic.mjs | 4 ++-- dist/xp_state.mjs | 4 ++-- src/disp/disp_mu.mjs | 5 ++++- src/fakeMu/index.js | 15 ++++++++++----- src/state/index.mjs | 7 +++---- 9 files changed, 38 insertions(+), 31 deletions(-) diff --git a/dist/basic.mjs b/dist/basic.mjs index aa43539b..7ff11e1a 100644 --- a/dist/basic.mjs +++ b/dist/basic.mjs @@ -138,4 +138,4 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let i=e.split(",");W[i[0]]=i[1]});var U=function(e,i,o){let r=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${r}`),r.pop(),i.backOne(),i.backOne(),new Uint8Array(r)}}}return new Uint8Array(r)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var w={length:S.length};S.forEach((e,i)=>{w[e]=i});var A={length:v.length};v.forEach((e,i)=>{A[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var M=q(N(),1);var L=class{#e=!1;constructor(e,i,o,r){this.#e=e,this.start=i,this.end=o,this.data=r}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},C=class extends L{constructor(e,i,o){super(!0,e,i,o)}},B=class extends L{constructor(e,i){super(!1,e,e,i)}},T=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let r=0;re);r++){if(this[r].endt.#e&&(o.push(a),t.#e=a.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],r=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let l=0;l=e&&(r=l):r=r<0?l:r;for(;a;)this[r]?.end=e&&o.push(this[r]):a=!1,r++;return o}};var ee=0xffffffffffff,H=function(e){let i=new T,o=this,r=e.timeDivision,t=120,a=new T,l=0,f=0;a.push(new C(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,a[a.length-1]&&a.push(new C(l,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;a.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return a.forEach(function(s){let n=s.start,h=n/b/r*60+p;b=s.data[0],p=h-n/b/r*60,s.data[1]=p}),console.debug("All tempo changes: ",a),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=a.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/r*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};M.default.customInterpreter=U;var rt=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#r=.5;#l=120;#t=4;#o=4;#a=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#r=.5,this.#l=120,this.#t=4,this.#o=4,this.#a=0,this.#c=0}async loadFile(e){this.#e=H(M.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#r}get noteOverall(){return this.noteProgress-this.#a}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,r=new Set,t=this,a=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?r.add(c.part*128+c.data[0]):r.has(c.part*128+c.data[0])&&o++),u.data.type==8&&r.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{a.push(g);break}}g?.reply&&delete g.reply}),a?.length>0&&this.dispatchEvent("meta",a);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=w.length*c;if(y>=0){let E=4*.25**(p[R+w[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+w[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let r=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(r.#i[a.meta]||console.debug).call(r,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){r.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){r.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){r.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){r.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){r.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){r.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,a){r.#s?.length<1&&(r.#s=a)},this.#i[81]=function(t,a){let l=r.noteProgress,f=r.#r||.5;r.#l=6e7/a,r.#r=a/1e6,r.#a+=l*(f/r.#r)-l},this.#i[88]=function(t,a){let l=r.noteProgress,f=r.noteOverall,$=r.noteBar,p=r.noteBeat,b=r.#t,s=r.#o;r.#t=a[0],r.#o=1<=b&&(b{let i=e.split(",");W[i[0]]=i[1]});var U=function(e,i,o){let r=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${r}`),r.pop(),i.backOne(),i.backOne(),new Uint8Array(r)}}}return new Uint8Array(r)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var w={length:S.length};S.forEach((e,i)=>{w[e]=i});var A={length:v.length};v.forEach((e,i)=>{A[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var M=q(N(),1);var L=class{#e=!1;constructor(e,i,o,r){this.#e=e,this.start=i,this.end=o,this.data=r}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},C=class extends L{constructor(e,i,o){super(!0,e,i,o)}},B=class extends L{constructor(e,i){super(!1,e,e,i)}},T=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let r=0;re);r++){if(this[r].endt.#e&&(o.push(a),t.#e=a.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],r=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let l=0;l=e&&(r=l):r=r<0?l:r;for(;a;)this[r]?.end=e&&o.push(this[r]):a=!1,r++;return o}};var ee=0xffffffffffff,H=function(e){let i=new T,o=this,r=e.timeDivision,t=120,a=new T,l=0,f=0;a.push(new C(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,a[a.length-1]&&a.push(new C(l,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;a.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return a.forEach(function(s){let n=s.start,h=n/b/r*60+p;b=s.data[0],p=h-n/b/r*60,s.data[1]=p}),console.debug("All tempo changes: ",a),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=a.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/r*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};M.default.customInterpreter=U;var rt=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#r=.5;#l=120;#t=4;#o=4;#a=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#r=.5,this.#l=120,this.#t=4,this.#o=4,this.#a=0,this.#c=0}async loadFile(e){this.#e=H(M.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#r}get noteOverall(){return this.noteProgress-this.#a}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,r=new Set,t=this,a=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?r.add(c.part*128+c.data[0]):r.has(c.part*128+c.data[0])&&o++),u.data.type==8&&r.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{a.push(g);break}}g?.reply&&delete g.reply}),a?.length>0&&this.dispatchEvent("meta",a);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=w.length*c;if(y>=0){let E=4*.25**(p[R+w[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+w[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let r=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(r.#i[a.meta]||console.debug).call(r,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){r.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){r.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){r.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){r.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){r.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){r.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,a){r.#s?.length<1&&(r.#s=a)},this.#i[81]=function(t,a){let l=r.noteProgress,f=r.#r||.5;r.#l=6e7/a,r.#r=a/1e6,r.#a+=l*(f/r.#r)-l},this.#i[88]=function(t,a){let l=r.noteProgress,f=r.noteOverall,$=r.noteBar,p=r.noteBeat,b=r.#t,s=r.#o;r.#t=a[0],r.#o=1<=b&&(b{let n=e.split(",");_[n[0]]=n[1]});var ne=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;n.indexOf(l)>-1;)n=n.replace(l,l[0])});for(let l in _)n=n.replaceAll(l,_[l]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},oe=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var F=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],ce=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Le={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},V=function(e){return Le[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},he=function(e,n,o){let l=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[l]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},X=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},de=function(e,n,o){let l=[],t=o==!1?n.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${l}`),l.pop(),n.backOne(),n.backOne(),new Uint8Array(l)}}}return new Uint8Array(l)},fe=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,l=0;for(let t=0;t>a&1)<<7,i=e[t];i+=s,t%8!=0?(n(i,o,e),o++):l=e[t]}},P=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],ue=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],C=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],He=[0,3,81,84,88],pe={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},z={0:0,1:1,2:3,5:4},be=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],L=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Be=[12,13,16,17,18,19],Ge=[33,99,100,32,102,8,9,10],$e=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var K={length:L.length};L.forEach((e,n)=>{K[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},_e=function(e){let n=[],o=0;return e?.forEach(function(l,t){l==247?n.push(e.subarray(o,t)):l==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ye=function(e,n="",o="",l=2){return e?`${n}${e.toString().padStart(l,"0")}${o}`:""},b={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:L.length,dnc:128,efx:7},me=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#d=0;#b=new Array(11);get#h(){return this.#b[this.#o]}set#h(e){this.#b[this.#o]=e}#n=new Uint8Array(b.ch);#c=new Uint8Array(b.ch);#a=new Uint8Array(b.ch);#e=new Uint8Array(b.ch*b.cc);#g=new Uint8Array(b.ace);#s=new Uint8Array(b.ch);#f=new Uint8Array(b.ch*b.nn);#v=new Uint8Array(b.ch);#u=new Uint16Array(b.pl);#$=new Uint8Array(b.pl);#I=new Int16Array(b.ch);#C=new Uint8Array(b.ch);#B=0;#r=new Uint8Array(b.ch*b.rpn);#K=new Int8Array(b.ch*ge.length);#Y=new Uint8Array(b.drm*b.dpn*b.dnc);#M=new Uint8Array(b.ch);#U=new Uint8Array(128);#S=new Uint8Array(b.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(b.cmt*64);#w=new Uint8Array(b.efx*3);#L=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#T="";#N=0;#j=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#i=[];#D=new Uint8Array(b.ch);#H=new Uint8Array(b.tr);baseBank=new G("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new G("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(o==1)return e;let l=0,t=!0;for(;t;)this.#D[e+l]==0?(this.#D[e+l]=n,console.debug(`Assign track ${n} to channel ${e+l+1}.`),t=!1):this.#D[e+l]==n?t=!1:(l+=16,l>=128&&(l=0,t=!1));return e+l}else return e}#y=[];#G;#p={nOff:(e,n)=>{let o=e*128+n,l=this.#u.lastIndexOf(o);l>-1&&(this.#e[b.cc*e+u[64]]>63?(this.#$[l]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_HELD})):this.#e[b.cc*e+u[66]]>63&&this.#$[l]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[l]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#u[l]=0,this.#f[o]=0,this.#$[l]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let l=e*128+n,t=0;for(this.#v[e]&&this.#p.ano(e);this.#$[t]>0&&this.#u[t]!=l;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,o)=>{let l;switch(n){case this.NOTE_ATTACK:{l=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{l=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{l=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(l){this.#$[o]=l;let t=this.#u[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#f[t],state:l})}})},soOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#u.forEach((n,o,l)=>{let t=n>>7,a=n&127;n==0&&this.#f[0]==0||t==e&&this.#p.nOff(t,a)})}};#J={8:function(e){let n=e.channel,o=e.data[0];this.#p.nOff(n,o)},9:function(e){let n=e.channel;this.#n[n]=1;let o=e.data[0],l=e.data[1];l>0?this.#p.nOn(n,o,l):this.#p.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#u.indexOf(o)>-1&&(this.#f[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let o=n*b.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#p.ano(n),this.#I[n]=0;let l=n*b.cc;this.#e[l+u[1]]=0,this.#e[l+u[5]]=0,this.#e[l+u[64]]=0,this.#e[l+u[65]]=0,this.#e[l+u[66]]=0,this.#e[l+u[67]]=0,this.#e[l+u[11]]=127,this.#e[l+u[101]]=127,this.#e[l+u[100]]=127,this.#e[l+u[99]]=127,this.#e[l+u[98]]=127;return}case 123:{this.#p.ano(n);return}case 124:{this.#p.ano(n);return}case 125:{this.#p.ano(n);return}case 126:{this.#v[n]=1,this.#p.ano(n);return}case 127:{this.#v[n]=0,this.#p.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Be.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==m.gs?e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==m.gm?e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==m.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let l=this.#e[o+u[99]],t=this.#e[o+u[98]];if(l==1){let a=Ge.indexOf(t);if(a>-1)this.#e[o+u[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let s=ge.indexOf(t);s>-1?this.#K[n*10+s]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(L.indexOf(l)<0){let s=`NRPN 0x${l.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;l==127?console.warn(`${s}is not necessary. Consider removing it.`):console.warn(`${s}is not supported.`)}else{let s=this.#a[n]-2;s<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${D[this.#a[n]]}.`):this.#Y[(s*b.dpn+K[l])*b.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${D[this.#a[n]]}) drum NRPN ${l} commit`)}}else{let l=z[this.#e[o+u[100]]];this.#e[o+u[101]]==0&&l!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],be[l][0]),be[l][1]),this.#r[n*b.rpn+l]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&z[this.#e[o+100]]!=null&&(this.#r[n*b.rpn+z[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#p.hoOf(n);break}case 66:{e.data[1]>>6?this.#p.soOn(n):this.#p.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#s[n]=e.data,this.#M[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#u.forEach(function(l){let t=l>>7;o==t&&(n.#f[l]=e.data,n.dispatchEvent("note",{part:o,note:l&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){_e(e.data).forEach(n=>{let o=n[0],l=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(l,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(o,l,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=He.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#V.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#R.run(n,o,e),console.warn("Unknown device SysEx!");else{let l=n[n.length-1],t=fe(n.subarray(2,n.length-1));l==t?this.#R.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${l}. Should be ${t}.`)}},66:(e,n,o)=>{this.#P.run(n,o,e)},67:(e,n,o)=>{this.#k.run(n,o,e)},68:(e,n,o)=>{this.#z.run(n,o,e)},71:(e,n,o)=>{this.#X.run(n,o,e)},126:(e,n,o)=>{this.#_.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#F.run(n,o,e)}};#_;#F;#k;#R;#P;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*b.cc,o=this.#e.subarray(n,n+b.cc);return o[u[0]]=o[u[0]]||this.#L,o[u[32]]=o[u[32]]||this.#E,o}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[b.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!l&&(this.#e[e*b.cc+u[0]]=C[o])}getPitch(){return this.#I}getProgram(){return this.#s}getTexts(){return this.#i.slice()}getVel(e){let n=new Map,o=this;return o.#u.forEach(function(l,t){let a=Math.floor(l/128),s=l%128;e==a&&o.#f[l]>0&&n.set(s,{v:o.#f[l],s:o.#$[t]})}),n}getBitmap(){return{bitmap:this.#h,expire:this.#d}}getLetter(){return{text:this.#T,expire:this.#N}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#u.forEach(function(n){let o=Math.floor(n/128);e.#f[n]>e.#C[o]&&(e.#C[o]=e.#f[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,l){e[l]=Math.floor(o*n.#e[l*b.cc+u[7]]*n.#e[l*b.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,o,l){let t=e||this.#L,a=n,s=o||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(s=3);let i=this.userBank.get(t,a,s,l);if(x[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),h=r*b.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG +`).forEach(e=>{let n=e.split(",");_[n[0]]=n[1]});var ne=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;n.indexOf(l)>-1;)n=n.replace(l,l[0])});for(let l in _)n=n.replaceAll(l,_[l]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},oe=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var F=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],ce=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Le={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},V=function(e){return Le[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},he=function(e,n,o){let l=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[l]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},X=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},de=function(e,n,o){let l=[],t=o==!1?n.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${l}`),l.pop(),n.backOne(),n.backOne(),new Uint8Array(l)}}}return new Uint8Array(l)},fe=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,l=0;for(let t=0;t>a&1)<<7,i=e[t];i+=s,t%8!=0?(n(i,o,e),o++):l=e[t]}},P=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"],ue=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],C=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],He=[0,3,81,84,88],pe={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},z={0:0,1:1,2:3,5:4},be=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],L=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Be=[12,13,16,17,18,19],Ge=[33,99,100,32,102,8,9,10],$e=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var K={length:L.length};L.forEach((e,n)=>{K[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},_e=function(e){let n=[],o=0;return e?.forEach(function(l,t){l==247?n.push(e.subarray(o,t)):l==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ye=function(e,n="",o="",l=2){return e?`${n}${e.toString().padStart(l,"0")}${o}`:""},b={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:L.length,dnc:128,efx:7},me=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#d=0;#b=new Array(11);get#h(){return this.#b[this.#o]}set#h(e){this.#b[this.#o]=e}#n=new Uint8Array(b.ch);#c=new Uint8Array(b.ch);#a=new Uint8Array(b.ch);#e=new Uint8Array(b.ch*b.cc);#g=new Uint8Array(b.ace);#s=new Uint8Array(b.ch);#f=new Uint8Array(b.ch*b.nn);#v=new Uint8Array(b.ch);#u=new Uint16Array(b.pl);#$=new Uint8Array(b.pl);#I=new Int16Array(b.ch);#C=new Uint8Array(b.ch);#B=0;#r=new Uint8Array(b.ch*b.rpn);#K=new Int8Array(b.ch*ge.length);#Y=new Uint8Array(b.drm*b.dpn*b.dnc);#M=new Uint8Array(b.ch);#U=new Uint8Array(128);#S=new Uint8Array(b.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(b.cmt*64);#w=new Uint8Array(b.efx*3);#L=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#T="";#N=0;#j=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#i=[];#D=new Uint8Array(b.ch);#H=new Uint8Array(b.tr);baseBank=new G("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new G("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(o==1)return e;let l=0,t=!0;for(;t;)this.#D[e+l]==0?(this.#D[e+l]=n,console.debug(`Assign track ${n} to channel ${e+l+1}.`),t=!1):this.#D[e+l]==n?t=!1:(l+=16,l>=128&&(l=0,t=!1));return e+l}else return e}#y=[];#G;#p={nOff:(e,n)=>{let o=e*128+n,l=this.#u.lastIndexOf(o);l>-1&&(this.#e[b.cc*e+u[64]]>63?(this.#$[l]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_HELD})):this.#e[b.cc*e+u[66]]>63&&this.#$[l]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[l]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#u[l]=0,this.#f[o]=0,this.#$[l]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let l=e*128+n,t=0;for(this.#v[e]&&this.#p.ano(e);this.#$[t]>0&&this.#u[t]!=l;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,o)=>{let l;switch(n){case this.NOTE_ATTACK:{l=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{l=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{l=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(l){this.#$[o]=l;let t=this.#u[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#f[t],state:l})}})},soOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#u.forEach((n,o,l)=>{let t=n>>7,a=n&127;n==0&&this.#f[0]==0||t==e&&this.#p.nOff(t,a)})}};#J={8:function(e){let n=e.channel,o=e.data[0];this.#p.nOff(n,o)},9:function(e){let n=e.channel;this.#n[n]=1;let o=e.data[0],l=e.data[1];l>0?this.#p.nOn(n,o,l):this.#p.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#u.indexOf(o)>-1&&(this.#f[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let o=n*b.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#p.ano(n),this.#I[n]=0;let l=n*b.cc;this.#e[l+u[1]]=0,this.#e[l+u[5]]=0,this.#e[l+u[64]]=0,this.#e[l+u[65]]=0,this.#e[l+u[66]]=0,this.#e[l+u[67]]=0,this.#e[l+u[11]]=127,this.#e[l+u[101]]=127,this.#e[l+u[100]]=127,this.#e[l+u[99]]=127,this.#e[l+u[98]]=127;return}case 123:{this.#p.ano(n);return}case 124:{this.#p.ano(n);return}case 125:{this.#p.ano(n);return}case 126:{this.#v[n]=1,this.#p.ano(n);return}case 127:{this.#v[n]=0,this.#p.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Be.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==m.gs?e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==m.gm?e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==m.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let l=this.#e[o+u[99]],t=this.#e[o+u[98]];if(l==1){let a=Ge.indexOf(t);if(a>-1)this.#e[o+u[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let s=ge.indexOf(t);s>-1?this.#K[n*10+s]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(L.indexOf(l)<0){let s=`NRPN 0x${l.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;l==127?console.warn(`${s}is not necessary. Consider removing it.`):console.warn(`${s}is not supported.`)}else{let s=this.#a[n]-2;s<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${D[this.#a[n]]}.`):this.#Y[(s*b.dpn+K[l])*b.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${D[this.#a[n]]}) drum NRPN ${l} commit`)}}else{let l=z[this.#e[o+u[100]]];this.#e[o+u[101]]==0&&l!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],be[l][0]),be[l][1]),this.#r[n*b.rpn+l]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&z[this.#e[o+100]]!=null&&(this.#r[n*b.rpn+z[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#p.hoOf(n);break}case 66:{e.data[1]>>6?this.#p.soOn(n):this.#p.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#s[n]=e.data,this.#M[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#u.forEach(function(l){let t=l>>7;o==t&&(n.#f[l]=e.data,n.dispatchEvent("note",{part:o,note:l&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){_e(e.data).forEach(n=>{let o=n[0],l=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(l,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(o,l,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=He.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#V.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#R.run(n,o,e),console.warn("Unknown device SysEx!");else{let l=n[n.length-1],t=fe(n.subarray(2,n.length-1));l==t?this.#R.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${l}. Should be ${t}.`)}},66:(e,n,o)=>{this.#P.run(n,o,e)},67:(e,n,o)=>{this.#k.run(n,o,e)},68:(e,n,o)=>{this.#z.run(n,o,e)},71:(e,n,o)=>{this.#X.run(n,o,e)},126:(e,n,o)=>{this.#_.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#F.run(n,o,e)}};#_;#F;#k;#R;#P;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*b.cc,o=this.#e.subarray(n,n+b.cc);return o[u[0]]=o[u[0]]||this.#L,o[u[32]]=o[u[32]]||this.#E,o}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[b.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!l&&(this.#e[e*b.cc+u[0]]=C[o])}getPitch(){return this.#I}getProgram(){return this.#s}getTexts(){return this.#i.slice()}getVel(e){let n=new Map,o=this;return o.#u.forEach(function(l,t){let a=Math.floor(l/128),s=l%128;e==a&&o.#f[l]>0&&n.set(s,{v:o.#f[l],s:o.#$[t]})}),n}getBitmap(){return{bitmap:this.#h,expire:this.#d}}getLetter(){return{text:this.#T,expire:this.#N}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#u.forEach(function(n){let o=Math.floor(n/128);e.#f[n]>e.#C[o]&&(e.#C[o]=e.#f[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,l){e[l]=Math.floor(o*n.#e[l*b.cc+u[7]]*n.#e[l*b.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,o,l){let t=e||this.#L,a=n,s=o||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(s=3);let i=this.userBank.get(t,a,s,l);if(x[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),h=r*b.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG 0 127 ${a} ${d}`,!0),i.name=d,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,s,l)),i}getChVoice(e){let n=this.getVoice(this.#e[e*b.cc+u[0]],this.#s[e],this.#e[e*b.cc+u[32]],x[this.#t]);if(this.#M[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*b.rpn;return this.#I[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let l=3*e;this.#w[l]=1,this.#w[l+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,l=3200){let t=this,a;t.#T=" ".repeat(o),e.forEach(s=>{t.#T+=String.fromCharCode(s>31?s:32),s<32&&(a=a||new Set,a.add(s))}),t.#N=Date.now()+3200,t.#T=t.#T.padEnd(32," "),a&&(a=Array.from(a),a.forEach((s,i,r)=>{r[i]=s.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=b.ace&&console.warn("ACE slots are full.")}getAce(){return this.#g}getChAce(e,n){if(n<0||n>=b.ace)throw new RangeError("No such ACE slot");let o=this.#g[n];if(o){if(I.indexOf(o)>=0)return this.#e[e*b.cc+u[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#L=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#g.fill(0),this.#s.fill(0),this.#f.fill(0),this.#u.fill(0),this.#C.fill(0),this.#I.fill(0),this.#K.fill(0),this.#Y.fill(0),this.#m=100,this.#i=[],this.#Q=500,this.#W=0,this.#N=0,this.#T="",this.#d=0,this.#o=0,this.#h.fill(0),this.#l=!1,this.#j=0,this.#x=!0,this.#c.forEach(function(n,o,l){l[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#H.fill(0)),this.#e[b.cc*9]=C[0],this.#e[b.cc*25]=C[0],this.#e[b.cc*41]=C[0],this.#e[b.cc*57]=C[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#M.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let l=this.#t;this.#t=o,this.#o=0,this.#L=ue[0][o],this.#E=ue[1][o];for(let a=0;a0&&this.#e[a*b.cc+u[0]]==C[l]&&(this.#e[a*b.cc]=C[o]);switch(this.initOnReset,o){case m.mt32:{X.forEach((a,s)=>{let i=s+1;this.#n[i]||(this.#s[i]=a,this.#e[i*b.cc+u[91]]=127)});break}}let t;switch(o){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(l=>{e.channel=l,o=!0,this.#J[e.type].call(this,e)}),o||console.warn(`${pe[e.type]?pe[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#i.length>100&&this.#i.splice(100,this.#i.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#b[10]=new Uint8Array(512),this.#G=new v,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 @@ -148,7 +148,7 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#i.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#i.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#i.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#i.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#i.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${s}`)});break}case"ln":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${s}`)});break}default:this.#i.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#i.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#i.unshift(t.slice(1)):this.#i[0]+=t:(this.#i[0]=t,this.#i.unshift(""))}},this.#y[2]=function(t){this.#i.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#i.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#i.unshift(`${ye(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#i.unshift(""):this.#i[0]+=`${t}`},this.#y[6]=function(t){this.#i.unshift(`${ye(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#i.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new v("universal non-realtime"),this.#F=new v("universal realtime"),this.#k=new v("Yamaha"),this.#R=new v("Roland"),this.#P=new v("Korg"),this.#V=new v("Kawai"),this.#X=new v("Akai"),this.#z=new v("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#k.default=n,this.#R.default=n,this.#P.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#k.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],s=(i,r)=>{a[r]=i};if(t.subarray(1).forEach((i,r)=>{let h=r+t[0];([s,s,s,s,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(i,r)}),t[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${re(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(s)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ae[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${se(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${M[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${M[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(s)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][t[0]-64+i]||function(){})(s)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((s,i)=>{[r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},r=>{console.debug(`${a}to chorus: ${E(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][t[0]-86+i](s)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,s)=>{let i=s+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,h=i-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],s=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${i}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${i}sub type: ${d+1}`)}][s+h]||function(){})(r)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#N=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0);let s=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=b.cc*s,h=`XG CH${s+1} `,d=`Unknown XG part address ${i}.`;t.subarray(2).forEach((c,f)=>{i<1?console.debug(d):i<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#s[s]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!c},()=>{},()=>{e.setChType(s,c,m.xg),console.debug(`${h}type: ${D[c]||c}`)},()=>{e.#r[b.rpn*s+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][i+f-1]||(()=>{}))():i<48?console.debug(d):i<111?i>102&&i<105&&(e.#e[r+u[[5,65][i&1]]]=c):i<114?console.debug(d):i<116?console.debug(`${h}EQ ${["bass","treble"][i&1]} gain: ${c-64}dB`):i<118?console.debug(d):i<120?console.debug(`${h}EQ ${["bass","treble"][i&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=`PLG-150VL CH${s+1} `;t.subarray(2).forEach((h,d)=>{let c=d+i;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${oe(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let s=t[0],i="MU1000 System: ";t.subarray(1).forEach((r,h)=>{let d=s+h;d==8?console.debug(`${i}LCD contrast set to ${r}.`):d==18?(e.#E=r?126:0,console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.info(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.info(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!r,console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let s=t[0],i=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(s<16)switch(s){case 2:{let r=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${s} invoked.`)}else if(s<32){if(e.#x){let r=e.chRedir(s-16+(e.#j<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(s<36){let r=e.chRedir(s-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#j=s-32),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${s+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ie[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#i.unshift("SG Lyric: "),e.#i[0]+=`${ne(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,k()&&console.debug(`${i}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#k.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#k.add([89,0],(t,a,s)=>{if(e.eprom){let i=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let g=0;g<7;g++)h[r+7*f+g]+=(d>>6-g&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,a,s)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,s)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[i+7*c+p]+=(h>>6-p&1)<<7;else r[i+7*c+f]=h})}}).add([89,3],(t,a,s)=>{}),this.#k.add([39,48],(t,a,s)=>{}).add([43,0,0],(t,a,s)=>{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,s)=>{}).add([43,2],(t,a,s)=>{let i=e.chRedir(t[0],a,!0),r=t[1],h=b.cc*i,d=`TG300 CH${i+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#s[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[i]=+!c},()=>{},()=>{},()=>{e.#r[b.rpn*i+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,a,s)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,s)=>{e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0),t.forEach(function(i,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,a,s)=>{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#E=3,e.#l=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,s)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#l=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let s="".padStart(a," ");t.subarray(1).forEach((i,r)=>{s+=String.fromCharCode(Math.max(32,i))}),s=s.padEnd(16," "),console.debug(`GS patch name: ${s}`)}else a<48||(a<65?t.subarray(1).forEach((s,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${F[s]}`),e.setEffectType(0,40,s)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${s}ms`)},()=>{console.info(`${r}type: ${ce[s]}`),e.setEffectType(1,40,16+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)},()=>{console.debug(`${r}to delay: ${E(s)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((s,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[s]}`),e.setEffectType(2,40,32+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((s,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][s]}Hz`)},()=>{console.debug(`${a}low gain: ${s-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][s]}Hz`)},()=>{console.debug(`${a}high gain: ${s-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",s=function(i,r){let h=he(e.#w.subarray(10,12),r,i);h&&console.debug(`${a}${V(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${V(e.#w.subarray(10,12))}`)},!1,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(i,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#d=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#d=Date.now()+3200,e.#b[t[0]-1]?.length||(e.#b[t[0]-1]=new Uint8Array(256));let a=e.#b[t[0]-1],s=t[1];a.fill(0);let i=t.subarray(2);for(let r=0;r>4-g&1,g++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,s){let i=t[0],r=b.cc*a,h=b.rpn*a,d=`GS CH${a+1} `;i<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#s[a]=c},()=>{let p=e.chRedir(c,s,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][i+f]()}):i<19||(i<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[a]=+!c},!1,()=>{e.setChType(a,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][i+f-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},l=function(t,a){let s=t[0],i=`GS CH${a+1} `;s<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[b.cc*a+u[32]]=r},()=>{}][s+h]()}):s<32?console.warn(`Unknown GS misc address: ${s}`):s<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][s+h-32]()}):console.warn(`Unknown GS misc address: ${s}`)};this.#R.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{l(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{l(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{l(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{l(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{l(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{l(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{l(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{l(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{l(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{l(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{l(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{l(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{l(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{l(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{l(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{l(t,e.chRedir(15,a,!0))}),this.#P.add([54,65],(t,a)=>{e.switchMode("x5d");let s=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],r=e.chRedir(s&15,a,!0),h=b.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-1,e.#e[h+u[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#s[r]=$e[i-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=i},()=>{i<31&&(e.#e[h+u[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[h+u[93]]=P(i)},()=>{e.#e[h+u[91]]=P(i)},()=>{e.#r[r*b.rpn+3]=i>8191?i-16320:64+i},()=>{e.#r[r*b.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#r[r*b.rpn]=i)},()=>{}][s>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let s="",i=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` +122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#i.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#i.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#i.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#i.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#i.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${s}`)});break}case"ln":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${s}`)});break}default:this.#i.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#i.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#i.unshift(t.slice(1)):this.#i[0]+=t:(this.#i[0]=t,this.#i.unshift(""))}},this.#y[2]=function(t){this.#i.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#i.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#i.unshift(`${ye(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#i.unshift(""):this.#i[0]+=`${t}`},this.#y[6]=function(t){this.#i.unshift(`${ye(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#i.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new v("universal non-realtime"),this.#F=new v("universal realtime"),this.#k=new v("Yamaha"),this.#R=new v("Roland"),this.#P=new v("Korg"),this.#V=new v("Kawai"),this.#X=new v("Akai"),this.#z=new v("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#k.default=n,this.#R.default=n,this.#P.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#k.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],s=(i,r)=>{a[r]=i};if(t.subarray(1).forEach((i,r)=>{let h=r+t[0];([s,s,s,s,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(i,r)}),t[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${re(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(s)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ae[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${se(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${M[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${M[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(s)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][t[0]-64+i]||function(){})(s)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((s,i)=>{[r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},r=>{console.debug(`${a}to chorus: ${E(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][t[0]-86+i](s)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,s)=>{let i=s+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,h=i-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],s=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${i}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${i}sub type: ${d+1}`)}][s+h]||function(){})(r)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#N=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0);let s=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=b.cc*s,h=`XG CH${s+1} `,d=`Unknown XG part address ${i}.`;t.subarray(2).forEach((c,f)=>{i<1?console.debug(d):i<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#s[s]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!c},()=>{},()=>{e.setChType(s,c,m.xg),console.debug(`${h}type: ${D[c]||c}`)},()=>{e.#r[b.rpn*s+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][i+f-1]||(()=>{}))():i<48?console.debug(d):i<111?i>102&&i<105&&(e.#e[r+u[[5,65][i&1]]]=c):i<114?console.debug(d):i<116?console.debug(`${h}EQ ${["bass","treble"][i&1]} gain: ${c-64}dB`):i<118?console.debug(d):i<120?console.debug(`${h}EQ ${["bass","treble"][i&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=`PLG-150VL CH${s+1} `;t.subarray(2).forEach((h,d)=>{let c=d+i;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${oe(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let s=t[0],i="MU1000 System: ";t.subarray(1).forEach((r,h)=>{let d=s+h;d==8?console.debug(`${i}LCD contrast set to ${r}.`):d==18?(e.#E=r?126:0,console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.debug(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.debug(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!r,console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let s=t[0],i=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(s<16)switch(s){case 2:{let r=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${s} invoked.`)}else if(s<32){if(e.#x){let r=e.chRedir(s-16+(e.#j<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(s<36){let r=e.chRedir(s-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#j=s-32),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${s+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ie[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#i.unshift("SG Lyric: "),e.#i[0]+=`${ne(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,k()&&console.debug(`${i}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#k.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#k.add([89,0],(t,a,s)=>{if(e.eprom){let i=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let g=0;g<7;g++)h[r+7*f+g]+=(d>>6-g&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,a,s)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,s)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[i+7*c+p]+=(h>>6-p&1)<<7;else r[i+7*c+f]=h})}}).add([89,3],(t,a,s)=>{}),this.#k.add([39,48],(t,a,s)=>{}).add([43,0,0],(t,a,s)=>{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,s)=>{}).add([43,2],(t,a,s)=>{let i=e.chRedir(t[0],a,!0),r=t[1],h=b.cc*i,d=`TG300 CH${i+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#s[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[i]=+!c},()=>{},()=>{},()=>{e.#r[b.rpn*i+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,a,s)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,s)=>{e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0),t.forEach(function(i,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,a,s)=>{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#E=3,e.#l=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,s)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#l=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let s="".padStart(a," ");t.subarray(1).forEach((i,r)=>{s+=String.fromCharCode(Math.max(32,i))}),s=s.padEnd(16," "),console.debug(`GS patch name: ${s}`)}else a<48||(a<65?t.subarray(1).forEach((s,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${F[s]}`),e.setEffectType(0,40,s)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${s}ms`)},()=>{console.info(`${r}type: ${ce[s]}`),e.setEffectType(1,40,16+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)},()=>{console.debug(`${r}to delay: ${E(s)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((s,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[s]}`),e.setEffectType(2,40,32+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((s,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][s]}Hz`)},()=>{console.debug(`${a}low gain: ${s-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][s]}Hz`)},()=>{console.debug(`${a}high gain: ${s-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",s=function(i,r){let h=he(e.#w.subarray(10,12),r,i);h&&console.debug(`${a}${V(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${V(e.#w.subarray(10,12))}`)},!1,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(i,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#d=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#d=Date.now()+3200,e.#b[t[0]-1]?.length||(e.#b[t[0]-1]=new Uint8Array(256));let a=e.#b[t[0]-1],s=t[1];a.fill(0);let i=t.subarray(2);for(let r=0;r>4-g&1,g++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,s){let i=t[0],r=b.cc*a,h=b.rpn*a,d=`GS CH${a+1} `;i<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#s[a]=c},()=>{let p=e.chRedir(c,s,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][i+f]()}):i<19||(i<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[a]=+!c},!1,()=>{e.setChType(a,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][i+f-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},l=function(t,a){let s=t[0],i=`GS CH${a+1} `;s<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[b.cc*a+u[32]]=r},()=>{}][s+h]()}):s<32?console.warn(`Unknown GS misc address: ${s}`):s<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][s+h-32]()}):console.warn(`Unknown GS misc address: ${s}`)};this.#R.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{l(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{l(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{l(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{l(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{l(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{l(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{l(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{l(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{l(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{l(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{l(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{l(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{l(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{l(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{l(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{l(t,e.chRedir(15,a,!0))}),this.#P.add([54,65],(t,a)=>{e.switchMode("x5d");let s=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],r=e.chRedir(s&15,a,!0),h=b.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-1,e.#e[h+u[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#s[r]=$e[i-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=i},()=>{i<31&&(e.#e[h+u[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[h+u[93]]=P(i)},()=>{e.#e[h+u[91]]=P(i)},()=>{e.#r[r*b.rpn+3]=i>8191?i-16320:64+i},()=>{e.#r[r*b.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#r[r*b.rpn]=i)},()=>{}][s>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let s="",i=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` ${i} ${r} ${h} ${s.trim().replace("Init Voice","")}`,r++,s="";break}}r>99&&(i=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let s="",i=90,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` ${i} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(s,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,s)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(s,i,r,h){if(i<192){let d=e.chRedir(Math.floor(i/12),a,!0),c=d*b.cc;switch(i%12){case 0:{s<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#s[d]=s):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#s[d]=$e[s-128]),s>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=s;break}case 2:{e.#r[d*b.rpn+3]=s>127?s-192:64+s;break}case 3:{e.#r[d*b.rpn+1]=s>127?s-192:64+s;break}case 4:{s<31&&(e.#e[c+u[10]]=Math.round((s-15)*4.2+64));break}case 5:{let f=s>>4,p=s&15;e.#e[c+u[91]]=P(p),e.#e[c+u[93]]=P(f);break}case 10:break;case 11:{let f=e.chRedir(s&15,a,!0),p=s>>4;e.#c[d]=s,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(i-192,a,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#U[c+(i-1)*16]=h,([!1,()=>{let f=e.#U[i-1<<4];if(f<3)if(e.#M[i]=1,f==2)for(let p=0;p{e.#r[i*b.rpn+3]=h+40},()=>{e.#r[i*b.rpn+1]=h+14},()=>{e.#r[i*b.rpn]=h},!1,()=>{e.#e[b.cc*i+u[91]]=h?127:0},!1,()=>{e.#e[b.cc*i+u[7]]=h},()=>{e.#e[b.cc*i+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0)}).add([22,18,2],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0),r=t[1]+(t[0]<<7);r<10&&(e.#M[i]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#S[(i-1)*b.cmt+c]=h)})}).add([22,18,3],(t,a,s)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((r,h)=>{let d=h+i;e.#U[d]=r;let c=e.chRedir(1+d>>4,a,!0),f=d&15;([!1,()=>{let p=e.#U[c-1<<4];if(p<3)if(e.#M[c]=1,p==2)for(let g=0;g{e.#r[c*b.rpn+3]=r+40},()=>{e.#r[c*b.rpn+1]=r+14},()=>{e.#r[c*b.rpn]=r},!1,()=>{e.#e[b.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[b.cc*c+u[7]]=r},()=>{e.#e[b.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,a,s)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+i,c=e.chRedir(Math.floor(d/246+1),a,!0),f=d%246;f<14&&(e.#S[(c-1)*b.cmt+f]=r),f<10&&(e.#M[c]=1)})}).add([22,18,5],(t,a,s)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=i+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let g=e.#q[p];if(g<3){let y="";if(g==2){let $=b.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(g<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME 000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,a,s)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=i+h;d>1)*b.cmt+d]=r)})}).add([22,18,16],(t,a,s)=>{e.switchMode("mt32");let i=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],s=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(s+=String.fromCharCode(i))}),e.#T=s.padStart(20," "),e.#N=Date.now()+3200}).add([22,18,82],(t,a)=>{let s=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#p.ano(s+i),i&&i<10&&(e.#s[s+i]=X[i-1]);console.info("MT-32 alt reset complete.")}),this.#P.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,a)=>{let s=t[0];switch(s){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(s<10){let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][s+d]()}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=s*b.cc,r=t[1],h=`NS5R CH${s+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[i+u[0]]=d||121},()=>{e.#e[i+u[32]]=d},()=>{e.#s[s]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,a,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!d},()=>{e.setChType(s,d,m.ns5r),console.debug(`${h}type: ${D[d]}`)},()=>{e.#r[b.rpn*s+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[i+u[7]]=d},()=>{e.#e[i+u[11]]=d},()=>{},()=>{},()=>{e.#e[i+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[i+u[93]]=d},()=>{e.#e[i+u[91]]=d},()=>{e.#e[i+u[76]]=d},()=>{e.#e[i+u[77]]=d},()=>{e.#e[i+u[78]]=d},()=>{e.#e[i+u[74]]=d},()=>{e.#e[i+u[71]]=d},()=>{e.#e[i+u[73]]=d},()=>{e.#e[i+u[75]]=d},()=>{e.#e[i+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[i+u[5]]=d},()=>{e.#e[i+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,a)=>{let s=t[0];if(s<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=s-32;e.#d=Date.now()+3200,e.#o=10,e.#h.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+i,p=f>>4,g=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#h[g*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1;let s="";S(t,(i,r)=>{r<8?(i>31&&(s+=String.fromCharCode(i)),r==7&&(e.aiEfxName=s)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(s,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),h=r*b.cc;switch(i%92){case 0:{e.#e[h+u[0]]=s||121;break}case 1:{e.#e[h+u[32]]=s;break}case 2:{e.#s[r]=s,s>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(s,a,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*b.rpn+3]=s<40||s>88?s+(s>63?-192:64):s;break}case 9:case 10:{e.#e[h+u[7]]=s;break}case 11:{e.#e[h+u[11]]=s;break}case 14:{e.#e[h+u[10]]=s||128;break}case 19:{e.#e[h+u[93]]=s;break}case 20:{e.#e[h+u[91]]=s;break}case 84:{e.#e[h+u[65]]=s;break}case 85:{e.#e[h+u[5]]=s;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let s="",i=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{i=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` diff --git a/dist/state.mjs b/dist/state.mjs index aea09231..6d2d54d2 100644 --- a/dist/state.mjs +++ b/dist/state.mjs @@ -1,8 +1,8 @@ -var X=function(e,n){let o=Math.min(e.length,n.length),f=e.slice(0,o),t=n.slice(0,o),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(c,l,h){i&&c!=n[l]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...o):this.pool[f].data(n.slice(this.pool[f].length),...o):this.default(n,...o)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),f=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var le=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},H=class{#t;strictMode=!1;get(e=0,n=0,o=0,f){let t=[e,n,o],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{o==126?r[2]=125:o==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{o==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(r[2]=0);break}}break}case"gs":{e==0&&o<5?r[2]=0:e>125&&o<5&&o!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&o==0&&(r[2]=5);break}case"s90es":{o<8?r[2]+=17:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{o<8?r[2]+=28:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",c=0,l=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",c=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,c=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),c=3;break}case 97:{s="VL:",c=3,l=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(l=63),c=3;break}case 100:{s="AN",r[2]>63&&(l=63),c=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,c=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,o,r[0],r[2]][c]-l}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(o||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,o){let f=this,t=[],a=0,r=0;e.split(` -`).forEach(function(i,s){let c=i.split(" "),l=[];s==0?c.forEach(function(h,b){t[le.indexOf(h)]=b}):c.forEach(async function(h,b){b>2?(f.#t[l[t[1]]]=f.#t[l[t[1]]]||[],(!f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]?.length||n)&&(f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]=c[3],a++),r++):l.push(parseInt(c[b]))})}),n||console.debug(`Map "${o||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,f){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let o=!0;return n.forEach((f,t)=>{o=o&&e[t]==f}),o},V=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],c=0;for(;i;){let l=n.subarray(a);([()=>{v.decode(l.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(l.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(l.subarray(0,4)),b=V(l.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[c],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return o});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,o=-.3;return e>66?(n=5,o=315):e>56?(n=1,o=47):e>46&&(n=.5,o=18.5),n*e-o},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +var X=function(e,n){let c=Math.min(e.length,n.length),f=e.slice(0,c),t=n.slice(0,c),a=0,r=0;for(;r0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(o,l,h){i&&o!=n[l]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...c):this.pool[f].data(n.slice(this.pool[f].length),...c):this.default(n,...c)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),f=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var le=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},H=class{#t;strictMode=!1;get(e=0,n=0,c=0,f){let t=[e,n,c],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",o=0,l=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",o=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,o=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),o=3;break}case 97:{s="VL:",o=3,l=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(l=63),o=3;break}case 100:{s="AN",r[2]>63&&(l=63),o=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,o=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,c,r[0],r[2]][o]-l}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${c}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(c||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,c){let f=this,t=[],a=0,r=0;e.split(` +`).forEach(function(i,s){let o=i.split(" "),l=[];s==0?o.forEach(function(h,b){t[le.indexOf(h)]=b}):o.forEach(async function(h,b){b>2?(f.#t[l[t[1]]]=f.#t[l[t[1]]]||[],(!f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]?.length||n)&&(f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]=o[3],a++),r++):l.push(parseInt(o[b]))})}),n||console.debug(`Map "${c||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],c=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=c[0];t<=c[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(c,f){try{await fetch(`./data/bank/${c}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,c)})}catch{console.error(`Failed loading "${c}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let c=!0;return n.forEach((f,t)=>{c=c&&e[t]==f}),c},V=function(e){let n=0;return e.forEach(c=>{n*=256,n+=c}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),c="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],o=0;for(;i;){let l=n.subarray(a);([()=>{v.decode(l.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(l.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(l.subarray(0,4)),b=V(l.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[o],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return c});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,c=-.3;return e>66?(n=5,c=315):e>56?(n=1,c=47):e>46&&(n=.5,c=18.5),n*e-c},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,o){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,o,e),o++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var ce={length:A.length};A.forEach((e,n)=>{ce[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],o=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(o,t)):f==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},oe=function(e,n="",o="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${o}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#o=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#c=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#l=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(o==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let o=e*128+n,f=this.#l.lastIndexOf(o);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#c[o],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#c[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#l[f]=0,this.#c[o]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#l[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_HELD){let f=this.#l[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#l[o]=0,this.#c[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,o)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[o]=f;let t=this.#l[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#c[t],state:f})}})},soOf:e=>{this.#d.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#l[o],t=f>>7;e==t&&(this.#d[o]=this.NOTE_IDLE,this.#l[o]=0,this.#c[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#l.forEach((n,o,f)=>{let t=n>>7,a=n&127;n==0&&this.#c[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,o=e.data[0];this.#h.nOff(n,o)},9:function(e){let n=e.channel;this.#o[n]=1;let o=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,o,f):this.#h.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#l.indexOf(o)>-1&&(this.#c[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#o[n]=1);break}e.data[1]&&(this.#o[n]=1);break}default:{this.#o[n]=1;break}}})();let o=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==g.gs?e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==g.gm?e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==g.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[o+d[99]],t=this.#e[o+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[o+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+ce[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[o+d[100]]];this.#e[o+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&I[this.#e[o+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#o[n]=1);break}default:this.#o[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#l.forEach(function(f){let t=f>>7;o==t&&(n.#c[f]=e.data,n.dispatchEvent("note",{part:o,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let o=n[0],f=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(o,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#F.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#T.run(n,o,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,o)=>{this.#U.run(n,o,e)},67:(e,n,o)=>{this.#w.run(n,o,e)},68:(e,n,o)=>{this.#V.run(n,o,e)},71:(e,n,o)=>{this.#K.run(n,o,e)},126:(e,n,o)=>{this.#I.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#X.run(n,o,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#o.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,o=this.#e.subarray(n,n+u.cc);return o[d[0]]=o[d[0]]||this.#H,o[d[32]]=o[d[32]]||this.#y,o}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[o])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,o=this;return o.#l.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&o.#c[f]>0&&n.set(r,{v:o.#c[f],s:o.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#l.forEach(function(n){let o=Math.floor(n/128);e.#c[n]>e.#C[o]&&(e.#C[o]=e.#c[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,f){e[f]=Math.floor(o*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,o,f){let t=e||this.#H,a=n,r=o||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),c=s*u.cmt,l="";this.#N.subarray(c,c+10).forEach(h=>{h>31&&(l+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,f=3200){let t=this,a;t.#M=" ".repeat(o),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let o=this.#R[n];if(o){if(U.indexOf(o)>=0)return this.#e[e*u.cc+d[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#o.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#c.fill(0),this.#l.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#S=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,o,f){f[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=o,this.#p=0,this.#H=se[0][o],this.#y=se[1][o];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[o]);switch(this.initOnReset,o){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#o[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(o){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(f=>{e.channel=f,o=!0,this.#j[e.type].call(this,e)}),o||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,c){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,c,e),c++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],c=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(c,t)):f==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ce=function(e,n="",c="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${c}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#c=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#l=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(c==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let c=e*128+n,f=this.#l.lastIndexOf(c);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#l[f]=0,this.#o[c]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#l[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,c)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[c]=f;let t=this.#l[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#l.forEach((n,c,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,c=e.data[0];this.#h.nOff(n,c)},9:function(e){let n=e.channel;this.#c[n]=1;let c=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,c,f):this.#h.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#l.indexOf(c)>-1&&(this.#o[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#c[n]=1);break}e.data[1]&&(this.#c[n]=1);break}default:{this.#c[n]=1;break}}})();let c=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==g.gs?e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==g.gm?e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==g.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[c+d[99]],t=this.#e[c+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[c+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[c+d[100]]];this.#e[c+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&I[this.#e[c+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#c[n]=1);break}default:this.#c[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#l.forEach(function(f){let t=f>>7;c==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:c,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let c=n[0],f=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(c,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#F.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#T.run(n,c,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,c)=>{this.#U.run(n,c,e)},67:(e,n,c)=>{this.#w.run(n,c,e)},68:(e,n,c)=>{this.#V.run(n,c,e)},71:(e,n,c)=>{this.#K.run(n,c,e)},126:(e,n,c)=>{this.#I.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#X.run(n,c,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#c.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,c=this.#e.subarray(n,n+u.cc);return c[d[0]]=c[d[0]]||this.#H,c[d[32]]=c[d[32]]||this.#y,c}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[c])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,c=this;return c.#l.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&c.#o[f]>0&&n.set(r,{v:c.#o[f],s:c.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#l.forEach(function(n){let c=Math.floor(n/128);e.#o[n]>e.#C[c]&&(e.#C[c]=e.#o[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,f){e[f]=Math.floor(c*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,c,f){let t=e||this.#H,a=n,r=c||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),o=s*u.cmt,l="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(l+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,f=3200){let t=this,a;t.#M=" ".repeat(c),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let c=this.#R[n];if(c){if(U.indexOf(c)>=0)return this.#e[e*u.cc+d[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#c.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#o.fill(0),this.#l.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#S=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,c,f){f[c]=c}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=c,this.#p=0,this.#H=se[0][c],this.#y=se[1][c];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[c]);switch(this.initOnReset,c){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#c[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(c){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(f=>{e.channel=f,c=!0,this.#j[e.type].call(this,e)}),c||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${oe(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${oe(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#T=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let c=s+t[0];([r,r,r,r,l=>{this.#b=l*129/16383*100},l=>{},l=>{}][c]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,c=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,c)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${R[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][r+c]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,c=`XG CH${r+1} `,l=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(l):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${c}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(l):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(l):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(l)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((c,l)=>{let h=l+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${s}${b} scale break point: ${c}`):console.debug(`${s}${b} depth: ${c-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,c)=>{let l=r+c;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let c="",l=0;t.subarray(2).forEach((h,b)=>{b%2==0?c+=Y[h]||h.toString().padStart("0"):l+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(c)}`,e.#Y=s+Math.ceil(l/2)+e.#Q,k()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;t.subarray(4).forEach((l,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)c[s+7*b+$]+=(l>>6-$&1)<<7;else c[s+7*b+p]=l})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((c,l)=>{let h=l>>3,b=l&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(c>>6-p&1)<<7;else s[i+7*h+b]=c})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(c,l)=>{i[l]=c};if(t.subarray(1).forEach((c,l)=>{let h=l+t[0];[s,s,s,s,()=>{this.#b=c*129/16383*100},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][h](c,h)}),t[0]<4){let c=0;i.forEach(l=>{c=c<<4,c+=l}),c-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],c=u.cc*i,l=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[c+d[0]]=h},()=>{e.#e[c+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[c+d[7]]=h},!1,!1,()=>{e.#e[c+d[10]]=h||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${h}`)},()=>{console.debug(`${l} AC2 at cc${h}`)},()=>{e.#e[c+d[128]]=h},()=>{e.#e[c+d[93]]=h},()=>{e.#e[c+d[91]]=h},()=>{e.#e[c+d[94]]=h},()=>{e.#e[c+d[76]]=h},()=>{e.#e[c+d[77]]=h},()=>{e.#e[c+d[74]]=h},()=>{e.#e[c+d[71]]=h},()=>{e.#e[c+d[73]]=h},()=>{e.#e[c+d[75]]=h},()=>{e.#e[c+d[72]]=h},()=>{e.#e[c+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[c+d[65]]=h},()=>{e.#e[c+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let c=Math.floor(s/16),l=s%16,h=(l*3+c)*7,b=7,p=0;for(h-=l*5,c==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(c,l)=>{i[l]=c};if(t.subarray(1).forEach((c,l)=>{let h=l+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](c,l)}),t[0]<4){let c=0;i.forEach(l=>{c=c<<4,c+=l}),c-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let c=ee(e.#g.subarray(10,12),s,i);c&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${c}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(c,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#S=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#S=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,r){let i=t[0],s=u.cc*a,c=u.rpn*a,l=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${l}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[c+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${h}`)},()=>{console.debug(`${l}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[c+1]=h},()=>{e.#s[c+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,c)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+c]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+c-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),c=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[c+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[c+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[c+d[0]]=62))},()=>{e.#e[c+d[7]]=i},()=>{i<31&&(e.#e[c+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[c+d[93]]=D(i)},()=>{e.#e[c+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` -${i} ${s} ${c} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` -${i} ${s} ${c} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,c){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),h=l*u.cc;switch(i%12){case 0:{r<128?(e.setChType(l,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[l]=r):(e.setChType(l,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[l]=ne[r-128]),r>0&&(e.#o[l]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[l*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[l*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[l]=r,(b!=l||p)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((c,l)=>{let h=l+s;e.#A[h+(i-1)*16]=c,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=c+40},()=>{e.#s[i*u.rpn+1]=c+14},()=>{e.#s[i*u.rpn]=c},!1,()=>{e.#e[u.cc*i+d[91]]=c?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=c},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(c*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((c,l)=>{let h=l+s;h<14&&(e.#k[(i-1)*u.cmt+h]=c)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,c)=>{let l=c+i;e.#A[l]=s;let h=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,c)=>{let l=c+i,h=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,c)=>{let l=i+c,h=Math.floor(l/8),b=l&7,p=h*8;e.#q[l]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME -000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,c)=>{let l=i+c;l>1)*u.cmt+l]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,c=function(l,h){e.#f[h-12]=l,s=!0};t.subarray(2).forEach((l,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{e.#b=l}][b]||(()=>{}))(l,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(c,l)=>{i[l]=c};if(t.subarray(1).forEach((c,l)=>{[s,s,s,s,()=>{e.#b=c*129/16383*100},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][r+l]()}),t[0]<4){let c=0;i.forEach(l=>{c=c<<4,c+=l}),c-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],c=`NS5R CH${r+1} `;t.subarray(2).forEach((l,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=l||121},()=>{e.#e[i+d[32]]=l},()=>{e.#r[r]=l}][b]():b<8||(b<14?[()=>{let p=e.chRedir(l,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${c}receives from CH${p+1}`))},()=>{e.#E[r]=+!l},()=>{e.setChType(r,l,g.ns5r),console.debug(`${c}type: ${O[l]}`)},()=>{e.#s[u.rpn*r+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=l},()=>{e.#e[i+d[11]]=l},()=>{},()=>{},()=>{e.#e[i+d[10]]=l||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=l},()=>{e.#e[i+d[91]]=l},()=>{e.#e[i+d[76]]=l},()=>{e.#e[i+d[77]]=l},()=>{e.#e[i+d[78]]=l},()=>{e.#e[i+d[74]]=l},()=>{e.#e[i+d[71]]=l},()=>{e.#e[i+d[73]]=l},()=>{e.#e[i+d[75]]=l},()=>{e.#e[i+d[72]]=l}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=l},()=>{e.#e[i+d[65]]=l}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#S=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),c=4;s.forEach(function(l,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),c=s*u.cc;switch(i%92){case 0:{e.#e[c+d[0]]=r||121;break}case 1:{e.#e[c+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#o[s]=1);break}case 3:{let l=e.chRedir(r,a,!0);e.#f[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[c+d[7]]=r;break}case 11:{e.#e[c+d[11]]=r;break}case 14:{e.#e[c+d[10]]=r||128;break}case 19:{e.#e[c+d[93]]=r;break}case 20:{e.#e[c+d[91]]=r;break}case 84:{e.#e[c+d[65]]=r;break}case 85:{e.#e[c+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{c=h&127;break}case p==13:{l+=` -${i} ${s} ${c} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,c=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{l+=` -${i} ${s} ${c} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=r>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,c=u.rpn*i,l=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=l):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=l},()=>{e.#o[i]=l},()=>{e.#e[s+d[10]]=l},()=>{e.#s[c+3]=l+40},()=>{e.#s[c+1]=l>>1,e.#s[c+2]=l&1},()=>{e.#e[s+d[91]]=l?127:0},()=>{},()=>{e.#e[s+d[74]]=l},()=>{e.#e[s+d[73]]=l},()=>{e.#e[s+d[72]]=l}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),c=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[c+d[0]]=0,e.#e[c+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[c+d[0]]=0,e.#e[c+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[c+d[0]]=122,e.#e[c+d[32]]=0,e.#r[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),c=s*u.cc,l=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#o[s]=i},()=>{e.#e[c+d[7]]=i},()=>{e.#e[c+d[10]]=i},()=>{e.#e[c+d[91]]=i?127:0},()=>{e.#s[l+3]=i+40},()=>{e.#s[l+1]=i},()=>{e.#s[l]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let c=e.chRedir(i,a,!0);e.#f[s]=c,s!=c&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${c+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((c,l)=>{([()=>{e.#b=c*12900/16383}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(c,l,h)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(c,l,h)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,c=t[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#o[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#o[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][c+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,c)=>{let h=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+c&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,ce as dnToPos}; +122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${ce(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${ce(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#T=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let o=s+t[0];([r,r,r,r,l=>{this.#b=l*129/16383*100},l=>{},l=>{}][o]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,o=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${R[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][r+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,o=`XG CH${r+1} `,l=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(l):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(l):i<116?console.debug(`${o}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(l):i<120?console.debug(`${o}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(l)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((o,l)=>{let h=l+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,o)=>{let l=r+o;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let o="",l=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):l+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(o)}`,e.#Y=s+Math.ceil(l/2)+e.#Q,k()&&console.debug(`${i}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((l,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(l>>6-$&1)<<7;else o[s+7*b+p]=l})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,l)=>{let h=l>>3,b=l&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(o>>6-p&1)<<7;else s[i+7*h+b]=o})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*i,l=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${h}`)},()=>{console.debug(`${l} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let o=Math.floor(s/16),l=s%16,h=(l*3+o)*7,b=7,p=0;for(h-=l*5,o==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,l)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let o=ee(e.#g.subarray(10,12),s,i);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(o,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#S=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#S=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,r){let i=t[0],s=u.cc*a,o=u.rpn*a,l=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${l}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${h}`)},()=>{console.debug(`${l}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+o]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+o-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),o=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[o+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=i},()=>{i<31&&(e.#e[o+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(i)},()=>{e.#e[o+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` +${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,o){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),h=l*u.cc;switch(i%12){case 0:{r<128?(e.setChType(l,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[l]=r):(e.setChType(l,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[l]=ne[r-128]),r>0&&(e.#c[l]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[l*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[l*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[l]=r,(b!=l||p)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((o,l)=>{let h=l+s;e.#A[h+(i-1)*16]=o,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=o+40},()=>{e.#s[i*u.rpn+1]=o+14},()=>{e.#s[i*u.rpn]=o},!1,()=>{e.#e[u.cc*i+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=o},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((o,l)=>{let h=l+s;h<14&&(e.#k[(i-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,o)=>{let l=o+i;e.#A[l]=s;let h=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let l=o+i,h=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o,h=Math.floor(l/8),b=l&7,p=h*8;e.#q[l]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME +000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o;l>1)*u.cmt+l]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,o=function(l,h){e.#f[h-12]=l,s=!0};t.subarray(2).forEach((l,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,o,o,o,o,o,o,o,o,o,()=>{e.#b=l}][b]||(()=>{}))(l,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{[s,s,s,s,()=>{e.#b=o*129/16383*100},()=>o-64,()=>o-64,()=>{},()=>{},()=>{}][r+l]()}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],o=`NS5R CH${r+1} `;t.subarray(2).forEach((l,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=l||121},()=>{e.#e[i+d[32]]=l},()=>{e.#r[r]=l}][b]():b<8||(b<14?[()=>{let p=e.chRedir(l,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!l},()=>{e.setChType(r,l,g.ns5r),console.debug(`${o}type: ${O[l]}`)},()=>{e.#s[u.rpn*r+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=l},()=>{e.#e[i+d[11]]=l},()=>{},()=>{},()=>{e.#e[i+d[10]]=l||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=l},()=>{e.#e[i+d[91]]=l},()=>{e.#e[i+d[76]]=l},()=>{e.#e[i+d[77]]=l},()=>{e.#e[i+d[78]]=l},()=>{e.#e[i+d[74]]=l},()=>{e.#e[i+d[71]]=l},()=>{e.#e[i+d[73]]=l},()=>{e.#e[i+d[75]]=l},()=>{e.#e[i+d[72]]=l}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=l},()=>{e.#e[i+d[65]]=l}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#S=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),o=4;s.forEach(function(l,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),o=s*u.cc;switch(i%92){case 0:{e.#e[o+d[0]]=r||121;break}case 1:{e.#e[o+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#c[s]=1);break}case 3:{let l=e.chRedir(r,a,!0);e.#f[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[o+d[7]]=r;break}case 11:{e.#e[o+d[11]]=r;break}case 14:{e.#e[o+d[10]]=r||128;break}case 19:{e.#e[o+d[93]]=r;break}case 20:{e.#e[o+d[91]]=r;break}case 84:{e.#e[o+d[65]]=r;break}case 85:{e.#e[o+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{o=h&127;break}case p==13:{l+=` +${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{l+=` +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let o=0;o<8;o++)a[i*8+o]=r>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,o=u.rpn*i,l=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=l):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=l},()=>{e.#c[i]=l},()=>{e.#e[s+d[10]]=l},()=>{e.#s[o+3]=l+40},()=>{e.#s[o+1]=l>>1,e.#s[o+2]=l&1},()=>{e.#e[s+d[91]]=l?127:0},()=>{},()=>{e.#e[s+d[74]]=l},()=>{e.#e[s+d[73]]=l},()=>{e.#e[s+d[72]]=l}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,l=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#c[s]=i},()=>{e.#e[o+d[7]]=i},()=>{e.#e[o+d[10]]=i},()=>{e.#e[o+d[91]]=i?127:0},()=>{e.#s[l+3]=i+40},()=>{e.#s[l+1]=i},()=>{e.#s[l]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(i,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,l)=>{([()=>{e.#b=o*12900/16383}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,o=t[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#c[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#c[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+o&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; diff --git a/dist/state_skim.mjs b/dist/state_skim.mjs index b76a575a..8bad0a01 100644 --- a/dist/state_skim.mjs +++ b/dist/state_skim.mjs @@ -138,7 +138,7 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[2]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` +`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[2]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` `).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],B=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],I={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},H=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#I=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#H=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],H[i][0]),H[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#G.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#B.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#G;#B;#J;buildRchTree(){let e=[];this.#I.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG 0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#H.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#I.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#H.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=B[0][s],this.#u=B[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${I[e.type]?I[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index 592a1ffe..b735add5 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ie=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],mr=[12,13,16,17,18,19],Er=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},P,j,ne,fe,W,de,Yt,U,H,O,p,ue,D,L,ee,B,G,we,oe,Ce,S,Fe,et,ce,me,te,Ve,Ee,Q,ve,Z,X,pe,Xe,ze,le,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,J,he,ge,Pe,De,Ie,Wt,oa=(Wt=class extends it{constructor(){super();m(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);m(this,P,0);m(this,j,0);m(this,ne,0);m(this,fe,new Array(11));m(this,U,new Uint8Array($.ch));m(this,H,new Uint8Array($.ch));m(this,O,new Uint8Array($.ch));m(this,p,new Uint8Array($.ch*$.cc));m(this,ue,new Uint8Array($.ace));m(this,D,new Uint8Array($.ch));m(this,L,new Uint8Array($.ch*$.nn));m(this,ee,new Uint8Array($.ch));m(this,B,new Uint16Array($.pl));m(this,G,new Uint8Array($.pl));m(this,we,new Int16Array($.ch));m(this,oe,new Uint8Array($.ch));m(this,Ce,0);m(this,S,new Uint8Array($.ch*$.rpn));m(this,Fe,new Int8Array($.ch*qt.length));m(this,et,new Uint8Array($.drm*$.dpn*$.dnc));m(this,ce,new Uint8Array($.ch));m(this,me,new Uint8Array(128));m(this,te,new Uint8Array($.cmt*8));m(this,Ve,new Uint8Array(1024));m(this,Ee,new Uint8Array($.cmt*64));m(this,Q,new Uint8Array($.efx*3));m(this,ve,0);m(this,Z,0);m(this,X,100);m(this,pe,0);m(this,Xe,500);m(this,ze,0);m(this,le,"");m(this,ke,0);m(this,Ke,0);m(this,re,!0);m(this,I,!1);m(this,tt,void 0);m(this,$t,new Uint8Array(2));m(this,T,[]);m(this,be,new Uint8Array($.ch));m(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");m(this,_,[]);m(this,Te,void 0);m(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,ee)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,oe)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});m(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,P)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,ee)[n]=1,t(this,N).ano(n);return}case 127:{t(this,ee)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(mr.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(Y()&&console.debug(`${$e[t(this,P)]}, CH${n+1}: ${e.data[1]}`),t(this,P)==0?e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,P)==M.gs?e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,P)==M.gm?e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,P)==M.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,P)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,P))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,P)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=Er.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,P)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,P)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,D)[n]=e.data,t(this,ce)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});m(this,ot,{64:(e,n,h)=>{t(this,Pe).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,he).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,he).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,J).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,De).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});m(this,Re,void 0);m(this,Oe,void 0);m(this,J,void 0);m(this,he,void 0);m(this,ge,void 0);m(this,Pe,void 0);m(this,De,void 0);m(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new se),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ie=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],mr=[12,13,16,17,18,19],Er=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},P,j,ne,fe,W,de,Yt,U,H,O,p,ue,D,L,ee,B,G,we,oe,Ce,S,Fe,et,ce,me,te,Ve,Ee,Q,ve,Z,X,pe,Xe,ze,le,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,J,he,ge,Pe,De,Ie,Wt,oa=(Wt=class extends it{constructor(){super();m(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);m(this,P,0);m(this,j,0);m(this,ne,0);m(this,fe,new Array(11));m(this,U,new Uint8Array($.ch));m(this,H,new Uint8Array($.ch));m(this,O,new Uint8Array($.ch));m(this,p,new Uint8Array($.ch*$.cc));m(this,ue,new Uint8Array($.ace));m(this,D,new Uint8Array($.ch));m(this,L,new Uint8Array($.ch*$.nn));m(this,ee,new Uint8Array($.ch));m(this,B,new Uint16Array($.pl));m(this,G,new Uint8Array($.pl));m(this,we,new Int16Array($.ch));m(this,oe,new Uint8Array($.ch));m(this,Ce,0);m(this,S,new Uint8Array($.ch*$.rpn));m(this,Fe,new Int8Array($.ch*qt.length));m(this,et,new Uint8Array($.drm*$.dpn*$.dnc));m(this,ce,new Uint8Array($.ch));m(this,me,new Uint8Array(128));m(this,te,new Uint8Array($.cmt*8));m(this,Ve,new Uint8Array(1024));m(this,Ee,new Uint8Array($.cmt*64));m(this,Q,new Uint8Array($.efx*3));m(this,ve,0);m(this,Z,0);m(this,X,100);m(this,pe,0);m(this,Xe,500);m(this,ze,0);m(this,le,"");m(this,ke,0);m(this,Ke,0);m(this,re,!0);m(this,I,!1);m(this,tt,void 0);m(this,$t,new Uint8Array(2));m(this,T,[]);m(this,be,new Uint8Array($.ch));m(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");m(this,_,[]);m(this,Te,void 0);m(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,ee)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,oe)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});m(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,P)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,ee)[n]=1,t(this,N).ano(n);return}case 127:{t(this,ee)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(mr.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(Y()&&console.debug(`${$e[t(this,P)]}, CH${n+1}: ${e.data[1]}`),t(this,P)==0?e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,P)==M.gs?e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,P)==M.gm?e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,P)==M.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,P)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,P))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,P)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=Er.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,P)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,P)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,D)[n]=e.data,t(this,ce)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});m(this,ot,{64:(e,n,h)=>{t(this,Pe).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,he).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,he).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,J).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,De).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});m(this,Re,void 0);m(this,Oe,void 0);m(this,J,void 0);m(this,he,void 0);m(this,ge,void 0);m(this,Pe,void 0);m(this,De,void 0);m(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new se),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,7 +147,7 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,_)[1]=function(r){switch(r.slice(0,2)){case"@I":{w(this,I,!0),t(this,T).unshift(`Kar.Info: ${r.slice(2)}`);break}case"@K":{w(this,I,!0),t(this,T).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${r.slice(2)}`);break}case"@L":{w(this,I,!0),t(this,T).unshift(`Language: ${r.slice(2)}`);break}case"@T":{w(this,I,!0),t(this,T).unshift(`Ka.Title: ${r.slice(2)}`);break}case"@V":{w(this,I,!0),t(this,T).unshift(`Kara.Ver: ${r.slice(2)}`);break}case"XF":{let a=r.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,T).unshift(`XGF_Data: ${r}`)}break}default:t(this,I)?r[0]=="\\"?t(this,T).unshift(`@ ${r.slice(1)}`):r[0]=="/"?t(this,T).unshift(r.slice(1)):t(this,T)[0]+=r:(t(this,T)[0]=r,t(this,T).unshift(""))}},t(this,_)[2]=function(r){t(this,T).unshift(`Copyrite: ${r}`)},t(this,_)[3]=function(r,a){a<1&&t(this,pe)<1&&t(this,T).unshift(`TrkTitle: ${r}`)},t(this,_)[4]=function(r,a){t(this,T).unshift(`${Qt(t(this,pe),""," ")}Instrmnt: ${r}`)},t(this,_)[5]=function(r){r.trim()==""?t(this,T).unshift(""):t(this,T)[0]+=`${r}`},t(this,_)[6]=function(r){t(this,T).unshift(`${Qt(t(this,pe),""," ")}C.Marker: ${r}`)},t(this,_)[7]=function(r){t(this,T).unshift(`CuePoint: ${r}`)},t(this,_)[32]=function(r){w(this,pe,r[0]+1)},t(this,_)[33]=function(r,a){console.debug(`Track ${a} requests to get assigned to output ${r}.`),t(e,Se)[a]=r+1},t(this,_)[81]=function(r,a){w(e,Xe,r/1e3)},t(this,_)[127]=function(r,a){t(e,Te).run(r,a)},t(this,Te).default=function(r){console.warn(`Unrecognized sequencer-specific byte sequence: ${r}`)},t(this,Te).add([67,0,1],function(r,a){t(e,Se)[a]=r[0]+1}),w(this,Re,new se("universal non-realtime")),w(this,Oe,new se("universal realtime")),w(this,J,new se("Yamaha")),w(this,he,new se("Roland")),w(this,ge,new se("Korg")),w(this,Pe,new se("Kawai")),w(this,De,new se("Akai")),w(this,Ie,new se("Casio"));let n=function(r){console.info(`Unrecognized SysEx in "${this.name}" set.`,r)};t(this,Re).default=n,t(this,Oe).default=n,t(this,J).default=n,t(this,he).default=n,t(this,ge).default=n,t(this,Pe).default=n,t(this,De).default=n,t(this,Ie).default=n,t(this,Re).add([9],r=>{e.switchMode(["gm","?","g2"][r[0]-1],!0),w(e,I,t(e,I)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][r[0]-1]}`),r[0]==2&&e.init()}),t(this,Oe).add([4,1],r=>{w(e,X,((r[1]<<7)+r[0])/16383*100)}).add([4,3],r=>((r[1]<<7)+r[0]-8192)/8192).add([4,4],r=>r[1]-64),t(this,J).add([76,0,0],r=>{switch(r[0]){case 125:{console.info(`XG drum setup reset: ${r}`);break}case 126:{e.switchMode("xg",!0),w(e,I,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,s)=>{a[s]=i};if(r.subarray(1).forEach((i,s)=>{let f=s+r[0];([o,o,o,o,l=>{w(this,X,l*129/16383*100)},l=>{},l=>{}][f]||(()=>{}))(i,s)}),r[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],r=>{let a="XG ";r[0]<32?(a+="reverb ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${At(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][r[0]+i]||function(){console.warn(`Unknown XG reverb address: ${r[0]}.`)})(o)})):r[0]<64?(a+="chorus ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${It[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Ut(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${_e[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${_e[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][r[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${r[0]}.`)})(o)})):r[0]<86?(a+="variation ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][r[0]-64+i]||function(){})(o)})):r[0]<97?(a+="variation ",r.subarray(1).forEach((o,i)=>{[s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},s=>{console.debug(`${a}to chorus: ${q(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][r[0]-86+i](o)})):r[0]>111&&r[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${r[0]}`)}).add([76,2,64],r=>{r.subarray(1).forEach((a,o)=>{let i=o+r[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,f=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][f]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][f]()}})}).add([76,3],r=>{let a=r[0],o=r[1],i=`XG Insertion ${r[0]+1} `;r.subarray(2).forEach((s,f)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${We[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][o+f]||function(){})(s)})}).add([76,6,0],r=>{let a=r[0];a<64?e.setLetterDisplay(r.subarray(1),"XG letter display",a):w(e,ke,Date.now())}).add([76,7,0],r=>{let a=r[0];w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0);let o=r.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=$.cc*o,f=`XG CH${o+1} `,l=`Unknown XG part address ${i}.`;r.subarray(2).forEach((d,b)=>{i<1?console.debug(l):i<41?([()=>{t(e,p)[s+g[0]]=d},()=>{t(e,p)[s+g[32]]=d},()=>{t(e,D)[o]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!d},()=>{},()=>{e.setChType(o,d,M.xg),console.debug(`${f}type: ${Ye[d]||d}`)},()=>{t(e,S)[$.rpn*o+3]=d},!1,!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{t(e,p)[s+g[128]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[76]]=d},()=>{t(e,p)[s+g[77]]=d},()=>{t(e,p)[s+g[78]]=d},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},()=>{t(e,p)[s+g[73]]=d},()=>{t(e,p)[s+g[75]]=d},()=>{t(e,p)[s+g[72]]=d}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(t(e,p)[s+g[[5,65][i&1]]]=d):i<114?console.debug(l):i<116?console.debug(`${f}EQ ${["bass","treble"][i&1]} gain: ${d-64}dB`):i<118?console.debug(l):i<120?console.debug(`${f}EQ ${["bass","treble"][i&1]} freq: ${d}`):console.debug(l)})}).add([76,9],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=`PLG-150VL CH${o+1} `;r.subarray(2).forEach((f,l)=>{let d=l+i;switch(d){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][f]}`);break}case 0:case 27:case 28:break;default:if(d<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][d-3>>1];d&1?d<23?(console.debug(`${s}${b} control source: ${Nt(f)}`),f&&f<96&&e.allocateAce(f)):console.debug(`${s}${b} scale break point: ${f}`):console.debug(`${s}${b} depth: ${f-64}`)}}})}).add([76,10],r=>{}).add([76,16],r=>{}).add([76,17,0,0],r=>{}).add([76,112],r=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][r[0]]} for CH${r[2]+1}.`)}).add([73,0,0],(r,a)=>{let o=r[0],i="MU1000 System: ";r.subarray(1).forEach((s,f)=>{let l=o+f;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(w(e,Z,s?126:0),console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.info(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.info(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,re,!!s),console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(r,a)=>{let o=r[0],i=`MU1000 RS${t(e,re)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let s=e.chRedir(0,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(r[1]<<5,a,!0);t(e,re)&&e.dispatchEvent("channelmin",s),t(e,re)&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,re)){let s=e.chRedir(o-16+(t(e,Ke)<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(o<36){let s=e.chRedir(o-32<<4,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),w(e,Ke,o-32)),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=`PLG-100SG CH${o+1} `,s=Date.now();if(r[1]==0){let f="",l=0;r.subarray(2).forEach((d,b)=>{b%2==0?f+=Lt[d]||d.toString().padStart("0"):l+=d*13}),s>=t(e,ze)&&t(e,T).unshift("SG Lyric: "),t(e,T)[0]+=`${Bt(f)}`,w(e,ze,s+Math.ceil(l/2)+t(e,Xe)),Y()&&console.debug(`${i}vocals: ${f}`)}else console.warn(`Unknown PLG-100SG data: ${r}`)}),t(this,J).add([76,48],r=>{}).add([76,49],r=>{}).add([76,50],r=>{}).add([76,51],r=>{}),t(this,J).add([89,0],(r,a,o)=>{if(e.eprom){let i=r[0],s=(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let f=e.eprom.data;r.subarray(4).forEach((l,d)=>{let b=d>>3,y=d&7;if(y==7)for(let k=0;k<7;k++)f[s+7*b+k]+=(l>>6-k&1)<<7;else f[s+7*b+y]=l})}}).add([89,1],(r,a,o)=>{let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3];Y()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(r,a,o)=>{if(e.eprom){let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;r.subarray(4).forEach((f,l)=>{let d=l>>3,b=l&7;if(b==7)for(let y=0;y<7;y++)s[i+7*d+y]+=(f>>6-y&1)<<7;else s[i+7*d+b]=f})}}).add([89,3],(r,a,o)=>{}),t(this,J).add([39,48],(r,a,o)=>{}).add([43,0,0],(r,a,o)=>{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,()=>{w(this,X,f*129/16383*100)},()=>f-64,()=>f||128,()=>f,()=>f,()=>{console.debug(`TG300 variation on cc${f}.`)}][d](f,d)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}).add([43,1,0],(r,a,o)=>{}).add([43,2],(r,a,o)=>{let i=e.chRedir(r[0],a,!0),s=r[1],f=$.cc*i,l=`TG300 CH${i+1} `;r.subarray(2).forEach((d,b)=>{b<5?([()=>{},()=>{t(e,p)[f+g[0]]=d},()=>{t(e,p)[f+g[32]]=d},()=>{t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][b+s]||(()=>{}))(d,b+s):b<21||(b<47?([()=>{t(e,ee)[i]=+!d},()=>{},()=>{},()=>{t(e,S)[$.rpn*i+3]=d},()=>{},()=>{t(e,p)[f+g[7]]=d},!1,!1,()=>{t(e,p)[f+g[10]]=d||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${d}`)},()=>{console.debug(`${l} AC2 at cc${d}`)},()=>{t(e,p)[f+g[128]]=d},()=>{t(e,p)[f+g[93]]=d},()=>{t(e,p)[f+g[91]]=d},()=>{t(e,p)[f+g[94]]=d},()=>{t(e,p)[f+g[76]]=d},()=>{t(e,p)[f+g[77]]=d},()=>{t(e,p)[f+g[74]]=d},()=>{t(e,p)[f+g[71]]=d},()=>{t(e,p)[f+g[73]]=d},()=>{t(e,p)[f+g[75]]=d},()=>{t(e,p)[f+g[72]]=d},()=>{t(e,p)[f+g[78]]=d}][b+s-21]||(()=>{}))(d,b+s):b<95||([()=>{t(e,p)[f+g[65]]=d},()=>{t(e,p)[f+g[5]]=d}][b+s-95]||(()=>{}))(d,b+s))})}).add([43,7,0],(r,a,o)=>{let i=r[0];e.setLetterDisplay(r.subarray(1),"TG300 letter display",i)}).add([43,7,1],(r,a,o)=>{w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0),r.forEach(function(i,s){let f=Math.floor(s/16),l=s%16,d=(l*3+f)*7,b=7,y=0;for(d-=l*5,f==2&&(b=2);y>6-y&1,y++})}),t(this,he).add([66,18,0,0,127],(r,a,o)=>{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,Z,3),w(e,I,!1),t(e,be).fill(0),console.info(`GS system to ${["single","dual"][r[0]]} mode.`)}).add([66,18,64,0],(r,a,o)=>{switch(r[0]){case 127:{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,I,!1),t(e,be).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,b=>{w(this,X,b*129/16383*100)},b=>{},b=>{}][d](f,l)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,64,1],r=>{let a=r[0];if(a<16){let o="".padStart(a," ");r.subarray(1).forEach((i,s)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?r.subarray(1).forEach((o,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${pt[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${o}ms`)},()=>{console.info(`${s}type: ${Ht[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)},()=>{console.debug(`${s}to delay: ${q(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?r.subarray(1).forEach((o,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${Gt[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],r=>{let a="GS EQ ";r.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][r[0]+i]||function(){console.warn(`Unknown GS EQ address: ${r[0]+i}`)})()})}).add([66,18,64,3],r=>{let a="GS EFX ",o=function(i,s){let f=_t(t(e,Q).subarray(10,12),s,i);f&&console.debug(`${a}${bt(t(e,Q).subarray(10,12))} ${f}`)};r.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${bt(t(e,Q).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${q(i)}dB`)},()=>{console.debug(`${a}to chorus: ${q(i)}dB`)},()=>{console.debug(`${a}to delay: ${q(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][r[0]+s]||function(f,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,r[0]+s)})}).add([66,18,65],r=>{}).add([69,18,16],r=>{var a;switch(r[0]){case 0:{let o=r[1];e.setLetterDisplay(r.subarray(2),"GS display text",o);break}case 32:{w(e,ne,Date.now()+3200),r[1]==0&&w(e,j,Math.max(Math.min(r[2]-1,9),0));break}default:if(r[0]<11){t(e,j)>9&&w(e,j,0),w(e,ne,Date.now()+3200),(a=t(e,fe)[r[0]-1])!=null&&a.length||(t(e,fe)[r[0]-1]=new Uint8Array(256));let o=t(e,fe)[r[0]-1],i=r[1];o.fill(0);let s=r.subarray(2);for(let f=0;f>4-v&1,v++})}else console.warn(`Unknown GS display section: ${r[0]}`)}});let h=function(r,a,o){let i=r[0],s=$.cc*a,f=$.rpn*a,l=`GS CH${a+1} `;i<3?r.subarray(1).forEach((d,b)=>{[()=>{t(e,p)[s+g[0]]=d},()=>{t(e,D)[a]=d},()=>{let y=e.chRedir(d,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][i+b]()}):i<19||(i<44?r.subarray(1).forEach((d,b)=>{([()=>{t(e,ee)[a]=+!d},!1,()=>{e.setChType(a,d<<1,M.gs),console.debug(`${l}type: ${d?"drum ":"melodic"}${d||""}`)},()=>{t(e,S)[f+3]=d},!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${d}`)},()=>{console.debug(`${l}CC 2: cc${d}`)},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},!1,!1,()=>{t(e,S)[f+1]=d},()=>{t(e,S)[f+2]=d},()=>{t(e,p)[s+g[94]]=d}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},c=function(r,a){let o=r[0],i=`GS CH${a+1} `;o<2?r.subarray(1).forEach((s,f)=>{[()=>{t(e,p)[$.cc*a+g[32]]=s},()=>{}][o+f]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?r.subarray(1).forEach((s,f)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][o+f-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,he).add([66,18,64,16],(r,a)=>{h(r,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(r,a)=>{h(r,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(r,a)=>{h(r,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(r,a)=>{h(r,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(r,a)=>{h(r,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(r,a)=>{h(r,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(r,a)=>{h(r,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(r,a)=>{h(r,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(r,a)=>{h(r,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(r,a)=>{h(r,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(r,a)=>{h(r,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(r,a)=>{h(r,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(r,a)=>{h(r,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(r,a)=>{h(r,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(r,a)=>{h(r,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(r,a)=>{h(r,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(r,a)=>{c(r,e.chRedir(9,a,!0))}).add([66,18,64,65],(r,a)=>{c(r,e.chRedir(0,a,!0))}).add([66,18,64,66],(r,a)=>{c(r,e.chRedir(1,a,!0))}).add([66,18,64,67],(r,a)=>{c(r,e.chRedir(2,a,!0))}).add([66,18,64,68],(r,a)=>{c(r,e.chRedir(3,a,!0))}).add([66,18,64,69],(r,a)=>{c(r,e.chRedir(4,a,!0))}).add([66,18,64,70],(r,a)=>{c(r,e.chRedir(5,a,!0))}).add([66,18,64,71],(r,a)=>{c(r,e.chRedir(6,a,!0))}).add([66,18,64,72],(r,a)=>{c(r,e.chRedir(7,a,!0))}).add([66,18,64,73],(r,a)=>{c(r,e.chRedir(8,a,!0))}).add([66,18,64,74],(r,a)=>{c(r,e.chRedir(10,a,!0))}).add([66,18,64,75],(r,a)=>{c(r,e.chRedir(11,a,!0))}).add([66,18,64,76],(r,a)=>{c(r,e.chRedir(12,a,!0))}).add([66,18,64,77],(r,a)=>{c(r,e.chRedir(13,a,!0))}).add([66,18,64,78],(r,a)=>{c(r,e.chRedir(14,a,!0))}).add([66,18,64,79],(r,a)=>{c(r,e.chRedir(15,a,!0))}),t(this,ge).add([54,65],(r,a)=>{e.switchMode("x5d");let o=(r[1]<<7)+r[0],i=(r[3]<<7)+r[2],s=e.chRedir(o&15,a,!0),f=$.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-1,t(e,p)[f+g[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-101,t(e,p)[f+g[0]]=56):(e.setChType(s,e.CH_DRUMS,M.x5d),t(e,D)[s]=jt[i-229]||0,t(e,p)[f+g[0]]=62))},()=>{t(e,p)[f+g[7]]=i},()=>{i<31&&(t(e,p)[f+g[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,p)[f+g[93]]=Ze(i)},()=>{t(e,p)[f+g[91]]=Ze(i)},()=>{t(e,S)[s*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,S)[s*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,S)[s*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=82,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<16400){let y=b%164;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` +122 006 000 `),t(this,_)[1]=function(r){switch(r.slice(0,2)){case"@I":{w(this,I,!0),t(this,T).unshift(`Kar.Info: ${r.slice(2)}`);break}case"@K":{w(this,I,!0),t(this,T).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${r.slice(2)}`);break}case"@L":{w(this,I,!0),t(this,T).unshift(`Language: ${r.slice(2)}`);break}case"@T":{w(this,I,!0),t(this,T).unshift(`Ka.Title: ${r.slice(2)}`);break}case"@V":{w(this,I,!0),t(this,T).unshift(`Kara.Ver: ${r.slice(2)}`);break}case"XF":{let a=r.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,T).unshift(`XGF_Data: ${r}`)}break}default:t(this,I)?r[0]=="\\"?t(this,T).unshift(`@ ${r.slice(1)}`):r[0]=="/"?t(this,T).unshift(r.slice(1)):t(this,T)[0]+=r:(t(this,T)[0]=r,t(this,T).unshift(""))}},t(this,_)[2]=function(r){t(this,T).unshift(`Copyrite: ${r}`)},t(this,_)[3]=function(r,a){a<1&&t(this,pe)<1&&t(this,T).unshift(`TrkTitle: ${r}`)},t(this,_)[4]=function(r,a){t(this,T).unshift(`${Qt(t(this,pe),""," ")}Instrmnt: ${r}`)},t(this,_)[5]=function(r){r.trim()==""?t(this,T).unshift(""):t(this,T)[0]+=`${r}`},t(this,_)[6]=function(r){t(this,T).unshift(`${Qt(t(this,pe),""," ")}C.Marker: ${r}`)},t(this,_)[7]=function(r){t(this,T).unshift(`CuePoint: ${r}`)},t(this,_)[32]=function(r){w(this,pe,r[0]+1)},t(this,_)[33]=function(r,a){console.debug(`Track ${a} requests to get assigned to output ${r}.`),t(e,Se)[a]=r+1},t(this,_)[81]=function(r,a){w(e,Xe,r/1e3)},t(this,_)[127]=function(r,a){t(e,Te).run(r,a)},t(this,Te).default=function(r){console.warn(`Unrecognized sequencer-specific byte sequence: ${r}`)},t(this,Te).add([67,0,1],function(r,a){t(e,Se)[a]=r[0]+1}),w(this,Re,new se("universal non-realtime")),w(this,Oe,new se("universal realtime")),w(this,J,new se("Yamaha")),w(this,he,new se("Roland")),w(this,ge,new se("Korg")),w(this,Pe,new se("Kawai")),w(this,De,new se("Akai")),w(this,Ie,new se("Casio"));let n=function(r){console.info(`Unrecognized SysEx in "${this.name}" set.`,r)};t(this,Re).default=n,t(this,Oe).default=n,t(this,J).default=n,t(this,he).default=n,t(this,ge).default=n,t(this,Pe).default=n,t(this,De).default=n,t(this,Ie).default=n,t(this,Re).add([9],r=>{e.switchMode(["gm","?","g2"][r[0]-1],!0),w(e,I,t(e,I)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][r[0]-1]}`),r[0]==2&&e.init()}),t(this,Oe).add([4,1],r=>{w(e,X,((r[1]<<7)+r[0])/16383*100)}).add([4,3],r=>((r[1]<<7)+r[0]-8192)/8192).add([4,4],r=>r[1]-64),t(this,J).add([76,0,0],r=>{switch(r[0]){case 125:{console.info(`XG drum setup reset: ${r}`);break}case 126:{e.switchMode("xg",!0),w(e,I,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,s)=>{a[s]=i};if(r.subarray(1).forEach((i,s)=>{let f=s+r[0];([o,o,o,o,l=>{w(this,X,l*129/16383*100)},l=>{},l=>{}][f]||(()=>{}))(i,s)}),r[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],r=>{let a="XG ";r[0]<32?(a+="reverb ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${At(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][r[0]+i]||function(){console.warn(`Unknown XG reverb address: ${r[0]}.`)})(o)})):r[0]<64?(a+="chorus ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${It[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Ut(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${_e[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${_e[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][r[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${r[0]}.`)})(o)})):r[0]<86?(a+="variation ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][r[0]-64+i]||function(){})(o)})):r[0]<97?(a+="variation ",r.subarray(1).forEach((o,i)=>{[s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},s=>{console.debug(`${a}to chorus: ${q(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][r[0]-86+i](o)})):r[0]>111&&r[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${r[0]}`)}).add([76,2,64],r=>{r.subarray(1).forEach((a,o)=>{let i=o+r[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,f=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][f]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][f]()}})}).add([76,3],r=>{let a=r[0],o=r[1],i=`XG Insertion ${r[0]+1} `;r.subarray(2).forEach((s,f)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${We[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][o+f]||function(){})(s)})}).add([76,6,0],r=>{let a=r[0];a<64?e.setLetterDisplay(r.subarray(1),"XG letter display",a):w(e,ke,Date.now())}).add([76,7,0],r=>{let a=r[0];w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0);let o=r.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=$.cc*o,f=`XG CH${o+1} `,l=`Unknown XG part address ${i}.`;r.subarray(2).forEach((d,b)=>{i<1?console.debug(l):i<41?([()=>{t(e,p)[s+g[0]]=d},()=>{t(e,p)[s+g[32]]=d},()=>{t(e,D)[o]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!d},()=>{},()=>{e.setChType(o,d,M.xg),console.debug(`${f}type: ${Ye[d]||d}`)},()=>{t(e,S)[$.rpn*o+3]=d},!1,!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{t(e,p)[s+g[128]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[76]]=d},()=>{t(e,p)[s+g[77]]=d},()=>{t(e,p)[s+g[78]]=d},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},()=>{t(e,p)[s+g[73]]=d},()=>{t(e,p)[s+g[75]]=d},()=>{t(e,p)[s+g[72]]=d}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(t(e,p)[s+g[[5,65][i&1]]]=d):i<114?console.debug(l):i<116?console.debug(`${f}EQ ${["bass","treble"][i&1]} gain: ${d-64}dB`):i<118?console.debug(l):i<120?console.debug(`${f}EQ ${["bass","treble"][i&1]} freq: ${d}`):console.debug(l)})}).add([76,9],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=`PLG-150VL CH${o+1} `;r.subarray(2).forEach((f,l)=>{let d=l+i;switch(d){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][f]}`);break}case 0:case 27:case 28:break;default:if(d<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][d-3>>1];d&1?d<23?(console.debug(`${s}${b} control source: ${Nt(f)}`),f&&f<96&&e.allocateAce(f)):console.debug(`${s}${b} scale break point: ${f}`):console.debug(`${s}${b} depth: ${f-64}`)}}})}).add([76,10],r=>{}).add([76,16],r=>{}).add([76,17,0,0],r=>{}).add([76,112],r=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][r[0]]} for CH${r[2]+1}.`)}).add([73,0,0],(r,a)=>{let o=r[0],i="MU1000 System: ";r.subarray(1).forEach((s,f)=>{let l=o+f;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(w(e,Z,s?126:0),console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,re,!!s),console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(r,a)=>{let o=r[0],i=`MU1000 RS${t(e,re)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let s=e.chRedir(0,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(r[1]<<5,a,!0);t(e,re)&&e.dispatchEvent("channelmin",s),t(e,re)&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,re)){let s=e.chRedir(o-16+(t(e,Ke)<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(o<36){let s=e.chRedir(o-32<<4,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),w(e,Ke,o-32)),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=`PLG-100SG CH${o+1} `,s=Date.now();if(r[1]==0){let f="",l=0;r.subarray(2).forEach((d,b)=>{b%2==0?f+=Lt[d]||d.toString().padStart("0"):l+=d*13}),s>=t(e,ze)&&t(e,T).unshift("SG Lyric: "),t(e,T)[0]+=`${Bt(f)}`,w(e,ze,s+Math.ceil(l/2)+t(e,Xe)),Y()&&console.debug(`${i}vocals: ${f}`)}else console.warn(`Unknown PLG-100SG data: ${r}`)}),t(this,J).add([76,48],r=>{}).add([76,49],r=>{}).add([76,50],r=>{}).add([76,51],r=>{}),t(this,J).add([89,0],(r,a,o)=>{if(e.eprom){let i=r[0],s=(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let f=e.eprom.data;r.subarray(4).forEach((l,d)=>{let b=d>>3,y=d&7;if(y==7)for(let k=0;k<7;k++)f[s+7*b+k]+=(l>>6-k&1)<<7;else f[s+7*b+y]=l})}}).add([89,1],(r,a,o)=>{let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3];Y()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(r,a,o)=>{if(e.eprom){let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;r.subarray(4).forEach((f,l)=>{let d=l>>3,b=l&7;if(b==7)for(let y=0;y<7;y++)s[i+7*d+y]+=(f>>6-y&1)<<7;else s[i+7*d+b]=f})}}).add([89,3],(r,a,o)=>{}),t(this,J).add([39,48],(r,a,o)=>{}).add([43,0,0],(r,a,o)=>{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,()=>{w(this,X,f*129/16383*100)},()=>f-64,()=>f||128,()=>f,()=>f,()=>{console.debug(`TG300 variation on cc${f}.`)}][d](f,d)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}).add([43,1,0],(r,a,o)=>{}).add([43,2],(r,a,o)=>{let i=e.chRedir(r[0],a,!0),s=r[1],f=$.cc*i,l=`TG300 CH${i+1} `;r.subarray(2).forEach((d,b)=>{b<5?([()=>{},()=>{t(e,p)[f+g[0]]=d},()=>{t(e,p)[f+g[32]]=d},()=>{t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][b+s]||(()=>{}))(d,b+s):b<21||(b<47?([()=>{t(e,ee)[i]=+!d},()=>{},()=>{},()=>{t(e,S)[$.rpn*i+3]=d},()=>{},()=>{t(e,p)[f+g[7]]=d},!1,!1,()=>{t(e,p)[f+g[10]]=d||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${d}`)},()=>{console.debug(`${l} AC2 at cc${d}`)},()=>{t(e,p)[f+g[128]]=d},()=>{t(e,p)[f+g[93]]=d},()=>{t(e,p)[f+g[91]]=d},()=>{t(e,p)[f+g[94]]=d},()=>{t(e,p)[f+g[76]]=d},()=>{t(e,p)[f+g[77]]=d},()=>{t(e,p)[f+g[74]]=d},()=>{t(e,p)[f+g[71]]=d},()=>{t(e,p)[f+g[73]]=d},()=>{t(e,p)[f+g[75]]=d},()=>{t(e,p)[f+g[72]]=d},()=>{t(e,p)[f+g[78]]=d}][b+s-21]||(()=>{}))(d,b+s):b<95||([()=>{t(e,p)[f+g[65]]=d},()=>{t(e,p)[f+g[5]]=d}][b+s-95]||(()=>{}))(d,b+s))})}).add([43,7,0],(r,a,o)=>{let i=r[0];e.setLetterDisplay(r.subarray(1),"TG300 letter display",i)}).add([43,7,1],(r,a,o)=>{w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0),r.forEach(function(i,s){let f=Math.floor(s/16),l=s%16,d=(l*3+f)*7,b=7,y=0;for(d-=l*5,f==2&&(b=2);y>6-y&1,y++})}),t(this,he).add([66,18,0,0,127],(r,a,o)=>{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,Z,3),w(e,I,!1),t(e,be).fill(0),console.info(`GS system to ${["single","dual"][r[0]]} mode.`)}).add([66,18,64,0],(r,a,o)=>{switch(r[0]){case 127:{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,I,!1),t(e,be).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,b=>{w(this,X,b*129/16383*100)},b=>{},b=>{}][d](f,l)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,64,1],r=>{let a=r[0];if(a<16){let o="".padStart(a," ");r.subarray(1).forEach((i,s)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?r.subarray(1).forEach((o,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${pt[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${o}ms`)},()=>{console.info(`${s}type: ${Ht[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)},()=>{console.debug(`${s}to delay: ${q(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?r.subarray(1).forEach((o,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${Gt[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],r=>{let a="GS EQ ";r.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][r[0]+i]||function(){console.warn(`Unknown GS EQ address: ${r[0]+i}`)})()})}).add([66,18,64,3],r=>{let a="GS EFX ",o=function(i,s){let f=_t(t(e,Q).subarray(10,12),s,i);f&&console.debug(`${a}${bt(t(e,Q).subarray(10,12))} ${f}`)};r.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${bt(t(e,Q).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${q(i)}dB`)},()=>{console.debug(`${a}to chorus: ${q(i)}dB`)},()=>{console.debug(`${a}to delay: ${q(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][r[0]+s]||function(f,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,r[0]+s)})}).add([66,18,65],r=>{}).add([69,18,16],r=>{var a;switch(r[0]){case 0:{let o=r[1];e.setLetterDisplay(r.subarray(2),"GS display text",o);break}case 32:{w(e,ne,Date.now()+3200),r[1]==0&&w(e,j,Math.max(Math.min(r[2]-1,9),0));break}default:if(r[0]<11){t(e,j)>9&&w(e,j,0),w(e,ne,Date.now()+3200),(a=t(e,fe)[r[0]-1])!=null&&a.length||(t(e,fe)[r[0]-1]=new Uint8Array(256));let o=t(e,fe)[r[0]-1],i=r[1];o.fill(0);let s=r.subarray(2);for(let f=0;f>4-v&1,v++})}else console.warn(`Unknown GS display section: ${r[0]}`)}});let h=function(r,a,o){let i=r[0],s=$.cc*a,f=$.rpn*a,l=`GS CH${a+1} `;i<3?r.subarray(1).forEach((d,b)=>{[()=>{t(e,p)[s+g[0]]=d},()=>{t(e,D)[a]=d},()=>{let y=e.chRedir(d,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][i+b]()}):i<19||(i<44?r.subarray(1).forEach((d,b)=>{([()=>{t(e,ee)[a]=+!d},!1,()=>{e.setChType(a,d<<1,M.gs),console.debug(`${l}type: ${d?"drum ":"melodic"}${d||""}`)},()=>{t(e,S)[f+3]=d},!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${d}`)},()=>{console.debug(`${l}CC 2: cc${d}`)},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},!1,!1,()=>{t(e,S)[f+1]=d},()=>{t(e,S)[f+2]=d},()=>{t(e,p)[s+g[94]]=d}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},c=function(r,a){let o=r[0],i=`GS CH${a+1} `;o<2?r.subarray(1).forEach((s,f)=>{[()=>{t(e,p)[$.cc*a+g[32]]=s},()=>{}][o+f]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?r.subarray(1).forEach((s,f)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][o+f-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,he).add([66,18,64,16],(r,a)=>{h(r,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(r,a)=>{h(r,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(r,a)=>{h(r,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(r,a)=>{h(r,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(r,a)=>{h(r,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(r,a)=>{h(r,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(r,a)=>{h(r,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(r,a)=>{h(r,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(r,a)=>{h(r,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(r,a)=>{h(r,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(r,a)=>{h(r,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(r,a)=>{h(r,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(r,a)=>{h(r,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(r,a)=>{h(r,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(r,a)=>{h(r,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(r,a)=>{h(r,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(r,a)=>{c(r,e.chRedir(9,a,!0))}).add([66,18,64,65],(r,a)=>{c(r,e.chRedir(0,a,!0))}).add([66,18,64,66],(r,a)=>{c(r,e.chRedir(1,a,!0))}).add([66,18,64,67],(r,a)=>{c(r,e.chRedir(2,a,!0))}).add([66,18,64,68],(r,a)=>{c(r,e.chRedir(3,a,!0))}).add([66,18,64,69],(r,a)=>{c(r,e.chRedir(4,a,!0))}).add([66,18,64,70],(r,a)=>{c(r,e.chRedir(5,a,!0))}).add([66,18,64,71],(r,a)=>{c(r,e.chRedir(6,a,!0))}).add([66,18,64,72],(r,a)=>{c(r,e.chRedir(7,a,!0))}).add([66,18,64,73],(r,a)=>{c(r,e.chRedir(8,a,!0))}).add([66,18,64,74],(r,a)=>{c(r,e.chRedir(10,a,!0))}).add([66,18,64,75],(r,a)=>{c(r,e.chRedir(11,a,!0))}).add([66,18,64,76],(r,a)=>{c(r,e.chRedir(12,a,!0))}).add([66,18,64,77],(r,a)=>{c(r,e.chRedir(13,a,!0))}).add([66,18,64,78],(r,a)=>{c(r,e.chRedir(14,a,!0))}).add([66,18,64,79],(r,a)=>{c(r,e.chRedir(15,a,!0))}),t(this,ge).add([54,65],(r,a)=>{e.switchMode("x5d");let o=(r[1]<<7)+r[0],i=(r[3]<<7)+r[2],s=e.chRedir(o&15,a,!0),f=$.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-1,t(e,p)[f+g[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-101,t(e,p)[f+g[0]]=56):(e.setChType(s,e.CH_DRUMS,M.x5d),t(e,D)[s]=jt[i-229]||0,t(e,p)[f+g[0]]=62))},()=>{t(e,p)[f+g[7]]=i},()=>{i<31&&(t(e,p)[f+g[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,p)[f+g[93]]=Ze(i)},()=>{t(e,p)[f+g[91]]=Ze(i)},()=>{t(e,S)[s*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,S)[s*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,S)[s*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=82,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<16400){let y=b%164;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=90,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<13600){let y=b%136;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ie(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ie(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,D)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,D)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,he).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,me)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,me)[i-1<<4];if(b<3)if(t(e,ce)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,ce)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,te)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,me)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,me)[d-1<<4];if(y<3)if(t(e,ce)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,te)[(d-1)*$.cmt+b]=s),b<10&&(t(e,ce)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let E=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME 000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,Ee)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,le,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,D)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,D)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,ne,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,E=0,x=y0;)t(e,W,de)[k*32+y*7+(x-E)]=v&1,v=v>>1,E++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ie(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ie(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,D)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` diff --git a/dist/xp_state.mjs b/dist/xp_state.mjs index d2dca2b1..0e0c91fe 100644 --- a/dist/xp_state.mjs +++ b/dist/xp_state.mjs @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(b=>{let e=b.split(",");We[e[0]]=e[1]});var bt=function(b){let e=b;b[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;e.indexOf(l)>-1;)e=e.replace(l,l[0])});for(let l in We)e=e.replaceAll(l,We[l]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(b){return b?b<96?`cc${b}`:["aftertouch","velocity","pitch bend"][b-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",b=>"aiueo"[b]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",b=>["off","LPF","HPF"][b]],94984:["noise type",b=>["white","pink"][b]],94987:["disc type",b=>["LP","SP","EP","RND"]],94990:["hum type",b=>`${b+5}0Hz`],94993:["M/S",b=>["mono","stereo"][b]]},Je=function(b){return Ut[(b[0]-32<<8)+b[1]]||`0x${b[0].toString(16).padStart(2,"0")}${b[1].toString(16).padStart(2,"0")}`},yt=function(b,e,n){let l=(b[0]-32<<16)+(b[1]<<8)+e,d=Nt[l]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(b=64){return Math.round(2e3*Math.log10(b/64))/100};var wt=function(b){let e=0;return b.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(b,e){let n=0,l=0;for(let d=0;d>s&1)<<7,o=b[d];o+=a,d%8!=0?(e(o,n,b),n++):l=b[d]}},_e=function(b){let e=Math.floor(b*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Ie=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((b,e)=>{x[b]=e});var p={length:Ie.length};Ie.forEach((b,e)=>{p[b]=e});var Mt={length:qe.length};qe.forEach((b,e)=>{Mt[b]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(b){let e=[],n=0;return b==null||b.forEach(function(l,d){l==247?e.push(b.subarray(n,d)):l==240&&(n=d+1)}),e.length||e.push(b.subarray(0)),q()&&console.debug(e),e},xt=function(b,e="",n="",l=2){return b?`${e}${b.toString().padStart(l,"0")}${n}`:""},$={ch:128,cc:Ie.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,u,ce,O,A,W,U,L,pe,se,me,v,Pe,Fe,ae,ge,Y,Ae,$e,V,ye,Q,_,le,Ue,Ne,re,we,He,J,D,Xe,tt,C,he,Ee,G,ve,N,Ke,ze,xe,Ce,j,ie,fe,Me,Te,Re,Ct,ms=(Ct=class extends it{constructor(){super();E(this,z);M(this,"NOTE_IDLE",0);M(this,"NOTE_ATTACK",1);M(this,"NOTE_DECAY",2);M(this,"NOTE_SUSTAIN",3);M(this,"NOTE_HELD",4);M(this,"NOTE_RELEASE",5);M(this,"NOTE_SOSTENUTO_ATTACK",8);M(this,"NOTE_SOSTENUTO_DECAY",9);M(this,"NOTE_SOSTENUTO_SUSTAIN",10);M(this,"NOTE_SOSTENUTO_HELD",11);M(this,"CH_MELODIC",0);M(this,"CH_DRUMS",1);M(this,"CH_DRUM1",2);M(this,"CH_DRUM2",3);M(this,"CH_DRUM3",4);M(this,"CH_DRUM4",5);M(this,"CH_DRUM5",6);M(this,"CH_DRUM6",7);M(this,"CH_DRUM7",8);M(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,u,new Uint8Array($.ch*$.cc));E(this,ce,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,W,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ae,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,Y,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Q,0);E(this,_,100);E(this,le,0);E(this,Ue,500);E(this,Ne,0);E(this,re,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,C,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));M(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));M(this,"userBank",new je("gm"));M(this,"initOnReset",!1);M(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let l=e*128+n,d=t(this,U).lastIndexOf(l);d>-1&&(t(this,u)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_HELD})):t(this,u)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[l]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let d=e*128+n,s=0;for(t(this,W)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=l,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,l)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[l]=d;let s=t(this,U)[l];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,l,d)=>{let s=n>>7,a=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,a)})}});E(this,Ke,{8:function(e){let n=e.channel,l=e.data[0];t(this,N).nOff(n,l)},9:function(e){let n=e.channel;t(this,P)[n]=1;let l=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,l,d):t(this,N).nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];t(this,U).indexOf(l)>-1&&(t(this,A)[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let l=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,u)[d+p[1]]=0,t(this,u)[d+p[5]]=0,t(this,u)[d+p[64]]=0,t(this,u)[d+p[65]]=0,t(this,u)[d+p[66]]=0,t(this,u)[d+p[67]]=0,t(this,u)[d+p[11]]=127,t(this,u)[d+p[101]]=127,t(this,u)[d+p[100]]=127,t(this,u)[d+p[99]]=127,t(this,u)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,W)[n]=1,t(this,N).ano(n);return}case 127:{t(this,W)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0?e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,R)==x.gs?e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,R)==x.gm?e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,R)==x.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,u)[l+p[99]],s=t(this,u)[l+p[98]];if(d==1){let a=Bt.indexOf(s);if(a>-1)t(this,u)[l+p[71+a]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Mt[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,u)[l+p[100]]];t(this,u)[l+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,u)[l+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,u)[l+101]==0&&et[t(this,u)[l+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,u)[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,u)[l+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,ae)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;t(this,U).forEach(function(d){let s=d>>7;l==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:l,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let l=n[0],d=n[1];(t(this,ze)[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(l,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,le,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,l)=>{t(this,Me).run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)t(this,ie).run(n,l,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,l)=>{t(this,fe).run(n,l,e)},67:(e,n,l)=>{t(this,j).run(n,l,e)},68:(e,n,l)=>{t(this,Re).run(n,l,e)},71:(e,n,l)=>{t(this,Te).run(n,l,e)},126:(e,n,l)=>{t(this,xe).run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),t(this,Ce).run(n,l,e)}});E(this,xe,void 0);E(this,Ce,void 0);E(this,j,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Me,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(b=>{let e=b.split(",");We[e[0]]=e[1]});var bt=function(b){let e=b;b[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;e.indexOf(l)>-1;)e=e.replace(l,l[0])});for(let l in We)e=e.replaceAll(l,We[l]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(b){return b?b<96?`cc${b}`:["aftertouch","velocity","pitch bend"][b-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",b=>"aiueo"[b]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",b=>["off","LPF","HPF"][b]],94984:["noise type",b=>["white","pink"][b]],94987:["disc type",b=>["LP","SP","EP","RND"]],94990:["hum type",b=>`${b+5}0Hz`],94993:["M/S",b=>["mono","stereo"][b]]},Je=function(b){return Ut[(b[0]-32<<8)+b[1]]||`0x${b[0].toString(16).padStart(2,"0")}${b[1].toString(16).padStart(2,"0")}`},yt=function(b,e,n){let l=(b[0]-32<<16)+(b[1]<<8)+e,d=Nt[l]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(b=64){return Math.round(2e3*Math.log10(b/64))/100};var wt=function(b){let e=0;return b.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(b,e){let n=0,l=0;for(let d=0;d>s&1)<<7,o=b[d];o+=a,d%8!=0?(e(o,n,b),n++):l=b[d]}},_e=function(b){let e=Math.floor(b*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Ie=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((b,e)=>{x[b]=e});var p={length:Ie.length};Ie.forEach((b,e)=>{p[b]=e});var Mt={length:qe.length};qe.forEach((b,e)=>{Mt[b]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(b){let e=[],n=0;return b==null||b.forEach(function(l,d){l==247?e.push(b.subarray(n,d)):l==240&&(n=d+1)}),e.length||e.push(b.subarray(0)),q()&&console.debug(e),e},xt=function(b,e="",n="",l=2){return b?`${e}${b.toString().padStart(l,"0")}${n}`:""},$={ch:128,cc:Ie.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,u,ce,O,A,W,U,L,pe,se,me,v,Pe,Fe,ae,ge,Y,Ae,$e,V,ye,Q,_,le,Ue,Ne,re,we,He,J,D,Xe,tt,C,he,Ee,G,ve,N,Ke,ze,xe,Ce,j,ie,fe,Me,Te,Re,Ct,ms=(Ct=class extends it{constructor(){super();E(this,z);M(this,"NOTE_IDLE",0);M(this,"NOTE_ATTACK",1);M(this,"NOTE_DECAY",2);M(this,"NOTE_SUSTAIN",3);M(this,"NOTE_HELD",4);M(this,"NOTE_RELEASE",5);M(this,"NOTE_SOSTENUTO_ATTACK",8);M(this,"NOTE_SOSTENUTO_DECAY",9);M(this,"NOTE_SOSTENUTO_SUSTAIN",10);M(this,"NOTE_SOSTENUTO_HELD",11);M(this,"CH_MELODIC",0);M(this,"CH_DRUMS",1);M(this,"CH_DRUM1",2);M(this,"CH_DRUM2",3);M(this,"CH_DRUM3",4);M(this,"CH_DRUM4",5);M(this,"CH_DRUM5",6);M(this,"CH_DRUM6",7);M(this,"CH_DRUM7",8);M(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,u,new Uint8Array($.ch*$.cc));E(this,ce,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,W,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ae,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,Y,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Q,0);E(this,_,100);E(this,le,0);E(this,Ue,500);E(this,Ne,0);E(this,re,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,C,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));M(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));M(this,"userBank",new je("gm"));M(this,"initOnReset",!1);M(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let l=e*128+n,d=t(this,U).lastIndexOf(l);d>-1&&(t(this,u)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_HELD})):t(this,u)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[l]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let d=e*128+n,s=0;for(t(this,W)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=l,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,l)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[l]=d;let s=t(this,U)[l];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,l,d)=>{let s=n>>7,a=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,a)})}});E(this,Ke,{8:function(e){let n=e.channel,l=e.data[0];t(this,N).nOff(n,l)},9:function(e){let n=e.channel;t(this,P)[n]=1;let l=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,l,d):t(this,N).nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];t(this,U).indexOf(l)>-1&&(t(this,A)[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let l=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,u)[d+p[1]]=0,t(this,u)[d+p[5]]=0,t(this,u)[d+p[64]]=0,t(this,u)[d+p[65]]=0,t(this,u)[d+p[66]]=0,t(this,u)[d+p[67]]=0,t(this,u)[d+p[11]]=127,t(this,u)[d+p[101]]=127,t(this,u)[d+p[100]]=127,t(this,u)[d+p[99]]=127,t(this,u)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,W)[n]=1,t(this,N).ano(n);return}case 127:{t(this,W)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0?e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,R)==x.gs?e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,R)==x.gm?e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,R)==x.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,u)[l+p[99]],s=t(this,u)[l+p[98]];if(d==1){let a=Bt.indexOf(s);if(a>-1)t(this,u)[l+p[71+a]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Mt[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,u)[l+p[100]]];t(this,u)[l+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,u)[l+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,u)[l+101]==0&&et[t(this,u)[l+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,u)[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,u)[l+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,ae)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;t(this,U).forEach(function(d){let s=d>>7;l==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:l,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let l=n[0],d=n[1];(t(this,ze)[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(l,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,le,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,l)=>{t(this,Me).run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)t(this,ie).run(n,l,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,l)=>{t(this,fe).run(n,l,e)},67:(e,n,l)=>{t(this,j).run(n,l,e)},68:(e,n,l)=>{t(this,Re).run(n,l,e)},71:(e,n,l)=>{t(this,Te).run(n,l,e)},126:(e,n,l)=>{t(this,xe).run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),t(this,Ce).run(n,l,e)}});E(this,xe,void 0);E(this,Ce,void 0);E(this,j,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Me,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,7 +147,7 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,C).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,C).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,C).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,C).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,C).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let a=s.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,C).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,C).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,C).unshift(s.slice(1)):t(this,C)[0]+=s:(t(this,C)[0]=s,t(this,C).unshift(""))}},t(this,G)[2]=function(s){t(this,C).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,a){a<1&&t(this,le)<1&&t(this,C).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,a){t(this,C).unshift(`${xt(t(this,le),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,C).unshift(""):t(this,C)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,C).unshift(`${xt(t(this,le),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,C).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,le,s[0]+1)},t(this,G)[33]=function(s,a){console.debug(`Track ${a} requests to get assigned to output ${s}.`),t(e,Ee)[a]=s+1},t(this,G)[81]=function(s,a){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,a){t(e,ve).run(s,a)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,a){t(e,Ee)[a]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Ce,new Z("universal realtime")),w(this,j,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Me,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Ce).default=n,t(this,j).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Me).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Ce).add([4,1],s=>{w(e,_,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,j).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,r)=>{a[r]=i};if(s.subarray(1).forEach((i,r)=>{let c=r+s[0];([o,o,o,o,h=>{w(this,_,h*129/16383*100)},h=>{},h=>{}][c]||(()=>{}))(i,r)}),s[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],s=>{let a="XG ";s[0]<32?(a+="reverb ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${ft(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(a+="chorus ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ht[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${dt(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${De[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${De[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(a+="variation ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(a+="variation ",s.subarray(1).forEach((o,i)=>{[r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},r=>{console.debug(`${a}to chorus: ${X(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((a,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,c=i-1&3,h=`XG EQ ${r} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${h}${a-64}dB`)},()=>{console.debug(`${h}${a} (raw)`)},()=>{console.debug(`${h}${a/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],s=>{let a=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((r,c)=>{([h=>{e.setEffectTypeRaw(3+a,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+a,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+c]||function(){})(r)})}).add([76,6,0],s=>{let a=s[0];a<64?e.setLetterDisplay(s.subarray(1),"XG letter display",a):w(e,we,Date.now())}).add([76,7,0],s=>{let a=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=$.cc*o,c=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,u)[r+p[0]]=f},()=>{t(e,u)[r+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${c}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{t(e,u)[r+p[128]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[76]]=f},()=>{t(e,u)[r+p[77]]=f},()=>{t(e,u)[r+p[78]]=f},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},()=>{t(e,u)[r+p[73]]=f},()=>{t(e,u)[r+p[75]]=f},()=>{t(e,u)[r+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,u)[r+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((c,h)=>{let f=h+i;switch(f){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${r}${g} control source: ${pt(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${r}${g} scale break point: ${c}`):console.debug(`${r}${g} depth: ${c-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,a)=>{let o=s[0],i="MU1000 System: ";s.subarray(1).forEach((r,c)=>{let h=o+c;h==8?console.debug(`${i}LCD contrast set to ${r}.`):h==18?(w(e,Q,r?126:0),console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):h>=64&&h<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.info(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.info(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!r),console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][h-64]()})}).add([73,10,0],(s,a)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let r=e.chRedir(0,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(s[1]<<5,a,!0);t(e,J)&&e.dispatchEvent("channelmin",r),t(e,J)&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let r=e.chRedir(o-16+(t(e,He)<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(o<36){let r=e.chRedir(o-32<<4,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),w(e,He,o-32)),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=`PLG-100SG CH${o+1} `,r=Date.now();if(s[1]==0){let c="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?c+=ut[f]||f.toString().padStart("0"):h+=f*13}),r>=t(e,Ne)&&t(e,C).unshift("SG Lyric: "),t(e,C)[0]+=`${bt(c)}`,w(e,Ne,r+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,j).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,j).add([89,0],(s,a,o)=>{if(e.eprom){let i=s[0],r=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)c[r+7*g+S]+=(h>>6-S&1)<<7;else c[r+7*g+y]=h})}}).add([89,1],(s,a,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,a,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;s.subarray(4).forEach((c,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)r[i+7*f+y]+=(c>>6-y&1)<<7;else r[i+7*f+g]=c})}}).add([89,3],(s,a,o)=>{}),t(this,j).add([39,48],(s,a,o)=>{}).add([43,0,0],(s,a,o)=>{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,()=>{w(this,_,c*129/16383*100)},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][f](c,f)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}).add([43,1,0],(s,a,o)=>{}).add([43,2],(s,a,o)=>{let i=e.chRedir(s[0],a,!0),r=s[1],c=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,u)[c+p[0]]=f},()=>{t(e,u)[c+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+r]||(()=>{}))(f,g+r):g<21||(g<47?([()=>{t(e,W)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,u)[c+p[7]]=f},!1,!1,()=>{t(e,u)[c+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,u)[c+p[128]]=f},()=>{t(e,u)[c+p[93]]=f},()=>{t(e,u)[c+p[91]]=f},()=>{t(e,u)[c+p[94]]=f},()=>{t(e,u)[c+p[76]]=f},()=>{t(e,u)[c+p[77]]=f},()=>{t(e,u)[c+p[74]]=f},()=>{t(e,u)[c+p[71]]=f},()=>{t(e,u)[c+p[73]]=f},()=>{t(e,u)[c+p[75]]=f},()=>{t(e,u)[c+p[72]]=f},()=>{t(e,u)[c+p[78]]=f}][g+r-21]||(()=>{}))(f,g+r):g<95||([()=>{t(e,u)[c+p[65]]=f},()=>{t(e,u)[c+p[5]]=f}][g+r-95]||(()=>{}))(f,g+r))})}).add([43,7,0],(s,a,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,a,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,r){let c=Math.floor(r/16),h=r%16,f=(h*3+c)*7,g=7,y=0;for(f-=h*5,c==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,a,o)=>{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,Q,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,a,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,g=>{w(this,_,g*129/16383*100)},g=>{},g=>{}][f](c,h)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,64,1],s=>{let a=s[0];if(a<16){let o="".padStart(a," ");s.subarray(1).forEach((i,r)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?s.subarray(1).forEach((o,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${o}ms`)},()=>{console.info(`${r}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)},()=>{console.debug(`${r}to delay: ${X(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?s.subarray(1).forEach((o,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],s=>{let a="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let a="GS EFX ",o=function(i,r){let c=yt(t(e,V).subarray(10,12),r,i);c&&console.debug(`${a}${Je(t(e,V).subarray(10,12))} ${c}`)};s.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${X(i)}dB`)},()=>{console.debug(`${a}to chorus: ${X(i)}dB`)},()=>{console.debug(`${a}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][s[0]+r]||function(c,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+r)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var a;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(a=t(e,oe)[s[0]-1])!=null&&a.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let r=s.subarray(2);for(let c=0;c>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let l=function(s,a,o){let i=s[0],r=$.cc*a,c=$.rpn*a,h=`GS CH${a+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,u)[r+p[0]]=f},()=>{t(e,O)[a]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,W)[a]=+!f},!1,()=>{e.setChType(a,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[c+3]=f},!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},!1,!1,()=>{t(e,v)[c+1]=f},()=>{t(e,v)[c+2]=f},()=>{t(e,u)[r+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,a){let o=s[0],i=`GS CH${a+1} `;o<2?s.subarray(1).forEach((r,c)=>{[()=>{t(e,u)[$.cc*a+p[32]]=r},()=>{}][o+c]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((r,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][o+c-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,a)=>{l(s,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(s,a)=>{l(s,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(s,a)=>{l(s,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(s,a)=>{l(s,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(s,a)=>{l(s,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(s,a)=>{l(s,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(s,a)=>{l(s,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(s,a)=>{l(s,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(s,a)=>{l(s,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(s,a)=>{l(s,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(s,a)=>{l(s,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(s,a)=>{l(s,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(s,a)=>{l(s,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(s,a)=>{l(s,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(s,a)=>{l(s,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(s,a)=>{l(s,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(s,a)=>{d(s,e.chRedir(9,a,!0))}).add([66,18,64,65],(s,a)=>{d(s,e.chRedir(0,a,!0))}).add([66,18,64,66],(s,a)=>{d(s,e.chRedir(1,a,!0))}).add([66,18,64,67],(s,a)=>{d(s,e.chRedir(2,a,!0))}).add([66,18,64,68],(s,a)=>{d(s,e.chRedir(3,a,!0))}).add([66,18,64,69],(s,a)=>{d(s,e.chRedir(4,a,!0))}).add([66,18,64,70],(s,a)=>{d(s,e.chRedir(5,a,!0))}).add([66,18,64,71],(s,a)=>{d(s,e.chRedir(6,a,!0))}).add([66,18,64,72],(s,a)=>{d(s,e.chRedir(7,a,!0))}).add([66,18,64,73],(s,a)=>{d(s,e.chRedir(8,a,!0))}).add([66,18,64,74],(s,a)=>{d(s,e.chRedir(10,a,!0))}).add([66,18,64,75],(s,a)=>{d(s,e.chRedir(11,a,!0))}).add([66,18,64,76],(s,a)=>{d(s,e.chRedir(12,a,!0))}).add([66,18,64,77],(s,a)=>{d(s,e.chRedir(13,a,!0))}).add([66,18,64,78],(s,a)=>{d(s,e.chRedir(14,a,!0))}).add([66,18,64,79],(s,a)=>{d(s,e.chRedir(15,a,!0))}),t(this,fe).add([54,65],(s,a)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],r=e.chRedir(o&15,a,!0),c=$.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-1,t(e,u)[c+p[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-101,t(e,u)[c+p[0]]=56):(e.setChType(r,e.CH_DRUMS,x.x5d),t(e,O)[r]=vt[i-229]||0,t(e,u)[c+p[0]]=62))},()=>{t(e,u)[c+p[7]]=i},()=>{i<31&&(t(e,u)[c+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,u)[c+p[93]]=_e(i)},()=>{t(e,u)[c+p[91]]=_e(i)},()=>{t(e,v)[r*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[r*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[r*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=82,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,C).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,C).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,C).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,C).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,C).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let a=s.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,C).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,C).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,C).unshift(s.slice(1)):t(this,C)[0]+=s:(t(this,C)[0]=s,t(this,C).unshift(""))}},t(this,G)[2]=function(s){t(this,C).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,a){a<1&&t(this,le)<1&&t(this,C).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,a){t(this,C).unshift(`${xt(t(this,le),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,C).unshift(""):t(this,C)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,C).unshift(`${xt(t(this,le),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,C).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,le,s[0]+1)},t(this,G)[33]=function(s,a){console.debug(`Track ${a} requests to get assigned to output ${s}.`),t(e,Ee)[a]=s+1},t(this,G)[81]=function(s,a){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,a){t(e,ve).run(s,a)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,a){t(e,Ee)[a]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Ce,new Z("universal realtime")),w(this,j,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Me,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Ce).default=n,t(this,j).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Me).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Ce).add([4,1],s=>{w(e,_,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,j).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,r)=>{a[r]=i};if(s.subarray(1).forEach((i,r)=>{let c=r+s[0];([o,o,o,o,h=>{w(this,_,h*129/16383*100)},h=>{},h=>{}][c]||(()=>{}))(i,r)}),s[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],s=>{let a="XG ";s[0]<32?(a+="reverb ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${ft(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(a+="chorus ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ht[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${dt(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${De[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${De[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(a+="variation ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(a+="variation ",s.subarray(1).forEach((o,i)=>{[r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},r=>{console.debug(`${a}to chorus: ${X(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((a,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,c=i-1&3,h=`XG EQ ${r} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${h}${a-64}dB`)},()=>{console.debug(`${h}${a} (raw)`)},()=>{console.debug(`${h}${a/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],s=>{let a=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((r,c)=>{([h=>{e.setEffectTypeRaw(3+a,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+a,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+c]||function(){})(r)})}).add([76,6,0],s=>{let a=s[0];a<64?e.setLetterDisplay(s.subarray(1),"XG letter display",a):w(e,we,Date.now())}).add([76,7,0],s=>{let a=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=$.cc*o,c=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,u)[r+p[0]]=f},()=>{t(e,u)[r+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${c}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{t(e,u)[r+p[128]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[76]]=f},()=>{t(e,u)[r+p[77]]=f},()=>{t(e,u)[r+p[78]]=f},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},()=>{t(e,u)[r+p[73]]=f},()=>{t(e,u)[r+p[75]]=f},()=>{t(e,u)[r+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,u)[r+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((c,h)=>{let f=h+i;switch(f){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${r}${g} control source: ${pt(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${r}${g} scale break point: ${c}`):console.debug(`${r}${g} depth: ${c-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,a)=>{let o=s[0],i="MU1000 System: ";s.subarray(1).forEach((r,c)=>{let h=o+c;h==8?console.debug(`${i}LCD contrast set to ${r}.`):h==18?(w(e,Q,r?126:0),console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):h>=64&&h<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.debug(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.debug(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!r),console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][h-64]()})}).add([73,10,0],(s,a)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let r=e.chRedir(0,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(s[1]<<5,a,!0);t(e,J)&&e.dispatchEvent("channelmin",r),t(e,J)&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let r=e.chRedir(o-16+(t(e,He)<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(o<36){let r=e.chRedir(o-32<<4,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),w(e,He,o-32)),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=`PLG-100SG CH${o+1} `,r=Date.now();if(s[1]==0){let c="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?c+=ut[f]||f.toString().padStart("0"):h+=f*13}),r>=t(e,Ne)&&t(e,C).unshift("SG Lyric: "),t(e,C)[0]+=`${bt(c)}`,w(e,Ne,r+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,j).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,j).add([89,0],(s,a,o)=>{if(e.eprom){let i=s[0],r=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)c[r+7*g+S]+=(h>>6-S&1)<<7;else c[r+7*g+y]=h})}}).add([89,1],(s,a,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,a,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;s.subarray(4).forEach((c,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)r[i+7*f+y]+=(c>>6-y&1)<<7;else r[i+7*f+g]=c})}}).add([89,3],(s,a,o)=>{}),t(this,j).add([39,48],(s,a,o)=>{}).add([43,0,0],(s,a,o)=>{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,()=>{w(this,_,c*129/16383*100)},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][f](c,f)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}).add([43,1,0],(s,a,o)=>{}).add([43,2],(s,a,o)=>{let i=e.chRedir(s[0],a,!0),r=s[1],c=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,u)[c+p[0]]=f},()=>{t(e,u)[c+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+r]||(()=>{}))(f,g+r):g<21||(g<47?([()=>{t(e,W)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,u)[c+p[7]]=f},!1,!1,()=>{t(e,u)[c+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,u)[c+p[128]]=f},()=>{t(e,u)[c+p[93]]=f},()=>{t(e,u)[c+p[91]]=f},()=>{t(e,u)[c+p[94]]=f},()=>{t(e,u)[c+p[76]]=f},()=>{t(e,u)[c+p[77]]=f},()=>{t(e,u)[c+p[74]]=f},()=>{t(e,u)[c+p[71]]=f},()=>{t(e,u)[c+p[73]]=f},()=>{t(e,u)[c+p[75]]=f},()=>{t(e,u)[c+p[72]]=f},()=>{t(e,u)[c+p[78]]=f}][g+r-21]||(()=>{}))(f,g+r):g<95||([()=>{t(e,u)[c+p[65]]=f},()=>{t(e,u)[c+p[5]]=f}][g+r-95]||(()=>{}))(f,g+r))})}).add([43,7,0],(s,a,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,a,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,r){let c=Math.floor(r/16),h=r%16,f=(h*3+c)*7,g=7,y=0;for(f-=h*5,c==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,a,o)=>{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,Q,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,a,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,g=>{w(this,_,g*129/16383*100)},g=>{},g=>{}][f](c,h)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,64,1],s=>{let a=s[0];if(a<16){let o="".padStart(a," ");s.subarray(1).forEach((i,r)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?s.subarray(1).forEach((o,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${o}ms`)},()=>{console.info(`${r}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)},()=>{console.debug(`${r}to delay: ${X(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?s.subarray(1).forEach((o,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],s=>{let a="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let a="GS EFX ",o=function(i,r){let c=yt(t(e,V).subarray(10,12),r,i);c&&console.debug(`${a}${Je(t(e,V).subarray(10,12))} ${c}`)};s.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${X(i)}dB`)},()=>{console.debug(`${a}to chorus: ${X(i)}dB`)},()=>{console.debug(`${a}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][s[0]+r]||function(c,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+r)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var a;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(a=t(e,oe)[s[0]-1])!=null&&a.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let r=s.subarray(2);for(let c=0;c>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let l=function(s,a,o){let i=s[0],r=$.cc*a,c=$.rpn*a,h=`GS CH${a+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,u)[r+p[0]]=f},()=>{t(e,O)[a]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,W)[a]=+!f},!1,()=>{e.setChType(a,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[c+3]=f},!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},!1,!1,()=>{t(e,v)[c+1]=f},()=>{t(e,v)[c+2]=f},()=>{t(e,u)[r+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,a){let o=s[0],i=`GS CH${a+1} `;o<2?s.subarray(1).forEach((r,c)=>{[()=>{t(e,u)[$.cc*a+p[32]]=r},()=>{}][o+c]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((r,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][o+c-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,a)=>{l(s,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(s,a)=>{l(s,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(s,a)=>{l(s,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(s,a)=>{l(s,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(s,a)=>{l(s,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(s,a)=>{l(s,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(s,a)=>{l(s,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(s,a)=>{l(s,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(s,a)=>{l(s,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(s,a)=>{l(s,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(s,a)=>{l(s,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(s,a)=>{l(s,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(s,a)=>{l(s,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(s,a)=>{l(s,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(s,a)=>{l(s,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(s,a)=>{l(s,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(s,a)=>{d(s,e.chRedir(9,a,!0))}).add([66,18,64,65],(s,a)=>{d(s,e.chRedir(0,a,!0))}).add([66,18,64,66],(s,a)=>{d(s,e.chRedir(1,a,!0))}).add([66,18,64,67],(s,a)=>{d(s,e.chRedir(2,a,!0))}).add([66,18,64,68],(s,a)=>{d(s,e.chRedir(3,a,!0))}).add([66,18,64,69],(s,a)=>{d(s,e.chRedir(4,a,!0))}).add([66,18,64,70],(s,a)=>{d(s,e.chRedir(5,a,!0))}).add([66,18,64,71],(s,a)=>{d(s,e.chRedir(6,a,!0))}).add([66,18,64,72],(s,a)=>{d(s,e.chRedir(7,a,!0))}).add([66,18,64,73],(s,a)=>{d(s,e.chRedir(8,a,!0))}).add([66,18,64,74],(s,a)=>{d(s,e.chRedir(10,a,!0))}).add([66,18,64,75],(s,a)=>{d(s,e.chRedir(11,a,!0))}).add([66,18,64,76],(s,a)=>{d(s,e.chRedir(12,a,!0))}).add([66,18,64,77],(s,a)=>{d(s,e.chRedir(13,a,!0))}).add([66,18,64,78],(s,a)=>{d(s,e.chRedir(14,a,!0))}).add([66,18,64,79],(s,a)=>{d(s,e.chRedir(15,a,!0))}),t(this,fe).add([54,65],(s,a)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],r=e.chRedir(o&15,a,!0),c=$.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-1,t(e,u)[c+p[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-101,t(e,u)[c+p[0]]=56):(e.setChType(r,e.CH_DRUMS,x.x5d),t(e,O)[r]=vt[i-229]||0,t(e,u)[c+p[0]]=62))},()=>{t(e,u)[c+p[7]]=i},()=>{i<31&&(t(e,u)[c+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,u)[c+p[93]]=_e(i)},()=>{t(e,u)[c+p[91]]=_e(i)},()=>{t(e,v)[r*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[r*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[r*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=82,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` ${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}r>99&&(i=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,77,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=90,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<13600){let y=g%136;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` ${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,a)=>{e.switchMode("x5d",!0),ee(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,a)=>{e.switchMode("x5d",!0),ee(s,function(o,i,r,c){if(i<192){let h=e.chRedir(Math.floor(i/12),a,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,x.x5d),t(e,u)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,x.x5d),t(e,u)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,u)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,u)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,u)[f+p[91]]=_e(y),t(e,u)[f+p[93]]=_e(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,a,!0)}})}),t(this,ie).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1];s.subarray(2).forEach((c,h)=>{let f=h+r;t(e,ge)[f+(i-1)*16]=c,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,ae)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=c+40},()=>{t(e,v)[i*$.rpn+1]=c+14},()=>{t(e,v)[i*$.rpn]=c},!1,()=>{t(e,u)[$.cc*i+p[91]]=c?127:0},!1,()=>{t(e,u)[$.cc*i+p[7]]=c},()=>{t(e,u)[$.cc*i+p[10]]=Math.ceil(c*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1]+(s[0]<<7);r<10&&(t(e,ae)[i]=1),s.subarray(2).forEach((c,h)=>{let f=h+r;f<14&&(t(e,Y)[(i-1)*$.cmt+f]=c)})}).add([22,18,3],(s,a,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((r,c)=>{let h=c+i;t(e,ge)[h]=r;let f=e.chRedir(1+h>>4,a,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,ae)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=r+40},()=>{t(e,v)[f*$.rpn+1]=r+14},()=>{t(e,v)[f*$.rpn]=r},!1,()=>{t(e,u)[$.cc*f+p[91]]=r?127:0},!1,()=>{t(e,u)[$.cc*f+p[7]]=r},()=>{t(e,u)[$.cc*f+p[10]]=Math.ceil(r*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,a,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((r,c)=>{let h=c+i,f=e.chRedir(Math.floor(h/246+1),a,!0),g=h%246;g<14&&(t(e,Y)[(f-1)*$.cmt+g]=r),g<10&&(t(e,ae)[f]=1)})}).add([22,18,5],(s,a,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=r,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${r.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,r+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME 000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,a,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=r)})}).add([22,18,16],(s,a,o)=>{e.switchMode("mt32");let i=s[1],r=!1,c=function(h,f){t(e,H)[f-12]=h,r=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{w(e,_,h)}][g]||(()=>{}))(h,f)}),r&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let a=s[1],o=" ".repeat(a);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,re,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,a)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,a)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{[r,r,r,r,()=>{w(e,_,c*129/16383*100)},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,0,1],(s,a)=>{}).add([66,18,0,2],(s,a)=>{}).add([66,18,1],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=o*$.cc,r=s[1],c=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=r+f;g<3?[()=>{t(e,u)[i+p[0]]=h||121},()=>{t(e,u)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!h},()=>{e.setChType(o,h,x.ns5r),console.debug(`${c}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,u)[i+p[7]]=h},()=>{t(e,u)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,u)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,u)[i+p[93]]=h},()=>{t(e,u)[i+p[91]]=h},()=>{t(e,u)[i+p[76]]=h},()=>{t(e,u)[i+p[77]]=h},()=>{t(e,u)[i+p[78]]=h},()=>{t(e,u)[i+p[74]]=h},()=>{t(e,u)[i+p[71]]=h},()=>{t(e,u)[i+p[73]]=h},()=>{t(e,u)[i+p[75]]=h},()=>{t(e,u)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,u)[i+p[5]]=h},()=>{t(e,u)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,a)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,te,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let r=s.subarray(1),c=4;r.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";ee(s,(i,r)=>{r<8?(i>31&&(o+=String.fromCharCode(i)),r==7&&(e.aiEfxName=o)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),ee(s,function(o,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),c=r*$.cc;switch(i%92){case 0:{t(e,u)[c+p[0]]=o||121;break}case 1:{t(e,u)[c+p[32]]=o;break}case 2:{t(e,O)[r]=o,o>0&&(t(e,P)[r]=1);break}case 3:{let h=e.chRedir(o,a,!0);t(e,H)[r]=h,r!=h&&(console.info(`NS5R CH${r+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[r*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,u)[c+p[7]]=o;break}case 11:{t(e,u)[c+p[11]]=o;break}case 14:{t(e,u)[c+p[10]]=o||128;break}case 19:{t(e,u)[c+p[93]]=o;break}case 20:{t(e,u)[c+p[91]]=o;break}case 84:{t(e,u)[c+p[65]]=o;break}case 85:{t(e,u)[c+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=80,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{c=f&127;break}case y==13:{h+=` diff --git a/src/disp/disp_mu.mjs b/src/disp/disp_mu.mjs index dc83a0eb..593b44cb 100644 --- a/src/disp/disp_mu.mjs +++ b/src/disp/disp_mu.mjs @@ -336,7 +336,10 @@ let MuDisplay = class extends RootDisplay { let sequence = this.demoInfo.class || "boot"; let stepTime = this.demoInfo.fps || 2; let stepSize = this.demoInfo.size || 4; - let stepId = `${sequence}_${Math.floor(time * stepTime % stepSize)}`; + let stepOffset = this.demoInfo.offset || 0; + let stepFrame = Math.floor((time * stepTime + stepOffset) % stepSize); + let stepId = `${sequence}_${stepFrame}`; + //console.debug(stepId); useBm = this.aniBm?.getBm(stepId) || this.sysBm?.getBm(stepId) || this.sysBm?.getBm("no_abm"); if (!useBm) { useBm = this.#bmdb.slice(); diff --git a/src/fakeMu/index.js b/src/fakeMu/index.js index 94179225..c3fbfac9 100644 --- a/src/fakeMu/index.js +++ b/src/fakeMu/index.js @@ -276,15 +276,15 @@ self.performance = currentPerformance; // Hardcoded animation reference { - let mu80Ani = {class: "mubasic", fps: 10, size: 16}; - let mu1kAni = {class: "munativ", fps: 8, size: 32}; + let mu80Ani = {class: "mubasic", fps: 10, size: 16, offset: 0}; + let mu1kAni = {class: "munativ", fps: 8, size: 32, offset: 0}; demoInfo["ninety_hipty"] = mu80Ani; demoInfo["OutOfTheMuse"] = mu80Ani; demoInfo["MU100DEMO"] = mu80Ani; demoInfo["TheMusithm"] = mu80Ani; demoInfo["MU128DEMO"] = mu80Ani; demoInfo["PhoenixA"] = mu1kAni; - demoInfo["PhoenixB"] = mu1kAni; + demoInfo["PhoenixB"] = {class: "munativ", fps: 8, size: 32, offset: 6}; demoInfo["R-love"] = mu1kAni; }; @@ -293,7 +293,8 @@ self.performance = currentPerformance; // PhoenixA let perf = new TimedEvents(); perf.push(new PointEvent(0, generateString(` YAMAHA TONE GENERATOR `))); - perf.push(new PointEvent(0, generateSwitch(0, 0, 0))); + perf.push(new PointEvent(0.5, {type: 15, data: [67, 16, 73, 0, 0, 18, 1]})); + perf.push(new PointEvent(0.8, generateSwitch(0, 0, 0))); perf.push(new PointEvent(2.52, generateString(` YAMAHA TONE GENERATOR `))); perf.push(new PointEvent(5.04, generateString(` YAMAHA TONE GENERATOR`))); perf.push(new PointEvent(5.21, generateString(` YAMAHA TONE GENERATO`))); @@ -359,7 +360,9 @@ self.performance = currentPerformance; // PhoenixB let perf = new TimedEvents(); perf.push(new PointEvent(0, generateString(` BrtFrHrn 066 061`))); - perf.push(new PointEvent(0, generateSwitch(11, 0, 0))); + perf.push(new PointEvent(0, generateSwitch(2, 0, 0))); + perf.push(new PointEvent(0.5, {type: 15, data: [67, 16, 73, 0, 0, 18, 1]})); + perf.push(new PointEvent(1, generateSwitch(11, 0, 0))); perf.push(new PointEvent(2.02, {type: 15, track: 0, data: [67, 16, 76, 6, 0, 64]})); perf.push(new PointEvent(38.19, generateSwitch(9))); perf.push(new PointEvent(40.05, generateSwitch(16, 0, 1))); @@ -486,6 +489,7 @@ self.performance = currentPerformance; { // MU100 demo, It's an AmaZing MU World!! let perf = new TimedEvents(); + perf.push(new PointEvent(0.5, {type: 15, data: [67, 16, 73, 0, 0, 18, 1]})); perf.push(new PointEvent(3.28, generateSwitch(1))); perf.push(new PointEvent(6.22, generateSwitch(5))); perf.push(new PointEvent(7.93, generateSwitch(6))); @@ -543,6 +547,7 @@ self.performance = currentPerformance; // Disable native RS perf.push(new PointEvent(0, {type: 15, track: 0, data: [67, 16, 73, 0, 0, 68, 0]})); perf.push(new PointEvent(0, generateSwitch(0, 0, 0))); + perf.push(new PointEvent(0.5, {type: 15, data: [67, 16, 73, 0, 0, 18, 1]})); perf.push(new PointEvent(1.6, generateSwitch(0, 0, 3))); perf.push(new PointEvent(40.02, generateSwitch(48, 3, 3))); perf.push(new PointEvent(41.68, generateSwitch(49))); diff --git a/src/state/index.mjs b/src/state/index.mjs index bacd01a6..f2902b93 100644 --- a/src/state/index.mjs +++ b/src/state/index.mjs @@ -35,8 +35,7 @@ import { const modeIdx = [ "?", "gm", "gs", "xg", "g2", - "mt32", "ns5r", - "ag10", "x5d", "05rw", + "mt32", "ns5r", "x5d", "05rw", "k11", "sg", "krs", "s90es", "motif" ]; @@ -2016,7 +2015,7 @@ let OctaviaDevice = class extends CustomEventSource { }, () => { if (e < 8) { upThis.dispatchEvent("channelmin", (e << 4)); - console.info(`Octavia System: Minimum CH${(e << 4) + 1}`); + console.debug(`Octavia System: Minimum CH${(e << 4) + 1}`); } else { upThis.dispatchEvent("channelreset"); console.info(`Octavia System: Clear channel ranges`); @@ -2024,7 +2023,7 @@ let OctaviaDevice = class extends CustomEventSource { }, () => { if (e < 8) { upThis.dispatchEvent("channelmax", (e << 4) + 15); - console.info(`Octavia System: Maximum CH${(e << 4) + 16}`); + console.debug(`Octavia System: Maximum CH${(e << 4) + 16}`); } else { upThis.dispatchEvent("channelreset"); console.info(`Octavia System: Clear channel ranges`); From 880d5f0e836460aa9f327e221a95eab2db797e7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Wed, 28 Jun 2023 04:52:45 +0000 Subject: [PATCH 30/31] Roland SD reset. --- dist/basic.mjs | 2 +- dist/cambiare.mjs | 16 ++++++++-------- dist/state.mjs | 12 ++++++------ dist/state_skim.mjs | 8 ++++---- dist/xp_basic.mjs | 20 ++++++++++---------- dist/xp_state.mjs | 20 ++++++++++---------- src/state/index.mjs | 6 +++++- test/fakeMu.htm | 2 +- test/fakeNs5r.htm | 2 +- test/fakePsr.htm | 2 +- test/fakeQy.htm | 2 +- test/fakeSc.htm | 2 +- 12 files changed, 49 insertions(+), 45 deletions(-) diff --git a/dist/basic.mjs b/dist/basic.mjs index 7ff11e1a..aaf25f76 100644 --- a/dist/basic.mjs +++ b/dist/basic.mjs @@ -138,4 +138,4 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let i=e.split(",");W[i[0]]=i[1]});var U=function(e,i,o){let r=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${r}`),r.pop(),i.backOne(),i.backOne(),new Uint8Array(r)}}}return new Uint8Array(r)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var w={length:S.length};S.forEach((e,i)=>{w[e]=i});var A={length:v.length};v.forEach((e,i)=>{A[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var M=q(N(),1);var L=class{#e=!1;constructor(e,i,o,r){this.#e=e,this.start=i,this.end=o,this.data=r}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},C=class extends L{constructor(e,i,o){super(!0,e,i,o)}},B=class extends L{constructor(e,i){super(!1,e,e,i)}},T=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let r=0;re);r++){if(this[r].endt.#e&&(o.push(a),t.#e=a.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],r=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let l=0;l=e&&(r=l):r=r<0?l:r;for(;a;)this[r]?.end=e&&o.push(this[r]):a=!1,r++;return o}};var ee=0xffffffffffff,H=function(e){let i=new T,o=this,r=e.timeDivision,t=120,a=new T,l=0,f=0;a.push(new C(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,a[a.length-1]&&a.push(new C(l,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;a.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return a.forEach(function(s){let n=s.start,h=n/b/r*60+p;b=s.data[0],p=h-n/b/r*60,s.data[1]=p}),console.debug("All tempo changes: ",a),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=a.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/r*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};M.default.customInterpreter=U;var rt=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#r=.5;#l=120;#t=4;#o=4;#a=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#r=.5,this.#l=120,this.#t=4,this.#o=4,this.#a=0,this.#c=0}async loadFile(e){this.#e=H(M.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#r}get noteOverall(){return this.noteProgress-this.#a}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,r=new Set,t=this,a=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?r.add(c.part*128+c.data[0]):r.has(c.part*128+c.data[0])&&o++),u.data.type==8&&r.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{a.push(g);break}}g?.reply&&delete g.reply}),a?.length>0&&this.dispatchEvent("meta",a);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=w.length*c;if(y>=0){let E=4*.25**(p[R+w[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+w[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let r=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(r.#i[a.meta]||console.debug).call(r,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){r.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){r.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){r.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){r.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){r.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){r.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,a){r.#s?.length<1&&(r.#s=a)},this.#i[81]=function(t,a){let l=r.noteProgress,f=r.#r||.5;r.#l=6e7/a,r.#r=a/1e6,r.#a+=l*(f/r.#r)-l},this.#i[88]=function(t,a){let l=r.noteProgress,f=r.noteOverall,$=r.noteBar,p=r.noteBeat,b=r.#t,s=r.#o;r.#t=a[0],r.#o=1<=b&&(b{let i=e.split(",");W[i[0]]=i[1]});var U=function(e,i,o){let r=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${r}`),r.pop(),i.backOne(),i.backOne(),new Uint8Array(r)}}}return new Uint8Array(r)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var w={length:S.length};S.forEach((e,i)=>{w[e]=i});var A={length:v.length};v.forEach((e,i)=>{A[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var T=q(N(),1);var L=class{#e=!1;constructor(e,i,o,r){this.#e=e,this.start=i,this.end=o,this.data=r}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},C=class extends L{constructor(e,i,o){super(!0,e,i,o)}},B=class extends L{constructor(e,i){super(!1,e,e,i)}},M=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let r=0;re);r++){if(this[r].endt.#e&&(o.push(a),t.#e=a.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],r=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let l=0;l=e&&(r=l):r=r<0?l:r;for(;a;)this[r]?.end=e&&o.push(this[r]):a=!1,r++;return o}};var ee=0xffffffffffff,H=function(e){let i=new M,o=this,r=e.timeDivision,t=120,a=new M,l=0,f=0;a.push(new C(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,a[a.length-1]&&a.push(new C(l,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;a.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return a.forEach(function(s){let n=s.start,h=n/b/r*60+p;b=s.data[0],p=h-n/b/r*60,s.data[1]=p}),console.debug("All tempo changes: ",a),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=a.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/r*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};T.default.customInterpreter=U;var rt=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#r=.5;#l=120;#t=4;#o=4;#a=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#r=.5,this.#l=120,this.#t=4,this.#o=4,this.#a=0,this.#c=0}async loadFile(e){this.#e=H(T.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#r}get noteOverall(){return this.noteProgress-this.#a}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,r=new Set,t=this,a=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?r.add(c.part*128+c.data[0]):r.has(c.part*128+c.data[0])&&o++),u.data.type==8&&r.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{a.push(g);break}}g?.reply&&delete g.reply}),a?.length>0&&this.dispatchEvent("meta",a);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=w.length*c;if(y>=0){let E=4*.25**(p[R+w[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+w[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let r=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(r.#i[a.meta]||console.debug).call(r,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){r.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){r.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){r.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){r.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){r.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){r.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,a){r.#s?.length<1&&(r.#s=a)},this.#i[81]=function(t,a){let l=r.noteProgress,f=r.#r||.5;r.#l=6e7/a,r.#r=a/1e6,r.#a+=l*(f/r.#r)-l},this.#i[88]=function(t,a){let l=r.noteProgress,f=r.noteOverall,$=r.noteBar,p=r.noteBeat,b=r.#t,s=r.#o;r.#t=a[0],r.#o=1<=b&&(b()=>(n||e((n={exports:{}}).exports,n),n.exports);var De=(e,n,o,l)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Re.call(e,t)&&t!==o&&Z(e,t,{get:()=>n[t],enumerable:!(l=Ce(n,t))||l.enumerable});return e};var Pe=(e,n,o)=>(o=e!=null?xe(Te(e)):{},De(n||!e||!e.__esModule?Z(o,"default",{value:e,enumerable:!0}):o,e));var we=Oe((bt,q)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(l,t){if(l instanceof Uint8Array)return o.Uint8(l);if(typeof l=="string")return o.Base64(l);if(l instanceof HTMLElement&&l.type==="file")return o.addListener(l,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(l,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(l===void 0||!(l instanceof HTMLElement)||l.tagName!=="INPUT"||l.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},l.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let s=new FileReader;s.readAsArrayBuffer(a.target.files[0]),s.onload=function(i){t(o.Uint8(new Uint8Array(i.target.result)))}})},Base64:function(l){let t=function(i){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(i=i.replace(/^.*?base64,/,""),i=String(i).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(i))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");i+="==".slice(2-(3&i.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(l=String(l));var a=t.length;let s=new Uint8Array(new ArrayBuffer(a));for(let i=0;i{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return g||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let g=1;g<=p.length;g++)c+=p[p.length-g]*Math.pow(128,g);c+=f}return c}};if(t.data=new DataView(s.buffer,s.byteOffset,s.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var s=t.readInt(1),i=t.readInt(1);128<=s?(a.timeDivision=[],a.timeDivision[0]=s-128,a.timeDivision[1]=i):a.timeDivision=256*s+i;for(let c=1;c<=a.tracks;c++){a.track[c-1]={event:[]};var r,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,g,y;for(;!p&&(f++,a.track[c-1].event[f-1]={},a.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(g=t.readInt(1))!==-1);)if(128<=g?y=g:(g=y,t.movePointer(-1)),g===255){a.track[c-1].event[f-1].type=255,a.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[c-1].event[f-1].data=t.readInt(d);break;case 84:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1),a.track[c-1].event[f-1].data[2]=t.readInt(1),a.track[c-1].event[f-1].data[3]=t.readInt(1),a.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1),a.track[c-1].event[f-1].data[2]=t.readInt(1),a.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[c-1].event[f-1].data!==!1||(t.readInt(d),a.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((g=g.toString(16).split(""))[1]||g.unshift("0"),a.track[c-1].event[f-1].type=parseInt(g[0],16),a.track[c-1].event[f-1].channel=parseInt(g[1],16),a.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[c-1].event[f-1].data!==!1||(r=t.readIntVLV(),a.track[c-1].event[f-1].data=t.readInt(r),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof q<"u")q.exports=o;else{let l=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;l.MidiParser=o}})()});var J=function(e,n){let o=Math.min(e.length,n.length),l=e.slice(0,o),t=n.slice(0,o),a=0,s=0;for(;s0){let l=this.pool.length,t=1<=1&&s>=0;){if(s<=0)throw new Error("TTL reached.");if(a==l)a-=t;else{let r=J(n,this.pool[a]);switch(r){case 0:{s=0;break}case 1:{a+t<=l&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${r}.`)}}t=t>>1,s--}let i=!0;if(a>=this.pool.length)i=!1;else{let r=this;this.pool[a].forEach(function(h,d,c){i&&h!=n[d]&&(i=!1)}),!i&&J(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let l=this.point(n);l>-1?n.subarray?this.pool[l].data(n.subarray(this.pool[l].length),...o):this.pool[l].data(n.slice(this.pool[l].length),...o):this.default(n,...o)}};var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),l=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(l,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var Ie=["MSB","PRG","LSB"],B=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},G=class{#t;strictMode=!1;get(e=0,n=0,o=0,l){let t=[e,n,o],a,s=Array.from(arguments);switch(l){case"xg":{switch(e){case 0:{o==126?s[2]=125:o==127&&(s[2]=0);break}case 32:{s[2]+=4;break}case 33:case 35:case 36:{s[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:s[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{o==126&&(s[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(s[2]=0);break}}break}case"gs":{e==0&&o<5?s[2]=0:e>125&&o<5&&o!=2&&(s[2]=e,s[0]=0);break}case"sg":{e==8&&o==0&&(s[2]=5);break}case"s90es":{o<8?s[2]+=17:o<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}case"motif":{o<8?s[2]+=28:o<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}}let i=" ",r="M",h=0,d=0;switch(s[0]){case 0:{s[2]==127?r="MT-a":s[2]==126?r="MT-b":s[2]==7?r="GM-k":s[2]==5?r="SG-a":s[2]==4?r="SP-l":s[2]==0||l=="gs"&&s[2]<5?r="GM-a":(r="y",h=3);break}case 8:{l=="sg"?r="GM-s":r="r:";break}case 48:{r=`yM${(s[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{r="GM-b";break}case 61:case 120:{r="rDrm";break}case 62:{r="kDrm";break}case 63:{if(s[2]<17){let g=s[2];r=g<10?"kP:":"kC:",r+=g%10}else s[2]<34?r=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][s[2]-17]:r="Ds";break}case 64:{r="ySFX";break}case 67:{r="DX:S";break}case 80:case 81:case 82:case 83:{r=`Prg${"UABC"[s[0]-80]}`;break}case 88:case 89:case 90:case 91:{r=`Cmb${"UABC"[s[0]-88]}`;break}case 95:{r=`${["DR","PC"][s[2]]}-d`;break}case 96:{r=s[2]==106?"AP-a":"PF",s[2]>63&&(d=63),h=3;break}case 97:{r="VL:",h=3,d=112;break}case 98:{r="SG-a";break}case 99:{r="DX",s[2]>63&&(d=63),h=3;break}case 100:{r="AN",s[2]>63&&(d=63),h=3;break}case 121:{r=`GM-${s[2]?"":"a"}`,h=3;break}case 122:{r="lDrm";break}case 126:{r="yDrS";break}case 127:{s[2]==127?r="rDrm":r="yDrm";break}default:s[0]<48?r="r:":r="M"}r.length<4&&(r+=`${[e,o,s[0],s[2]][h]-d}`.padStart(4-r.length,"0")),l=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let c=[s[0],s[1],s[2]];for(;!(a?.length>=0);)a=this.#t[s[1]||0][(s[0]<<7)+s[2]],a||(this.strictMode?(a="",i="?"):this.#t[s[1]||0][s[0]<<7]?s[0]==0?(s[2]=0,i="^"):s[2]<1?(s[0]=0,i="*"):(s[2]--,i="^"):e==48?(s[0]=0,s[2]=0,i="!"):e==62?(s[1]--,i=" ",s[1]<1&&!a?.length&&(s[0]=0,i="!")):e<63?s[0]==0?(s[2]=0,i="^"):s[2]<1?(s[0]=0,i="*"):s[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(s[1]==32?s[1]==0:s[1]%=7,a=this.#t[s[1]||0][(s[0]<<7)+s[2]],a?i=" ":(a="",i="*")):s[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):s[0]==0?(s[2]=0,i="^"):s[2]>0?s[2]--:s[1]>0?(s[1]=0,i="!"):(s[0]=0,i="?"));let f=[s[0],s[1],s[2]];(l=="gs"||l=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(s[0]){case 0:{s[2]==0?p="GM":s[2]==5||s[2]==7?p="KG":s[2]<126?p="XG":s[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{s[2]<17?p="KR":s[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][s[2]];break}case 96:{p=s[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=s[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=s[2]==127?"MT":n==0?"GM":"XG";break}default:s[0]<48&&(s[0]==16&&l=="xg"?p="XG":p="GS")}return{name:a||`${B(e||0)} ${B(n||0)} ${B(o||0)}`,iid:c,eid:f,sid:t,ending:i,sect:r,standard:p}}async load(e,n,o){let l=this,t=[],a=0,s=0;e.split(` -`).forEach(function(i,r){let h=i.split(" "),d=[];r==0?h.forEach(function(c,f){t[Ie.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(l.#t[d[t[1]]]=l.#t[d[t[1]]]||[],(!l.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(l.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],a++),s++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${o||"(internal)"}": ${s} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],l=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let s=l[0];s<=l[1];s++){let i=a+s;for(let r=n[0];r<=n[1];r++)delete this.#t[r][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,l){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var ee=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ue=function(e,n){let o=!0;return n.forEach((l,t)=>{o=o&&e[t]==l}),o},te=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},R=new TextDecoder,A=new ee;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",l=[0,0,0,0],t=32,a=0,s=0,i=!0,r=[],h=0;for(;i;){let d=n.subarray(a);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(a+=80,s=1):a++},()=>{if(Ue(d.subarray(0,4),l))r.forEach((c,f,p)=>{let g=te(n.subarray(c.start+4,c.start+8));c.length=g}),s=2;else{let c=R.decode(d.subarray(0,4)),f=te(d.subarray(4,8));r.push({type:c,start:f}),a+=8}},()=>{let c=r[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let g=t;for(;g()=>(n||e((n={exports:{}}).exports,n),n.exports);var De=(e,n,o,l)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Re.call(e,t)&&t!==o&&Z(e,t,{get:()=>n[t],enumerable:!(l=Ce(n,t))||l.enumerable});return e};var Ie=(e,n,o)=>(o=e!=null?xe(Te(e)):{},De(n||!e||!e.__esModule?Z(o,"default",{value:e,enumerable:!0}):o,e));var we=Oe((bt,q)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(l,t){if(l instanceof Uint8Array)return o.Uint8(l);if(typeof l=="string")return o.Base64(l);if(l instanceof HTMLElement&&l.type==="file")return o.addListener(l,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(l,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(l===void 0||!(l instanceof HTMLElement)||l.tagName!=="INPUT"||l.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},l.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let s=new FileReader;s.readAsArrayBuffer(a.target.files[0]),s.onload=function(i){t(o.Uint8(new Uint8Array(i.target.result)))}})},Base64:function(l){let t=function(i){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(i=i.replace(/^.*?base64,/,""),i=String(i).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(i))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");i+="==".slice(2-(3&i.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(l=String(l));var a=t.length;let s=new Uint8Array(new ArrayBuffer(a));for(let i=0;i{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return g||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let g=1;g<=p.length;g++)c+=p[p.length-g]*Math.pow(128,g);c+=f}return c}};if(t.data=new DataView(s.buffer,s.byteOffset,s.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var s=t.readInt(1),i=t.readInt(1);128<=s?(a.timeDivision=[],a.timeDivision[0]=s-128,a.timeDivision[1]=i):a.timeDivision=256*s+i;for(let c=1;c<=a.tracks;c++){a.track[c-1]={event:[]};var r,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,g,y;for(;!p&&(f++,a.track[c-1].event[f-1]={},a.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(g=t.readInt(1))!==-1);)if(128<=g?y=g:(g=y,t.movePointer(-1)),g===255){a.track[c-1].event[f-1].type=255,a.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[c-1].event[f-1].data=t.readInt(d);break;case 84:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1),a.track[c-1].event[f-1].data[2]=t.readInt(1),a.track[c-1].event[f-1].data[3]=t.readInt(1),a.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1),a.track[c-1].event[f-1].data[2]=t.readInt(1),a.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[c-1].event[f-1].data!==!1||(t.readInt(d),a.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((g=g.toString(16).split(""))[1]||g.unshift("0"),a.track[c-1].event[f-1].type=parseInt(g[0],16),a.track[c-1].event[f-1].channel=parseInt(g[1],16),a.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[c-1].event[f-1].data!==!1||(r=t.readIntVLV(),a.track[c-1].event[f-1].data=t.readInt(r),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof q<"u")q.exports=o;else{let l=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;l.MidiParser=o}})()});var J=function(e,n){let o=Math.min(e.length,n.length),l=e.slice(0,o),t=n.slice(0,o),a=0,s=0;for(;s0){let l=this.pool.length,t=1<=1&&s>=0;){if(s<=0)throw new Error("TTL reached.");if(a==l)a-=t;else{let r=J(n,this.pool[a]);switch(r){case 0:{s=0;break}case 1:{a+t<=l&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${r}.`)}}t=t>>1,s--}let i=!0;if(a>=this.pool.length)i=!1;else{let r=this;this.pool[a].forEach(function(h,d,c){i&&h!=n[d]&&(i=!1)}),!i&&J(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let l=this.point(n);l>-1?n.subarray?this.pool[l].data(n.subarray(this.pool[l].length),...o):this.pool[l].data(n.slice(this.pool[l].length),...o):this.default(n,...o)}};var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),l=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(l,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var Pe=["MSB","PRG","LSB"],B=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},G=class{#t;strictMode=!1;get(e=0,n=0,o=0,l){let t=[e,n,o],a,s=Array.from(arguments);switch(l){case"xg":{switch(e){case 0:{o==126?s[2]=125:o==127&&(s[2]=0);break}case 32:{s[2]+=4;break}case 33:case 35:case 36:{s[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:s[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{o==126&&(s[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(s[2]=0);break}}break}case"gs":{e==0&&o<5?s[2]=0:e>125&&o<5&&o!=2&&(s[2]=e,s[0]=0);break}case"sg":{e==8&&o==0&&(s[2]=5);break}case"s90es":{o<8?s[2]+=17:o<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}case"motif":{o<8?s[2]+=28:o<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}}let i=" ",r="M",h=0,d=0;switch(s[0]){case 0:{s[2]==127?r="MT-a":s[2]==126?r="MT-b":s[2]==7?r="GM-k":s[2]==5?r="SG-a":s[2]==4?r="SP-l":s[2]==0||l=="gs"&&s[2]<5?r="GM-a":(r="y",h=3);break}case 8:{l=="sg"?r="GM-s":r="r:";break}case 48:{r=`yM${(s[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{r="GM-b";break}case 61:case 120:{r="rDrm";break}case 62:{r="kDrm";break}case 63:{if(s[2]<17){let g=s[2];r=g<10?"kP:":"kC:",r+=g%10}else s[2]<34?r=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][s[2]-17]:r="Ds";break}case 64:{r="ySFX";break}case 67:{r="DX:S";break}case 80:case 81:case 82:case 83:{r=`Prg${"UABC"[s[0]-80]}`;break}case 88:case 89:case 90:case 91:{r=`Cmb${"UABC"[s[0]-88]}`;break}case 95:{r=`${["DR","PC"][s[2]]}-d`;break}case 96:{r=s[2]==106?"AP-a":"PF",s[2]>63&&(d=63),h=3;break}case 97:{r="VL:",h=3,d=112;break}case 98:{r="SG-a";break}case 99:{r="DX",s[2]>63&&(d=63),h=3;break}case 100:{r="AN",s[2]>63&&(d=63),h=3;break}case 121:{r=`GM-${s[2]?"":"a"}`,h=3;break}case 122:{r="lDrm";break}case 126:{r="yDrS";break}case 127:{s[2]==127?r="rDrm":r="yDrm";break}default:s[0]<48?r="r:":r="M"}r.length<4&&(r+=`${[e,o,s[0],s[2]][h]-d}`.padStart(4-r.length,"0")),l=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let c=[s[0],s[1],s[2]];for(;!(a?.length>=0);)a=this.#t[s[1]||0][(s[0]<<7)+s[2]],a||(this.strictMode?(a="",i="?"):this.#t[s[1]||0][s[0]<<7]?s[0]==0?(s[2]=0,i="^"):s[2]<1?(s[0]=0,i="*"):(s[2]--,i="^"):e==48?(s[0]=0,s[2]=0,i="!"):e==62?(s[1]--,i=" ",s[1]<1&&!a?.length&&(s[0]=0,i="!")):e<63?s[0]==0?(s[2]=0,i="^"):s[2]<1?(s[0]=0,i="*"):s[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(s[1]==32?s[1]==0:s[1]%=7,a=this.#t[s[1]||0][(s[0]<<7)+s[2]],a?i=" ":(a="",i="*")):s[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):s[0]==0?(s[2]=0,i="^"):s[2]>0?s[2]--:s[1]>0?(s[1]=0,i="!"):(s[0]=0,i="?"));let f=[s[0],s[1],s[2]];(l=="gs"||l=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(s[0]){case 0:{s[2]==0?p="GM":s[2]==5||s[2]==7?p="KG":s[2]<126?p="XG":s[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{s[2]<17?p="KR":s[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][s[2]];break}case 96:{p=s[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=s[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=s[2]==127?"MT":n==0?"GM":"XG";break}default:s[0]<48&&(s[0]==16&&l=="xg"?p="XG":p="GS")}return{name:a||`${B(e||0)} ${B(n||0)} ${B(o||0)}`,iid:c,eid:f,sid:t,ending:i,sect:r,standard:p}}async load(e,n,o){let l=this,t=[],a=0,s=0;e.split(` +`).forEach(function(i,r){let h=i.split(" "),d=[];r==0?h.forEach(function(c,f){t[Pe.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(l.#t[d[t[1]]]=l.#t[d[t[1]]]||[],(!l.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(l.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],a++),s++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${o||"(internal)"}": ${s} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],l=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let s=l[0];s<=l[1];s++){let i=a+s;for(let r=n[0];r<=n[1];r++)delete this.#t[r][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,l){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var ee=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ue=function(e,n){let o=!0;return n.forEach((l,t)=>{o=o&&e[t]==l}),o},te=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},R=new TextDecoder,A=new ee;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",l=[0,0,0,0],t=32,a=0,s=0,i=!0,r=[],h=0;for(;i;){let d=n.subarray(a);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(a+=80,s=1):a++},()=>{if(Ue(d.subarray(0,4),l))r.forEach((c,f,p)=>{let g=te(n.subarray(c.start+4,c.start+8));c.length=g}),s=2;else{let c=R.decode(d.subarray(0,4)),f=te(d.subarray(4,8));r.push({type:c,start:f}),a+=8}},()=>{let c=r[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let g=t;for(;g=r.length&&(s=3,i=!1)}][s]||(()=>{i=!1}))()}return o});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),D=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ae=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],M=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ae=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],re=function(e){let n=.1,o=-.3;return e>66?(n=5,o=315):e>56?(n=1,o=47):e>46&&(n=.5,o=18.5),n*e-o},se=function(e){return e>105?Ae[e-106]:e>100?e*1.1-100:e/10},ie=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),_={};`hi*, @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");_[n[0]]=n[1]});var ne=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;n.indexOf(l)>-1;)n=n.replace(l,l[0])});for(let l in _)n=n.replaceAll(l,_[l]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},oe=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var F=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],ce=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Le={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},V=function(e){return Le[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},he=function(e,n,o){let l=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[l]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},X=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},de=function(e,n,o){let l=[],t=o==!1?n.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${l}`),l.pop(),n.backOne(),n.backOne(),new Uint8Array(l)}}}return new Uint8Array(l)},fe=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,l=0;for(let t=0;t>a&1)<<7,i=e[t];i+=s,t%8!=0?(n(i,o,e),o++):l=e[t]}},P=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"],ue=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],C=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],He=[0,3,81,84,88],pe={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},z={0:0,1:1,2:3,5:4},be=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],L=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],I=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Be=[12,13,16,17,18,19],Ge=[33,99,100,32,102,8,9,10],$e=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:I.length};I.forEach((e,n)=>{u[e]=n});var K={length:L.length};L.forEach((e,n)=>{K[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},_e=function(e){let n=[],o=0;return e?.forEach(function(l,t){l==247?n.push(e.subarray(o,t)):l==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ye=function(e,n="",o="",l=2){return e?`${n}${e.toString().padStart(l,"0")}${o}`:""},b={ch:128,cc:I.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:L.length,dnc:128,efx:7},me=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#d=0;#b=new Array(11);get#h(){return this.#b[this.#o]}set#h(e){this.#b[this.#o]=e}#n=new Uint8Array(b.ch);#c=new Uint8Array(b.ch);#a=new Uint8Array(b.ch);#e=new Uint8Array(b.ch*b.cc);#g=new Uint8Array(b.ace);#s=new Uint8Array(b.ch);#f=new Uint8Array(b.ch*b.nn);#v=new Uint8Array(b.ch);#u=new Uint16Array(b.pl);#$=new Uint8Array(b.pl);#I=new Int16Array(b.ch);#C=new Uint8Array(b.ch);#B=0;#r=new Uint8Array(b.ch*b.rpn);#K=new Int8Array(b.ch*ge.length);#Y=new Uint8Array(b.drm*b.dpn*b.dnc);#M=new Uint8Array(b.ch);#U=new Uint8Array(128);#S=new Uint8Array(b.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(b.cmt*64);#w=new Uint8Array(b.efx*3);#L=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#T="";#N=0;#j=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#i=[];#D=new Uint8Array(b.ch);#H=new Uint8Array(b.tr);baseBank=new G("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new G("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(o==1)return e;let l=0,t=!0;for(;t;)this.#D[e+l]==0?(this.#D[e+l]=n,console.debug(`Assign track ${n} to channel ${e+l+1}.`),t=!1):this.#D[e+l]==n?t=!1:(l+=16,l>=128&&(l=0,t=!1));return e+l}else return e}#y=[];#G;#p={nOff:(e,n)=>{let o=e*128+n,l=this.#u.lastIndexOf(o);l>-1&&(this.#e[b.cc*e+u[64]]>63?(this.#$[l]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_HELD})):this.#e[b.cc*e+u[66]]>63&&this.#$[l]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[l]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#u[l]=0,this.#f[o]=0,this.#$[l]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let l=e*128+n,t=0;for(this.#v[e]&&this.#p.ano(e);this.#$[t]>0&&this.#u[t]!=l;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,o)=>{let l;switch(n){case this.NOTE_ATTACK:{l=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{l=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{l=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(l){this.#$[o]=l;let t=this.#u[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#f[t],state:l})}})},soOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#u.forEach((n,o,l)=>{let t=n>>7,a=n&127;n==0&&this.#f[0]==0||t==e&&this.#p.nOff(t,a)})}};#J={8:function(e){let n=e.channel,o=e.data[0];this.#p.nOff(n,o)},9:function(e){let n=e.channel;this.#n[n]=1;let o=e.data[0],l=e.data[1];l>0?this.#p.nOn(n,o,l):this.#p.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#u.indexOf(o)>-1&&(this.#f[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let o=n*b.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#p.ano(n),this.#I[n]=0;let l=n*b.cc;this.#e[l+u[1]]=0,this.#e[l+u[5]]=0,this.#e[l+u[64]]=0,this.#e[l+u[65]]=0,this.#e[l+u[66]]=0,this.#e[l+u[67]]=0,this.#e[l+u[11]]=127,this.#e[l+u[101]]=127,this.#e[l+u[100]]=127,this.#e[l+u[99]]=127,this.#e[l+u[98]]=127;return}case 123:{this.#p.ano(n);return}case 124:{this.#p.ano(n);return}case 125:{this.#p.ano(n);return}case 126:{this.#v[n]=1,this.#p.ano(n);return}case 127:{this.#v[n]=0,this.#p.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Be.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==m.gs?e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==m.gm?e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==m.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let l=this.#e[o+u[99]],t=this.#e[o+u[98]];if(l==1){let a=Ge.indexOf(t);if(a>-1)this.#e[o+u[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let s=ge.indexOf(t);s>-1?this.#K[n*10+s]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(L.indexOf(l)<0){let s=`NRPN 0x${l.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;l==127?console.warn(`${s}is not necessary. Consider removing it.`):console.warn(`${s}is not supported.`)}else{let s=this.#a[n]-2;s<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${D[this.#a[n]]}.`):this.#Y[(s*b.dpn+K[l])*b.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${D[this.#a[n]]}) drum NRPN ${l} commit`)}}else{let l=z[this.#e[o+u[100]]];this.#e[o+u[101]]==0&&l!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],be[l][0]),be[l][1]),this.#r[n*b.rpn+l]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&z[this.#e[o+100]]!=null&&(this.#r[n*b.rpn+z[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#p.hoOf(n);break}case 66:{e.data[1]>>6?this.#p.soOn(n):this.#p.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#s[n]=e.data,this.#M[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#u.forEach(function(l){let t=l>>7;o==t&&(n.#f[l]=e.data,n.dispatchEvent("note",{part:o,note:l&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#I[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){_e(e.data).forEach(n=>{let o=n[0],l=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(l,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(o,l,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=He.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#V.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#R.run(n,o,e),console.warn("Unknown device SysEx!");else{let l=n[n.length-1],t=fe(n.subarray(2,n.length-1));l==t?this.#R.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${l}. Should be ${t}.`)}},66:(e,n,o)=>{this.#P.run(n,o,e)},67:(e,n,o)=>{this.#k.run(n,o,e)},68:(e,n,o)=>{this.#z.run(n,o,e)},71:(e,n,o)=>{this.#X.run(n,o,e)},126:(e,n,o)=>{this.#_.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#F.run(n,o,e)}};#_;#F;#k;#R;#P;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*b.cc,o=this.#e.subarray(n,n+b.cc);return o[u[0]]=o[u[0]]||this.#L,o[u[32]]=o[u[32]]||this.#E,o}getCcCh(e,n){if(I.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[b.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!l&&(this.#e[e*b.cc+u[0]]=C[o])}getPitch(){return this.#I}getProgram(){return this.#s}getTexts(){return this.#i.slice()}getVel(e){let n=new Map,o=this;return o.#u.forEach(function(l,t){let a=Math.floor(l/128),s=l%128;e==a&&o.#f[l]>0&&n.set(s,{v:o.#f[l],s:o.#$[t]})}),n}getBitmap(){return{bitmap:this.#h,expire:this.#d}}getLetter(){return{text:this.#T,expire:this.#N}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#u.forEach(function(n){let o=Math.floor(n/128);e.#f[n]>e.#C[o]&&(e.#C[o]=e.#f[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,l){e[l]=Math.floor(o*n.#e[l*b.cc+u[7]]*n.#e[l*b.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,o,l){let t=e||this.#L,a=n,s=o||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(s=3);let i=this.userBank.get(t,a,s,l);if(x[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),h=r*b.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${d}`,!0),i.name=d,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,s,l)),i}getChVoice(e){let n=this.getVoice(this.#e[e*b.cc+u[0]],this.#s[e],this.#e[e*b.cc+u[32]],x[this.#t]);if(this.#M[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*b.rpn;return this.#I[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let l=3*e;this.#w[l]=1,this.#w[l+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,l=3200){let t=this,a;t.#T=" ".repeat(o),e.forEach(s=>{t.#T+=String.fromCharCode(s>31?s:32),s<32&&(a=a||new Set,a.add(s))}),t.#N=Date.now()+3200,t.#T=t.#T.padEnd(32," "),a&&(a=Array.from(a),a.forEach((s,i,r)=>{r[i]=s.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=b.ace&&console.warn("ACE slots are full.")}getAce(){return this.#g}getChAce(e,n){if(n<0||n>=b.ace)throw new RangeError("No such ACE slot");let o=this.#g[n];if(o){if(I.indexOf(o)>=0)return this.#e[e*b.cc+u[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#L=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#g.fill(0),this.#s.fill(0),this.#f.fill(0),this.#u.fill(0),this.#C.fill(0),this.#I.fill(0),this.#K.fill(0),this.#Y.fill(0),this.#m=100,this.#i=[],this.#Q=500,this.#W=0,this.#N=0,this.#T="",this.#d=0,this.#o=0,this.#h.fill(0),this.#l=!1,this.#j=0,this.#x=!0,this.#c.forEach(function(n,o,l){l[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#H.fill(0)),this.#e[b.cc*9]=C[0],this.#e[b.cc*25]=C[0],this.#e[b.cc*41]=C[0],this.#e[b.cc*57]=C[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#M.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let l=this.#t;this.#t=o,this.#o=0,this.#L=ue[0][o],this.#E=ue[1][o];for(let a=0;a0&&this.#e[a*b.cc+u[0]]==C[l]&&(this.#e[a*b.cc]=C[o]);switch(this.initOnReset,o){case m.mt32:{X.forEach((a,s)=>{let i=s+1;this.#n[i]||(this.#s[i]=a,this.#e[i*b.cc+u[91]]=127)});break}}let t;switch(o){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(l=>{e.channel=l,o=!0,this.#J[e.type].call(this,e)}),o||console.warn(`${pe[e.type]?pe[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#i.length>100&&this.#i.splice(100,this.#i.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#b[10]=new Uint8Array(512),this.#G=new v,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");_[n[0]]=n[1]});var ne=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;n.indexOf(l)>-1;)n=n.replace(l,l[0])});for(let l in _)n=n.replaceAll(l,_[l]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},oe=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var F=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],ce=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Le={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},V=function(e){return Le[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},he=function(e,n,o){let l=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[l]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},X=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},de=function(e,n,o){let l=[],t=o==!1?n.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${l}`),l.pop(),n.backOne(),n.backOne(),new Uint8Array(l)}}}return new Uint8Array(l)},fe=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,l=0;for(let t=0;t>a&1)<<7,i=e[t];i+=s,t%8!=0?(n(i,o,e),o++):l=e[t]}},I=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],ue=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],C=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],He=[0,3,81,84,88],pe={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},z={0:0,1:1,2:3,5:4},be=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],L=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],P=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Be=[12,13,16,17,18,19],Ge=[33,99,100,32,102,8,9,10],$e=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:P.length};P.forEach((e,n)=>{u[e]=n});var K={length:L.length};L.forEach((e,n)=>{K[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},_e=function(e){let n=[],o=0;return e?.forEach(function(l,t){l==247?n.push(e.subarray(o,t)):l==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ye=function(e,n="",o="",l=2){return e?`${n}${e.toString().padStart(l,"0")}${o}`:""},b={ch:128,cc:P.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:L.length,dnc:128,efx:7},me=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#d=0;#b=new Array(11);get#h(){return this.#b[this.#o]}set#h(e){this.#b[this.#o]=e}#n=new Uint8Array(b.ch);#c=new Uint8Array(b.ch);#a=new Uint8Array(b.ch);#e=new Uint8Array(b.ch*b.cc);#g=new Uint8Array(b.ace);#s=new Uint8Array(b.ch);#f=new Uint8Array(b.ch*b.nn);#v=new Uint8Array(b.ch);#u=new Uint16Array(b.pl);#$=new Uint8Array(b.pl);#P=new Int16Array(b.ch);#M=new Uint8Array(b.ch);#B=0;#r=new Uint8Array(b.ch*b.rpn);#K=new Int8Array(b.ch*ge.length);#Y=new Uint8Array(b.drm*b.dpn*b.dnc);#T=new Uint8Array(b.ch);#U=new Uint8Array(128);#S=new Uint8Array(b.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(b.cmt*64);#w=new Uint8Array(b.efx*3);#L=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#R="";#N=0;#j=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#i=[];#D=new Uint8Array(b.ch);#H=new Uint8Array(b.tr);baseBank=new G("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new G("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(o==1)return e;let l=0,t=!0;for(;t;)this.#D[e+l]==0?(this.#D[e+l]=n,console.debug(`Assign track ${n} to channel ${e+l+1}.`),t=!1):this.#D[e+l]==n?t=!1:(l+=16,l>=128&&(l=0,t=!1));return e+l}else return e}#y=[];#G;#p={nOff:(e,n)=>{let o=e*128+n,l=this.#u.lastIndexOf(o);l>-1&&(this.#e[b.cc*e+u[64]]>63?(this.#$[l]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_HELD})):this.#e[b.cc*e+u[66]]>63&&this.#$[l]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[l]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#u[l]=0,this.#f[o]=0,this.#$[l]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let l=e*128+n,t=0;for(this.#v[e]&&this.#p.ano(e);this.#$[t]>0&&this.#u[t]!=l;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,o)=>{let l;switch(n){case this.NOTE_ATTACK:{l=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{l=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{l=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(l){this.#$[o]=l;let t=this.#u[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#f[t],state:l})}})},soOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#u.forEach((n,o,l)=>{let t=n>>7,a=n&127;n==0&&this.#f[0]==0||t==e&&this.#p.nOff(t,a)})}};#J={8:function(e){let n=e.channel,o=e.data[0];this.#p.nOff(n,o)},9:function(e){let n=e.channel;this.#n[n]=1;let o=e.data[0],l=e.data[1];l>0?this.#p.nOn(n,o,l):this.#p.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#u.indexOf(o)>-1&&(this.#f[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let o=n*b.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#p.ano(n),this.#P[n]=0;let l=n*b.cc;this.#e[l+u[1]]=0,this.#e[l+u[5]]=0,this.#e[l+u[64]]=0,this.#e[l+u[65]]=0,this.#e[l+u[66]]=0,this.#e[l+u[67]]=0,this.#e[l+u[11]]=127,this.#e[l+u[101]]=127,this.#e[l+u[100]]=127,this.#e[l+u[99]]=127,this.#e[l+u[98]]=127;return}case 123:{this.#p.ano(n);return}case 124:{this.#p.ano(n);return}case 125:{this.#p.ano(n);return}case 126:{this.#v[n]=1,this.#p.ano(n);return}case 127:{this.#v[n]=0,this.#p.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Be.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==m.gs?e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==m.gm?e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==m.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let l=this.#e[o+u[99]],t=this.#e[o+u[98]];if(l==1){let a=Ge.indexOf(t);if(a>-1)this.#e[o+u[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let s=ge.indexOf(t);s>-1?this.#K[n*10+s]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(L.indexOf(l)<0){let s=`NRPN 0x${l.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;l==127?console.warn(`${s}is not necessary. Consider removing it.`):console.warn(`${s}is not supported.`)}else{let s=this.#a[n]-2;s<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${D[this.#a[n]]}.`):this.#Y[(s*b.dpn+K[l])*b.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${D[this.#a[n]]}) drum NRPN ${l} commit`)}}else{let l=z[this.#e[o+u[100]]];this.#e[o+u[101]]==0&&l!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],be[l][0]),be[l][1]),this.#r[n*b.rpn+l]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&z[this.#e[o+100]]!=null&&(this.#r[n*b.rpn+z[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#p.hoOf(n);break}case 66:{e.data[1]>>6?this.#p.soOn(n):this.#p.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#s[n]=e.data,this.#T[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#u.forEach(function(l){let t=l>>7;o==t&&(n.#f[l]=e.data,n.dispatchEvent("note",{part:o,note:l&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){_e(e.data).forEach(n=>{let o=n[0],l=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(l,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(o,l,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=He.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#V.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#C.run(n,o,e),console.warn("Unknown device SysEx!");else{let l=n[n.length-1],t=fe(n.subarray(2,n.length-1));l==t?this.#C.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${l}. Should be ${t}.`)}},66:(e,n,o)=>{this.#I.run(n,o,e)},67:(e,n,o)=>{this.#k.run(n,o,e)},68:(e,n,o)=>{this.#z.run(n,o,e)},71:(e,n,o)=>{this.#X.run(n,o,e)},126:(e,n,o)=>{this.#_.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#F.run(n,o,e)}};#_;#F;#k;#C;#I;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*b.cc,o=this.#e.subarray(n,n+b.cc);return o[u[0]]=o[u[0]]||this.#L,o[u[32]]=o[u[32]]||this.#E,o}getCcCh(e,n){if(P.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[b.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!l&&(this.#e[e*b.cc+u[0]]=C[o])}getPitch(){return this.#P}getProgram(){return this.#s}getTexts(){return this.#i.slice()}getVel(e){let n=new Map,o=this;return o.#u.forEach(function(l,t){let a=Math.floor(l/128),s=l%128;e==a&&o.#f[l]>0&&n.set(s,{v:o.#f[l],s:o.#$[t]})}),n}getBitmap(){return{bitmap:this.#h,expire:this.#d}}getLetter(){return{text:this.#R,expire:this.#N}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#u.forEach(function(n){let o=Math.floor(n/128);e.#f[n]>e.#M[o]&&(e.#M[o]=e.#f[n])}),this.#M}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,l){e[l]=Math.floor(o*n.#e[l*b.cc+u[7]]*n.#e[l*b.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,o,l){let t=e||this.#L,a=n,s=o||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(s=3);let i=this.userBank.get(t,a,s,l);if(x[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),h=r*b.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${d}`,!0),i.name=d,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,s,l)),i}getChVoice(e){let n=this.getVoice(this.#e[e*b.cc+u[0]],this.#s[e],this.#e[e*b.cc+u[32]],x[this.#t]);if(this.#T[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*b.rpn;return this.#P[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let l=3*e;this.#w[l]=1,this.#w[l+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,l=3200){let t=this,a;t.#R=" ".repeat(o),e.forEach(s=>{t.#R+=String.fromCharCode(s>31?s:32),s<32&&(a=a||new Set,a.add(s))}),t.#N=Date.now()+3200,t.#R=t.#R.padEnd(32," "),a&&(a=Array.from(a),a.forEach((s,i,r)=>{r[i]=s.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=b.ace&&console.warn("ACE slots are full.")}getAce(){return this.#g}getChAce(e,n){if(n<0||n>=b.ace)throw new RangeError("No such ACE slot");let o=this.#g[n];if(o){if(P.indexOf(o)>=0)return this.#e[e*b.cc+u[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#L=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#g.fill(0),this.#s.fill(0),this.#f.fill(0),this.#u.fill(0),this.#M.fill(0),this.#P.fill(0),this.#K.fill(0),this.#Y.fill(0),this.#m=100,this.#i=[],this.#Q=500,this.#W=0,this.#N=0,this.#R="",this.#d=0,this.#o=0,this.#h.fill(0),this.#l=!1,this.#j=0,this.#x=!0,this.#c.forEach(function(n,o,l){l[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#H.fill(0)),this.#e[b.cc*9]=C[0],this.#e[b.cc*25]=C[0],this.#e[b.cc*41]=C[0],this.#e[b.cc*57]=C[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#T.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let l=this.#t;this.#t=o,this.#o=0,this.#L=ue[0][o],this.#E=ue[1][o];for(let a=0;a0&&this.#e[a*b.cc+u[0]]==C[l]&&(this.#e[a*b.cc]=C[o]);switch(this.initOnReset,o){case m.mt32:{X.forEach((a,s)=>{let i=s+1;this.#n[i]||(this.#s[i]=a,this.#e[i*b.cc+u[91]]=127)});break}}let t;switch(o){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(l=>{e.channel=l,o=!0,this.#J[e.type].call(this,e)}),o||console.warn(`${pe[e.type]?pe[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#i.length>100&&this.#i.splice(100,this.#i.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#b[10]=new Uint8Array(512),this.#G=new v,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#i.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#i.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#i.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#i.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#i.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${s}`)});break}case"ln":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${s}`)});break}default:this.#i.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#i.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#i.unshift(t.slice(1)):this.#i[0]+=t:(this.#i[0]=t,this.#i.unshift(""))}},this.#y[2]=function(t){this.#i.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#i.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#i.unshift(`${ye(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#i.unshift(""):this.#i[0]+=`${t}`},this.#y[6]=function(t){this.#i.unshift(`${ye(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#i.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new v("universal non-realtime"),this.#F=new v("universal realtime"),this.#k=new v("Yamaha"),this.#R=new v("Roland"),this.#P=new v("Korg"),this.#V=new v("Kawai"),this.#X=new v("Akai"),this.#z=new v("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#k.default=n,this.#R.default=n,this.#P.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#k.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],s=(i,r)=>{a[r]=i};if(t.subarray(1).forEach((i,r)=>{let h=r+t[0];([s,s,s,s,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(i,r)}),t[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${re(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(s)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ae[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${se(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${M[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${M[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(s)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][t[0]-64+i]||function(){})(s)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((s,i)=>{[r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},r=>{console.debug(`${a}to chorus: ${E(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][t[0]-86+i](s)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,s)=>{let i=s+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,h=i-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],s=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${i}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${i}sub type: ${d+1}`)}][s+h]||function(){})(r)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#N=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0);let s=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=b.cc*s,h=`XG CH${s+1} `,d=`Unknown XG part address ${i}.`;t.subarray(2).forEach((c,f)=>{i<1?console.debug(d):i<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#s[s]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!c},()=>{},()=>{e.setChType(s,c,m.xg),console.debug(`${h}type: ${D[c]||c}`)},()=>{e.#r[b.rpn*s+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][i+f-1]||(()=>{}))():i<48?console.debug(d):i<111?i>102&&i<105&&(e.#e[r+u[[5,65][i&1]]]=c):i<114?console.debug(d):i<116?console.debug(`${h}EQ ${["bass","treble"][i&1]} gain: ${c-64}dB`):i<118?console.debug(d):i<120?console.debug(`${h}EQ ${["bass","treble"][i&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=`PLG-150VL CH${s+1} `;t.subarray(2).forEach((h,d)=>{let c=d+i;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${oe(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let s=t[0],i="MU1000 System: ";t.subarray(1).forEach((r,h)=>{let d=s+h;d==8?console.debug(`${i}LCD contrast set to ${r}.`):d==18?(e.#E=r?126:0,console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.debug(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.debug(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!r,console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let s=t[0],i=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(s<16)switch(s){case 2:{let r=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${s} invoked.`)}else if(s<32){if(e.#x){let r=e.chRedir(s-16+(e.#j<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(s<36){let r=e.chRedir(s-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#j=s-32),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${s+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ie[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#i.unshift("SG Lyric: "),e.#i[0]+=`${ne(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,k()&&console.debug(`${i}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#k.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#k.add([89,0],(t,a,s)=>{if(e.eprom){let i=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let g=0;g<7;g++)h[r+7*f+g]+=(d>>6-g&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,a,s)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,s)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[i+7*c+p]+=(h>>6-p&1)<<7;else r[i+7*c+f]=h})}}).add([89,3],(t,a,s)=>{}),this.#k.add([39,48],(t,a,s)=>{}).add([43,0,0],(t,a,s)=>{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,s)=>{}).add([43,2],(t,a,s)=>{let i=e.chRedir(t[0],a,!0),r=t[1],h=b.cc*i,d=`TG300 CH${i+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#s[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[i]=+!c},()=>{},()=>{},()=>{e.#r[b.rpn*i+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,a,s)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,s)=>{e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0),t.forEach(function(i,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#R.add([66,18,0,0,127],(t,a,s)=>{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#E=3,e.#l=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,s)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#l=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let s="".padStart(a," ");t.subarray(1).forEach((i,r)=>{s+=String.fromCharCode(Math.max(32,i))}),s=s.padEnd(16," "),console.debug(`GS patch name: ${s}`)}else a<48||(a<65?t.subarray(1).forEach((s,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${F[s]}`),e.setEffectType(0,40,s)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${s}ms`)},()=>{console.info(`${r}type: ${ce[s]}`),e.setEffectType(1,40,16+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)},()=>{console.debug(`${r}to delay: ${E(s)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((s,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[s]}`),e.setEffectType(2,40,32+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((s,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][s]}Hz`)},()=>{console.debug(`${a}low gain: ${s-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][s]}Hz`)},()=>{console.debug(`${a}high gain: ${s-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",s=function(i,r){let h=he(e.#w.subarray(10,12),r,i);h&&console.debug(`${a}${V(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${V(e.#w.subarray(10,12))}`)},!1,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(i,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#d=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#d=Date.now()+3200,e.#b[t[0]-1]?.length||(e.#b[t[0]-1]=new Uint8Array(256));let a=e.#b[t[0]-1],s=t[1];a.fill(0);let i=t.subarray(2);for(let r=0;r>4-g&1,g++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,s){let i=t[0],r=b.cc*a,h=b.rpn*a,d=`GS CH${a+1} `;i<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#s[a]=c},()=>{let p=e.chRedir(c,s,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][i+f]()}):i<19||(i<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[a]=+!c},!1,()=>{e.setChType(a,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][i+f-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},l=function(t,a){let s=t[0],i=`GS CH${a+1} `;s<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[b.cc*a+u[32]]=r},()=>{}][s+h]()}):s<32?console.warn(`Unknown GS misc address: ${s}`):s<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][s+h-32]()}):console.warn(`Unknown GS misc address: ${s}`)};this.#R.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{l(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{l(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{l(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{l(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{l(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{l(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{l(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{l(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{l(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{l(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{l(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{l(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{l(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{l(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{l(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{l(t,e.chRedir(15,a,!0))}),this.#P.add([54,65],(t,a)=>{e.switchMode("x5d");let s=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],r=e.chRedir(s&15,a,!0),h=b.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-1,e.#e[h+u[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#s[r]=$e[i-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=i},()=>{i<31&&(e.#e[h+u[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[h+u[93]]=P(i)},()=>{e.#e[h+u[91]]=P(i)},()=>{e.#r[r*b.rpn+3]=i>8191?i-16320:64+i},()=>{e.#r[r*b.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#r[r*b.rpn]=i)},()=>{}][s>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let s="",i=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` +122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#i.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#i.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#i.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#i.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#i.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${s}`)});break}case"ln":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${s}`)});break}default:this.#i.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#i.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#i.unshift(t.slice(1)):this.#i[0]+=t:(this.#i[0]=t,this.#i.unshift(""))}},this.#y[2]=function(t){this.#i.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#i.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#i.unshift(`${ye(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#i.unshift(""):this.#i[0]+=`${t}`},this.#y[6]=function(t){this.#i.unshift(`${ye(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#i.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new v("universal non-realtime"),this.#F=new v("universal realtime"),this.#k=new v("Yamaha"),this.#C=new v("Roland"),this.#I=new v("Korg"),this.#V=new v("Kawai"),this.#X=new v("Akai"),this.#z=new v("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#k.default=n,this.#C.default=n,this.#I.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#k.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],s=(i,r)=>{a[r]=i};if(t.subarray(1).forEach((i,r)=>{let h=r+t[0];([s,s,s,s,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(i,r)}),t[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${re(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(s)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ae[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${se(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${M[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${M[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(s)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][t[0]-64+i]||function(){})(s)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((s,i)=>{[r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},r=>{console.debug(`${a}to chorus: ${E(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][t[0]-86+i](s)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,s)=>{let i=s+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,h=i-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],s=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${i}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${i}sub type: ${d+1}`)}][s+h]||function(){})(r)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#N=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0);let s=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=b.cc*s,h=`XG CH${s+1} `,d=`Unknown XG part address ${i}.`;t.subarray(2).forEach((c,f)=>{i<1?console.debug(d):i<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#s[s]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!c},()=>{},()=>{e.setChType(s,c,m.xg),console.debug(`${h}type: ${D[c]||c}`)},()=>{e.#r[b.rpn*s+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][i+f-1]||(()=>{}))():i<48?console.debug(d):i<111?i>102&&i<105&&(e.#e[r+u[[5,65][i&1]]]=c):i<114?console.debug(d):i<116?console.debug(`${h}EQ ${["bass","treble"][i&1]} gain: ${c-64}dB`):i<118?console.debug(d):i<120?console.debug(`${h}EQ ${["bass","treble"][i&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=`PLG-150VL CH${s+1} `;t.subarray(2).forEach((h,d)=>{let c=d+i;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${oe(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let s=t[0],i="MU1000 System: ";t.subarray(1).forEach((r,h)=>{let d=s+h;d==8?console.debug(`${i}LCD contrast set to ${r}.`):d==18?(e.#E=r?126:0,console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.debug(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.debug(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!r,console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let s=t[0],i=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(s<16)switch(s){case 2:{let r=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${s} invoked.`)}else if(s<32){if(e.#x){let r=e.chRedir(s-16+(e.#j<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(s<36){let r=e.chRedir(s-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#j=s-32),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${s+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ie[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#i.unshift("SG Lyric: "),e.#i[0]+=`${ne(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,k()&&console.debug(`${i}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#k.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#k.add([89,0],(t,a,s)=>{if(e.eprom){let i=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let g=0;g<7;g++)h[r+7*f+g]+=(d>>6-g&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,a,s)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,s)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[i+7*c+p]+=(h>>6-p&1)<<7;else r[i+7*c+f]=h})}}).add([89,3],(t,a,s)=>{}),this.#k.add([39,48],(t,a,s)=>{}).add([43,0,0],(t,a,s)=>{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,s)=>{}).add([43,2],(t,a,s)=>{let i=e.chRedir(t[0],a,!0),r=t[1],h=b.cc*i,d=`TG300 CH${i+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#s[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[i]=+!c},()=>{},()=>{},()=>{e.#r[b.rpn*i+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,a,s)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,s)=>{e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0),t.forEach(function(i,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#C.add([66,18,0,0,127],(t,a,s)=>{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#E=3,e.#l=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,s)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#l=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let s="".padStart(a," ");t.subarray(1).forEach((i,r)=>{s+=String.fromCharCode(Math.max(32,i))}),s=s.padEnd(16," "),console.debug(`GS patch name: ${s}`)}else a<48||(a<65?t.subarray(1).forEach((s,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${F[s]}`),e.setEffectType(0,40,s)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${s}ms`)},()=>{console.info(`${r}type: ${ce[s]}`),e.setEffectType(1,40,16+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)},()=>{console.debug(`${r}to delay: ${E(s)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((s,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[s]}`),e.setEffectType(2,40,32+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((s,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][s]}Hz`)},()=>{console.debug(`${a}low gain: ${s-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][s]}Hz`)},()=>{console.debug(`${a}high gain: ${s-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",s=function(i,r){let h=he(e.#w.subarray(10,12),r,i);h&&console.debug(`${a}${V(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${V(e.#w.subarray(10,12))}`)},!1,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(i,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#d=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#d=Date.now()+3200,e.#b[t[0]-1]?.length||(e.#b[t[0]-1]=new Uint8Array(256));let a=e.#b[t[0]-1],s=t[1];a.fill(0);let i=t.subarray(2);for(let r=0;r>4-g&1,g++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,s){let i=t[0],r=b.cc*a,h=b.rpn*a,d=`GS CH${a+1} `;i<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#s[a]=c},()=>{let p=e.chRedir(c,s,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][i+f]()}):i<19||(i<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[a]=+!c},!1,()=>{e.setChType(a,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][i+f-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},l=function(t,a){let s=t[0],i=`GS CH${a+1} `;s<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[b.cc*a+u[32]]=r},()=>{}][s+h]()}):s<32?console.warn(`Unknown GS misc address: ${s}`):s<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][s+h-32]()}):console.warn(`Unknown GS misc address: ${s}`)};this.#C.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{l(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{l(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{l(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{l(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{l(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{l(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{l(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{l(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{l(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{l(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{l(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{l(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{l(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{l(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{l(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{l(t,e.chRedir(15,a,!0))}),this.#I.add([54,65],(t,a)=>{e.switchMode("x5d");let s=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],r=e.chRedir(s&15,a,!0),h=b.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-1,e.#e[h+u[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#s[r]=$e[i-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=i},()=>{i<31&&(e.#e[h+u[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[h+u[93]]=I(i)},()=>{e.#e[h+u[91]]=I(i)},()=>{e.#r[r*b.rpn+3]=i>8191?i-16320:64+i},()=>{e.#r[r*b.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#r[r*b.rpn]=i)},()=>{}][s>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let s="",i=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` ${i} ${r} ${h} ${s.trim().replace("Init Voice","")}`,r++,s="";break}}r>99&&(i=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let s="",i=90,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` -${i} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(s,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,s)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(s,i,r,h){if(i<192){let d=e.chRedir(Math.floor(i/12),a,!0),c=d*b.cc;switch(i%12){case 0:{s<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#s[d]=s):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#s[d]=$e[s-128]),s>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=s;break}case 2:{e.#r[d*b.rpn+3]=s>127?s-192:64+s;break}case 3:{e.#r[d*b.rpn+1]=s>127?s-192:64+s;break}case 4:{s<31&&(e.#e[c+u[10]]=Math.round((s-15)*4.2+64));break}case 5:{let f=s>>4,p=s&15;e.#e[c+u[91]]=P(p),e.#e[c+u[93]]=P(f);break}case 10:break;case 11:{let f=e.chRedir(s&15,a,!0),p=s>>4;e.#c[d]=s,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(i-192,a,!0)}})}),this.#R.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#U[c+(i-1)*16]=h,([!1,()=>{let f=e.#U[i-1<<4];if(f<3)if(e.#M[i]=1,f==2)for(let p=0;p{e.#r[i*b.rpn+3]=h+40},()=>{e.#r[i*b.rpn+1]=h+14},()=>{e.#r[i*b.rpn]=h},!1,()=>{e.#e[b.cc*i+u[91]]=h?127:0},!1,()=>{e.#e[b.cc*i+u[7]]=h},()=>{e.#e[b.cc*i+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0)}).add([22,18,2],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0),r=t[1]+(t[0]<<7);r<10&&(e.#M[i]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#S[(i-1)*b.cmt+c]=h)})}).add([22,18,3],(t,a,s)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((r,h)=>{let d=h+i;e.#U[d]=r;let c=e.chRedir(1+d>>4,a,!0),f=d&15;([!1,()=>{let p=e.#U[c-1<<4];if(p<3)if(e.#M[c]=1,p==2)for(let g=0;g{e.#r[c*b.rpn+3]=r+40},()=>{e.#r[c*b.rpn+1]=r+14},()=>{e.#r[c*b.rpn]=r},!1,()=>{e.#e[b.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[b.cc*c+u[7]]=r},()=>{e.#e[b.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,a,s)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+i,c=e.chRedir(Math.floor(d/246+1),a,!0),f=d%246;f<14&&(e.#S[(c-1)*b.cmt+f]=r),f<10&&(e.#M[c]=1)})}).add([22,18,5],(t,a,s)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=i+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let g=e.#q[p];if(g<3){let y="";if(g==2){let $=b.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(g<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME -000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,a,s)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=i+h;d>1)*b.cmt+d]=r)})}).add([22,18,16],(t,a,s)=>{e.switchMode("mt32");let i=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],s=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(s+=String.fromCharCode(i))}),e.#T=s.padStart(20," "),e.#N=Date.now()+3200}).add([22,18,82],(t,a)=>{let s=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#p.ano(s+i),i&&i<10&&(e.#s[s+i]=X[i-1]);console.info("MT-32 alt reset complete.")}),this.#P.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,a)=>{let s=t[0];switch(s){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(s<10){let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][s+d]()}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=s*b.cc,r=t[1],h=`NS5R CH${s+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[i+u[0]]=d||121},()=>{e.#e[i+u[32]]=d},()=>{e.#s[s]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,a,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!d},()=>{e.setChType(s,d,m.ns5r),console.debug(`${h}type: ${D[d]}`)},()=>{e.#r[b.rpn*s+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[i+u[7]]=d},()=>{e.#e[i+u[11]]=d},()=>{},()=>{},()=>{e.#e[i+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[i+u[93]]=d},()=>{e.#e[i+u[91]]=d},()=>{e.#e[i+u[76]]=d},()=>{e.#e[i+u[77]]=d},()=>{e.#e[i+u[78]]=d},()=>{e.#e[i+u[74]]=d},()=>{e.#e[i+u[71]]=d},()=>{e.#e[i+u[73]]=d},()=>{e.#e[i+u[75]]=d},()=>{e.#e[i+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[i+u[5]]=d},()=>{e.#e[i+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,a)=>{let s=t[0];if(s<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=s-32;e.#d=Date.now()+3200,e.#o=10,e.#h.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+i,p=f>>4,g=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#h[g*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1;let s="";S(t,(i,r)=>{r<8?(i>31&&(s+=String.fromCharCode(i)),r==7&&(e.aiEfxName=s)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(s,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),h=r*b.cc;switch(i%92){case 0:{e.#e[h+u[0]]=s||121;break}case 1:{e.#e[h+u[32]]=s;break}case 2:{e.#s[r]=s,s>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(s,a,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*b.rpn+3]=s<40||s>88?s+(s>63?-192:64):s;break}case 9:case 10:{e.#e[h+u[7]]=s;break}case 11:{e.#e[h+u[11]]=s;break}case 14:{e.#e[h+u[10]]=s||128;break}case 19:{e.#e[h+u[93]]=s;break}case 20:{e.#e[h+u[91]]=s;break}case 84:{e.#e[h+u[65]]=s;break}case 85:{e.#e[h+u[5]]=s;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let s="",i=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{i=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` +${i} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(s,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,s)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(s,i,r,h){if(i<192){let d=e.chRedir(Math.floor(i/12),a,!0),c=d*b.cc;switch(i%12){case 0:{s<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#s[d]=s):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#s[d]=$e[s-128]),s>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=s;break}case 2:{e.#r[d*b.rpn+3]=s>127?s-192:64+s;break}case 3:{e.#r[d*b.rpn+1]=s>127?s-192:64+s;break}case 4:{s<31&&(e.#e[c+u[10]]=Math.round((s-15)*4.2+64));break}case 5:{let f=s>>4,p=s&15;e.#e[c+u[91]]=I(p),e.#e[c+u[93]]=I(f);break}case 10:break;case 11:{let f=e.chRedir(s&15,a,!0),p=s>>4;e.#c[d]=s,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(i-192,a,!0)}})}),this.#C.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#U[c+(i-1)*16]=h,([!1,()=>{let f=e.#U[i-1<<4];if(f<3)if(e.#T[i]=1,f==2)for(let p=0;p{e.#r[i*b.rpn+3]=h+40},()=>{e.#r[i*b.rpn+1]=h+14},()=>{e.#r[i*b.rpn]=h},!1,()=>{e.#e[b.cc*i+u[91]]=h?127:0},!1,()=>{e.#e[b.cc*i+u[7]]=h},()=>{e.#e[b.cc*i+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0)}).add([22,18,2],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0),r=t[1]+(t[0]<<7);r<10&&(e.#T[i]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#S[(i-1)*b.cmt+c]=h)})}).add([22,18,3],(t,a,s)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((r,h)=>{let d=h+i;e.#U[d]=r;let c=e.chRedir(1+d>>4,a,!0),f=d&15;([!1,()=>{let p=e.#U[c-1<<4];if(p<3)if(e.#T[c]=1,p==2)for(let g=0;g{e.#r[c*b.rpn+3]=r+40},()=>{e.#r[c*b.rpn+1]=r+14},()=>{e.#r[c*b.rpn]=r},!1,()=>{e.#e[b.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[b.cc*c+u[7]]=r},()=>{e.#e[b.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,a,s)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+i,c=e.chRedir(Math.floor(d/246+1),a,!0),f=d%246;f<14&&(e.#S[(c-1)*b.cmt+f]=r),f<10&&(e.#T[c]=1)})}).add([22,18,5],(t,a,s)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=i+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let g=e.#q[p];if(g<3){let y="";if(g==2){let $=b.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(g<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME +000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,a,s)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=i+h;d>1)*b.cmt+d]=r)})}).add([22,18,16],(t,a,s)=>{e.switchMode("mt32");let i=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],s=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(s+=String.fromCharCode(i))}),e.#R=s.padStart(20," "),e.#N=Date.now()+3200}).add([22,18,82],(t,a)=>{let s=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#p.ano(s+i),i&&i<10&&(e.#s[s+i]=X[i-1]);console.info("MT-32 alt reset complete.")}),this.#I.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,a)=>{let s=t[0];switch(s){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(s<10){let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][s+d]()}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=s*b.cc,r=t[1],h=`NS5R CH${s+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[i+u[0]]=d||121},()=>{e.#e[i+u[32]]=d},()=>{e.#s[s]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,a,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!d},()=>{e.setChType(s,d,m.ns5r),console.debug(`${h}type: ${D[d]}`)},()=>{e.#r[b.rpn*s+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[i+u[7]]=d},()=>{e.#e[i+u[11]]=d},()=>{},()=>{},()=>{e.#e[i+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[i+u[93]]=d},()=>{e.#e[i+u[91]]=d},()=>{e.#e[i+u[76]]=d},()=>{e.#e[i+u[77]]=d},()=>{e.#e[i+u[78]]=d},()=>{e.#e[i+u[74]]=d},()=>{e.#e[i+u[71]]=d},()=>{e.#e[i+u[73]]=d},()=>{e.#e[i+u[75]]=d},()=>{e.#e[i+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[i+u[5]]=d},()=>{e.#e[i+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,a)=>{let s=t[0];if(s<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=s-32;e.#d=Date.now()+3200,e.#o=10,e.#h.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+i,p=f>>4,g=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#h[g*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1;let s="";S(t,(i,r)=>{r<8?(i>31&&(s+=String.fromCharCode(i)),r==7&&(e.aiEfxName=s)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(s,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),h=r*b.cc;switch(i%92){case 0:{e.#e[h+u[0]]=s||121;break}case 1:{e.#e[h+u[32]]=s;break}case 2:{e.#s[r]=s,s>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(s,a,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*b.rpn+3]=s<40||s>88?s+(s>63?-192:64):s;break}case 9:case 10:{e.#e[h+u[7]]=s;break}case 11:{e.#e[h+u[11]]=s;break}case 14:{e.#e[h+u[10]]=s||128;break}case 19:{e.#e[h+u[93]]=s;break}case 20:{e.#e[h+u[91]]=s;break}case 84:{e.#e[h+u[65]]=s;break}case 85:{e.#e[h+u[5]]=s;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let s="",i=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{i=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` ${i} ${r} ${h} ${s.trim().replace("Init Voice","")}`,r++,s="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let s="",i=88,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%126;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:break;case p==12:break;case p==13:{d+=` -${i} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(s,i,r)=>{if(i<720)for(let h=0;h<8;h++)a[i*8+h]=s>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,s)=>{e.#P.run([66,...t],a,s)}),this.#V.add([16,0,8,0],(t,a,s)=>{let i=(t[2]<<4)+t[3],r="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#E=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,s)=>{let i=e.chRedir(t[1],a,!0),r=b.cc*i,h=b.rpn*i,d=(t[3]<<4)+t[4],c=`K11 CH${i+1} `;([()=>{d<128?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[r+u[0]]=0,e.#s[i]=d):(e.setChType(i,e.CH_DRUMS,m.k11),e.#s[i]=d-128)},()=>{let f=e.chRedir(d,a,!0);e.#c[i]=f,i!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[r+u[7]]=d},()=>{e.#n[i]=d},()=>{e.#e[r+u[10]]=d},()=>{e.#r[h+3]=d+40},()=>{e.#r[h+1]=d>>1,e.#r[h+2]=d&1},()=>{e.#e[r+u[91]]=d?127:0},()=>{},()=>{e.#e[r+u[74]]=d},()=>{e.#e[r+u[73]]=d},()=>{e.#e[r+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,s)=>{let i=(t[2]<<4)+t[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,s)=>{let i=(t[2]<<4)+t[3],r=e.chRedir(t[1],a,!0),h=r*b.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#s[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#s[r]=i-100):(e.setChType(r,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#s[r]=i-160)},()=>{let d=e.chRedir(i,a,!0);e.#c[r]=d,r!=d&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,s)=>{let i=(t[2]<<4)+t[3],r=e.chRedir(t[1],a,!0),h=r*b.cc,d=r*b.rpn,c=`GMLX CH${r+1} `;[()=>{e.#n[r]=i},()=>{e.#e[h+u[7]]=i},()=>{e.#e[h+u[10]]=i},()=>{e.#e[h+u[91]]=i?127:0},()=>{e.#r[d+3]=i+40},()=>{e.#r[d+1]=i},()=>{e.#r[d]=i},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,a,s)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${F[i]}`);break}}break}default:if(t[0]>>4==1){let r=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let h=e.chRedir(i,a,!0);e.#c[r]=h,r!=h&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[b.cc*r+u[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,a,s)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#k.add([127,0],(t,a,s)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#k.run(i,a,s)}).add([127,1,0,0],(t,a,s)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][r+d]||(()=>{console.info(`Unrecognized ${i}ID: ${r+d}`)}))()})}).add([127,1,0,0,14],(t,a,s)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(h,d,c)=>{console.debug(`${i}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,s)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(h,d,c)=>{console.debug(`${i}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,s)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),r=b.cc*i,h=t[1],d=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[r+u[0]]=c},()=>{c&&(e.#n[i]=1),e.#e[r+u[32]]=c,e.#a[i]=this.setChType(i,[32,40].indexOf(c)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{c&&(e.#n[i]=1),e.#s[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[i]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[r+u[7]]=c},()=>{e.#e[r+u[10]]=c},!1,!1,!1,()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[128]]=c},()=>{},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},!1,()=>{e.#e[r+u[65]]=c},()=>{e.#e[r+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,a,s)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((r,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=r-64},()=>{let f=M[r]},()=>{let f=r/10},()=>{let f=r}][i+h&3]||(()=>{}))()})})}};var j=Pe(we(),1);var Ee=class{#t=!1;constructor(e,n,o,l){this.#t=e,this.start=n,this.end=o,this.data=l}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},Q=class extends Ee{constructor(e,n,o){super(!0,e,n,o)}},ke=class extends Ee{constructor(e,n){super(!1,e,e,n)}},W=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let o=[];if(n)for(let l=0;le);l++){if(this[l].endt.#t&&(o.push(a),t.#t=a.index)})}return o}getRange(e,n){e>n&&([e,n]=[n,e]);let o=[],l=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let s=0;s=e&&(l=s):l=l<0?s:l;for(;a;)this[l]?.end=e&&o.push(this[l]):a=!1,l++;return o}};var Fe=0xffffffffffff,ve=function(e){let n=new W,o=this,l=e.timeDivision,t=120,a=new W,s=0,i=0;a.push(new Q(0,Fe,[120,0])),e.track.forEach(function(c){s=0,c.event.forEach(function(f){s+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,a[a.length-1]&&a.push(new Q(s,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let r=120;a.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):r==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),r=c.data[0])});let h=0,d=120;return a.forEach(function(c){let f=c.start,p=f/d/l*60+h;d=c.data[0],h=p-f/d/l*60,c.data[1]=h}),console.debug("All tempo changes: ",a),t=120,s=0,i=0,e.track.forEach(function(c,f){s=0,i=0;let p=f+1;c.event.forEach(function(g,y){s+=g.deltaTime;let $=a.step(s,!0)[0];$&&(t=$.data[0],i=$.data[1]);let w={type:g.type,data:g.data,track:p,part:0};g.type>14?w.meta=g.metaType:w.part=g.channel,n.push(new ke(s/t/l*60+i,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};j.default.customInterpreter=de;var Se=class extends U{device;#t;#o="";#d=[];#b=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#n=.5;#c=120;#a=4;#e=4;#g=0;#s=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#a=4,this.#e=4,this.#g=0,this.#s=0}async loadFile(e){this.#t=ve(j.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#s/this.#n}get noteOverall(){return this.noteProgress-this.#g}get noteBar(){return Math.floor(this.noteOverall/this.#a)}get noteBeat(){let e=this.noteOverall%this.#a;return e<0&&(e+=this.#a),e}getTimeSig(){return[this.#a,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#s&&(this.#s=e);let n=this.#t?.step(e)||[],o=0,l=new Set,t=this,a=[];this.device.getStrength().forEach((y,$)=>{this.#h[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?l.add($.part*128+$.data[0]):l.has($.part*128+$.data[0])&&o++),y.data.type==8&&l.has($.part*128+$.data[0])&&o++;let w=t.device.runJson($);switch(w?.reply){case"meta":{a.push(w);break}}w?.reply&&delete w.reply}),a?.length>0&&this.dispatchEvent("meta",a);let s=this.device.getActive(),i=[],r=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#h[$],y);let T=w[$]-t.#b[$],Y=u.length*$;if(T>=0){let H=4*.25**(h[Y+u[73]]/64);t.#b[$]+=Math.ceil(T-T*t.smoothingAtk**H)}else{let H=4*.25**(h[Y+u[72]]/64);t.#b[$]+=Math.floor(T-T*t.smoothingDcy**H)}});let p=0;return s.forEach(function(y,$){y&&(i[$]=t.device.getVel($),p+=i[$].size)}),{extraPoly:o,curPoly:p,chInUse:s,chKeyPr:i,chPitch:r,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#b.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,o=.5){super();let l=this;this.smoothingAtk=n,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(l.#d[a.meta]||console.debug).call(l,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){l.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){l.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){l.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){l.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){l.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){l.dispatchEvent("screen",t.data)}),this.#d[3]=function(t,a){l.#o?.length<1&&(l.#o=a)},this.#d[81]=function(t,a){let s=l.noteProgress,i=l.#n||.5;l.#c=6e7/a,l.#n=a/1e6,l.#g+=s*(i/l.#n)-s},this.#d[88]=function(t,a){let s=l.noteProgress,i=l.noteOverall,r=l.noteBar,h=l.noteBeat,d=l.#a,c=l.#e;l.#a=a[0],l.#e=1<=d&&(dN?(n=Math.round(self.innerHeight/1080*1e4)/1e4,o=Math.ceil(self.innerHeight*N)):e{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(s,i,r)=>{if(i<720)for(let h=0;h<8;h++)a[i*8+h]=s>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,s)=>{e.#I.run([66,...t],a,s)}),this.#V.add([16,0,8,0],(t,a,s)=>{let i=(t[2]<<4)+t[3],r="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#E=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,s)=>{let i=e.chRedir(t[1],a,!0),r=b.cc*i,h=b.rpn*i,d=(t[3]<<4)+t[4],c=`K11 CH${i+1} `;([()=>{d<128?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[r+u[0]]=0,e.#s[i]=d):(e.setChType(i,e.CH_DRUMS,m.k11),e.#s[i]=d-128)},()=>{let f=e.chRedir(d,a,!0);e.#c[i]=f,i!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[r+u[7]]=d},()=>{e.#n[i]=d},()=>{e.#e[r+u[10]]=d},()=>{e.#r[h+3]=d+40},()=>{e.#r[h+1]=d>>1,e.#r[h+2]=d&1},()=>{e.#e[r+u[91]]=d?127:0},()=>{},()=>{e.#e[r+u[74]]=d},()=>{e.#e[r+u[73]]=d},()=>{e.#e[r+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,s)=>{let i=(t[2]<<4)+t[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,s)=>{let i=(t[2]<<4)+t[3],r=e.chRedir(t[1],a,!0),h=r*b.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#s[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#s[r]=i-100):(e.setChType(r,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#s[r]=i-160)},()=>{let d=e.chRedir(i,a,!0);e.#c[r]=d,r!=d&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,s)=>{let i=(t[2]<<4)+t[3],r=e.chRedir(t[1],a,!0),h=r*b.cc,d=r*b.rpn,c=`GMLX CH${r+1} `;[()=>{e.#n[r]=i},()=>{e.#e[h+u[7]]=i},()=>{e.#e[h+u[10]]=i},()=>{e.#e[h+u[91]]=i?127:0},()=>{e.#r[d+3]=i+40},()=>{e.#r[d+1]=i},()=>{e.#r[d]=i},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,a,s)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${F[i]}`);break}}break}default:if(t[0]>>4==1){let r=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let h=e.chRedir(i,a,!0);e.#c[r]=h,r!=h&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[b.cc*r+u[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,a,s)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#k.add([127,0],(t,a,s)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#k.run(i,a,s)}).add([127,1,0,0],(t,a,s)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][r+d]||(()=>{console.info(`Unrecognized ${i}ID: ${r+d}`)}))()})}).add([127,1,0,0,14],(t,a,s)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(h,d,c)=>{console.debug(`${i}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,s)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(h,d,c)=>{console.debug(`${i}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,s)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),r=b.cc*i,h=t[1],d=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[r+u[0]]=c},()=>{c&&(e.#n[i]=1),e.#e[r+u[32]]=c,e.#a[i]=this.setChType(i,[32,40].indexOf(c)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{c&&(e.#n[i]=1),e.#s[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[i]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[r+u[7]]=c},()=>{e.#e[r+u[10]]=c},!1,!1,!1,()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[128]]=c},()=>{},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},!1,()=>{e.#e[r+u[65]]=c},()=>{e.#e[r+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,a,s)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((r,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=r-64},()=>{let f=M[r]},()=>{let f=r/10},()=>{let f=r}][i+h&3]||(()=>{}))()})}),this.#C.add([0,72,18,0,0,0,0],(t,a,s)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}};var j=Ie(we(),1);var Ee=class{#t=!1;constructor(e,n,o,l){this.#t=e,this.start=n,this.end=o,this.data=l}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},Q=class extends Ee{constructor(e,n,o){super(!0,e,n,o)}},ke=class extends Ee{constructor(e,n){super(!1,e,e,n)}},W=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let o=[];if(n)for(let l=0;le);l++){if(this[l].endt.#t&&(o.push(a),t.#t=a.index)})}return o}getRange(e,n){e>n&&([e,n]=[n,e]);let o=[],l=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let s=0;s=e&&(l=s):l=l<0?s:l;for(;a;)this[l]?.end=e&&o.push(this[l]):a=!1,l++;return o}};var Fe=0xffffffffffff,ve=function(e){let n=new W,o=this,l=e.timeDivision,t=120,a=new W,s=0,i=0;a.push(new Q(0,Fe,[120,0])),e.track.forEach(function(c){s=0,c.event.forEach(function(f){s+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,a[a.length-1]&&a.push(new Q(s,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let r=120;a.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):r==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),r=c.data[0])});let h=0,d=120;return a.forEach(function(c){let f=c.start,p=f/d/l*60+h;d=c.data[0],h=p-f/d/l*60,c.data[1]=h}),console.debug("All tempo changes: ",a),t=120,s=0,i=0,e.track.forEach(function(c,f){s=0,i=0;let p=f+1;c.event.forEach(function(g,y){s+=g.deltaTime;let $=a.step(s,!0)[0];$&&(t=$.data[0],i=$.data[1]);let w={type:g.type,data:g.data,track:p,part:0};g.type>14?w.meta=g.metaType:w.part=g.channel,n.push(new ke(s/t/l*60+i,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};j.default.customInterpreter=de;var Se=class extends U{device;#t;#o="";#d=[];#b=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#n=.5;#c=120;#a=4;#e=4;#g=0;#s=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#a=4,this.#e=4,this.#g=0,this.#s=0}async loadFile(e){this.#t=ve(j.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#s/this.#n}get noteOverall(){return this.noteProgress-this.#g}get noteBar(){return Math.floor(this.noteOverall/this.#a)}get noteBeat(){let e=this.noteOverall%this.#a;return e<0&&(e+=this.#a),e}getTimeSig(){return[this.#a,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#s&&(this.#s=e);let n=this.#t?.step(e)||[],o=0,l=new Set,t=this,a=[];this.device.getStrength().forEach((y,$)=>{this.#h[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?l.add($.part*128+$.data[0]):l.has($.part*128+$.data[0])&&o++),y.data.type==8&&l.has($.part*128+$.data[0])&&o++;let w=t.device.runJson($);switch(w?.reply){case"meta":{a.push(w);break}}w?.reply&&delete w.reply}),a?.length>0&&this.dispatchEvent("meta",a);let s=this.device.getActive(),i=[],r=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#h[$],y);let T=w[$]-t.#b[$],Y=u.length*$;if(T>=0){let H=4*.25**(h[Y+u[73]]/64);t.#b[$]+=Math.ceil(T-T*t.smoothingAtk**H)}else{let H=4*.25**(h[Y+u[72]]/64);t.#b[$]+=Math.floor(T-T*t.smoothingDcy**H)}});let p=0;return s.forEach(function(y,$){y&&(i[$]=t.device.getVel($),p+=i[$].size)}),{extraPoly:o,curPoly:p,chInUse:s,chKeyPr:i,chPitch:r,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#b.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,o=.5){super();let l=this;this.smoothingAtk=n,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(l.#d[a.meta]||console.debug).call(l,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){l.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){l.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){l.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){l.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){l.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){l.dispatchEvent("screen",t.data)}),this.#d[3]=function(t,a){l.#o?.length<1&&(l.#o=a)},this.#d[81]=function(t,a){let s=l.noteProgress,i=l.#n||.5;l.#c=6e7/a,l.#n=a/1e6,l.#g+=s*(i/l.#n)-s},this.#d[88]=function(t,a){let s=l.noteProgress,i=l.noteOverall,r=l.noteBar,h=l.noteBeat,d=l.#a,c=l.#e;l.#a=a[0],l.#e=1<=d&&(dN?(n=Math.round(self.innerHeight/1080*1e4)/1e4,o=Math.ceil(self.innerHeight*N)):e{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,c){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,c,e),c++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],c=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(c,t)):f==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ce=function(e,n="",c="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${c}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#S=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#c=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#l=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#C=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#M="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(c==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let c=e*128+n,f=this.#l.lastIndexOf(c);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#l[f]=0,this.#o[c]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#l[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,c)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[c]=f;let t=this.#l[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#l.forEach((n,c,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,c=e.data[0];this.#h.nOff(n,c)},9:function(e){let n=e.channel;this.#c[n]=1;let c=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,c,f):this.#h.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#l.indexOf(c)>-1&&(this.#o[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#c[n]=1);break}e.data[1]&&(this.#c[n]=1);break}default:{this.#c[n]=1;break}}})();let c=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==g.gs?e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==g.gm?e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==g.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[c+d[99]],t=this.#e[c+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[c+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[c+d[100]]];this.#e[c+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&I[this.#e[c+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#c[n]=1);break}default:this.#c[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#l.forEach(function(f){let t=f>>7;c==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:c,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let c=n[0],f=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(c,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#F.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#T.run(n,c,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#T.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,c)=>{this.#U.run(n,c,e)},67:(e,n,c)=>{this.#w.run(n,c,e)},68:(e,n,c)=>{this.#V.run(n,c,e)},71:(e,n,c)=>{this.#K.run(n,c,e)},126:(e,n,c)=>{this.#I.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#X.run(n,c,e)}};#I;#X;#w;#T;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#c.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,c=this.#e.subarray(n,n+u.cc);return c[d[0]]=c[d[0]]||this.#H,c[d[32]]=c[d[32]]||this.#y,c}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[c])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,c=this;return c.#l.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&c.#o[f]>0&&n.set(r,{v:c.#o[f],s:c.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#S}}getLetter(){return{text:this.#M,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#l.forEach(function(n){let c=Math.floor(n/128);e.#o[n]>e.#C[c]&&(e.#C[c]=e.#o[n])}),this.#C}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,f){e[f]=Math.floor(c*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,c,f){let t=e||this.#H,a=n,r=c||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),o=s*u.cmt,l="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(l+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,f=3200){let t=this,a;t.#M=" ".repeat(c),e.forEach(r=>{t.#M+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#M=t.#M.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let c=this.#R[n];if(c){if(U.indexOf(c)>=0)return this.#e[e*u.cc+d[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#c.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#o.fill(0),this.#l.fill(0),this.#C.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#M="",this.#S=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,c,f){f[c]=c}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=c,this.#p=0,this.#H=se[0][c],this.#y=se[1][c];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[c]);switch(this.initOnReset,c){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#c[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(c){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(f=>{e.channel=f,c=!0,this.#j[e.type].call(this,e)}),c||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,c){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,c,e),c++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],c=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(c,t)):f==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ce=function(e,n="",c="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${c}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#C=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#c=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#l=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#x=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#M=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#T="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(c==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let c=e*128+n,f=this.#l.lastIndexOf(c);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#l[f]=0,this.#o[c]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#l[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,c)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[c]=f;let t=this.#l[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#l.forEach((n,c,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,c=e.data[0];this.#h.nOff(n,c)},9:function(e){let n=e.channel;this.#c[n]=1;let c=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,c,f):this.#h.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#l.indexOf(c)>-1&&(this.#o[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#c[n]=1);break}e.data[1]&&(this.#c[n]=1);break}default:{this.#c[n]=1;break}}})();let c=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==g.gs?e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==g.gm?e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==g.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[c+d[99]],t=this.#e[c+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[c+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[c+d[100]]];this.#e[c+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&I[this.#e[c+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#c[n]=1);break}default:this.#c[n]=1}this.#r[n]=e.data,this.#M[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#l.forEach(function(f){let t=f>>7;c==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:c,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let c=n[0],f=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(c,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#F.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#S.run(n,c,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#S.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,c)=>{this.#U.run(n,c,e)},67:(e,n,c)=>{this.#w.run(n,c,e)},68:(e,n,c)=>{this.#V.run(n,c,e)},71:(e,n,c)=>{this.#K.run(n,c,e)},126:(e,n,c)=>{this.#I.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#X.run(n,c,e)}};#I;#X;#w;#S;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#c.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,c=this.#e.subarray(n,n+u.cc);return c[d[0]]=c[d[0]]||this.#H,c[d[32]]=c[d[32]]||this.#y,c}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[c])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,c=this;return c.#l.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&c.#o[f]>0&&n.set(r,{v:c.#o[f],s:c.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#C}}getLetter(){return{text:this.#T,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#l.forEach(function(n){let c=Math.floor(n/128);e.#o[n]>e.#x[c]&&(e.#x[c]=e.#o[n])}),this.#x}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,f){e[f]=Math.floor(c*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,c,f){let t=e||this.#H,a=n,r=c||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),o=s*u.cmt,l="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(l+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#M[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,f=3200){let t=this,a;t.#T=" ".repeat(c),e.forEach(r=>{t.#T+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#T=t.#T.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let c=this.#R[n];if(c){if(U.indexOf(c)>=0)return this.#e[e*u.cc+d[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#c.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#o.fill(0),this.#l.fill(0),this.#x.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#T="",this.#C=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,c,f){f[c]=c}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#M.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=c,this.#p=0,this.#H=se[0][c],this.#y=se[1][c];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[c]);switch(this.initOnReset,c){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#c[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(c){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(f=>{e.channel=f,c=!0,this.#j[e.type].call(this,e)}),c||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${ce(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${ce(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#T=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#T.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let o=s+t[0];([r,r,r,r,l=>{this.#b=l*129/16383*100},l=>{},l=>{}][o]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,o=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${R[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][r+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,o=`XG CH${r+1} `,l=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(l):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(l):i<116?console.debug(`${o}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(l):i<120?console.debug(`${o}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(l)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((o,l)=>{let h=l+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,o)=>{let l=r+o;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let o="",l=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):l+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(o)}`,e.#Y=s+Math.ceil(l/2)+e.#Q,k()&&console.debug(`${i}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((l,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(l>>6-$&1)<<7;else o[s+7*b+p]=l})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,l)=>{let h=l>>3,b=l&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(o>>6-p&1)<<7;else s[i+7*h+b]=o})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*i,l=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${h}`)},()=>{console.debug(`${l} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#S=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let o=Math.floor(s/16),l=s%16,h=(l*3+o)*7,b=7,p=0;for(h-=l*5,o==2&&(b=2);p>6-p&1,p++})}),this.#T.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,l)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let o=ee(e.#g.subarray(10,12),s,i);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(o,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#S=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#S=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,r){let i=t[0],s=u.cc*a,o=u.rpn*a,l=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${l}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${h}`)},()=>{console.debug(`${l}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+o]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+o-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#T.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),o=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[o+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=i},()=>{i<31&&(e.#e[o+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(i)},()=>{e.#e[o+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` +122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${ce(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${ce(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#S=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#S.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let o=s+t[0];([r,r,r,r,l=>{this.#b=l*129/16383*100},l=>{},l=>{}][o]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,o=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${R[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][r+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#C=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,o=`XG CH${r+1} `,l=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(l):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(l):i<116?console.debug(`${o}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(l):i<120?console.debug(`${o}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(l)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((o,l)=>{let h=l+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,o)=>{let l=r+o;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let o="",l=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):l+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(o)}`,e.#Y=s+Math.ceil(l/2)+e.#Q,k()&&console.debug(`${i}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((l,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(l>>6-$&1)<<7;else o[s+7*b+p]=l})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,l)=>{let h=l>>3,b=l&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(o>>6-p&1)<<7;else s[i+7*h+b]=o})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*i,l=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${h}`)},()=>{console.debug(`${l} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#C=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let o=Math.floor(s/16),l=s%16,h=(l*3+o)*7,b=7,p=0;for(h-=l*5,o==2&&(b=2);p>6-p&1,p++})}),this.#S.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,l)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let o=ee(e.#g.subarray(10,12),s,i);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(o,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#C=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#C=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,r){let i=t[0],s=u.cc*a,o=u.rpn*a,l=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${l}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${h}`)},()=>{console.debug(`${l}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+o]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+o-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#S.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),o=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[o+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=i},()=>{i<31&&(e.#e[o+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(i)},()=>{e.#e[o+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` ${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` -${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,o){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),h=l*u.cc;switch(i%12){case 0:{r<128?(e.setChType(l,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[l]=r):(e.setChType(l,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[l]=ne[r-128]),r>0&&(e.#c[l]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[l*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[l*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[l]=r,(b!=l||p)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),this.#T.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((o,l)=>{let h=l+s;e.#A[h+(i-1)*16]=o,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#x[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=o+40},()=>{e.#s[i*u.rpn+1]=o+14},()=>{e.#s[i*u.rpn]=o},!1,()=>{e.#e[u.cc*i+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=o},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[i]=1),t.subarray(2).forEach((o,l)=>{let h=l+s;h<14&&(e.#k[(i-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,o)=>{let l=o+i;e.#A[l]=s;let h=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let l=o+i,h=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o,h=Math.floor(l/8),b=l&7,p=h*8;e.#q[l]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME -000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o;l>1)*u.cmt+l]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,o=function(l,h){e.#f[h-12]=l,s=!0};t.subarray(2).forEach((l,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,o,o,o,o,o,o,o,o,o,()=>{e.#b=l}][b]||(()=>{}))(l,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#M=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{[s,s,s,s,()=>{e.#b=o*129/16383*100},()=>o-64,()=>o-64,()=>{},()=>{},()=>{}][r+l]()}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],o=`NS5R CH${r+1} `;t.subarray(2).forEach((l,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=l||121},()=>{e.#e[i+d[32]]=l},()=>{e.#r[r]=l}][b]():b<8||(b<14?[()=>{let p=e.chRedir(l,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!l},()=>{e.setChType(r,l,g.ns5r),console.debug(`${o}type: ${O[l]}`)},()=>{e.#s[u.rpn*r+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=l},()=>{e.#e[i+d[11]]=l},()=>{},()=>{},()=>{e.#e[i+d[10]]=l||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=l},()=>{e.#e[i+d[91]]=l},()=>{e.#e[i+d[76]]=l},()=>{e.#e[i+d[77]]=l},()=>{e.#e[i+d[78]]=l},()=>{e.#e[i+d[74]]=l},()=>{e.#e[i+d[71]]=l},()=>{e.#e[i+d[73]]=l},()=>{e.#e[i+d[75]]=l},()=>{e.#e[i+d[72]]=l}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=l},()=>{e.#e[i+d[65]]=l}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#S=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),o=4;s.forEach(function(l,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),o=s*u.cc;switch(i%92){case 0:{e.#e[o+d[0]]=r||121;break}case 1:{e.#e[o+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#c[s]=1);break}case 3:{let l=e.chRedir(r,a,!0);e.#f[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[o+d[7]]=r;break}case 11:{e.#e[o+d[11]]=r;break}case 14:{e.#e[o+d[10]]=r||128;break}case 19:{e.#e[o+d[93]]=r;break}case 20:{e.#e[o+d[91]]=r;break}case 84:{e.#e[o+d[65]]=r;break}case 85:{e.#e[o+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{o=h&127;break}case p==13:{l+=` +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,o){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),h=l*u.cc;switch(i%12){case 0:{r<128?(e.setChType(l,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[l]=r):(e.setChType(l,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[l]=ne[r-128]),r>0&&(e.#c[l]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[l*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[l*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[l]=r,(b!=l||p)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),this.#S.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((o,l)=>{let h=l+s;e.#A[h+(i-1)*16]=o,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#M[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=o+40},()=>{e.#s[i*u.rpn+1]=o+14},()=>{e.#s[i*u.rpn]=o},!1,()=>{e.#e[u.cc*i+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=o},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#M[i]=1),t.subarray(2).forEach((o,l)=>{let h=l+s;h<14&&(e.#k[(i-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,o)=>{let l=o+i;e.#A[l]=s;let h=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#M[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let l=o+i,h=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#M[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o,h=Math.floor(l/8),b=l&7,p=h*8;e.#q[l]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME +000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o;l>1)*u.cmt+l]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,o=function(l,h){e.#f[h-12]=l,s=!0};t.subarray(2).forEach((l,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,o,o,o,o,o,o,o,o,o,()=>{e.#b=l}][b]||(()=>{}))(l,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#T=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{[s,s,s,s,()=>{e.#b=o*129/16383*100},()=>o-64,()=>o-64,()=>{},()=>{},()=>{}][r+l]()}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],o=`NS5R CH${r+1} `;t.subarray(2).forEach((l,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=l||121},()=>{e.#e[i+d[32]]=l},()=>{e.#r[r]=l}][b]():b<8||(b<14?[()=>{let p=e.chRedir(l,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!l},()=>{e.setChType(r,l,g.ns5r),console.debug(`${o}type: ${O[l]}`)},()=>{e.#s[u.rpn*r+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=l},()=>{e.#e[i+d[11]]=l},()=>{},()=>{},()=>{e.#e[i+d[10]]=l||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=l},()=>{e.#e[i+d[91]]=l},()=>{e.#e[i+d[76]]=l},()=>{e.#e[i+d[77]]=l},()=>{e.#e[i+d[78]]=l},()=>{e.#e[i+d[74]]=l},()=>{e.#e[i+d[71]]=l},()=>{e.#e[i+d[73]]=l},()=>{e.#e[i+d[75]]=l},()=>{e.#e[i+d[72]]=l}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=l},()=>{e.#e[i+d[65]]=l}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#C=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),o=4;s.forEach(function(l,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),o=s*u.cc;switch(i%92){case 0:{e.#e[o+d[0]]=r||121;break}case 1:{e.#e[o+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#c[s]=1);break}case 3:{let l=e.chRedir(r,a,!0);e.#f[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[o+d[7]]=r;break}case 11:{e.#e[o+d[11]]=r;break}case 14:{e.#e[o+d[10]]=r||128;break}case 19:{e.#e[o+d[93]]=r;break}case 20:{e.#e[o+d[91]]=r;break}case 84:{e.#e[o+d[65]]=r;break}case 85:{e.#e[o+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{o=h&127;break}case p==13:{l+=` ${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{l+=` -${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let o=0;o<8;o++)a[i*8+o]=r>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,o=u.rpn*i,l=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=l):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=l},()=>{e.#c[i]=l},()=>{e.#e[s+d[10]]=l},()=>{e.#s[o+3]=l+40},()=>{e.#s[o+1]=l>>1,e.#s[o+2]=l&1},()=>{e.#e[s+d[91]]=l?127:0},()=>{},()=>{e.#e[s+d[74]]=l},()=>{e.#e[s+d[73]]=l},()=>{e.#e[s+d[72]]=l}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,l=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#c[s]=i},()=>{e.#e[o+d[7]]=i},()=>{e.#e[o+d[10]]=i},()=>{e.#e[o+d[91]]=i?127:0},()=>{e.#s[l+3]=i+40},()=>{e.#s[l+1]=i},()=>{e.#s[l]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(i,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,l)=>{([()=>{e.#b=o*12900/16383}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,o=t[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#c[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#c[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+o&3]||(()=>{}))()})})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; +${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let o=0;o<8;o++)a[i*8+o]=r>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,o=u.rpn*i,l=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=l):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=l},()=>{e.#c[i]=l},()=>{e.#e[s+d[10]]=l},()=>{e.#s[o+3]=l+40},()=>{e.#s[o+1]=l>>1,e.#s[o+2]=l&1},()=>{e.#e[s+d[91]]=l?127:0},()=>{},()=>{e.#e[s+d[74]]=l},()=>{e.#e[s+d[73]]=l},()=>{e.#e[s+d[72]]=l}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,l=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#c[s]=i},()=>{e.#e[o+d[7]]=i},()=>{e.#e[o+d[10]]=i},()=>{e.#e[o+d[91]]=i?127:0},()=>{e.#s[l+3]=i+40},()=>{e.#s[l+1]=i},()=>{e.#s[l]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(i,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,l)=>{([()=>{e.#b=o*12900/16383}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,o=t[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#c[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#c[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+o&3]||(()=>{}))()})}),this.#S.add([0,72,18,0,0,0,0],(t,a,r)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; diff --git a/dist/state_skim.mjs b/dist/state_skim.mjs index 8bad0a01..1027aa09 100644 --- a/dist/state_skim.mjs +++ b/dist/state_skim.mjs @@ -138,9 +138,9 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[2]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` -`).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],B=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],I={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},H=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#I=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#H=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],H[i][0]),H[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#G.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#B.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#G;#B;#J;buildRchTree(){let e=[];this.#I.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG -0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#H.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#I.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#H.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=B[0][s],this.#u=B[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${I[e.type]?I[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[2]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` +`).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],I=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],B={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},H=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#B=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#H=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],H[i][0]),H[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#G.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#I.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#G;#I;#J;buildRchTree(){let e=[];this.#B.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG +0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#H.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#B.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#H.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=I[0][s],this.#u=I[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${B[e.type]?B[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,4 +148,4 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#c[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#i=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#i=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#i=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#i=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#i=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let s=t.slice(2).split(":");switch(s[0]){case"hd":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][r]}: ${i}`)});break}case"ln":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][r]}: ${i}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#i?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#c[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#c[3]=function(t,s){s<1&&this.#w<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#c[4]=function(t,s){this.#s.unshift(`${_(this.#w,""," ")}Instrmnt: ${t}`)},this.#c[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#c[6]=function(t){this.#s.unshift(`${_(this.#w,""," ")}C.Marker: ${t}`)},this.#c[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#c[32]=function(t){this.#w=t[0]+1},this.#c[33]=function(t,s){console.debug(`Track ${s} requests to get assigned to output ${t}.`),e.#S[s]=t+1},this.#c[81]=function(t,s){e.#_=t/1e3},this.#c[127]=function(t,s){e.#R.run(t,s)},this.#R.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#R.add([67,0,1],function(t,s){e.#S[s]=t[0]+1}),this.#P=new w,this.#N=new w,this.#v=new w,this.#M=new w,this.#O=new w,this.#G=new w,this.#B=new w,this.#P.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#i=e.#i||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#N.add([4,1],t=>{e.#T=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#v.add([76,0,0],t=>{switch(t[0]){case 126:{e.switchMode("xg",!0),e.#i=!1,console.info("MIDI reset: XG");break}}}).add([76,6,0],t=>{let s=t[0];s<64?(e.#a=" ".repeat(s),e.#b=Date.now()+3200,t.subarray(1).forEach(function(i){e.#a+=String.fromCharCode(i)}),e.#a=e.#a.padEnd(32," ")):e.#b=Date.now()}).add([76,7,0],t=>{let s=t[0];e.#p=Date.now()+3200,e.#h.fill(0);let i=t.subarray(1);for(let r=0;r>6-f&1,f++})}),this.#v.add([43,7,0],(t,s,i)=>{e.#a=" ".repeat(offset),e.#b=Date.now()+3200,t.subarray(1).forEach(function(r){e.#a+=String.fromCharCode(r)}),e.#a=e.#a.padEnd(32," ")}).add([43,7,1],(t,s,i)=>{e.#p=Date.now()+3200,e.#h.fill(0),t.forEach(function(r,n){let a=Math.floor(n/16),l=n%16,c=(l*3+a)*7,u=7,f=0;for(c-=l*5,a==2&&(u=2);f>6-f&1,f++})}),this.#M.add([66,18,0,0,127],(t,s,i)=>{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#u=3,e.#i=!1,e.#k.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,s,i)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#i=!1,e.#k.fill(0),console.info("MIDI reset: GS");break}}}).add([69,18,16],t=>{switch(t[0]){case 0:{e.#b=Date.now()+3200;let s=t[1];e.#a=" ".repeat(s),t.subarray(2).forEach(function(i){i<128&&(e.#a+=String.fromCharCode(i))});break}case 32:{e.#p=Date.now()+3200,t[1]==0&&(e.#m=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p=Date.now()+3200,e.#g[t[0]-1]?.length||(e.#g[t[0]-1]=new Uint8Array(256));let s=e.#g[t[0]-1],i=t[1];s.fill(0);let r=t.subarray(2);for(let n=0;n>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}}),this.#M.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#i=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,32],t=>{e.switchMode("mt32");let s=t[1],i=" ".repeat(s);t.subarray(2).forEach(r=>{r>31&&(i+=String.fromCharCode(r))}),e.#a=i.padStart(20," "),e.#b=Date.now()+3200}).add([22,18,82],(t,s)=>{let i=e.chRedir(0,s,!0);for(let r=0;r<16;r++)e.#r.ano(i+r),r&&r<10&&(e.#y[i+r]=mt32DefProg[r-1]);console.info("MT-32 alt reset complete.")}),this.#O.add([66,0],(t,s)=>{e.switchMode("ns5r",!0),e.#i=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,s)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#i=!1}).add([66,18,0,0],(t,s)=>{switch(t[0]){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#i=!1;break}}}).add([66,18,8,0],(t,s)=>{}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let s=new Uint8Array(5760);korgFilter(t,(i,r,n)=>{if(r<720)for(let a=0;a<8;a++)s[r*8+a]=i>>7-a&1}),e.dispatchEvent("screen",{type:"ns5r",data:s})}).add([76],(t,s,i)=>{e.#O.run([66,...t],s,i)}),this.#G.add([16,0,8,0],(t,s,i)=>{let r=(t[2]<<4)+t[3],n="K11 ";([()=>{e.switchMode("k11",!0),e.#i=!1,e.#u=r?4:0,console.info("MIDI reset: GMega/K11")}][t[0]]||(()=>{}))()}),this.#B.add([66,93,64],(t,s,i)=>{let r=t[2];switch(t[0]){case 0:{switch(t[1]){case 127:{e.switchMode("sg",!0);break}}break}}})}};export{Ve as OctaviaDevice,o as allocated,h as ccToPos}; +122 006 000 `),this.#c[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#i=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#i=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#i=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#i=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#i=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let s=t.slice(2).split(":");switch(s[0]){case"hd":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][r]}: ${i}`)});break}case"ln":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][r]}: ${i}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#i?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#c[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#c[3]=function(t,s){s<1&&this.#w<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#c[4]=function(t,s){this.#s.unshift(`${_(this.#w,""," ")}Instrmnt: ${t}`)},this.#c[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#c[6]=function(t){this.#s.unshift(`${_(this.#w,""," ")}C.Marker: ${t}`)},this.#c[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#c[32]=function(t){this.#w=t[0]+1},this.#c[33]=function(t,s){console.debug(`Track ${s} requests to get assigned to output ${t}.`),e.#S[s]=t+1},this.#c[81]=function(t,s){e.#_=t/1e3},this.#c[127]=function(t,s){e.#R.run(t,s)},this.#R.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#R.add([67,0,1],function(t,s){e.#S[s]=t[0]+1}),this.#P=new w,this.#N=new w,this.#v=new w,this.#M=new w,this.#O=new w,this.#G=new w,this.#I=new w,this.#P.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#i=e.#i||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#N.add([4,1],t=>{e.#T=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#v.add([76,0,0],t=>{switch(t[0]){case 126:{e.switchMode("xg",!0),e.#i=!1,console.info("MIDI reset: XG");break}}}).add([76,6,0],t=>{let s=t[0];s<64?(e.#a=" ".repeat(s),e.#b=Date.now()+3200,t.subarray(1).forEach(function(i){e.#a+=String.fromCharCode(i)}),e.#a=e.#a.padEnd(32," ")):e.#b=Date.now()}).add([76,7,0],t=>{let s=t[0];e.#p=Date.now()+3200,e.#h.fill(0);let i=t.subarray(1);for(let r=0;r>6-f&1,f++})}),this.#v.add([43,7,0],(t,s,i)=>{e.#a=" ".repeat(offset),e.#b=Date.now()+3200,t.subarray(1).forEach(function(r){e.#a+=String.fromCharCode(r)}),e.#a=e.#a.padEnd(32," ")}).add([43,7,1],(t,s,i)=>{e.#p=Date.now()+3200,e.#h.fill(0),t.forEach(function(r,n){let a=Math.floor(n/16),l=n%16,c=(l*3+a)*7,u=7,f=0;for(c-=l*5,a==2&&(u=2);f>6-f&1,f++})}),this.#M.add([66,18,0,0,127],(t,s,i)=>{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#u=3,e.#i=!1,e.#k.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,s,i)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#i=!1,e.#k.fill(0),console.info("MIDI reset: GS");break}}}).add([69,18,16],t=>{switch(t[0]){case 0:{e.#b=Date.now()+3200;let s=t[1];e.#a=" ".repeat(s),t.subarray(2).forEach(function(i){i<128&&(e.#a+=String.fromCharCode(i))});break}case 32:{e.#p=Date.now()+3200,t[1]==0&&(e.#m=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p=Date.now()+3200,e.#g[t[0]-1]?.length||(e.#g[t[0]-1]=new Uint8Array(256));let s=e.#g[t[0]-1],i=t[1];s.fill(0);let r=t.subarray(2);for(let n=0;n>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}}),this.#M.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#i=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,32],t=>{e.switchMode("mt32");let s=t[1],i=" ".repeat(s);t.subarray(2).forEach(r=>{r>31&&(i+=String.fromCharCode(r))}),e.#a=i.padStart(20," "),e.#b=Date.now()+3200}).add([22,18,82],(t,s)=>{let i=e.chRedir(0,s,!0);for(let r=0;r<16;r++)e.#r.ano(i+r),r&&r<10&&(e.#y[i+r]=mt32DefProg[r-1]);console.info("MT-32 alt reset complete.")}),this.#O.add([66,0],(t,s)=>{e.switchMode("ns5r",!0),e.#i=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,s)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#i=!1}).add([66,18,0,0],(t,s)=>{switch(t[0]){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#i=!1;break}}}).add([66,18,8,0],(t,s)=>{}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let s=new Uint8Array(5760);korgFilter(t,(i,r,n)=>{if(r<720)for(let a=0;a<8;a++)s[r*8+a]=i>>7-a&1}),e.dispatchEvent("screen",{type:"ns5r",data:s})}).add([76],(t,s,i)=>{e.#O.run([66,...t],s,i)}),this.#G.add([16,0,8,0],(t,s,i)=>{let r=(t[2]<<4)+t[3],n="K11 ";([()=>{e.switchMode("k11",!0),e.#i=!1,e.#u=r?4:0,console.info("MIDI reset: GMega/K11")}][t[0]]||(()=>{}))()}),this.#I.add([66,93,64],(t,s,i)=>{let r=t[2];switch(t[0]){case 0:{switch(t[1]){case 127:{e.switchMode("sg",!0);break}}break}}})}};export{Ve as OctaviaDevice,o as allocated,h as ccToPos}; diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index b735add5..2d5fbc75 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -1,5 +1,5 @@ -var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),m=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var E,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(E=h[o])!=null&&E.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(E){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:E}),d++,d>4294967295&&(d=0)}else b.push(E),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var E=b.shift();s.postMessage(E)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(E){E.c==o?E.i!=f&&s.dispatchEvent(u("message",E.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(E.c,"."))};var v={};this.dispatchEvent=function(E){var x,A;if(Object.defineProperty(E,"target",{value:s}),Object.defineProperty(E,"currentTarget",{value:s}),(x=v[E.type])!=null&&x.length)for(var V=v[E.type],ae=0;ae-1&&v[E].splice(ae,1)}!((V=v[E])!=null&&V.length)&&v[E].constructor&&delete v[E]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||E>127&&E<160)throw new RangeError(`Invalid code point: ${E}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof mt<"u")mt.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){m(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){m(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=0,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=3);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=3;break}case 97:{i="VL:",s=3,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=3;break}case 100:{i="AN",a[2]>63&&(f=63),s=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[2]][s]-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` -`).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);R();R();var Ge,Ot,Pt=(Ot=class{constructor(){m(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Dt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Pt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Dt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Dt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;ye in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),m=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var E,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(E=h[o])!=null&&E.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(E){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:E}),d++,d>4294967295&&(d=0)}else b.push(E),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var E=b.shift();s.postMessage(E)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(E){E.c==o?E.i!=f&&s.dispatchEvent(u("message",E.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(E.c,"."))};var v={};this.dispatchEvent=function(E){var x,A;if(Object.defineProperty(E,"target",{value:s}),Object.defineProperty(E,"currentTarget",{value:s}),(x=v[E.type])!=null&&x.length)for(var V=v[E.type],se=0;se-1&&v[E].splice(se,1)}!((V=v[E])!=null&&V.length)&&v[E].constructor&&delete v[E]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||E>127&&E<160)throw new RangeError(`Invalid code point: ${E}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof mt<"u")mt.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){m(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){m(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=0,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=3);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=3;break}case 97:{i="VL:",s=3,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=3;break}case 100:{i="AN",a[2]>63&&(f=63),s=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[2]][s]-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` +`).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);R();R();var Ge,Ot,Dt=(Ot=class{constructor(){m(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Pt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Dt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Pt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Pt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;y=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});R();var We=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ye=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],gr=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],_e=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],It=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],At=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},Ut=function(u){return u>105?gr[u-106]:u>100?u*1.1-100:u/10},Lt=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),ut={};`hi*, @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ie=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],mr=[12,13,16,17,18,19],Er=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},P,j,ne,fe,W,de,Yt,U,H,O,p,ue,D,L,ee,B,G,we,oe,Ce,S,Fe,et,ce,me,te,Ve,Ee,Q,ve,Z,X,pe,Xe,ze,le,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,J,he,ge,Pe,De,Ie,Wt,oa=(Wt=class extends it{constructor(){super();m(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);m(this,P,0);m(this,j,0);m(this,ne,0);m(this,fe,new Array(11));m(this,U,new Uint8Array($.ch));m(this,H,new Uint8Array($.ch));m(this,O,new Uint8Array($.ch));m(this,p,new Uint8Array($.ch*$.cc));m(this,ue,new Uint8Array($.ace));m(this,D,new Uint8Array($.ch));m(this,L,new Uint8Array($.ch*$.nn));m(this,ee,new Uint8Array($.ch));m(this,B,new Uint16Array($.pl));m(this,G,new Uint8Array($.pl));m(this,we,new Int16Array($.ch));m(this,oe,new Uint8Array($.ch));m(this,Ce,0);m(this,S,new Uint8Array($.ch*$.rpn));m(this,Fe,new Int8Array($.ch*qt.length));m(this,et,new Uint8Array($.drm*$.dpn*$.dnc));m(this,ce,new Uint8Array($.ch));m(this,me,new Uint8Array(128));m(this,te,new Uint8Array($.cmt*8));m(this,Ve,new Uint8Array(1024));m(this,Ee,new Uint8Array($.cmt*64));m(this,Q,new Uint8Array($.efx*3));m(this,ve,0);m(this,Z,0);m(this,X,100);m(this,pe,0);m(this,Xe,500);m(this,ze,0);m(this,le,"");m(this,ke,0);m(this,Ke,0);m(this,re,!0);m(this,I,!1);m(this,tt,void 0);m(this,$t,new Uint8Array(2));m(this,T,[]);m(this,be,new Uint8Array($.ch));m(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");m(this,_,[]);m(this,Te,void 0);m(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,ee)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,oe)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});m(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,P)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,ee)[n]=1,t(this,N).ano(n);return}case 127:{t(this,ee)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(mr.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(Y()&&console.debug(`${$e[t(this,P)]}, CH${n+1}: ${e.data[1]}`),t(this,P)==0?e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,P)==M.gs?e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,P)==M.gm?e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,P)==M.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,P)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,P))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,P)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=Er.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,P)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,P)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,D)[n]=e.data,t(this,ce)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});m(this,ot,{64:(e,n,h)=>{t(this,Pe).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,he).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,he).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,J).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,De).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});m(this,Re,void 0);m(this,Oe,void 0);m(this,J,void 0);m(this,he,void 0);m(this,ge,void 0);m(this,Pe,void 0);m(this,De,void 0);m(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new se),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ne=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],mr=[12,13,16,17,18,19],Er=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},D,j,oe,fe,W,de,Yt,U,H,O,p,ue,P,L,ee,B,G,we,ce,Ce,S,Fe,et,le,me,te,Ve,Ee,Q,ve,Z,X,pe,Xe,ze,he,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,J,ae,ge,De,Pe,Ie,Wt,oa=(Wt=class extends it{constructor(){super();m(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);m(this,D,0);m(this,j,0);m(this,oe,0);m(this,fe,new Array(11));m(this,U,new Uint8Array($.ch));m(this,H,new Uint8Array($.ch));m(this,O,new Uint8Array($.ch));m(this,p,new Uint8Array($.ch*$.cc));m(this,ue,new Uint8Array($.ace));m(this,P,new Uint8Array($.ch));m(this,L,new Uint8Array($.ch*$.nn));m(this,ee,new Uint8Array($.ch));m(this,B,new Uint16Array($.pl));m(this,G,new Uint8Array($.pl));m(this,we,new Int16Array($.ch));m(this,ce,new Uint8Array($.ch));m(this,Ce,0);m(this,S,new Uint8Array($.ch*$.rpn));m(this,Fe,new Int8Array($.ch*qt.length));m(this,et,new Uint8Array($.drm*$.dpn*$.dnc));m(this,le,new Uint8Array($.ch));m(this,me,new Uint8Array(128));m(this,te,new Uint8Array($.cmt*8));m(this,Ve,new Uint8Array(1024));m(this,Ee,new Uint8Array($.cmt*64));m(this,Q,new Uint8Array($.efx*3));m(this,ve,0);m(this,Z,0);m(this,X,100);m(this,pe,0);m(this,Xe,500);m(this,ze,0);m(this,he,"");m(this,ke,0);m(this,Ke,0);m(this,re,!0);m(this,I,!1);m(this,tt,void 0);m(this,$t,new Uint8Array(2));m(this,T,[]);m(this,be,new Uint8Array($.ch));m(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");m(this,_,[]);m(this,Te,void 0);m(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,ee)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,ce)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});m(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,D)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,ee)[n]=1,t(this,N).ano(n);return}case 127:{t(this,ee)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(mr.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(Y()&&console.debug(`${$e[t(this,D)]}, CH${n+1}: ${e.data[1]}`),t(this,D)==0?e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,D)==M.gs?e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,D)==M.gm?e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,D)==M.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,D)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,D))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,D)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=Er.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,D)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,D),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,D)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,P)[n]=e.data,t(this,le)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});m(this,ot,{64:(e,n,h)=>{t(this,De).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,ae).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,ae).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,J).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,Pe).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});m(this,Re,void 0);m(this,Oe,void 0);m(this,J,void 0);m(this,ae,void 0);m(this,ge,void 0);m(this,De,void 0);m(this,Pe,void 0);m(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new ie),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,10 +147,10 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,_)[1]=function(r){switch(r.slice(0,2)){case"@I":{w(this,I,!0),t(this,T).unshift(`Kar.Info: ${r.slice(2)}`);break}case"@K":{w(this,I,!0),t(this,T).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${r.slice(2)}`);break}case"@L":{w(this,I,!0),t(this,T).unshift(`Language: ${r.slice(2)}`);break}case"@T":{w(this,I,!0),t(this,T).unshift(`Ka.Title: ${r.slice(2)}`);break}case"@V":{w(this,I,!0),t(this,T).unshift(`Kara.Ver: ${r.slice(2)}`);break}case"XF":{let a=r.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,T).unshift(`XGF_Data: ${r}`)}break}default:t(this,I)?r[0]=="\\"?t(this,T).unshift(`@ ${r.slice(1)}`):r[0]=="/"?t(this,T).unshift(r.slice(1)):t(this,T)[0]+=r:(t(this,T)[0]=r,t(this,T).unshift(""))}},t(this,_)[2]=function(r){t(this,T).unshift(`Copyrite: ${r}`)},t(this,_)[3]=function(r,a){a<1&&t(this,pe)<1&&t(this,T).unshift(`TrkTitle: ${r}`)},t(this,_)[4]=function(r,a){t(this,T).unshift(`${Qt(t(this,pe),""," ")}Instrmnt: ${r}`)},t(this,_)[5]=function(r){r.trim()==""?t(this,T).unshift(""):t(this,T)[0]+=`${r}`},t(this,_)[6]=function(r){t(this,T).unshift(`${Qt(t(this,pe),""," ")}C.Marker: ${r}`)},t(this,_)[7]=function(r){t(this,T).unshift(`CuePoint: ${r}`)},t(this,_)[32]=function(r){w(this,pe,r[0]+1)},t(this,_)[33]=function(r,a){console.debug(`Track ${a} requests to get assigned to output ${r}.`),t(e,Se)[a]=r+1},t(this,_)[81]=function(r,a){w(e,Xe,r/1e3)},t(this,_)[127]=function(r,a){t(e,Te).run(r,a)},t(this,Te).default=function(r){console.warn(`Unrecognized sequencer-specific byte sequence: ${r}`)},t(this,Te).add([67,0,1],function(r,a){t(e,Se)[a]=r[0]+1}),w(this,Re,new se("universal non-realtime")),w(this,Oe,new se("universal realtime")),w(this,J,new se("Yamaha")),w(this,he,new se("Roland")),w(this,ge,new se("Korg")),w(this,Pe,new se("Kawai")),w(this,De,new se("Akai")),w(this,Ie,new se("Casio"));let n=function(r){console.info(`Unrecognized SysEx in "${this.name}" set.`,r)};t(this,Re).default=n,t(this,Oe).default=n,t(this,J).default=n,t(this,he).default=n,t(this,ge).default=n,t(this,Pe).default=n,t(this,De).default=n,t(this,Ie).default=n,t(this,Re).add([9],r=>{e.switchMode(["gm","?","g2"][r[0]-1],!0),w(e,I,t(e,I)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][r[0]-1]}`),r[0]==2&&e.init()}),t(this,Oe).add([4,1],r=>{w(e,X,((r[1]<<7)+r[0])/16383*100)}).add([4,3],r=>((r[1]<<7)+r[0]-8192)/8192).add([4,4],r=>r[1]-64),t(this,J).add([76,0,0],r=>{switch(r[0]){case 125:{console.info(`XG drum setup reset: ${r}`);break}case 126:{e.switchMode("xg",!0),w(e,I,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,s)=>{a[s]=i};if(r.subarray(1).forEach((i,s)=>{let f=s+r[0];([o,o,o,o,l=>{w(this,X,l*129/16383*100)},l=>{},l=>{}][f]||(()=>{}))(i,s)}),r[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],r=>{let a="XG ";r[0]<32?(a+="reverb ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${At(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][r[0]+i]||function(){console.warn(`Unknown XG reverb address: ${r[0]}.`)})(o)})):r[0]<64?(a+="chorus ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${It[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Ut(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${_e[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${_e[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][r[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${r[0]}.`)})(o)})):r[0]<86?(a+="variation ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][r[0]-64+i]||function(){})(o)})):r[0]<97?(a+="variation ",r.subarray(1).forEach((o,i)=>{[s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},s=>{console.debug(`${a}to chorus: ${q(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][r[0]-86+i](o)})):r[0]>111&&r[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${r[0]}`)}).add([76,2,64],r=>{r.subarray(1).forEach((a,o)=>{let i=o+r[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,f=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][f]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][f]()}})}).add([76,3],r=>{let a=r[0],o=r[1],i=`XG Insertion ${r[0]+1} `;r.subarray(2).forEach((s,f)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${We[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][o+f]||function(){})(s)})}).add([76,6,0],r=>{let a=r[0];a<64?e.setLetterDisplay(r.subarray(1),"XG letter display",a):w(e,ke,Date.now())}).add([76,7,0],r=>{let a=r[0];w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0);let o=r.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=$.cc*o,f=`XG CH${o+1} `,l=`Unknown XG part address ${i}.`;r.subarray(2).forEach((d,b)=>{i<1?console.debug(l):i<41?([()=>{t(e,p)[s+g[0]]=d},()=>{t(e,p)[s+g[32]]=d},()=>{t(e,D)[o]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!d},()=>{},()=>{e.setChType(o,d,M.xg),console.debug(`${f}type: ${Ye[d]||d}`)},()=>{t(e,S)[$.rpn*o+3]=d},!1,!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{t(e,p)[s+g[128]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[76]]=d},()=>{t(e,p)[s+g[77]]=d},()=>{t(e,p)[s+g[78]]=d},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},()=>{t(e,p)[s+g[73]]=d},()=>{t(e,p)[s+g[75]]=d},()=>{t(e,p)[s+g[72]]=d}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(t(e,p)[s+g[[5,65][i&1]]]=d):i<114?console.debug(l):i<116?console.debug(`${f}EQ ${["bass","treble"][i&1]} gain: ${d-64}dB`):i<118?console.debug(l):i<120?console.debug(`${f}EQ ${["bass","treble"][i&1]} freq: ${d}`):console.debug(l)})}).add([76,9],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=`PLG-150VL CH${o+1} `;r.subarray(2).forEach((f,l)=>{let d=l+i;switch(d){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][f]}`);break}case 0:case 27:case 28:break;default:if(d<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][d-3>>1];d&1?d<23?(console.debug(`${s}${b} control source: ${Nt(f)}`),f&&f<96&&e.allocateAce(f)):console.debug(`${s}${b} scale break point: ${f}`):console.debug(`${s}${b} depth: ${f-64}`)}}})}).add([76,10],r=>{}).add([76,16],r=>{}).add([76,17,0,0],r=>{}).add([76,112],r=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][r[0]]} for CH${r[2]+1}.`)}).add([73,0,0],(r,a)=>{let o=r[0],i="MU1000 System: ";r.subarray(1).forEach((s,f)=>{let l=o+f;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(w(e,Z,s?126:0),console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,re,!!s),console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(r,a)=>{let o=r[0],i=`MU1000 RS${t(e,re)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let s=e.chRedir(0,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(r[1]<<5,a,!0);t(e,re)&&e.dispatchEvent("channelmin",s),t(e,re)&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,re)){let s=e.chRedir(o-16+(t(e,Ke)<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(o<36){let s=e.chRedir(o-32<<4,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),w(e,Ke,o-32)),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=`PLG-100SG CH${o+1} `,s=Date.now();if(r[1]==0){let f="",l=0;r.subarray(2).forEach((d,b)=>{b%2==0?f+=Lt[d]||d.toString().padStart("0"):l+=d*13}),s>=t(e,ze)&&t(e,T).unshift("SG Lyric: "),t(e,T)[0]+=`${Bt(f)}`,w(e,ze,s+Math.ceil(l/2)+t(e,Xe)),Y()&&console.debug(`${i}vocals: ${f}`)}else console.warn(`Unknown PLG-100SG data: ${r}`)}),t(this,J).add([76,48],r=>{}).add([76,49],r=>{}).add([76,50],r=>{}).add([76,51],r=>{}),t(this,J).add([89,0],(r,a,o)=>{if(e.eprom){let i=r[0],s=(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let f=e.eprom.data;r.subarray(4).forEach((l,d)=>{let b=d>>3,y=d&7;if(y==7)for(let k=0;k<7;k++)f[s+7*b+k]+=(l>>6-k&1)<<7;else f[s+7*b+y]=l})}}).add([89,1],(r,a,o)=>{let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3];Y()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(r,a,o)=>{if(e.eprom){let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;r.subarray(4).forEach((f,l)=>{let d=l>>3,b=l&7;if(b==7)for(let y=0;y<7;y++)s[i+7*d+y]+=(f>>6-y&1)<<7;else s[i+7*d+b]=f})}}).add([89,3],(r,a,o)=>{}),t(this,J).add([39,48],(r,a,o)=>{}).add([43,0,0],(r,a,o)=>{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,()=>{w(this,X,f*129/16383*100)},()=>f-64,()=>f||128,()=>f,()=>f,()=>{console.debug(`TG300 variation on cc${f}.`)}][d](f,d)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}).add([43,1,0],(r,a,o)=>{}).add([43,2],(r,a,o)=>{let i=e.chRedir(r[0],a,!0),s=r[1],f=$.cc*i,l=`TG300 CH${i+1} `;r.subarray(2).forEach((d,b)=>{b<5?([()=>{},()=>{t(e,p)[f+g[0]]=d},()=>{t(e,p)[f+g[32]]=d},()=>{t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][b+s]||(()=>{}))(d,b+s):b<21||(b<47?([()=>{t(e,ee)[i]=+!d},()=>{},()=>{},()=>{t(e,S)[$.rpn*i+3]=d},()=>{},()=>{t(e,p)[f+g[7]]=d},!1,!1,()=>{t(e,p)[f+g[10]]=d||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${d}`)},()=>{console.debug(`${l} AC2 at cc${d}`)},()=>{t(e,p)[f+g[128]]=d},()=>{t(e,p)[f+g[93]]=d},()=>{t(e,p)[f+g[91]]=d},()=>{t(e,p)[f+g[94]]=d},()=>{t(e,p)[f+g[76]]=d},()=>{t(e,p)[f+g[77]]=d},()=>{t(e,p)[f+g[74]]=d},()=>{t(e,p)[f+g[71]]=d},()=>{t(e,p)[f+g[73]]=d},()=>{t(e,p)[f+g[75]]=d},()=>{t(e,p)[f+g[72]]=d},()=>{t(e,p)[f+g[78]]=d}][b+s-21]||(()=>{}))(d,b+s):b<95||([()=>{t(e,p)[f+g[65]]=d},()=>{t(e,p)[f+g[5]]=d}][b+s-95]||(()=>{}))(d,b+s))})}).add([43,7,0],(r,a,o)=>{let i=r[0];e.setLetterDisplay(r.subarray(1),"TG300 letter display",i)}).add([43,7,1],(r,a,o)=>{w(e,j,0),w(e,ne,Date.now()+3200),t(e,W,de).fill(0),r.forEach(function(i,s){let f=Math.floor(s/16),l=s%16,d=(l*3+f)*7,b=7,y=0;for(d-=l*5,f==2&&(b=2);y>6-y&1,y++})}),t(this,he).add([66,18,0,0,127],(r,a,o)=>{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,Z,3),w(e,I,!1),t(e,be).fill(0),console.info(`GS system to ${["single","dual"][r[0]]} mode.`)}).add([66,18,64,0],(r,a,o)=>{switch(r[0]){case 127:{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,I,!1),t(e,be).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,b=>{w(this,X,b*129/16383*100)},b=>{},b=>{}][d](f,l)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,64,1],r=>{let a=r[0];if(a<16){let o="".padStart(a," ");r.subarray(1).forEach((i,s)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?r.subarray(1).forEach((o,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${pt[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${o}ms`)},()=>{console.info(`${s}type: ${Ht[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)},()=>{console.debug(`${s}to delay: ${q(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?r.subarray(1).forEach((o,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${Gt[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],r=>{let a="GS EQ ";r.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][r[0]+i]||function(){console.warn(`Unknown GS EQ address: ${r[0]+i}`)})()})}).add([66,18,64,3],r=>{let a="GS EFX ",o=function(i,s){let f=_t(t(e,Q).subarray(10,12),s,i);f&&console.debug(`${a}${bt(t(e,Q).subarray(10,12))} ${f}`)};r.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${bt(t(e,Q).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${q(i)}dB`)},()=>{console.debug(`${a}to chorus: ${q(i)}dB`)},()=>{console.debug(`${a}to delay: ${q(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][r[0]+s]||function(f,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,r[0]+s)})}).add([66,18,65],r=>{}).add([69,18,16],r=>{var a;switch(r[0]){case 0:{let o=r[1];e.setLetterDisplay(r.subarray(2),"GS display text",o);break}case 32:{w(e,ne,Date.now()+3200),r[1]==0&&w(e,j,Math.max(Math.min(r[2]-1,9),0));break}default:if(r[0]<11){t(e,j)>9&&w(e,j,0),w(e,ne,Date.now()+3200),(a=t(e,fe)[r[0]-1])!=null&&a.length||(t(e,fe)[r[0]-1]=new Uint8Array(256));let o=t(e,fe)[r[0]-1],i=r[1];o.fill(0);let s=r.subarray(2);for(let f=0;f>4-v&1,v++})}else console.warn(`Unknown GS display section: ${r[0]}`)}});let h=function(r,a,o){let i=r[0],s=$.cc*a,f=$.rpn*a,l=`GS CH${a+1} `;i<3?r.subarray(1).forEach((d,b)=>{[()=>{t(e,p)[s+g[0]]=d},()=>{t(e,D)[a]=d},()=>{let y=e.chRedir(d,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][i+b]()}):i<19||(i<44?r.subarray(1).forEach((d,b)=>{([()=>{t(e,ee)[a]=+!d},!1,()=>{e.setChType(a,d<<1,M.gs),console.debug(`${l}type: ${d?"drum ":"melodic"}${d||""}`)},()=>{t(e,S)[f+3]=d},!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${d}`)},()=>{console.debug(`${l}CC 2: cc${d}`)},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},!1,!1,()=>{t(e,S)[f+1]=d},()=>{t(e,S)[f+2]=d},()=>{t(e,p)[s+g[94]]=d}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},c=function(r,a){let o=r[0],i=`GS CH${a+1} `;o<2?r.subarray(1).forEach((s,f)=>{[()=>{t(e,p)[$.cc*a+g[32]]=s},()=>{}][o+f]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?r.subarray(1).forEach((s,f)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][o+f-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,he).add([66,18,64,16],(r,a)=>{h(r,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(r,a)=>{h(r,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(r,a)=>{h(r,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(r,a)=>{h(r,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(r,a)=>{h(r,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(r,a)=>{h(r,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(r,a)=>{h(r,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(r,a)=>{h(r,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(r,a)=>{h(r,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(r,a)=>{h(r,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(r,a)=>{h(r,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(r,a)=>{h(r,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(r,a)=>{h(r,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(r,a)=>{h(r,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(r,a)=>{h(r,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(r,a)=>{h(r,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(r,a)=>{c(r,e.chRedir(9,a,!0))}).add([66,18,64,65],(r,a)=>{c(r,e.chRedir(0,a,!0))}).add([66,18,64,66],(r,a)=>{c(r,e.chRedir(1,a,!0))}).add([66,18,64,67],(r,a)=>{c(r,e.chRedir(2,a,!0))}).add([66,18,64,68],(r,a)=>{c(r,e.chRedir(3,a,!0))}).add([66,18,64,69],(r,a)=>{c(r,e.chRedir(4,a,!0))}).add([66,18,64,70],(r,a)=>{c(r,e.chRedir(5,a,!0))}).add([66,18,64,71],(r,a)=>{c(r,e.chRedir(6,a,!0))}).add([66,18,64,72],(r,a)=>{c(r,e.chRedir(7,a,!0))}).add([66,18,64,73],(r,a)=>{c(r,e.chRedir(8,a,!0))}).add([66,18,64,74],(r,a)=>{c(r,e.chRedir(10,a,!0))}).add([66,18,64,75],(r,a)=>{c(r,e.chRedir(11,a,!0))}).add([66,18,64,76],(r,a)=>{c(r,e.chRedir(12,a,!0))}).add([66,18,64,77],(r,a)=>{c(r,e.chRedir(13,a,!0))}).add([66,18,64,78],(r,a)=>{c(r,e.chRedir(14,a,!0))}).add([66,18,64,79],(r,a)=>{c(r,e.chRedir(15,a,!0))}),t(this,ge).add([54,65],(r,a)=>{e.switchMode("x5d");let o=(r[1]<<7)+r[0],i=(r[3]<<7)+r[2],s=e.chRedir(o&15,a,!0),f=$.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-1,t(e,p)[f+g[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,D)[s]=i-101,t(e,p)[f+g[0]]=56):(e.setChType(s,e.CH_DRUMS,M.x5d),t(e,D)[s]=jt[i-229]||0,t(e,p)[f+g[0]]=62))},()=>{t(e,p)[f+g[7]]=i},()=>{i<31&&(t(e,p)[f+g[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,p)[f+g[93]]=Ze(i)},()=>{t(e,p)[f+g[91]]=Ze(i)},()=>{t(e,S)[s*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,S)[s*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,S)[s*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=82,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<16400){let y=b%164;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=90,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){if(b<13600){let y=b%136;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ie(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ie(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,D)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,D)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,he).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,me)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,me)[i-1<<4];if(b<3)if(t(e,ce)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,ce)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,te)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,me)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,me)[d-1<<4];if(y<3)if(t(e,ce)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,te)[(d-1)*$.cmt+b]=s),b<10&&(t(e,ce)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let E=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME -000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,Ee)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,le,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,D)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,D)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,ne,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,E=0,x=y0;)t(e,W,de)[k*32+y*7+(x-E)]=v&1,v=v>>1,E++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ie(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ie(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,D)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=88,s=0,f=0,l="MSB PRG LSB NME";ie(r,function(d,b){let y=b%126;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:break;case y==12:break;case y==13:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ie(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,Pe).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,Z,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,D)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,D)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,D)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,D)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,D)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,De).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,J).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,J).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,P),!0)},()=>{d&&(t(e,U)[i]=1),t(e,D)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,ee)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,Z))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,P)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,Z),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,Z)}return e}getChSource(){return t(this,H)}getChType(){return t(this,O)}setChType(e,n,h=t(this,P),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,D)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,ne)}}getLetter(){return{text:t(this,le),expire:t(this,ke)}}getMode(){return $e[t(this,P)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,oe)[h]&&(t(e,oe)[h]=t(e,L)[n])}),t(this,oe)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,Z);$e[t(this,P)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,P)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,Ee).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,D)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,P)]);if(t(this,ce)[e])switch(t(this,P)){case M.mt32:n.ending="~",n.name="",t(this,te).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,le," ".repeat(h)),e.forEach(o=>{w(r,le,t(r,le)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,le,t(r,le).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,P,0),w(this,ve,0),w(this,Z,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,D).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,oe).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,T,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,le,""),w(this,ne,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,O).fill(this.CH_MELODIC),t(this,O)[9]=this.CH_DRUM1,t(this,O)[25]=this.CH_DRUM3,t(this,O)[41]=this.CH_DRUMS,t(this,O)[57]=this.CH_DRUMS,t(this,O)[73]=this.CH_DRUM5,t(this,O)[89]=this.CH_DRUM7,t(this,O)[105]=this.CH_DRUMS,t(this,O)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,Ee).fill(0),t(this,me).fill(0),t(this,te).fill(0),t(this,ce).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,P)==0||n){let c=t(this,P);w(this,P,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,Z,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,O)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,D)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,oe).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,T).length>100&&t(this,T).splice(100,t(this,T).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},P=new WeakMap,j=new WeakMap,ne=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,O=new WeakMap,p=new WeakMap,ue=new WeakMap,D=new WeakMap,L=new WeakMap,ee=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,oe=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,ce=new WeakMap,me=new WeakMap,te=new WeakMap,Ve=new WeakMap,Ee=new WeakMap,Q=new WeakMap,ve=new WeakMap,Z=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,le=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,T=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,J=new WeakMap,he=new WeakMap,ge=new WeakMap,Pe=new WeakMap,De=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);R();R();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){m(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),Et=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);m(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new Et(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new Et(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let E={type:y.type,data:y.data,track:b,part:0};y.type>14?E.meta=y.metaType:E.part=y.channel,e.push(new rr(a/c/h*60+o,E))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");m(this,qe,void 0);m(this,Ue,"");m(this,Le,[]);m(this,Be,new Uint8ClampedArray(128));m(this,st,new Uint8ClampedArray(128));m(this,xe,.5);m(this,je,120);m(this,F,4);m(this,Ne,4);m(this,ye,0);m(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((E,x)=>{t(this,st)[x]=E}),r.device.newStrength(),n.forEach(function(E){let x=E.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),E.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(E,x,A){A[x]=Math.max(t(r,st)[x],E);let V=A[x]-t(r,Be)[x],ae=g.length*x;if(V>=0){let lt=4*.25**(f[ae+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[ae+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(E,x){E&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; +122 006 000 `),t(this,_)[1]=function(r){switch(r.slice(0,2)){case"@I":{w(this,I,!0),t(this,T).unshift(`Kar.Info: ${r.slice(2)}`);break}case"@K":{w(this,I,!0),t(this,T).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${r.slice(2)}`);break}case"@L":{w(this,I,!0),t(this,T).unshift(`Language: ${r.slice(2)}`);break}case"@T":{w(this,I,!0),t(this,T).unshift(`Ka.Title: ${r.slice(2)}`);break}case"@V":{w(this,I,!0),t(this,T).unshift(`Kara.Ver: ${r.slice(2)}`);break}case"XF":{let a=r.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,T).unshift(`XGF_Data: ${r}`)}break}default:t(this,I)?r[0]=="\\"?t(this,T).unshift(`@ ${r.slice(1)}`):r[0]=="/"?t(this,T).unshift(r.slice(1)):t(this,T)[0]+=r:(t(this,T)[0]=r,t(this,T).unshift(""))}},t(this,_)[2]=function(r){t(this,T).unshift(`Copyrite: ${r}`)},t(this,_)[3]=function(r,a){a<1&&t(this,pe)<1&&t(this,T).unshift(`TrkTitle: ${r}`)},t(this,_)[4]=function(r,a){t(this,T).unshift(`${Qt(t(this,pe),""," ")}Instrmnt: ${r}`)},t(this,_)[5]=function(r){r.trim()==""?t(this,T).unshift(""):t(this,T)[0]+=`${r}`},t(this,_)[6]=function(r){t(this,T).unshift(`${Qt(t(this,pe),""," ")}C.Marker: ${r}`)},t(this,_)[7]=function(r){t(this,T).unshift(`CuePoint: ${r}`)},t(this,_)[32]=function(r){w(this,pe,r[0]+1)},t(this,_)[33]=function(r,a){console.debug(`Track ${a} requests to get assigned to output ${r}.`),t(e,Se)[a]=r+1},t(this,_)[81]=function(r,a){w(e,Xe,r/1e3)},t(this,_)[127]=function(r,a){t(e,Te).run(r,a)},t(this,Te).default=function(r){console.warn(`Unrecognized sequencer-specific byte sequence: ${r}`)},t(this,Te).add([67,0,1],function(r,a){t(e,Se)[a]=r[0]+1}),w(this,Re,new ie("universal non-realtime")),w(this,Oe,new ie("universal realtime")),w(this,J,new ie("Yamaha")),w(this,ae,new ie("Roland")),w(this,ge,new ie("Korg")),w(this,De,new ie("Kawai")),w(this,Pe,new ie("Akai")),w(this,Ie,new ie("Casio"));let n=function(r){console.info(`Unrecognized SysEx in "${this.name}" set.`,r)};t(this,Re).default=n,t(this,Oe).default=n,t(this,J).default=n,t(this,ae).default=n,t(this,ge).default=n,t(this,De).default=n,t(this,Pe).default=n,t(this,Ie).default=n,t(this,Re).add([9],r=>{e.switchMode(["gm","?","g2"][r[0]-1],!0),w(e,I,t(e,I)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][r[0]-1]}`),r[0]==2&&e.init()}),t(this,Oe).add([4,1],r=>{w(e,X,((r[1]<<7)+r[0])/16383*100)}).add([4,3],r=>((r[1]<<7)+r[0]-8192)/8192).add([4,4],r=>r[1]-64),t(this,J).add([76,0,0],r=>{switch(r[0]){case 125:{console.info(`XG drum setup reset: ${r}`);break}case 126:{e.switchMode("xg",!0),w(e,I,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,s)=>{a[s]=i};if(r.subarray(1).forEach((i,s)=>{let f=s+r[0];([o,o,o,o,l=>{w(this,X,l*129/16383*100)},l=>{},l=>{}][f]||(()=>{}))(i,s)}),r[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],r=>{let a="XG ";r[0]<32?(a+="reverb ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${At(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][r[0]+i]||function(){console.warn(`Unknown XG reverb address: ${r[0]}.`)})(o)})):r[0]<64?(a+="chorus ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${It[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Ut(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${_e[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${_e[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][r[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${r[0]}.`)})(o)})):r[0]<86?(a+="variation ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][r[0]-64+i]||function(){})(o)})):r[0]<97?(a+="variation ",r.subarray(1).forEach((o,i)=>{[s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},s=>{console.debug(`${a}to chorus: ${q(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][r[0]-86+i](o)})):r[0]>111&&r[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${r[0]}`)}).add([76,2,64],r=>{r.subarray(1).forEach((a,o)=>{let i=o+r[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,f=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][f]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][f]()}})}).add([76,3],r=>{let a=r[0],o=r[1],i=`XG Insertion ${r[0]+1} `;r.subarray(2).forEach((s,f)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${We[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][o+f]||function(){})(s)})}).add([76,6,0],r=>{let a=r[0];a<64?e.setLetterDisplay(r.subarray(1),"XG letter display",a):w(e,ke,Date.now())}).add([76,7,0],r=>{let a=r[0];w(e,j,0),w(e,oe,Date.now()+3200),t(e,W,de).fill(0);let o=r.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=$.cc*o,f=`XG CH${o+1} `,l=`Unknown XG part address ${i}.`;r.subarray(2).forEach((d,b)=>{i<1?console.debug(l):i<41?([()=>{t(e,p)[s+g[0]]=d},()=>{t(e,p)[s+g[32]]=d},()=>{t(e,P)[o]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!d},()=>{},()=>{e.setChType(o,d,M.xg),console.debug(`${f}type: ${Ye[d]||d}`)},()=>{t(e,S)[$.rpn*o+3]=d},!1,!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{t(e,p)[s+g[128]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[76]]=d},()=>{t(e,p)[s+g[77]]=d},()=>{t(e,p)[s+g[78]]=d},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},()=>{t(e,p)[s+g[73]]=d},()=>{t(e,p)[s+g[75]]=d},()=>{t(e,p)[s+g[72]]=d}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(t(e,p)[s+g[[5,65][i&1]]]=d):i<114?console.debug(l):i<116?console.debug(`${f}EQ ${["bass","treble"][i&1]} gain: ${d-64}dB`):i<118?console.debug(l):i<120?console.debug(`${f}EQ ${["bass","treble"][i&1]} freq: ${d}`):console.debug(l)})}).add([76,9],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=`PLG-150VL CH${o+1} `;r.subarray(2).forEach((f,l)=>{let d=l+i;switch(d){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][f]}`);break}case 0:case 27:case 28:break;default:if(d<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][d-3>>1];d&1?d<23?(console.debug(`${s}${b} control source: ${Nt(f)}`),f&&f<96&&e.allocateAce(f)):console.debug(`${s}${b} scale break point: ${f}`):console.debug(`${s}${b} depth: ${f-64}`)}}})}).add([76,10],r=>{}).add([76,16],r=>{}).add([76,17,0,0],r=>{}).add([76,112],r=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][r[0]]} for CH${r[2]+1}.`)}).add([73,0,0],(r,a)=>{let o=r[0],i="MU1000 System: ";r.subarray(1).forEach((s,f)=>{let l=o+f;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(w(e,Z,s?126:0),console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,re,!!s),console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(r,a)=>{let o=r[0],i=`MU1000 RS${t(e,re)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let s=e.chRedir(0,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(r[1]<<5,a,!0);t(e,re)&&e.dispatchEvent("channelmin",s),t(e,re)&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,re)){let s=e.chRedir(o-16+(t(e,Ke)<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(o<36){let s=e.chRedir(o-32<<4,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),w(e,Ke,o-32)),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=`PLG-100SG CH${o+1} `,s=Date.now();if(r[1]==0){let f="",l=0;r.subarray(2).forEach((d,b)=>{b%2==0?f+=Lt[d]||d.toString().padStart("0"):l+=d*13}),s>=t(e,ze)&&t(e,T).unshift("SG Lyric: "),t(e,T)[0]+=`${Bt(f)}`,w(e,ze,s+Math.ceil(l/2)+t(e,Xe)),Y()&&console.debug(`${i}vocals: ${f}`)}else console.warn(`Unknown PLG-100SG data: ${r}`)}),t(this,J).add([76,48],r=>{}).add([76,49],r=>{}).add([76,50],r=>{}).add([76,51],r=>{}),t(this,J).add([89,0],(r,a,o)=>{if(e.eprom){let i=r[0],s=(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let f=e.eprom.data;r.subarray(4).forEach((l,d)=>{let b=d>>3,y=d&7;if(y==7)for(let k=0;k<7;k++)f[s+7*b+k]+=(l>>6-k&1)<<7;else f[s+7*b+y]=l})}}).add([89,1],(r,a,o)=>{let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3];Y()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(r,a,o)=>{if(e.eprom){let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;r.subarray(4).forEach((f,l)=>{let d=l>>3,b=l&7;if(b==7)for(let y=0;y<7;y++)s[i+7*d+y]+=(f>>6-y&1)<<7;else s[i+7*d+b]=f})}}).add([89,3],(r,a,o)=>{}),t(this,J).add([39,48],(r,a,o)=>{}).add([43,0,0],(r,a,o)=>{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,()=>{w(this,X,f*129/16383*100)},()=>f-64,()=>f||128,()=>f,()=>f,()=>{console.debug(`TG300 variation on cc${f}.`)}][d](f,d)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}).add([43,1,0],(r,a,o)=>{}).add([43,2],(r,a,o)=>{let i=e.chRedir(r[0],a,!0),s=r[1],f=$.cc*i,l=`TG300 CH${i+1} `;r.subarray(2).forEach((d,b)=>{b<5?([()=>{},()=>{t(e,p)[f+g[0]]=d},()=>{t(e,p)[f+g[32]]=d},()=>{t(e,P)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][b+s]||(()=>{}))(d,b+s):b<21||(b<47?([()=>{t(e,ee)[i]=+!d},()=>{},()=>{},()=>{t(e,S)[$.rpn*i+3]=d},()=>{},()=>{t(e,p)[f+g[7]]=d},!1,!1,()=>{t(e,p)[f+g[10]]=d||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${d}`)},()=>{console.debug(`${l} AC2 at cc${d}`)},()=>{t(e,p)[f+g[128]]=d},()=>{t(e,p)[f+g[93]]=d},()=>{t(e,p)[f+g[91]]=d},()=>{t(e,p)[f+g[94]]=d},()=>{t(e,p)[f+g[76]]=d},()=>{t(e,p)[f+g[77]]=d},()=>{t(e,p)[f+g[74]]=d},()=>{t(e,p)[f+g[71]]=d},()=>{t(e,p)[f+g[73]]=d},()=>{t(e,p)[f+g[75]]=d},()=>{t(e,p)[f+g[72]]=d},()=>{t(e,p)[f+g[78]]=d}][b+s-21]||(()=>{}))(d,b+s):b<95||([()=>{t(e,p)[f+g[65]]=d},()=>{t(e,p)[f+g[5]]=d}][b+s-95]||(()=>{}))(d,b+s))})}).add([43,7,0],(r,a,o)=>{let i=r[0];e.setLetterDisplay(r.subarray(1),"TG300 letter display",i)}).add([43,7,1],(r,a,o)=>{w(e,j,0),w(e,oe,Date.now()+3200),t(e,W,de).fill(0),r.forEach(function(i,s){let f=Math.floor(s/16),l=s%16,d=(l*3+f)*7,b=7,y=0;for(d-=l*5,f==2&&(b=2);y>6-y&1,y++})}),t(this,ae).add([66,18,0,0,127],(r,a,o)=>{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,Z,3),w(e,I,!1),t(e,be).fill(0),console.info(`GS system to ${["single","dual"][r[0]]} mode.`)}).add([66,18,64,0],(r,a,o)=>{switch(r[0]){case 127:{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,I,!1),t(e,be).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,b=>{w(this,X,b*129/16383*100)},b=>{},b=>{}][d](f,l)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,64,1],r=>{let a=r[0];if(a<16){let o="".padStart(a," ");r.subarray(1).forEach((i,s)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?r.subarray(1).forEach((o,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${pt[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${o}ms`)},()=>{console.info(`${s}type: ${Ht[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)},()=>{console.debug(`${s}to delay: ${q(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?r.subarray(1).forEach((o,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${Gt[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],r=>{let a="GS EQ ";r.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][r[0]+i]||function(){console.warn(`Unknown GS EQ address: ${r[0]+i}`)})()})}).add([66,18,64,3],r=>{let a="GS EFX ",o=function(i,s){let f=_t(t(e,Q).subarray(10,12),s,i);f&&console.debug(`${a}${bt(t(e,Q).subarray(10,12))} ${f}`)};r.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${bt(t(e,Q).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${q(i)}dB`)},()=>{console.debug(`${a}to chorus: ${q(i)}dB`)},()=>{console.debug(`${a}to delay: ${q(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][r[0]+s]||function(f,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,r[0]+s)})}).add([66,18,65],r=>{}).add([69,18,16],r=>{var a;switch(r[0]){case 0:{let o=r[1];e.setLetterDisplay(r.subarray(2),"GS display text",o);break}case 32:{w(e,oe,Date.now()+3200),r[1]==0&&w(e,j,Math.max(Math.min(r[2]-1,9),0));break}default:if(r[0]<11){t(e,j)>9&&w(e,j,0),w(e,oe,Date.now()+3200),(a=t(e,fe)[r[0]-1])!=null&&a.length||(t(e,fe)[r[0]-1]=new Uint8Array(256));let o=t(e,fe)[r[0]-1],i=r[1];o.fill(0);let s=r.subarray(2);for(let f=0;f>4-v&1,v++})}else console.warn(`Unknown GS display section: ${r[0]}`)}});let h=function(r,a,o){let i=r[0],s=$.cc*a,f=$.rpn*a,l=`GS CH${a+1} `;i<3?r.subarray(1).forEach((d,b)=>{[()=>{t(e,p)[s+g[0]]=d},()=>{t(e,P)[a]=d},()=>{let y=e.chRedir(d,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][i+b]()}):i<19||(i<44?r.subarray(1).forEach((d,b)=>{([()=>{t(e,ee)[a]=+!d},!1,()=>{e.setChType(a,d<<1,M.gs),console.debug(`${l}type: ${d?"drum ":"melodic"}${d||""}`)},()=>{t(e,S)[f+3]=d},!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${d}`)},()=>{console.debug(`${l}CC 2: cc${d}`)},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},!1,!1,()=>{t(e,S)[f+1]=d},()=>{t(e,S)[f+2]=d},()=>{t(e,p)[s+g[94]]=d}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},c=function(r,a){let o=r[0],i=`GS CH${a+1} `;o<2?r.subarray(1).forEach((s,f)=>{[()=>{t(e,p)[$.cc*a+g[32]]=s},()=>{}][o+f]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?r.subarray(1).forEach((s,f)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][o+f-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ae).add([66,18,64,16],(r,a)=>{h(r,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(r,a)=>{h(r,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(r,a)=>{h(r,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(r,a)=>{h(r,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(r,a)=>{h(r,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(r,a)=>{h(r,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(r,a)=>{h(r,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(r,a)=>{h(r,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(r,a)=>{h(r,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(r,a)=>{h(r,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(r,a)=>{h(r,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(r,a)=>{h(r,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(r,a)=>{h(r,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(r,a)=>{h(r,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(r,a)=>{h(r,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(r,a)=>{h(r,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(r,a)=>{c(r,e.chRedir(9,a,!0))}).add([66,18,64,65],(r,a)=>{c(r,e.chRedir(0,a,!0))}).add([66,18,64,66],(r,a)=>{c(r,e.chRedir(1,a,!0))}).add([66,18,64,67],(r,a)=>{c(r,e.chRedir(2,a,!0))}).add([66,18,64,68],(r,a)=>{c(r,e.chRedir(3,a,!0))}).add([66,18,64,69],(r,a)=>{c(r,e.chRedir(4,a,!0))}).add([66,18,64,70],(r,a)=>{c(r,e.chRedir(5,a,!0))}).add([66,18,64,71],(r,a)=>{c(r,e.chRedir(6,a,!0))}).add([66,18,64,72],(r,a)=>{c(r,e.chRedir(7,a,!0))}).add([66,18,64,73],(r,a)=>{c(r,e.chRedir(8,a,!0))}).add([66,18,64,74],(r,a)=>{c(r,e.chRedir(10,a,!0))}).add([66,18,64,75],(r,a)=>{c(r,e.chRedir(11,a,!0))}).add([66,18,64,76],(r,a)=>{c(r,e.chRedir(12,a,!0))}).add([66,18,64,77],(r,a)=>{c(r,e.chRedir(13,a,!0))}).add([66,18,64,78],(r,a)=>{c(r,e.chRedir(14,a,!0))}).add([66,18,64,79],(r,a)=>{c(r,e.chRedir(15,a,!0))}),t(this,ge).add([54,65],(r,a)=>{e.switchMode("x5d");let o=(r[1]<<7)+r[0],i=(r[3]<<7)+r[2],s=e.chRedir(o&15,a,!0),f=$.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,P)[s]=i-1,t(e,p)[f+g[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,P)[s]=i-101,t(e,p)[f+g[0]]=56):(e.setChType(s,e.CH_DRUMS,M.x5d),t(e,P)[s]=jt[i-229]||0,t(e,p)[f+g[0]]=62))},()=>{t(e,p)[f+g[7]]=i},()=>{i<31&&(t(e,p)[f+g[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,p)[f+g[93]]=Ze(i)},()=>{t(e,p)[f+g[91]]=Ze(i)},()=>{t(e,S)[s*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,S)[s*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,S)[s*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=82,s=0,f=0,l="MSB PRG LSB NME";ne(r,function(d,b){if(b<16400){let y=b%164;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` +${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=90,s=0,f=0,l="MSB PRG LSB NME";ne(r,function(d,b){if(b<13600){let y=b%136;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ne(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ne(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,P)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,P)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,ae).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,me)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,me)[i-1<<4];if(b<3)if(t(e,le)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,le)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,te)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,me)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,me)[d-1<<4];if(y<3)if(t(e,le)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,te)[(d-1)*$.cmt+b]=s),b<10&&(t(e,le)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let E=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME +000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,Ee)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,he,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,P)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,P)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,oe,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,E=0,x=y0;)t(e,W,de)[k*32+y*7+(x-E)]=v&1,v=v>>1,E++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ne(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ne(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,P)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ne(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` +${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=88,s=0,f=0,l="MSB PRG LSB NME";ne(r,function(d,b){let y=b%126;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:break;case y==12:break;case y==13:{l+=` +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ne(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,De).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,Z,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,P)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,P)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,P)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,P)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,P)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,Pe).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,J).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,J).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,D),!0)},()=>{d&&(t(e,U)[i]=1),t(e,P)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,ee)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})}),t(this,ae).add([0,72,18,0,0,0,0],(r,a,o)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,Z))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,D)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,Z),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,Z)}return e}getChSource(){return t(this,H)}getChType(){return t(this,O)}setChType(e,n,h=t(this,D),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,P)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,oe)}}getLetter(){return{text:t(this,he),expire:t(this,ke)}}getMode(){return $e[t(this,D)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,ce)[h]&&(t(e,ce)[h]=t(e,L)[n])}),t(this,ce)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,Z);$e[t(this,D)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,D)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,Ee).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,P)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,D)]);if(t(this,le)[e])switch(t(this,D)){case M.mt32:n.ending="~",n.name="",t(this,te).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,he," ".repeat(h)),e.forEach(o=>{w(r,he,t(r,he)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,he,t(r,he).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,D,0),w(this,ve,0),w(this,Z,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,P).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,ce).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,T,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,he,""),w(this,oe,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,O).fill(this.CH_MELODIC),t(this,O)[9]=this.CH_DRUM1,t(this,O)[25]=this.CH_DRUM3,t(this,O)[41]=this.CH_DRUMS,t(this,O)[57]=this.CH_DRUMS,t(this,O)[73]=this.CH_DRUM5,t(this,O)[89]=this.CH_DRUM7,t(this,O)[105]=this.CH_DRUMS,t(this,O)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,Ee).fill(0),t(this,me).fill(0),t(this,te).fill(0),t(this,le).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,D)==0||n){let c=t(this,D);w(this,D,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,Z,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,O)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,P)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,ce).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,T).length>100&&t(this,T).splice(100,t(this,T).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},D=new WeakMap,j=new WeakMap,oe=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,O=new WeakMap,p=new WeakMap,ue=new WeakMap,P=new WeakMap,L=new WeakMap,ee=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,ce=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,le=new WeakMap,me=new WeakMap,te=new WeakMap,Ve=new WeakMap,Ee=new WeakMap,Q=new WeakMap,ve=new WeakMap,Z=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,he=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,T=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,J=new WeakMap,ae=new WeakMap,ge=new WeakMap,De=new WeakMap,Pe=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);R();R();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){m(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),Et=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);m(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new Et(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new Et(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let E={type:y.type,data:y.data,track:b,part:0};y.type>14?E.meta=y.metaType:E.part=y.channel,e.push(new rr(a/c/h*60+o,E))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");m(this,qe,void 0);m(this,Ue,"");m(this,Le,[]);m(this,Be,new Uint8ClampedArray(128));m(this,st,new Uint8ClampedArray(128));m(this,xe,.5);m(this,je,120);m(this,F,4);m(this,Ne,4);m(this,ye,0);m(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((E,x)=>{t(this,st)[x]=E}),r.device.newStrength(),n.forEach(function(E){let x=E.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),E.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(E,x,A){A[x]=Math.max(t(r,st)[x],E);let V=A[x]-t(r,Be)[x],se=g.length*x;if(V>=0){let lt=4*.25**(f[se+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[se+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(E,x){E&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; diff --git a/dist/xp_state.mjs b/dist/xp_state.mjs index 0e0c91fe..f0a9e027 100644 --- a/dist/xp_state.mjs +++ b/dist/xp_state.mjs @@ -1,5 +1,5 @@ -var Rt=Object.defineProperty;var Ot=(b,e,n)=>e in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var M=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var I,rt,it=(rt=class{constructor(){E(this,I,{})}addEventListener(b,e){t(this,I)[b]||(t(this,I)[b]=[]),t(this,I)[b].unshift(e)}removeEventListener(b,e){if(t(this,I)[b]){let n=t(this,I)[b].indexOf(e);n>-1&&t(this,I)[b].splice(n,1),t(this,I)[b].length<1&&delete t(this,I)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,I)[b])==null?void 0:d.length)>0&&t(this,I)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},I=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);M(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[2]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` -`).forEach(function(o,i){let r=o.split(" "),c=[];i==0?r.forEach(function(h,f){d[Dt.indexOf(h)]=f}):r.forEach(async function(h,f){var g;f>2?(t(l,F)[c[d[1]]]=t(l,F)[c[d[1]]]||[],(!((g=t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]])!=null&&g.length)||e)&&(t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]]=r[3],s++),a++):c.push(parseInt(r[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${s} loaded.`)}clearRange(b){let e=b.prg!=null?b.prg.constructor==Array?b.prg:[b.prg,b.prg]:[0,127],n=b.msb!=null?b.msb.constructor==Array?b.msb:[b.msb,b.msb]:[0,127],l=b.lsb!=null?b.lsb.constructor==Array?b.lsb:[b.lsb,b.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let a=l[0];a<=l[1];a++){let o=s+a;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let b=0;b<128;b++)t(this,F).push([""])}async loadFiles(...b){this.init();let e=this;b.forEach(async function(n,l){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,ct=(ot=class{constructor(){E(this,Oe,{});M(this,"context")}set(b,e){t(this,Oe)[b]=e}has(b){return!!t(this,Oe)[b]}async read(b,e){if(!this.has(b))throw new Error(`No decoder registered for "${b}"`);return await t(this,Oe)[b].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(b,e){let n=!0;return e.forEach((l,d)=>{n=n&&b[d]==l}),n},lt=function(b){let e=0;return b.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new ct;Ve.set("s7e",async function(b){let e=new Uint8Array(await b.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",l=[0,0,0,0],d=32,s=0,a=0,o=!0,i=[],r=0;for(;o;){let c=e.subarray(s);([()=>{Le.decode(c.subarray(0,4))=="YSFC"?(s+=80,a=1):s++},()=>{if(Pt(c.subarray(0,4),l))i.forEach((h,f,g)=>{let y=lt(e.subarray(h.start+4,h.start+8));h.length=y}),a=2;else{let h=Le.decode(c.subarray(0,4)),f=lt(c.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[r],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;ye in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var C=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var _,rt,it=(rt=class{constructor(){E(this,_,{})}addEventListener(b,e){t(this,_)[b]||(t(this,_)[b]=[]),t(this,_)[b].unshift(e)}removeEventListener(b,e){if(t(this,_)[b]){let n=t(this,_)[b].indexOf(e);n>-1&&t(this,_)[b].splice(n,1),t(this,_)[b].length<1&&delete t(this,_)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,_)[b])==null?void 0:d.length)>0&&t(this,_)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},_=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);C(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[2]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` +`).forEach(function(o,i){let r=o.split(" "),c=[];i==0?r.forEach(function(h,f){d[Dt.indexOf(h)]=f}):r.forEach(async function(h,f){var g;f>2?(t(l,F)[c[d[1]]]=t(l,F)[c[d[1]]]||[],(!((g=t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]])!=null&&g.length)||e)&&(t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]]=r[3],s++),a++):c.push(parseInt(r[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${s} loaded.`)}clearRange(b){let e=b.prg!=null?b.prg.constructor==Array?b.prg:[b.prg,b.prg]:[0,127],n=b.msb!=null?b.msb.constructor==Array?b.msb:[b.msb,b.msb]:[0,127],l=b.lsb!=null?b.lsb.constructor==Array?b.lsb:[b.lsb,b.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let a=l[0];a<=l[1];a++){let o=s+a;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let b=0;b<128;b++)t(this,F).push([""])}async loadFiles(...b){this.init();let e=this;b.forEach(async function(n,l){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,ct=(ot=class{constructor(){E(this,Oe,{});C(this,"context")}set(b,e){t(this,Oe)[b]=e}has(b){return!!t(this,Oe)[b]}async read(b,e){if(!this.has(b))throw new Error(`No decoder registered for "${b}"`);return await t(this,Oe)[b].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(b,e){let n=!0;return e.forEach((l,d)=>{n=n&&b[d]==l}),n},lt=function(b){let e=0;return b.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new ct;Ve.set("s7e",async function(b){let e=new Uint8Array(await b.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",l=[0,0,0,0],d=32,s=0,a=0,o=!0,i=[],r=0;for(;o;){let c=e.subarray(s);([()=>{Le.decode(c.subarray(0,4))=="YSFC"?(s+=80,a=1):s++},()=>{if(Pt(c.subarray(0,4),l))i.forEach((h,f,g)=>{let y=lt(e.subarray(h.start+4,h.start+8));h.length=y}),a=2;else{let h=Le.decode(c.subarray(0,4)),f=lt(c.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[r],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;y=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});var Be=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ge=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],At=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],De=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ht=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ft=function(b){let e=.1,n=-.3;return b>66?(e=5,n=315):b>56?(e=1,n=47):b>46&&(e=.5,n=18.5),e*b-n},dt=function(b){return b>105?At[b-106]:b>100?b*1.1-100:b/10},ut=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),We={};`hi*, @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(b=>{let e=b.split(",");We[e[0]]=e[1]});var bt=function(b){let e=b;b[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;e.indexOf(l)>-1;)e=e.replace(l,l[0])});for(let l in We)e=e.replaceAll(l,We[l]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(b){return b?b<96?`cc${b}`:["aftertouch","velocity","pitch bend"][b-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",b=>"aiueo"[b]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",b=>["off","LPF","HPF"][b]],94984:["noise type",b=>["white","pink"][b]],94987:["disc type",b=>["LP","SP","EP","RND"]],94990:["hum type",b=>`${b+5}0Hz`],94993:["M/S",b=>["mono","stereo"][b]]},Je=function(b){return Ut[(b[0]-32<<8)+b[1]]||`0x${b[0].toString(16).padStart(2,"0")}${b[1].toString(16).padStart(2,"0")}`},yt=function(b,e,n){let l=(b[0]-32<<16)+(b[1]<<8)+e,d=Nt[l]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(b=64){return Math.round(2e3*Math.log10(b/64))/100};var wt=function(b){let e=0;return b.forEach(n=>{e+=n,e=e&127}),~e+1&127},ee=function(b,e){let n=0,l=0;for(let d=0;d>s&1)<<7,o=b[d];o+=a,d%8!=0?(e(o,n,b),n++):l=b[d]}},_e=function(b){let e=Math.floor(b*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Ie=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],x={};be.forEach((b,e)=>{x[b]=e});var p={length:Ie.length};Ie.forEach((b,e)=>{p[b]=e});var Mt={length:qe.length};qe.forEach((b,e)=>{Mt[b]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(b){let e=[],n=0;return b==null||b.forEach(function(l,d){l==247?e.push(b.subarray(n,d)):l==240&&(n=d+1)}),e.length||e.push(b.subarray(0)),q()&&console.debug(e),e},xt=function(b,e="",n="",l=2){return b?`${e}${b.toString().padStart(l,"0")}${n}`:""},$={ch:128,cc:Ie.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,te,oe,z,ne,Tt,P,H,T,u,ce,O,A,W,U,L,pe,se,me,v,Pe,Fe,ae,ge,Y,Ae,$e,V,ye,Q,_,le,Ue,Ne,re,we,He,J,D,Xe,tt,C,he,Ee,G,ve,N,Ke,ze,xe,Ce,j,ie,fe,Me,Te,Re,Ct,ms=(Ct=class extends it{constructor(){super();E(this,z);M(this,"NOTE_IDLE",0);M(this,"NOTE_ATTACK",1);M(this,"NOTE_DECAY",2);M(this,"NOTE_SUSTAIN",3);M(this,"NOTE_HELD",4);M(this,"NOTE_RELEASE",5);M(this,"NOTE_SOSTENUTO_ATTACK",8);M(this,"NOTE_SOSTENUTO_DECAY",9);M(this,"NOTE_SOSTENUTO_SUSTAIN",10);M(this,"NOTE_SOSTENUTO_HELD",11);M(this,"CH_MELODIC",0);M(this,"CH_DRUMS",1);M(this,"CH_DRUM1",2);M(this,"CH_DRUM2",3);M(this,"CH_DRUM3",4);M(this,"CH_DRUM4",5);M(this,"CH_DRUM5",6);M(this,"CH_DRUM6",7);M(this,"CH_DRUM7",8);M(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,te,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,u,new Uint8Array($.ch*$.cc));E(this,ce,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,W,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,se,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,ae,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,Y,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Q,0);E(this,_,100);E(this,le,0);E(this,Ue,500);E(this,Ne,0);E(this,re,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,C,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));M(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));M(this,"userBank",new je("gm"));M(this,"initOnReset",!1);M(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let l=e*128+n,d=t(this,U).lastIndexOf(l);d>-1&&(t(this,u)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_HELD})):t(this,u)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[l]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let d=e*128+n,s=0;for(t(this,W)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=l,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,se)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,l)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[l]=d;let s=t(this,U)[l];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,l,d)=>{let s=n>>7,a=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,a)})}});E(this,Ke,{8:function(e){let n=e.channel,l=e.data[0];t(this,N).nOff(n,l)},9:function(e){let n=e.channel;t(this,P)[n]=1;let l=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,l,d):t(this,N).nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];t(this,U).indexOf(l)>-1&&(t(this,A)[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case x.s90es:case x.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let l=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,u)[d+p[1]]=0,t(this,u)[d+p[5]]=0,t(this,u)[d+p[64]]=0,t(this,u)[d+p[65]]=0,t(this,u)[d+p[66]]=0,t(this,u)[d+p[67]]=0,t(this,u)[d+p[11]]=127,t(this,u)[d+p[101]]=127,t(this,u)[d+p[100]]=127,t(this,u)[d+p[99]]=127,t(this,u)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,W)[n]=1,t(this,N).ano(n);return}case 127:{t(this,W)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0?e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,R)==x.gs?e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,R)==x.gm?e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,R)==x.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,R)){case x.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x["05rw"]:case x.x5d:case x.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case x.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[x.xg,x.gs,x.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,u)[l+p[99]],s=t(this,u)[l+p[98]];if(d==1){let a=Bt.indexOf(s);if(a>-1)t(this,u)[l+p[71+a]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Mt[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,u)[l+p[100]]];t(this,u)[l+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,u)[l+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case x.s90es:case x.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,u)[l+101]==0&&et[t(this,u)[l+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,u)[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,u)[l+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case x.s90es:case x.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,ae)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;t(this,U).forEach(function(d){let s=d>>7;l==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:l,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let l=n[0],d=n[1];(t(this,ze)[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(l,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,le,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,l)=>{t(this,Me).run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)t(this,ie).run(n,l,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,ie).run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,l)=>{t(this,fe).run(n,l,e)},67:(e,n,l)=>{t(this,j).run(n,l,e)},68:(e,n,l)=>{t(this,Re).run(n,l,e)},71:(e,n,l)=>{t(this,Te).run(n,l,e)},126:(e,n,l)=>{t(this,xe).run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),t(this,Ce).run(n,l,e)}});E(this,xe,void 0);E(this,Ce,void 0);E(this,j,void 0);E(this,ie,void 0);E(this,fe,void 0);E(this,Me,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new Z),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(b=>{let e=b.split(",");We[e[0]]=e[1]});var bt=function(b){let e=b;b[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;e.indexOf(l)>-1;)e=e.replace(l,l[0])});for(let l in We)e=e.replaceAll(l,We[l]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(b){return b?b<96?`cc${b}`:["aftertouch","velocity","pitch bend"][b-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",b=>"aiueo"[b]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",b=>["off","LPF","HPF"][b]],94984:["noise type",b=>["white","pink"][b]],94987:["disc type",b=>["LP","SP","EP","RND"]],94990:["hum type",b=>`${b+5}0Hz`],94993:["M/S",b=>["mono","stereo"][b]]},Je=function(b){return Ut[(b[0]-32<<8)+b[1]]||`0x${b[0].toString(16).padStart(2,"0")}${b[1].toString(16).padStart(2,"0")}`},yt=function(b,e,n){let l=(b[0]-32<<16)+(b[1]<<8)+e,d=Nt[l]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(b=64){return Math.round(2e3*Math.log10(b/64))/100};var wt=function(b){let e=0;return b.forEach(n=>{e+=n,e=e&127}),~e+1&127},te=function(b,e){let n=0,l=0;for(let d=0;d>s&1)<<7,o=b[d];o+=a,d%8!=0?(e(o,n,b),n++):l=b[d]}},Ie=function(b){let e=Math.floor(b*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],_e=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],M={};be.forEach((b,e)=>{M[b]=e});var p={length:_e.length};_e.forEach((b,e)=>{p[b]=e});var Ct={length:qe.length};qe.forEach((b,e)=>{Ct[b]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(b){let e=[],n=0;return b==null||b.forEach(function(l,d){l==247?e.push(b.subarray(n,d)):l==240&&(n=d+1)}),e.length||e.push(b.subarray(0)),q()&&console.debug(e),e},Mt=function(b,e="",n="",l=2){return b?`${e}${b.toString().padStart(l,"0")}${n}`:""},$={ch:128,cc:_e.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,se,oe,z,ne,Tt,P,H,T,u,ce,O,A,W,U,L,pe,ae,me,v,Pe,Fe,re,ge,Y,Ae,$e,V,ye,Q,I,le,Ue,Ne,ie,we,He,J,D,Xe,tt,x,he,Ee,G,ve,N,Ke,ze,Me,xe,j,Z,fe,Ce,Te,Re,xt,ms=(xt=class extends it{constructor(){super();E(this,z);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,se,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,u,new Uint8Array($.ch*$.cc));E(this,ce,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,W,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,ae,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,re,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,Y,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Q,0);E(this,I,100);E(this,le,0);E(this,Ue,500);E(this,Ne,0);E(this,ie,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,x,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));C(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new je("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let l=e*128+n,d=t(this,U).lastIndexOf(l);d>-1&&(t(this,u)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_HELD})):t(this,u)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[l]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let d=e*128+n,s=0;for(t(this,W)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=l,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,ae)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,l)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[l]=d;let s=t(this,U)[l];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,l,d)=>{let s=n>>7,a=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,a)})}});E(this,Ke,{8:function(e){let n=e.channel,l=e.data[0];t(this,N).nOff(n,l)},9:function(e){let n=e.channel;t(this,P)[n]=1;let l=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,l,d):t(this,N).nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];t(this,U).indexOf(l)>-1&&(t(this,A)[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let l=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,u)[d+p[1]]=0,t(this,u)[d+p[5]]=0,t(this,u)[d+p[64]]=0,t(this,u)[d+p[65]]=0,t(this,u)[d+p[66]]=0,t(this,u)[d+p[67]]=0,t(this,u)[d+p[11]]=127,t(this,u)[d+p[101]]=127,t(this,u)[d+p[100]]=127,t(this,u)[d+p[99]]=127,t(this,u)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,W)[n]=1,t(this,N).ano(n);return}case 127:{t(this,W)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0?e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,R)==M.gs?e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,R)==M.gm?e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,R)==M.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,R)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[M.xg,M.gs,M.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,u)[l+p[99]],s=t(this,u)[l+p[98]];if(d==1){let a=Bt.indexOf(s);if(a>-1)t(this,u)[l+p[71+a]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Ct[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,u)[l+p[100]]];t(this,u)[l+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,u)[l+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,u)[l+101]==0&&et[t(this,u)[l+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,u)[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,u)[l+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case M.s90es:case M.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,re)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;t(this,U).forEach(function(d){let s=d>>7;l==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:l,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let l=n[0],d=n[1];(t(this,ze)[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(l,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,le,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,l)=>{t(this,Ce).run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)t(this,Z).run(n,l,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,Z).run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,l)=>{t(this,fe).run(n,l,e)},67:(e,n,l)=>{t(this,j).run(n,l,e)},68:(e,n,l)=>{t(this,Re).run(n,l,e)},71:(e,n,l)=>{t(this,Te).run(n,l,e)},126:(e,n,l)=>{t(this,Me).run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),t(this,xe).run(n,l,e)}});E(this,Me,void 0);E(this,xe,void 0);E(this,j,void 0);E(this,Z,void 0);E(this,fe,void 0);E(this,Ce,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new ee),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,10 +147,10 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,C).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,C).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,C).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,C).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,C).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let a=s.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,C).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,C).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,C).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,C).unshift(s.slice(1)):t(this,C)[0]+=s:(t(this,C)[0]=s,t(this,C).unshift(""))}},t(this,G)[2]=function(s){t(this,C).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,a){a<1&&t(this,le)<1&&t(this,C).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,a){t(this,C).unshift(`${xt(t(this,le),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,C).unshift(""):t(this,C)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,C).unshift(`${xt(t(this,le),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,C).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,le,s[0]+1)},t(this,G)[33]=function(s,a){console.debug(`Track ${a} requests to get assigned to output ${s}.`),t(e,Ee)[a]=s+1},t(this,G)[81]=function(s,a){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,a){t(e,ve).run(s,a)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,a){t(e,Ee)[a]=s[0]+1}),w(this,xe,new Z("universal non-realtime")),w(this,Ce,new Z("universal realtime")),w(this,j,new Z("Yamaha")),w(this,ie,new Z("Roland")),w(this,fe,new Z("Korg")),w(this,Me,new Z("Kawai")),w(this,Te,new Z("Akai")),w(this,Re,new Z("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,xe).default=n,t(this,Ce).default=n,t(this,j).default=n,t(this,ie).default=n,t(this,fe).default=n,t(this,Me).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,xe).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Ce).add([4,1],s=>{w(e,_,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,j).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,r)=>{a[r]=i};if(s.subarray(1).forEach((i,r)=>{let c=r+s[0];([o,o,o,o,h=>{w(this,_,h*129/16383*100)},h=>{},h=>{}][c]||(()=>{}))(i,r)}),s[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],s=>{let a="XG ";s[0]<32?(a+="reverb ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${ft(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(a+="chorus ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ht[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${dt(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${De[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${De[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(a+="variation ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(a+="variation ",s.subarray(1).forEach((o,i)=>{[r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},r=>{console.debug(`${a}to chorus: ${X(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((a,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,c=i-1&3,h=`XG EQ ${r} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${h}${a-64}dB`)},()=>{console.debug(`${h}${a} (raw)`)},()=>{console.debug(`${h}${a/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],s=>{let a=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((r,c)=>{([h=>{e.setEffectTypeRaw(3+a,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+a,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+c]||function(){})(r)})}).add([76,6,0],s=>{let a=s[0];a<64?e.setLetterDisplay(s.subarray(1),"XG letter display",a):w(e,we,Date.now())}).add([76,7,0],s=>{let a=s[0];w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=$.cc*o,c=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,u)[r+p[0]]=f},()=>{t(e,u)[r+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!f},()=>{},()=>{e.setChType(o,f,x.xg),console.debug(`${c}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{t(e,u)[r+p[128]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[76]]=f},()=>{t(e,u)[r+p[77]]=f},()=>{t(e,u)[r+p[78]]=f},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},()=>{t(e,u)[r+p[73]]=f},()=>{t(e,u)[r+p[75]]=f},()=>{t(e,u)[r+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,u)[r+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((c,h)=>{let f=h+i;switch(f){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${r}${g} control source: ${pt(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${r}${g} scale break point: ${c}`):console.debug(`${r}${g} depth: ${c-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,a)=>{let o=s[0],i="MU1000 System: ";s.subarray(1).forEach((r,c)=>{let h=o+c;h==8?console.debug(`${i}LCD contrast set to ${r}.`):h==18?(w(e,Q,r?126:0),console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):h>=64&&h<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.debug(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.debug(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!r),console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][h-64]()})}).add([73,10,0],(s,a)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let r=e.chRedir(0,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(s[1]<<5,a,!0);t(e,J)&&e.dispatchEvent("channelmin",r),t(e,J)&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let r=e.chRedir(o-16+(t(e,He)<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(o<36){let r=e.chRedir(o-32<<4,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),w(e,He,o-32)),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=`PLG-100SG CH${o+1} `,r=Date.now();if(s[1]==0){let c="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?c+=ut[f]||f.toString().padStart("0"):h+=f*13}),r>=t(e,Ne)&&t(e,C).unshift("SG Lyric: "),t(e,C)[0]+=`${bt(c)}`,w(e,Ne,r+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,j).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,j).add([89,0],(s,a,o)=>{if(e.eprom){let i=s[0],r=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)c[r+7*g+S]+=(h>>6-S&1)<<7;else c[r+7*g+y]=h})}}).add([89,1],(s,a,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,a,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;s.subarray(4).forEach((c,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)r[i+7*f+y]+=(c>>6-y&1)<<7;else r[i+7*f+g]=c})}}).add([89,3],(s,a,o)=>{}),t(this,j).add([39,48],(s,a,o)=>{}).add([43,0,0],(s,a,o)=>{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,()=>{w(this,_,c*129/16383*100)},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][f](c,f)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}).add([43,1,0],(s,a,o)=>{}).add([43,2],(s,a,o)=>{let i=e.chRedir(s[0],a,!0),r=s[1],c=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,u)[c+p[0]]=f},()=>{t(e,u)[c+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+r]||(()=>{}))(f,g+r):g<21||(g<47?([()=>{t(e,W)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,u)[c+p[7]]=f},!1,!1,()=>{t(e,u)[c+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,u)[c+p[128]]=f},()=>{t(e,u)[c+p[93]]=f},()=>{t(e,u)[c+p[91]]=f},()=>{t(e,u)[c+p[94]]=f},()=>{t(e,u)[c+p[76]]=f},()=>{t(e,u)[c+p[77]]=f},()=>{t(e,u)[c+p[74]]=f},()=>{t(e,u)[c+p[71]]=f},()=>{t(e,u)[c+p[73]]=f},()=>{t(e,u)[c+p[75]]=f},()=>{t(e,u)[c+p[72]]=f},()=>{t(e,u)[c+p[78]]=f}][g+r-21]||(()=>{}))(f,g+r):g<95||([()=>{t(e,u)[c+p[65]]=f},()=>{t(e,u)[c+p[5]]=f}][g+r-95]||(()=>{}))(f,g+r))})}).add([43,7,0],(s,a,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,a,o)=>{w(e,K,0),w(e,te,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,r){let c=Math.floor(r/16),h=r%16,f=(h*3+c)*7,g=7,y=0;for(f-=h*5,c==2&&(g=2);y>6-y&1,y++})}),t(this,ie).add([66,18,0,0,127],(s,a,o)=>{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,Q,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,a,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,g=>{w(this,_,g*129/16383*100)},g=>{},g=>{}][f](c,h)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,64,1],s=>{let a=s[0];if(a<16){let o="".padStart(a," ");s.subarray(1).forEach((i,r)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?s.subarray(1).forEach((o,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${o}ms`)},()=>{console.info(`${r}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)},()=>{console.debug(`${r}to delay: ${X(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?s.subarray(1).forEach((o,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],s=>{let a="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let a="GS EFX ",o=function(i,r){let c=yt(t(e,V).subarray(10,12),r,i);c&&console.debug(`${a}${Je(t(e,V).subarray(10,12))} ${c}`)};s.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${X(i)}dB`)},()=>{console.debug(`${a}to chorus: ${X(i)}dB`)},()=>{console.debug(`${a}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][s[0]+r]||function(c,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+r)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var a;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,te,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,te,Date.now()+3200),(a=t(e,oe)[s[0]-1])!=null&&a.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let r=s.subarray(2);for(let c=0;c>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let l=function(s,a,o){let i=s[0],r=$.cc*a,c=$.rpn*a,h=`GS CH${a+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,u)[r+p[0]]=f},()=>{t(e,O)[a]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,W)[a]=+!f},!1,()=>{e.setChType(a,f<<1,x.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[c+3]=f},!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},!1,!1,()=>{t(e,v)[c+1]=f},()=>{t(e,v)[c+2]=f},()=>{t(e,u)[r+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,a){let o=s[0],i=`GS CH${a+1} `;o<2?s.subarray(1).forEach((r,c)=>{[()=>{t(e,u)[$.cc*a+p[32]]=r},()=>{}][o+c]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((r,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][o+c-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ie).add([66,18,64,16],(s,a)=>{l(s,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(s,a)=>{l(s,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(s,a)=>{l(s,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(s,a)=>{l(s,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(s,a)=>{l(s,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(s,a)=>{l(s,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(s,a)=>{l(s,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(s,a)=>{l(s,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(s,a)=>{l(s,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(s,a)=>{l(s,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(s,a)=>{l(s,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(s,a)=>{l(s,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(s,a)=>{l(s,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(s,a)=>{l(s,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(s,a)=>{l(s,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(s,a)=>{l(s,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(s,a)=>{d(s,e.chRedir(9,a,!0))}).add([66,18,64,65],(s,a)=>{d(s,e.chRedir(0,a,!0))}).add([66,18,64,66],(s,a)=>{d(s,e.chRedir(1,a,!0))}).add([66,18,64,67],(s,a)=>{d(s,e.chRedir(2,a,!0))}).add([66,18,64,68],(s,a)=>{d(s,e.chRedir(3,a,!0))}).add([66,18,64,69],(s,a)=>{d(s,e.chRedir(4,a,!0))}).add([66,18,64,70],(s,a)=>{d(s,e.chRedir(5,a,!0))}).add([66,18,64,71],(s,a)=>{d(s,e.chRedir(6,a,!0))}).add([66,18,64,72],(s,a)=>{d(s,e.chRedir(7,a,!0))}).add([66,18,64,73],(s,a)=>{d(s,e.chRedir(8,a,!0))}).add([66,18,64,74],(s,a)=>{d(s,e.chRedir(10,a,!0))}).add([66,18,64,75],(s,a)=>{d(s,e.chRedir(11,a,!0))}).add([66,18,64,76],(s,a)=>{d(s,e.chRedir(12,a,!0))}).add([66,18,64,77],(s,a)=>{d(s,e.chRedir(13,a,!0))}).add([66,18,64,78],(s,a)=>{d(s,e.chRedir(14,a,!0))}).add([66,18,64,79],(s,a)=>{d(s,e.chRedir(15,a,!0))}),t(this,fe).add([54,65],(s,a)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],r=e.chRedir(o&15,a,!0),c=$.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-1,t(e,u)[c+p[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,x.x5d),t(e,O)[r]=i-101,t(e,u)[c+p[0]]=56):(e.setChType(r,e.CH_DRUMS,x.x5d),t(e,O)[r]=vt[i-229]||0,t(e,u)[c+p[0]]=62))},()=>{t(e,u)[c+p[7]]=i},()=>{i<31&&(t(e,u)[c+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,u)[c+p[93]]=_e(i)},()=>{t(e,u)[c+p[91]]=_e(i)},()=>{t(e,v)[r*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[r*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[r*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=82,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` -${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}r>99&&(i=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,77,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=90,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){if(g<13600){let y=g%136;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` -${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,a)=>{e.switchMode("x5d",!0),ee(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,a)=>{e.switchMode("x5d",!0),ee(s,function(o,i,r,c){if(i<192){let h=e.chRedir(Math.floor(i/12),a,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,x.x5d),t(e,u)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,x.x5d),t(e,u)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,u)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,u)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,u)[f+p[91]]=_e(y),t(e,u)[f+p[93]]=_e(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,a,!0)}})}),t(this,ie).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1];s.subarray(2).forEach((c,h)=>{let f=h+r;t(e,ge)[f+(i-1)*16]=c,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,ae)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=c+40},()=>{t(e,v)[i*$.rpn+1]=c+14},()=>{t(e,v)[i*$.rpn]=c},!1,()=>{t(e,u)[$.cc*i+p[91]]=c?127:0},!1,()=>{t(e,u)[$.cc*i+p[7]]=c},()=>{t(e,u)[$.cc*i+p[10]]=Math.ceil(c*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1]+(s[0]<<7);r<10&&(t(e,ae)[i]=1),s.subarray(2).forEach((c,h)=>{let f=h+r;f<14&&(t(e,Y)[(i-1)*$.cmt+f]=c)})}).add([22,18,3],(s,a,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((r,c)=>{let h=c+i;t(e,ge)[h]=r;let f=e.chRedir(1+h>>4,a,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,ae)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=r+40},()=>{t(e,v)[f*$.rpn+1]=r+14},()=>{t(e,v)[f*$.rpn]=r},!1,()=>{t(e,u)[$.cc*f+p[91]]=r?127:0},!1,()=>{t(e,u)[$.cc*f+p[7]]=r},()=>{t(e,u)[$.cc*f+p[10]]=Math.ceil(r*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,a,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((r,c)=>{let h=c+i,f=e.chRedir(Math.floor(h/246+1),a,!0),g=h%246;g<14&&(t(e,Y)[(f-1)*$.cmt+g]=r),g<10&&(t(e,ae)[f]=1)})}).add([22,18,5],(s,a,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=r,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${r.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,r+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME -000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,a,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=r)})}).add([22,18,16],(s,a,o)=>{e.switchMode("mt32");let i=s[1],r=!1,c=function(h,f){t(e,H)[f-12]=h,r=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{w(e,_,h)}][g]||(()=>{}))(h,f)}),r&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let a=s[1],o=" ".repeat(a);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,re,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,a)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,a)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{[r,r,r,r,()=>{w(e,_,c*129/16383*100)},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,0,1],(s,a)=>{}).add([66,18,0,2],(s,a)=>{}).add([66,18,1],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=o*$.cc,r=s[1],c=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=r+f;g<3?[()=>{t(e,u)[i+p[0]]=h||121},()=>{t(e,u)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!h},()=>{e.setChType(o,h,x.ns5r),console.debug(`${c}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,u)[i+p[7]]=h},()=>{t(e,u)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,u)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,u)[i+p[93]]=h},()=>{t(e,u)[i+p[91]]=h},()=>{t(e,u)[i+p[76]]=h},()=>{t(e,u)[i+p[77]]=h},()=>{t(e,u)[i+p[78]]=h},()=>{t(e,u)[i+p[74]]=h},()=>{t(e,u)[i+p[71]]=h},()=>{t(e,u)[i+p[73]]=h},()=>{t(e,u)[i+p[75]]=h},()=>{t(e,u)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,u)[i+p[5]]=h},()=>{t(e,u)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,a)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,te,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let r=s.subarray(1),c=4;r.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";ee(s,(i,r)=>{r<8?(i>31&&(o+=String.fromCharCode(i)),r==7&&(e.aiEfxName=o)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),ee(s,function(o,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),c=r*$.cc;switch(i%92){case 0:{t(e,u)[c+p[0]]=o||121;break}case 1:{t(e,u)[c+p[32]]=o;break}case 2:{t(e,O)[r]=o,o>0&&(t(e,P)[r]=1);break}case 3:{let h=e.chRedir(o,a,!0);t(e,H)[r]=h,r!=h&&(console.info(`NS5R CH${r+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[r*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,u)[c+p[7]]=o;break}case 11:{t(e,u)[c+p[11]]=o;break}case 14:{t(e,u)[c+p[10]]=o||128;break}case 19:{t(e,u)[c+p[93]]=o;break}case 20:{t(e,u)[c+p[91]]=o;break}case 84:{t(e,u)[c+p[65]]=o;break}case 85:{t(e,u)[c+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=80,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{c=f&127;break}case y==13:{h+=` -${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(h)}).add([66,55],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=88,r=0,c=0,h="MSB PRG LSB NME";ee(s,function(f,g){let y=g%126;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:break;case y==12:break;case y==13:{h+=` -${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let a=new Uint8Array(5760);ee(s,(o,i,r)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=o>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(s,a,o)=>{t(e,fe).run([66,...s],a,o)}),t(this,Me).add([16,0,8,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Q,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,a,o)=>{let i=e.chRedir(s[1],a,!0),r=$.cc*i,c=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,x.k11),t(e,u)[r+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,x.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,a,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,u)[r+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,u)[r+p[10]]=h},()=>{t(e,v)[c+3]=h+40},()=>{t(e,v)[c+1]=h>>1,t(e,v)[c+2]=h&1},()=>{t(e,u)[r+p[91]]=h?127:0},()=>{},()=>{t(e,u)[r+p[74]]=h},()=>{t(e,u)[r+p[73]]=h},()=>{t(e,u)[r+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=0,t(e,O)[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,x.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=7,t(e,O)[r]=i-100):(e.setChType(r,e.CH_DRUMS,x.k11),t(e,u)[c+p[0]]=122,t(e,u)[c+p[32]]=0,t(e,O)[r]=i-160)},()=>{let h=e.chRedir(i,a,!0);t(e,H)[r]=h,r!=h&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc,h=r*$.rpn,f=`GMLX CH${r+1} `;[()=>{t(e,P)[r]=i},()=>{t(e,u)[c+p[7]]=i},()=>{t(e,u)[c+p[10]]=i},()=>{t(e,u)[c+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,a,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,_,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let r=e.chRedir(s[0]&15,a,!0);if(s[1]==2){let c=e.chRedir(i,a,!0);t(e,H)[r]=c,r!=c&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${c+1}`))}else s[1]==19&&(t(e,u)[$.cc*r+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,j).add([127,0],(s,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,j).run(i,a,o)}).add([127,1,0,0],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=s[0];s.subarray(1).forEach((c,h)=>{([()=>{w(e,_,c*12900/16383)}][r+h]||(()=>{console.info(`Unrecognized ${i}ID: ${r+h}`)}))()})}).add([127,1,0,0,14],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,a,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],a,!0),r=$.cc*i,c=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,u)[r+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,u)[r+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,W)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,u)[r+p[7]]=f},()=>{t(e,u)[r+p[10]]=f},!1,!1,!1,()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[128]]=f},()=>{},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},!1,()=>{t(e,u)[r+p[65]]=f},()=>{t(e,u)[r+p[5]]=f},()=>{}][c+g]||(()=>{}))()})}).add([127,1,54,16],(s,a,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((r,c)=>{let f=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let g=r-64},()=>{let g=De[r]},()=>{let g=r/10},()=>{let g=r}][i+c&3]||(()=>{}))()})})}chRedir(e,n,l){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Q))>-1){if(l==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,l)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(l)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==x.mt32,e}getCc(e){let n=e*$.cc,l=t(this,u).subarray(n,n+$.cc);return l[p[0]]=l[p[0]]||t(this,ye),l[p[32]]=l[p[32]]||t(this,Q),l}getCcCh(e,n){if(Ie.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,u)[$.cc*e+p[n]]}getCcAll(){let e=t(this,u).slice();for(let n=0;n<$.ch;n++){let l=n*$.cc;e[l+p[0]]=e[l+p[0]]||t(this,ye),e[l+p[32]]=e[l+p[32]]||t(this,Q)}return e}getChSource(){return t(this,H)}getChType(){return t(this,T)}setChType(e,n,l=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,u)[e*$.cc+p[0]]=Se[l])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,C).slice()}getVel(e){let n=new Map,l=this;return t(l,U).forEach(function(d,s){let a=Math.floor(d/128),o=d%128;e==a&&t(l,A)[d]>0&&n.set(o,{v:t(l,A)[d],s:t(l,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,te)}}getLetter(){return{text:t(this,re),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,_)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let l=Math.floor(n/128);t(e,A)[n]>t(e,se)[l]&&(t(e,se)[l]=t(e,A)[n])}),t(this,se)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,d){e[d]=Math.floor(l*t(n,u)[d*$.cc+p[7]]*t(n,u)[d*$.cc+p[11]]*t(n,_)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,l,d){let s=e||t(this,ye),a=n,o=l||t(this,Q);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,a,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),c=r*$.cmt,h="";t(this,$e).subarray(c,c+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,a,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,u)[e*$.cc+p[0]],t(this,O)[e],t(this,u)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,ae)[e])switch(t(this,R)){case x.mt32:n.ending="~",n.name="",t(this,Y).subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,d=3200){let s=this,a;w(s,re," ".repeat(l)),e.forEach(o=>{w(s,re,t(s,re)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(s,we,Date.now()+3200),w(s,re,t(s,re).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,r)=>{r[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l<$.ace;)t(this,ce)[l]==e?n=!1:t(this,ce)[l]||(n=!1,t(this,ce)[l]=e,console.info(`Allocated cc${e} to ACE slot ${l}.`)),l++;l>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ce)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let l=t(this,ce)[n];if(l){if(Ie.indexOf(l)>=0)return t(this,u)[e*$.cc+p[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Q,0),w(this,le,0),t(this,P).fill(0),t(this,u).fill(0),t(this,ce).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,se).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,_,100),w(this,C,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,re,""),w(this,te,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,l,d){d[l]=l}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,u)[$.cc*9]=Se[0],t(this,u)[$.cc*25]=Se[0],t(this,u)[$.cc*41]=Se[0],t(this,u)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,Y).fill(0),t(this,ae).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let l=n*$.cc;t(this,u)[l+p[7]]=100,t(this,u)[l+p[11]]=127,t(this,u)[l+p[10]]=64,t(this,u)[l+p[71]]=64,t(this,u)[l+p[72]]=64,t(this,u)[l+p[73]]=64,t(this,u)[l+p[74]]=64,t(this,u)[l+p[75]]=64,t(this,u)[l+p[76]]=64,t(this,u)[l+p[77]]=64,t(this,u)[l+p[78]]=64,t(this,u)[l+p[91]]=40,t(this,u)[l+p[101]]=127,t(this,u)[l+p[100]]=127,t(this,u)[l+p[99]]=127,t(this,u)[l+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let l=be.indexOf(e);if(l>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,l),w(this,K,0),w(this,ye,Et[0][l]),w(this,Q,Et[1][l]);for(let a=0;a<$.ch;a++)t(this,T)[a]>0&&t(this,u)[a*$.cc+p[0]]==Se[d]&&(t(this,u)[a*$.cc]=Se[l]);switch(this.initOnReset,l){case x.mt32:{Ze.forEach((a,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=a,t(this,u)[i*$.cc+p[91]]=127)});break}}let s;switch(l){case x.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case x.x5d:case x.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,V)[3*a]||(t(this,V)[3*a+1]=s[2*a],t(this,V)[3*a+2]=s[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,se).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let l=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[l])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${l+1} without any recipient.`)}t(this,C).length>100&&t(this,C).splice(100,t(this,C).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,te=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,u=new WeakMap,ce=new WeakMap,O=new WeakMap,A=new WeakMap,W=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,se=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,ae=new WeakMap,ge=new WeakMap,Y=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Q=new WeakMap,_=new WeakMap,le=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,re=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,C=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,xe=new WeakMap,Ce=new WeakMap,j=new WeakMap,ie=new WeakMap,fe=new WeakMap,Me=new WeakMap,Te=new WeakMap,Re=new WeakMap,Ct);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Mt as dnToPos}; +122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,x).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,x).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,x).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,x).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,x).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let a=s.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,x).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,x).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,x).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,x).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,x).unshift(s.slice(1)):t(this,x)[0]+=s:(t(this,x)[0]=s,t(this,x).unshift(""))}},t(this,G)[2]=function(s){t(this,x).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,a){a<1&&t(this,le)<1&&t(this,x).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,a){t(this,x).unshift(`${Mt(t(this,le),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,x).unshift(""):t(this,x)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,x).unshift(`${Mt(t(this,le),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,x).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,le,s[0]+1)},t(this,G)[33]=function(s,a){console.debug(`Track ${a} requests to get assigned to output ${s}.`),t(e,Ee)[a]=s+1},t(this,G)[81]=function(s,a){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,a){t(e,ve).run(s,a)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,a){t(e,Ee)[a]=s[0]+1}),w(this,Me,new ee("universal non-realtime")),w(this,xe,new ee("universal realtime")),w(this,j,new ee("Yamaha")),w(this,Z,new ee("Roland")),w(this,fe,new ee("Korg")),w(this,Ce,new ee("Kawai")),w(this,Te,new ee("Akai")),w(this,Re,new ee("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,Me).default=n,t(this,xe).default=n,t(this,j).default=n,t(this,Z).default=n,t(this,fe).default=n,t(this,Ce).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,Me).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,xe).add([4,1],s=>{w(e,I,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,j).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,r)=>{a[r]=i};if(s.subarray(1).forEach((i,r)=>{let c=r+s[0];([o,o,o,o,h=>{w(this,I,h*129/16383*100)},h=>{},h=>{}][c]||(()=>{}))(i,r)}),s[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],s=>{let a="XG ";s[0]<32?(a+="reverb ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${ft(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(a+="chorus ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ht[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${dt(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${De[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${De[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(a+="variation ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(a+="variation ",s.subarray(1).forEach((o,i)=>{[r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},r=>{console.debug(`${a}to chorus: ${X(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((a,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,c=i-1&3,h=`XG EQ ${r} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${h}${a-64}dB`)},()=>{console.debug(`${h}${a} (raw)`)},()=>{console.debug(`${h}${a/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],s=>{let a=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((r,c)=>{([h=>{e.setEffectTypeRaw(3+a,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+a,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+c]||function(){})(r)})}).add([76,6,0],s=>{let a=s[0];a<64?e.setLetterDisplay(s.subarray(1),"XG letter display",a):w(e,we,Date.now())}).add([76,7,0],s=>{let a=s[0];w(e,K,0),w(e,se,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=$.cc*o,c=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,u)[r+p[0]]=f},()=>{t(e,u)[r+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!f},()=>{},()=>{e.setChType(o,f,M.xg),console.debug(`${c}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{t(e,u)[r+p[128]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[76]]=f},()=>{t(e,u)[r+p[77]]=f},()=>{t(e,u)[r+p[78]]=f},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},()=>{t(e,u)[r+p[73]]=f},()=>{t(e,u)[r+p[75]]=f},()=>{t(e,u)[r+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,u)[r+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((c,h)=>{let f=h+i;switch(f){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${r}${g} control source: ${pt(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${r}${g} scale break point: ${c}`):console.debug(`${r}${g} depth: ${c-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,a)=>{let o=s[0],i="MU1000 System: ";s.subarray(1).forEach((r,c)=>{let h=o+c;h==8?console.debug(`${i}LCD contrast set to ${r}.`):h==18?(w(e,Q,r?126:0),console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):h>=64&&h<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.debug(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.debug(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!r),console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][h-64]()})}).add([73,10,0],(s,a)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let r=e.chRedir(0,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(s[1]<<5,a,!0);t(e,J)&&e.dispatchEvent("channelmin",r),t(e,J)&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let r=e.chRedir(o-16+(t(e,He)<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(o<36){let r=e.chRedir(o-32<<4,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),w(e,He,o-32)),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=`PLG-100SG CH${o+1} `,r=Date.now();if(s[1]==0){let c="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?c+=ut[f]||f.toString().padStart("0"):h+=f*13}),r>=t(e,Ne)&&t(e,x).unshift("SG Lyric: "),t(e,x)[0]+=`${bt(c)}`,w(e,Ne,r+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,j).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,j).add([89,0],(s,a,o)=>{if(e.eprom){let i=s[0],r=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)c[r+7*g+S]+=(h>>6-S&1)<<7;else c[r+7*g+y]=h})}}).add([89,1],(s,a,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,a,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;s.subarray(4).forEach((c,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)r[i+7*f+y]+=(c>>6-y&1)<<7;else r[i+7*f+g]=c})}}).add([89,3],(s,a,o)=>{}),t(this,j).add([39,48],(s,a,o)=>{}).add([43,0,0],(s,a,o)=>{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,()=>{w(this,I,c*129/16383*100)},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][f](c,f)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}).add([43,1,0],(s,a,o)=>{}).add([43,2],(s,a,o)=>{let i=e.chRedir(s[0],a,!0),r=s[1],c=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,u)[c+p[0]]=f},()=>{t(e,u)[c+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+r]||(()=>{}))(f,g+r):g<21||(g<47?([()=>{t(e,W)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,u)[c+p[7]]=f},!1,!1,()=>{t(e,u)[c+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,u)[c+p[128]]=f},()=>{t(e,u)[c+p[93]]=f},()=>{t(e,u)[c+p[91]]=f},()=>{t(e,u)[c+p[94]]=f},()=>{t(e,u)[c+p[76]]=f},()=>{t(e,u)[c+p[77]]=f},()=>{t(e,u)[c+p[74]]=f},()=>{t(e,u)[c+p[71]]=f},()=>{t(e,u)[c+p[73]]=f},()=>{t(e,u)[c+p[75]]=f},()=>{t(e,u)[c+p[72]]=f},()=>{t(e,u)[c+p[78]]=f}][g+r-21]||(()=>{}))(f,g+r):g<95||([()=>{t(e,u)[c+p[65]]=f},()=>{t(e,u)[c+p[5]]=f}][g+r-95]||(()=>{}))(f,g+r))})}).add([43,7,0],(s,a,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,a,o)=>{w(e,K,0),w(e,se,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,r){let c=Math.floor(r/16),h=r%16,f=(h*3+c)*7,g=7,y=0;for(f-=h*5,c==2&&(g=2);y>6-y&1,y++})}),t(this,Z).add([66,18,0,0,127],(s,a,o)=>{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,Q,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,a,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,g=>{w(this,I,g*129/16383*100)},g=>{},g=>{}][f](c,h)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,64,1],s=>{let a=s[0];if(a<16){let o="".padStart(a," ");s.subarray(1).forEach((i,r)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?s.subarray(1).forEach((o,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${o}ms`)},()=>{console.info(`${r}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)},()=>{console.debug(`${r}to delay: ${X(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?s.subarray(1).forEach((o,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],s=>{let a="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let a="GS EFX ",o=function(i,r){let c=yt(t(e,V).subarray(10,12),r,i);c&&console.debug(`${a}${Je(t(e,V).subarray(10,12))} ${c}`)};s.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${X(i)}dB`)},()=>{console.debug(`${a}to chorus: ${X(i)}dB`)},()=>{console.debug(`${a}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][s[0]+r]||function(c,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+r)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var a;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,se,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,se,Date.now()+3200),(a=t(e,oe)[s[0]-1])!=null&&a.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let r=s.subarray(2);for(let c=0;c>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let l=function(s,a,o){let i=s[0],r=$.cc*a,c=$.rpn*a,h=`GS CH${a+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,u)[r+p[0]]=f},()=>{t(e,O)[a]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,W)[a]=+!f},!1,()=>{e.setChType(a,f<<1,M.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[c+3]=f},!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},!1,!1,()=>{t(e,v)[c+1]=f},()=>{t(e,v)[c+2]=f},()=>{t(e,u)[r+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,a){let o=s[0],i=`GS CH${a+1} `;o<2?s.subarray(1).forEach((r,c)=>{[()=>{t(e,u)[$.cc*a+p[32]]=r},()=>{}][o+c]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((r,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][o+c-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,Z).add([66,18,64,16],(s,a)=>{l(s,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(s,a)=>{l(s,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(s,a)=>{l(s,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(s,a)=>{l(s,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(s,a)=>{l(s,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(s,a)=>{l(s,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(s,a)=>{l(s,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(s,a)=>{l(s,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(s,a)=>{l(s,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(s,a)=>{l(s,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(s,a)=>{l(s,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(s,a)=>{l(s,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(s,a)=>{l(s,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(s,a)=>{l(s,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(s,a)=>{l(s,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(s,a)=>{l(s,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(s,a)=>{d(s,e.chRedir(9,a,!0))}).add([66,18,64,65],(s,a)=>{d(s,e.chRedir(0,a,!0))}).add([66,18,64,66],(s,a)=>{d(s,e.chRedir(1,a,!0))}).add([66,18,64,67],(s,a)=>{d(s,e.chRedir(2,a,!0))}).add([66,18,64,68],(s,a)=>{d(s,e.chRedir(3,a,!0))}).add([66,18,64,69],(s,a)=>{d(s,e.chRedir(4,a,!0))}).add([66,18,64,70],(s,a)=>{d(s,e.chRedir(5,a,!0))}).add([66,18,64,71],(s,a)=>{d(s,e.chRedir(6,a,!0))}).add([66,18,64,72],(s,a)=>{d(s,e.chRedir(7,a,!0))}).add([66,18,64,73],(s,a)=>{d(s,e.chRedir(8,a,!0))}).add([66,18,64,74],(s,a)=>{d(s,e.chRedir(10,a,!0))}).add([66,18,64,75],(s,a)=>{d(s,e.chRedir(11,a,!0))}).add([66,18,64,76],(s,a)=>{d(s,e.chRedir(12,a,!0))}).add([66,18,64,77],(s,a)=>{d(s,e.chRedir(13,a,!0))}).add([66,18,64,78],(s,a)=>{d(s,e.chRedir(14,a,!0))}).add([66,18,64,79],(s,a)=>{d(s,e.chRedir(15,a,!0))}),t(this,fe).add([54,65],(s,a)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],r=e.chRedir(o&15,a,!0),c=$.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,M.x5d),t(e,O)[r]=i-1,t(e,u)[c+p[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,M.x5d),t(e,O)[r]=i-101,t(e,u)[c+p[0]]=56):(e.setChType(r,e.CH_DRUMS,M.x5d),t(e,O)[r]=vt[i-229]||0,t(e,u)[c+p[0]]=62))},()=>{t(e,u)[c+p[7]]=i},()=>{i<31&&(t(e,u)[c+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,u)[c+p[93]]=Ie(i)},()=>{t(e,u)[c+p[91]]=Ie(i)},()=>{t(e,v)[r*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[r*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[r*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=82,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}r>99&&(i=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,77,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=90,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){if(g<13600){let y=g%136;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,a)=>{e.switchMode("x5d",!0),te(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,a)=>{e.switchMode("x5d",!0),te(s,function(o,i,r,c){if(i<192){let h=e.chRedir(Math.floor(i/12),a,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,M.x5d),t(e,u)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,M.x5d),t(e,u)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,u)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,u)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,u)[f+p[91]]=Ie(y),t(e,u)[f+p[93]]=Ie(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,a,!0)}})}),t(this,Z).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1];s.subarray(2).forEach((c,h)=>{let f=h+r;t(e,ge)[f+(i-1)*16]=c,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,re)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=c+40},()=>{t(e,v)[i*$.rpn+1]=c+14},()=>{t(e,v)[i*$.rpn]=c},!1,()=>{t(e,u)[$.cc*i+p[91]]=c?127:0},!1,()=>{t(e,u)[$.cc*i+p[7]]=c},()=>{t(e,u)[$.cc*i+p[10]]=Math.ceil(c*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1]+(s[0]<<7);r<10&&(t(e,re)[i]=1),s.subarray(2).forEach((c,h)=>{let f=h+r;f<14&&(t(e,Y)[(i-1)*$.cmt+f]=c)})}).add([22,18,3],(s,a,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((r,c)=>{let h=c+i;t(e,ge)[h]=r;let f=e.chRedir(1+h>>4,a,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,re)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=r+40},()=>{t(e,v)[f*$.rpn+1]=r+14},()=>{t(e,v)[f*$.rpn]=r},!1,()=>{t(e,u)[$.cc*f+p[91]]=r?127:0},!1,()=>{t(e,u)[$.cc*f+p[7]]=r},()=>{t(e,u)[$.cc*f+p[10]]=Math.ceil(r*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,a,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((r,c)=>{let h=c+i,f=e.chRedir(Math.floor(h/246+1),a,!0),g=h%246;g<14&&(t(e,Y)[(f-1)*$.cmt+g]=r),g<10&&(t(e,re)[f]=1)})}).add([22,18,5],(s,a,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=r,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${r.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,r+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME +000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,a,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=r)})}).add([22,18,16],(s,a,o)=>{e.switchMode("mt32");let i=s[1],r=!1,c=function(h,f){t(e,H)[f-12]=h,r=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{w(e,I,h)}][g]||(()=>{}))(h,f)}),r&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let a=s[1],o=" ".repeat(a);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,ie,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,a)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,a)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{[r,r,r,r,()=>{w(e,I,c*129/16383*100)},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,0,1],(s,a)=>{}).add([66,18,0,2],(s,a)=>{}).add([66,18,1],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=o*$.cc,r=s[1],c=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=r+f;g<3?[()=>{t(e,u)[i+p[0]]=h||121},()=>{t(e,u)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!h},()=>{e.setChType(o,h,M.ns5r),console.debug(`${c}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,u)[i+p[7]]=h},()=>{t(e,u)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,u)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,u)[i+p[93]]=h},()=>{t(e,u)[i+p[91]]=h},()=>{t(e,u)[i+p[76]]=h},()=>{t(e,u)[i+p[77]]=h},()=>{t(e,u)[i+p[78]]=h},()=>{t(e,u)[i+p[74]]=h},()=>{t(e,u)[i+p[71]]=h},()=>{t(e,u)[i+p[73]]=h},()=>{t(e,u)[i+p[75]]=h},()=>{t(e,u)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,u)[i+p[5]]=h},()=>{t(e,u)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,a)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,se,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let r=s.subarray(1),c=4;r.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";te(s,(i,r)=>{r<8?(i>31&&(o+=String.fromCharCode(i)),r==7&&(e.aiEfxName=o)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),te(s,function(o,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),c=r*$.cc;switch(i%92){case 0:{t(e,u)[c+p[0]]=o||121;break}case 1:{t(e,u)[c+p[32]]=o;break}case 2:{t(e,O)[r]=o,o>0&&(t(e,P)[r]=1);break}case 3:{let h=e.chRedir(o,a,!0);t(e,H)[r]=h,r!=h&&(console.info(`NS5R CH${r+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[r*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,u)[c+p[7]]=o;break}case 11:{t(e,u)[c+p[11]]=o;break}case 14:{t(e,u)[c+p[10]]=o||128;break}case 19:{t(e,u)[c+p[93]]=o;break}case 20:{t(e,u)[c+p[91]]=o;break}case 84:{t(e,u)[c+p[65]]=o;break}case 85:{t(e,u)[c+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=80,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{c=f&127;break}case y==13:{h+=` +${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(h)}).add([66,55],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=88,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){let y=g%126;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:break;case y==12:break;case y==13:{h+=` +${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let a=new Uint8Array(5760);te(s,(o,i,r)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=o>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(s,a,o)=>{t(e,fe).run([66,...s],a,o)}),t(this,Ce).add([16,0,8,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Q,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,a,o)=>{let i=e.chRedir(s[1],a,!0),r=$.cc*i,c=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,u)[r+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,a,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,u)[r+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,u)[r+p[10]]=h},()=>{t(e,v)[c+3]=h+40},()=>{t(e,v)[c+1]=h>>1,t(e,v)[c+2]=h&1},()=>{t(e,u)[r+p[91]]=h?127:0},()=>{},()=>{t(e,u)[r+p[74]]=h},()=>{t(e,u)[r+p[73]]=h},()=>{t(e,u)[r+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,M.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=0,t(e,O)[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,M.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=7,t(e,O)[r]=i-100):(e.setChType(r,e.CH_DRUMS,M.k11),t(e,u)[c+p[0]]=122,t(e,u)[c+p[32]]=0,t(e,O)[r]=i-160)},()=>{let h=e.chRedir(i,a,!0);t(e,H)[r]=h,r!=h&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc,h=r*$.rpn,f=`GMLX CH${r+1} `;[()=>{t(e,P)[r]=i},()=>{t(e,u)[c+p[7]]=i},()=>{t(e,u)[c+p[10]]=i},()=>{t(e,u)[c+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,a,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,I,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let r=e.chRedir(s[0]&15,a,!0);if(s[1]==2){let c=e.chRedir(i,a,!0);t(e,H)[r]=c,r!=c&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${c+1}`))}else s[1]==19&&(t(e,u)[$.cc*r+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,j).add([127,0],(s,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,j).run(i,a,o)}).add([127,1,0,0],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=s[0];s.subarray(1).forEach((c,h)=>{([()=>{w(e,I,c*12900/16383)}][r+h]||(()=>{console.info(`Unrecognized ${i}ID: ${r+h}`)}))()})}).add([127,1,0,0,14],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,a,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],a,!0),r=$.cc*i,c=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,u)[r+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,u)[r+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,W)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,u)[r+p[7]]=f},()=>{t(e,u)[r+p[10]]=f},!1,!1,!1,()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[128]]=f},()=>{},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},!1,()=>{t(e,u)[r+p[65]]=f},()=>{t(e,u)[r+p[5]]=f},()=>{}][c+g]||(()=>{}))()})}).add([127,1,54,16],(s,a,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((r,c)=>{let f=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let g=r-64},()=>{let g=De[r]},()=>{let g=r/10},()=>{let g=r}][i+c&3]||(()=>{}))()})}),t(this,Z).add([0,72,18,0,0,0,0],(s,a,o)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}chRedir(e,n,l){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Q))>-1){if(l==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,l)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(l)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==M.mt32,e}getCc(e){let n=e*$.cc,l=t(this,u).subarray(n,n+$.cc);return l[p[0]]=l[p[0]]||t(this,ye),l[p[32]]=l[p[32]]||t(this,Q),l}getCcCh(e,n){if(_e.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,u)[$.cc*e+p[n]]}getCcAll(){let e=t(this,u).slice();for(let n=0;n<$.ch;n++){let l=n*$.cc;e[l+p[0]]=e[l+p[0]]||t(this,ye),e[l+p[32]]=e[l+p[32]]||t(this,Q)}return e}getChSource(){return t(this,H)}getChType(){return t(this,T)}setChType(e,n,l=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,u)[e*$.cc+p[0]]=Se[l])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,x).slice()}getVel(e){let n=new Map,l=this;return t(l,U).forEach(function(d,s){let a=Math.floor(d/128),o=d%128;e==a&&t(l,A)[d]>0&&n.set(o,{v:t(l,A)[d],s:t(l,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,se)}}getLetter(){return{text:t(this,ie),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,I)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let l=Math.floor(n/128);t(e,A)[n]>t(e,ae)[l]&&(t(e,ae)[l]=t(e,A)[n])}),t(this,ae)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,d){e[d]=Math.floor(l*t(n,u)[d*$.cc+p[7]]*t(n,u)[d*$.cc+p[11]]*t(n,I)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,l,d){let s=e||t(this,ye),a=n,o=l||t(this,Q);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,a,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),c=r*$.cmt,h="";t(this,$e).subarray(c,c+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,a,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,u)[e*$.cc+p[0]],t(this,O)[e],t(this,u)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,re)[e])switch(t(this,R)){case M.mt32:n.ending="~",n.name="",t(this,Y).subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,d=3200){let s=this,a;w(s,ie," ".repeat(l)),e.forEach(o=>{w(s,ie,t(s,ie)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(s,we,Date.now()+3200),w(s,ie,t(s,ie).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,r)=>{r[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l<$.ace;)t(this,ce)[l]==e?n=!1:t(this,ce)[l]||(n=!1,t(this,ce)[l]=e,console.info(`Allocated cc${e} to ACE slot ${l}.`)),l++;l>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ce)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let l=t(this,ce)[n];if(l){if(_e.indexOf(l)>=0)return t(this,u)[e*$.cc+p[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Q,0),w(this,le,0),t(this,P).fill(0),t(this,u).fill(0),t(this,ce).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,ae).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,I,100),w(this,x,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,ie,""),w(this,se,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,l,d){d[l]=l}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,u)[$.cc*9]=Se[0],t(this,u)[$.cc*25]=Se[0],t(this,u)[$.cc*41]=Se[0],t(this,u)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,Y).fill(0),t(this,re).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let l=n*$.cc;t(this,u)[l+p[7]]=100,t(this,u)[l+p[11]]=127,t(this,u)[l+p[10]]=64,t(this,u)[l+p[71]]=64,t(this,u)[l+p[72]]=64,t(this,u)[l+p[73]]=64,t(this,u)[l+p[74]]=64,t(this,u)[l+p[75]]=64,t(this,u)[l+p[76]]=64,t(this,u)[l+p[77]]=64,t(this,u)[l+p[78]]=64,t(this,u)[l+p[91]]=40,t(this,u)[l+p[101]]=127,t(this,u)[l+p[100]]=127,t(this,u)[l+p[99]]=127,t(this,u)[l+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let l=be.indexOf(e);if(l>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,l),w(this,K,0),w(this,ye,Et[0][l]),w(this,Q,Et[1][l]);for(let a=0;a<$.ch;a++)t(this,T)[a]>0&&t(this,u)[a*$.cc+p[0]]==Se[d]&&(t(this,u)[a*$.cc]=Se[l]);switch(this.initOnReset,l){case M.mt32:{Ze.forEach((a,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=a,t(this,u)[i*$.cc+p[91]]=127)});break}}let s;switch(l){case M.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,V)[3*a]||(t(this,V)[3*a+1]=s[2*a],t(this,V)[3*a+2]=s[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,ae).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let l=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[l])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${l+1} without any recipient.`)}t(this,x).length>100&&t(this,x).splice(100,t(this,x).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,se=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,u=new WeakMap,ce=new WeakMap,O=new WeakMap,A=new WeakMap,W=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,ae=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,re=new WeakMap,ge=new WeakMap,Y=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Q=new WeakMap,I=new WeakMap,le=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,ie=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,x=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,Me=new WeakMap,xe=new WeakMap,j=new WeakMap,Z=new WeakMap,fe=new WeakMap,Ce=new WeakMap,Te=new WeakMap,Re=new WeakMap,xt);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Ct as dnToPos}; diff --git a/src/state/index.mjs b/src/state/index.mjs index f2902b93..e12ad8ae 100644 --- a/src/state/index.mjs +++ b/src/state/index.mjs @@ -35,7 +35,7 @@ import { const modeIdx = [ "?", "gm", "gs", "xg", "g2", - "mt32", "ns5r", "x5d", "05rw", + "mt32", "ns5r", "x5d", "05rw", "sd", "k11", "sg", "krs", "s90es", "motif" ]; @@ -3884,6 +3884,10 @@ let OctaviaDevice = class extends CustomEventSource { },][(offset + i) & 3] || (() => {}))(); }); }); + this.#seGs.add([0, 72, 18, 0, 0, 0, 0], (msg, track, id) => { + upThis.switchMode("sd", true); + console.info(`MIDI reset: SD`); + }); }; }; diff --git a/test/fakeMu.htm b/test/fakeMu.htm index a5837e98..692f37cb 100644 --- a/test/fakeMu.htm +++ b/test/fakeMu.htm @@ -28,9 +28,9 @@ GS, XG, GM2, + SD, MT-32, NS5R, - AG-10, 05R/W, X5D, GMega, diff --git a/test/fakeNs5r.htm b/test/fakeNs5r.htm index 947be7a8..b21d04d3 100644 --- a/test/fakeNs5r.htm +++ b/test/fakeNs5r.htm @@ -28,9 +28,9 @@ GS, XG, GM2, + SD, MT-32, NS5R, - AG-10, 05R/W, X5D, GMega, diff --git a/test/fakePsr.htm b/test/fakePsr.htm index 7ace1bb6..1f8d43cc 100644 --- a/test/fakePsr.htm +++ b/test/fakePsr.htm @@ -28,9 +28,9 @@ GS, XG, GM2, + SD, MT-32, NS5R, - AG-10, 05R/W, X5D, GMega, diff --git a/test/fakeQy.htm b/test/fakeQy.htm index 8751d0e6..0d255eb5 100644 --- a/test/fakeQy.htm +++ b/test/fakeQy.htm @@ -28,9 +28,9 @@ GS, XG, GM2, + SD, MT-32, NS5R, - AG-10, 05R/W, X5D, GMega, diff --git a/test/fakeSc.htm b/test/fakeSc.htm index 8f84f8bd..7b24172a 100644 --- a/test/fakeSc.htm +++ b/test/fakeSc.htm @@ -28,9 +28,9 @@ GS, XG, GM2, + SD, MT-32, NS5R, - AG-10, 05R/W, X5D, GMega, From 3017e7badd8edd268de4eba89f305d708ec2bec0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lumi=C3=A8re=20=C3=89lev=C3=A9?= <88174309+PoneyClairDeLune@users.noreply.github.com> Date: Mon, 3 Jul 2023 03:54:59 +0000 Subject: [PATCH 31/31] Bug fixes regarding StudioCanvas SD support. --- data/bank/plg-150dr.tsv | 320 ++++++++++++++++++++-------------------- data/bank/sd.tsv | 211 ++++++++++++++++++++++++++ dist/basic.mjs | 4 +- dist/cambiare.mjs | 22 +-- dist/state.mjs | 26 ++-- dist/state_skim.mjs | 10 +- dist/xp_basic.mjs | 14 +- dist/xp_state.mjs | 18 +-- src/demoTui/index.js | 12 +- src/disp/disp_tui.mjs | 1 + src/state/bankReader.js | 23 ++- src/state/index.mjs | 22 ++- test/tui.htm | 2 +- 13 files changed, 466 insertions(+), 219 deletions(-) create mode 100644 data/bank/sd.tsv diff --git a/data/bank/plg-150dr.tsv b/data/bank/plg-150dr.tsv index a5be98ee..4d11d301 100644 --- a/data/bank/plg-150dr.tsv +++ b/data/bank/plg-150dr.tsv @@ -1,161 +1,161 @@ MSB LSB PRG NME -079 000 000 LiveRm A -079 000 001 LiveRm B -079 000 002 PowrdStd -079 000 003 DryStand -079 000 004 RockSt1 -079 000 005 RockSt2 -079 000 006 DryKit A -079 000 007 DryKit B -079 000 008 SmlRoom1 -079 000 009 SmlRoom2 -079 000 010 HeavyKit -079 000 011 RingSnrs -079 000 012 Rocky -079 000 013 Trashed1 -079 000 014 Trashed2 -079 000 015 Trashed3 -079 000 016 Weirdo -079 000 017 DarkBrk -079 000 018 BriteBrk -079 000 019 RockBrk -079 000 020 DirtyTek -079 000 021 Ethnic -079 000 022 DigiLofi -079 000 023 NoizElec -079 000 024 BreakAmb -079 000 025 Electron -079 000 026 EthncAmb -079 000 027 Flanger -079 000 028 Phaser1 -079 000 029 Phaser2 -079 000 030 AM/PM -079 000 031 AutoPan -079 000 032 Drone -079 000 033 SnareKit -079 000 034 Cym Amb -079 000 035 KitA/Ht1 -079 000 036 KitB/ht1 -079 000 037 KitA/Ht2 -079 000 038 KitB/Ht2 -079 000 039 Spread1 -079 000 040 Spread2 -079 000 041 Spread3 -079 000 042 Spread4 -079 000 043 KicksPC -079 000 044 SnaresPC -079 000 045 TomsPC -079 000 046 HatsPC -079 000 047 Cymbals -079 000 048 AC-PlgPC -079 000 049 Br-PlgPC -079 000 050 ABAA/Prc -079 000 051 AABA/Prc -079 000 052 AAAB/Prc -079 000 053 ABBA/Prc -079 000 054 AABB/Prc -079 000 055 ABAB/Prc -079 000 056 ABBB/Prc -079 000 057 BABB/Prc -079 000 058 BBAB/Prc -079 000 059 BBBA/Prc -079 000 060 BAAB/Prc -079 000 061 BBAA/Prc -079 000 062 BABA/Prc -079 000 063 BAAA/Prc -079 000 064 AAAA/Kk -079 000 065 ABAA/Sn1 -079 000 066 AABA/Sn2 -079 000 067 AAAB/Tom -079 000 068 ABBA/Hat -079 000 069 AABB/Cym -079 000 070 ABAB/Sn1 -079 000 071 ABBB/Sn2 -079 000 072 BBBB/Kk -079 000 073 BABB/Sn1 -079 000 074 BBAB/Sn2 -079 000 075 BBBA/Tom -079 000 076 BAAB/Hat -079 000 077 BBAA/Cym -079 000 078 BABA/Sn1 -079 000 079 BAAA/Sn2 -079 001 000 AfroCubn -079 001 001 BrazilKt -079 001 002 MotifLtn -079 001 003 GM Perc -079 001 004 AfrCbn61 -079 001 005 BruzKt61 -079 001 006 AC-PlgDR -079 001 007 Br-PlgDR -079 001 008 Lt-PlgDR -079 001 009 GMLtnDrm -079 001 010 Live Pop -079 001 011 Kick&Snr -079 001 012 AfCbHand -079 001 013 BrzlHnd1 -079 001 014 BrzlHnd2 -079 001 015 BellsKit -079 001 016 Shakers -079 001 017 SkinsKit -079 001 018 Sticks 1 -079 001 019 Sticks 2 -079 001 020 DlyAfrCb -079 001 021 DlyBrazl -079 001 022 DlyGMPrc -079 001 023 DlyGMLtn -079 001 024 NzDAfrCb -079 001 025 NzDBrazl -079 001 026 OdAfrCbn -079 001 027 OdBrazil -079 001 028 OdGMLatn -079 001 029 OdKk&Snr -079 001 030 Dst1AfCb -079 001 031 Dst1Brzl -079 001 032 Dst1GMLt -079 001 033 Dst1Kk&S -079 001 034 Dst2AfCb -079 001 035 Dst2Brzl -079 001 036 Dst2GMLt -079 001 037 Dst2Kk&S -079 001 038 FlgAfrCb -079 001 039 FlgBrazl -079 001 040 FlgShkrs -079 001 041 PhsShkrs -079 001 042 Rz1Skins -079 001 043 Rz1Sick -079 001 044 Rz2Kk&Sn -079 001 045 Rz2Stick -079 001 046 Md1AfrCb -079 001 047 Md1Brazl -079 001 048 Md2AfrCb -079 001 049 Md2Brazl -079 001 050 Md3Bells -079 001 051 Md3Shkrs -079 001 052 Md4BrHd1 -079 001 053 Md4BrHd2 -079 001 054 Md5BrHd1 -079 001 055 Md5BrHd2 -079 001 056 PchBells -079 001 057 PchShkrs -079 001 058 PchSkins -079 001 059 PchStick -079 001 060 RevAfrCb -079 001 061 RvBrazil -079 001 062 RevMotif -079 001 063 RvGMPerc -079 001 064 RvAfCb61 -079 001 065 RvBrzl61 -079 001 066 RvACPgDR -079 001 067 RvBrPgDR -079 001 068 RvLtPgDR -079 001 069 RevGMLtn -079 001 070 RevLvPop -079 001 071 RevKk&Sn -079 001 072 RevACHnd -079 001 073 RevBrHd1 -079 001 074 RevBrHd2 -079 001 075 RevBells -079 001 076 RevShkrs -079 001 077 RevSkins -079 001 078 RvStick1 -079 001 079 RvStick2 +095 000 000 LiveRm A +095 000 001 LiveRm B +095 000 002 PowrdStd +095 000 003 DryStand +095 000 004 RockSt1 +095 000 005 RockSt2 +095 000 006 DryKit A +095 000 007 DryKit B +095 000 008 SmlRoom1 +095 000 009 SmlRoom2 +095 000 010 HeavyKit +095 000 011 RingSnrs +095 000 012 Rocky +095 000 013 Trashed1 +095 000 014 Trashed2 +095 000 015 Trashed3 +095 000 016 Weirdo +095 000 017 DarkBrk +095 000 018 BriteBrk +095 000 019 RockBrk +095 000 020 DirtyTek +095 000 021 Ethnic +095 000 022 DigiLofi +095 000 023 NoizElec +095 000 024 BreakAmb +095 000 025 Electron +095 000 026 EthncAmb +095 000 027 Flanger +095 000 028 Phaser1 +095 000 029 Phaser2 +095 000 030 AM/PM +095 000 031 AutoPan +095 000 032 Drone +095 000 033 SnareKit +095 000 034 Cym Amb +095 000 035 KitA/Ht1 +095 000 036 KitB/ht1 +095 000 037 KitA/Ht2 +095 000 038 KitB/Ht2 +095 000 039 Spread1 +095 000 040 Spread2 +095 000 041 Spread3 +095 000 042 Spread4 +095 000 043 KicksPC +095 000 044 SnaresPC +095 000 045 TomsPC +095 000 046 HatsPC +095 000 047 Cymbals +095 000 048 AC-PlgPC +095 000 049 Br-PlgPC +095 000 050 ABAA/Prc +095 000 051 AABA/Prc +095 000 052 AAAB/Prc +095 000 053 ABBA/Prc +095 000 054 AABB/Prc +095 000 055 ABAB/Prc +095 000 056 ABBB/Prc +095 000 057 BABB/Prc +095 000 058 BBAB/Prc +095 000 059 BBBA/Prc +095 000 060 BAAB/Prc +095 000 061 BBAA/Prc +095 000 062 BABA/Prc +095 000 063 BAAA/Prc +095 000 064 AAAA/Kk +095 000 065 ABAA/Sn1 +095 000 066 AABA/Sn2 +095 000 067 AAAB/Tom +095 000 068 ABBA/Hat +095 000 069 AABB/Cym +095 000 070 ABAB/Sn1 +095 000 071 ABBB/Sn2 +095 000 072 BBBB/Kk +095 000 073 BABB/Sn1 +095 000 074 BBAB/Sn2 +095 000 075 BBBA/Tom +095 000 076 BAAB/Hat +095 000 077 BBAA/Cym +095 000 078 BABA/Sn1 +095 000 079 BAAA/Sn2 +095 001 000 AfroCubn +095 001 001 BrazilKt +095 001 002 MotifLtn +095 001 003 GM Perc +095 001 004 AfrCbn61 +095 001 005 BruzKt61 +095 001 006 AC-PlgDR +095 001 007 Br-PlgDR +095 001 008 Lt-PlgDR +095 001 009 GMLtnDrm +095 001 010 Live Pop +095 001 011 Kick&Snr +095 001 012 AfCbHand +095 001 013 BrzlHnd1 +095 001 014 BrzlHnd2 +095 001 015 BellsKit +095 001 016 Shakers +095 001 017 SkinsKit +095 001 018 Sticks 1 +095 001 019 Sticks 2 +095 001 020 DlyAfrCb +095 001 021 DlyBrazl +095 001 022 DlyGMPrc +095 001 023 DlyGMLtn +095 001 024 NzDAfrCb +095 001 025 NzDBrazl +095 001 026 OdAfrCbn +095 001 027 OdBrazil +095 001 028 OdGMLatn +095 001 029 OdKk&Snr +095 001 030 Dst1AfCb +095 001 031 Dst1Brzl +095 001 032 Dst1GMLt +095 001 033 Dst1Kk&S +095 001 034 Dst2AfCb +095 001 035 Dst2Brzl +095 001 036 Dst2GMLt +095 001 037 Dst2Kk&S +095 001 038 FlgAfrCb +095 001 039 FlgBrazl +095 001 040 FlgShkrs +095 001 041 PhsShkrs +095 001 042 Rz1Skins +095 001 043 Rz1Sick +095 001 044 Rz2Kk&Sn +095 001 045 Rz2Stick +095 001 046 Md1AfrCb +095 001 047 Md1Brazl +095 001 048 Md2AfrCb +095 001 049 Md2Brazl +095 001 050 Md3Bells +095 001 051 Md3Shkrs +095 001 052 Md4BrHd1 +095 001 053 Md4BrHd2 +095 001 054 Md5BrHd1 +095 001 055 Md5BrHd2 +095 001 056 PchBells +095 001 057 PchShkrs +095 001 058 PchSkins +095 001 059 PchStick +095 001 060 RevAfrCb +095 001 061 RvBrazil +095 001 062 RevMotif +095 001 063 RvGMPerc +095 001 064 RvAfCb61 +095 001 065 RvBrzl61 +095 001 066 RvACPgDR +095 001 067 RvBrPgDR +095 001 068 RvLtPgDR +095 001 069 RevGMLtn +095 001 070 RevLvPop +095 001 071 RevKk&Sn +095 001 072 RevACHnd +095 001 073 RevBrHd1 +095 001 074 RevBrHd2 +095 001 075 RevBells +095 001 076 RevShkrs +095 001 077 RevSkins +095 001 078 RvStick1 +095 001 079 RvStick2 diff --git a/data/bank/sd.tsv b/data/bank/sd.tsv new file mode 100644 index 00000000..4bf3386a --- /dev/null +++ b/data/bank/sd.tsv @@ -0,0 +1,211 @@ +MSB PRG LSB NME +105 000 000 Standrd2 +105 008 000 RoomKit2 +105 016 000 PowerKt2 +105 024 000 DanceKit +105 025 000 Rave Kit +105 032 000 JazzKit2 +105 040 000 BrushKt2 +106 000 000 StStdKit +106 008 000 StRoomKt +106 016 000 StPwrKit +106 024 000 Rust Kit +106 025 000 Anal.Kt2 +106 032 000 StJazzKt +106 040 000 SBrushKt +107 000 000 AmbStdrd +107 008 000 Amb.Room +107 016 000 GatedPwr +107 024 000 TechnoKt +107 025 000 BullyKit +107 032 000 Amb.Jazz +107 040 000 AmbBrush +097 000 016 Acou.Pno +097 000 017 AcouPnoK +097 000 018 Mild Pno +098 000 016 St.Pno 1 +098 000 017 St.Pno1K +098 000 018 EuropePf +099 000 016 SD Piano +099 000 017 SDPianoK +099 000 018 Class Pf +097 001 016 Rock Pno +097 001 017 RockPnoK +098 001 016 St.Pno 2 +098 001 017 St.Pno2K +099 001 016 EnhPiano +099 001 017 Enh.PnoK +097 002 016 EGrdPno2 +097 002 017 EGrPno2K +098 002 016 SA Piano +098 002 017 SAPianoK +099 002 016 EnhElGrd +099 002 017 EnhEGrdK +097 003 016 OldHonky +097 003 017 OldHnkyK +098 003 016 St.Honky +098 003 017 StHonkyK +099 003 016 BrtHonky +099 003 017 BrtHnkyK +097 004 016 SftRhode +097 004 017 FatRhode +097 004 018 Rhodes K +097 004 019 WurlySft +098 004 016 TrmRhode +098 004 017 SwtTynes +098 004 018 Trm.Dyno +098 004 019 TrmWurly +099 004 016 Stage 73 +099 004 017 NY Rhode +099 004 018 Phs.Dyno +099 004 019 Whirly +097 005 016 FM ElPno +097 005 017 SoftFMEP +097 005 018 SA ElPno +097 005 019 DXLegnd2 +097 005 020 DXPhase2 +098 005 016 HardFMEP +098 005 017 Brt.FMEP +098 005 018 BrtFMEP2 +098 005 019 DXLegnd3 +098 005 020 DXPhase3 +099 005 016 ChorusEP +099 005 017 Phs.FMEP +099 005 018 Wah FMEP +099 005 019 EnhLegnd +099 005 020 PhasinEP +097 006 016 Hpschrd4 +097 006 017 Hpschrd5 +097 006 018 Hpschd4K +097 006 019 Hpschrd6 +098 006 016 St.Hrpsi +098 006 017 StHrpsi3 +098 006 018 StHrpsiK +098 006 019 StHrpsi2 +099 006 016 EnhHrpsi +099 006 017 EnHrpsi3 +099 006 018 EnHrpsiK +099 006 019 EnHrpsi2 +097 007 016 AtkClavi +097 007 017 AnlClavi +098 007 016 AtkClv 2 +098 007 017 AnlClv 2 +099 007 016 CmpClavi +099 007 017 WahClavi +097 008 016 Celesta2 +098 008 016 StCelest +099 008 016 CelestaK +097 009 016 Glocken2 +098 009 016 St.Glock +099 009 016 TrmGlock +097 010 016 MusicBx2 +098 010 016 StMusBox +099 010 016 Pan Box +097 011 016 Vibrafn2 +097 011 017 Vibrfn2K +098 011 016 StVibrfn +098 011 017 StVbrfnK +099 011 016 TrmVbrfn +099 011 017 TrmVibrK +097 012 016 Marimba2 +097 012 017 Marmba2K +098 012 016 StMarmba +098 012 017 StMrmbaK +099 012 016 EnhMrmba +099 012 017 EnMrmbaK +097 013 016 Xylofon2 +098 013 016 StXylofn +099 013 016 Enh.Xylo +097 014 016 TubeBel2 +097 014 017 ChchBel2 +097 014 018 Carilln2 +098 014 016 St.Tubul +098 014 017 StChurch +098 014 018 StCariln +099 014 016 TrmTubul +099 014 017 EchoChch +099 014 018 TrmCaril +097 015 016 Santur +098 015 016 StSantur +099 015 016 EnhSantr +097 018 016 FstRokOr +098 018 016 RockOrg2 +099 018 016 RokrSpin +097 040 016 Violin v +097 040 017 SlwVln v +098 040 016 Violn2 v +098 040 017 SlVln2 v +099 040 016 EnhVioln +099 040 017 EnhSlVln +097 041 016 Viola v +098 041 016 Viola2 v +099 041 016 EnhViola +097 042 016 Cello v +098 042 016 Cello2 v +099 042 016 EnhCello +097 043 016 ContrB v +098 043 016 CntrB2 v +099 043 016 EnhContr +097 044 016 TremStr2 +098 044 016 StTrmStr +099 044 016 StTrStr2 +097 045 016 PizzStr2 +098 045 016 St.Pizz. +099 045 016 ChorPizz +097 046 016 Harp 2 +097 046 017 YangQin2 +098 046 016 St. Harp +098 046 017 StYanQin +099 046 016 ChorHarp +099 046 017 EnhYngQn +097 047 016 Timpani2 +098 047 016 StTimpni +099 047 016 EnhTmpni +097 048 016 Strings3 +097 048 017 OrchStr2 +097 048 018 Oct.Str. +098 048 016 StStrngs +098 048 017 St.OrStr +098 048 018 StOctStr +099 048 016 StStrng2 +099 048 017 StOrStr2 +099 048 018 StOcStr2 +097 056 016 Solo Trp +097 056 017 Mild Trp +098 056 016 RmntcTrp +098 056 017 DkTrpVib +099 056 016 EnhTrmpt +099 056 017 Warm Trp +097 059 016 MuteTrp3 +097 059 017 HrmoMTrp +098 059 016 SoloMTrp +098 059 017 HrmMTrp2 +099 059 016 EnhMuTrp +099 059 017 EnMuTrp2 +097 061 016 BrsSecFF +097 061 017 BrsSect3 +098 061 016 St.Brass +098 061 017 StBrass2 +099 061 016 StBigBrs +099 061 017 EnhBrSec +097 066 016 BrthTenr +098 066 016 BlowTenr +099 066 016 EnhTenor +097 067 016 BareBari +098 067 016 BariSx v +099 067 016 EnBariSx +097 068 016 Brt Oboe +098 068 016 ClasOboe +099 068 016 Enh.Oboe +097 071 016 BrtClari +098 071 016 JazClari +099 071 016 JzClari2 +097 073 016 Flute 2 +098 073 016 Flute v +099 073 016 EnhFlute +097 091 016 ChoirPd2 +097 091 017 Itopia 2 +098 091 016 ChoirPd3 +098 091 017 Itopia 3 +099 091 016 PhsChoir +099 091 017 PanItpia \ No newline at end of file diff --git a/dist/basic.mjs b/dist/basic.mjs index aaf25f76..f1c707ca 100644 --- a/dist/basic.mjs +++ b/dist/basic.mjs @@ -1,4 +1,4 @@ -var G=Object.create;var O=Object.defineProperty;var _=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var V=Object.getPrototypeOf,X=Object.prototype.hasOwnProperty;var z=(e,i)=>()=>(i||e((i={exports:{}}).exports,i),i.exports);var K=(e,i,o,r)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of F(i))!X.call(e,t)&&t!==o&&O(e,t,{get:()=>i[t],enumerable:!(r=_(i,t))||r.enumerable});return e};var q=(e,i,o)=>(o=e!=null?G(V(e)):{},K(i||!e||!e.__esModule?O(o,"default",{value:e,enumerable:!0}):o,e));var N=z((ze,x)=>{(function(){"use strict";let e={fatal:!0},i=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(r,t){if(r instanceof Uint8Array)return o.Uint8(r);if(typeof r=="string")return o.Base64(r);if(r instanceof HTMLElement&&r.type==="file")return o.addListener(r,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(r,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(r===void 0||!(r instanceof HTMLElement)||r.tagName!=="INPUT"||r.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},r.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let l=new FileReader;l.readAsArrayBuffer(a.target.files[0]),l.onload=function(f){t(o.Uint8(new Uint8Array(f.target.result)))}})},Base64:function(r){let t=function(f){var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(f=f.replace(/^.*?base64,/,""),f=String(f).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(f))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");f+="==".slice(2-(3&f.length));let p,b="",s,n,h=0;for(;h>16&255):n===64?String.fromCharCode(p>>16&255,p>>8&255):String.fromCharCode(p>>16&255,p>>8&255,255&p);return b}(r=String(r));var a=t.length;let l=new Uint8Array(new ArrayBuffer(a));for(let f=0;f{n[c]=this.readInt(1)});for(let u=0;u191||g>127&&g<160)throw new RangeError(`Invalid code point: ${g}`)}h=!0,console.debug(`String byte sequence in ${i[u].encoding}`)}catch(c){console.debug(`SMF string ${c}`)}return d||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let s=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)s=this.readInt(1);else{let h=[];for(;128<=this.data.getUint8(this.pointer);)h.push(this.readInt(1)-128);var n=this.readInt(1);for(let d=1;d<=h.length;d++)s+=h[h.length-d]*Math.pow(128,d);s+=n}return s}};if(t.data=new DataView(l.buffer,l.byteOffset,l.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var l=t.readInt(1),f=t.readInt(1);128<=l?(a.timeDivision=[],a.timeDivision[0]=l-128,a.timeDivision[1]=f):a.timeDivision=256*l+f;for(let s=1;s<=a.tracks;s++){a.track[s-1]={event:[]};var $,p=t.readInt(4);if(p===-1)break;if(p!==1297379947)return!1;t.readInt(4);let n=0,h=!1,d,u;for(;!h&&(n++,a.track[s-1].event[n-1]={},a.track[s-1].event[n-1].deltaTime=t.readIntVLV(),(d=t.readInt(1))!==-1);)if(128<=d?u=d:(d=u,t.movePointer(-1)),d===255){a.track[s-1].event[n-1].type=255,a.track[s-1].event[n-1].metaType=t.readInt(1);var b=t.readIntVLV();switch(a.track[s-1].event[n-1].metaType){case 47:case-1:h=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[s-1].event[n-1].data=t.readStr(b);break;case 33:case 89:case 81:a.track[s-1].event[n-1].data=t.readInt(b);break;case 84:a.track[s-1].event[n-1].data=[],a.track[s-1].event[n-1].data[0]=t.readInt(1),a.track[s-1].event[n-1].data[1]=t.readInt(1),a.track[s-1].event[n-1].data[2]=t.readInt(1),a.track[s-1].event[n-1].data[3]=t.readInt(1),a.track[s-1].event[n-1].data[4]=t.readInt(1);break;case 88:a.track[s-1].event[n-1].data=[],a.track[s-1].event[n-1].data[0]=t.readInt(1),a.track[s-1].event[n-1].data[1]=t.readInt(1),a.track[s-1].event[n-1].data[2]=t.readInt(1),a.track[s-1].event[n-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[s-1].event[n-1].data=this.customInterpreter(a.track[s-1].event[n-1].metaType,t,b)),this.customInterpreter!==null&&a.track[s-1].event[n-1].data!==!1||(t.readInt(b),a.track[s-1].event[n-1].data=t.readInt(b),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((d=d.toString(16).split(""))[1]||d.unshift("0"),a.track[s-1].event[n-1].type=parseInt(d[0],16),a.track[s-1].event[n-1].channel=parseInt(d[1],16),a.track[s-1].event[n-1].type){case 15:this.customInterpreter!==null&&(a.track[s-1].event[n-1].data=this.customInterpreter(a.track[s-1].event[n-1].type,t,!1)),this.customInterpreter!==null&&a.track[s-1].event[n-1].data!==!1||($=t.readIntVLV(),a.track[s-1].event[n-1].data=t.readInt($),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[s-1].event[n-1].data=[],a.track[s-1].event[n-1].data[0]=t.readInt(1),a.track[s-1].event[n-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[s-1].event[n-1].data=t.readInt(1);break;case-1:h=!0;break;default:if(this.customInterpreter!==null&&(a.track[s-1].event[n-1].data=this.customInterpreter(a.track[s-1].event[n-1].metaType,t,!1)),this.customInterpreter===null||a.track[s-1].event[n-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof x<"u")x.exports=o;else{let r=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;r.MidiParser=o}})()});var k=class{#e={};addEventListener(e,i){this.#e[e]||(this.#e[e]=[]),this.#e[e].unshift(i)}removeEventListener(e,i){if(this.#e[e]){let o=this.#e[e].indexOf(i);o>-1&&this.#e[e].splice(o,1),this.#e[e].length<1&&delete this.#e[e]}}dispatchEvent(e,i){let o=new Event(e),r=this;o.data=i,this.#e[e]?.length>0&&this.#e[e].forEach(function(t){try{t?.call(r,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var D=class{#e={};context;set(e,i){this.#e[e]=i}has(e){return!!this.#e[e]}async read(e,i){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#e[e].call(this.context||this,i)}};var Q=function(e,i){let o=!0;return i.forEach((r,t)=>{o=o&&e[t]==r}),o},P=function(e){let i=0;return e.forEach(o=>{i*=256,i+=o}),i},m=new TextDecoder,I=new D;I.set("s7e",async function(e){let i=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",r=[0,0,0,0],t=32,a=0,l=0,f=!0,$=[],p=0;for(;f;){let b=i.subarray(a);([()=>{m.decode(b.subarray(0,4))=="YSFC"?(a+=80,l=1):a++},()=>{if(Q(b.subarray(0,4),r))$.forEach((s,n,h)=>{let d=P(i.subarray(s.start+4,s.start+8));s.length=d}),l=2;else{let s=m.decode(b.subarray(0,4)),n=P(b.subarray(4,8));$.push({type:s,start:n}),a+=8}},()=>{let s=$[p],n=i.subarray(s.start,s.start+s.length),h=32;switch(s.type){case"ENVC":{let d=t;for(;d()=>(i||e((i={exports:{}}).exports,i),i.exports);var K=(e,i,o,r)=>{if(i&&typeof i=="object"||typeof i=="function")for(let t of F(i))!X.call(e,t)&&t!==o&&O(e,t,{get:()=>i[t],enumerable:!(r=_(i,t))||r.enumerable});return e};var q=(e,i,o)=>(o=e!=null?G(V(e)):{},K(i||!e||!e.__esModule?O(o,"default",{value:e,enumerable:!0}):o,e));var L=z((ze,x)=>{(function(){"use strict";let e={fatal:!0},i=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(r,t){if(r instanceof Uint8Array)return o.Uint8(r);if(typeof r=="string")return o.Base64(r);if(r instanceof HTMLElement&&r.type==="file")return o.addListener(r,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(r,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(r===void 0||!(r instanceof HTMLElement)||r.tagName!=="INPUT"||r.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},r.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let l=new FileReader;l.readAsArrayBuffer(a.target.files[0]),l.onload=function(f){t(o.Uint8(new Uint8Array(f.target.result)))}})},Base64:function(r){let t=function(f){var $="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(f=f.replace(/^.*?base64,/,""),f=String(f).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(f))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");f+="==".slice(2-(3&f.length));let p,b="",s,n,h=0;for(;h>16&255):n===64?String.fromCharCode(p>>16&255,p>>8&255):String.fromCharCode(p>>16&255,p>>8&255,255&p);return b}(r=String(r));var a=t.length;let l=new Uint8Array(new ArrayBuffer(a));for(let f=0;f{n[c]=this.readInt(1)});for(let u=0;u191||g>127&&g<160)throw new RangeError(`Invalid code point: ${g}`)}h=!0,console.debug(`String byte sequence in ${i[u].encoding}`)}catch(c){console.debug(`SMF string ${c}`)}return d||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let s=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)s=this.readInt(1);else{let h=[];for(;128<=this.data.getUint8(this.pointer);)h.push(this.readInt(1)-128);var n=this.readInt(1);for(let d=1;d<=h.length;d++)s+=h[h.length-d]*Math.pow(128,d);s+=n}return s}};if(t.data=new DataView(l.buffer,l.byteOffset,l.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var l=t.readInt(1),f=t.readInt(1);128<=l?(a.timeDivision=[],a.timeDivision[0]=l-128,a.timeDivision[1]=f):a.timeDivision=256*l+f;for(let s=1;s<=a.tracks;s++){a.track[s-1]={event:[]};var $,p=t.readInt(4);if(p===-1)break;if(p!==1297379947)return!1;t.readInt(4);let n=0,h=!1,d,u;for(;!h&&(n++,a.track[s-1].event[n-1]={},a.track[s-1].event[n-1].deltaTime=t.readIntVLV(),(d=t.readInt(1))!==-1);)if(128<=d?u=d:(d=u,t.movePointer(-1)),d===255){a.track[s-1].event[n-1].type=255,a.track[s-1].event[n-1].metaType=t.readInt(1);var b=t.readIntVLV();switch(a.track[s-1].event[n-1].metaType){case 47:case-1:h=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[s-1].event[n-1].data=t.readStr(b);break;case 33:case 89:case 81:a.track[s-1].event[n-1].data=t.readInt(b);break;case 84:a.track[s-1].event[n-1].data=[],a.track[s-1].event[n-1].data[0]=t.readInt(1),a.track[s-1].event[n-1].data[1]=t.readInt(1),a.track[s-1].event[n-1].data[2]=t.readInt(1),a.track[s-1].event[n-1].data[3]=t.readInt(1),a.track[s-1].event[n-1].data[4]=t.readInt(1);break;case 88:a.track[s-1].event[n-1].data=[],a.track[s-1].event[n-1].data[0]=t.readInt(1),a.track[s-1].event[n-1].data[1]=t.readInt(1),a.track[s-1].event[n-1].data[2]=t.readInt(1),a.track[s-1].event[n-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[s-1].event[n-1].data=this.customInterpreter(a.track[s-1].event[n-1].metaType,t,b)),this.customInterpreter!==null&&a.track[s-1].event[n-1].data!==!1||(t.readInt(b),a.track[s-1].event[n-1].data=t.readInt(b),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((d=d.toString(16).split(""))[1]||d.unshift("0"),a.track[s-1].event[n-1].type=parseInt(d[0],16),a.track[s-1].event[n-1].channel=parseInt(d[1],16),a.track[s-1].event[n-1].type){case 15:this.customInterpreter!==null&&(a.track[s-1].event[n-1].data=this.customInterpreter(a.track[s-1].event[n-1].type,t,!1)),this.customInterpreter!==null&&a.track[s-1].event[n-1].data!==!1||($=t.readIntVLV(),a.track[s-1].event[n-1].data=t.readInt($),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[s-1].event[n-1].data=[],a.track[s-1].event[n-1].data[0]=t.readInt(1),a.track[s-1].event[n-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[s-1].event[n-1].data=t.readInt(1);break;case-1:h=!0;break;default:if(this.customInterpreter!==null&&(a.track[s-1].event[n-1].data=this.customInterpreter(a.track[s-1].event[n-1].metaType,t,!1)),this.customInterpreter===null||a.track[s-1].event[n-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof x<"u")x.exports=o;else{let r=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;r.MidiParser=o}})()});var E=class{#e={};addEventListener(e,i){this.#e[e]||(this.#e[e]=[]),this.#e[e].unshift(i)}removeEventListener(e,i){if(this.#e[e]){let o=this.#e[e].indexOf(i);o>-1&&this.#e[e].splice(o,1),this.#e[e].length<1&&delete this.#e[e]}}dispatchEvent(e,i){let o=new Event(e),r=this;o.data=i,this.#e[e]?.length>0&&this.#e[e].forEach(function(t){try{t?.call(r,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var D=class{#e={};context;set(e,i){this.#e[e]=i}has(e){return!!this.#e[e]}async read(e,i){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#e[e].call(this.context||this,i)}};var Q=function(e,i){let o=!0;return i.forEach((r,t)=>{o=o&&e[t]==r}),o},P=function(e){let i=0;return e.forEach(o=>{i*=256,i+=o}),i},m=new TextDecoder,I=new D;I.set("s7e",async function(e){let i=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",r=[0,0,0,0],t=32,a=0,l=0,f=!0,$=[],p=0;for(;f;){let b=i.subarray(a);([()=>{m.decode(b.subarray(0,4))=="YSFC"?(a+=80,l=1):a++},()=>{if(Q(b.subarray(0,4),r))$.forEach((s,n,h)=>{let d=P(i.subarray(s.start+4,s.start+8));s.length=d}),l=2;else{let s=m.decode(b.subarray(0,4)),n=P(b.subarray(4,8));$.push({type:s,start:n}),a+=8}},()=>{let s=$[p],n=i.subarray(s.start,s.start+s.length),h=32;switch(s.type){case"ENVC":{let d=t;for(;d=$.length&&(l=3,f=!1)}][l]||(()=>{f=!1}))()}return o});var j=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]);var Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),W={};`hi*, @@ -138,4 +138,4 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let i=e.split(",");W[i[0]]=i[1]});var U=function(e,i,o){let r=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${r}`),r.pop(),i.backOne(),i.backOne(),new Uint8Array(r)}}}return new Uint8Array(r)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var w={length:S.length};S.forEach((e,i)=>{w[e]=i});var A={length:v.length};v.forEach((e,i)=>{A[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var T=q(N(),1);var L=class{#e=!1;constructor(e,i,o,r){this.#e=e,this.start=i,this.end=o,this.data=r}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},C=class extends L{constructor(e,i,o){super(!0,e,i,o)}},B=class extends L{constructor(e,i){super(!1,e,e,i)}},M=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let r=0;re);r++){if(this[r].endt.#e&&(o.push(a),t.#e=a.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],r=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let l=0;l=e&&(r=l):r=r<0?l:r;for(;a;)this[r]?.end=e&&o.push(this[r]):a=!1,r++;return o}};var ee=0xffffffffffff,H=function(e){let i=new M,o=this,r=e.timeDivision,t=120,a=new M,l=0,f=0;a.push(new C(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,a[a.length-1]&&a.push(new C(l,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;a.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return a.forEach(function(s){let n=s.start,h=n/b/r*60+p;b=s.data[0],p=h-n/b/r*60,s.data[1]=p}),console.debug("All tempo changes: ",a),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=a.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/r*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};T.default.customInterpreter=U;var rt=class extends k{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#r=.5;#l=120;#t=4;#o=4;#a=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#r=.5,this.#l=120,this.#t=4,this.#o=4,this.#a=0,this.#c=0}async loadFile(e){this.#e=H(T.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#r}get noteOverall(){return this.noteProgress-this.#a}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,r=new Set,t=this,a=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?r.add(c.part*128+c.data[0]):r.has(c.part*128+c.data[0])&&o++),u.data.type==8&&r.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{a.push(g);break}}g?.reply&&delete g.reply}),a?.length>0&&this.dispatchEvent("meta",a);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=w.length*c;if(y>=0){let E=4*.25**(p[R+w[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**E)}else{let E=4*.25**(p[R+w[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**E)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let r=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(r.#i[a.meta]||console.debug).call(r,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){r.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){r.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){r.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){r.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){r.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){r.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,a){r.#s?.length<1&&(r.#s=a)},this.#i[81]=function(t,a){let l=r.noteProgress,f=r.#r||.5;r.#l=6e7/a,r.#r=a/1e6,r.#a+=l*(f/r.#r)-l},this.#i[88]=function(t,a){let l=r.noteProgress,f=r.noteOverall,$=r.noteBar,p=r.noteBeat,b=r.#t,s=r.#o;r.#t=a[0],r.#o=1<=b&&(b{let i=e.split(",");W[i[0]]=i[1]});var U=function(e,i,o){let r=[],t=o==!1?i.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${r}`),r.pop(),i.backOne(),i.backOne(),new Uint8Array(r)}}}return new Uint8Array(r)};var Z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"];var v=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],S=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var J={};Z.forEach((e,i)=>{J[e]=i});var w={length:S.length};S.forEach((e,i)=>{w[e]=i});var A={length:v.length};v.forEach((e,i)=>{A[e]=i});var Ve={ch:128,cc:S.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:v.length,dnc:128,efx:7};var T=q(L(),1);var N=class{#e=!1;constructor(e,i,o,r){this.#e=e,this.start=i,this.end=o,this.data=r}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#e}},C=class extends N{constructor(e,i,o){super(!0,e,i,o)}},B=class extends N{constructor(e,i){super(!1,e,e,i)}},M=class extends Array{#e=-1;constructor(){super(...arguments)}resetIndex(e){this.#e=-1}fresh(){this.sort(function(e,i){return e.start==i.start?0:(+(e.start>i.start)<<1)-1}),this.forEach(function(e,i){e.index=i})}step(e,i=!1){let o=[];if(i)for(let r=0;re);r++){if(this[r].endt.#e&&(o.push(a),t.#e=a.index)})}return o}getRange(e,i){e>i&&([e,i]=[i,e]);let o=[],r=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let l=0;l=e&&(r=l):r=r<0?l:r;for(;a;)this[r]?.end=e&&o.push(this[r]):a=!1,r++;return o}};var ee=0xffffffffffff,H=function(e){let i=new M,o=this,r=e.timeDivision,t=120,a=new M,l=0,f=0;a.push(new C(0,ee,[120,0])),e.track.forEach(function(s){l=0,s.event.forEach(function(n){l+=n.deltaTime,n.type==255&&n?.metaType==81&&(t=6e7/n.data,a[a.length-1]&&a.push(new C(l,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(s,n,h){n>0&&(h[n-1].end=s.start)});let $=120;a.forEach(function(s,n,h){n>0&&(s.end==s.start?h.splice(h.indexOf(s),1):$==s.data[0]&&(h[n-1].end=s.end,h.splice(h.indexOf(s),1)),$=s.data[0])});let p=0,b=120;return a.forEach(function(s){let n=s.start,h=n/b/r*60+p;b=s.data[0],p=h-n/b/r*60,s.data[1]=p}),console.debug("All tempo changes: ",a),t=120,l=0,f=0,e.track.forEach(function(s,n){l=0,f=0;let h=n+1;s.event.forEach(function(d,u){l+=d.deltaTime;let c=a.step(l,!0)[0];c&&(t=c.data[0],f=c.data[1]);let g={type:d.type,data:d.data,track:h,part:0};d.type>14?g.meta=d.metaType:g.part=d.channel,i.push(new B(l/t/r*60+f,g))})}),i.fresh(),self.midiEvents=i,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),i};T.default.customInterpreter=U;var rt=class extends E{device;#e;#s="";#i=[];#n=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#r=.5;#l=120;#t=4;#o=4;#a=0;#c=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#e?.resetIndex(),this.device.init(),this.#s="",this.#r=.5,this.#l=120,this.#t=4,this.#o=4,this.#a=0,this.#c=0}async loadFile(e){this.#e=H(T.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,i=!1){this.device.switchMode(e,i)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#c/this.#r}get noteOverall(){return this.noteProgress-this.#a}get noteBar(){return Math.floor(this.noteOverall/this.#t)}get noteBeat(){let e=this.noteOverall%this.#t;return e<0&&(e+=this.#t),e}getTimeSig(){return[this.#t,this.#o]}getTempo(){return this.#l}sendCmd(e){this.device.runJson(e)}render(e){e>this.#c&&(this.#c=e);let i=this.#e?.step(e)||[],o=0,r=new Set,t=this,a=[];this.device.getStrength().forEach((u,c)=>{this.#h[c]=u}),t.device.newStrength(),i.forEach(function(u){let c=u.data;c.type==9&&(c.data[1]>0?r.add(c.part*128+c.data[0]):r.has(c.part*128+c.data[0])&&o++),u.data.type==8&&r.has(c.part*128+c.data[0])&&o++;let g=t.device.runJson(c);switch(g?.reply){case"meta":{a.push(g);break}}g?.reply&&delete g.reply}),a?.length>0&&this.dispatchEvent("meta",a);let l=this.device.getActive(),f=[],$=t.device.getPitch(),p=t.device.getCcAll(),b=t.device.getProgram(),s=t.device.getChType(),n=this.device.getStrength();n.forEach(function(u,c,g){g[c]=Math.max(t.#h[c],u);let y=g[c]-t.#n[c],R=w.length*c;if(y>=0){let k=4*.25**(p[R+w[73]]/64);t.#n[c]+=Math.ceil(y-y*t.smoothingAtk**k)}else{let k=4*.25**(p[R+w[72]]/64);t.#n[c]+=Math.floor(y-y*t.smoothingDcy**k)}});let h=0;return l.forEach(function(u,c){u&&(f[c]=t.device.getVel(c),h+=f[c].size)}),{extraPoly:o,curPoly:h,chInUse:l,chKeyPr:f,chPitch:$,chProgr:b,chContr:p,chType:s,eventCount:i.length,title:this.#s,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#n.slice(),velo:n,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,i=.5,o=.5){super();let r=this;this.smoothingAtk=i,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(r.#i[a.meta]||console.debug).call(r,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){r.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){r.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){r.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){r.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){r.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){r.dispatchEvent("screen",t.data)}),this.#i[3]=function(t,a){r.#s?.length<1&&(r.#s=a)},this.#i[81]=function(t,a){let l=r.noteProgress,f=r.#r||.5;r.#l=6e7/a,r.#r=a/1e6,r.#a+=l*(f/r.#r)-l},this.#i[88]=function(t,a){let l=r.noteProgress,f=r.noteOverall,$=r.noteBar,p=r.noteBeat,b=r.#t,s=r.#o;r.#t=a[0],r.#o=1<=b&&(b()=>(n||e((n={exports:{}}).exports,n),n.exports);var De=(e,n,o,l)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Re.call(e,t)&&t!==o&&Z(e,t,{get:()=>n[t],enumerable:!(l=Ce(n,t))||l.enumerable});return e};var Ie=(e,n,o)=>(o=e!=null?xe(Te(e)):{},De(n||!e||!e.__esModule?Z(o,"default",{value:e,enumerable:!0}):o,e));var we=Oe((bt,q)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(l,t){if(l instanceof Uint8Array)return o.Uint8(l);if(typeof l=="string")return o.Base64(l);if(l instanceof HTMLElement&&l.type==="file")return o.addListener(l,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(l,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(l===void 0||!(l instanceof HTMLElement)||l.tagName!=="INPUT"||l.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},l.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let s=new FileReader;s.readAsArrayBuffer(a.target.files[0]),s.onload=function(i){t(o.Uint8(new Uint8Array(i.target.result)))}})},Base64:function(l){let t=function(i){var r="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(i=i.replace(/^.*?base64,/,""),i=String(i).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(i))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");i+="==".slice(2-(3&i.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(l=String(l));var a=t.length;let s=new Uint8Array(new ArrayBuffer(a));for(let i=0;i{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return g||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let g=1;g<=p.length;g++)c+=p[p.length-g]*Math.pow(128,g);c+=f}return c}};if(t.data=new DataView(s.buffer,s.byteOffset,s.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var s=t.readInt(1),i=t.readInt(1);128<=s?(a.timeDivision=[],a.timeDivision[0]=s-128,a.timeDivision[1]=i):a.timeDivision=256*s+i;for(let c=1;c<=a.tracks;c++){a.track[c-1]={event:[]};var r,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,g,y;for(;!p&&(f++,a.track[c-1].event[f-1]={},a.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(g=t.readInt(1))!==-1);)if(128<=g?y=g:(g=y,t.movePointer(-1)),g===255){a.track[c-1].event[f-1].type=255,a.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[c-1].event[f-1].data=t.readInt(d);break;case 84:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1),a.track[c-1].event[f-1].data[2]=t.readInt(1),a.track[c-1].event[f-1].data[3]=t.readInt(1),a.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1),a.track[c-1].event[f-1].data[2]=t.readInt(1),a.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[c-1].event[f-1].data!==!1||(t.readInt(d),a.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((g=g.toString(16).split(""))[1]||g.unshift("0"),a.track[c-1].event[f-1].type=parseInt(g[0],16),a.track[c-1].event[f-1].channel=parseInt(g[1],16),a.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[c-1].event[f-1].data!==!1||(r=t.readIntVLV(),a.track[c-1].event[f-1].data=t.readInt(r),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof q<"u")q.exports=o;else{let l=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;l.MidiParser=o}})()});var J=function(e,n){let o=Math.min(e.length,n.length),l=e.slice(0,o),t=n.slice(0,o),a=0,s=0;for(;s0){let l=this.pool.length,t=1<=1&&s>=0;){if(s<=0)throw new Error("TTL reached.");if(a==l)a-=t;else{let r=J(n,this.pool[a]);switch(r){case 0:{s=0;break}case 1:{a+t<=l&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${r}.`)}}t=t>>1,s--}let i=!0;if(a>=this.pool.length)i=!1;else{let r=this;this.pool[a].forEach(function(h,d,c){i&&h!=n[d]&&(i=!1)}),!i&&J(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let l=this.point(n);l>-1?n.subarray?this.pool[l].data(n.subarray(this.pool[l].length),...o):this.pool[l].data(n.slice(this.pool[l].length),...o):this.default(n,...o)}};var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),l=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(l,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var Pe=["MSB","PRG","LSB"],B=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},G=class{#t;strictMode=!1;get(e=0,n=0,o=0,l){let t=[e,n,o],a,s=Array.from(arguments);switch(l){case"xg":{switch(e){case 0:{o==126?s[2]=125:o==127&&(s[2]=0);break}case 32:{s[2]+=4;break}case 33:case 35:case 36:{s[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:s[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{o==126&&(s[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(s[2]=0);break}}break}case"gs":{e==0&&o<5?s[2]=0:e>125&&o<5&&o!=2&&(s[2]=e,s[0]=0);break}case"sg":{e==8&&o==0&&(s[2]=5);break}case"s90es":{o<8?s[2]+=17:o<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}case"motif":{o<8?s[2]+=28:o<32?s[2]+=13:s[2]=(s[2]>>3)+19;break}}let i=" ",r="M",h=0,d=0;switch(s[0]){case 0:{s[2]==127?r="MT-a":s[2]==126?r="MT-b":s[2]==7?r="GM-k":s[2]==5?r="SG-a":s[2]==4?r="SP-l":s[2]==0||l=="gs"&&s[2]<5?r="GM-a":(r="y",h=3);break}case 8:{l=="sg"?r="GM-s":r="r:";break}case 48:{r=`yM${(s[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{r="GM-b";break}case 61:case 120:{r="rDrm";break}case 62:{r="kDrm";break}case 63:{if(s[2]<17){let g=s[2];r=g<10?"kP:":"kC:",r+=g%10}else s[2]<34?r=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][s[2]-17]:r="Ds";break}case 64:{r="ySFX";break}case 67:{r="DX:S";break}case 80:case 81:case 82:case 83:{r=`Prg${"UABC"[s[0]-80]}`;break}case 88:case 89:case 90:case 91:{r=`Cmb${"UABC"[s[0]-88]}`;break}case 95:{r=`${["DR","PC"][s[2]]}-d`;break}case 96:{r=s[2]==106?"AP-a":"PF",s[2]>63&&(d=63),h=3;break}case 97:{r="VL:",h=3,d=112;break}case 98:{r="SG-a";break}case 99:{r="DX",s[2]>63&&(d=63),h=3;break}case 100:{r="AN",s[2]>63&&(d=63),h=3;break}case 121:{r=`GM-${s[2]?"":"a"}`,h=3;break}case 122:{r="lDrm";break}case 126:{r="yDrS";break}case 127:{s[2]==127?r="rDrm":r="yDrm";break}default:s[0]<48?r="r:":r="M"}r.length<4&&(r+=`${[e,o,s[0],s[2]][h]-d}`.padStart(4-r.length,"0")),l=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let c=[s[0],s[1],s[2]];for(;!(a?.length>=0);)a=this.#t[s[1]||0][(s[0]<<7)+s[2]],a||(this.strictMode?(a="",i="?"):this.#t[s[1]||0][s[0]<<7]?s[0]==0?(s[2]=0,i="^"):s[2]<1?(s[0]=0,i="*"):(s[2]--,i="^"):e==48?(s[0]=0,s[2]=0,i="!"):e==62?(s[1]--,i=" ",s[1]<1&&!a?.length&&(s[0]=0,i="!")):e<63?s[0]==0?(s[2]=0,i="^"):s[2]<1?(s[0]=0,i="*"):s[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(s[1]==32?s[1]==0:s[1]%=7,a=this.#t[s[1]||0][(s[0]<<7)+s[2]],a?i=" ":(a="",i="*")):s[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):s[0]==0?(s[2]=0,i="^"):s[2]>0?s[2]--:s[1]>0?(s[1]=0,i="!"):(s[0]=0,i="?"));let f=[s[0],s[1],s[2]];(l=="gs"||l=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(s[0]){case 0:{s[2]==0?p="GM":s[2]==5||s[2]==7?p="KG":s[2]<126?p="XG":s[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{s[2]<17?p="KR":s[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][s[2]];break}case 96:{p=s[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=s[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=s[2]==127?"MT":n==0?"GM":"XG";break}default:s[0]<48&&(s[0]==16&&l=="xg"?p="XG":p="GS")}return{name:a||`${B(e||0)} ${B(n||0)} ${B(o||0)}`,iid:c,eid:f,sid:t,ending:i,sect:r,standard:p}}async load(e,n,o){let l=this,t=[],a=0,s=0;e.split(` -`).forEach(function(i,r){let h=i.split(" "),d=[];r==0?h.forEach(function(c,f){t[Pe.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(l.#t[d[t[1]]]=l.#t[d[t[1]]]||[],(!l.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(l.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],a++),s++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${o||"(internal)"}": ${s} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],l=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let s=l[0];s<=l[1];s++){let i=a+s;for(let r=n[0];r<=n[1];r++)delete this.#t[r][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,l){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var ee=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ue=function(e,n){let o=!0;return n.forEach((l,t)=>{o=o&&e[t]==l}),o},te=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},R=new TextDecoder,A=new ee;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",l=[0,0,0,0],t=32,a=0,s=0,i=!0,r=[],h=0;for(;i;){let d=n.subarray(a);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(a+=80,s=1):a++},()=>{if(Ue(d.subarray(0,4),l))r.forEach((c,f,p)=>{let g=te(n.subarray(c.start+4,c.start+8));c.length=g}),s=2;else{let c=R.decode(d.subarray(0,4)),f=te(d.subarray(4,8));r.push({type:c,start:f}),a+=8}},()=>{let c=r[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let g=t;for(;g()=>(n||e((n={exports:{}}).exports,n),n.exports);var De=(e,n,o,l)=>{if(n&&typeof n=="object"||typeof n=="function")for(let t of Me(n))!Re.call(e,t)&&t!==o&&Z(e,t,{get:()=>n[t],enumerable:!(l=Ce(n,t))||l.enumerable});return e};var Ie=(e,n,o)=>(o=e!=null?xe(Te(e)):{},De(n||!e||!e.__esModule?Z(o,"default",{value:e,enumerable:!0}):o,e));var we=Oe((bt,q)=>{(function(){"use strict";let e={fatal:!0},n=[new TextDecoder("iso-8859-15",e),new TextDecoder("sjis",e),new TextDecoder("euc-jp",e),new TextDecoder("utf-8",e),new TextDecoder("utf-16",e),new TextDecoder("ascii")],o={debug:!1,parse:function(l,t){if(l instanceof Uint8Array)return o.Uint8(l);if(typeof l=="string")return o.Base64(l);if(l instanceof HTMLElement&&l.type==="file")return o.addListener(l,t);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(l,t){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(l===void 0||!(l instanceof HTMLElement)||l.tagName!=="INPUT"||l.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;t=t||function(){},l.addEventListener("change",function(a){if(!a.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let r=new FileReader;r.readAsArrayBuffer(a.target.files[0]),r.onload=function(i){t(o.Uint8(new Uint8Array(i.target.result)))}})},Base64:function(l){let t=function(i){var s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(i=i.replace(/^.*?base64,/,""),i=String(i).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(i))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");i+="==".slice(2-(3&i.length));let h,d="",c,f,p=0;for(;p>16&255):f===64?String.fromCharCode(h>>16&255,h>>8&255):String.fromCharCode(h>>16&255,h>>8&255,255&h);return d}(l=String(l));var a=t.length;let r=new Uint8Array(new ArrayBuffer(a));for(let i=0;i{f[$]=this.readInt(1)});for(let y=0;y191||w>127&&w<160)throw new RangeError(`Invalid code point: ${w}`)}p=!0,console.debug(`String byte sequence in ${n[y].encoding}`)}catch($){console.debug(`SMF string ${$}`)}return g||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let c=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)c=this.readInt(1);else{let p=[];for(;128<=this.data.getUint8(this.pointer);)p.push(this.readInt(1)-128);var f=this.readInt(1);for(let g=1;g<=p.length;g++)c+=p[p.length-g]*Math.pow(128,g);c+=f}return c}};if(t.data=new DataView(r.buffer,r.byteOffset,r.byteLength),t.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;t.readInt(4);let a={};a.formatType=t.readInt(2),a.tracks=t.readInt(2),a.track=[];var r=t.readInt(1),i=t.readInt(1);128<=r?(a.timeDivision=[],a.timeDivision[0]=r-128,a.timeDivision[1]=i):a.timeDivision=256*r+i;for(let c=1;c<=a.tracks;c++){a.track[c-1]={event:[]};var s,h=t.readInt(4);if(h===-1)break;if(h!==1297379947)return!1;t.readInt(4);let f=0,p=!1,g,y;for(;!p&&(f++,a.track[c-1].event[f-1]={},a.track[c-1].event[f-1].deltaTime=t.readIntVLV(),(g=t.readInt(1))!==-1);)if(128<=g?y=g:(g=y,t.movePointer(-1)),g===255){a.track[c-1].event[f-1].type=255,a.track[c-1].event[f-1].metaType=t.readInt(1);var d=t.readIntVLV();switch(a.track[c-1].event[f-1].metaType){case 47:case-1:p=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:a.track[c-1].event[f-1].data=t.readStr(d);break;case 33:case 89:case 81:a.track[c-1].event[f-1].data=t.readInt(d);break;case 84:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1),a.track[c-1].event[f-1].data[2]=t.readInt(1),a.track[c-1].event[f-1].data[3]=t.readInt(1),a.track[c-1].event[f-1].data[4]=t.readInt(1);break;case 88:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1),a.track[c-1].event[f-1].data[2]=t.readInt(1),a.track[c-1].event[f-1].data[3]=t.readInt(1);break;default:this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].metaType,t,d)),this.customInterpreter!==null&&a.track[c-1].event[f-1].data!==!1||(t.readInt(d),a.track[c-1].event[f-1].data=t.readInt(d),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((g=g.toString(16).split(""))[1]||g.unshift("0"),a.track[c-1].event[f-1].type=parseInt(g[0],16),a.track[c-1].event[f-1].channel=parseInt(g[1],16),a.track[c-1].event[f-1].type){case 15:this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].type,t,!1)),this.customInterpreter!==null&&a.track[c-1].event[f-1].data!==!1||(s=t.readIntVLV(),a.track[c-1].event[f-1].data=t.readInt(s),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:a.track[c-1].event[f-1].data=[],a.track[c-1].event[f-1].data[0]=t.readInt(1),a.track[c-1].event[f-1].data[1]=t.readInt(1);break;case 12:case 13:a.track[c-1].event[f-1].data=t.readInt(1);break;case-1:p=!0;break;default:if(this.customInterpreter!==null&&(a.track[c-1].event[f-1].data=this.customInterpreter(a.track[c-1].event[f-1].metaType,t,!1)),this.customInterpreter===null||a.track[c-1].event[f-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return a},customInterpreter:null};if(typeof q<"u")q.exports=o;else{let l=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;l.MidiParser=o}})()});var J=function(e,n){let o=Math.min(e.length,n.length),l=e.slice(0,o),t=n.slice(0,o),a=0,r=0;for(;r0){let l=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==l)a-=t;else{let s=J(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=l&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(h,d,c){i&&h!=n[d]&&(i=!1)}),!i&&J(n,this.pool[a])>0&&a++}return i||o?a:-1}else return o?0:-1},this.add=function(n,o){return n.data=o,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let o=this.point(n);if(o>-1)return this.pool[o].data;this.default(n)},this.run=function(n,...o){let l=this.point(n);l>-1?n.subarray?this.pool[l].data(n.subarray(this.pool[l].length),...o):this.pool[l].data(n.slice(this.pool[l].length),...o):this.default(n,...o)}};var U=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let o=this.#t[e].indexOf(n);o>-1&&this.#t[e].splice(o,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let o=new Event(e),l=this;o.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(l,o)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](o)}};var Pe=["MSB","PRG","LSB"],B=function(e){let n=Math.floor(e/10),o=e%10;return`${n.toString(16)}${o}`},G=class{#t;strictMode=!1;get(e=0,n=0,o=0,l){let t=[e,n,o],a,r=Array.from(arguments);switch(l){case"xg":{switch(e){case 0:{o==126?r[2]=125:o==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{o==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{o==126&&(r[2]=0);break}}break}case"gs":{e==0&&o<5?r[2]=0:e>125&&o<5&&o!=2&&(r[2]=e,r[0]=0);break}case"sd":{e==96?r[0]=121:e>96&&e<100?r[2]|=16:e==104&&(r[0]=120);break}case"sg":{e==8&&o==0&&(r[2]=5);break}case"s90es":{o<8?r[2]+=17:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{o<8?r[2]+=28:o<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",h=0,d=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||l=="gs"&&r[2]<5?s="GM-a":(s="y",h=3);break}case 8:{l=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,h=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let g=r[2];s=g<10?"kP:":"kC:",s+=g%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(d=63),h=3;break}case 97:{s="VL:",h=3,d=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(d=63),h=3;break}case 100:{s="AN",r[2]>63&&(d=63),h=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,h=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,o,r[0],r[2]][h]-d}`.padStart(4-s.length,"0")),l=="xg"&&e==16&&(a=`Voice${(o*128+n+1).toString().padStart(3,"0")}`,i=" ");let c=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${o}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${o.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let f=[r[0],r[1],r[2]];(l=="gs"||l=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p=r[2]>>4==1?"SD":"DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p=r[2]>>4==1?"SD":"VL";break}case 98:{p=r[2]>>4==1?"SD":"SG";break}case 100:{p="AN";break}case 104:case 105:case 106:case 107:{p="SD";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&l=="xg"?p="XG":p="GS")}return{name:a||`${B(e||0)} ${B(n||0)} ${B(o||0)}`,iid:c,eid:f,sid:t,ending:i,sect:s,standard:p}}async load(e,n,o){let l=this,t=[],a=0,r=0;e.split(` +`).forEach(function(i,s){let h=i.split(" "),d=[];s==0?h.forEach(function(c,f){t[Pe.indexOf(c)]=f}):h.forEach(async function(c,f){f>2?(l.#t[d[t[1]]]=l.#t[d[t[1]]]||[],(!l.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]?.length||n)&&(l.#t[d[t[1]]][(d[t[0]]<<7)+d[t[2]]]=h[3],a++),r++):d.push(parseInt(h[f]))})}),n||console.debug(`Map "${o||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],o=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],l=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=o[0];t<=o[1];t++){let a=t<<7;for(let r=l[0];r<=l[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(o,l){try{await fetch(`./data/bank/${o}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,o)})}catch{console.error(`Failed loading "${o}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var ee=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var Ue=function(e,n){let o=!0;return n.forEach((l,t)=>{o=o&&e[t]==l}),o},te=function(e){let n=0;return e.forEach(o=>{n*=256,n+=o}),n},R=new TextDecoder,A=new ee;A.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),o="MSB LSB PRG NME",l=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],h=0;for(;i;){let d=n.subarray(a);([()=>{R.decode(d.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(Ue(d.subarray(0,4),l))s.forEach((c,f,p)=>{let g=te(n.subarray(c.start+4,c.start+8));c.length=g}),r=2;else{let c=R.decode(d.subarray(0,4)),f=te(d.subarray(4,8));s.push({type:c,start:f}),a+=8}},()=>{let c=s[h],f=n.subarray(c.start,c.start+c.length),p=32;switch(c.type){case"ENVC":{let g=t;for(;g=r.length&&(s=3,i=!1)}][s]||(()=>{i=!1}))()}return o});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),D=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ae=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],M=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ae=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],re=function(e){let n=.1,o=-.3;return e>66?(n=5,o=315):e>56?(n=1,o=47):e>46&&(n=.5,o=18.5),n*e-o},se=function(e){return e>105?Ae[e-106]:e>100?e*1.1-100:e/10},ie=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),_={};`hi*, +063 ${($[17]+1).toString().padStart(3,"0")} ${$[19].toString().padStart(3,"0")} ${w}`),y+=g}break}}h++,h>=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return o});var O=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),D=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],Ae=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],M=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ae=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],se=function(e){let n=.1,o=-.3;return e>66?(n=5,o=315):e>56?(n=1,o=47):e>46&&(n=.5,o=18.5),n*e-o},re=function(e){return e>105?Ae[e-106]:e>100?e*1.1-100:e/10},ie=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),_={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");_[n[0]]=n[1]});var ne=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;n.indexOf(l)>-1;)n=n.replace(l,l[0])});for(let l in _)n=n.replaceAll(l,_[l]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},oe=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var F=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],ce=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Le={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},V=function(e){return Le[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},he=function(e,n,o){let l=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[l]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},X=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},de=function(e,n,o){let l=[],t=o==!1?n.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${l}`),l.pop(),n.backOne(),n.backOne(),new Uint8Array(l)}}}return new Uint8Array(l)},fe=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,l=0;for(let t=0;t>a&1)<<7,i=e[t];i+=s,t%8!=0?(n(i,o,e),o++):l=e[t]}},I=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],ue=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],C=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],He=[0,3,81,84,88],pe={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},z={0:0,1:1,2:3,5:4},be=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],L=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],P=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Be=[12,13,16,17,18,19],Ge=[33,99,100,32,102,8,9,10],$e=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:P.length};P.forEach((e,n)=>{u[e]=n});var K={length:L.length};L.forEach((e,n)=>{K[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},_e=function(e){let n=[],o=0;return e?.forEach(function(l,t){l==247?n.push(e.subarray(o,t)):l==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ye=function(e,n="",o="",l=2){return e?`${n}${e.toString().padStart(l,"0")}${o}`:""},b={ch:128,cc:P.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:L.length,dnc:128,efx:7},me=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#d=0;#b=new Array(11);get#h(){return this.#b[this.#o]}set#h(e){this.#b[this.#o]=e}#n=new Uint8Array(b.ch);#c=new Uint8Array(b.ch);#a=new Uint8Array(b.ch);#e=new Uint8Array(b.ch*b.cc);#g=new Uint8Array(b.ace);#s=new Uint8Array(b.ch);#f=new Uint8Array(b.ch*b.nn);#v=new Uint8Array(b.ch);#u=new Uint16Array(b.pl);#$=new Uint8Array(b.pl);#P=new Int16Array(b.ch);#M=new Uint8Array(b.ch);#B=0;#r=new Uint8Array(b.ch*b.rpn);#K=new Int8Array(b.ch*ge.length);#Y=new Uint8Array(b.drm*b.dpn*b.dnc);#T=new Uint8Array(b.ch);#U=new Uint8Array(128);#S=new Uint8Array(b.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(b.cmt*64);#w=new Uint8Array(b.efx*3);#L=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#R="";#N=0;#j=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#i=[];#D=new Uint8Array(b.ch);#H=new Uint8Array(b.tr);baseBank=new G("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new G("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(o==1)return e;let l=0,t=!0;for(;t;)this.#D[e+l]==0?(this.#D[e+l]=n,console.debug(`Assign track ${n} to channel ${e+l+1}.`),t=!1):this.#D[e+l]==n?t=!1:(l+=16,l>=128&&(l=0,t=!1));return e+l}else return e}#y=[];#G;#p={nOff:(e,n)=>{let o=e*128+n,l=this.#u.lastIndexOf(o);l>-1&&(this.#e[b.cc*e+u[64]]>63?(this.#$[l]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_HELD})):this.#e[b.cc*e+u[66]]>63&&this.#$[l]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[l]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#u[l]=0,this.#f[o]=0,this.#$[l]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let l=e*128+n,t=0;for(this.#v[e]&&this.#p.ano(e);this.#$[t]>0&&this.#u[t]!=l;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,o)=>{let l;switch(n){case this.NOTE_ATTACK:{l=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{l=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{l=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(l){this.#$[o]=l;let t=this.#u[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#f[t],state:l})}})},soOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#u.forEach((n,o,l)=>{let t=n>>7,a=n&127;n==0&&this.#f[0]==0||t==e&&this.#p.nOff(t,a)})}};#J={8:function(e){let n=e.channel,o=e.data[0];this.#p.nOff(n,o)},9:function(e){let n=e.channel;this.#n[n]=1;let o=e.data[0],l=e.data[1];l>0?this.#p.nOn(n,o,l):this.#p.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#u.indexOf(o)>-1&&(this.#f[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let o=n*b.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#p.ano(n),this.#P[n]=0;let l=n*b.cc;this.#e[l+u[1]]=0,this.#e[l+u[5]]=0,this.#e[l+u[64]]=0,this.#e[l+u[65]]=0,this.#e[l+u[66]]=0,this.#e[l+u[67]]=0,this.#e[l+u[11]]=127,this.#e[l+u[101]]=127,this.#e[l+u[100]]=127,this.#e[l+u[99]]=127,this.#e[l+u[98]]=127;return}case 123:{this.#p.ano(n);return}case 124:{this.#p.ano(n);return}case 125:{this.#p.ano(n);return}case 126:{this.#v[n]=1,this.#p.ano(n);return}case 127:{this.#v[n]=0,this.#p.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Be.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==m.gs?e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==m.gm?e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==m.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let l=this.#e[o+u[99]],t=this.#e[o+u[98]];if(l==1){let a=Ge.indexOf(t);if(a>-1)this.#e[o+u[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let s=ge.indexOf(t);s>-1?this.#K[n*10+s]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(L.indexOf(l)<0){let s=`NRPN 0x${l.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;l==127?console.warn(`${s}is not necessary. Consider removing it.`):console.warn(`${s}is not supported.`)}else{let s=this.#a[n]-2;s<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${D[this.#a[n]]}.`):this.#Y[(s*b.dpn+K[l])*b.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${D[this.#a[n]]}) drum NRPN ${l} commit`)}}else{let l=z[this.#e[o+u[100]]];this.#e[o+u[101]]==0&&l!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],be[l][0]),be[l][1]),this.#r[n*b.rpn+l]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&z[this.#e[o+100]]!=null&&(this.#r[n*b.rpn+z[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#p.hoOf(n);break}case 66:{e.data[1]>>6?this.#p.soOn(n):this.#p.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#s[n]=e.data,this.#T[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#u.forEach(function(l){let t=l>>7;o==t&&(n.#f[l]=e.data,n.dispatchEvent("note",{part:o,note:l&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){_e(e.data).forEach(n=>{let o=n[0],l=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(l,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(o,l,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=He.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#V.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#C.run(n,o,e),console.warn("Unknown device SysEx!");else{let l=n[n.length-1],t=fe(n.subarray(2,n.length-1));l==t?this.#C.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${l}. Should be ${t}.`)}},66:(e,n,o)=>{this.#I.run(n,o,e)},67:(e,n,o)=>{this.#k.run(n,o,e)},68:(e,n,o)=>{this.#z.run(n,o,e)},71:(e,n,o)=>{this.#X.run(n,o,e)},126:(e,n,o)=>{this.#_.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#F.run(n,o,e)}};#_;#F;#k;#C;#I;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*b.cc,o=this.#e.subarray(n,n+b.cc);return o[u[0]]=o[u[0]]||this.#L,o[u[32]]=o[u[32]]||this.#E,o}getCcCh(e,n){if(P.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[b.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!l&&(this.#e[e*b.cc+u[0]]=C[o])}getPitch(){return this.#P}getProgram(){return this.#s}getTexts(){return this.#i.slice()}getVel(e){let n=new Map,o=this;return o.#u.forEach(function(l,t){let a=Math.floor(l/128),s=l%128;e==a&&o.#f[l]>0&&n.set(s,{v:o.#f[l],s:o.#$[t]})}),n}getBitmap(){return{bitmap:this.#h,expire:this.#d}}getLetter(){return{text:this.#R,expire:this.#N}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#u.forEach(function(n){let o=Math.floor(n/128);e.#f[n]>e.#M[o]&&(e.#M[o]=e.#f[n])}),this.#M}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,l){e[l]=Math.floor(o*n.#e[l*b.cc+u[7]]*n.#e[l*b.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#r}getNrpn(){return this.#K}getVoice(e,n,o,l){let t=e||this.#L,a=n,s=o||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(s=3);let i=this.userBank.get(t,a,s,l);if(x[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),h=r*b.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${d}`,!0),i.name=d,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,s,l)),i}getChVoice(e){let n=this.getVoice(this.#e[e*b.cc+u[0]],this.#s[e],this.#e[e*b.cc+u[32]],x[this.#t]);if(this.#T[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*b.rpn;return this.#P[e]/8192*this.#r[n]+(this.#r[n+3]-64)+((this.#r[n+1]<<7)+this.#r[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let l=3*e;this.#w[l]=1,this.#w[l+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,l=3200){let t=this,a;t.#R=" ".repeat(o),e.forEach(s=>{t.#R+=String.fromCharCode(s>31?s:32),s<32&&(a=a||new Set,a.add(s))}),t.#N=Date.now()+3200,t.#R=t.#R.padEnd(32," "),a&&(a=Array.from(a),a.forEach((s,i,r)=>{r[i]=s.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=b.ace&&console.warn("ACE slots are full.")}getAce(){return this.#g}getChAce(e,n){if(n<0||n>=b.ace)throw new RangeError("No such ACE slot");let o=this.#g[n];if(o){if(P.indexOf(o)>=0)return this.#e[e*b.cc+u[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#L=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#g.fill(0),this.#s.fill(0),this.#f.fill(0),this.#u.fill(0),this.#M.fill(0),this.#P.fill(0),this.#K.fill(0),this.#Y.fill(0),this.#m=100,this.#i=[],this.#Q=500,this.#W=0,this.#N=0,this.#R="",this.#d=0,this.#o=0,this.#h.fill(0),this.#l=!1,this.#j=0,this.#x=!0,this.#c.forEach(function(n,o,l){l[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#H.fill(0)),this.#e[b.cc*9]=C[0],this.#e[b.cc*25]=C[0],this.#e[b.cc*41]=C[0],this.#e[b.cc*57]=C[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#T.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let l=this.#t;this.#t=o,this.#o=0,this.#L=ue[0][o],this.#E=ue[1][o];for(let a=0;a0&&this.#e[a*b.cc+u[0]]==C[l]&&(this.#e[a*b.cc]=C[o]);switch(this.initOnReset,o){case m.mt32:{X.forEach((a,s)=>{let i=s+1;this.#n[i]||(this.#s[i]=a,this.#e[i*b.cc+u[91]]=127)});break}}let t;switch(o){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(l=>{e.channel=l,o=!0,this.#J[e.type].call(this,e)}),o||console.warn(`${pe[e.type]?pe[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#i.length>100&&this.#i.splice(100,this.#i.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#b[10]=new Uint8Array(512),this.#G=new v,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");_[n[0]]=n[1]});var ne=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;n.indexOf(l)>-1;)n=n.replace(l,l[0])});for(let l in _)n=n.replaceAll(l,_[l]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let o=n.indexOf("!");return o>-1&&n.length>1&&(n=n.slice(o+1)),n},oe=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var F=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],ce=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],le=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Le={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ne={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},V=function(e){return Le[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},he=function(e,n,o){let l=(e[0]-32<<16)+(e[1]<<8)+n,t=Ne[l]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(o)||o}`,a},X=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100},de=function(e,n,o){let l=[],t=o==!1?n.readIntVLV():o;e==0||e==127;for(let a=0;a127)return console.debug(`Early termination: ${l}`),l.pop(),n.backOne(),n.backOne(),new Uint8Array(l)}}}return new Uint8Array(l)},fe=function(e){let n=0;return e.forEach(o=>{n+=o,n=n&127}),~n+1&127},S=function(e,n){let o=0,l=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,o,e),o++):l=e[t]}},I=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var x=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],ue=[[0,0,0,0,121,0,0,82,81,96,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],C=[120,127,120,127,120,127,61,62,62,104,120,122,122,127],He=[0,3,81,84,88],pe={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},z={0:0,1:1,2:3,5:4},be=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],ge=[36,37],L=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],P=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Be=[12,13,16,17,18,19],Ge=[33,99,100,32,102,8,9,10],$e=[0,16,25,40,32,64,26,48],m={};x.forEach((e,n)=>{m[e]=n});var u={length:P.length};P.forEach((e,n)=>{u[e]=n});var K={length:L.length};L.forEach((e,n)=>{K[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},_e=function(e){let n=[],o=0;return e?.forEach(function(l,t){l==247?n.push(e.subarray(o,t)):l==240&&(o=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ye=function(e,n="",o="",l=2){return e?`${n}${e.toString().padStart(l,"0")}${o}`:""},b={ch:128,cc:P.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:L.length,dnc:128,efx:7},me=class extends U{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#o=0;#d=0;#b=new Array(11);get#h(){return this.#b[this.#o]}set#h(e){this.#b[this.#o]=e}#n=new Uint8Array(b.ch);#c=new Uint8Array(b.ch);#a=new Uint8Array(b.ch);#e=new Uint8Array(b.ch*b.cc);#g=new Uint8Array(b.ace);#r=new Uint8Array(b.ch);#f=new Uint8Array(b.ch*b.nn);#v=new Uint8Array(b.ch);#u=new Uint16Array(b.pl);#$=new Uint8Array(b.pl);#P=new Int16Array(b.ch);#M=new Uint8Array(b.ch);#B=0;#s=new Uint8Array(b.ch*b.rpn);#K=new Int8Array(b.ch*ge.length);#Y=new Uint8Array(b.drm*b.dpn*b.dnc);#T=new Uint8Array(b.ch);#U=new Uint8Array(128);#S=new Uint8Array(b.cmt*8);#q=new Uint8Array(1024);#A=new Uint8Array(b.cmt*64);#w=new Uint8Array(b.efx*3);#L=0;#E=0;#m=100;#O=0;#Q=500;#W=0;#R="";#N=0;#j=0;#x=!0;#l=!1;#Z;#te=new Uint8Array(2);#i=[];#D=new Uint8Array(b.ch);#H=new Uint8Array(b.tr);baseBank=new G("gm","gm2","xg","gs","ns5r","sd","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new G("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,o){if(this.#H[n])return(this.#H[n]-1)*16+e;if([2,3].indexOf(this.#E)>-1){if(o==1)return e;let l=0,t=!0;for(;t;)this.#D[e+l]==0?(this.#D[e+l]=n,console.debug(`Assign track ${n} to channel ${e+l+1}.`),t=!1):this.#D[e+l]==n?t=!1:(l+=16,l>=128&&(l=0,t=!1));return e+l}else return e}#y=[];#G;#p={nOff:(e,n)=>{let o=e*128+n,l=this.#u.lastIndexOf(o);l>-1&&(this.#e[b.cc*e+u[64]]>63?(this.#$[l]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_HELD})):this.#e[b.cc*e+u[66]]>63&&this.#$[l]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#$[l]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#f[o],state:this.NOTE_SOSTENUTO_HELD})):(this.#u[l]=0,this.#f[o]=0,this.#$[l]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,o)=>{let l=e*128+n,t=0;for(this.#v[e]&&this.#p.ano(e);this.#$[t]>0&&this.#u[t]!=l;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#$.forEach((n,o)=>{let l;switch(n){case this.NOTE_ATTACK:{l=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{l=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{l=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(l){this.#$[o]=l;let t=this.#u[o];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#f[t],state:l})}})},soOf:e=>{this.#$.forEach((n,o)=>{if(n==this.NOTE_SOSTENUTO_HELD){let l=this.#u[o],t=l>>7;e==t&&(this.#$[o]=this.NOTE_IDLE,this.#u[o]=0,this.#f[l]=0,this.dispatchEvent("note",{part:e,note:l&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#u.forEach((n,o,l)=>{let t=n>>7,a=n&127;n==0&&this.#f[0]==0||t==e&&this.#p.nOff(t,a)})}};#J={8:function(e){let n=e.channel,o=e.data[0];this.#p.nOff(n,o)},9:function(e){let n=e.channel;this.#n[n]=1;let o=e.data[0],l=e.data[1];l>0?this.#p.nOn(n,o,l):this.#p.nOff(n,o)},10:function(e){let n=e.channel,o=n*128+e.data[0];this.#u.indexOf(o)>-1&&(this.#f[o]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case m.s90es:case m.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#n[n]=1);break}e.data[1]&&(this.#n[n]=1);break}default:{this.#n[n]=1;break}}})();let o=n*b.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#p.ano(n),this.#P[n]=0;let l=n*b.cc;this.#e[l+u[1]]=0,this.#e[l+u[5]]=0,this.#e[l+u[64]]=0,this.#e[l+u[65]]=0,this.#e[l+u[66]]=0,this.#e[l+u[67]]=0,this.#e[l+u[11]]=127,this.#e[l+u[101]]=127,this.#e[l+u[100]]=127,this.#e[l+u[99]]=127,this.#e[l+u[98]]=127;return}case 123:{this.#p.ano(n);return}case 124:{this.#p.ano(n);return}case 125:{this.#p.ano(n);return}case 126:{this.#v[n]=1,this.#p.ano(n);return}case 127:{this.#v[n]=0,this.#p.ano(n);return}}if(u[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Be.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${x[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==m.gs?e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[o],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==m.gm?e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==m.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case m.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m["05rw"]:case m.x5d:case m.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.sd:{[104,105,106,107].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case m.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[m.xg,m.gs,m.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${x[this.#t]}" mode, even when they are supported in Octavia.`);let l=this.#e[o+u[99]],t=this.#e[o+u[98]];if(l==1){let a=Ge.indexOf(t);if(a>-1)this.#e[o+u[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=ge.indexOf(t);r>-1?this.#K[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(L.indexOf(l)<0){let r=`NRPN 0x${l.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;l==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#a[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${D[this.#a[n]]}.`):this.#Y[(r*b.dpn+K[l])*b.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${D[this.#a[n]]}) drum NRPN ${l} commit`)}}else{let l=z[this.#e[o+u[100]]];this.#e[o+u[101]]==0&&l!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[o+u[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],be[l][0]),be[l][1]),this.#s[n*b.rpn+l]=e.data[1])}break}case 32:{switch(this.#t){case m.s90es:case m.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[o+101]==0&&z[this.#e[o+100]]!=null&&(this.#s[n*b.rpn+z[this.#e[o+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#p.hoOf(n);break}case 66:{e.data[1]>>6?this.#p.soOn(n):this.#p.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[o+u[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case m.s90es:case m.motif:{e.data&&(this.#n[n]=1);break}default:this.#n[n]=1}this.#r[n]=e.data,this.#T[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,o=e.channel;this.#u.forEach(function(l){let t=l>>7;o==t&&(n.#f[l]=e.data,n.dispatchEvent("note",{part:o,note:l&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){_e(e.data).forEach(n=>{let o=n[0],l=n[1];(this.#ee[o]||function(){console.debug(`Unknown manufacturer ${o}.`)})(l,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#y[e.meta]||function(o,l,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=He.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,o)=>{this.#V.run(n,o,e)},65:(e,n,o)=>{if(n[0]<16)this.#C.run(n,o,e);else{let l=n[n.length-1],t=fe(n.subarray(2,n.length-1));l==t?this.#C.run(n.subarray(0,n.length-1),o,e):console.warn(`Bad GS checksum ${l}. Should be ${t}.`)}},66:(e,n,o)=>{this.#I.run(n,o,e)},67:(e,n,o)=>{this.#k.run(n,o,e)},68:(e,n,o)=>{this.#z.run(n,o,e)},71:(e,n,o)=>{this.#X.run(n,o,e)},126:(e,n,o)=>{this.#_.run(n,o,e)},127:(e,n,o)=>{this.switchMode("gm"),this.#F.run(n,o,e)}};#_;#F;#k;#C;#I;#V;#X;#z;buildRchTree(){let e=[];this.#c.forEach((n,o)=>{e[n]?.constructor||(e[n]=[]),e[n].push(o)}),this.#Z=e}getActive(){let e=this.#n.slice();return this.#t==m.mt32,e}getCc(e){let n=e*b.cc,o=this.#e.subarray(n,n+b.cc);return o[u[0]]=o[u[0]]||this.#L,o[u[32]]=o[u[32]]||this.#E,o}getCcCh(e,n){if(P.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[b.cc*e+u[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!l&&(this.#e[e*b.cc+u[0]]=C[o])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#i.slice()}getVel(e){let n=new Map,o=this;return o.#u.forEach(function(l,t){let a=Math.floor(l/128),r=l%128;e==a&&o.#f[l]>0&&n.set(r,{v:o.#f[l],s:o.#$[t]})}),n}getBitmap(){return{bitmap:this.#h,expire:this.#d}}getLetter(){return{text:this.#R,expire:this.#N}}getMode(){return x[this.#t]}getMaster(){return{volume:this.#m}}getRawStrength(){let e=this;return this.#u.forEach(function(n){let o=Math.floor(n/128);e.#f[n]>e.#M[o]&&(e.#M[o]=e.#f[n])}),this.#M}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(o,l){e[l]=Math.floor(o*n.#e[l*b.cc+u[7]]*n.#e[l*b.cc+u[11]]*n.#m/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#K}getVoice(e,n,o,l){let t=e||this.#L,a=n,r=o||this.#E;x[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,l);if(x[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),h=s*b.cmt,d="";this.#A.subarray(h,h+10).forEach(c=>{c>31&&(d+=String.fromCharCode(c))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${d}`,!0),i.name=d,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,l)),i}getChVoice(e){let n=this.getVoice(this.#e[e*b.cc+u[0]],this.#r[e],this.#e[e*b.cc+u[32]],x[this.#t]);if(this.#T[e])switch(this.#t){case m.mt32:n.ending="~",n.name="",this.#S.subarray(14*(e-1),14*(e-1)+10).forEach(o=>{o>31&&(n.name+=String.fromCharCode(o))})}return n}getPitchShift(e){let n=e*b.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#w.subarray(n,n+2)}setEffectTypeRaw(e=0,n,o){let l=3*e;this.#w[l]=1,this.#w[l+1+ +n]=o}setEffectType(e=0,n,o){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,o)}setLetterDisplay(e,n,o=0,l=3200){let t=this,a;t.#R=" ".repeat(o),e.forEach(r=>{t.#R+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#N=Date.now()+3200,t.#R=t.#R.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,o=0;for(;n&&o=b.ace&&console.warn("ACE slots are full.")}getAce(){return this.#g}getChAce(e,n){if(n<0||n>=b.ace)throw new RangeError("No such ACE slot");let o=this.#g[n];if(o){if(P.indexOf(o)>=0)return this.#e[e*b.cc+u[o]];throw new Error(`Invalid ACE source: ${o}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#L=0,this.#E=0,this.#O=0,this.#n.fill(0),this.#e.fill(0),this.#g.fill(0),this.#r.fill(0),this.#f.fill(0),this.#u.fill(0),this.#M.fill(0),this.#P.fill(0),this.#K.fill(0),this.#Y.fill(0),this.#m=100,this.#i=[],this.#Q=500,this.#W=0,this.#N=0,this.#R="",this.#d=0,this.#o=0,this.#h.fill(0),this.#l=!1,this.#j=0,this.#x=!0,this.#c.forEach(function(n,o,l){l[o]=o}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#H.fill(0)),this.#e[b.cc*9]=C[0],this.#e[b.cc*25]=C[0],this.#e[b.cc*41]=C[0],this.#e[b.cc*57]=C[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#A.fill(0),this.#U.fill(0),this.#S.fill(0),this.#T.fill(0),this.#w.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let l=this.#t;this.#t=o,this.#o=0,this.#L=ue[0][o],this.#E=ue[1][o];for(let a=0;a0&&this.#e[a*b.cc+u[0]]==C[l]&&(this.#e[a*b.cc]=C[o]);switch(this.initOnReset,o){case m.mt32:{X.forEach((a,r)=>{let i=r+1;this.#n[i]||(this.#r[i]=a,this.#e[i*b.cc+u[91]]=127)});break}}let t;switch(o){case m.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case m.x5d:case m.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#J[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),o=!1;this.#Z[n]?.forEach(l=>{e.channel=l,o=!0,this.#J[e.type].call(this,e)}),o||console.warn(`${pe[e.type]?pe[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#i.length>100&&this.#i.splice(100,this.#i.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{A.context=this,this.userBank.load(await A.read(e,n));break}}}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#b[10]=new Uint8Array(512),this.#G=new v,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#y[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#l=!0,this.#i.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#l=!0,this.#i.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#l=!0,this.#i.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#l=!0,this.#i.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#l=!0,this.#i.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${s}`)});break}case"ln":{a.slice(1).forEach((s,i)=>{s.length&&this.#i.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${s}`)});break}default:this.#i.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#i.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#i.unshift(t.slice(1)):this.#i[0]+=t:(this.#i[0]=t,this.#i.unshift(""))}},this.#y[2]=function(t){this.#i.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#i.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#i.unshift(`${ye(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#i.unshift(""):this.#i[0]+=`${t}`},this.#y[6]=function(t){this.#i.unshift(`${ye(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#i.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new v("universal non-realtime"),this.#F=new v("universal realtime"),this.#k=new v("Yamaha"),this.#C=new v("Roland"),this.#I=new v("Korg"),this.#V=new v("Kawai"),this.#X=new v("Akai"),this.#z=new v("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#k.default=n,this.#C.default=n,this.#I.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#k.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],s=(i,r)=>{a[r]=i};if(t.subarray(1).forEach((i,r)=>{let h=r+t[0];([s,s,s,s,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(i,r)}),t[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${re(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${M[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(s)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ae[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${se(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${M[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${M[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(s)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((s,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${O[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][t[0]-64+i]||function(){})(s)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((s,i)=>{[r=>{console.debug(`${a}send: ${E(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${E(r)}dB`)},r=>{console.debug(`${a}to chorus: ${E(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][t[0]-86+i](s)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,s)=>{let i=s+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,h=i-1&3,d=`XG EQ ${r} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],s=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((r,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${i}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${i}sub type: ${d+1}`)}][s+h]||function(){})(r)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#N=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0);let s=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=b.cc*s,h=`XG CH${s+1} `,d=`Unknown XG part address ${i}.`;t.subarray(2).forEach((c,f)=>{i<1?console.debug(d):i<41?([()=>{e.#e[r+u[0]]=c},()=>{e.#e[r+u[32]]=c},()=>{e.#s[s]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!c},()=>{},()=>{e.setChType(s,c,m.xg),console.debug(`${h}type: ${D[c]||c}`)},()=>{e.#r[b.rpn*s+3]=c},!1,!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{e.#e[r+u[128]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[76]]=c},()=>{e.#e[r+u[77]]=c},()=>{e.#e[r+u[78]]=c},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},()=>{e.#e[r+u[73]]=c},()=>{e.#e[r+u[75]]=c},()=>{e.#e[r+u[72]]=c}][i+f-1]||(()=>{}))():i<48?console.debug(d):i<111?i>102&&i<105&&(e.#e[r+u[[5,65][i&1]]]=c):i<114?console.debug(d):i<116?console.debug(`${h}EQ ${["bass","treble"][i&1]} gain: ${c-64}dB`):i<118?console.debug(d):i<120?console.debug(`${h}EQ ${["bass","treble"][i&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=t[1],r=`PLG-150VL CH${s+1} `;t.subarray(2).forEach((h,d)=>{let c=d+i;switch(c){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${r}${f} control source: ${oe(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${r}${f} scale break point: ${h}`):console.debug(`${r}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let s=t[0],i="MU1000 System: ";t.subarray(1).forEach((r,h)=>{let d=s+h;d==8?console.debug(`${i}LCD contrast set to ${r}.`):d==18?(e.#E=r?126:0,console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.debug(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.debug(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!r,console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let s=t[0],i=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(s<16)switch(s){case 2:{let r=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",r),e.#x&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${s} invoked.`)}else if(s<32){if(e.#x){let r=e.chRedir(s-16+(e.#j<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(s<36){let r=e.chRedir(s-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),e.#j=s-32),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${s+1} `,r=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ie[c]||c.toString().padStart("0"):d+=c*13}),r>=e.#W&&e.#i.unshift("SG Lyric: "),e.#i[0]+=`${ne(h)}`,e.#W=r+Math.ceil(d/2)+e.#Q,k()&&console.debug(`${i}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#k.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#k.add([89,0],(t,a,s)=>{if(e.eprom){let i=t[0],r=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let g=0;g<7;g++)h[r+7*f+g]+=(d>>6-g&1)<<7;else h[r+7*f+p]=d})}}).add([89,1],(t,a,s)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,s)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)r[i+7*c+p]+=(h>>6-p&1)<<7;else r[i+7*c+f]=h})}}).add([89,3],(t,a,s)=>{}),this.#k.add([39,48],(t,a,s)=>{}).add([43,0,0],(t,a,s)=>{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,s)=>{}).add([43,2],(t,a,s)=>{let i=e.chRedir(t[0],a,!0),r=t[1],h=b.cc*i,d=`TG300 CH${i+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#s[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+r]||(()=>{}))(c,f+r):f<21||(f<47?([()=>{e.#v[i]=+!c},()=>{},()=>{},()=>{e.#r[b.rpn*i+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+r-21]||(()=>{}))(c,f+r):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+r-95]||(()=>{}))(c,f+r))})}).add([43,7,0],(t,a,s)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,s)=>{e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0),t.forEach(function(i,r){let h=Math.floor(r/16),d=r%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#C.add([66,18,0,0,127],(t,a,s)=>{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#E=3,e.#l=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,s)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#l=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[r,r,r,r,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let s="".padStart(a," ");t.subarray(1).forEach((i,r)=>{s+=String.fromCharCode(Math.max(32,i))}),s=s.padEnd(16," "),console.debug(`GS patch name: ${s}`)}else a<48||(a<65?t.subarray(1).forEach((s,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${F[s]}`),e.setEffectType(0,40,s)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${s}ms`)},()=>{console.info(`${r}type: ${ce[s]}`),e.setEffectType(1,40,16+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)},()=>{console.debug(`${r}to delay: ${E(s)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((s,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${le[s]}`),e.setEffectType(2,40,32+s)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${E(s)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((s,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][s]}Hz`)},()=>{console.debug(`${a}low gain: ${s-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][s]}Hz`)},()=>{console.debug(`${a}high gain: ${s-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",s=function(i,r){let h=he(e.#w.subarray(10,12),r,i);h&&console.debug(`${a}${V(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${V(e.#w.subarray(10,12))}`)},!1,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,s,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+r]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(i,t[0]+r)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#d=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#d=Date.now()+3200,e.#b[t[0]-1]?.length||(e.#b[t[0]-1]=new Uint8Array(256));let a=e.#b[t[0]-1],s=t[1];a.fill(0);let i=t.subarray(2);for(let r=0;r>4-g&1,g++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,s){let i=t[0],r=b.cc*a,h=b.rpn*a,d=`GS CH${a+1} `;i<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[r+u[0]]=c},()=>{e.#s[a]=c},()=>{let p=e.chRedir(c,s,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][i+f]()}):i<19||(i<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[a]=+!c},!1,()=>{e.setChType(a,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#r[h+3]=c},!1,()=>{e.#e[r+u[7]]=c},!1,!1,()=>{e.#e[r+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[91]]=c},!1,!1,()=>{e.#r[h+1]=c},()=>{e.#r[h+2]=c},()=>{e.#e[r+u[94]]=c}][i+f-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},l=function(t,a){let s=t[0],i=`GS CH${a+1} `;s<2?t.subarray(1).forEach((r,h)=>{[()=>{e.#e[b.cc*a+u[32]]=r},()=>{}][s+h]()}):s<32?console.warn(`Unknown GS misc address: ${s}`):s<35?t.subarray(1).forEach((r,h)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][s+h-32]()}):console.warn(`Unknown GS misc address: ${s}`)};this.#C.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{l(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{l(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{l(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{l(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{l(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{l(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{l(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{l(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{l(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{l(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{l(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{l(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{l(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{l(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{l(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{l(t,e.chRedir(15,a,!0))}),this.#I.add([54,65],(t,a)=>{e.switchMode("x5d");let s=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],r=e.chRedir(s&15,a,!0),h=b.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-1,e.#e[h+u[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,m.x5d),e.#s[r]=i-101,e.#e[h+u[0]]=56):(e.setChType(r,e.CH_DRUMS,m.x5d),e.#s[r]=$e[i-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=i},()=>{i<31&&(e.#e[h+u[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[h+u[93]]=I(i)},()=>{e.#e[h+u[91]]=I(i)},()=>{e.#r[r*b.rpn+3]=i>8191?i-16320:64+i},()=>{e.#r[r*b.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#r[r*b.rpn]=i)},()=>{}][s>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let s="",i=82,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` -${i} ${r} ${h} ${s.trim().replace("Init Voice","")}`,r++,s="";break}}r>99&&(i=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let s="",i=90,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{d+=` -${i} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(s,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,s)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(s,i,r,h){if(i<192){let d=e.chRedir(Math.floor(i/12),a,!0),c=d*b.cc;switch(i%12){case 0:{s<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#s[d]=s):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#s[d]=$e[s-128]),s>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=s;break}case 2:{e.#r[d*b.rpn+3]=s>127?s-192:64+s;break}case 3:{e.#r[d*b.rpn+1]=s>127?s-192:64+s;break}case 4:{s<31&&(e.#e[c+u[10]]=Math.round((s-15)*4.2+64));break}case 5:{let f=s>>4,p=s&15;e.#e[c+u[91]]=I(p),e.#e[c+u[93]]=I(f);break}case 10:break;case 11:{let f=e.chRedir(s&15,a,!0),p=s>>4;e.#c[d]=s,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(i-192,a,!0)}})}),this.#C.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0),r=t[1];t.subarray(2).forEach((h,d)=>{let c=d+r;e.#U[c+(i-1)*16]=h,([!1,()=>{let f=e.#U[i-1<<4];if(f<3)if(e.#T[i]=1,f==2)for(let p=0;p{e.#r[i*b.rpn+3]=h+40},()=>{e.#r[i*b.rpn+1]=h+14},()=>{e.#r[i*b.rpn]=h},!1,()=>{e.#e[b.cc*i+u[91]]=h?127:0},!1,()=>{e.#e[b.cc*i+u[7]]=h},()=>{e.#e[b.cc*i+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0)}).add([22,18,2],(t,a,s)=>{e.switchMode("mt32");let i=e.chRedir(s,a,!0),r=t[1]+(t[0]<<7);r<10&&(e.#T[i]=1),t.subarray(2).forEach((h,d)=>{let c=d+r;c<14&&(e.#S[(i-1)*b.cmt+c]=h)})}).add([22,18,3],(t,a,s)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((r,h)=>{let d=h+i;e.#U[d]=r;let c=e.chRedir(1+d>>4,a,!0),f=d&15;([!1,()=>{let p=e.#U[c-1<<4];if(p<3)if(e.#T[c]=1,p==2)for(let g=0;g{e.#r[c*b.rpn+3]=r+40},()=>{e.#r[c*b.rpn+1]=r+14},()=>{e.#r[c*b.rpn]=r},!1,()=>{e.#e[b.cc*c+u[91]]=r?127:0},!1,()=>{e.#e[b.cc*c+u[7]]=r},()=>{e.#e[b.cc*c+u[10]]=Math.ceil(r*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,a,s)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((r,h)=>{let d=h+i,c=e.chRedir(Math.floor(d/246+1),a,!0),f=d%246;f<14&&(e.#S[(c-1)*b.cmt+f]=r),f<10&&(e.#T[c]=1)})}).add([22,18,5],(t,a,s)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=i+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=r,([!1,()=>{let g=e.#q[p];if(g<3){let y="";if(g==2){let $=b.cmt*c;y=`MT-m:${r.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,r+(g<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME -000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,a,s)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((r,h)=>{let d=i+h;d>1)*b.cmt+d]=r)})}).add([22,18,16],(t,a,s)=>{e.switchMode("mt32");let i=t[1],r=!1,h=function(d,c){e.#c[c-12]=d,r=!0};t.subarray(2).forEach((d,c)=>{let f=c+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),r&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],s=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(s+=String.fromCharCode(i))}),e.#R=s.padStart(20," "),e.#N=Date.now()+3200}).add([22,18,82],(t,a)=>{let s=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#p.ano(s+i),i&&i<10&&(e.#s[s+i]=X[i-1]);console.info("MT-32 alt reset complete.")}),this.#I.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,a)=>{let s=t[0];switch(s){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(s<10){let i=[0,0,0,0],r=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{[r,r,r,r,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][s+d]()}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let s=e.chRedir(t[0],a,!0),i=s*b.cc,r=t[1],h=`NS5R CH${s+1} `;t.subarray(2).forEach((d,c)=>{let f=r+c;f<3?[()=>{e.#e[i+u[0]]=d||121},()=>{e.#e[i+u[32]]=d},()=>{e.#s[s]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,a,!0);e.#c[s]=p,s!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[s]=+!d},()=>{e.setChType(s,d,m.ns5r),console.debug(`${h}type: ${D[d]}`)},()=>{e.#r[b.rpn*s+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[i+u[7]]=d},()=>{e.#e[i+u[11]]=d},()=>{},()=>{},()=>{e.#e[i+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[i+u[93]]=d},()=>{e.#e[i+u[91]]=d},()=>{e.#e[i+u[76]]=d},()=>{e.#e[i+u[77]]=d},()=>{e.#e[i+u[78]]=d},()=>{e.#e[i+u[74]]=d},()=>{e.#e[i+u[71]]=d},()=>{e.#e[i+u[73]]=d},()=>{e.#e[i+u[75]]=d},()=>{e.#e[i+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[i+u[5]]=d},()=>{e.#e[i+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,a)=>{let s=t[0];if(s<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=s-32;e.#d=Date.now()+3200,e.#o=10,e.#h.fill(0);let r=t.subarray(1),h=4;r.forEach(function(d,c){let f=c+i,p=f>>4,g=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#h[g*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1;let s="";S(t,(i,r)=>{r<8?(i>31&&(s+=String.fromCharCode(i)),r==7&&(e.aiEfxName=s)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(s,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),h=r*b.cc;switch(i%92){case 0:{e.#e[h+u[0]]=s||121;break}case 1:{e.#e[h+u[32]]=s;break}case 2:{e.#s[r]=s,s>0&&(e.#n[r]=1);break}case 3:{let d=e.chRedir(s,a,!0);e.#c[r]=d,r!=d&&(console.info(`NS5R CH${r+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#r[r*b.rpn+3]=s<40||s>88?s+(s>63?-192:64):s;break}case 9:case 10:{e.#e[h+u[7]]=s;break}case 11:{e.#e[h+u[11]]=s;break}case 14:{e.#e[h+u[10]]=s||128;break}case 19:{e.#e[h+u[93]]=s;break}case 20:{e.#e[h+u[91]]=s;break}case 84:{e.#e[h+u[65]]=s;break}case 85:{e.#e[h+u[5]]=s;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let s="",i=80,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:{i=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` -${i} ${r} ${h} ${s.trim().replace("Init Voice","")}`,r++,s="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let s="",i=88,r=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%126;switch(!0){case p<10:{c>31&&(s+=String.fromCharCode(c));break}case p==11:break;case p==12:break;case p==13:{d+=` -${i} ${r} ${h} ${s.trim().replace("Init Combi","")}`,r++,s="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(s,i,r)=>{if(i<720)for(let h=0;h<8;h++)a[i*8+h]=s>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,s)=>{e.#I.run([66,...t],a,s)}),this.#V.add([16,0,8,0],(t,a,s)=>{let i=(t[2]<<4)+t[3],r="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#E=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,s)=>{let i=e.chRedir(t[1],a,!0),r=b.cc*i,h=b.rpn*i,d=(t[3]<<4)+t[4],c=`K11 CH${i+1} `;([()=>{d<128?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[r+u[0]]=0,e.#s[i]=d):(e.setChType(i,e.CH_DRUMS,m.k11),e.#s[i]=d-128)},()=>{let f=e.chRedir(d,a,!0);e.#c[i]=f,i!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[r+u[7]]=d},()=>{e.#n[i]=d},()=>{e.#e[r+u[10]]=d},()=>{e.#r[h+3]=d+40},()=>{e.#r[h+1]=d>>1,e.#r[h+2]=d&1},()=>{e.#e[r+u[91]]=d?127:0},()=>{},()=>{e.#e[r+u[74]]=d},()=>{e.#e[r+u[73]]=d},()=>{e.#e[r+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,s)=>{let i=(t[2]<<4)+t[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,s)=>{let i=(t[2]<<4)+t[3],r=e.chRedir(t[1],a,!0),h=r*b.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#s[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#s[r]=i-100):(e.setChType(r,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#s[r]=i-160)},()=>{let d=e.chRedir(i,a,!0);e.#c[r]=d,r!=d&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,s)=>{let i=(t[2]<<4)+t[3],r=e.chRedir(t[1],a,!0),h=r*b.cc,d=r*b.rpn,c=`GMLX CH${r+1} `;[()=>{e.#n[r]=i},()=>{e.#e[h+u[7]]=i},()=>{e.#e[h+u[10]]=i},()=>{e.#e[h+u[91]]=i?127:0},()=>{e.#r[d+3]=i+40},()=>{e.#r[d+1]=i},()=>{e.#r[d]=i},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,a,s)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${F[i]}`);break}}break}default:if(t[0]>>4==1){let r=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let h=e.chRedir(i,a,!0);e.#c[r]=h,r!=h&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[b.cc*r+u[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,a,s)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#k.add([127,0],(t,a,s)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#k.run(i,a,s)}).add([127,1,0,0],(t,a,s)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][r+d]||(()=>{console.info(`Unrecognized ${i}ID: ${r+d}`)}))()})}).add([127,1,0,0,14],(t,a,s)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(h,d,c)=>{console.debug(`${i}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,s)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(h,d,c)=>{console.debug(`${i}multi edit buffer: ${h[1]}`)},(r[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,s)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),r=b.cc*i,h=t[1],d=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[r+u[0]]=c},()=>{c&&(e.#n[i]=1),e.#e[r+u[32]]=c,e.#a[i]=this.setChType(i,[32,40].indexOf(c)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{c&&(e.#n[i]=1),e.#s[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[i]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[r+u[7]]=c},()=>{e.#e[r+u[10]]=c},!1,!1,!1,()=>{e.#e[r+u[91]]=c},()=>{e.#e[r+u[93]]=c},()=>{e.#e[r+u[94]]=c},()=>{e.#e[r+u[128]]=c},()=>{},()=>{e.#e[r+u[74]]=c},()=>{e.#e[r+u[71]]=c},!1,()=>{e.#e[r+u[65]]=c},()=>{e.#e[r+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,a,s)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((r,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=r-64},()=>{let f=M[r]},()=>{let f=r/10},()=>{let f=r}][i+h&3]||(()=>{}))()})}),this.#C.add([0,72,18,0,0,0,0],(t,a,s)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}};var j=Ie(we(),1);var Ee=class{#t=!1;constructor(e,n,o,l){this.#t=e,this.start=n,this.end=o,this.data=l}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},Q=class extends Ee{constructor(e,n,o){super(!0,e,n,o)}},ke=class extends Ee{constructor(e,n){super(!1,e,e,n)}},W=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let o=[];if(n)for(let l=0;le);l++){if(this[l].endt.#t&&(o.push(a),t.#t=a.index)})}return o}getRange(e,n){e>n&&([e,n]=[n,e]);let o=[],l=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let s=0;s=e&&(l=s):l=l<0?s:l;for(;a;)this[l]?.end=e&&o.push(this[l]):a=!1,l++;return o}};var Fe=0xffffffffffff,ve=function(e){let n=new W,o=this,l=e.timeDivision,t=120,a=new W,s=0,i=0;a.push(new Q(0,Fe,[120,0])),e.track.forEach(function(c){s=0,c.event.forEach(function(f){s+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,a[a.length-1]&&a.push(new Q(s,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let r=120;a.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):r==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),r=c.data[0])});let h=0,d=120;return a.forEach(function(c){let f=c.start,p=f/d/l*60+h;d=c.data[0],h=p-f/d/l*60,c.data[1]=h}),console.debug("All tempo changes: ",a),t=120,s=0,i=0,e.track.forEach(function(c,f){s=0,i=0;let p=f+1;c.event.forEach(function(g,y){s+=g.deltaTime;let $=a.step(s,!0)[0];$&&(t=$.data[0],i=$.data[1]);let w={type:g.type,data:g.data,track:p,part:0};g.type>14?w.meta=g.metaType:w.part=g.channel,n.push(new ke(s/t/l*60+i,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};j.default.customInterpreter=de;var Se=class extends U{device;#t;#o="";#d=[];#b=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#n=.5;#c=120;#a=4;#e=4;#g=0;#s=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#a=4,this.#e=4,this.#g=0,this.#s=0}async loadFile(e){this.#t=ve(j.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#s/this.#n}get noteOverall(){return this.noteProgress-this.#g}get noteBar(){return Math.floor(this.noteOverall/this.#a)}get noteBeat(){let e=this.noteOverall%this.#a;return e<0&&(e+=this.#a),e}getTimeSig(){return[this.#a,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#s&&(this.#s=e);let n=this.#t?.step(e)||[],o=0,l=new Set,t=this,a=[];this.device.getStrength().forEach((y,$)=>{this.#h[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?l.add($.part*128+$.data[0]):l.has($.part*128+$.data[0])&&o++),y.data.type==8&&l.has($.part*128+$.data[0])&&o++;let w=t.device.runJson($);switch(w?.reply){case"meta":{a.push(w);break}}w?.reply&&delete w.reply}),a?.length>0&&this.dispatchEvent("meta",a);let s=this.device.getActive(),i=[],r=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#h[$],y);let T=w[$]-t.#b[$],Y=u.length*$;if(T>=0){let H=4*.25**(h[Y+u[73]]/64);t.#b[$]+=Math.ceil(T-T*t.smoothingAtk**H)}else{let H=4*.25**(h[Y+u[72]]/64);t.#b[$]+=Math.floor(T-T*t.smoothingDcy**H)}});let p=0;return s.forEach(function(y,$){y&&(i[$]=t.device.getVel($),p+=i[$].size)}),{extraPoly:o,curPoly:p,chInUse:s,chKeyPr:i,chPitch:r,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#b.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,o=.5){super();let l=this;this.smoothingAtk=n,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(l.#d[a.meta]||console.debug).call(l,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){l.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){l.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){l.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){l.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){l.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){l.dispatchEvent("screen",t.data)}),this.#d[3]=function(t,a){l.#o?.length<1&&(l.#o=a)},this.#d[81]=function(t,a){let s=l.noteProgress,i=l.#n||.5;l.#c=6e7/a,l.#n=a/1e6,l.#g+=s*(i/l.#n)-s},this.#d[88]=function(t,a){let s=l.noteProgress,i=l.noteOverall,r=l.noteBar,h=l.noteBeat,d=l.#a,c=l.#e;l.#a=a[0],l.#e=1<=d&&(dN?(n=Math.round(self.innerHeight/1080*1e4)/1e4,o=Math.ceil(self.innerHeight*N)):e{r.length&&this.#i.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#i.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#i.unshift(`XGF_Data: ${t}`)}break}default:this.#l?t[0]=="\\"?this.#i.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#i.unshift(t.slice(1)):this.#i[0]+=t:(this.#i[0]=t,this.#i.unshift(""))}},this.#y[2]=function(t){this.#i.unshift(`Copyrite: ${t}`)},this.#y[3]=function(t,a){a<1&&this.#O<1&&this.#i.unshift(`TrkTitle: ${t}`)},this.#y[4]=function(t,a){this.#i.unshift(`${ye(this.#O,""," ")}Instrmnt: ${t}`)},this.#y[5]=function(t){t.trim()==""?this.#i.unshift(""):this.#i[0]+=`${t}`},this.#y[6]=function(t){this.#i.unshift(`${ye(this.#O,""," ")}C.Marker: ${t}`)},this.#y[7]=function(t){this.#i.unshift(`CuePoint: ${t}`)},this.#y[32]=function(t){this.#O=t[0]+1},this.#y[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#H[a]=t+1},this.#y[81]=function(t,a){e.#Q=t/1e3},this.#y[127]=function(t,a){e.#G.run(t,a)},this.#G.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#G.add([67,0,1],function(t,a){e.#H[a]=t[0]+1}),this.#_=new v("universal non-realtime"),this.#F=new v("universal realtime"),this.#k=new v("Yamaha"),this.#C=new v("Roland"),this.#I=new v("Korg"),this.#V=new v("Kawai"),this.#X=new v("Akai"),this.#z=new v("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#_.default=n,this.#F.default=n,this.#k.default=n,this.#C.default=n,this.#I.default=n,this.#V.default=n,this.#X.default=n,this.#z.default=n,this.#_.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#l=e.#l||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#F.add([4,1],t=>{e.#m=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#k.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#l=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let h=s+t[0];([r,r,r,r,d=>{this.#m=d*129/16383*100},d=>{},d=>{}][h]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${O[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${se(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${M[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${M[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${O[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${ae[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${re(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${M[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${M[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${O[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,h=i-1&3,d=`XG EQ ${s} ${["gain","freq","Q","shape"][h]}: `;[()=>{console.debug(`${d}${a-64}dB`)},()=>{console.debug(`${d}${a} (raw)`)},()=>{console.debug(`${d}${a/10}`)},()=>{console.debug(`${d}${["shelf","peak"][+!!a]}`)}][h]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,h)=>{([d=>{e.setEffectTypeRaw(3+a,!1,d),console.info(`${i}main type: ${O[d]}`)},d=>{e.setEffectTypeRaw(3+a,!0,d),console.debug(`${i}sub type: ${d+1}`)}][r+h]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#N=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=b.cc*r,h=`XG CH${r+1} `,d=`Unknown XG part address ${i}.`;t.subarray(2).forEach((c,f)=>{i<1?console.debug(d):i<41?([()=>{e.#e[s+u[0]]=c},()=>{e.#e[s+u[32]]=c},()=>{e.#r[r]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[r]=p,r!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[r]=+!c},()=>{},()=>{e.setChType(r,c,m.xg),console.debug(`${h}type: ${D[c]||c}`)},()=>{e.#s[b.rpn*r+3]=c},!1,!1,()=>{e.#e[s+u[7]]=c},!1,!1,()=>{e.#e[s+u[10]]=c||128},!1,!1,()=>{e.#e[s+u[128]]=c},()=>{e.#e[s+u[93]]=c},()=>{e.#e[s+u[91]]=c},()=>{e.#e[s+u[94]]=c},()=>{e.#e[s+u[76]]=c},()=>{e.#e[s+u[77]]=c},()=>{e.#e[s+u[78]]=c},()=>{e.#e[s+u[74]]=c},()=>{e.#e[s+u[71]]=c},()=>{e.#e[s+u[73]]=c},()=>{e.#e[s+u[75]]=c},()=>{e.#e[s+u[72]]=c}][i+f-1]||(()=>{}))():i<48?console.debug(d):i<111?i>102&&i<105&&(e.#e[s+u[[5,65][i&1]]]=c):i<114?console.debug(d):i<116?console.debug(`${h}EQ ${["bass","treble"][i&1]} gain: ${c-64}dB`):i<118?console.debug(d):i<120?console.debug(`${h}EQ ${["bass","treble"][i&1]} freq: ${c}`):console.debug(d)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((h,d)=>{let c=d+i;switch(c){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][h]}`);break}case 0:case 27:case 28:break;default:if(c<27){let f=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][c-3>>1];c&1?c<23?(console.debug(`${s}${f} control source: ${oe(h)}`),h&&h<96&&e.allocateAce(h)):console.debug(`${s}${f} scale break point: ${h}`):console.debug(`${s}${f} depth: ${h-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,h)=>{let d=r+h;d==8?console.debug(`${i}LCD contrast set to ${s}.`):d==18?(e.#E=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):d>=64&&d<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#x=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][d-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#x?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#x&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#x&&e.dispatchEvent("channelmin",s),e.#x&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#x){let s=e.chRedir(r-16+(e.#j<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#x&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#j=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let h="",d=0;t.subarray(2).forEach((c,f)=>{f%2==0?h+=ie[c]||c.toString().padStart("0"):d+=c*13}),s>=e.#W&&e.#i.unshift("SG Lyric: "),e.#i[0]+=`${ne(h)}`,e.#W=s+Math.ceil(d/2)+e.#Q,k()&&console.debug(`${i}vocals: ${h}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#k.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#k.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let h=e.eprom.data;t.subarray(4).forEach((d,c)=>{let f=c>>3,p=c&7;if(p==7)for(let g=0;g<7;g++)h[s+7*f+g]+=(d>>6-g&1)<<7;else h[s+7*f+p]=d})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((h,d)=>{let c=d>>3,f=d&7;if(f==7)for(let p=0;p<7;p++)s[i+7*c+p]+=(h>>6-p&1)<<7;else s[i+7*c+f]=h})}}).add([89,3],(t,a,r)=>{}),this.#k.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[s,s,s,s,()=>{this.#m=h*129/16383*100},()=>h-64,()=>h||128,()=>h,()=>h,()=>{console.debug(`TG300 variation on cc${h}.`)}][c](h,c)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],h=b.cc*i,d=`TG300 CH${i+1} `;t.subarray(2).forEach((c,f)=>{f<5?([()=>{},()=>{e.#e[h+u[0]]=c},()=>{e.#e[h+u[32]]=c},()=>{e.#r[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][f+s]||(()=>{}))(c,f+s):f<21||(f<47?([()=>{e.#v[i]=+!c},()=>{},()=>{},()=>{e.#s[b.rpn*i+3]=c},()=>{},()=>{e.#e[h+u[7]]=c},!1,!1,()=>{e.#e[h+u[10]]=c||128},!1,!1,()=>{console.debug(`${d} AC1 at cc${c}`)},()=>{console.debug(`${d} AC2 at cc${c}`)},()=>{e.#e[h+u[128]]=c},()=>{e.#e[h+u[93]]=c},()=>{e.#e[h+u[91]]=c},()=>{e.#e[h+u[94]]=c},()=>{e.#e[h+u[76]]=c},()=>{e.#e[h+u[77]]=c},()=>{e.#e[h+u[74]]=c},()=>{e.#e[h+u[71]]=c},()=>{e.#e[h+u[73]]=c},()=>{e.#e[h+u[75]]=c},()=>{e.#e[h+u[72]]=c},()=>{e.#e[h+u[78]]=c}][f+s-21]||(()=>{}))(c,f+s):f<95||([()=>{e.#e[h+u[65]]=c},()=>{e.#e[h+u[5]]=c}][f+s-95]||(()=>{}))(c,f+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#o=0,e.#d=Date.now()+3200,e.#h.fill(0),t.forEach(function(i,s){let h=Math.floor(s/16),d=s%16,c=(d*3+h)*7,f=7,p=0;for(c-=d*5,h==2&&(f=2);p>6-p&1,p++})}),this.#C.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#E=3,e.#l=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[b.cc*9]=120,e.#e[b.cc*25]=120,e.#e[b.cc*41]=120,e.#e[b.cc*57]=120,e.#l=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{let c=d+t[0];[s,s,s,s,f=>{this.#m=f*129/16383*100},f=>{},f=>{}][c](h,d)}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${F[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${ce[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${le[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let h=he(e.#w.subarray(10,12),s,i);h&&console.debug(`${a}${V(e.#w.subarray(10,12))} ${h}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${V(e.#w.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(h,d){console.warn(`Unknown GS EFX address: ${d}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#d=Date.now()+3200,t[1]==0&&(e.#o=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#o>9&&(e.#o=0),e.#d=Date.now()+3200,e.#b[t[0]-1]?.length||(e.#b[t[0]-1]=new Uint8Array(256));let a=e.#b[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-g&1,g++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let o=function(t,a,r){let i=t[0],s=b.cc*a,h=b.rpn*a,d=`GS CH${a+1} `;i<3?t.subarray(1).forEach((c,f)=>{[()=>{e.#e[s+u[0]]=c},()=>{e.#r[a]=c},()=>{let p=e.chRedir(c,r,!0);e.#c[a]=p,a!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))}][i+f]()}):i<19||(i<44?t.subarray(1).forEach((c,f)=>{([()=>{e.#v[a]=+!c},!1,()=>{e.setChType(a,c<<1,m.gs),console.debug(`${d}type: ${c?"drum ":"melodic"}${c||""}`)},()=>{e.#s[h+3]=c},!1,()=>{e.#e[s+u[7]]=c},!1,!1,()=>{e.#e[s+u[10]]=c||128},!1,!1,()=>{console.debug(`${d}CC 1: cc${c}`)},()=>{console.debug(`${d}CC 2: cc${c}`)},()=>{e.#e[s+u[93]]=c},()=>{e.#e[s+u[91]]=c},!1,!1,()=>{e.#s[h+1]=c},()=>{e.#s[h+2]=c},()=>{e.#e[s+u[94]]=c}][i+f-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},l=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,h)=>{[()=>{e.#e[b.cc*a+u[32]]=s},()=>{}][r+h]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,h)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+h-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#C.add([66,18,64,16],(t,a)=>{o(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{o(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{o(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{o(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{o(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{o(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{o(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{o(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{o(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{o(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{o(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{o(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{o(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{o(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{o(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{o(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{l(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{l(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{l(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{l(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{l(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{l(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{l(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{l(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{l(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{l(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{l(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{l(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{l(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{l(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{l(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{l(t,e.chRedir(15,a,!0))}),this.#I.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),h=b.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,m.x5d),e.#r[s]=i-1,e.#e[h+u[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,m.x5d),e.#r[s]=i-101,e.#e[h+u[0]]=56):(e.setChType(s,e.CH_DRUMS,m.x5d),e.#r[s]=$e[i-229]||0,e.#e[h+u[0]]=62))},()=>{e.#e[h+u[7]]=i},()=>{i<31&&(e.#e[h+u[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[h+u[93]]=I(i)},()=>{e.#e[h+u[91]]=I(i)},()=>{e.#s[s*b.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*b.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*b.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<16400){let p=f%164;switch(!0){case p<10:{c>31&&(r+=String.fromCharCode(c));break}case p==11:{d+=` +${i} ${s} ${h} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){if(f<13600){let p=f%136;switch(!0){case p<10:{c>31&&(r+=String.fromCharCode(c));break}case p==11:{d+=` +${i} ${s} ${h} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(d)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,h){if(i<192){let d=e.chRedir(Math.floor(i/12),a,!0),c=d*b.cc;switch(i%12){case 0:{r<128?(e.setChType(d,e.CH_MELODIC,m.x5d),e.#e[c+u[0]]=82,e.#r[d]=r):(e.setChType(d,e.CH_DRUMS,m.x5d),e.#e[c+u[0]]=62,e.#r[d]=$e[r-128]),r>0&&(e.#n[d]=1);break}case 1:{e.#e[c+u[7]]=r;break}case 2:{e.#s[d*b.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[d*b.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[c+u[10]]=Math.round((r-15)*4.2+64));break}case 5:{let f=r>>4,p=r&15;e.#e[c+u[91]]=I(p),e.#e[c+u[93]]=I(f);break}case 10:break;case 11:{let f=e.chRedir(r&15,a,!0),p=r>>4;e.#c[d]=r,(f!=d||p)&&(console.info(`X5D Part CH${d+1} receives from CH${f+1}.`),e.buildRchTree())}}}else{let d=e.chRedir(i-192,a,!0)}})}),this.#C.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#l=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((h,d)=>{let c=d+s;e.#U[c+(i-1)*16]=h,([!1,()=>{let f=e.#U[i-1<<4];if(f<3)if(e.#T[i]=1,f==2)for(let p=0;p{e.#s[i*b.rpn+3]=h+40},()=>{e.#s[i*b.rpn+1]=h+14},()=>{e.#s[i*b.rpn]=h},!1,()=>{e.#e[b.cc*i+u[91]]=h?127:0},!1,()=>{e.#e[b.cc*i+u[7]]=h},()=>{e.#e[b.cc*i+u[10]]=Math.ceil(h*9.05)}][c]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#T[i]=1),t.subarray(2).forEach((h,d)=>{let c=d+s;c<14&&(e.#S[(i-1)*b.cmt+c]=h)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,h)=>{let d=h+i;e.#U[d]=s;let c=e.chRedir(1+d>>4,a,!0),f=d&15;([!1,()=>{let p=e.#U[c-1<<4];if(p<3)if(e.#T[c]=1,p==2)for(let g=0;g{e.#s[c*b.rpn+3]=s+40},()=>{e.#s[c*b.rpn+1]=s+14},()=>{e.#s[c*b.rpn]=s},!1,()=>{e.#e[b.cc*c+u[91]]=s?127:0},!1,()=>{e.#e[b.cc*c+u[7]]=s},()=>{e.#e[b.cc*c+u[10]]=Math.ceil(s*9.05)}][f]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,h)=>{let d=h+i,c=e.chRedir(Math.floor(d/246+1),a,!0),f=d%246;f<14&&(e.#S[(c-1)*b.cmt+f]=s),f<10&&(e.#T[c]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,h)=>{let d=i+h,c=Math.floor(d/8),f=d&7,p=c*8;e.#q[d]=s,([!1,()=>{let g=e.#q[p];if(g<3){let y="";if(g==2){let $=b.cmt*c;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+(g<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:c}),e.userBank.load(`MSB LSB PRG NME +000 127 ${c} ${y}`,!0)}}][f]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,h)=>{let d=i+h;d>1)*b.cmt+d]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,h=function(d,c){e.#c[c-12]=d,s=!0};t.subarray(2).forEach((d,c)=>{let f=c+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,h,h,h,h,h,h,h,h,h,()=>{e.#m=d}][f]||(()=>{}))(d,c)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#R=r.padStart(20," "),e.#N=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#p.ano(r+i),i&&i<10&&(e.#r[r+i]=X[i-1]);console.info("MT-32 alt reset complete.")}),this.#I.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#l=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#l=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(h,d)=>{i[d]=h};if(t.subarray(1).forEach((h,d)=>{[s,s,s,s,()=>{e.#m=h*129/16383*100},()=>h-64,()=>h-64,()=>{},()=>{},()=>{}][r+d]()}),t[0]<4){let h=0;i.forEach(d=>{h=h<<4,h+=d}),h-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*b.cc,s=t[1],h=`NS5R CH${r+1} `;t.subarray(2).forEach((d,c)=>{let f=s+c;f<3?[()=>{e.#e[i+u[0]]=d||121},()=>{e.#e[i+u[32]]=d},()=>{e.#r[r]=d}][f]():f<8||(f<14?[()=>{let p=e.chRedir(d,a,!0);e.#c[r]=p,r!=p&&(e.buildRchTree(),console.info(`${h}receives from CH${p+1}`))},()=>{e.#v[r]=+!d},()=>{e.setChType(r,d,m.ns5r),console.debug(`${h}type: ${D[d]}`)},()=>{e.#s[b.rpn*r+3]=d},()=>{},()=>{}][f-8]():f<16||(f<33?[()=>{e.#e[i+u[7]]=d},()=>{e.#e[i+u[11]]=d},()=>{},()=>{},()=>{e.#e[i+u[10]]=d||128},()=>{},()=>{},()=>{e.#e[i+u[93]]=d},()=>{e.#e[i+u[91]]=d},()=>{e.#e[i+u[76]]=d},()=>{e.#e[i+u[77]]=d},()=>{e.#e[i+u[78]]=d},()=>{e.#e[i+u[74]]=d},()=>{e.#e[i+u[71]]=d},()=>{e.#e[i+u[73]]=d},()=>{e.#e[i+u[75]]=d},()=>{e.#e[i+u[72]]=d}][f-16]():f<112||f<114&&[()=>{e.#e[i+u[5]]=d},()=>{e.#e[i+u[65]]=d}][f-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#d=Date.now()+3200,e.#o=10,e.#h.fill(0);let s=t.subarray(1),h=4;s.forEach(function(d,c){let f=c+i,p=f>>4,g=f&15;if(f<80){let y=p>3,$=0,w=p0;)e.#h[g*32+p*7+(w-$)]=y&1,y=y>>1,$++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#l=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),h=s*b.cc;switch(i%92){case 0:{e.#e[h+u[0]]=r||121;break}case 1:{e.#e[h+u[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#n[s]=1);break}case 3:{let d=e.chRedir(r,a,!0);e.#c[s]=d,s!=d&&(console.info(`NS5R CH${s+1} receives from CH${d+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*b.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[h+u[7]]=r;break}case 11:{e.#e[h+u[11]]=r;break}case 14:{e.#e[h+u[10]]=r||128;break}case 19:{e.#e[h+u[93]]=r;break}case 20:{e.#e[h+u[91]]=r;break}case 84:{e.#e[h+u[65]]=r;break}case 85:{e.#e[h+u[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%158;switch(!0){case p<10:{c>31&&(r+=String.fromCharCode(c));break}case p==11:{i=c&127;break}case p==12:{h=c&127;break}case p==13:{d+=` +${i} ${s} ${h} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(d)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,h=0,d="MSB PRG LSB NME";S(t,function(c,f){let p=f%126;switch(!0){case p<10:{c>31&&(r+=String.fromCharCode(c));break}case p==11:break;case p==12:break;case p==13:{d+=` +${i} ${s} ${h} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(d)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let h=0;h<8;h++)a[i*8+h]=r>>7-h&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#I.run([66,...t],a,r)}),this.#V.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#l=!1,e.#E=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=b.cc*i,h=b.rpn*i,d=(t[3]<<4)+t[4],c=`K11 CH${i+1} `;([()=>{d<128?(e.setChType(i,e.CH_MELODIC,m.k11),e.#e[s+u[0]]=0,e.#r[i]=d):(e.setChType(i,e.CH_DRUMS,m.k11),e.#r[i]=d-128)},()=>{let f=e.chRedir(d,a,!0);e.#c[i]=f,i!=f&&(e.buildRchTree(),console.info(`${c}receives from CH${f+1}`))},()=>{e.#e[s+u[7]]=d},()=>{e.#n[i]=d},()=>{e.#e[s+u[10]]=d},()=>{e.#s[h+3]=d+40},()=>{e.#s[h+1]=d>>1,e.#s[h+2]=d&1},()=>{e.#e[s+u[91]]=d?127:0},()=>{},()=>{e.#e[s+u[74]]=d},()=>{e.#e[s+u[73]]=d},()=>{e.#e[s+u[72]]=d}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),h=s*b.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,m.k11),e.#e[h+u[0]]=0,e.#e[h+u[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,m.k11),e.#e[h+u[0]]=122,e.#e[h+u[32]]=0,e.#r[s]=i-160)},()=>{let d=e.chRedir(i,a,!0);e.#c[s]=d,s!=d&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${d+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),h=s*b.cc,d=s*b.rpn,c=`GMLX CH${s+1} `;[()=>{e.#n[s]=i},()=>{e.#e[h+u[7]]=i},()=>{e.#e[h+u[10]]=i},()=>{e.#e[h+u[91]]=i?127:0},()=>{e.#s[d+3]=i+40},()=>{e.#s[d+1]=i},()=>{e.#s[d]=i},()=>{}][t[0]]()}),this.#X.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#m=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${F[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let h=e.chRedir(i,a,!0);e.#c[s]=h,s!=h&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${h+1}`))}else t[1]==19&&(e.#e[b.cc*s+u[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#z.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#k.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#k.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((h,d)=>{([()=>{e.#m=h*12900/16383}][s+d]||(()=>{console.info(`Unrecognized ${i}ID: ${s+d}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(h,d,c)=>{console.debug(`${i}multi edit buffer: ${h[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(h,d,c)=>{console.debug(`${i}multi edit buffer: ${h[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=b.cc*i,h=t[1],d=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(d,t),!(t[0]>15)&&t.subarray(2).forEach((c,f)=>{([()=>{e.#e[s+u[0]]=c},()=>{c&&(e.#n[i]=1),e.#e[s+u[32]]=c,e.#a[i]=this.setChType(i,[32,40].indexOf(c)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{c&&(e.#n[i]=1),e.#r[i]=c},()=>{let p=e.chRedir(c,a,!0);e.#c[i]=p,i!=p&&(e.buildRchTree(),console.info(`${d}receives from CH${p+1}`))},()=>{e.#v[i]=c?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+u[7]]=c},()=>{e.#e[s+u[10]]=c},!1,!1,!1,()=>{e.#e[s+u[91]]=c},()=>{e.#e[s+u[93]]=c},()=>{e.#e[s+u[94]]=c},()=>{e.#e[s+u[128]]=c},()=>{},()=>{e.#e[s+u[74]]=c},()=>{e.#e[s+u[71]]=c},!1,()=>{e.#e[s+u[65]]=c},()=>{e.#e[s+u[5]]=c},()=>{}][h+f]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,h)=>{let c=`S90/Motif ES EQ${(h>>2)+1} `;([()=>{let f=s-64},()=>{let f=M[s]},()=>{let f=s/10},()=>{let f=s}][i+h&3]||(()=>{}))()})}),this.#C.add([0,72,18,0,0,0,0],(t,a,r)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}};var j=Ie(we(),1);var Ee=class{#t=!1;constructor(e,n,o,l){this.#t=e,this.start=n,this.end=o,this.data=l}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return this.#t}},Q=class extends Ee{constructor(e,n,o){super(!0,e,n,o)}},ke=class extends Ee{constructor(e,n){super(!1,e,e,n)}},W=class extends Array{#t=-1;constructor(){super(...arguments)}resetIndex(e){this.#t=-1}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let o=[];if(n)for(let l=0;le);l++){if(this[l].endt.#t&&(o.push(a),t.#t=a.index)})}return o}getRange(e,n){e>n&&([e,n]=[n,e]);let o=[],l=-1,t=Math.ceil(Math.sqrt(this.length)),a=!0;for(let r=0;r=e&&(l=r):l=l<0?r:l;for(;a;)this[l]?.end=e&&o.push(this[l]):a=!1,l++;return o}};var Fe=0xffffffffffff,ve=function(e){let n=new W,o=this,l=e.timeDivision,t=120,a=new W,r=0,i=0;a.push(new Q(0,Fe,[120,0])),e.track.forEach(function(c){r=0,c.event.forEach(function(f){r+=f.deltaTime,f.type==255&&f?.metaType==81&&(t=6e7/f.data,a[a.length-1]&&a.push(new Q(r,0xffffffffffff,[t,0])))})}),a.fresh(),a.forEach(function(c,f,p){f>0&&(p[f-1].end=c.start)});let s=120;a.forEach(function(c,f,p){f>0&&(c.end==c.start?p.splice(p.indexOf(c),1):s==c.data[0]&&(p[f-1].end=c.end,p.splice(p.indexOf(c),1)),s=c.data[0])});let h=0,d=120;return a.forEach(function(c){let f=c.start,p=f/d/l*60+h;d=c.data[0],h=p-f/d/l*60,c.data[1]=h}),console.debug("All tempo changes: ",a),t=120,r=0,i=0,e.track.forEach(function(c,f){r=0,i=0;let p=f+1;c.event.forEach(function(g,y){r+=g.deltaTime;let $=a.step(r,!0)[0];$&&(t=$.data[0],i=$.data[1]);let w={type:g.type,data:g.data,track:p,part:0};g.type>14?w.meta=g.metaType:w.part=g.channel,n.push(new ke(r/t/l*60+i,w))})}),n.fresh(),self.midiEvents=n,console.debug(`Parsed a type ${e.formatType} MIDI sequence.`),n};j.default.customInterpreter=de;var Se=class extends U{device;#t;#o="";#d=[];#b=new Uint8ClampedArray(128);#h=new Uint8ClampedArray(128);#n=.5;#c=120;#a=4;#e=4;#g=0;#r=0;smoothingAtk=0;smoothingDcy=0;reset(){this.dispatchEvent("reset"),this.#t?.resetIndex(),this.device.init(),this.#o="",this.#n=.5,this.#c=120,this.#a=4,this.#e=4,this.#g=0,this.#r=0}async loadFile(e){this.#t=ve(j.default.parse(new Uint8Array(await e.arrayBuffer())))}switchMode(e,n=!1){this.device.switchMode(e,n)}getMode(){return this.device.getMode()}getVoice(){return this.device.getVoice(...arguments)}getChVoice(e){return this.device.getChVoice(e)}get noteProgress(){return this.#r/this.#n}get noteOverall(){return this.noteProgress-this.#g}get noteBar(){return Math.floor(this.noteOverall/this.#a)}get noteBeat(){let e=this.noteOverall%this.#a;return e<0&&(e+=this.#a),e}getTimeSig(){return[this.#a,this.#e]}getTempo(){return this.#c}sendCmd(e){this.device.runJson(e)}render(e){e>this.#r&&(this.#r=e);let n=this.#t?.step(e)||[],o=0,l=new Set,t=this,a=[];this.device.getStrength().forEach((y,$)=>{this.#h[$]=y}),t.device.newStrength(),n.forEach(function(y){let $=y.data;$.type==9&&($.data[1]>0?l.add($.part*128+$.data[0]):l.has($.part*128+$.data[0])&&o++),y.data.type==8&&l.has($.part*128+$.data[0])&&o++;let w=t.device.runJson($);switch(w?.reply){case"meta":{a.push(w);break}}w?.reply&&delete w.reply}),a?.length>0&&this.dispatchEvent("meta",a);let r=this.device.getActive(),i=[],s=t.device.getPitch(),h=t.device.getCcAll(),d=t.device.getProgram(),c=t.device.getChType(),f=this.device.getStrength();f.forEach(function(y,$,w){w[$]=Math.max(t.#h[$],y);let T=w[$]-t.#b[$],Y=u.length*$;if(T>=0){let H=4*.25**(h[Y+u[73]]/64);t.#b[$]+=Math.ceil(T-T*t.smoothingAtk**H)}else{let H=4*.25**(h[Y+u[72]]/64);t.#b[$]+=Math.floor(T-T*t.smoothingDcy**H)}});let p=0;return r.forEach(function(y,$){y&&(i[$]=t.device.getVel($),p+=i[$].size)}),{extraPoly:o,curPoly:p,chInUse:r,chKeyPr:i,chPitch:s,chProgr:d,chContr:h,chType:c,eventCount:n.length,title:this.#o,bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:this.#b.slice(),velo:f,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}constructor(e,n=.5,o=.5){super();let l=this;this.smoothingAtk=n,this.smoothingDcy=o,this.device=e,this.addEventListener("meta",function(t){t?.data?.forEach(function(a){(l.#d[a.meta]||console.debug).call(l,a.meta,a.data)})}),this.device.addEventListener("mode",function(t){l.dispatchEvent("mode",t.data)}),this.device.addEventListener("channelactive",function(t){l.dispatchEvent("channelactive",t.data)}),this.device.addEventListener("channelmin",function(t){l.dispatchEvent("channelmin",t.data)}),this.device.addEventListener("channelmax",function(t){l.dispatchEvent("channelmax",t.data)}),this.device.addEventListener("channelreset",function(t){l.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(t){l.dispatchEvent("screen",t.data)}),this.#d[3]=function(t,a){l.#o?.length<1&&(l.#o=a)},this.#d[81]=function(t,a){let r=l.noteProgress,i=l.#n||.5;l.#c=6e7/a,l.#n=a/1e6,l.#g+=r*(i/l.#n)-r},this.#d[88]=function(t,a){let r=l.noteProgress,i=l.noteOverall,s=l.noteBar,h=l.noteBeat,d=l.#a,c=l.#e;l.#a=a[0],l.#e=1<=d&&(dN?(n=Math.round(self.innerHeight/1080*1e4)/1e4,o=Math.ceil(self.innerHeight*N)):e0){let f=this.pool.length,t=1<=1&&r>=0;){if(r<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{r=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,r--}let i=!0;if(a>=this.pool.length)i=!1;else{let s=this;this.pool[a].forEach(function(o,l,h){i&&o!=n[l]&&(i=!1)}),!i&&X(n,this.pool[a])>0&&a++}return i||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...c):this.pool[f].data(n.slice(this.pool[f].length),...c):this.default(n,...c)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),f=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var le=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},H=class{#t;strictMode=!1;get(e=0,n=0,c=0,f){let t=[e,n,c],a,r=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{c==126?r[2]=125:c==127&&(r[2]=0);break}case 32:{r[2]+=4;break}case 33:case 35:case 36:{r[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:r[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{c==126&&(r[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(r[2]=0);break}}break}case"gs":{e==0&&c<5?r[2]=0:e>125&&c<5&&c!=2&&(r[2]=e,r[0]=0);break}case"sg":{e==8&&c==0&&(r[2]=5);break}case"s90es":{c<8?r[2]+=17:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}case"motif":{c<8?r[2]+=28:c<32?r[2]+=13:r[2]=(r[2]>>3)+19;break}}let i=" ",s="M",o=0,l=0;switch(r[0]){case 0:{r[2]==127?s="MT-a":r[2]==126?s="MT-b":r[2]==7?s="GM-k":r[2]==5?s="SG-a":r[2]==4?s="SP-l":r[2]==0||f=="gs"&&r[2]<5?s="GM-a":(s="y",o=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(r[2]>>3).toString().padStart(2,"0")}`,o=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(r[2]<17){let $=r[2];s=$<10?"kP:":"kC:",s+=$%10}else r[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][r[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[r[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[r[0]-88]}`;break}case 95:{s=`${["DR","PC"][r[2]]}-d`;break}case 96:{s=r[2]==106?"AP-a":"PF",r[2]>63&&(l=63),o=3;break}case 97:{s="VL:",o=3,l=112;break}case 98:{s="SG-a";break}case 99:{s="DX",r[2]>63&&(l=63),o=3;break}case 100:{s="AN",r[2]>63&&(l=63),o=3;break}case 121:{s=`GM-${r[2]?"":"a"}`,o=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{r[2]==127?s="rDrm":s="yDrm";break}default:r[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,c,r[0],r[2]][o]-l}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,i=" ");let h=[r[0],r[1],r[2]];for(;!(a?.length>=0);)a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a||(this.strictMode?(a="",i="?"):this.#t[r[1]||0][r[0]<<7]?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):(r[2]--,i="^"):e==48?(r[0]=0,r[2]=0,i="!"):e==62?(r[1]--,i=" ",r[1]<1&&!a?.length&&(r[0]=0,i="!")):e<63?r[0]==0?(r[2]=0,i="^"):r[2]<1?(r[0]=0,i="*"):r[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,i="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,i="!"):e==121?(a=`GM2Vox0${c}`,i="#"):e==122?(r[1]==32?r[1]==0:r[1]%=7,a=this.#t[r[1]||0][(r[0]<<7)+r[2]],a?i=" ":(a="",i="*")):r[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,i="!"):r[0]==0?(r[2]=0,i="^"):r[2]>0?r[2]--:r[1]>0?(r[1]=0,i="!"):(r[0]=0,i="?"));let b=[r[0],r[1],r[2]];(f=="gs"||f=="ns5r")&&i=="^"&&(i=" "),e==127&&i=="^"&&(i=" "),i!=" "&&self.debugMode&&(a="");let p="??";switch(r[0]){case 0:{r[2]==0?p="GM":r[2]==5||r[2]==7?p="KG":r[2]<126?p="XG":r[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{r[2]<17?p="KR":r[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p="DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][r[2]];break}case 96:{p=r[2]==106?"AP":"PF";break}case 97:{p="VL";break}case 98:{p="SG";break}case 100:{p="AN";break}case 120:{p="GS";break}case 121:{p=r[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=r[2]==127?"MT":n==0?"GM":"XG";break}default:r[0]<48&&(r[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(c||0)}`,iid:h,eid:b,sid:t,ending:i,sect:s,standard:p}}async load(e,n,c){let f=this,t=[],a=0,r=0;e.split(` -`).forEach(function(i,s){let o=i.split(" "),l=[];s==0?o.forEach(function(h,b){t[le.indexOf(h)]=b}):o.forEach(async function(h,b){b>2?(f.#t[l[t[1]]]=f.#t[l[t[1]]]||[],(!f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]?.length||n)&&(f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]=o[3],a++),r++):l.push(parseInt(o[b]))})}),n||console.debug(`Map "${c||"(internal)"}": ${r} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],c=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=c[0];t<=c[1];t++){let a=t<<7;for(let r=f[0];r<=f[1];r++){let i=a+r;for(let s=n[0];s<=n[1];s++)delete this.#t[s][i]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(c,f){try{await fetch(`./data/bank/${c}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,c)})}catch{console.error(`Failed loading "${c}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let c=!0;return n.forEach((f,t)=>{c=c&&e[t]==f}),c},V=function(e){let n=0;return e.forEach(c=>{n*=256,n+=c}),n},v=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),c="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,r=0,i=!0,s=[],o=0;for(;i;){let l=n.subarray(a);([()=>{v.decode(l.subarray(0,4))=="YSFC"?(a+=80,r=1):a++},()=>{if(he(l.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),r=2;else{let h=v.decode(l.subarray(0,4)),b=V(l.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[o],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(r=3,i=!1)}][r]||(()=>{i=!1}))()}return c});var R=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,c=-.3;return e>66?(n=5,c=315):e>56?(n=1,c=47):e>46&&(n=.5,c=18.5),n*e-c},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, +var X=function(e,n){let c=Math.min(e.length,n.length),f=e.slice(0,c),t=n.slice(0,c),a=0,i=0;for(;i0){let f=this.pool.length,t=1<=1&&i>=0;){if(i<=0)throw new Error("TTL reached.");if(a==f)a-=t;else{let s=X(n,this.pool[a]);switch(s){case 0:{i=0;break}case 1:{a+t<=f&&(a+=t);break}case-1:{a!=0&&(a-=t);break}default:console.warn(`Unexpected result ${s}.`)}}t=t>>1,i--}let r=!0;if(a>=this.pool.length)r=!1;else{let s=this;this.pool[a].forEach(function(o,l,h){r&&o!=n[l]&&(r=!1)}),!r&&X(n,this.pool[a])>0&&a++}return r||c?a:-1}else return c?0:-1},this.add=function(n,c){return n.data=c,this.pool.splice(this.point(n,!0),0,n),this},this.default=function(n){console.warn(`No match in "${this.name||"(unknown)"}" for "${n}". Default action not defined.`)},this.get=function(n){let c=this.point(n);if(c>-1)return this.pool[c].data;this.default(n)},this.run=function(n,...c){let f=this.point(n);f>-1?n.subarray?this.pool[f].data(n.subarray(this.pool[f].length),...c):this.pool[f].data(n.slice(this.pool[f].length),...c):this.default(n,...c)}};var F=class{#t={};addEventListener(e,n){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(n)}removeEventListener(e,n){if(this.#t[e]){let c=this.#t[e].indexOf(n);c>-1&&this.#t[e].splice(c,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,n){let c=new Event(e),f=this;c.data=n,this.#t[e]?.length>0&&this.#t[e].forEach(function(t){try{t?.call(f,c)}catch(a){console.error(a)}}),this[`on${e}`]&&this[`on${e}`](c)}};var le=["MSB","PRG","LSB"],N=function(e){let n=Math.floor(e/10),c=e%10;return`${n.toString(16)}${c}`},H=class{#t;strictMode=!1;get(e=0,n=0,c=0,f){let t=[e,n,c],a,i=Array.from(arguments);switch(f){case"xg":{switch(e){case 0:{c==126?i[2]=125:c==127&&(i[2]=0);break}case 32:{i[2]+=4;break}case 33:case 35:case 36:{i[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:i[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{c==126&&(i[2]=0);break}case 48:case 64:case 126:case 127:{c==126&&(i[2]=0);break}}break}case"gs":{e==0&&c<5?i[2]=0:e>125&&c<5&&c!=2&&(i[2]=e,i[0]=0);break}case"sd":{e==96?i[0]=121:e>96&&e<100?i[2]|=16:e==104&&(i[0]=120);break}case"sg":{e==8&&c==0&&(i[2]=5);break}case"s90es":{c<8?i[2]+=17:c<32?i[2]+=13:i[2]=(i[2]>>3)+19;break}case"motif":{c<8?i[2]+=28:c<32?i[2]+=13:i[2]=(i[2]>>3)+19;break}}let r=" ",s="M",o=0,l=0;switch(i[0]){case 0:{i[2]==127?s="MT-a":i[2]==126?s="MT-b":i[2]==7?s="GM-k":i[2]==5?s="SG-a":i[2]==4?s="SP-l":i[2]==0||f=="gs"&&i[2]<5?s="GM-a":(s="y",o=3);break}case 8:{f=="sg"?s="GM-s":s="r:";break}case 48:{s=`yM${(i[2]>>3).toString().padStart(2,"0")}`,o=1;break}case 56:{s="GM-b";break}case 61:case 120:{s="rDrm";break}case 62:{s="kDrm";break}case 63:{if(i[2]<17){let $=i[2];s=$<10?"kP:":"kC:",s+=$%10}else i[2]<34?s=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][i[2]-17]:s="Ds";break}case 64:{s="ySFX";break}case 67:{s="DX:S";break}case 80:case 81:case 82:case 83:{s=`Prg${"UABC"[i[0]-80]}`;break}case 88:case 89:case 90:case 91:{s=`Cmb${"UABC"[i[0]-88]}`;break}case 95:{s=`${["DR","PC"][i[2]]}-d`;break}case 96:{s=i[2]==106?"AP-a":"PF",i[2]>63&&(l=63),o=3;break}case 97:{s="VL:",o=3,l=112;break}case 98:{s="SG-a";break}case 99:{s="DX",i[2]>63&&(l=63),o=3;break}case 100:{s="AN",i[2]>63&&(l=63),o=3;break}case 121:{s=`GM-${i[2]?"":"a"}`,o=3;break}case 122:{s="lDrm";break}case 126:{s="yDrS";break}case 127:{i[2]==127?s="rDrm":s="yDrm";break}default:i[0]<48?s="r:":s="M"}s.length<4&&(s+=`${[e,c,i[0],i[2]][o]-l}`.padStart(4-s.length,"0")),f=="xg"&&e==16&&(a=`Voice${(c*128+n+1).toString().padStart(3,"0")}`,r=" ");let h=[i[0],i[1],i[2]];for(;!(a?.length>=0);)a=this.#t[i[1]||0][(i[0]<<7)+i[2]],a||(this.strictMode?(a="",r="?"):this.#t[i[1]||0][i[0]<<7]?i[0]==0?(i[2]=0,r="^"):i[2]<1?(i[0]=0,r="*"):(i[2]--,r="^"):e==48?(i[0]=0,i[2]=0,r="!"):e==62?(i[1]--,r=" ",i[1]<1&&!a?.length&&(i[0]=0,r="!")):e<63?i[0]==0?(i[2]=0,r="^"):i[2]<1?(i[0]=0,r="*"):i[2]--:e==80?(a=`PrgU:${n.toString().padStart(3,"0")}`,r="!"):e==88?(a=`CmbU:${n.toString().padStart(3,"0")}`,r="!"):e==121?(a=`GM2Vox0${c}`,r="#"):e==122?(i[1]==32?i[1]==0:i[1]%=7,a=this.#t[i[1]||0][(i[0]<<7)+i[2]],a?r=" ":(a="",r="*")):i[1]==0?(a=`${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")} ${c.toString().padStart(3,"0")}`,r="!"):i[0]==0?(i[2]=0,r="^"):i[2]>0?i[2]--:i[1]>0?(i[1]=0,r="!"):(i[0]=0,r="?"));let b=[i[0],i[1],i[2]];(f=="gs"||f=="ns5r")&&r=="^"&&(r=" "),e==127&&r=="^"&&(r=" "),r!=" "&&self.debugMode&&(a="");let p="??";switch(i[0]){case 0:{i[2]==0?p="GM":i[2]==5||i[2]==7?p="KG":i[2]<126?p="XG":i[2]==127&&(p="MT");break}case 48:{p="MU";break}case 56:{p="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{p="AI";break}case 62:case 82:case 90:{p="XD";break}case 63:{i[2]<17?p="KR":i[2]<34?p="ES":p="DS";break}case 64:case 126:{p="XG";break}case 67:case 99:{p=i[2]>>4==1?"SD":"DX";break}case 81:{p="RW";break}case 95:{p=["DR","PC"][i[2]];break}case 96:{p=i[2]==106?"AP":"PF";break}case 97:{p=i[2]>>4==1?"SD":"VL";break}case 98:{p=i[2]>>4==1?"SD":"SG";break}case 100:{p="AN";break}case 104:case 105:case 106:case 107:{p="SD";break}case 120:{p="GS";break}case 121:{p=i[2]?"G2":"GM";break}case 122:{p="KG";break}case 127:{p=i[2]==127?"MT":n==0?"GM":"XG";break}default:i[0]<48&&(i[0]==16&&f=="xg"?p="XG":p="GS")}return{name:a||`${N(e||0)} ${N(n||0)} ${N(c||0)}`,iid:h,eid:b,sid:t,ending:r,sect:s,standard:p}}async load(e,n,c){let f=this,t=[],a=0,i=0;e.split(` +`).forEach(function(r,s){let o=r.split(" "),l=[];s==0?o.forEach(function(h,b){t[le.indexOf(h)]=b}):o.forEach(async function(h,b){b>2?(f.#t[l[t[1]]]=f.#t[l[t[1]]]||[],(!f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]?.length||n)&&(f.#t[l[t[1]]][(l[t[0]]<<7)+l[t[2]]]=o[3],a++),i++):l.push(parseInt(o[b]))})}),n||console.debug(`Map "${c||"(internal)"}": ${i} total, ${a} loaded.`)}clearRange(e){let n=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],c=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],f=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let t=c[0];t<=c[1];t++){let a=t<<7;for(let i=f[0];i<=f[1];i++){let r=a+i;for(let s=n[0];s<=n[1];s++)delete this.#t[s][r]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let n=this;e.forEach(async function(c,f){try{await fetch(`./data/bank/${c}.tsv`).then(function(t){return t.text()}).then(t=>{n.load(t,!1,c)})}catch{console.error(`Failed loading "${c}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var K=class{#t={};context;set(e,n){this.#t[e]=n}has(e){return!!this.#t[e]}async read(e,n){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,n)}};var he=function(e,n){let c=!0;return n.forEach((f,t)=>{c=c&&e[t]==f}),c},V=function(e){let n=0;return e.forEach(c=>{n*=256,n+=c}),n},R=new TextDecoder,P=new K;P.set("s7e",async function(e){let n=new Uint8Array(await e.slice(0,65536).arrayBuffer()),c="MSB LSB PRG NME",f=[0,0,0,0],t=32,a=0,i=0,r=!0,s=[],o=0;for(;r;){let l=n.subarray(a);([()=>{R.decode(l.subarray(0,4))=="YSFC"?(a+=80,i=1):a++},()=>{if(he(l.subarray(0,4),f))s.forEach((h,b,p)=>{let $=V(n.subarray(h.start+4,h.start+8));h.length=$}),i=2;else{let h=R.decode(l.subarray(0,4)),b=V(l.subarray(4,8));s.push({type:h,start:b}),a+=8}},()=>{let h=s[o],b=n.subarray(h.start,h.start+h.length),p=32;switch(h.type){case"ENVC":{let $=t;for(;$=s.length&&(i=3,r=!1)}][i]||(()=>{r=!1}))()}return c});var v=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),O=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],fe=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],T=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],z=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],q=function(e){let n=.1,c=-.3;return e>66?(n=5,c=315):e>56?(n=1,c=47):e>46&&(n=.5,c=18.5),n*e-c},Q=function(e){return e>105?fe[e-106]:e>100?e*1.1-100:e/10},Y=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),G={};`hi*, ka,か ki,き ku,く @@ -139,8 +139,8 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,c){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},S=function(e,n){let c=0,f=0;for(let t=0;t>a&1)<<7,i=e[t];i+=r,t%8!=0?(n(i,c,e),c++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],x=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],c=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(c,t)):f==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ce=function(e,n="",c="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${c}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#C=0;#v=new Array(11);get#$(){return this.#v[this.#p]}set#$(e){this.#v[this.#p]=e}#c=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#i=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#R=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#l=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#x=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#M=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#T="";#G=0;#W=0;#m=!0;#n=!1;#Z;#te=new Uint8Array(2);#a=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(c==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let c=e*128+n,f=this.#l.lastIndexOf(c);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#l[f]=0,this.#o[c]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#l[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,c)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[c]=f;let t=this.#l[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#l.forEach((n,c,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,c=e.data[0];this.#h.nOff(n,c)},9:function(e){let n=e.channel;this.#c[n]=1;let c=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,c,f):this.#h.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#l.indexOf(c)>-1&&(this.#o[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#c[n]=1);break}e.data[1]&&(this.#c[n]=1);break}default:{this.#c[n]=1;break}}})();let c=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==g.gs?e.data[1]<56&&this.#i[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==g.gm?e.data[1]<48?this.#i[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==g.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#i[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#i[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#i[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[c+d[99]],t=this.#e[c+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[c+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let r=re.indexOf(t);r>-1?this.#z[n*10+r]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let r=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${r}is not necessary. Consider removing it.`):console.warn(`${r}is not supported.`)}else{let r=this.#i[n]-2;r<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#i[n]]}.`):this.#J[(r*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#i[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[c+d[100]]];this.#e[c+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&I[this.#e[c+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#c[n]=1);break}default:this.#c[n]=1}this.#r[n]=e.data,this.#M[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#l.forEach(function(f){let t=f>>7;c==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:c,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let c=n[0],f=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(c,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#F.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#S.run(n,c,e),console.warn("Unknown device SysEx!");else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#S.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,c)=>{this.#U.run(n,c,e)},67:(e,n,c)=>{this.#w.run(n,c,e)},68:(e,n,c)=>{this.#V.run(n,c,e)},71:(e,n,c)=>{this.#K.run(n,c,e)},126:(e,n,c)=>{this.#I.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#X.run(n,c,e)}};#I;#X;#w;#S;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#c.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,c=this.#e.subarray(n,n+u.cc);return c[d[0]]=c[d[0]]||this.#H,c[d[32]]=c[d[32]]||this.#y,c}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=x[c])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#a.slice()}getVel(e){let n=new Map,c=this;return c.#l.forEach(function(f,t){let a=Math.floor(f/128),r=f%128;e==a&&c.#o[f]>0&&n.set(r,{v:c.#o[f],s:c.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#C}}getLetter(){return{text:this.#T,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#l.forEach(function(n){let c=Math.floor(n/128);e.#o[n]>e.#x[c]&&(e.#x[c]=e.#o[n])}),this.#x}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,f){e[f]=Math.floor(c*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,c,f){let t=e||this.#H,a=n,r=c||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(r=3);let i=this.userBank.get(t,a,r,f);if(C[this.#t]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),o=s*u.cmt,l="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(l+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(t,a,r,f)),i}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#M[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,f=3200){let t=this,a;t.#T=" ".repeat(c),e.forEach(r=>{t.#T+=String.fromCharCode(r>31?r:32),r<32&&(a=a||new Set,a.add(r))}),t.#G=Date.now()+3200,t.#T=t.#T.padEnd(32," "),a&&(a=Array.from(a),a.forEach((r,i,s)=>{s[i]=r.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#R}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let c=this.#R[n];if(c){if(U.indexOf(c)>=0)return this.#e[e*u.cc+d[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#c.fill(0),this.#e.fill(0),this.#R.fill(0),this.#r.fill(0),this.#o.fill(0),this.#l.fill(0),this.#x.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#a=[],this.#Q=500,this.#Y=0,this.#G=0,this.#T="",this.#C=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#m=!0,this.#f.forEach(function(n,c,f){f[c]=c}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=x[0],this.#e[u.cc*25]=x[0],this.#e[u.cc*41]=x[0],this.#e[u.cc*57]=x[0],this.#i.fill(this.CH_MELODIC),this.#i[9]=this.CH_DRUM1,this.#i[25]=this.CH_DRUM3,this.#i[41]=this.CH_DRUMS,this.#i[57]=this.CH_DRUMS,this.#i[73]=this.CH_DRUM5,this.#i[89]=this.CH_DRUM7,this.#i[105]=this.CH_DRUMS,this.#i[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#M.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=c,this.#p=0,this.#H=se[0][c],this.#y=se[1][c];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==x[f]&&(this.#e[a*u.cc]=x[c]);switch(this.initOnReset,c){case g.mt32:{_.forEach((a,r)=>{let i=r+1;this.#c[i]||(this.#r[i]=a,this.#e[i*u.cc+d[91]]=127)});break}}let t;switch(c){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(f=>{e.channel=f,c=!0,this.#j[e.type].call(this,e)}),c||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#a.length>100&&this.#a.splice(100,this.#a.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#v[10]=new Uint8Array(512),this.#_=new m,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let n=e.split(",");G[n[0]]=n[1]});var W=function(e){let n=e;e[0]=="*"&&(n=n.slice(1)),["aa","ii","uu","ee","oo"].forEach(f=>{for(;n.indexOf(f)>-1;)n=n.replace(f,f[0])});for(let f in G)n=n.replaceAll(f,G[f]);n.indexOf("ん")==0&&n.length>1&&(n=n.slice(1));let c=n.indexOf("!");return c>-1&&n.length>1&&(n=n.slice(c+1)),n},J=function(e){return e?e<96?`cc${e}`:["aftertouch","velocity","pitch bend"][e-96]:"off"};var L=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Z=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],j=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var de={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},ue={66307:["drive"],66309:["vowel",e=>"aiueo"[e]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",e=>["off","LPF","HPF"][e]],94984:["noise type",e=>["white","pink"][e]],94987:["disc type",e=>["LP","SP","EP","RND"]],94990:["hum type",e=>`${e+5}0Hz`],94993:["M/S",e=>["mono","stereo"][e]]},B=function(e){return de[(e[0]-32<<8)+e[1]]||`0x${e[0].toString(16).padStart(2,"0")}${e[1].toString(16).padStart(2,"0")}`},ee=function(e,n,c){let f=(e[0]-32<<16)+(e[1]<<8)+n,t=ue[f]||{},a=t[0];if(a?.length)return a+=`: ${(t[1]||function(){})(c)||c}`,a},_=[68,48,95,78,41,3,110,122,0];var E=function(e=64){return Math.round(2e3*Math.log10(e/64))/100};var te=function(e){let n=0;return e.forEach(c=>{n+=c,n=n&127}),~n+1&127},m=function(e,n){let c=0,f=0;for(let t=0;t>a&1)<<7,r=e[t];r+=i,t%8!=0?(n(r,c,e),c++):f=e[t]}},D=function(e){let n=Math.floor(e*14.2);return n<128?n:0};var C=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],se=[[0,0,0,0,121,0,0,82,81,96,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],M=[120,127,120,127,120,127,61,62,62,104,120,122,122,127],be=[0,3,81,84,88],ae={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},I={0:0,1:1,2:3,5:4},ie=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],re=[36,37],A=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],U=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],pe=[12,13,16,17,18,19],$e=[33,99,100,32,102,8,9,10],ne=[0,16,25,40,32,64,26,48],g={};C.forEach((e,n)=>{g[e]=n});var d={length:U.length};U.forEach((e,n)=>{d[e]=n});var oe={length:A.length};A.forEach((e,n)=>{oe[e]=n});var k=function(){return!!self.Bun||self.debugMode||!1},ge=function(e){let n=[],c=0;return e?.forEach(function(f,t){f==247?n.push(e.subarray(c,t)):f==240&&(c=t+1)}),n.length||n.push(e.subarray(0)),k()&&console.debug(n),n},ce=function(e,n="",c="",f=2){return e?`${n}${e.toString().padStart(f,"0")}${c}`:""},u={ch:128,cc:U.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:A.length,dnc:128,efx:7},Ie=class extends F{NOTE_IDLE=0;NOTE_ATTACK=1;NOTE_DECAY=2;NOTE_SUSTAIN=3;NOTE_HELD=4;NOTE_RELEASE=5;NOTE_SOSTENUTO_ATTACK=8;NOTE_SOSTENUTO_DECAY=9;NOTE_SOSTENUTO_SUSTAIN=10;NOTE_SOSTENUTO_HELD=11;CH_MELODIC=0;CH_DRUMS=1;CH_DRUM1=2;CH_DRUM2=3;CH_DRUM3=4;CH_DRUM4=5;CH_DRUM5=6;CH_DRUM6=7;CH_DRUM7=8;CH_DRUM8=9;#t=0;#p=0;#C=0;#R=new Array(11);get#$(){return this.#R[this.#p]}set#$(e){this.#R[this.#p]=e}#c=new Uint8Array(u.ch);#f=new Uint8Array(u.ch);#a=new Uint8Array(u.ch);#e=new Uint8Array(u.ch*u.cc);#v=new Uint8Array(u.ace);#r=new Uint8Array(u.ch);#o=new Uint8Array(u.ch*u.nn);#E=new Uint8Array(u.ch);#l=new Uint16Array(u.pl);#d=new Uint8Array(u.pl);#P=new Int16Array(u.ch);#M=new Uint8Array(u.ch);#B=0;#s=new Uint8Array(u.ch*u.rpn);#z=new Int8Array(u.ch*re.length);#J=new Uint8Array(u.drm*u.dpn*u.dnc);#x=new Uint8Array(u.ch);#A=new Uint8Array(128);#k=new Uint8Array(u.cmt*8);#q=new Uint8Array(1024);#N=new Uint8Array(u.cmt*64);#g=new Uint8Array(u.efx*3);#H=0;#y=0;#b=100;#O=0;#Q=500;#Y=0;#T="";#G=0;#W=0;#S=!0;#n=!1;#Z;#te=new Uint8Array(2);#i=[];#D=new Uint8Array(u.ch);#L=new Uint8Array(u.tr);baseBank=new H("gm","gm2","xg","gs","ns5r","sd","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es");userBank=new H("gm");initOnReset=!1;aiEfxName="";chRedir(e,n,c){if(this.#L[n])return(this.#L[n]-1)*16+e;if([2,3].indexOf(this.#y)>-1){if(c==1)return e;let f=0,t=!0;for(;t;)this.#D[e+f]==0?(this.#D[e+f]=n,console.debug(`Assign track ${n} to channel ${e+f+1}.`),t=!1):this.#D[e+f]==n?t=!1:(f+=16,f>=128&&(f=0,t=!1));return e+f}else return e}#u=[];#_;#h={nOff:(e,n)=>{let c=e*128+n,f=this.#l.lastIndexOf(c);f>-1&&(this.#e[u.cc*e+d[64]]>63?(this.#d[f]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_HELD})):this.#e[u.cc*e+d[66]]>63&&this.#d[f]==this.NOTE_SOSTENUTO_SUSTAIN?(this.#d[f]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:this.#o[c],state:this.NOTE_SOSTENUTO_HELD})):(this.#l[f]=0,this.#o[c]=0,this.#d[f]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,c)=>{let f=e*128+n,t=0;for(this.#E[e]&&this.#h.ano(e);this.#d[t]>0&&this.#l[t]!=f;)t++;t{},cAt:(e,n)=>{},hoOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{this.#d.forEach((n,c)=>{let f;switch(n){case this.NOTE_ATTACK:{f=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{f=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{f=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(f){this.#d[c]=f;let t=this.#l[c];this.dispatchEvent("note",{part:e,note:t&127,velo:this.#o[t],state:f})}})},soOf:e=>{this.#d.forEach((n,c)=>{if(n==this.NOTE_SOSTENUTO_HELD){let f=this.#l[c],t=f>>7;e==t&&(this.#d[c]=this.NOTE_IDLE,this.#l[c]=0,this.#o[f]=0,this.dispatchEvent("note",{part:e,note:f&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{this.#l.forEach((n,c,f)=>{let t=n>>7,a=n&127;n==0&&this.#o[0]==0||t==e&&this.#h.nOff(t,a)})}};#j={8:function(e){let n=e.channel,c=e.data[0];this.#h.nOff(n,c)},9:function(e){let n=e.channel;this.#c[n]=1;let c=e.data[0],f=e.data[1];f>0?this.#h.nOn(n,c,f):this.#h.nOff(n,c)},10:function(e){let n=e.channel,c=n*128+e.data[0];this.#l.indexOf(c)>-1&&(this.#o[c]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(this.#t){case g.s90es:case g.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(this.#c[n]=1);break}e.data[1]&&(this.#c[n]=1);break}default:{this.#c[n]=1;break}}})();let c=n*u.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#h.ano(n),this.#P[n]=0;let f=n*u.cc;this.#e[f+d[1]]=0,this.#e[f+d[5]]=0,this.#e[f+d[64]]=0,this.#e[f+d[65]]=0,this.#e[f+d[66]]=0,this.#e[f+d[67]]=0,this.#e[f+d[11]]=127,this.#e[f+d[101]]=127,this.#e[f+d[100]]=127,this.#e[f+d[99]]=127,this.#e[f+d[98]]=127;return}case 123:{this.#h.ano(n);return}case 124:{this.#h.ano(n);return}case 125:{this.#h.ano(n);return}case 126:{this.#E[n]=1,this.#h.ano(n);return}case 127:{this.#E[n]=0,this.#h.ano(n);return}}if(d[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(pe.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(k()&&console.debug(`${C[this.#t]}, CH${n+1}: ${e.data[1]}`),this.#t==0?e.data[1]<48?(this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):this.#t==g.gs?e.data[1]<56&&this.#a[n]>0&&(e.data[1]=this.#e[c],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):this.#t==g.gm?e.data[1]<48?this.#a[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):this.#t==g.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),this.#t){case g.xg:{[126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g["05rw"]:case g.x5d:case g.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.sd:{[104,105,106,107].indexOf(e.data[1])>-1?this.#a[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case g.g2:{e.data[1]==120?this.#a[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):this.#a[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(this.#B){[g.xg,g.gs,g.ns5r].indexOf(this.#t)<0&&console.warn(`NRPN commits are not available under "${C[this.#t]}" mode, even when they are supported in Octavia.`);let f=this.#e[c+d[99]],t=this.#e[c+d[98]];if(f==1){let a=$e.indexOf(t);if(a>-1)this.#e[c+d[71+a]]=e.data[1],k()&&console.debug(`Redirected NRPN 1 ${t} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let i=re.indexOf(t);i>-1?this.#z[n*10+i]=e.data[1]-64:console.warn(`NRPN 0x01${t.toString(16).padStart(2,"0")} is not supported.`),k()&&console.debug(`CH${n+1} voice NRPN ${t} commit`)}}else{if(A.indexOf(f)<0){let i=`NRPN 0x${f.toString(16).padStart(2,"0")}${t.toString(16).padStart(2,"0")} `;f==127?console.warn(`${i}is not necessary. Consider removing it.`):console.warn(`${i}is not supported.`)}else{let i=this.#a[n]-2;i<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${O[this.#a[n]]}.`):this.#J[(i*u.dpn+oe[f])*u.dnc+t]=e.data[1]-64}k()&&console.debug(`CH${n+1} (${O[this.#a[n]]}) drum NRPN ${f} commit`)}}else{let f=I[this.#e[c+d[100]]];this.#e[c+d[101]]==0&&f!=null&&(k()&&console.debug(`CH${n+1} RPN 0 ${this.#e[c+d[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],ie[f][0]),ie[f][1]),this.#s[n*u.rpn+f]=e.data[1])}break}case 32:{switch(this.#t){case g.s90es:case g.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{this.#B||this.#e[c+101]==0&&I[this.#e[c+100]]!=null&&(this.#s[n*u.rpn+I[this.#e[c+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#h.hoOf(n);break}case 66:{e.data[1]>>6?this.#h.soOn(n):this.#h.soOf(n);break}case 98:case 99:{this.#B=1;break}case 100:case 101:{this.#B=0;break}}this.#e[c+d[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(this.#t){case g.s90es:case g.motif:{e.data&&(this.#c[n]=1);break}default:this.#c[n]=1}this.#r[n]=e.data,this.#x[n]=0,k()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,c=e.channel;this.#l.forEach(function(f){let t=f>>7;c==t&&(n.#o[f]=e.data,n.dispatchEvent("note",{part:c,note:f&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;this.#P[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){ge(e.data).forEach(n=>{let c=n[0],f=n[1];(this.#ee[c]||function(){console.debug(`Unknown manufacturer ${c}.`)})(f,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(this.#u[e.meta]||function(c,f,t){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#O=0);let n=be.indexOf(e.meta)>-1;if(k()&&console.debug(e),n)return e.reply="meta",e}};#ee={64:(e,n,c)=>{this.#F.run(n,c,e)},65:(e,n,c)=>{if(n[0]<16)this.#m.run(n,c,e);else{let f=n[n.length-1],t=te(n.subarray(2,n.length-1));f==t?this.#m.run(n.subarray(0,n.length-1),c,e):console.warn(`Bad GS checksum ${f}. Should be ${t}.`)}},66:(e,n,c)=>{this.#U.run(n,c,e)},67:(e,n,c)=>{this.#w.run(n,c,e)},68:(e,n,c)=>{this.#V.run(n,c,e)},71:(e,n,c)=>{this.#K.run(n,c,e)},126:(e,n,c)=>{this.#I.run(n,c,e)},127:(e,n,c)=>{this.switchMode("gm"),this.#X.run(n,c,e)}};#I;#X;#w;#m;#U;#F;#K;#V;buildRchTree(){let e=[];this.#f.forEach((n,c)=>{e[n]?.constructor||(e[n]=[]),e[n].push(c)}),this.#Z=e}getActive(){let e=this.#c.slice();return this.#t==g.mt32,e}getCc(e){let n=e*u.cc,c=this.#e.subarray(n,n+u.cc);return c[d[0]]=c[d[0]]||this.#H,c[d[32]]=c[d[32]]||this.#y,c}getCcCh(e,n){if(U.indexOf(n)<0)throw new Error("CC number not accepted");return this.#e[u.cc*e+d[n]]}getCcAll(){let e=this.#e.slice();for(let n=0;n0&&!f&&(this.#e[e*u.cc+d[0]]=M[c])}getPitch(){return this.#P}getProgram(){return this.#r}getTexts(){return this.#i.slice()}getVel(e){let n=new Map,c=this;return c.#l.forEach(function(f,t){let a=Math.floor(f/128),i=f%128;e==a&&c.#o[f]>0&&n.set(i,{v:c.#o[f],s:c.#d[t]})}),n}getBitmap(){return{bitmap:this.#$,expire:this.#C}}getLetter(){return{text:this.#T,expire:this.#G}}getMode(){return C[this.#t]}getMaster(){return{volume:this.#b}}getRawStrength(){let e=this;return this.#l.forEach(function(n){let c=Math.floor(n/128);e.#o[n]>e.#M[c]&&(e.#M[c]=e.#o[n])}),this.#M}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(c,f){e[f]=Math.floor(c*n.#e[f*u.cc+d[7]]*n.#e[f*u.cc+d[11]]*n.#b/803288)}),e}getRpn(){return this.#s}getNrpn(){return this.#z}getVoice(e,n,c,f){let t=e||this.#H,a=n,i=c||this.#y;C[this.#t]=="ns5r"&&t>0&&t<56&&(i=3);let r=this.userBank.get(t,a,i,f);if(C[this.#t]=="mt32"&&r.name.indexOf("MT-m:")==0){let s=parseInt(r.name.slice(5)),o=s*u.cmt,l="";this.#N.subarray(o,o+10).forEach(h=>{h>31&&(l+=String.fromCharCode(h))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${l}`,!0),r.name=l,r.ending=" "}return(r.ending!=" "||!r.name.length)&&(r=this.baseBank.get(t,a,i,f)),r}getChVoice(e){let n=this.getVoice(this.#e[e*u.cc+d[0]],this.#r[e],this.#e[e*u.cc+d[32]],C[this.#t]);if(this.#x[e])switch(this.#t){case g.mt32:n.ending="~",n.name="",this.#k.subarray(14*(e-1),14*(e-1)+10).forEach(c=>{c>31&&(n.name+=String.fromCharCode(c))})}return n}getPitchShift(e){let n=e*u.rpn;return this.#P[e]/8192*this.#s[n]+(this.#s[n+3]-64)+((this.#s[n+1]<<7)+this.#s[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return this.#g.subarray(n,n+2)}setEffectTypeRaw(e=0,n,c){let f=3*e;this.#g[f]=1,this.#g[f+1+ +n]=c}setEffectType(e=0,n,c){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,c)}setLetterDisplay(e,n,c=0,f=3200){let t=this,a;t.#T=" ".repeat(c),e.forEach(i=>{t.#T+=String.fromCharCode(i>31?i:32),i<32&&(a=a||new Set,a.add(i))}),t.#G=Date.now()+3200,t.#T=t.#T.padEnd(32," "),a&&(a=Array.from(a),a.forEach((i,r,s)=>{s[r]=i.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,c=0;for(;n&&c=u.ace&&console.warn("ACE slots are full.")}getAce(){return this.#v}getChAce(e,n){if(n<0||n>=u.ace)throw new RangeError("No such ACE slot");let c=this.#v[n];if(c){if(U.indexOf(c)>=0)return this.#e[e*u.cc+d[c]];throw new Error(`Invalid ACE source: ${c}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#H=0,this.#y=0,this.#O=0,this.#c.fill(0),this.#e.fill(0),this.#v.fill(0),this.#r.fill(0),this.#o.fill(0),this.#l.fill(0),this.#M.fill(0),this.#P.fill(0),this.#z.fill(0),this.#J.fill(0),this.#b=100,this.#i=[],this.#Q=500,this.#Y=0,this.#G=0,this.#T="",this.#C=0,this.#p=0,this.#$.fill(0),this.#n=!1,this.#W=0,this.#S=!0,this.#f.forEach(function(n,c,f){f[c]=c}),this.buildRchTree(),e==0&&(this.#D.fill(0),this.#L.fill(0)),this.#e[u.cc*9]=M[0],this.#e[u.cc*25]=M[0],this.#e[u.cc*41]=M[0],this.#e[u.cc*57]=M[0],this.#a.fill(this.CH_MELODIC),this.#a[9]=this.CH_DRUM1,this.#a[25]=this.CH_DRUM3,this.#a[41]=this.CH_DRUMS,this.#a[57]=this.CH_DRUMS,this.#a[73]=this.CH_DRUM5,this.#a[89]=this.CH_DRUM7,this.#a[105]=this.CH_DRUMS,this.#a[121]=this.CH_DRUMS,this.#q.fill(0),this.#N.fill(0),this.#A.fill(0),this.#k.fill(0),this.#x.fill(0),this.#g.fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n-1){if(this.#t==0||n){let f=this.#t;this.#t=c,this.#p=0,this.#H=se[0][c],this.#y=se[1][c];for(let a=0;a0&&this.#e[a*u.cc+d[0]]==M[f]&&(this.#e[a*u.cc]=M[c]);switch(this.initOnReset,c){case g.mt32:{_.forEach((a,i)=>{let r=i+1;this.#c[r]||(this.#r[r]=a,this.#e[r*u.cc+d[91]]=127)});break}}let t;switch(c){case g.gs:{t=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case g.x5d:case g.ns5r:{t=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:t=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#j[e.type].call(this,e);{let n=this.chRedir(e.part,e.track),c=!1;this.#Z[n]?.forEach(f=>{e.channel=f,c=!0,this.#j[e.type].call(this,e)}),c||console.warn(`${ae[e.type]?ae[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${n+1} without any recipient.`)}this.#i.length>100&&this.#i.splice(100,this.#i.length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{P.context=this,this.userBank.load(await P.read(e,n));break}}}constructor(){super();let e=this;this.#$=new Uint8Array(256),this.#R[10]=new Uint8Array(512),this.#_=new S,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,9 +148,9 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#a.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#a.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#a.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#a.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#a.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${r}`)});break}case"ln":{a.slice(1).forEach((r,i)=>{r.length&&this.#a.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${r}`)});break}default:this.#a.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#a.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#a.unshift(t.slice(1)):this.#a[0]+=t:(this.#a[0]=t,this.#a.unshift(""))}},this.#u[2]=function(t){this.#a.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#a.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#a.unshift(`${ce(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#a.unshift(""):this.#a[0]+=`${t}`},this.#u[6]=function(t){this.#a.unshift(`${ce(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#a.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new m("universal non-realtime"),this.#X=new m("universal realtime"),this.#w=new m("Yamaha"),this.#S=new m("Roland"),this.#U=new m("Korg"),this.#F=new m("Kawai"),this.#K=new m("Akai"),this.#V=new m("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#S.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],r=(i,s)=>{a[s]=i};if(t.subarray(1).forEach((i,s)=>{let o=s+t[0];([r,r,r,r,l=>{this.#b=l*129/16383*100},l=>{},l=>{}][o]||(()=>{}))(i,s)}),t[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+i]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(r)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(r)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((r,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${R[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+i]||function(){})(r)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((r,i)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+i](r)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,r)=>{let i=r+t[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,o=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],r=t[1],i=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${R[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][r+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#C=Date.now()+3200,e.#$.fill(0);let r=t.subarray(1);for(let i=0;i>6-p&1,p++})}).add([76,8],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=u.cc*r,o=`XG CH${r+1} `,l=`Unknown XG part address ${i}.`;t.subarray(2).forEach((h,b)=>{i<1?console.debug(l):i<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!h},()=>{},()=>{e.setChType(r,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*r+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(e.#e[s+d[[5,65][i&1]]]=h):i<114?console.debug(l):i<116?console.debug(`${o}EQ ${["bass","treble"][i&1]} gain: ${h-64}dB`):i<118?console.debug(l):i<120?console.debug(`${o}EQ ${["bass","treble"][i&1]} freq: ${h}`):console.debug(l)})}).add([76,9],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=t[1],s=`PLG-150VL CH${r+1} `;t.subarray(2).forEach((o,l)=>{let h=l+i;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let r=t[0],i="MU1000 System: ";t.subarray(1).forEach((s,o)=>{let l=r+o;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(e.#y=s?126:0,console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#m=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(t,a)=>{let r=t[0],i=`MU1000 RS${e.#m?"":" (ignored)"}: `;if(r<16)switch(r){case 2:{let s=e.chRedir(0,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#m&&e.dispatchEvent("channelmin",s),e.#m&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${r} invoked.`)}else if(r<32){if(e.#m){let s=e.chRedir(r-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(r<36){let s=e.chRedir(r-32<<4,a,!0);e.#m&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=r-32),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=`PLG-100SG CH${r+1} `,s=Date.now();if(t[1]==0){let o="",l=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):l+=h*13}),s>=e.#Y&&e.#a.unshift("SG Lyric: "),e.#a[0]+=`${W(o)}`,e.#Y=s+Math.ceil(l/2)+e.#Q,k()&&console.debug(`${i}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,r)=>{if(e.eprom){let i=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((l,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(l>>6-$&1)<<7;else o[s+7*b+p]=l})}}).add([89,1],(t,a,r)=>{let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(t,a,r)=>{if(e.eprom){let i=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,l)=>{let h=l>>3,b=l&7;if(b==7)for(let p=0;p<7;p++)s[i+7*h+p]+=(o>>6-p&1)<<7;else s[i+7*h+b]=o})}}).add([89,3],(t,a,r)=>{}),this.#w.add([39,48],(t,a,r)=>{}).add([43,0,0],(t,a,r)=>{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}).add([43,1,0],(t,a,r)=>{}).add([43,2],(t,a,r)=>{let i=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*i,l=`TG300 CH${i+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[i]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*i+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${h}`)},()=>{console.debug(`${l} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,r)=>{let i=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",i)}).add([43,7,1],(t,a,r)=>{e.#p=0,e.#C=Date.now()+3200,e.#$.fill(0),t.forEach(function(i,s){let o=Math.floor(s/16),l=s%16,h=(l*3+o)*7,b=7,p=0;for(h-=l*5,o==2&&(b=2);p>6-p&1,p++})}),this.#S.add([66,18,0,0,127],(t,a,r)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,r)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,l)}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let r="".padStart(a," ");t.subarray(1).forEach((i,s)=>{r+=String.fromCharCode(Math.max(32,i))}),r=r.padEnd(16," "),console.debug(`GS patch name: ${r}`)}else a<48||(a<65?t.subarray(1).forEach((r,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[r]}`),e.setEffectType(0,40,r)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${r}ms`)},()=>{console.info(`${s}type: ${Z[r]}`),e.setEffectType(1,40,16+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)},()=>{console.debug(`${s}to delay: ${E(r)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((r,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[r]}`),e.setEffectType(2,40,32+r)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(r)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((r,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][r]}Hz`)},()=>{console.debug(`${a}low gain: ${r-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][r]}Hz`)},()=>{console.debug(`${a}high gain: ${r-64}dB`)}][t[0]+i]||function(){console.warn(`Unknown GS EQ address: ${t[0]+i}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",r=function(i,s){let o=ee(e.#g.subarray(10,12),s,i);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,r,()=>{console.debug(`${a}to reverb: ${E(i)}dB`)},()=>{console.debug(`${a}to chorus: ${E(i)}dB`)},()=>{console.debug(`${a}to delay: ${E(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][t[0]+s]||function(o,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#C=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#C=Date.now()+3200,e.#v[t[0]-1]?.length||(e.#v[t[0]-1]=new Uint8Array(256));let a=e.#v[t[0]-1],r=t[1];a.fill(0);let i=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,r){let i=t[0],s=u.cc*a,o=u.rpn*a,l=`GS CH${a+1} `;i<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,r,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][i+b]()}):i<19||(i<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${l}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${h}`)},()=>{console.debug(`${l}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},f=function(t,a){let r=t[0],i=`GS CH${a+1} `;r<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][r+o]()}):r<32?console.warn(`Unknown GS misc address: ${r}`):r<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][r+o-32]()}):console.warn(`Unknown GS misc address: ${r}`)};this.#S.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let r=(t[1]<<7)+t[0],i=(t[3]<<7)+t[2],s=e.chRedir(r&15,a,!0),o=u.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-1,e.#e[o+d[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=i-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[i-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=i},()=>{i<31&&(e.#e[o+d[10]]=Math.round((i-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(i)},()=>{e.#e[o+d[91]]=D(i)},()=>{e.#s[s*u.rpn+3]=i>8191?i-16320:64+i},()=>{e.#s[s*u.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(e.#s[s*u.rpn]=i)},()=>{}][r>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=82,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` -${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let r="",i=90,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{l+=` -${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),S(t,(r,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,r)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),S(t,function(r,i,s,o){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),h=l*u.cc;switch(i%12){case 0:{r<128?(e.setChType(l,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[l]=r):(e.setChType(l,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[l]=ne[r-128]),r>0&&(e.#c[l]=1);break}case 1:{e.#e[h+d[7]]=r;break}case 2:{e.#s[l*u.rpn+3]=r>127?r-192:64+r;break}case 3:{e.#s[l*u.rpn+1]=r>127?r-192:64+r;break}case 4:{r<31&&(e.#e[h+d[10]]=Math.round((r-15)*4.2+64));break}case 5:{let b=r>>4,p=r&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(r&15,a,!0),p=r>>4;e.#f[l]=r,(b!=l||p)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),this.#S.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1];t.subarray(2).forEach((o,l)=>{let h=l+s;e.#A[h+(i-1)*16]=o,([!1,()=>{let b=e.#A[i-1<<4];if(b<3)if(e.#M[i]=1,b==2)for(let p=0;p{e.#s[i*u.rpn+3]=o+40},()=>{e.#s[i*u.rpn+1]=o+14},()=>{e.#s[i*u.rpn]=o},!1,()=>{e.#e[u.cc*i+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*i+d[7]]=o},()=>{e.#e[u.cc*i+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0)}).add([22,18,2],(t,a,r)=>{e.switchMode("mt32");let i=e.chRedir(r,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#M[i]=1),t.subarray(2).forEach((o,l)=>{let h=l+s;h<14&&(e.#k[(i-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,r)=>{if(e.switchMode("mt32"),t[0]){let i=t[1]-16}else{let i=t[1];t.subarray(2).forEach((s,o)=>{let l=o+i;e.#A[l]=s;let h=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#M[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,r)=>{e.switchMode("mt32");let i=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let l=o+i,h=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#M[h]=1)})}).add([22,18,5],(t,a,r)=>{e.switchMode("mt32");let i=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o,h=Math.floor(l/8),b=l&7,p=h*8;e.#q[l]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME -000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,r)=>{e.switchMode("mt32");let i=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=i+o;l>1)*u.cmt+l]=s)})}).add([22,18,16],(t,a,r)=>{e.switchMode("mt32");let i=t[1],s=!1,o=function(l,h){e.#f[h-12]=l,s=!0};t.subarray(2).forEach((l,h)=>{let b=h+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,o,o,o,o,o,o,o,o,o,()=>{e.#b=l}][b]||(()=>{}))(l,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],r=" ".repeat(a);t.subarray(2).forEach(i=>{i>31&&(r+=String.fromCharCode(i))}),e.#T=r.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let r=e.chRedir(0,a,!0);for(let i=0;i<16;i++)e.#h.ano(r+i),i&&i<10&&(e.#r[r+i]=_[i-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let r=t[0];switch(r){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(r<10){let i=[0,0,0,0],s=(o,l)=>{i[l]=o};if(t.subarray(1).forEach((o,l)=>{[s,s,s,s,()=>{e.#b=o*129/16383*100},()=>o-64,()=>o-64,()=>{},()=>{},()=>{}][r+l]()}),t[0]<4){let o=0;i.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let r=e.chRedir(t[0],a,!0),i=r*u.cc,s=t[1],o=`NS5R CH${r+1} `;t.subarray(2).forEach((l,h)=>{let b=s+h;b<3?[()=>{e.#e[i+d[0]]=l||121},()=>{e.#e[i+d[32]]=l},()=>{e.#r[r]=l}][b]():b<8||(b<14?[()=>{let p=e.chRedir(l,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[r]=+!l},()=>{e.setChType(r,l,g.ns5r),console.debug(`${o}type: ${O[l]}`)},()=>{e.#s[u.rpn*r+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[i+d[7]]=l},()=>{e.#e[i+d[11]]=l},()=>{},()=>{},()=>{e.#e[i+d[10]]=l||128},()=>{},()=>{},()=>{e.#e[i+d[93]]=l},()=>{e.#e[i+d[91]]=l},()=>{e.#e[i+d[76]]=l},()=>{e.#e[i+d[77]]=l},()=>{e.#e[i+d[78]]=l},()=>{e.#e[i+d[74]]=l},()=>{e.#e[i+d[71]]=l},()=>{e.#e[i+d[73]]=l},()=>{e.#e[i+d[75]]=l},()=>{e.#e[i+d[72]]=l}][b-16]():b<112||b<114&&[()=>{e.#e[i+d[5]]=l},()=>{e.#e[i+d[65]]=l}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let r=t[0];if(r<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let i=r-32;e.#C=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),o=4;s.forEach(function(l,h){let b=h+i,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,M=p0;)e.#$[$*32+p*7+(M-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let r="";S(t,(i,s)=>{s<8?(i>31&&(r+=String.fromCharCode(i)),s==7&&(e.aiEfxName=r)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,S(t,function(r,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),o=s*u.cc;switch(i%92){case 0:{e.#e[o+d[0]]=r||121;break}case 1:{e.#e[o+d[32]]=r;break}case 2:{e.#r[s]=r,r>0&&(e.#c[s]=1);break}case 3:{let l=e.chRedir(r,a,!0);e.#f[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=r<40||r>88?r+(r>63?-192:64):r;break}case 9:case 10:{e.#e[o+d[7]]=r;break}case 11:{e.#e[o+d[11]]=r;break}case 14:{e.#e[o+d[10]]=r||128;break}case 19:{e.#e[o+d[93]]=r;break}case 20:{e.#e[o+d[91]]=r;break}case 84:{e.#e[o+d[65]]=r;break}case 85:{e.#e[o+d[5]]=r;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=80,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:{i=h&127;break}case p==12:{o=h&127;break}case p==13:{l+=` -${i} ${s} ${o} ${r.trim().replace("Init Voice","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let r="",i=88,s=0,o=0,l="MSB PRG LSB NME";S(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(r+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{l+=` -${i} ${s} ${o} ${r.trim().replace("Init Combi","")}`,s++,r="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);S(t,(r,i,s)=>{if(i<720)for(let o=0;o<8;o++)a[i*8+o]=r>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,r)=>{e.#U.run([66,...t],a,r)}),this.#F.add([16,0,8,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=i?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,r)=>{let i=e.chRedir(t[1],a,!0),s=u.cc*i,o=u.rpn*i,l=(t[3]<<4)+t[4],h=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[i]=l):(e.setChType(i,e.CH_DRUMS,g.k11),e.#r[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);e.#f[i]=b,i!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=l},()=>{e.#c[i]=l},()=>{e.#e[s+d[10]]=l},()=>{e.#s[o+3]=l+40},()=>{e.#s[o+1]=l>>1,e.#s[o+2]=l&1},()=>{e.#e[s+d[91]]=l?127:0},()=>{},()=>{e.#e[s+d[74]]=l},()=>{e.#e[s+d[73]]=l},()=>{e.#e[s+d[72]]=l}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,r)=>{let i=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=i-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,r)=>{let i=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,l=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#c[s]=i},()=>{e.#e[o+d[7]]=i},()=>{e.#e[o+d[10]]=i},()=>{e.#e[o+d[91]]=i?127:0},()=>{e.#s[l+3]=i+40},()=>{e.#s[l+1]=i},()=>{e.#s[l]=i},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,r)=>{let i=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=i*129/16383*100;break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[i]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(i,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,r)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,r)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...t]);e.#w.run(i,a,r)}).add([127,1,0,0],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,l)=>{([()=>{e.#b=o*12900/16383}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,r)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(o,l,h)=>{console.debug(`${i}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,r)=>{e.switchMode("s90es");let i=e.chRedir(t[0],a,!0),s=u.cc*i,o=t[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#c[i]=1),e.#e[s+d[32]]=h,e.#i[i]=this.setChType(i,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#c[i]=1),e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[i]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,r)=>{e.switchMode("s90es");let i=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][i+o&3]||(()=>{}))()})}),this.#S.add([0,72,18,0,0,0,0],(t,a,r)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; +122 006 000 `),this.#u[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#n=!0,this.#i.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#n=!0,this.#i.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#n=!0,this.#i.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#n=!0,this.#i.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#n=!0,this.#i.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let a=t.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((i,r)=>{i.length&&this.#i.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][r]}: ${i}`)});break}case"ln":{a.slice(1).forEach((i,r)=>{i.length&&this.#i.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][r]}: ${i}`)});break}default:this.#i.unshift(`XGF_Data: ${t}`)}break}default:this.#n?t[0]=="\\"?this.#i.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#i.unshift(t.slice(1)):this.#i[0]+=t:(this.#i[0]=t,this.#i.unshift(""))}},this.#u[2]=function(t){this.#i.unshift(`Copyrite: ${t}`)},this.#u[3]=function(t,a){a<1&&this.#O<1&&this.#i.unshift(`TrkTitle: ${t}`)},this.#u[4]=function(t,a){this.#i.unshift(`${ce(this.#O,""," ")}Instrmnt: ${t}`)},this.#u[5]=function(t){t.trim()==""?this.#i.unshift(""):this.#i[0]+=`${t}`},this.#u[6]=function(t){this.#i.unshift(`${ce(this.#O,""," ")}C.Marker: ${t}`)},this.#u[7]=function(t){this.#i.unshift(`CuePoint: ${t}`)},this.#u[32]=function(t){this.#O=t[0]+1},this.#u[33]=function(t,a){console.debug(`Track ${a} requests to get assigned to output ${t}.`),e.#L[a]=t+1},this.#u[81]=function(t,a){e.#Q=t/1e3},this.#u[127]=function(t,a){e.#_.run(t,a)},this.#_.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#_.add([67,0,1],function(t,a){e.#L[a]=t[0]+1}),this.#I=new S("universal non-realtime"),this.#X=new S("universal realtime"),this.#w=new S("Yamaha"),this.#m=new S("Roland"),this.#U=new S("Korg"),this.#F=new S("Kawai"),this.#K=new S("Akai"),this.#V=new S("Casio");let n=function(t){console.info(`Unrecognized SysEx in "${this.name}" set.`,t)};this.#I.default=n,this.#X.default=n,this.#w.default=n,this.#m.default=n,this.#U.default=n,this.#F.default=n,this.#K.default=n,this.#V.default=n,this.#I.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#n=e.#n||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#X.add([4,1],t=>{e.#b=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#w.add([76,0,0],t=>{switch(t[0]){case 125:{console.info(`XG drum setup reset: ${t}`);break}case 126:{e.switchMode("xg",!0),e.#n=!1,console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],i=(r,s)=>{a[s]=r};if(t.subarray(1).forEach((r,s)=>{let o=s+t[0];([i,i,i,i,l=>{this.#b=l*129/16383*100},l=>{},l=>{}][o]||(()=>{}))(r,s)}),t[0]<4){let r=0;a.forEach(s=>{r=r<<4,r+=s}),r-=1024}}}}).add([76,2,1],t=>{let a="XG ";t[0]<32?(a+="reverb ",t.subarray(1).forEach((i,r)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${v[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${q(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${T[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][t[0]+r]||function(){console.warn(`Unknown XG reverb address: ${t[0]}.`)})(i)})):t[0]<64?(a+="chorus ",t.subarray(1).forEach((i,r)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${v[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${z[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Q(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${T[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${T[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][t[0]-32+r]||function(){console.warn(`Unknown XG chorus address: ${t[0]}.`)})(i)})):t[0]<86?(a+="variation ",t.subarray(1).forEach((i,r)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${v[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][t[0]-64+r]||function(){})(i)})):t[0]<97?(a+="variation ",t.subarray(1).forEach((i,r)=>{[s=>{console.debug(`${a}send: ${E(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${E(s)}dB`)},s=>{console.debug(`${a}to chorus: ${E(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][t[0]-86+r](i)})):t[0]>111&&t[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${t[0]}`)}).add([76,2,64],t=>{t.subarray(1).forEach((a,i)=>{let r=i+t[0];if(r==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=r-1>>2,o=r-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][o]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][o]()}})}).add([76,3],t=>{let a=t[0],i=t[1],r=`XG Insertion ${t[0]+1} `;t.subarray(2).forEach((s,o)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${r}main type: ${v[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${r}sub type: ${l+1}`)}][i+o]||function(){})(s)})}).add([76,6,0],t=>{let a=t[0];a<64?e.setLetterDisplay(t.subarray(1),"XG letter display",a):e.#G=Date.now()}).add([76,7,0],t=>{let a=t[0];e.#p=0,e.#C=Date.now()+3200,e.#$.fill(0);let i=t.subarray(1);for(let r=0;r>6-p&1,p++})}).add([76,8],(t,a)=>{let i=e.chRedir(t[0],a,!0),r=t[1],s=u.cc*i,o=`XG CH${i+1} `,l=`Unknown XG part address ${r}.`;t.subarray(2).forEach((h,b)=>{r<1?console.debug(l):r<41?([()=>{e.#e[s+d[0]]=h},()=>{e.#e[s+d[32]]=h},()=>{e.#r[i]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[i]=+!h},()=>{},()=>{e.setChType(i,h,g.xg),console.debug(`${o}type: ${O[h]||h}`)},()=>{e.#s[u.rpn*i+3]=h},!1,!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{e.#e[s+d[128]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[76]]=h},()=>{e.#e[s+d[77]]=h},()=>{e.#e[s+d[78]]=h},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},()=>{e.#e[s+d[73]]=h},()=>{e.#e[s+d[75]]=h},()=>{e.#e[s+d[72]]=h}][r+b-1]||(()=>{}))():r<48?console.debug(l):r<111?r>102&&r<105&&(e.#e[s+d[[5,65][r&1]]]=h):r<114?console.debug(l):r<116?console.debug(`${o}EQ ${["bass","treble"][r&1]} gain: ${h-64}dB`):r<118?console.debug(l):r<120?console.debug(`${o}EQ ${["bass","treble"][r&1]} freq: ${h}`):console.debug(l)})}).add([76,9],(t,a)=>{let i=e.chRedir(t[0],a,!0),r=t[1],s=`PLG-150VL CH${i+1} `;t.subarray(2).forEach((o,l)=>{let h=l+r;switch(h){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][o]}`);break}case 0:case 27:case 28:break;default:if(h<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][h-3>>1];h&1?h<23?(console.debug(`${s}${b} control source: ${J(o)}`),o&&o<96&&e.allocateAce(o)):console.debug(`${s}${b} scale break point: ${o}`):console.debug(`${s}${b} depth: ${o-64}`)}}})}).add([76,10],t=>{}).add([76,16],t=>{}).add([76,17,0,0],t=>{}).add([76,112],t=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][t[0]]} for CH${t[2]+1}.`)}).add([73,0,0],(t,a)=>{let i=t[0],r="MU1000 System: ";t.subarray(1).forEach((s,o)=>{let l=i+o;l==8?console.debug(`${r}LCD contrast set to ${s}.`):l==18?(e.#y=s?126:0,console.debug(`${r}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{e.#S=!!s,console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(t,a)=>{let i=t[0],r=`MU1000 RS${e.#S?"":" (ignored)"}: `;if(i<16)switch(i){case 2:{let s=e.chRedir(0,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${r}Show CH1~64`);break}case 3:{let s=e.chRedir(t[1]<<5,a,!0);e.#S&&e.dispatchEvent("channelmin",s),e.#S&&e.dispatchEvent("channelmax",s+31),console.info(`${r}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${r}unknown switch ${i} invoked.`)}else if(i<32){if(e.#S){let s=e.chRedir(i-16+(e.#W<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(i<36){let s=e.chRedir(i-32<<4,a,!0);e.#S&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),e.#W=i-32),console.info(`${r}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(t,a)=>{let i=e.chRedir(t[0],a,!0),r=`PLG-100SG CH${i+1} `,s=Date.now();if(t[1]==0){let o="",l=0;t.subarray(2).forEach((h,b)=>{b%2==0?o+=Y[h]||h.toString().padStart("0"):l+=h*13}),s>=e.#Y&&e.#i.unshift("SG Lyric: "),e.#i[0]+=`${W(o)}`,e.#Y=s+Math.ceil(l/2)+e.#Q,k()&&console.debug(`${r}vocals: ${o}`)}else console.warn(`Unknown PLG-100SG data: ${t}`)}),this.#w.add([76,48],t=>{}).add([76,49],t=>{}).add([76,50],t=>{}).add([76,51],t=>{}),this.#w.add([89,0],(t,a,i)=>{if(e.eprom){let r=t[0],s=(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${r} bytes.`);let o=e.eprom.data;t.subarray(4).forEach((l,h)=>{let b=h>>3,p=h&7;if(p==7)for(let $=0;$<7;$++)o[s+7*b+$]+=(l>>6-$&1)<<7;else o[s+7*b+p]=l})}}).add([89,1],(t,a,i)=>{let r=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3];k()&&console.debug(`MU1000 EPROM jump to 0x${r.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=r)}).add([89,2],(t,a,i)=>{if(e.eprom){let r=(t[0]<<21)+(t[1]<<14)+(t[2]<<7)+t[3]+(e.eprom.offset||0);k()&&console.debug(`MU1000 EPROM write to 0x${r.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;t.subarray(4).forEach((o,l)=>{let h=l>>3,b=l&7;if(b==7)for(let p=0;p<7;p++)s[r+7*h+p]+=(o>>6-p&1)<<7;else s[r+7*h+b]=o})}}).add([89,3],(t,a,i)=>{}),this.#w.add([39,48],(t,a,i)=>{}).add([43,0,0],(t,a,i)=>{let r=[0,0,0,0],s=(o,l)=>{r[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,()=>{this.#b=o*129/16383*100},()=>o-64,()=>o||128,()=>o,()=>o,()=>{console.debug(`TG300 variation on cc${o}.`)}][h](o,h)}),t[0]<4){let o=0;r.forEach(l=>{o=o<<4,o+=l}),o-=1024}}).add([43,1,0],(t,a,i)=>{}).add([43,2],(t,a,i)=>{let r=e.chRedir(t[0],a,!0),s=t[1],o=u.cc*r,l=`TG300 CH${r+1} `;t.subarray(2).forEach((h,b)=>{b<5?([()=>{},()=>{e.#e[o+d[0]]=h},()=>{e.#e[o+d[32]]=h},()=>{e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][b+s]||(()=>{}))(h,b+s):b<21||(b<47?([()=>{e.#E[r]=+!h},()=>{},()=>{},()=>{e.#s[u.rpn*r+3]=h},()=>{},()=>{e.#e[o+d[7]]=h},!1,!1,()=>{e.#e[o+d[10]]=h||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${h}`)},()=>{console.debug(`${l} AC2 at cc${h}`)},()=>{e.#e[o+d[128]]=h},()=>{e.#e[o+d[93]]=h},()=>{e.#e[o+d[91]]=h},()=>{e.#e[o+d[94]]=h},()=>{e.#e[o+d[76]]=h},()=>{e.#e[o+d[77]]=h},()=>{e.#e[o+d[74]]=h},()=>{e.#e[o+d[71]]=h},()=>{e.#e[o+d[73]]=h},()=>{e.#e[o+d[75]]=h},()=>{e.#e[o+d[72]]=h},()=>{e.#e[o+d[78]]=h}][b+s-21]||(()=>{}))(h,b+s):b<95||([()=>{e.#e[o+d[65]]=h},()=>{e.#e[o+d[5]]=h}][b+s-95]||(()=>{}))(h,b+s))})}).add([43,7,0],(t,a,i)=>{let r=t[0];e.setLetterDisplay(t.subarray(1),"TG300 letter display",r)}).add([43,7,1],(t,a,i)=>{e.#p=0,e.#C=Date.now()+3200,e.#$.fill(0),t.forEach(function(r,s){let o=Math.floor(s/16),l=s%16,h=(l*3+o)*7,b=7,p=0;for(h-=l*5,o==2&&(b=2);p>6-p&1,p++})}),this.#m.add([66,18,0,0,127],(t,a,i)=>{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#y=3,e.#n=!1,e.#D.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,a,i)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[u.cc*9]=120,e.#e[u.cc*25]=120,e.#e[u.cc*41]=120,e.#e[u.cc*57]=120,e.#n=!1,e.#D.fill(0),console.info("MIDI reset: GS");break}default:{let r=[0,0,0,0],s=(o,l)=>{r[l]=o};if(t.subarray(1).forEach((o,l)=>{let h=l+t[0];[s,s,s,s,b=>{this.#b=b*129/16383*100},b=>{},b=>{}][h](o,l)}),t[0]<4){let o=0;r.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,64,1],t=>{let a=t[0];if(a<16){let i="".padStart(a," ");t.subarray(1).forEach((r,s)=>{i+=String.fromCharCode(Math.max(32,r))}),i=i.padEnd(16," "),console.debug(`GS patch name: ${i}`)}else a<48||(a<65?t.subarray(1).forEach((i,r)=>{let s=`GS ${a+r>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${L[i]}`),e.setEffectType(0,40,i)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${i}ms`)},()=>{console.info(`${s}type: ${Z[i]}`),e.setEffectType(1,40,16+i)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(i)}`)},()=>{console.debug(`${s}to delay: ${E(i)}`)}][a+r-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?t.subarray(1).forEach((i,r)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${j[i]}`),e.setEffectType(2,40,32+i)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${E(i)}`)}][a+r-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],t=>{let a="GS EQ ";t.subarray(1).forEach((i,r)=>{([()=>{console.debug(`${a}low freq: ${[200,400][i]}Hz`)},()=>{console.debug(`${a}low gain: ${i-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][i]}Hz`)},()=>{console.debug(`${a}high gain: ${i-64}dB`)}][t[0]+r]||function(){console.warn(`Unknown GS EQ address: ${t[0]+r}`)})()})}).add([66,18,64,3],t=>{let a="GS EFX ",i=function(r,s){let o=ee(e.#g.subarray(10,12),s,r);o&&console.debug(`${a}${B(e.#g.subarray(10,12))} ${o}`)};t.subarray(1).forEach((r,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+r)},()=>{e.setEffectTypeRaw(3,!0,r),console.info(`${a}type: ${B(e.#g.subarray(10,12))}`)},!1,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,()=>{console.debug(`${a}to reverb: ${E(r)}dB`)},()=>{console.debug(`${a}to chorus: ${E(r)}dB`)},()=>{console.debug(`${a}to delay: ${E(r)}dB`)},!1,()=>{console.debug(`${a}1 source: ${r}`),r&&r<96&&e.allocateAce(r)},()=>{console.debug(`${a}1 depth: ${r-64}`)},()=>{console.debug(`${a}2 source: ${r}`),r&&r<96&&e.allocateAce(r)},()=>{console.debug(`${a}2 depth: ${r-64}`)},()=>{console.debug(`${a}to EQ: ${r?"ON":"OFF"}`)}][t[0]+s]||function(o,l){console.warn(`Unknown GS EFX address: ${l}`)})(r,t[0]+s)})}).add([66,18,65],t=>{}).add([69,18,16],t=>{switch(t[0]){case 0:{let a=t[1];e.setLetterDisplay(t.subarray(2),"GS display text",a);break}case 32:{e.#C=Date.now()+3200,t[1]==0&&(e.#p=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p>9&&(e.#p=0),e.#C=Date.now()+3200,e.#R[t[0]-1]?.length||(e.#R[t[0]-1]=new Uint8Array(256));let a=e.#R[t[0]-1],i=t[1];a.fill(0);let r=t.subarray(2);for(let s=0;s>4-$&1,$++})}else console.warn(`Unknown GS display section: ${t[0]}`)}});let c=function(t,a,i){let r=t[0],s=u.cc*a,o=u.rpn*a,l=`GS CH${a+1} `;r<3?t.subarray(1).forEach((h,b)=>{[()=>{e.#e[s+d[0]]=h},()=>{e.#r[a]=h},()=>{let p=e.chRedir(h,i,!0);e.#f[a]=p,a!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))}][r+b]()}):r<19||(r<44?t.subarray(1).forEach((h,b)=>{([()=>{e.#E[a]=+!h},!1,()=>{e.setChType(a,h<<1,g.gs),console.debug(`${l}type: ${h?"drum ":"melodic"}${h||""}`)},()=>{e.#s[o+3]=h},!1,()=>{e.#e[s+d[7]]=h},!1,!1,()=>{e.#e[s+d[10]]=h||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${h}`)},()=>{console.debug(`${l}CC 2: cc${h}`)},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[91]]=h},!1,!1,()=>{e.#s[o+1]=h},()=>{e.#s[o+2]=h},()=>{e.#e[s+d[94]]=h}][r+b-19]||(()=>{}))()}):r<76||console.debug(`Unknown GS part address: ${r}`))},f=function(t,a){let i=t[0],r=`GS CH${a+1} `;i<2?t.subarray(1).forEach((s,o)=>{[()=>{e.#e[u.cc*a+d[32]]=s},()=>{}][i+o]()}):i<32?console.warn(`Unknown GS misc address: ${i}`):i<35?t.subarray(1).forEach((s,o)=>{[()=>{console.debug(`${r}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${r}EFX: o${["ff","n"][s]}`)}][i+o-32]()}):console.warn(`Unknown GS misc address: ${i}`)};this.#m.add([66,18,64,16],(t,a)=>{c(t,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(t,a)=>{c(t,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(t,a)=>{c(t,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(t,a)=>{c(t,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(t,a)=>{c(t,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(t,a)=>{c(t,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(t,a)=>{c(t,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(t,a)=>{c(t,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(t,a)=>{c(t,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(t,a)=>{c(t,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(t,a)=>{c(t,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(t,a)=>{c(t,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(t,a)=>{c(t,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(t,a)=>{c(t,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(t,a)=>{c(t,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(t,a)=>{c(t,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(t,a)=>{f(t,e.chRedir(9,a,!0))}).add([66,18,64,65],(t,a)=>{f(t,e.chRedir(0,a,!0))}).add([66,18,64,66],(t,a)=>{f(t,e.chRedir(1,a,!0))}).add([66,18,64,67],(t,a)=>{f(t,e.chRedir(2,a,!0))}).add([66,18,64,68],(t,a)=>{f(t,e.chRedir(3,a,!0))}).add([66,18,64,69],(t,a)=>{f(t,e.chRedir(4,a,!0))}).add([66,18,64,70],(t,a)=>{f(t,e.chRedir(5,a,!0))}).add([66,18,64,71],(t,a)=>{f(t,e.chRedir(6,a,!0))}).add([66,18,64,72],(t,a)=>{f(t,e.chRedir(7,a,!0))}).add([66,18,64,73],(t,a)=>{f(t,e.chRedir(8,a,!0))}).add([66,18,64,74],(t,a)=>{f(t,e.chRedir(10,a,!0))}).add([66,18,64,75],(t,a)=>{f(t,e.chRedir(11,a,!0))}).add([66,18,64,76],(t,a)=>{f(t,e.chRedir(12,a,!0))}).add([66,18,64,77],(t,a)=>{f(t,e.chRedir(13,a,!0))}).add([66,18,64,78],(t,a)=>{f(t,e.chRedir(14,a,!0))}).add([66,18,64,79],(t,a)=>{f(t,e.chRedir(15,a,!0))}),this.#U.add([54,65],(t,a)=>{e.switchMode("x5d");let i=(t[1]<<7)+t[0],r=(t[3]<<7)+t[2],s=e.chRedir(i&15,a,!0),o=u.cc*s;[()=>{r<1||(r<101?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=r-1,e.#e[o+d[0]]=82):r<229?(e.setChType(s,e.CH_MELODIC,g.x5d),e.#r[s]=r-101,e.#e[o+d[0]]=56):(e.setChType(s,e.CH_DRUMS,g.x5d),e.#r[s]=ne[r-229]||0,e.#e[o+d[0]]=62))},()=>{e.#e[o+d[7]]=r},()=>{r<31&&(e.#e[o+d[10]]=Math.round((r-15)*4.2+64))},()=>{e.#e[o+d[93]]=D(r)},()=>{e.#e[o+d[91]]=D(r)},()=>{e.#s[s*u.rpn+3]=r>8191?r-16320:64+r},()=>{e.#s[s*u.rpn+1]=r>8191?r-16320:64+r},()=>{r>0&&(e.#s[s*u.rpn]=r)},()=>{}][i>>4]()}).add([54,76,0],(t,a)=>{e.switchMode("x5d",!0);let i="",r=82,s=0,o=0,l="MSB PRG LSB NME";m(t,function(h,b){if(b<16400){let p=b%164;switch(!0){case p<10:{h>31&&(i+=String.fromCharCode(h));break}case p==11:{l+=` +${r} ${s} ${o} ${i.trim().replace("Init Voice","")}`,s++,i="";break}}s>99&&(r=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(t,a)=>{e.switchMode("x5d",!0);let i="",r=90,s=0,o=0,l="MSB PRG LSB NME";m(t,function(h,b){if(b<13600){let p=b%136;switch(!0){case p<10:{h>31&&(i+=String.fromCharCode(h));break}case p==11:{l+=` +${r} ${s} ${o} ${i.trim().replace("Init Combi","")}`,s++,i="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(t,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][t[0]]} mode.`)}).add([54,85],(t,a)=>{e.switchMode("x5d",!0),m(t,(i,r)=>{r>0&&r<3&&e.setEffectType(r-1,44,i)})}).add([54,104],(t,a)=>{e.switchMode("x5d",!0),m(t,function(i,r,s,o){if(r<192){let l=e.chRedir(Math.floor(r/12),a,!0),h=l*u.cc;switch(r%12){case 0:{i<128?(e.setChType(l,e.CH_MELODIC,g.x5d),e.#e[h+d[0]]=82,e.#r[l]=i):(e.setChType(l,e.CH_DRUMS,g.x5d),e.#e[h+d[0]]=62,e.#r[l]=ne[i-128]),i>0&&(e.#c[l]=1);break}case 1:{e.#e[h+d[7]]=i;break}case 2:{e.#s[l*u.rpn+3]=i>127?i-192:64+i;break}case 3:{e.#s[l*u.rpn+1]=i>127?i-192:64+i;break}case 4:{i<31&&(e.#e[h+d[10]]=Math.round((i-15)*4.2+64));break}case 5:{let b=i>>4,p=i&15;e.#e[h+d[91]]=D(p),e.#e[h+d[93]]=D(b);break}case 10:break;case 11:{let b=e.chRedir(i&15,a,!0),p=i>>4;e.#f[l]=i,(b!=l||p)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(r-192,a,!0)}})}),this.#m.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#n=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(t,a,i)=>{e.switchMode("mt32");let r=e.chRedir(i,a,!0),s=t[1];t.subarray(2).forEach((o,l)=>{let h=l+s;e.#A[h+(r-1)*16]=o,([!1,()=>{let b=e.#A[r-1<<4];if(b<3)if(e.#x[r]=1,b==2)for(let p=0;p{e.#s[r*u.rpn+3]=o+40},()=>{e.#s[r*u.rpn+1]=o+14},()=>{e.#s[r*u.rpn]=o},!1,()=>{e.#e[u.cc*r+d[91]]=o?127:0},!1,()=>{e.#e[u.cc*r+d[7]]=o},()=>{e.#e[u.cc*r+d[10]]=Math.ceil(o*9.05)}][h]||(()=>{}))()})}).add([22,18,1],(t,a,i)=>{e.switchMode("mt32");let r=e.chRedir(i,a,!0)}).add([22,18,2],(t,a,i)=>{e.switchMode("mt32");let r=e.chRedir(i,a,!0),s=t[1]+(t[0]<<7);s<10&&(e.#x[r]=1),t.subarray(2).forEach((o,l)=>{let h=l+s;h<14&&(e.#k[(r-1)*u.cmt+h]=o)})}).add([22,18,3],(t,a,i)=>{if(e.switchMode("mt32"),t[0]){let r=t[1]-16}else{let r=t[1];t.subarray(2).forEach((s,o)=>{let l=o+r;e.#A[l]=s;let h=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let p=e.#A[h-1<<4];if(p<3)if(e.#x[h]=1,p==2)for(let $=0;${e.#s[h*u.rpn+3]=s+40},()=>{e.#s[h*u.rpn+1]=s+14},()=>{e.#s[h*u.rpn]=s},!1,()=>{e.#e[u.cc*h+d[91]]=s?127:0},!1,()=>{e.#e[u.cc*h+d[7]]=s},()=>{e.#e[u.cc*h+d[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(t,a,i)=>{e.switchMode("mt32");let r=t[1]+(t[0]<<7);t.subarray(2).forEach((s,o)=>{let l=o+r,h=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(e.#k[(h-1)*u.cmt+b]=s),b<10&&(e.#x[h]=1)})}).add([22,18,5],(t,a,i)=>{e.switchMode("mt32");let r=(t[0]<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=r+o,h=Math.floor(l/8),b=l&7,p=h*8;e.#q[l]=s,([!1,()=>{let $=e.#q[p];if($<3){let y="";if($==2){let w=u.cmt*h;y=`MT-m:${s.toString().padStart(3,"0")}`}else y=e.baseBank.get(0,s+($<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:h}),e.userBank.load(`MSB LSB PRG NME +000 127 ${h} ${y}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(t,a,i)=>{e.switchMode("mt32");let r=((t[0]&1)<<7)+t[1];t.subarray(2).forEach((s,o)=>{let l=r+o;l>1)*u.cmt+l]=s)})}).add([22,18,16],(t,a,i)=>{e.switchMode("mt32");let r=t[1],s=!1,o=function(l,h){e.#f[h-12]=l,s=!0};t.subarray(2).forEach((l,h)=>{let b=h+r;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,o,o,o,o,o,o,o,o,o,()=>{e.#b=l}][b]||(()=>{}))(l,h)}),s&&e.buildRchTree()}).add([22,18,32],t=>{e.switchMode("mt32");let a=t[1],i=" ".repeat(a);t.subarray(2).forEach(r=>{r>31&&(i+=String.fromCharCode(r))}),e.#T=i.padStart(20," "),e.#G=Date.now()+3200}).add([22,18,82],(t,a)=>{let i=e.chRedir(0,a,!0);for(let r=0;r<16;r++)e.#h.ano(i+r),r&&r<10&&(e.#r[i+r]=_[r-1]);console.info("MT-32 alt reset complete.")}),this.#U.add([66,0],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,a)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#n=!1}).add([66,18,0,0],(t,a)=>{let i=t[0];switch(i){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#n=!1;break}case 125:{console.info(`NS5R drum setup reset: ${t}`);break}default:if(i<10){let r=[0,0,0,0],s=(o,l)=>{r[l]=o};if(t.subarray(1).forEach((o,l)=>{[s,s,s,s,()=>{e.#b=o*129/16383*100},()=>o-64,()=>o-64,()=>{},()=>{},()=>{}][i+l]()}),t[0]<4){let o=0;r.forEach(l=>{o=o<<4,o+=l}),o-=1024}}}}).add([66,18,0,1],(t,a)=>{}).add([66,18,0,2],(t,a)=>{}).add([66,18,1],(t,a)=>{let i=e.chRedir(t[0],a,!0),r=i*u.cc,s=t[1],o=`NS5R CH${i+1} `;t.subarray(2).forEach((l,h)=>{let b=s+h;b<3?[()=>{e.#e[r+d[0]]=l||121},()=>{e.#e[r+d[32]]=l},()=>{e.#r[i]=l}][b]():b<8||(b<14?[()=>{let p=e.chRedir(l,a,!0);e.#f[i]=p,i!=p&&(e.buildRchTree(),console.info(`${o}receives from CH${p+1}`))},()=>{e.#E[i]=+!l},()=>{e.setChType(i,l,g.ns5r),console.debug(`${o}type: ${O[l]}`)},()=>{e.#s[u.rpn*i+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{e.#e[r+d[7]]=l},()=>{e.#e[r+d[11]]=l},()=>{},()=>{},()=>{e.#e[r+d[10]]=l||128},()=>{},()=>{},()=>{e.#e[r+d[93]]=l},()=>{e.#e[r+d[91]]=l},()=>{e.#e[r+d[76]]=l},()=>{e.#e[r+d[77]]=l},()=>{e.#e[r+d[78]]=l},()=>{e.#e[r+d[74]]=l},()=>{e.#e[r+d[71]]=l},()=>{e.#e[r+d[73]]=l},()=>{e.#e[r+d[75]]=l},()=>{e.#e[r+d[72]]=l}][b-16]():b<112||b<114&&[()=>{e.#e[r+d[5]]=l},()=>{e.#e[r+d[65]]=l}][b-112]()))})}).add([66,18,8,0],(t,a)=>{let i=t[0];if(i<32)e.setLetterDisplay(t.subarray(1,33),"NS5R letter display");else{let r=i-32;e.#C=Date.now()+3200,e.#p=10,e.#$.fill(0);let s=t.subarray(1),o=4;s.forEach(function(l,h){let b=h+r,p=b>>4,$=b&15;if(b<80){let y=p>3,w=0,x=p0;)e.#$[$*32+p*7+(x-w)]=y&1,y=y>>1,w++}})}}).add([66,52],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1;let i="";m(t,(r,s)=>{s<8?(r>31&&(i+=String.fromCharCode(r)),s==7&&(e.aiEfxName=i)):s<10&&e.setEffectType(s-8,44,r)})}).add([66,53],(t,a)=>{e.switchMode("ns5r",!0),e.#n=!1,m(t,function(i,r){switch(!0){case r<2944:{let s=e.chRedir(Math.floor(r/92),a,!0),o=s*u.cc;switch(r%92){case 0:{e.#e[o+d[0]]=i||121;break}case 1:{e.#e[o+d[32]]=i;break}case 2:{e.#r[s]=i,i>0&&(e.#c[s]=1);break}case 3:{let l=e.chRedir(i,a,!0);e.#f[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{e.#s[s*u.rpn+3]=i<40||i>88?i+(i>63?-192:64):i;break}case 9:case 10:{e.#e[o+d[7]]=i;break}case 11:{e.#e[o+d[11]]=i;break}case 14:{e.#e[o+d[10]]=i||128;break}case 19:{e.#e[o+d[93]]=i;break}case 20:{e.#e[o+d[91]]=i;break}case 84:{e.#e[o+d[65]]=i;break}case 85:{e.#e[o+d[5]]=i;break}}break}case r<3096:break;case r<3134:break;case r<8566:break}})}).add([66,54],(t,a)=>{e.switchMode("ns5r",!0);let i="",r=80,s=0,o=0,l="MSB PRG LSB NME";m(t,function(h,b){let p=b%158;switch(!0){case p<10:{h>31&&(i+=String.fromCharCode(h));break}case p==11:{r=h&127;break}case p==12:{o=h&127;break}case p==13:{l+=` +${r} ${s} ${o} ${i.trim().replace("Init Voice","")}`,s++,i="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(t,a)=>{e.switchMode("ns5r",!0);let i="",r=88,s=0,o=0,l="MSB PRG LSB NME";m(t,function(h,b){let p=b%126;switch(!0){case p<10:{h>31&&(i+=String.fromCharCode(h));break}case p==11:break;case p==12:break;case p==13:{l+=` +${r} ${s} ${o} ${i.trim().replace("Init Combi","")}`,s++,i="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let a=new Uint8Array(5760);m(t,(i,r,s)=>{if(r<720)for(let o=0;o<8;o++)a[r*8+o]=i>>7-o&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(t,a,i)=>{e.#U.run([66,...t],a,i)}),this.#F.add([16,0,8,0],(t,a,i)=>{let r=(t[2]<<4)+t[3],s="K11 ";([()=>{e.switchMode("k11",!0),e.#n=!1,e.#y=r?4:0,console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,r),console.debug(`${s}reverb type: ${r}`)},()=>{console.debug(`${s}reverb time: ${r}`)},()=>{console.debug(`${s}reverb time: ${r}`)},()=>{console.debug(`${s}reverb predelay: ${r}`)},()=>{console.debug(`${s}reverb predelay: ${r}`)},()=>{console.debug(`${s}depth high: ${r}`)},()=>{console.debug(`${s}depth high: ${r}`)},()=>{console.debug(`${s}depth low: ${r}`)},()=>{console.debug(`${s}depth low: ${r}`)}][t[0]]||(()=>{}))()}).add([16,0,8,1],(t,a,i)=>{let r=e.chRedir(t[1],a,!0),s=u.cc*r,o=u.rpn*r,l=(t[3]<<4)+t[4],h=`K11 CH${r+1} `;([()=>{l<128?(e.setChType(r,e.CH_MELODIC,g.k11),e.#e[s+d[0]]=0,e.#r[r]=l):(e.setChType(r,e.CH_DRUMS,g.k11),e.#r[r]=l-128)},()=>{let b=e.chRedir(l,a,!0);e.#f[r]=b,r!=b&&(e.buildRchTree(),console.info(`${h}receives from CH${b+1}`))},()=>{e.#e[s+d[7]]=l},()=>{e.#c[r]=l},()=>{e.#e[s+d[10]]=l},()=>{e.#s[o+3]=l+40},()=>{e.#s[o+1]=l>>1,e.#s[o+2]=l&1},()=>{e.#e[s+d[91]]=l?127:0},()=>{},()=>{e.#e[s+d[74]]=l},()=>{e.#e[s+d[73]]=l},()=>{e.#e[s+d[72]]=l}][t[0]]||(()=>{}))()}).add([16,0,9,0],(t,a,i)=>{let r=(t[2]<<4)+t[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${r}`)},()=>{console.debug(`${s}reverb time: ${r}`)},()=>{console.debug(`${s}reverb predelay: ${r}`)},()=>{console.debug(`${s}depth high: ${r}`)},()=>{console.debug(`${s}depth low: ${r}`)}][t[0]]||(()=>{}))()}).add([16,0,9,3],(t,a,i)=>{let r=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc;[()=>{r<128?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=0,e.#r[s]=r):r<160?(e.setChType(s,e.CH_MELODIC,g.k11),e.#e[o+d[0]]=0,e.#e[o+d[32]]=7,e.#r[s]=r-100):(e.setChType(s,e.CH_DRUMS,g.k11),e.#e[o+d[0]]=122,e.#e[o+d[32]]=0,e.#r[s]=r-160)},()=>{let l=e.chRedir(r,a,!0);e.#f[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][t[0]]()}).add([16,0,9,4],(t,a,i)=>{let r=(t[2]<<4)+t[3],s=e.chRedir(t[1],a,!0),o=s*u.cc,l=s*u.rpn,h=`GMLX CH${s+1} `;[()=>{e.#c[s]=r},()=>{e.#e[o+d[7]]=r},()=>{e.#e[o+d[10]]=r},()=>{e.#e[o+d[91]]=r?127:0},()=>{e.#s[l+3]=r+40},()=>{e.#s[l+1]=r},()=>{e.#s[l]=r},()=>{}][t[0]]()}),this.#K.add([66,93,64],(t,a,i)=>{let r=t[2];switch(t[0]){case 0:{switch(t[1]){case 4:{e.#b=r*129/16383*100;break}case 5:{r-64;break}case 6:{console.debug(`SG global reverb: ${r?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(t[1]){case 48:{console.debug(`SG reverb type: ${L[r]}`);break}}break}default:if(t[0]>>4==1){let s=e.chRedir(t[0]&15,a,!0);if(t[1]==2){let o=e.chRedir(r,a,!0);e.#f[s]=o,s!=o&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${o+1}`))}else t[1]==19&&(e.#e[u.cc*s+d[7]]=r)}else console.warn(`Unknown AKAI SG SysEx: ${t}`)}}),this.#V.add([9],(t,a,i)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][t[0]]||"off"}`)}),this.#w.add([127,0],(t,a,i)=>{e.switchMode("motif");let r=new Uint8Array([127,1,...t]);e.#w.run(r,a,i)}).add([127,1,0,0],(t,a,i)=>{e.switchMode("s90es");let r="S90/Motif ES system ",s=t[0];t.subarray(1).forEach((o,l)=>{([()=>{e.#b=o*12900/16383}][s+l]||(()=>{console.info(`Unrecognized ${r}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(t,a,i)=>{e.switchMode("s90es");let r="S90/Motif ES bulk header ",s=[];s[95]=(o,l,h)=>{console.debug(`${r}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${r}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,0,15],(t,a,i)=>{e.switchMode("s90es");let r="S90/Motif ES bulk footer ",s=[];s[95]=(o,l,h)=>{console.debug(`${r}multi edit buffer: ${o[1]}`)},(s[t[0]]||(()=>{console.info(`Unrecognized ${r}ID: ${t[0]}.`)}))(t.subarray(1))}).add([127,1,0,58,55],(t,a,i)=>{e.switchMode("s90es");let r=e.chRedir(t[0],a,!0),s=u.cc*r,o=t[1],l=`S90/Motif ES bulk CH${r<16?r+1:"U"+(r-95)} `;console.debug(l,t),!(t[0]>15)&&t.subarray(2).forEach((h,b)=>{([()=>{e.#e[s+d[0]]=h},()=>{h&&(e.#c[r]=1),e.#e[s+d[32]]=h,e.#a[r]=this.setChType(r,[32,40].indexOf(h)>-1?this.CH_DRUMS:this.CH_MELODIC,this.#t,!0)},()=>{h&&(e.#c[r]=1),e.#r[r]=h},()=>{let p=e.chRedir(h,a,!0);e.#f[r]=p,r!=p&&(e.buildRchTree(),console.info(`${l}receives from CH${p+1}`))},()=>{e.#E[r]=h?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{e.#e[s+d[7]]=h},()=>{e.#e[s+d[10]]=h},!1,!1,!1,()=>{e.#e[s+d[91]]=h},()=>{e.#e[s+d[93]]=h},()=>{e.#e[s+d[94]]=h},()=>{e.#e[s+d[128]]=h},()=>{},()=>{e.#e[s+d[74]]=h},()=>{e.#e[s+d[71]]=h},!1,()=>{e.#e[s+d[65]]=h},()=>{e.#e[s+d[5]]=h},()=>{}][o+b]||(()=>{}))()})}).add([127,1,54,16],(t,a,i)=>{e.switchMode("s90es");let r=t[0];t.subarray(1).forEach((s,o)=>{let h=`S90/Motif ES EQ${(o>>2)+1} `;([()=>{let b=s-64},()=>{let b=T[s]},()=>{let b=s/10},()=>{let b=s}][r+o&3]||(()=>{}))()})}),this.#m.add([0,72,18,0,0,0,0],(t,a,i)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}};export{Ie as OctaviaDevice,u as allocated,d as ccToPos,oe as dnToPos}; diff --git a/dist/state_skim.mjs b/dist/state_skim.mjs index 1027aa09..5d246fb6 100644 --- a/dist/state_skim.mjs +++ b/dist/state_skim.mjs @@ -1,4 +1,4 @@ -var U=function(e,t){let s=Math.min(e.length,t.length),i=e.slice(0,s),r=t.slice(0,s),n=0,a=0;for(;a0){let i=this.pool.length,r=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(n==i)n-=r;else{let c=U(t,this.pool[n]);switch(c){case 0:{a=0;break}case 1:{n+r<=i&&(n+=r);break}case-1:{n!=0&&(n-=r);break}default:console.warn(`Unexpected result ${c}.`)}}r=r>>1,a--}let l=!0;if(n>=this.pool.length)l=!1;else{let c=this;this.pool[n].forEach(function(u,f,b){l&&u!=t[f]&&(l=!1)}),!l&&U(t,this.pool[n])>0&&n++}return l||s?n:-1}else return s?0:-1},this.add=function(t,s){return t.data=s,this.pool.splice(this.point(t,!0),0,t),this},this.default=function(t){console.warn(`No match in "${this.name||"(unknown)"}" for "${t}". Default action not defined.`)},this.get=function(t){let s=this.point(t);if(s>-1)return this.pool[s].data;this.default(t)},this.run=function(t,...s){let i=this.point(t);i>-1?t.subarray?this.pool[i].data(t.subarray(this.pool[i].length),...s):this.pool[i].data(t.slice(this.pool[i].length),...s):this.default(t,...s)}};var T=class{#t={};addEventListener(e,t){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(t)}removeEventListener(e,t){if(this.#t[e]){let s=this.#t[e].indexOf(t);s>-1&&this.#t[e].splice(s,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,t){let s=new Event(e),i=this;s.data=t,this.#t[e]?.length>0&&this.#t[e].forEach(function(r){try{r?.call(i,s)}catch(n){console.error(n)}}),this[`on${e}`]&&this[`on${e}`](s)}};var P=class{#t={};context;set(e,t){this.#t[e]=t}has(e){return!!this.#t[e]}async read(e,t){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,t)}};var K=function(e,t){let s=!0;return t.forEach((i,r)=>{s=s&&e[r]==i}),s},N=function(e){let t=0;return e.forEach(s=>{t*=256,t+=s}),t},M=new TextDecoder,G=new P;G.set("s7e",async function(e){let t=new Uint8Array(await e.slice(0,65536).arrayBuffer()),s="MSB LSB PRG NME",i=[0,0,0,0],r=32,n=0,a=0,l=!0,c=[],u=0;for(;l;){let f=t.subarray(n);([()=>{M.decode(f.subarray(0,4))=="YSFC"?(n+=80,a=1):n++},()=>{if(K(f.subarray(0,4),i))c.forEach((b,g,d)=>{let p=N(t.subarray(b.start+4,b.start+8));b.length=p}),a=2;else{let b=M.decode(f.subarray(0,4)),g=N(f.subarray(4,8));c.push({type:b,start:g}),n+=8}},()=>{let b=c[u],g=t.subarray(b.start,b.start+b.length),d=32;switch(b.type){case"ENVC":{let p=r;for(;p0){let i=this.pool.length,r=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(n==i)n-=r;else{let c=U(t,this.pool[n]);switch(c){case 0:{a=0;break}case 1:{n+r<=i&&(n+=r);break}case-1:{n!=0&&(n-=r);break}default:console.warn(`Unexpected result ${c}.`)}}r=r>>1,a--}let l=!0;if(n>=this.pool.length)l=!1;else{let c=this;this.pool[n].forEach(function(u,f,b){l&&u!=t[f]&&(l=!1)}),!l&&U(t,this.pool[n])>0&&n++}return l||s?n:-1}else return s?0:-1},this.add=function(t,s){return t.data=s,this.pool.splice(this.point(t,!0),0,t),this},this.default=function(t){console.warn(`No match in "${this.name||"(unknown)"}" for "${t}". Default action not defined.`)},this.get=function(t){let s=this.point(t);if(s>-1)return this.pool[s].data;this.default(t)},this.run=function(t,...s){let i=this.point(t);i>-1?t.subarray?this.pool[i].data(t.subarray(this.pool[i].length),...s):this.pool[i].data(t.slice(this.pool[i].length),...s):this.default(t,...s)}};var T=class{#t={};addEventListener(e,t){this.#t[e]||(this.#t[e]=[]),this.#t[e].unshift(t)}removeEventListener(e,t){if(this.#t[e]){let s=this.#t[e].indexOf(t);s>-1&&this.#t[e].splice(s,1),this.#t[e].length<1&&delete this.#t[e]}}dispatchEvent(e,t){let s=new Event(e),i=this;s.data=t,this.#t[e]?.length>0&&this.#t[e].forEach(function(r){try{r?.call(i,s)}catch(n){console.error(n)}}),this[`on${e}`]&&this[`on${e}`](s)}};var P=class{#t={};context;set(e,t){this.#t[e]=t}has(e){return!!this.#t[e]}async read(e,t){if(!this.has(e))throw new Error(`No decoder registered for "${e}"`);return await this.#t[e].call(this.context||this,t)}};var K=function(e,t){let s=!0;return t.forEach((i,r)=>{s=s&&e[r]==i}),s},N=function(e){let t=0;return e.forEach(s=>{t*=256,t+=s}),t},M=new TextDecoder,B=new P;B.set("s7e",async function(e){let t=new Uint8Array(await e.slice(0,65536).arrayBuffer()),s="MSB LSB PRG NME",i=[0,0,0,0],r=32,n=0,a=0,l=!0,c=[],u=0;for(;l;){let f=t.subarray(n);([()=>{M.decode(f.subarray(0,4))=="YSFC"?(n+=80,a=1):n++},()=>{if(K(f.subarray(0,4),i))c.forEach((b,g,d)=>{let p=N(t.subarray(b.start+4,b.start+8));b.length=p}),a=2;else{let b=M.decode(f.subarray(0,4)),g=N(f.subarray(4,8));c.push({type:b,start:g}),n+=8}},()=>{let b=c[u],g=t.subarray(b.start,b.start+b.length),d=32;switch(b.type){case"ENVC":{let p=r;for(;p=c.length&&(a=3,l=!1)}][a]||(()=>{l=!1}))()}return s});var F=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]);var X=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),V={};`hi*, @@ -138,9 +138,9 @@ o,お ~, ^, _,`.split(` -`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Ge={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[2]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d="DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d="VL";break}case 98:{d="SG";break}case 100:{d="AN";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` -`).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],I=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],B={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},H=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#B=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#H=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],H[i][0]),H[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#G.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#I.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#G;#I;#J;buildRchTree(){let e=[];this.#B.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG -0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#H.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#B.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#H.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=I[0][s],this.#u=I[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${B[e.type]?B[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(e=>{let t=e.split(",");V[t[0]]=t[1]});var z=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"];var R=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],v=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19];var q={};z.forEach((e,t)=>{q[e]=t});var Q={length:v.length};v.forEach((e,t)=>{Q[e]=t});var Y={length:R.length};R.forEach((e,t)=>{Y[e]=t});var Be={ch:128,cc:v.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:R.length,dnc:128,efx:7};var W=["MSB","PRG","LSB"],O=function(e){let t=Math.floor(e/10),s=e%10;return`${t.toString(16)}${s}`},x=class{#t;strictMode=!1;get(e=0,t=0,s=0,i){let r=[e,t,s],n,a=Array.from(arguments);switch(i){case"xg":{switch(e){case 0:{s==126?a[2]=125:s==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{s==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{s==126&&(a[2]=0);break}}break}case"gs":{e==0&&s<5?a[2]=0:e>125&&s<5&&s!=2&&(a[2]=e,a[0]=0);break}case"sd":{e==96?a[0]=121:e>96&&e<100?a[2]|=16:e==104&&(a[0]=120);break}case"sg":{e==8&&s==0&&(a[2]=5);break}case"s90es":{s<8?a[2]+=17:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{s<8?a[2]+=28:s<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let l=" ",c="M",u=0,f=0;switch(a[0]){case 0:{a[2]==127?c="MT-a":a[2]==126?c="MT-b":a[2]==7?c="GM-k":a[2]==5?c="SG-a":a[2]==4?c="SP-l":a[2]==0||i=="gs"&&a[2]<5?c="GM-a":(c="y",u=3);break}case 8:{i=="sg"?c="GM-s":c="r:";break}case 48:{c=`yM${(a[2]>>3).toString().padStart(2,"0")}`,u=1;break}case 56:{c="GM-b";break}case 61:case 120:{c="rDrm";break}case 62:{c="kDrm";break}case 63:{if(a[2]<17){let p=a[2];c=p<10?"kP:":"kC:",c+=p%10}else a[2]<34?c=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:c="Ds";break}case 64:{c="ySFX";break}case 67:{c="DX:S";break}case 80:case 81:case 82:case 83:{c=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{c=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{c=`${["DR","PC"][a[2]]}-d`;break}case 96:{c=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),u=3;break}case 97:{c="VL:",u=3,f=112;break}case 98:{c="SG-a";break}case 99:{c="DX",a[2]>63&&(f=63),u=3;break}case 100:{c="AN",a[2]>63&&(f=63),u=3;break}case 121:{c=`GM-${a[2]?"":"a"}`,u=3;break}case 122:{c="lDrm";break}case 126:{c="yDrS";break}case 127:{a[2]==127?c="rDrm":c="yDrm";break}default:a[0]<48?c="r:":c="M"}c.length<4&&(c+=`${[e,s,a[0],a[2]][u]-f}`.padStart(4-c.length,"0")),i=="xg"&&e==16&&(n=`Voice${(s*128+t+1).toString().padStart(3,"0")}`,l=" ");let b=[a[0],a[1],a[2]];for(;!(n?.length>=0);)n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n||(this.strictMode?(n="",l="?"):this.#t[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):(a[2]--,l="^"):e==48?(a[0]=0,a[2]=0,l="!"):e==62?(a[1]--,l=" ",a[1]<1&&!n?.length&&(a[0]=0,l="!")):e<63?a[0]==0?(a[2]=0,l="^"):a[2]<1?(a[0]=0,l="*"):a[2]--:e==80?(n=`PrgU:${t.toString().padStart(3,"0")}`,l="!"):e==88?(n=`CmbU:${t.toString().padStart(3,"0")}`,l="!"):e==121?(n=`GM2Vox0${s}`,l="#"):e==122?(a[1]==32?a[1]==0:a[1]%=7,n=this.#t[a[1]||0][(a[0]<<7)+a[2]],n?l=" ":(n="",l="*")):a[1]==0?(n=`${e.toString().padStart(3,"0")} ${t.toString().padStart(3,"0")} ${s.toString().padStart(3,"0")}`,l="!"):a[0]==0?(a[2]=0,l="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,l="!"):(a[0]=0,l="?"));let g=[a[0],a[1],a[2]];(i=="gs"||i=="ns5r")&&l=="^"&&(l=" "),e==127&&l=="^"&&(l=" "),l!=" "&&self.debugMode&&(n="");let d="??";switch(a[0]){case 0:{a[2]==0?d="GM":a[2]==5||a[2]==7?d="KG":a[2]<126?d="XG":a[2]==127&&(d="MT");break}case 48:{d="MU";break}case 56:{d="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{d="AI";break}case 62:case 82:case 90:{d="XD";break}case 63:{a[2]<17?d="KR":a[2]<34?d="ES":d="DS";break}case 64:case 126:{d="XG";break}case 67:case 99:{d=a[2]>>4==1?"SD":"DX";break}case 81:{d="RW";break}case 95:{d=["DR","PC"][a[2]];break}case 96:{d=a[2]==106?"AP":"PF";break}case 97:{d=a[2]>>4==1?"SD":"VL";break}case 98:{d=a[2]>>4==1?"SD":"SG";break}case 100:{d="AN";break}case 104:case 105:case 106:case 107:{d="SD";break}case 120:{d="GS";break}case 121:{d=a[2]?"G2":"GM";break}case 122:{d="KG";break}case 127:{d=a[2]==127?"MT":t==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&i=="xg"?d="XG":d="GS")}return{name:n||`${O(e||0)} ${O(t||0)} ${O(s||0)}`,iid:b,eid:g,sid:r,ending:l,sect:c,standard:d}}async load(e,t,s){let i=this,r=[],n=0,a=0;e.split(` +`).forEach(function(l,c){let u=l.split(" "),f=[];c==0?u.forEach(function(b,g){r[W.indexOf(b)]=g}):u.forEach(async function(b,g){g>2?(i.#t[f[r[1]]]=i.#t[f[r[1]]]||[],(!i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]?.length||t)&&(i.#t[f[r[1]]][(f[r[0]]<<7)+f[r[2]]]=u[3],n++),a++):f.push(parseInt(u[g]))})}),t||console.debug(`Map "${s||"(internal)"}": ${a} total, ${n} loaded.`)}clearRange(e){let t=e.prg!=null?e.prg.constructor==Array?e.prg:[e.prg,e.prg]:[0,127],s=e.msb!=null?e.msb.constructor==Array?e.msb:[e.msb,e.msb]:[0,127],i=e.lsb!=null?e.lsb.constructor==Array?e.lsb:[e.lsb,e.lsb]:[0,127];for(let r=s[0];r<=s[1];r++){let n=r<<7;for(let a=i[0];a<=i[1];a++){let l=n+a;for(let c=t[0];c<=t[1];c++)delete this.#t[c][l]}}}init(){this.#t=[];for(let e=0;e<128;e++)this.#t.push([""])}async loadFiles(...e){this.init();let t=this;e.forEach(async function(s,i){try{await fetch(`./data/bank/${s}.tsv`).then(function(r){return r.text()}).then(r=>{t.load(r,!1,s)})}catch{console.error(`Failed loading "${s}.tsv".`)}})}constructor(...e){this.loadFiles(...e)}};var m=["?","gm","gs","xg","g2","mt32","ns5r","ag10","x5d","05rw","krs","k11","sg"],H=[[0,0,0,0,121,0,0,56,82,81,63,0,0],[0,0,4,0,0,127,0,0,0,0,0,0,0]],S=[120,127,120,127,120,127,61,62,62,62,120,122,122],J=[0,3,81,84,88],I={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},D={0:0,1:1,2:3,5:4},G=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],L=[36,37];var A=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,12,13,16,17,18,19],Z=[33,99,100,32,102,8,9,10];var k={};m.forEach((e,t)=>{k[e]=t});var h={length:A.length};A.forEach((e,t)=>{h[e]=t});var E=function(){return!!self.Bun||self.debugMode||!1},j=function(e){let t=[],s=0;return e?.forEach(function(i,r){i==247?t.push(e.subarray(s,r)):i==240&&(s=r+1)}),t.length||t.push(e.subarray(0)),E(),t},_=function(e,t="",s="",i=2){return e?`${t}${e.toString().padStart(i,"0")}${s}`:""},o={ch:128,cc:A.length,nn:128,pl:512,tr:256,cmt:14,rpn:6},Ve=class extends T{#t=0;#m=0;#p=0;#g=new Array(11);get#h(){return this.#g[this.#m]}set#h(e){this.#g[this.#m]=e}#$=new Uint8Array(o.ch);#I=new Uint8Array(o.ch);#e=new Uint8ClampedArray(o.ch*o.cc);#y=new Uint8ClampedArray(o.ch);#l=new Uint8ClampedArray(o.ch*o.nn);#D=new Uint8Array(o.ch);#n=new Uint16Array(o.pl);#f=new Uint8Array(o.pl);#C=new Int16Array(o.ch);#d=new Uint8Array(o.ch);#x=0;#o=new Uint8Array(o.ch*o.rpn);#A=new Int8Array(o.ch*L.length);#U=new Uint8Array(o.ch);#X=new Uint8Array(128);#G=new Uint8Array(o.cmt*8);#V=new Uint8Array(1024);#L=new Uint8Array(o.cmt*64);#E=0;#u=0;#T=100;#w=0;#_=500;#z=0;#a="";#b=0;#q=0;#Q=!0;#i=!1;#K;#Y=new Uint8Array(2);#s=[];#k=new Uint8Array(o.ch);#S=new Uint8Array(o.tr);baseBank=new x("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross");userBank=new x("gm");initOnReset=!1;chRedir(e,t,s){if(this.#S[t])return(this.#S[t]-1)*16+e;if([k.gs,k.ns5r].indexOf(this.#t)>-1){if(s==1)return e;let i=0,r=!0;for(;r;)this.#k[e+i]==0?(this.#k[e+i]=t,console.debug(`Assign track ${t} to channel ${e+i+1}.`),r=!1):this.#k[e+i]==t?r=!1:(i+=16,i>=128&&(i=0,r=!1));return e+i}else return e}#c=[];#R;#r={nOff:(e,t)=>{let s=e*128+t,i=this.#n.lastIndexOf(s);i>-1&&(this.#e[o.cc*e+h[64]]>63&&!this.config?.disableCc64?this.#f[i]=4:(this.#n[i]=0,this.#l[s]=0,this.#f[i]=0))},nOn:(e,t,s)=>{let i=e*128+t,r=0;for(this.#D[e]&&this.#r.ano(e);this.#f[r]>0&&this.#n[r]!=i;)r++;r{},cAt:(e,t)=>{},hoOf:e=>{this.#f.forEach((t,s)=>{if(t==4){let i=this.#n[s],r=i>>7;e==r&&(this.#f[s]=0,this.#n[s]=0,this.#l[i]=0)}})},soOf:e=>{},ano:e=>{this.#n.forEach((t,s,i)=>{let r=t>>7,n=t&127;t==0&&this.#l[0]==0||r==e&&this.#r.nOff(r,n)})}};#F={8:function(e){let t=e.channel,s=e.data[0];this.#r.nOff(t,s)},9:function(e){let t=e.channel;this.#$[t]=1;let s=e.data[0],i=e.data[1];i>0?this.#r.nOn(t,s,i):this.#r.nOff(t,s)},10:function(e){let s=e.channel*128+e.data[0];this.#n.indexOf(s)>-1&&(this.#l[s]=data[1])},11:function(e){let t=e.channel;this.#$[t]=1;let s=t*o.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{this.#r.ano(t),this.#C[t]=0;let i=t*o.cc;this.#e[i+h[1]]=0,this.#e[i+h[5]]=0,this.#e[i+h[64]]=0,this.#e[i+h[65]]=0,this.#e[i+h[66]]=0,this.#e[i+h[67]]=0,this.#e[i+h[11]]=127,this.#e[i+h[101]]=127,this.#e[i+h[100]]=127,this.#e[i+h[99]]=127,this.#e[i+h[98]]=127;return}case 123:{this.#r.ano(t);return}case 124:{this.#r.ano(t);return}case 125:{this.#r.ano(t);return}case 126:{this.#D[t]=1,this.#r.ano(t);return}case 127:{this.#D[t]=0,this.#r.ano(t);return}}if(h[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(e.data[0]){case 0:{if(E()&&console.debug(`${m[this.#t]}, CH${t+1}: ${e.data[1]}`),this.#t==0)e.data[1]<48?(this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg");else if(this.#t==k.gs)e.data[1]<56&&this.#e[s]>119&&(e.data[1]=this.#e[s],e.data[1]=120,console.debug(`Forced channel ${t+1} to stay drums.`));else if(this.#t==k.gm)e.data[1]<48?this.#e[s]>119&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${t+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0);else if(this.#t==k.x5d){if(e.data[1]>0&&e.data[1]<8)this.switchMode("05rw",!0);else if(e.data[1]==56){let i=0;for(let r=0;r<16;r++){let n=this.#e[o.cc*r];(n==56||n==62)&&i++}i>14&&this.switchMode("ag10",!0)}}break}case 6:{if(this.#x){let i=this.#e[s+h[99]],r=this.#e[s+h[98]];if(i==1){let n=Z.indexOf(r);if(n>-1)this.#e[s+h[71+n]]=e.data[1],E()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+n}.`);else{let a=L.indexOf(r);a>-1&&(this.#A[t*10+a]=e.data[1]-64),E()&&console.debug(`CH${t+1} voice NRPN ${r} commit`)}}}else{let i=D[this.#e[s+h[100]]];this.#e[s+h[101]]==0&&i!=null&&(E()&&console.debug(`CH${t+1} RPN 0 ${this.#e[s+h[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],G[i][0]),G[i][1]),this.#o[t*o.rpn+i]=e.data[1])}break}case 38:{this.#x||this.#e[s+101]==0&&D[this.#e[s+100]]!=null&&(this.#o[t*o.rpn+D[this.#e[s+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&this.#r.hoOf(t);break}case 66:{console.debug(`Sostenuto pedal: ${e.data[1]}`);break}case 98:case 99:{this.#x=1;break}case 100:case 101:{this.#x=0;break}}this.#e[s+h[e.data[0]]]=e.data[1]}},12:function(e){let t=e.channel;this.#$[t]=1,this.#y[t]=e.data,this.#U[t]=0,E()&&console.debug(`T:${e.track} C:${t} P:${e.data}`)},13:function(e){let t=this,s=e.channel;this.#n.forEach(function(i){let r=i>>7;s==r&&(t.#l[i]=e.data)})},14:function(e){let t=e.channel;this.#C[t]=e.data[1]*128+e.data[0]-8192},15:function(e){j(e.data).forEach(t=>{let s=t[0],i=t[1];(this.#W[s]||function(){console.debug(`Unknown manufacturer ${s}.`)})(i,t.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){if((this.#c[e.meta]||function(s,i,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&(this.#w=0),J.indexOf(e.meta)>-1)return e.reply="meta",e;E()&&console.debug(e)}};#W={64:(e,t,s)=>{this.#B.run(t,s,e)},65:(e,t,s)=>{if(t[0]<16)this.#M.run(t,s,e),console.warn("Unknown device SysEx!");else{let i=t[t.length-1],r=gsChecksum(t.subarray(2,t.length-1));i==r?this.#M.run(t.subarray(0,t.length-1),s,e):console.warn(`Bad GS checksum ${i}. Should be ${r}.`)}},66:(e,t,s)=>{this.#O.run(t,s,e)},67:(e,t,s)=>{this.#v.run(t,s,e)},68:(e,t,s)=>{this.#J.run(t,s,e)},71:(e,t,s)=>{this.#H.run(t,s,e)},126:(e,t,s)=>{this.#P.run(t,s,e)},127:(e,t,s)=>{this.switchMode("gm"),this.#N.run(t,s,e)}};#P;#N;#v;#M;#O;#B;#H;#J;buildRchTree(){let e=[];this.#I.forEach((t,s)=>{e[t]?.constructor||(e[t]=[]),e[t].push(s)}),this.#K=e}getActive(){let e=this.#$.slice();return this.#t==k.mt32,e}getCc(e){let t=e*o.cc,s=this.#e.slice(t,t+o.cc);return s[h[0]]=s[h[0]]||this.#E,s[h[32]]=s[h[32]]||this.#u,s}getCcAll(){let e=this.#e.slice();for(let t=0;t0&&t.set(a,{v:s.#l[i],s:s.#f[r]})}),t}getBitmap(){return{bitmap:this.#h,expire:this.#p}}getLetter(){return{text:this.#a,expire:this.#b}}getMode(){return m[this.#t]}getMaster(){return{volume:this.#T}}getRawStrength(){let e=this;return this.#n.forEach(function(t){let s=Math.floor(t/128);e.#l[t]>e.#d[s]&&(e.#d[s]=e.#l[t])}),this.#d}getStrength(){let e=[],t=this;return this.getRawStrength().forEach(function(s,i){e[i]=Math.floor(s*t.#e[i*o.cc+h[7]]*t.#e[i*o.cc+h[11]]*t.#T/803288)}),e}getRpn(){return this.#o}getNrpn(){return this.#A}getVoice(e,t,s,i){let r=e||this.#E,n=t,a=s||this.#u;m[this.#t]=="ns5r"&&r>0&&r<56&&(a=3);let l=this.userBank.get(r,n,a,i);if(m[this.#t]=="mt32"&&l.name.indexOf("MT-m:")==0){let c=parseInt(l.name.slice(5)),u=c*o.cmt,f="";this.#L.subarray(u,u+10).forEach(b=>{b>31&&(f+=String.fromCharCode(b))}),this.userBank.load(`MSB LSB PRG +0 127 ${n} ${f}`,!0),l.name=f,l.ending=" "}return(l.ending!=" "||!l.name.length)&&(l=this.baseBank.get(r,n,a,i)),l}getChVoice(e){let t=this.getVoice(this.#e[e*o.cc+h[0]],this.#y[e],this.#e[e*o.cc+h[32]],m[this.#t]);if(this.#U[e])switch(this.#t){case k.mt32:t.ending="~",t.name="",this.#G.subarray(14*(e-1),14*(e-1)+10).forEach(s=>{s>31&&(t.name+=String.fromCharCode(s))})}return t}init(e=0){this.dispatchEvent("mode","?"),this.#t=0,this.#E=0,this.#u=0,this.#w=0,this.#$.fill(0),this.#e.fill(0),this.#y.fill(0),this.#l.fill(0),this.#n.fill(0),this.#d.fill(0),this.#C.fill(0),this.#A.fill(0),this.#T=100,this.#s=[],this.#_=500,this.#z=0,this.#b=0,this.#a="",this.#p=0,this.#m=0,this.#h.fill(0),this.#i=!1,this.#q=0,this.#Q=!0,this.#I.forEach(function(t,s,i){i[s]=s}),this.buildRchTree(),e==0&&(this.#k.fill(0),this.#S.fill(0)),this.#e[o.cc*9]=S[0],this.#e[o.cc*25]=S[0],this.#e[o.cc*41]=S[0],this.#e[o.cc*57]=S[0],this.#Y.fill(0),this.#V.fill(0),this.#L.fill(0),this.#X.fill(0),this.#G.fill(0),this.#U.fill(0),this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let t=0;t-1){if(this.#t==0||t){this.#t=s,this.#m=0,this.#E=H[0][s],this.#u=H[1][s];for(let i=0;i-1&&(this.#e[i*o.cc]=S[s]);switch(this.initOnReset,s){case k.mt32:{mt32DefProg.forEach((i,r)=>{let n=r+1;this.#$[n]||(this.#y[n]=i,this.#e[n*o.cc+h[91]]=127)});break}}this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){this.#d.fill(0)}runJson(e){if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),this.#F[e.type].call(this,e);{let t=this.chRedir(e.part,e.track),s=!1;this.#K[t]?.forEach(i=>{e.channel=i,s=!0,this.#F[e.type].call(this,e)}),s||console.warn(`${I[e.type]?I[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${t+1} without any recipient.`)}this.#s.length>100&&this.#s.splice(100,this.#s.length-99)}runRaw(e){}constructor(){super();let e=this;this.#h=new Uint8Array(256),this.#g[10]=new Uint8Array(512),this.#R=new w,this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -148,4 +148,4 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),this.#c[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#i=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#i=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#i=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#i=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#i=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let s=t.slice(2).split(":");switch(s[0]){case"hd":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][r]}: ${i}`)});break}case"ln":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][r]}: ${i}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#i?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#c[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#c[3]=function(t,s){s<1&&this.#w<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#c[4]=function(t,s){this.#s.unshift(`${_(this.#w,""," ")}Instrmnt: ${t}`)},this.#c[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#c[6]=function(t){this.#s.unshift(`${_(this.#w,""," ")}C.Marker: ${t}`)},this.#c[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#c[32]=function(t){this.#w=t[0]+1},this.#c[33]=function(t,s){console.debug(`Track ${s} requests to get assigned to output ${t}.`),e.#S[s]=t+1},this.#c[81]=function(t,s){e.#_=t/1e3},this.#c[127]=function(t,s){e.#R.run(t,s)},this.#R.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#R.add([67,0,1],function(t,s){e.#S[s]=t[0]+1}),this.#P=new w,this.#N=new w,this.#v=new w,this.#M=new w,this.#O=new w,this.#G=new w,this.#I=new w,this.#P.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#i=e.#i||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#N.add([4,1],t=>{e.#T=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#v.add([76,0,0],t=>{switch(t[0]){case 126:{e.switchMode("xg",!0),e.#i=!1,console.info("MIDI reset: XG");break}}}).add([76,6,0],t=>{let s=t[0];s<64?(e.#a=" ".repeat(s),e.#b=Date.now()+3200,t.subarray(1).forEach(function(i){e.#a+=String.fromCharCode(i)}),e.#a=e.#a.padEnd(32," ")):e.#b=Date.now()}).add([76,7,0],t=>{let s=t[0];e.#p=Date.now()+3200,e.#h.fill(0);let i=t.subarray(1);for(let r=0;r>6-f&1,f++})}),this.#v.add([43,7,0],(t,s,i)=>{e.#a=" ".repeat(offset),e.#b=Date.now()+3200,t.subarray(1).forEach(function(r){e.#a+=String.fromCharCode(r)}),e.#a=e.#a.padEnd(32," ")}).add([43,7,1],(t,s,i)=>{e.#p=Date.now()+3200,e.#h.fill(0),t.forEach(function(r,n){let a=Math.floor(n/16),l=n%16,c=(l*3+a)*7,u=7,f=0;for(c-=l*5,a==2&&(u=2);f>6-f&1,f++})}),this.#M.add([66,18,0,0,127],(t,s,i)=>{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#u=3,e.#i=!1,e.#k.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,s,i)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#i=!1,e.#k.fill(0),console.info("MIDI reset: GS");break}}}).add([69,18,16],t=>{switch(t[0]){case 0:{e.#b=Date.now()+3200;let s=t[1];e.#a=" ".repeat(s),t.subarray(2).forEach(function(i){i<128&&(e.#a+=String.fromCharCode(i))});break}case 32:{e.#p=Date.now()+3200,t[1]==0&&(e.#m=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p=Date.now()+3200,e.#g[t[0]-1]?.length||(e.#g[t[0]-1]=new Uint8Array(256));let s=e.#g[t[0]-1],i=t[1];s.fill(0);let r=t.subarray(2);for(let n=0;n>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}}),this.#M.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#i=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,32],t=>{e.switchMode("mt32");let s=t[1],i=" ".repeat(s);t.subarray(2).forEach(r=>{r>31&&(i+=String.fromCharCode(r))}),e.#a=i.padStart(20," "),e.#b=Date.now()+3200}).add([22,18,82],(t,s)=>{let i=e.chRedir(0,s,!0);for(let r=0;r<16;r++)e.#r.ano(i+r),r&&r<10&&(e.#y[i+r]=mt32DefProg[r-1]);console.info("MT-32 alt reset complete.")}),this.#O.add([66,0],(t,s)=>{e.switchMode("ns5r",!0),e.#i=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,s)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#i=!1}).add([66,18,0,0],(t,s)=>{switch(t[0]){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#i=!1;break}}}).add([66,18,8,0],(t,s)=>{}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let s=new Uint8Array(5760);korgFilter(t,(i,r,n)=>{if(r<720)for(let a=0;a<8;a++)s[r*8+a]=i>>7-a&1}),e.dispatchEvent("screen",{type:"ns5r",data:s})}).add([76],(t,s,i)=>{e.#O.run([66,...t],s,i)}),this.#G.add([16,0,8,0],(t,s,i)=>{let r=(t[2]<<4)+t[3],n="K11 ";([()=>{e.switchMode("k11",!0),e.#i=!1,e.#u=r?4:0,console.info("MIDI reset: GMega/K11")}][t[0]]||(()=>{}))()}),this.#I.add([66,93,64],(t,s,i)=>{let r=t[2];switch(t[0]){case 0:{switch(t[1]){case 127:{e.switchMode("sg",!0);break}}break}}})}};export{Ve as OctaviaDevice,o as allocated,h as ccToPos}; +122 006 000 `),this.#c[1]=function(t){switch(t.slice(0,2)){case"@I":{this.#i=!0,this.#s.unshift(`Kar.Info: ${t.slice(2)}`);break}case"@K":{this.#i=!0,this.#s.unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${t.slice(2)}`);break}case"@L":{this.#i=!0,this.#s.unshift(`Language: ${t.slice(2)}`);break}case"@T":{this.#i=!0,this.#s.unshift(`Ka.Title: ${t.slice(2)}`);break}case"@V":{this.#i=!0,this.#s.unshift(`Kara.Ver: ${t.slice(2)}`);break}case"XF":{let s=t.slice(2).split(":");switch(s[0]){case"hd":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][r]}: ${i}`)});break}case"ln":{s.slice(1).forEach((i,r)=>{i.length&&this.#s.unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][r]}: ${i}`)});break}default:this.#s.unshift(`XGF_Data: ${t}`)}break}default:this.#i?t[0]=="\\"?this.#s.unshift(`@ ${t.slice(1)}`):t[0]=="/"?this.#s.unshift(t.slice(1)):this.#s[0]+=t:(this.#s[0]=t,this.#s.unshift(""))}},this.#c[2]=function(t){this.#s.unshift(`Copyrite: ${t}`)},this.#c[3]=function(t,s){s<1&&this.#w<1&&this.#s.unshift(`TrkTitle: ${t}`)},this.#c[4]=function(t,s){this.#s.unshift(`${_(this.#w,""," ")}Instrmnt: ${t}`)},this.#c[5]=function(t){t.trim()==""?this.#s.unshift(""):this.#s[0]+=`${t}`},this.#c[6]=function(t){this.#s.unshift(`${_(this.#w,""," ")}C.Marker: ${t}`)},this.#c[7]=function(t){this.#s.unshift(`CuePoint: ${t}`)},this.#c[32]=function(t){this.#w=t[0]+1},this.#c[33]=function(t,s){console.debug(`Track ${s} requests to get assigned to output ${t}.`),e.#S[s]=t+1},this.#c[81]=function(t,s){e.#_=t/1e3},this.#c[127]=function(t,s){e.#R.run(t,s)},this.#R.default=function(t){console.warn(`Unrecognized sequencer-specific byte sequence: ${t}`)},this.#R.add([67,0,1],function(t,s){e.#S[s]=t[0]+1}),this.#P=new w,this.#N=new w,this.#v=new w,this.#M=new w,this.#O=new w,this.#B=new w,this.#H=new w,this.#P.add([9],t=>{e.switchMode(["gm","?","g2"][t[0]-1],!0),e.#i=e.#i||!1,console.info(`MIDI reset: ${["GM","Init","GM2"][t[0]-1]}`),t[0]==2&&e.init()}),this.#N.add([4,1],t=>{e.#T=((t[1]<<7)+t[0])/16383*100}).add([4,3],t=>((t[1]<<7)+t[0]-8192)/8192).add([4,4],t=>t[1]-64),this.#v.add([76,0,0],t=>{switch(t[0]){case 126:{e.switchMode("xg",!0),e.#i=!1,console.info("MIDI reset: XG");break}}}).add([76,6,0],t=>{let s=t[0];s<64?(e.#a=" ".repeat(s),e.#b=Date.now()+3200,t.subarray(1).forEach(function(i){e.#a+=String.fromCharCode(i)}),e.#a=e.#a.padEnd(32," ")):e.#b=Date.now()}).add([76,7,0],t=>{let s=t[0];e.#p=Date.now()+3200,e.#h.fill(0);let i=t.subarray(1);for(let r=0;r>6-f&1,f++})}),this.#v.add([43,7,0],(t,s,i)=>{e.#a=" ".repeat(offset),e.#b=Date.now()+3200,t.subarray(1).forEach(function(r){e.#a+=String.fromCharCode(r)}),e.#a=e.#a.padEnd(32," ")}).add([43,7,1],(t,s,i)=>{e.#p=Date.now()+3200,e.#h.fill(0),t.forEach(function(r,n){let a=Math.floor(n/16),l=n%16,c=(l*3+a)*7,u=7,f=0;for(c-=l*5,a==2&&(u=2);f>6-f&1,f++})}),this.#M.add([66,18,0,0,127],(t,s,i)=>{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#u=3,e.#i=!1,e.#k.fill(0),console.info(`GS system to ${["single","dual"][t[0]]} mode.`)}).add([66,18,64,0],(t,s,i)=>{switch(t[0]){case 127:{e.switchMode("gs",!0),e.#e[o.cc*9]=120,e.#e[o.cc*25]=120,e.#e[o.cc*41]=120,e.#e[o.cc*57]=120,e.#i=!1,e.#k.fill(0),console.info("MIDI reset: GS");break}}}).add([69,18,16],t=>{switch(t[0]){case 0:{e.#b=Date.now()+3200;let s=t[1];e.#a=" ".repeat(s),t.subarray(2).forEach(function(i){i<128&&(e.#a+=String.fromCharCode(i))});break}case 32:{e.#p=Date.now()+3200,t[1]==0&&(e.#m=Math.max(Math.min(t[2]-1,9),0));break}default:if(t[0]<11){e.#p=Date.now()+3200,e.#g[t[0]-1]?.length||(e.#g[t[0]-1]=new Uint8Array(256));let s=e.#g[t[0]-1],i=t[1];s.fill(0);let r=t.subarray(2);for(let n=0;n>4-b&1,b++})}else console.warn(`Unknown GS display section: ${t[0]}`)}}),this.#M.add([22,18,127],t=>{e.switchMode("mt32",!0),e.#i=!1,e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,32],t=>{e.switchMode("mt32");let s=t[1],i=" ".repeat(s);t.subarray(2).forEach(r=>{r>31&&(i+=String.fromCharCode(r))}),e.#a=i.padStart(20," "),e.#b=Date.now()+3200}).add([22,18,82],(t,s)=>{let i=e.chRedir(0,s,!0);for(let r=0;r<16;r++)e.#r.ano(i+r),r&&r<10&&(e.#y[i+r]=mt32DefProg[r-1]);console.info("MT-32 alt reset complete.")}),this.#O.add([66,0],(t,s)=>{e.switchMode("ns5r",!0),e.#i=!1,console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][t[0]]} mode.`)}).add([66,1],(t,s)=>{e.switchMode(["ns5r","05rw"][t[0]],!0),e.#i=!1}).add([66,18,0,0],(t,s)=>{switch(t[0]){case 124:case 126:case 127:{e.switchMode("ns5r",!0),e.#i=!1;break}}}).add([66,18,8,0],(t,s)=>{}).add([66,125],t=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][t[0]]||"white")}).add([66,127],t=>{let s=new Uint8Array(5760);korgFilter(t,(i,r,n)=>{if(r<720)for(let a=0;a<8;a++)s[r*8+a]=i>>7-a&1}),e.dispatchEvent("screen",{type:"ns5r",data:s})}).add([76],(t,s,i)=>{e.#O.run([66,...t],s,i)}),this.#B.add([16,0,8,0],(t,s,i)=>{let r=(t[2]<<4)+t[3],n="K11 ";([()=>{e.switchMode("k11",!0),e.#i=!1,e.#u=r?4:0,console.info("MIDI reset: GMega/K11")}][t[0]]||(()=>{}))()}),this.#H.add([66,93,64],(t,s,i)=>{let r=t[2];switch(t[0]){case 0:{switch(t[1]){case 127:{e.switchMode("sg",!0);break}}break}}})}};export{Ve as OctaviaDevice,o as allocated,h as ccToPos}; diff --git a/dist/xp_basic.mjs b/dist/xp_basic.mjs index 2d5fbc75..d384a27e 100644 --- a/dist/xp_basic.mjs +++ b/dist/xp_basic.mjs @@ -1,8 +1,8 @@ -var ir=Object.create;var ht=Object.defineProperty;var nr=Object.getOwnPropertyDescriptor;var or=Object.getOwnPropertyNames;var cr=Object.getPrototypeOf,lr=Object.prototype.hasOwnProperty;var hr=(u,e,n)=>e in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),m=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";R();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var E,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(E=h[o])!=null&&E.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(E){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:E}),d++,d>4294967295&&(d=0)}else b.push(E),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var E=b.shift();s.postMessage(E)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(E){E.c==o?E.i!=f&&s.dispatchEvent(u("message",E.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(E.c,"."))};var v={};this.dispatchEvent=function(E){var x,A;if(Object.defineProperty(E,"target",{value:s}),Object.defineProperty(E,"currentTarget",{value:s}),(x=v[E.type])!=null&&x.length)for(var V=v[E.type],se=0;se-1&&v[E].splice(se,1)}!((V=v[E])!=null&&V.length)&&v[E].constructor&&delete v[E]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{R();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||E>127&&E<160)throw new RangeError(`Invalid code point: ${E}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof mt<"u")mt.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});R();R();var z,Ct,it=(Ct=class{constructor(){m(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);R();R();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};R();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){m(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=0,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=3);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=3;break}case 97:{i="VL:",s=3,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=3;break}case 100:{i="AN",a[2]>63&&(f=63),s=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[2]][s]-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b="DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b="VL";break}case 98:{b="SG";break}case 100:{b="AN";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` -`).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);R();R();var Ge,Ot,Dt=(Ot=class{constructor(){m(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Pt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Dt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Pt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Pt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;ye in u?ht(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var St=(u,e)=>()=>(u&&(e=u(u=0)),e);var dr=(u,e)=>()=>(e||u((e={exports:{}}).exports,e),e.exports);var fr=(u,e,n,h)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of or(e))!lr.call(u,c)&&c!==n&&ht(u,c,{get:()=>e[c],enumerable:!(h=nr(e,c))||h.enumerable});return u};var ur=(u,e,n)=>(n=u!=null?ir(cr(u)):{},fr(e||!u||!u.__esModule?ht(n,"default",{value:u,enumerable:!0}):n,u));var C=(u,e,n)=>(hr(u,typeof e!="symbol"?e+"":e,n),n),xt=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(xt(u,e,"read from private field"),n?n.call(u):e.get(u)),m=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,h)=>(xt(u,e,"write to private field"),h?h.call(u,n):e.set(u,n),n);var Mt=St(()=>{"use strict";O();(function(){var u=function(o,i,s){var f,l;if(self.MessageEvent)switch(o){case"message":{l=new MessageEvent(o,{data:i,ports:s==null?void 0:s.ports}),Object.defineProperty(l,"source",{value:s==null?void 0:s.source});break}default:l=new Event(o)}else l=document.createEvent("Event"),l.initEvent(o,!1,!1),s&&o=="message"&&(l.data=i,s.source&&Object.defineProperty(l,"source",{value:s.source}),(f=s.ports)!=null&&f.length&&Object.defineProperty(l,"ports",{value:s.ports}));return l};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],h={},c=function(o){var i,s=this;if((this==null?void 0:this.constructor)!=c)throw new TypeError("Illegal constructor");n.push(this),(i=h[o])!=null&&i.constructor||(h[o]=[]),h[o].push(this);var f=Math.floor(Math.random()*281474976710656),l=[],d=0,b=[],y=!0,k=!1;Object.defineProperty(this,"id",{get:function(){return f}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var E,x=n.indexOf(s);x>-1?(e.postMessage({t:"d",c:o,i:f}),n.splice(x,1),(E=h[o])!=null&&E.constructor&&(x=h[o].indexOf(s),x>-1&&h[o].splice(x,1)),h[o].length||delete h[o],console.debug("[Snowy] BroadcastChannel closed."),k=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(E){if(e){if(k)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:f,m:d,d:E}),d++,d>4294967295&&(d=0)}else b.push(E),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:f}),console.debug("[Snowy] ".concat(b.length," message(s) in cache."));b.length;){var E=b.shift();s.postMessage(E)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(E){E.c==o?E.i!=f&&s.dispatchEvent(u("message",E.d,{source:s})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(f," receives from ").concat(o,", not ").concat(E.c,"."))};var v={};this.dispatchEvent=function(E){var x,A;if(Object.defineProperty(E,"target",{value:s}),Object.defineProperty(E,"currentTarget",{value:s}),(x=v[E.type])!=null&&x.length)for(var V=v[E.type],se=0;se-1&&v[E].splice(se,1)}!((V=v[E])!=null&&V.length)&&v[E].constructor&&delete v[E]}},self.BroadcastChannel=c,r=function(){if(e){e.addEventListener("message",function(i){var s=i.data,f=!1;switch(s.t){case"k":{f=!1,e.postMessage({t:"k"});break}case"m":{var l=h[s.c];if(l!=null&&l.length)for(var d=0;d{"use strict";Mt();{let u=function(e,n){let h=new FileReader;return new Promise((c,r)=>{switch(h.addEventListener("abort",()=>{r(new Error("Blob read aborted"))}),h.addEventListener("error",a=>{r(h.error||a.data||new Error("Blob read error"))}),h.addEventListener("load",()=>{c(h.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{h.readAsArrayBuffer(e);break}case"string":case"text":{h.readAsText(e);break}default:r(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,h=16,c=this,r=[];for(;n-1;){let a=c.lastIndexOf(u);r.unshift(c.slice(a+u.length)),c=c.slice(0,a),a==0&&r.unshift(""),n++}return c.length&&r.unshift(c),r.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length{O();(function(){"use strict";let u={fatal:!0},e=[new TextDecoder("iso-8859-15",u),new TextDecoder("sjis",u),new TextDecoder("euc-jp",u),new TextDecoder("utf-8",u),new TextDecoder("utf-16",u),new TextDecoder("ascii")],n={debug:!1,parse:function(h,c){if(h instanceof Uint8Array)return n.Uint8(h);if(typeof h=="string")return n.Base64(h);if(h instanceof HTMLElement&&h.type==="file")return n.addListener(h,c);throw new Error("MidiParser.parse() : Invalid input provided")},addListener:function(h,c){if(!File||!FileReader)throw new Error("The File|FileReader APIs are not supported in this browser. Use instead MidiParser.Base64() or MidiParser.Uint8()");if(h===void 0||!(h instanceof HTMLElement)||h.tagName!=="INPUT"||h.type.toLowerCase()!=="file")return console.warn("MidiParser.addListener() : Provided element is not a valid FILE INPUT element"),!1;c=c||function(){},h.addEventListener("change",function(r){if(!r.target.files.length)return!1;console.log("MidiParser.addListener() : File detected in INPUT ELEMENT processing data..");let a=new FileReader;a.readAsArrayBuffer(r.target.files[0]),a.onload=function(o){c(n.Uint8(new Uint8Array(o.target.result)))}})},Base64:function(h){let c=function(o){var i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";if(o=o.replace(/^.*?base64,/,""),o=String(o).replace(/[\t\n\f\r ]+/g,""),!/^(?:[A-Za-z\d+\/]{4})*?(?:[A-Za-z\d+\/]{2}(?:==)?|[A-Za-z\d+\/]{3}=?)?$/.test(o))throw new TypeError("Failed to execute _atob() : The string to be decoded is not correctly encoded.");o+="==".slice(2-(3&o.length));let s,f="",l,d,b=0;for(;b>16&255):d===64?String.fromCharCode(s>>16&255,s>>8&255):String.fromCharCode(s>>16&255,s>>8&255,255&s);return f}(h=String(h));var r=c.length;let a=new Uint8Array(new ArrayBuffer(r));for(let o=0;o{d[v]=this.readInt(1)});for(let k=0;k191||E>127&&E<160)throw new RangeError(`Invalid code point: ${E}`)}b=!0,console.debug(`String byte sequence in ${e[k].encoding}`)}catch(v){console.debug(`SMF string ${v}`)}return y||"String byte sequence read failed."},backOne:function(){this.pointer--},readIntVLV:function(){let l=0;if(this.pointer>=this.data.byteLength)return-1;if(this.data.getUint8(this.pointer)<128)l=this.readInt(1);else{let b=[];for(;128<=this.data.getUint8(this.pointer);)b.push(this.readInt(1)-128);var d=this.readInt(1);for(let y=1;y<=b.length;y++)l+=b[b.length-y]*Math.pow(128,y);l+=d}return l}};if(c.data=new DataView(a.buffer,a.byteOffset,a.byteLength),c.readInt(4)!==1297377380)return console.warn("Header validation failed (not MIDI standard or file corrupt.)"),!1;c.readInt(4);let r={};r.formatType=c.readInt(2),r.tracks=c.readInt(2),r.track=[];var a=c.readInt(1),o=c.readInt(1);128<=a?(r.timeDivision=[],r.timeDivision[0]=a-128,r.timeDivision[1]=o):r.timeDivision=256*a+o;for(let l=1;l<=r.tracks;l++){r.track[l-1]={event:[]};var i,s=c.readInt(4);if(s===-1)break;if(s!==1297379947)return!1;c.readInt(4);let d=0,b=!1,y,k;for(;!b&&(d++,r.track[l-1].event[d-1]={},r.track[l-1].event[d-1].deltaTime=c.readIntVLV(),(y=c.readInt(1))!==-1);)if(128<=y?k=y:(y=k,c.movePointer(-1)),y===255){r.track[l-1].event[d-1].type=255,r.track[l-1].event[d-1].metaType=c.readInt(1);var f=c.readIntVLV();switch(r.track[l-1].event[d-1].metaType){case 47:case-1:b=!0;break;case 1:case 2:case 3:case 4:case 5:case 7:case 6:r.track[l-1].event[d-1].data=c.readStr(f);break;case 33:case 89:case 81:r.track[l-1].event[d-1].data=c.readInt(f);break;case 84:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1),r.track[l-1].event[d-1].data[4]=c.readInt(1);break;case 88:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1),r.track[l-1].event[d-1].data[2]=c.readInt(1),r.track[l-1].event[d-1].data[3]=c.readInt(1);break;default:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,f)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(c.readInt(f),r.track[l-1].event[d-1].data=c.readInt(f),this.debug&&console.info("Unimplemented 0xFF meta event! data block readed as Integer"))}}else switch((y=y.toString(16).split(""))[1]||y.unshift("0"),r.track[l-1].event[d-1].type=parseInt(y[0],16),r.track[l-1].event[d-1].channel=parseInt(y[1],16),r.track[l-1].event[d-1].type){case 15:this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].type,c,!1)),this.customInterpreter!==null&&r.track[l-1].event[d-1].data!==!1||(i=c.readIntVLV(),r.track[l-1].event[d-1].data=c.readInt(i),this.debug&&console.info("Unimplemented 0xF exclusive events! data block readed as Integer"));break;case 10:case 11:case 14:case 8:case 9:r.track[l-1].event[d-1].data=[],r.track[l-1].event[d-1].data[0]=c.readInt(1),r.track[l-1].event[d-1].data[1]=c.readInt(1);break;case 12:case 13:r.track[l-1].event[d-1].data=c.readInt(1);break;case-1:b=!0;break;default:if(this.customInterpreter!==null&&(r.track[l-1].event[d-1].data=this.customInterpreter(r.track[l-1].event[d-1].metaType,c,!1)),this.customInterpreter===null||r.track[l-1].event[d-1].data===!1)return console.log("Unknown EVENT detected... reading cancelled!"),!1}}return r},customInterpreter:null};if(typeof mt<"u")mt.exports=n;else{let h=typeof window=="object"&&window.self===window&&window||typeof self=="object"&&self.self===self&&self||typeof global=="object"&&global.global===global&&global;h.MidiParser=n}})()});O();O();var z,Ct,it=(Ct=class{constructor(){m(this,z,{})}addEventListener(u,e){t(this,z)[u]||(t(this,z)[u]=[]),t(this,z)[u].unshift(e)}removeEventListener(u,e){if(t(this,z)[u]){let n=t(this,z)[u].indexOf(e);n>-1&&t(this,z)[u].splice(n,1),t(this,z)[u].length<1&&delete t(this,z)[u]}}dispatchEvent(u,e){var c;let n=new Event(u),h=this;n.data=e,((c=t(this,z)[u])==null?void 0:c.length)>0&&t(this,z)[u].forEach(function(r){try{r==null||r.call(h,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},z=new WeakMap,Ct);O();O();var Tt=function(u,e){let n=Math.min(u.length,e.length),h=u.slice(0,n),c=e.slice(0,n),r=0,a=0;for(;a0){let h=this.pool.length,c=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(r==h)r-=c;else{let i=Tt(e,this.pool[r]);switch(i){case 0:{a=0;break}case 1:{r+c<=h&&(r+=c);break}case-1:{r!=0&&(r-=c);break}default:console.warn(`Unexpected result ${i}.`)}}c=c>>1,a--}let o=!0;if(r>=this.pool.length)o=!1;else{let i=this;this.pool[r].forEach(function(s,f,l){o&&s!=e[f]&&(o=!1)}),!o&&Tt(e,this.pool[r])>0&&r++}return o||n?r:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let h=this.point(e);h>-1?e.subarray?this.pool[h].data(e.subarray(this.pool[h].length),...n):this.pool[h].data(e.slice(this.pool[h].length),...n):this.default(e,...n)}};O();var pr=["MSB","PRG","LSB"],dt=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},K,Rt,ft=(Rt=class{constructor(...u){m(this,K,void 0);C(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,h){let c=[u,e,n],r,a=Array.from(arguments);switch(h){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sd":{u==96?a[0]=121:u>96&&u<100?a[2]|=16:u==104&&(a[0]=120);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",s=0,f=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||h=="gs"&&a[2]<5?i="GM-a":(i="y",s=3);break}case 8:{h=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,s=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(f=63),s=3;break}case 97:{i="VL:",s=3,f=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(f=63),s=3;break}case 100:{i="AN",a[2]>63&&(f=63),s=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,s=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[2]][s]-f}`.padStart(4-i.length,"0")),h=="xg"&&u==16&&(r=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let l=[a[0],a[1],a[2]];for(;!((r==null?void 0:r.length)>=0);)r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r||(this.strictMode?(r="",o="?"):t(this,K)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(r!=null&&r.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(r=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(r=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(r=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,r=t(this,K)[a[1]||0][(a[0]<<7)+a[2]],r?o=" ":(r="",o="*")):a[1]==0?(r=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let d=[a[0],a[1],a[2]];(h=="gs"||h=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(r="");let b="??";switch(a[0]){case 0:{a[2]==0?b="GM":a[2]==5||a[2]==7?b="KG":a[2]<126?b="XG":a[2]==127&&(b="MT");break}case 48:{b="MU";break}case 56:{b="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{b="AI";break}case 62:case 82:case 90:{b="XD";break}case 63:{a[2]<17?b="KR":a[2]<34?b="ES":b="DS";break}case 64:case 126:{b="XG";break}case 67:case 99:{b=a[2]>>4==1?"SD":"DX";break}case 81:{b="RW";break}case 95:{b=["DR","PC"][a[2]];break}case 96:{b=a[2]==106?"AP":"PF";break}case 97:{b=a[2]>>4==1?"SD":"VL";break}case 98:{b=a[2]>>4==1?"SD":"SG";break}case 100:{b="AN";break}case 104:case 105:case 106:case 107:{b="SD";break}case 120:{b="GS";break}case 121:{b=a[2]?"G2":"GM";break}case 122:{b="KG";break}case 127:{b=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&h=="xg"?b="XG":b="GS")}return{name:r||`${dt(u||0)} ${dt(e||0)} ${dt(n||0)}`,iid:l,eid:d,sid:c,ending:o,sect:i,standard:b}}async load(u,e,n){let h=this,c=[],r=0,a=0;u.split(` +`).forEach(function(o,i){let s=o.split(" "),f=[];i==0?s.forEach(function(l,d){c[pr.indexOf(l)]=d}):s.forEach(async function(l,d){var b;d>2?(t(h,K)[f[c[1]]]=t(h,K)[f[c[1]]]||[],(!((b=t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]])!=null&&b.length)||e)&&(t(h,K)[f[c[1]]][(f[c[0]]<<7)+f[c[2]]]=s[3],r++),a++):f.push(parseInt(s[d]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${r} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],h=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let c=n[0];c<=n[1];c++){let r=c<<7;for(let a=h[0];a<=h[1];a++){let o=r+a;for(let i=e[0];i<=e[1];i++)delete t(this,K)[i][o]}}}init(){w(this,K,[]);for(let u=0;u<128;u++)t(this,K).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,h){try{await fetch(`./data/bank/${n}.tsv`).then(function(c){return c.text()}).then(c=>{e.load(c,!1,n)})}catch(c){console.error(`Failed loading "${n}.tsv".`)}})}},K=new WeakMap,Rt);O();O();var Ge,Ot,Dt=(Ot=class{constructor(){m(this,Ge,{});C(this,"context")}set(u,e){t(this,Ge)[u]=e}has(u){return!!t(this,Ge)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Ge)[u].call(this.context||this,e)}},Ge=new WeakMap,Ot);var br=function(u,e){let n=!0;return e.forEach((h,c)=>{n=n&&u[c]==h}),n},Pt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Qe=new TextDecoder,nt=new Dt;nt.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",h=[0,0,0,0],c=32,r=0,a=0,o=!0,i=[],s=0;for(;o;){let f=e.subarray(r);([()=>{Qe.decode(f.subarray(0,4))=="YSFC"?(r+=80,a=1):r++},()=>{if(br(f.subarray(0,4),h))i.forEach((l,d,b)=>{let y=Pt(e.subarray(l.start+4,l.start+8));l.length=y}),a=2;else{let l=Qe.decode(f.subarray(0,4)),d=Pt(f.subarray(4,8));i.push({type:l,start:d}),r+=8}},()=>{let l=i[s],d=e.subarray(l.start,l.start+l.length),b=32;switch(l.type){case"ENVC":{let y=c;for(;y=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});R();var We=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ye=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],gr=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],_e=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],It=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],At=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},Ut=function(u){return u>105?gr[u-106]:u>100?u*1.1-100:u/10},Lt=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),ut={};`hi*, +063 ${(v[17]+1).toString().padStart(3,"0")} ${v[19].toString().padStart(3,"0")} ${E}`),k+=y}break}}s++,s>=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});O();var We=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ye=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],gr=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],_e=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],It=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],At=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},Ut=function(u){return u>105?gr[u-106]:u>100?u*1.1-100:u/10},Lt=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),ut={};`hi*, ka,か ki,き ku,く @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};R();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];R();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ne=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],mr=[12,13,16,17,18,19],Er=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},D,j,oe,fe,W,de,Yt,U,H,O,p,ue,P,L,ee,B,G,we,ce,Ce,S,Fe,et,le,me,te,Ve,Ee,Q,ve,Z,X,pe,Xe,ze,he,ke,Ke,re,I,tt,$t,T,be,Se,_,Te,N,rt,ot,Re,Oe,J,ae,ge,De,Pe,Ie,Wt,oa=(Wt=class extends it{constructor(){super();m(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);m(this,D,0);m(this,j,0);m(this,oe,0);m(this,fe,new Array(11));m(this,U,new Uint8Array($.ch));m(this,H,new Uint8Array($.ch));m(this,O,new Uint8Array($.ch));m(this,p,new Uint8Array($.ch*$.cc));m(this,ue,new Uint8Array($.ace));m(this,P,new Uint8Array($.ch));m(this,L,new Uint8Array($.ch*$.nn));m(this,ee,new Uint8Array($.ch));m(this,B,new Uint16Array($.pl));m(this,G,new Uint8Array($.pl));m(this,we,new Int16Array($.ch));m(this,ce,new Uint8Array($.ch));m(this,Ce,0);m(this,S,new Uint8Array($.ch*$.rpn));m(this,Fe,new Int8Array($.ch*qt.length));m(this,et,new Uint8Array($.drm*$.dpn*$.dnc));m(this,le,new Uint8Array($.ch));m(this,me,new Uint8Array(128));m(this,te,new Uint8Array($.cmt*8));m(this,Ve,new Uint8Array(1024));m(this,Ee,new Uint8Array($.cmt*64));m(this,Q,new Uint8Array($.efx*3));m(this,ve,0);m(this,Z,0);m(this,X,100);m(this,pe,0);m(this,Xe,500);m(this,ze,0);m(this,he,"");m(this,ke,0);m(this,Ke,0);m(this,re,!0);m(this,I,!1);m(this,tt,void 0);m(this,$t,new Uint8Array(2));m(this,T,[]);m(this,be,new Uint8Array($.ch));m(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");m(this,_,[]);m(this,Te,void 0);m(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,ee)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,ce)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});m(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,D)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,ee)[n]=1,t(this,N).ano(n);return}case 127:{t(this,ee)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(mr.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(Y()&&console.debug(`${$e[t(this,D)]}, CH${n+1}: ${e.data[1]}`),t(this,D)==0?e.data[1]<48?(t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,D)==M.gs?e.data[1]<56&&t(this,O)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,D)==M.gm?e.data[1]<48?t(this,O)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,D)==M.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,D)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,O)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,O)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,D))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,D)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=Er.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,O)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,O)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,O)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,D)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,D),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,D)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,P)[n]=e.data,t(this,le)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});m(this,ot,{64:(e,n,h)=>{t(this,De).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,ae).run(n,h,e),console.warn("Unknown device SysEx!");else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,ae).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,J).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,Pe).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});m(this,Re,void 0);m(this,Oe,void 0);m(this,J,void 0);m(this,ae,void 0);m(this,ge,void 0);m(this,De,void 0);m(this,Pe,void 0);m(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new ie),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(u=>{let e=u.split(",");ut[e[0]]=e[1]});var Bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(h=>{for(;e.indexOf(h)>-1;)e=e.replace(h,h[0])});for(let h in ut)e=e.replaceAll(h,ut[h]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},Nt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};O();var pt=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],Ht=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],Gt=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var yr={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},$r={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},bt=function(u){return yr[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},_t=function(u,e,n){let h=(u[0]-32<<16)+(u[1]<<8)+e,c=$r[h]||{},r=c[0];if(r!=null&&r.length)return r+=`: ${(c[1]||function(){})(n)||n}`,r},gt=[68,48,95,78,41,3,110,122,0];O();var q=function(u=64){return Math.round(2e3*Math.log10(u/64))/100},Ft=function(u,e,n){let h=[],c=n==!1?e.readIntVLV():n;u==0||u==127;for(let r=0;r127)return console.debug(`Early termination: ${h}`),h.pop(),e.backOne(),e.backOne(),new Uint8Array(h)}}}return new Uint8Array(h)},Vt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},ne=function(u,e){let n=0,h=0;for(let c=0;c>r&1)<<7,o=u[c];o+=a,c%8!=0?(e(o,n,u),n++):h=u[c]}},Ze=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var $e=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],Xt=[[0,0,0,0,121,0,0,82,81,96,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Me=[120,127,120,127,120,127,61,62,62,104,120,122,122,127],wr=[0,3,81,84,88],zt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},yt={0:0,1:1,2:3,5:4},Kt=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],qt=[36,37],ct=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],Je=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],mr=[12,13,16,17,18,19],Er=[33,99,100,32,102,8,9,10],jt=[0,16,25,40,32,64,26,48],M={};$e.forEach((u,e)=>{M[u]=e});var g={length:Je.length};Je.forEach((u,e)=>{g[u]=e});var wt={length:ct.length};ct.forEach((u,e)=>{wt[u]=e});var Y=function(){return!!self.Bun||self.debugMode||!1},vr=function(u){let e=[],n=0;return u==null||u.forEach(function(h,c){h==247?e.push(u.subarray(n,c)):h==240&&(n=c+1)}),e.length||e.push(u.subarray(0)),Y()&&console.debug(e),e},Qt=function(u,e="",n="",h=2){return u?`${e}${u.toString().padStart(h,"0")}${n}`:""},$={ch:128,cc:Je.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:ct.length,dnc:128,efx:7},D,j,oe,fe,W,de,Yt,U,H,T,p,ue,P,L,ee,B,G,we,ce,Ce,S,Fe,et,le,me,te,Ve,Ee,Q,ve,Z,X,pe,Xe,ze,he,ke,Ke,re,I,tt,$t,R,be,Se,_,Te,N,rt,ot,Re,Oe,J,ae,ge,De,Pe,Ie,Wt,oa=(Wt=class extends it{constructor(){super();m(this,W);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);m(this,D,0);m(this,j,0);m(this,oe,0);m(this,fe,new Array(11));m(this,U,new Uint8Array($.ch));m(this,H,new Uint8Array($.ch));m(this,T,new Uint8Array($.ch));m(this,p,new Uint8Array($.ch*$.cc));m(this,ue,new Uint8Array($.ace));m(this,P,new Uint8Array($.ch));m(this,L,new Uint8Array($.ch*$.nn));m(this,ee,new Uint8Array($.ch));m(this,B,new Uint16Array($.pl));m(this,G,new Uint8Array($.pl));m(this,we,new Int16Array($.ch));m(this,ce,new Uint8Array($.ch));m(this,Ce,0);m(this,S,new Uint8Array($.ch*$.rpn));m(this,Fe,new Int8Array($.ch*qt.length));m(this,et,new Uint8Array($.drm*$.dpn*$.dnc));m(this,le,new Uint8Array($.ch));m(this,me,new Uint8Array(128));m(this,te,new Uint8Array($.cmt*8));m(this,Ve,new Uint8Array(1024));m(this,Ee,new Uint8Array($.cmt*64));m(this,Q,new Uint8Array($.efx*3));m(this,ve,0);m(this,Z,0);m(this,X,100);m(this,pe,0);m(this,Xe,500);m(this,ze,0);m(this,he,"");m(this,ke,0);m(this,Ke,0);m(this,re,!0);m(this,I,!1);m(this,tt,void 0);m(this,$t,new Uint8Array(2));m(this,R,[]);m(this,be,new Uint8Array($.ch));m(this,Se,new Uint8Array($.tr));C(this,"baseBank",new ft("gm","gm2","xg","gs","ns5r","sd","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new ft("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");m(this,_,[]);m(this,Te,void 0);m(this,N,{nOff:(e,n)=>{let h=e*128+n,c=t(this,B).lastIndexOf(h);c>-1&&(t(this,p)[$.cc*e+g[64]]>63?(t(this,G)[c]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_HELD})):t(this,p)[$.cc*e+g[66]]>63&&t(this,G)[c]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,G)[c]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,L)[h],state:this.NOTE_SOSTENUTO_HELD})):(t(this,B)[c]=0,t(this,L)[h]=0,t(this,G)[c]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,h)=>{let c=e*128+n,r=0;for(t(this,ee)[e]&&t(this,N).ano(e);t(this,G)[r]>0&&t(this,B)[r]!=c;)r++;r<$.pl?(t(this,B)[r]=c,t(this,L)[c]=h,t(this,G)[r]=this.NOTE_SUSTAIN,t(this,ce)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,G).forEach((n,h)=>{let c;switch(n){case this.NOTE_ATTACK:{c=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{c=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{c=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(c){t(this,G)[h]=c;let r=t(this,B)[h];this.dispatchEvent("note",{part:e,note:r&127,velo:t(this,L)[r],state:c})}})},soOf:e=>{t(this,G).forEach((n,h)=>{if(n==this.NOTE_SOSTENUTO_HELD){let c=t(this,B)[h],r=c>>7;e==r&&(t(this,G)[h]=this.NOTE_IDLE,t(this,B)[h]=0,t(this,L)[c]=0,this.dispatchEvent("note",{part:e,note:c&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,B).forEach((n,h,c)=>{let r=n>>7,a=n&127;n==0&&t(this,L)[0]==0||r==e&&t(this,N).nOff(r,a)})}});m(this,rt,{8:function(e){let n=e.channel,h=e.data[0];t(this,N).nOff(n,h)},9:function(e){let n=e.channel;t(this,U)[n]=1;let h=e.data[0],c=e.data[1];c>0?t(this,N).nOn(n,h,c):t(this,N).nOff(n,h)},10:function(e){let n=e.channel,h=n*128+e.data[0];t(this,B).indexOf(h)>-1&&(t(this,L)[h]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,D)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,U)[n]=1);break}e.data[1]&&(t(this,U)[n]=1);break}default:{t(this,U)[n]=1;break}}})();let h=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,we)[n]=0;let c=n*$.cc;t(this,p)[c+g[1]]=0,t(this,p)[c+g[5]]=0,t(this,p)[c+g[64]]=0,t(this,p)[c+g[65]]=0,t(this,p)[c+g[66]]=0,t(this,p)[c+g[67]]=0,t(this,p)[c+g[11]]=127,t(this,p)[c+g[101]]=127,t(this,p)[c+g[100]]=127,t(this,p)[c+g[99]]=127,t(this,p)[c+g[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,ee)[n]=1,t(this,N).ano(n);return}case 127:{t(this,ee)[n]=0,t(this,N).ano(n);return}}if(g[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(mr.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(Y()&&console.debug(`${$e[t(this,D)]}, CH${n+1}: ${e.data[1]}`),t(this,D)==0?e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,D)==M.gs?e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,p)[h],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,D)==M.gm?e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,D)==M.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,D)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.sd:{[104,105,106,107].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,Ce)){[M.xg,M.gs,M.ns5r].indexOf(t(this,D))<0&&console.warn(`NRPN commits are not available under "${$e[t(this,D)]}" mode, even when they are supported in Octavia.`);let c=t(this,p)[h+g[99]],r=t(this,p)[h+g[98]];if(c==1){let a=Er.indexOf(r);if(a>-1)t(this,p)[h+g[71+a]]=e.data[1],Y()&&console.debug(`Redirected NRPN 1 ${r} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=qt.indexOf(r);o>-1?t(this,Fe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${r.toString(16).padStart(2,"0")} is not supported.`),Y()&&console.debug(`CH${n+1} voice NRPN ${r} commit`)}}else{if(ct.indexOf(c)<0){let o=`NRPN 0x${c.toString(16).padStart(2,"0")}${r.toString(16).padStart(2,"0")} `;c==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ye[t(this,T)[n]]}.`):t(this,et)[(o*$.dpn+wt[c])*$.dnc+r]=e.data[1]-64}Y()&&console.debug(`CH${n+1} (${Ye[t(this,T)[n]]}) drum NRPN ${c} commit`)}}else{let c=yt[t(this,p)[h+g[100]]];t(this,p)[h+g[101]]==0&&c!=null&&(Y()&&console.debug(`CH${n+1} RPN 0 ${t(this,p)[h+g[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],Kt[c][0]),Kt[c][1]),t(this,S)[n*$.rpn+c]=e.data[1])}break}case 32:{switch(t(this,D)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,D),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,Ce)||t(this,p)[h+101]==0&&yt[t(this,p)[h+100]]!=null&&(t(this,S)[n*$.rpn+yt[t(this,p)[h+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,Ce,1);break}case 100:case 101:{w(this,Ce,0);break}}t(this,p)[h+g[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,D)){case M.s90es:case M.motif:{e.data&&(t(this,U)[n]=1);break}default:t(this,U)[n]=1}t(this,P)[n]=e.data,t(this,le)[n]=0,Y()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,h=e.channel;t(this,B).forEach(function(c){let r=c>>7;h==r&&(t(n,L)[c]=e.data,n.dispatchEvent("note",{part:h,note:c&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,we)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){vr(e.data).forEach(n=>{let h=n[0],c=n[1];(t(this,ot)[h]||function(){console.debug(`Unknown manufacturer ${h}.`)})(c,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,_)[e.meta]||function(h,c,r){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,pe,0);let n=wr.indexOf(e.meta)>-1;if(Y()&&console.debug(e),n)return e.reply="meta",e}});m(this,ot,{64:(e,n,h)=>{t(this,De).run(n,h,e)},65:(e,n,h)=>{if(n[0]<16)t(this,ae).run(n,h,e);else{let c=n[n.length-1],r=Vt(n.subarray(2,n.length-1));c==r?t(this,ae).run(n.subarray(0,n.length-1),h,e):console.warn(`Bad GS checksum ${c}. Should be ${r}.`)}},66:(e,n,h)=>{t(this,ge).run(n,h,e)},67:(e,n,h)=>{t(this,J).run(n,h,e)},68:(e,n,h)=>{t(this,Ie).run(n,h,e)},71:(e,n,h)=>{t(this,Pe).run(n,h,e)},126:(e,n,h)=>{t(this,Re).run(n,h,e)},127:(e,n,h)=>{this.switchMode("gm"),t(this,Oe).run(n,h,e)}});m(this,Re,void 0);m(this,Oe,void 0);m(this,J,void 0);m(this,ae,void 0);m(this,ge,void 0);m(this,De,void 0);m(this,Pe,void 0);m(this,Ie,void 0);let e=this;w(this,W,new Uint8Array(256),Yt),t(this,fe)[10]=new Uint8Array(512),w(this,Te,new ie),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,10 +147,10 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,_)[1]=function(r){switch(r.slice(0,2)){case"@I":{w(this,I,!0),t(this,T).unshift(`Kar.Info: ${r.slice(2)}`);break}case"@K":{w(this,I,!0),t(this,T).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${r.slice(2)}`);break}case"@L":{w(this,I,!0),t(this,T).unshift(`Language: ${r.slice(2)}`);break}case"@T":{w(this,I,!0),t(this,T).unshift(`Ka.Title: ${r.slice(2)}`);break}case"@V":{w(this,I,!0),t(this,T).unshift(`Kara.Ver: ${r.slice(2)}`);break}case"XF":{let a=r.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,T).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,T).unshift(`XGF_Data: ${r}`)}break}default:t(this,I)?r[0]=="\\"?t(this,T).unshift(`@ ${r.slice(1)}`):r[0]=="/"?t(this,T).unshift(r.slice(1)):t(this,T)[0]+=r:(t(this,T)[0]=r,t(this,T).unshift(""))}},t(this,_)[2]=function(r){t(this,T).unshift(`Copyrite: ${r}`)},t(this,_)[3]=function(r,a){a<1&&t(this,pe)<1&&t(this,T).unshift(`TrkTitle: ${r}`)},t(this,_)[4]=function(r,a){t(this,T).unshift(`${Qt(t(this,pe),""," ")}Instrmnt: ${r}`)},t(this,_)[5]=function(r){r.trim()==""?t(this,T).unshift(""):t(this,T)[0]+=`${r}`},t(this,_)[6]=function(r){t(this,T).unshift(`${Qt(t(this,pe),""," ")}C.Marker: ${r}`)},t(this,_)[7]=function(r){t(this,T).unshift(`CuePoint: ${r}`)},t(this,_)[32]=function(r){w(this,pe,r[0]+1)},t(this,_)[33]=function(r,a){console.debug(`Track ${a} requests to get assigned to output ${r}.`),t(e,Se)[a]=r+1},t(this,_)[81]=function(r,a){w(e,Xe,r/1e3)},t(this,_)[127]=function(r,a){t(e,Te).run(r,a)},t(this,Te).default=function(r){console.warn(`Unrecognized sequencer-specific byte sequence: ${r}`)},t(this,Te).add([67,0,1],function(r,a){t(e,Se)[a]=r[0]+1}),w(this,Re,new ie("universal non-realtime")),w(this,Oe,new ie("universal realtime")),w(this,J,new ie("Yamaha")),w(this,ae,new ie("Roland")),w(this,ge,new ie("Korg")),w(this,De,new ie("Kawai")),w(this,Pe,new ie("Akai")),w(this,Ie,new ie("Casio"));let n=function(r){console.info(`Unrecognized SysEx in "${this.name}" set.`,r)};t(this,Re).default=n,t(this,Oe).default=n,t(this,J).default=n,t(this,ae).default=n,t(this,ge).default=n,t(this,De).default=n,t(this,Pe).default=n,t(this,Ie).default=n,t(this,Re).add([9],r=>{e.switchMode(["gm","?","g2"][r[0]-1],!0),w(e,I,t(e,I)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][r[0]-1]}`),r[0]==2&&e.init()}),t(this,Oe).add([4,1],r=>{w(e,X,((r[1]<<7)+r[0])/16383*100)}).add([4,3],r=>((r[1]<<7)+r[0]-8192)/8192).add([4,4],r=>r[1]-64),t(this,J).add([76,0,0],r=>{switch(r[0]){case 125:{console.info(`XG drum setup reset: ${r}`);break}case 126:{e.switchMode("xg",!0),w(e,I,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,s)=>{a[s]=i};if(r.subarray(1).forEach((i,s)=>{let f=s+r[0];([o,o,o,o,l=>{w(this,X,l*129/16383*100)},l=>{},l=>{}][f]||(()=>{}))(i,s)}),r[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],r=>{let a="XG ";r[0]<32?(a+="reverb ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${At(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][r[0]+i]||function(){console.warn(`Unknown XG reverb address: ${r[0]}.`)})(o)})):r[0]<64?(a+="chorus ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${It[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Ut(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${_e[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${_e[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][r[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${r[0]}.`)})(o)})):r[0]<86?(a+="variation ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][r[0]-64+i]||function(){})(o)})):r[0]<97?(a+="variation ",r.subarray(1).forEach((o,i)=>{[s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},s=>{console.debug(`${a}to chorus: ${q(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][r[0]-86+i](o)})):r[0]>111&&r[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${r[0]}`)}).add([76,2,64],r=>{r.subarray(1).forEach((a,o)=>{let i=o+r[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,f=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][f]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][f]()}})}).add([76,3],r=>{let a=r[0],o=r[1],i=`XG Insertion ${r[0]+1} `;r.subarray(2).forEach((s,f)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${We[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][o+f]||function(){})(s)})}).add([76,6,0],r=>{let a=r[0];a<64?e.setLetterDisplay(r.subarray(1),"XG letter display",a):w(e,ke,Date.now())}).add([76,7,0],r=>{let a=r[0];w(e,j,0),w(e,oe,Date.now()+3200),t(e,W,de).fill(0);let o=r.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=$.cc*o,f=`XG CH${o+1} `,l=`Unknown XG part address ${i}.`;r.subarray(2).forEach((d,b)=>{i<1?console.debug(l):i<41?([()=>{t(e,p)[s+g[0]]=d},()=>{t(e,p)[s+g[32]]=d},()=>{t(e,P)[o]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!d},()=>{},()=>{e.setChType(o,d,M.xg),console.debug(`${f}type: ${Ye[d]||d}`)},()=>{t(e,S)[$.rpn*o+3]=d},!1,!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{t(e,p)[s+g[128]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[76]]=d},()=>{t(e,p)[s+g[77]]=d},()=>{t(e,p)[s+g[78]]=d},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},()=>{t(e,p)[s+g[73]]=d},()=>{t(e,p)[s+g[75]]=d},()=>{t(e,p)[s+g[72]]=d}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(t(e,p)[s+g[[5,65][i&1]]]=d):i<114?console.debug(l):i<116?console.debug(`${f}EQ ${["bass","treble"][i&1]} gain: ${d-64}dB`):i<118?console.debug(l):i<120?console.debug(`${f}EQ ${["bass","treble"][i&1]} freq: ${d}`):console.debug(l)})}).add([76,9],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=`PLG-150VL CH${o+1} `;r.subarray(2).forEach((f,l)=>{let d=l+i;switch(d){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][f]}`);break}case 0:case 27:case 28:break;default:if(d<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][d-3>>1];d&1?d<23?(console.debug(`${s}${b} control source: ${Nt(f)}`),f&&f<96&&e.allocateAce(f)):console.debug(`${s}${b} scale break point: ${f}`):console.debug(`${s}${b} depth: ${f-64}`)}}})}).add([76,10],r=>{}).add([76,16],r=>{}).add([76,17,0,0],r=>{}).add([76,112],r=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][r[0]]} for CH${r[2]+1}.`)}).add([73,0,0],(r,a)=>{let o=r[0],i="MU1000 System: ";r.subarray(1).forEach((s,f)=>{let l=o+f;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(w(e,Z,s?126:0),console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,re,!!s),console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(r,a)=>{let o=r[0],i=`MU1000 RS${t(e,re)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let s=e.chRedir(0,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(r[1]<<5,a,!0);t(e,re)&&e.dispatchEvent("channelmin",s),t(e,re)&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,re)){let s=e.chRedir(o-16+(t(e,Ke)<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(o<36){let s=e.chRedir(o-32<<4,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),w(e,Ke,o-32)),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=`PLG-100SG CH${o+1} `,s=Date.now();if(r[1]==0){let f="",l=0;r.subarray(2).forEach((d,b)=>{b%2==0?f+=Lt[d]||d.toString().padStart("0"):l+=d*13}),s>=t(e,ze)&&t(e,T).unshift("SG Lyric: "),t(e,T)[0]+=`${Bt(f)}`,w(e,ze,s+Math.ceil(l/2)+t(e,Xe)),Y()&&console.debug(`${i}vocals: ${f}`)}else console.warn(`Unknown PLG-100SG data: ${r}`)}),t(this,J).add([76,48],r=>{}).add([76,49],r=>{}).add([76,50],r=>{}).add([76,51],r=>{}),t(this,J).add([89,0],(r,a,o)=>{if(e.eprom){let i=r[0],s=(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let f=e.eprom.data;r.subarray(4).forEach((l,d)=>{let b=d>>3,y=d&7;if(y==7)for(let k=0;k<7;k++)f[s+7*b+k]+=(l>>6-k&1)<<7;else f[s+7*b+y]=l})}}).add([89,1],(r,a,o)=>{let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3];Y()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(r,a,o)=>{if(e.eprom){let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;r.subarray(4).forEach((f,l)=>{let d=l>>3,b=l&7;if(b==7)for(let y=0;y<7;y++)s[i+7*d+y]+=(f>>6-y&1)<<7;else s[i+7*d+b]=f})}}).add([89,3],(r,a,o)=>{}),t(this,J).add([39,48],(r,a,o)=>{}).add([43,0,0],(r,a,o)=>{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,()=>{w(this,X,f*129/16383*100)},()=>f-64,()=>f||128,()=>f,()=>f,()=>{console.debug(`TG300 variation on cc${f}.`)}][d](f,d)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}).add([43,1,0],(r,a,o)=>{}).add([43,2],(r,a,o)=>{let i=e.chRedir(r[0],a,!0),s=r[1],f=$.cc*i,l=`TG300 CH${i+1} `;r.subarray(2).forEach((d,b)=>{b<5?([()=>{},()=>{t(e,p)[f+g[0]]=d},()=>{t(e,p)[f+g[32]]=d},()=>{t(e,P)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][b+s]||(()=>{}))(d,b+s):b<21||(b<47?([()=>{t(e,ee)[i]=+!d},()=>{},()=>{},()=>{t(e,S)[$.rpn*i+3]=d},()=>{},()=>{t(e,p)[f+g[7]]=d},!1,!1,()=>{t(e,p)[f+g[10]]=d||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${d}`)},()=>{console.debug(`${l} AC2 at cc${d}`)},()=>{t(e,p)[f+g[128]]=d},()=>{t(e,p)[f+g[93]]=d},()=>{t(e,p)[f+g[91]]=d},()=>{t(e,p)[f+g[94]]=d},()=>{t(e,p)[f+g[76]]=d},()=>{t(e,p)[f+g[77]]=d},()=>{t(e,p)[f+g[74]]=d},()=>{t(e,p)[f+g[71]]=d},()=>{t(e,p)[f+g[73]]=d},()=>{t(e,p)[f+g[75]]=d},()=>{t(e,p)[f+g[72]]=d},()=>{t(e,p)[f+g[78]]=d}][b+s-21]||(()=>{}))(d,b+s):b<95||([()=>{t(e,p)[f+g[65]]=d},()=>{t(e,p)[f+g[5]]=d}][b+s-95]||(()=>{}))(d,b+s))})}).add([43,7,0],(r,a,o)=>{let i=r[0];e.setLetterDisplay(r.subarray(1),"TG300 letter display",i)}).add([43,7,1],(r,a,o)=>{w(e,j,0),w(e,oe,Date.now()+3200),t(e,W,de).fill(0),r.forEach(function(i,s){let f=Math.floor(s/16),l=s%16,d=(l*3+f)*7,b=7,y=0;for(d-=l*5,f==2&&(b=2);y>6-y&1,y++})}),t(this,ae).add([66,18,0,0,127],(r,a,o)=>{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,Z,3),w(e,I,!1),t(e,be).fill(0),console.info(`GS system to ${["single","dual"][r[0]]} mode.`)}).add([66,18,64,0],(r,a,o)=>{switch(r[0]){case 127:{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,I,!1),t(e,be).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,b=>{w(this,X,b*129/16383*100)},b=>{},b=>{}][d](f,l)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,64,1],r=>{let a=r[0];if(a<16){let o="".padStart(a," ");r.subarray(1).forEach((i,s)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?r.subarray(1).forEach((o,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${pt[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${o}ms`)},()=>{console.info(`${s}type: ${Ht[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)},()=>{console.debug(`${s}to delay: ${q(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?r.subarray(1).forEach((o,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${Gt[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],r=>{let a="GS EQ ";r.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][r[0]+i]||function(){console.warn(`Unknown GS EQ address: ${r[0]+i}`)})()})}).add([66,18,64,3],r=>{let a="GS EFX ",o=function(i,s){let f=_t(t(e,Q).subarray(10,12),s,i);f&&console.debug(`${a}${bt(t(e,Q).subarray(10,12))} ${f}`)};r.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${bt(t(e,Q).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${q(i)}dB`)},()=>{console.debug(`${a}to chorus: ${q(i)}dB`)},()=>{console.debug(`${a}to delay: ${q(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][r[0]+s]||function(f,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,r[0]+s)})}).add([66,18,65],r=>{}).add([69,18,16],r=>{var a;switch(r[0]){case 0:{let o=r[1];e.setLetterDisplay(r.subarray(2),"GS display text",o);break}case 32:{w(e,oe,Date.now()+3200),r[1]==0&&w(e,j,Math.max(Math.min(r[2]-1,9),0));break}default:if(r[0]<11){t(e,j)>9&&w(e,j,0),w(e,oe,Date.now()+3200),(a=t(e,fe)[r[0]-1])!=null&&a.length||(t(e,fe)[r[0]-1]=new Uint8Array(256));let o=t(e,fe)[r[0]-1],i=r[1];o.fill(0);let s=r.subarray(2);for(let f=0;f>4-v&1,v++})}else console.warn(`Unknown GS display section: ${r[0]}`)}});let h=function(r,a,o){let i=r[0],s=$.cc*a,f=$.rpn*a,l=`GS CH${a+1} `;i<3?r.subarray(1).forEach((d,b)=>{[()=>{t(e,p)[s+g[0]]=d},()=>{t(e,P)[a]=d},()=>{let y=e.chRedir(d,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][i+b]()}):i<19||(i<44?r.subarray(1).forEach((d,b)=>{([()=>{t(e,ee)[a]=+!d},!1,()=>{e.setChType(a,d<<1,M.gs),console.debug(`${l}type: ${d?"drum ":"melodic"}${d||""}`)},()=>{t(e,S)[f+3]=d},!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${d}`)},()=>{console.debug(`${l}CC 2: cc${d}`)},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},!1,!1,()=>{t(e,S)[f+1]=d},()=>{t(e,S)[f+2]=d},()=>{t(e,p)[s+g[94]]=d}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},c=function(r,a){let o=r[0],i=`GS CH${a+1} `;o<2?r.subarray(1).forEach((s,f)=>{[()=>{t(e,p)[$.cc*a+g[32]]=s},()=>{}][o+f]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?r.subarray(1).forEach((s,f)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][o+f-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ae).add([66,18,64,16],(r,a)=>{h(r,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(r,a)=>{h(r,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(r,a)=>{h(r,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(r,a)=>{h(r,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(r,a)=>{h(r,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(r,a)=>{h(r,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(r,a)=>{h(r,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(r,a)=>{h(r,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(r,a)=>{h(r,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(r,a)=>{h(r,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(r,a)=>{h(r,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(r,a)=>{h(r,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(r,a)=>{h(r,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(r,a)=>{h(r,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(r,a)=>{h(r,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(r,a)=>{h(r,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(r,a)=>{c(r,e.chRedir(9,a,!0))}).add([66,18,64,65],(r,a)=>{c(r,e.chRedir(0,a,!0))}).add([66,18,64,66],(r,a)=>{c(r,e.chRedir(1,a,!0))}).add([66,18,64,67],(r,a)=>{c(r,e.chRedir(2,a,!0))}).add([66,18,64,68],(r,a)=>{c(r,e.chRedir(3,a,!0))}).add([66,18,64,69],(r,a)=>{c(r,e.chRedir(4,a,!0))}).add([66,18,64,70],(r,a)=>{c(r,e.chRedir(5,a,!0))}).add([66,18,64,71],(r,a)=>{c(r,e.chRedir(6,a,!0))}).add([66,18,64,72],(r,a)=>{c(r,e.chRedir(7,a,!0))}).add([66,18,64,73],(r,a)=>{c(r,e.chRedir(8,a,!0))}).add([66,18,64,74],(r,a)=>{c(r,e.chRedir(10,a,!0))}).add([66,18,64,75],(r,a)=>{c(r,e.chRedir(11,a,!0))}).add([66,18,64,76],(r,a)=>{c(r,e.chRedir(12,a,!0))}).add([66,18,64,77],(r,a)=>{c(r,e.chRedir(13,a,!0))}).add([66,18,64,78],(r,a)=>{c(r,e.chRedir(14,a,!0))}).add([66,18,64,79],(r,a)=>{c(r,e.chRedir(15,a,!0))}),t(this,ge).add([54,65],(r,a)=>{e.switchMode("x5d");let o=(r[1]<<7)+r[0],i=(r[3]<<7)+r[2],s=e.chRedir(o&15,a,!0),f=$.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,P)[s]=i-1,t(e,p)[f+g[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,P)[s]=i-101,t(e,p)[f+g[0]]=56):(e.setChType(s,e.CH_DRUMS,M.x5d),t(e,P)[s]=jt[i-229]||0,t(e,p)[f+g[0]]=62))},()=>{t(e,p)[f+g[7]]=i},()=>{i<31&&(t(e,p)[f+g[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,p)[f+g[93]]=Ze(i)},()=>{t(e,p)[f+g[91]]=Ze(i)},()=>{t(e,S)[s*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,S)[s*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,S)[s*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=82,s=0,f=0,l="MSB PRG LSB NME";ne(r,function(d,b){if(b<16400){let y=b%164;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` +122 006 000 `),t(this,_)[1]=function(r){switch(r.slice(0,2)){case"@I":{w(this,I,!0),t(this,R).unshift(`Kar.Info: ${r.slice(2)}`);break}case"@K":{w(this,I,!0),t(this,R).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${r.slice(2)}`);break}case"@L":{w(this,I,!0),t(this,R).unshift(`Language: ${r.slice(2)}`);break}case"@T":{w(this,I,!0),t(this,R).unshift(`Ka.Title: ${r.slice(2)}`);break}case"@V":{w(this,I,!0),t(this,R).unshift(`Kara.Ver: ${r.slice(2)}`);break}case"XF":{let a=r.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,R).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,R).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,R).unshift(`XGF_Data: ${r}`)}break}default:t(this,I)?r[0]=="\\"?t(this,R).unshift(`@ ${r.slice(1)}`):r[0]=="/"?t(this,R).unshift(r.slice(1)):t(this,R)[0]+=r:(t(this,R)[0]=r,t(this,R).unshift(""))}},t(this,_)[2]=function(r){t(this,R).unshift(`Copyrite: ${r}`)},t(this,_)[3]=function(r,a){a<1&&t(this,pe)<1&&t(this,R).unshift(`TrkTitle: ${r}`)},t(this,_)[4]=function(r,a){t(this,R).unshift(`${Qt(t(this,pe),""," ")}Instrmnt: ${r}`)},t(this,_)[5]=function(r){r.trim()==""?t(this,R).unshift(""):t(this,R)[0]+=`${r}`},t(this,_)[6]=function(r){t(this,R).unshift(`${Qt(t(this,pe),""," ")}C.Marker: ${r}`)},t(this,_)[7]=function(r){t(this,R).unshift(`CuePoint: ${r}`)},t(this,_)[32]=function(r){w(this,pe,r[0]+1)},t(this,_)[33]=function(r,a){console.debug(`Track ${a} requests to get assigned to output ${r}.`),t(e,Se)[a]=r+1},t(this,_)[81]=function(r,a){w(e,Xe,r/1e3)},t(this,_)[127]=function(r,a){t(e,Te).run(r,a)},t(this,Te).default=function(r){console.warn(`Unrecognized sequencer-specific byte sequence: ${r}`)},t(this,Te).add([67,0,1],function(r,a){t(e,Se)[a]=r[0]+1}),w(this,Re,new ie("universal non-realtime")),w(this,Oe,new ie("universal realtime")),w(this,J,new ie("Yamaha")),w(this,ae,new ie("Roland")),w(this,ge,new ie("Korg")),w(this,De,new ie("Kawai")),w(this,Pe,new ie("Akai")),w(this,Ie,new ie("Casio"));let n=function(r){console.info(`Unrecognized SysEx in "${this.name}" set.`,r)};t(this,Re).default=n,t(this,Oe).default=n,t(this,J).default=n,t(this,ae).default=n,t(this,ge).default=n,t(this,De).default=n,t(this,Pe).default=n,t(this,Ie).default=n,t(this,Re).add([9],r=>{e.switchMode(["gm","?","g2"][r[0]-1],!0),w(e,I,t(e,I)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][r[0]-1]}`),r[0]==2&&e.init()}),t(this,Oe).add([4,1],r=>{w(e,X,((r[1]<<7)+r[0])/16383*100)}).add([4,3],r=>((r[1]<<7)+r[0]-8192)/8192).add([4,4],r=>r[1]-64),t(this,J).add([76,0,0],r=>{switch(r[0]){case 125:{console.info(`XG drum setup reset: ${r}`);break}case 126:{e.switchMode("xg",!0),w(e,I,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,s)=>{a[s]=i};if(r.subarray(1).forEach((i,s)=>{let f=s+r[0];([o,o,o,o,l=>{w(this,X,l*129/16383*100)},l=>{},l=>{}][f]||(()=>{}))(i,s)}),r[0]<4){let i=0;a.forEach(s=>{i=i<<4,i+=s}),i-=1024}}}}).add([76,2,1],r=>{let a="XG ";r[0]<32?(a+="reverb ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(0,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(0,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}time: ${At(s)}s`)},s=>{console.debug(`${a}diffusion: ${s}`)},s=>{console.debug(`${a}initial delay: ${s}`)},s=>{console.debug(`${a}HPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}LPF cutoff: ${_e[s]}Hz`)},s=>{console.debug(`${a}width: ${s}`)},s=>{console.debug(`${a}height: ${s}`)},s=>{console.debug(`${a}depth: ${s}`)},s=>{console.debug(`${a}wall type: ${s}`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},!1,!1,s=>{console.debug(`${a}delay: ${s}`)},s=>{console.debug(`${a}density: ${s}`)},s=>{console.debug(`${a}balance: ${s}`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{}][r[0]+i]||function(){console.warn(`Unknown XG reverb address: ${r[0]}.`)})(o)})):r[0]<64?(a+="chorus ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(1,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(1,!0,s),console.debug(`${a}sub type: ${s+1}`)},s=>{console.debug(`${a}LFO: ${It[s]}Hz`)},s=>{},s=>{console.debug(`${a}feedback: ${s}`)},s=>{console.debug(`${a}delay offset: ${Ut(s)}ms`)},s=>{},s=>{console.debug(`${a}low: ${_e[s]}Hz`)},s=>{console.debug(`${a}low: ${s-64}dB`)},s=>{console.debug(`${a}high: ${_e[s]}Hz`)},s=>{console.debug(`${a}high: ${s-64}dB`)},s=>{console.debug(`${a}dry/wet: ${s}`)},s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},!1,s=>{},s=>{},s=>{},s=>{console.debug(`${a}LFO phase diff: ${(s-64)*3}deg`)},s=>{console.debug(`${a}input mode: ${s?"stereo":"mono"}`)},s=>{}][r[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${r[0]}.`)})(o)})):r[0]<86?(a+="variation ",r.subarray(1).forEach((o,i)=>{([s=>{e.setEffectTypeRaw(2,!1,s),console.info(`${a}main type: ${We[s]}`)},s=>{e.setEffectTypeRaw(2,!0,s),console.debug(`${a}sub type: ${s+1}`)}][r[0]-64+i]||function(){})(o)})):r[0]<97?(a+="variation ",r.subarray(1).forEach((o,i)=>{[s=>{console.debug(`${a}send: ${q(s)}dB`)},s=>{console.debug(`${a}pan: ${s-64}`)},s=>{console.debug(`${a}to reverb: ${q(s)}dB`)},s=>{console.debug(`${a}to chorus: ${q(s)}dB`)},s=>{console.debug(`${a}connection: ${s?"system":"insertion"}`)},s=>{console.debug(`${a}channel: CH${s+1}`)},s=>{console.debug(`${a}mod wheel: ${s-64}`)},s=>{console.debug(`${a}bend wheel: ${s-64}`)},s=>{console.debug(`${a}channel after touch: ${s-64}`)},s=>{console.debug(`${a}AC1: ${s-64}`)},s=>{console.debug(`${a}AC2: ${s-64}`)}][r[0]-86+i](o)})):r[0]>111&&r[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${r[0]}`)}).add([76,2,64],r=>{r.subarray(1).forEach((a,o)=>{let i=o+r[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let s=i-1>>2,f=i-1&3,l=`XG EQ ${s} ${["gain","freq","Q","shape"][f]}: `;[()=>{console.debug(`${l}${a-64}dB`)},()=>{console.debug(`${l}${a} (raw)`)},()=>{console.debug(`${l}${a/10}`)},()=>{console.debug(`${l}${["shelf","peak"][+!!a]}`)}][f]()}})}).add([76,3],r=>{let a=r[0],o=r[1],i=`XG Insertion ${r[0]+1} `;r.subarray(2).forEach((s,f)=>{([l=>{e.setEffectTypeRaw(3+a,!1,l),console.info(`${i}main type: ${We[l]}`)},l=>{e.setEffectTypeRaw(3+a,!0,l),console.debug(`${i}sub type: ${l+1}`)}][o+f]||function(){})(s)})}).add([76,6,0],r=>{let a=r[0];a<64?e.setLetterDisplay(r.subarray(1),"XG letter display",a):w(e,ke,Date.now())}).add([76,7,0],r=>{let a=r[0];w(e,j,0),w(e,oe,Date.now()+3200),t(e,W,de).fill(0);let o=r.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=$.cc*o,f=`XG CH${o+1} `,l=`Unknown XG part address ${i}.`;r.subarray(2).forEach((d,b)=>{i<1?console.debug(l):i<41?([()=>{t(e,p)[s+g[0]]=d},()=>{t(e,p)[s+g[32]]=d},()=>{t(e,P)[o]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!d},()=>{},()=>{e.setChType(o,d,M.xg),console.debug(`${f}type: ${Ye[d]||d}`)},()=>{t(e,S)[$.rpn*o+3]=d},!1,!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{t(e,p)[s+g[128]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[76]]=d},()=>{t(e,p)[s+g[77]]=d},()=>{t(e,p)[s+g[78]]=d},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},()=>{t(e,p)[s+g[73]]=d},()=>{t(e,p)[s+g[75]]=d},()=>{t(e,p)[s+g[72]]=d}][i+b-1]||(()=>{}))():i<48?console.debug(l):i<111?i>102&&i<105&&(t(e,p)[s+g[[5,65][i&1]]]=d):i<114?console.debug(l):i<116?console.debug(`${f}EQ ${["bass","treble"][i&1]} gain: ${d-64}dB`):i<118?console.debug(l):i<120?console.debug(`${f}EQ ${["bass","treble"][i&1]} freq: ${d}`):console.debug(l)})}).add([76,9],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=r[1],s=`PLG-150VL CH${o+1} `;r.subarray(2).forEach((f,l)=>{let d=l+i;switch(d){case 1:{console.info(`${s}breath mode: ${["system","breath","velocity","touch EG"][f]}`);break}case 0:case 27:case 28:break;default:if(d<27){let b=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][d-3>>1];d&1?d<23?(console.debug(`${s}${b} control source: ${Nt(f)}`),f&&f<96&&e.allocateAce(f)):console.debug(`${s}${b} scale break point: ${f}`):console.debug(`${s}${b} depth: ${f-64}`)}}})}).add([76,10],r=>{}).add([76,16],r=>{}).add([76,17,0,0],r=>{}).add([76,112],r=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][r[0]]} for CH${r[2]+1}.`)}).add([73,0,0],(r,a)=>{let o=r[0],i="MU1000 System: ";r.subarray(1).forEach((s,f)=>{let l=o+f;l==8?console.debug(`${i}LCD contrast set to ${s}.`):l==18?(w(e,Z,s?126:0),console.debug(`${i}bank defaults to ${s?"MU100 Native":"MU Basic"}.`)):l>=64&&l<69&&[()=>{e.dispatchEvent("channelactive",s)},()=>{s<8?(e.dispatchEvent("channelmin",s<<4),console.debug(`Octavia System: Minimum CH${(s<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{s<8?(e.dispatchEvent("channelmax",(s<<4)+15),console.debug(`Octavia System: Maximum CH${(s<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,re,!!s),console.info(`Octavia System: RS receiving ${["dis","en"][s]}abled.`)}][l-64]()})}).add([73,10,0],(r,a)=>{let o=r[0],i=`MU1000 RS${t(e,re)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let s=e.chRedir(0,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+63)),console.info(`${i}Show CH1~64`);break}case 3:{let s=e.chRedir(r[1]<<5,a,!0);t(e,re)&&e.dispatchEvent("channelmin",s),t(e,re)&&e.dispatchEvent("channelmax",s+31),console.info(`${i}Show CH${s+1}~CH${s+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,re)){let s=e.chRedir(o-16+(t(e,Ke)<<4),a,!0);e.dispatchEvent("channelactive",s)}}else if(o<36){let s=e.chRedir(o-32<<4,a,!0);t(e,re)&&(e.dispatchEvent("channelmin",s),e.dispatchEvent("channelmax",s+15),w(e,Ke,o-32)),console.info(`${i}Show CH${s+1}~CH${s+16}`)}}).add([93,3],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=`PLG-100SG CH${o+1} `,s=Date.now();if(r[1]==0){let f="",l=0;r.subarray(2).forEach((d,b)=>{b%2==0?f+=Lt[d]||d.toString().padStart("0"):l+=d*13}),s>=t(e,ze)&&t(e,R).unshift("SG Lyric: "),t(e,R)[0]+=`${Bt(f)}`,w(e,ze,s+Math.ceil(l/2)+t(e,Xe)),Y()&&console.debug(`${i}vocals: ${f}`)}else console.warn(`Unknown PLG-100SG data: ${r}`)}),t(this,J).add([76,48],r=>{}).add([76,49],r=>{}).add([76,50],r=>{}).add([76,51],r=>{}),t(this,J).add([89,0],(r,a,o)=>{if(e.eprom){let i=r[0],s=(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM trail to 0x${s.toString(16).padStart(6,"0")}, ${i} bytes.`);let f=e.eprom.data;r.subarray(4).forEach((l,d)=>{let b=d>>3,y=d&7;if(y==7)for(let k=0;k<7;k++)f[s+7*b+k]+=(l>>6-k&1)<<7;else f[s+7*b+y]=l})}}).add([89,1],(r,a,o)=>{let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3];Y()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(r,a,o)=>{if(e.eprom){let i=(r[0]<<21)+(r[1]<<14)+(r[2]<<7)+r[3]+(e.eprom.offset||0);Y()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let s=e.eprom.data;r.subarray(4).forEach((f,l)=>{let d=l>>3,b=l&7;if(b==7)for(let y=0;y<7;y++)s[i+7*d+y]+=(f>>6-y&1)<<7;else s[i+7*d+b]=f})}}).add([89,3],(r,a,o)=>{}),t(this,J).add([39,48],(r,a,o)=>{}).add([43,0,0],(r,a,o)=>{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,()=>{w(this,X,f*129/16383*100)},()=>f-64,()=>f||128,()=>f,()=>f,()=>{console.debug(`TG300 variation on cc${f}.`)}][d](f,d)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}).add([43,1,0],(r,a,o)=>{}).add([43,2],(r,a,o)=>{let i=e.chRedir(r[0],a,!0),s=r[1],f=$.cc*i,l=`TG300 CH${i+1} `;r.subarray(2).forEach((d,b)=>{b<5?([()=>{},()=>{t(e,p)[f+g[0]]=d},()=>{t(e,p)[f+g[32]]=d},()=>{t(e,P)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][b+s]||(()=>{}))(d,b+s):b<21||(b<47?([()=>{t(e,ee)[i]=+!d},()=>{},()=>{},()=>{t(e,S)[$.rpn*i+3]=d},()=>{},()=>{t(e,p)[f+g[7]]=d},!1,!1,()=>{t(e,p)[f+g[10]]=d||128},!1,!1,()=>{console.debug(`${l} AC1 at cc${d}`)},()=>{console.debug(`${l} AC2 at cc${d}`)},()=>{t(e,p)[f+g[128]]=d},()=>{t(e,p)[f+g[93]]=d},()=>{t(e,p)[f+g[91]]=d},()=>{t(e,p)[f+g[94]]=d},()=>{t(e,p)[f+g[76]]=d},()=>{t(e,p)[f+g[77]]=d},()=>{t(e,p)[f+g[74]]=d},()=>{t(e,p)[f+g[71]]=d},()=>{t(e,p)[f+g[73]]=d},()=>{t(e,p)[f+g[75]]=d},()=>{t(e,p)[f+g[72]]=d},()=>{t(e,p)[f+g[78]]=d}][b+s-21]||(()=>{}))(d,b+s):b<95||([()=>{t(e,p)[f+g[65]]=d},()=>{t(e,p)[f+g[5]]=d}][b+s-95]||(()=>{}))(d,b+s))})}).add([43,7,0],(r,a,o)=>{let i=r[0];e.setLetterDisplay(r.subarray(1),"TG300 letter display",i)}).add([43,7,1],(r,a,o)=>{w(e,j,0),w(e,oe,Date.now()+3200),t(e,W,de).fill(0),r.forEach(function(i,s){let f=Math.floor(s/16),l=s%16,d=(l*3+f)*7,b=7,y=0;for(d-=l*5,f==2&&(b=2);y>6-y&1,y++})}),t(this,ae).add([66,18,0,0,127],(r,a,o)=>{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,Z,3),w(e,I,!1),t(e,be).fill(0),console.info(`GS system to ${["single","dual"][r[0]]} mode.`)}).add([66,18,64,0],(r,a,o)=>{switch(r[0]){case 127:{e.switchMode("gs",!0),t(e,p)[$.cc*9]=120,t(e,p)[$.cc*25]=120,t(e,p)[$.cc*41]=120,t(e,p)[$.cc*57]=120,w(e,I,!1),t(e,be).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{let d=l+r[0];[s,s,s,s,b=>{w(this,X,b*129/16383*100)},b=>{},b=>{}][d](f,l)}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,64,1],r=>{let a=r[0];if(a<16){let o="".padStart(a," ");r.subarray(1).forEach((i,s)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?r.subarray(1).forEach((o,i)=>{let s=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${s}type: ${pt[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${s}predelay: ${o}ms`)},()=>{console.info(`${s}type: ${Ht[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)},()=>{console.debug(`${s}to delay: ${q(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?r.subarray(1).forEach((o,i)=>{let s="GS delay ";([()=>{console.info(`${s}type: ${Gt[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${s}to reverb: ${q(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],r=>{let a="GS EQ ";r.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][r[0]+i]||function(){console.warn(`Unknown GS EQ address: ${r[0]+i}`)})()})}).add([66,18,64,3],r=>{let a="GS EFX ",o=function(i,s){let f=_t(t(e,Q).subarray(10,12),s,i);f&&console.debug(`${a}${bt(t(e,Q).subarray(10,12))} ${f}`)};r.subarray(1).forEach((i,s)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${bt(t(e,Q).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${q(i)}dB`)},()=>{console.debug(`${a}to chorus: ${q(i)}dB`)},()=>{console.debug(`${a}to delay: ${q(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][r[0]+s]||function(f,l){console.warn(`Unknown GS EFX address: ${l}`)})(i,r[0]+s)})}).add([66,18,65],r=>{}).add([69,18,16],r=>{var a;switch(r[0]){case 0:{let o=r[1];e.setLetterDisplay(r.subarray(2),"GS display text",o);break}case 32:{w(e,oe,Date.now()+3200),r[1]==0&&w(e,j,Math.max(Math.min(r[2]-1,9),0));break}default:if(r[0]<11){t(e,j)>9&&w(e,j,0),w(e,oe,Date.now()+3200),(a=t(e,fe)[r[0]-1])!=null&&a.length||(t(e,fe)[r[0]-1]=new Uint8Array(256));let o=t(e,fe)[r[0]-1],i=r[1];o.fill(0);let s=r.subarray(2);for(let f=0;f>4-v&1,v++})}else console.warn(`Unknown GS display section: ${r[0]}`)}});let h=function(r,a,o){let i=r[0],s=$.cc*a,f=$.rpn*a,l=`GS CH${a+1} `;i<3?r.subarray(1).forEach((d,b)=>{[()=>{t(e,p)[s+g[0]]=d},()=>{t(e,P)[a]=d},()=>{let y=e.chRedir(d,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))}][i+b]()}):i<19||(i<44?r.subarray(1).forEach((d,b)=>{([()=>{t(e,ee)[a]=+!d},!1,()=>{e.setChType(a,d<<1,M.gs),console.debug(`${l}type: ${d?"drum ":"melodic"}${d||""}`)},()=>{t(e,S)[f+3]=d},!1,()=>{t(e,p)[s+g[7]]=d},!1,!1,()=>{t(e,p)[s+g[10]]=d||128},!1,!1,()=>{console.debug(`${l}CC 1: cc${d}`)},()=>{console.debug(`${l}CC 2: cc${d}`)},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[91]]=d},!1,!1,()=>{t(e,S)[f+1]=d},()=>{t(e,S)[f+2]=d},()=>{t(e,p)[s+g[94]]=d}][i+b-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},c=function(r,a){let o=r[0],i=`GS CH${a+1} `;o<2?r.subarray(1).forEach((s,f)=>{[()=>{t(e,p)[$.cc*a+g[32]]=s},()=>{}][o+f]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?r.subarray(1).forEach((s,f)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][s]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][s]}`)}][o+f-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,ae).add([66,18,64,16],(r,a)=>{h(r,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(r,a)=>{h(r,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(r,a)=>{h(r,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(r,a)=>{h(r,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(r,a)=>{h(r,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(r,a)=>{h(r,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(r,a)=>{h(r,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(r,a)=>{h(r,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(r,a)=>{h(r,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(r,a)=>{h(r,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(r,a)=>{h(r,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(r,a)=>{h(r,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(r,a)=>{h(r,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(r,a)=>{h(r,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(r,a)=>{h(r,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(r,a)=>{h(r,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(r,a)=>{c(r,e.chRedir(9,a,!0))}).add([66,18,64,65],(r,a)=>{c(r,e.chRedir(0,a,!0))}).add([66,18,64,66],(r,a)=>{c(r,e.chRedir(1,a,!0))}).add([66,18,64,67],(r,a)=>{c(r,e.chRedir(2,a,!0))}).add([66,18,64,68],(r,a)=>{c(r,e.chRedir(3,a,!0))}).add([66,18,64,69],(r,a)=>{c(r,e.chRedir(4,a,!0))}).add([66,18,64,70],(r,a)=>{c(r,e.chRedir(5,a,!0))}).add([66,18,64,71],(r,a)=>{c(r,e.chRedir(6,a,!0))}).add([66,18,64,72],(r,a)=>{c(r,e.chRedir(7,a,!0))}).add([66,18,64,73],(r,a)=>{c(r,e.chRedir(8,a,!0))}).add([66,18,64,74],(r,a)=>{c(r,e.chRedir(10,a,!0))}).add([66,18,64,75],(r,a)=>{c(r,e.chRedir(11,a,!0))}).add([66,18,64,76],(r,a)=>{c(r,e.chRedir(12,a,!0))}).add([66,18,64,77],(r,a)=>{c(r,e.chRedir(13,a,!0))}).add([66,18,64,78],(r,a)=>{c(r,e.chRedir(14,a,!0))}).add([66,18,64,79],(r,a)=>{c(r,e.chRedir(15,a,!0))}),t(this,ge).add([54,65],(r,a)=>{e.switchMode("x5d");let o=(r[1]<<7)+r[0],i=(r[3]<<7)+r[2],s=e.chRedir(o&15,a,!0),f=$.cc*s;[()=>{i<1||(i<101?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,P)[s]=i-1,t(e,p)[f+g[0]]=82):i<229?(e.setChType(s,e.CH_MELODIC,M.x5d),t(e,P)[s]=i-101,t(e,p)[f+g[0]]=56):(e.setChType(s,e.CH_DRUMS,M.x5d),t(e,P)[s]=jt[i-229]||0,t(e,p)[f+g[0]]=62))},()=>{t(e,p)[f+g[7]]=i},()=>{i<31&&(t(e,p)[f+g[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,p)[f+g[93]]=Ze(i)},()=>{t(e,p)[f+g[91]]=Ze(i)},()=>{t(e,S)[s*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,S)[s*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,S)[s*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=82,s=0,f=0,l="MSB PRG LSB NME";ne(r,function(d,b){if(b<16400){let y=b%164;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}s>99&&(i=90,s=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,77,0],(r,a)=>{e.switchMode("x5d",!0);let o="",i=90,s=0,f=0,l="MSB PRG LSB NME";ne(r,function(d,b){if(b<13600){let y=b%136;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(l)}).add([54,78],(r,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][r[0]]} mode.`)}).add([54,85],(r,a)=>{e.switchMode("x5d",!0),ne(r,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(r,a)=>{e.switchMode("x5d",!0),ne(r,function(o,i,s,f){if(i<192){let l=e.chRedir(Math.floor(i/12),a,!0),d=l*$.cc;switch(i%12){case 0:{o<128?(e.setChType(l,e.CH_MELODIC,M.x5d),t(e,p)[d+g[0]]=82,t(e,P)[l]=o):(e.setChType(l,e.CH_DRUMS,M.x5d),t(e,p)[d+g[0]]=62,t(e,P)[l]=jt[o-128]),o>0&&(t(e,U)[l]=1);break}case 1:{t(e,p)[d+g[7]]=o;break}case 2:{t(e,S)[l*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,S)[l*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,p)[d+g[10]]=Math.round((o-15)*4.2+64));break}case 5:{let b=o>>4,y=o&15;t(e,p)[d+g[91]]=Ze(y),t(e,p)[d+g[93]]=Ze(b);break}case 10:break;case 11:{let b=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[l]=o,(b!=l||y)&&(console.info(`X5D Part CH${l+1} receives from CH${b+1}.`),e.buildRchTree())}}}else{let l=e.chRedir(i-192,a,!0)}})}),t(this,ae).add([22,18,127],r=>{e.switchMode("mt32",!0),w(e,I,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1];r.subarray(2).forEach((f,l)=>{let d=l+s;t(e,me)[d+(i-1)*16]=f,([!1,()=>{let b=t(e,me)[i-1<<4];if(b<3)if(t(e,le)[i]=1,b==2)for(let y=0;y{t(e,S)[i*$.rpn+3]=f+40},()=>{t(e,S)[i*$.rpn+1]=f+14},()=>{t(e,S)[i*$.rpn]=f},!1,()=>{t(e,p)[$.cc*i+g[91]]=f?127:0},!1,()=>{t(e,p)[$.cc*i+g[7]]=f},()=>{t(e,p)[$.cc*i+g[10]]=Math.ceil(f*9.05)}][d]||(()=>{}))()})}).add([22,18,1],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(r,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),s=r[1]+(r[0]<<7);s<10&&(t(e,le)[i]=1),r.subarray(2).forEach((f,l)=>{let d=l+s;d<14&&(t(e,te)[(i-1)*$.cmt+d]=f)})}).add([22,18,3],(r,a,o)=>{if(e.switchMode("mt32"),r[0]){let i=r[1]-16}else{let i=r[1];r.subarray(2).forEach((s,f)=>{let l=f+i;t(e,me)[l]=s;let d=e.chRedir(1+l>>4,a,!0),b=l&15;([!1,()=>{let y=t(e,me)[d-1<<4];if(y<3)if(t(e,le)[d]=1,y==2)for(let k=0;k{t(e,S)[d*$.rpn+3]=s+40},()=>{t(e,S)[d*$.rpn+1]=s+14},()=>{t(e,S)[d*$.rpn]=s},!1,()=>{t(e,p)[$.cc*d+g[91]]=s?127:0},!1,()=>{t(e,p)[$.cc*d+g[7]]=s},()=>{t(e,p)[$.cc*d+g[10]]=Math.ceil(s*9.05)}][b]||(()=>{}))()})}}).add([22,18,4],(r,a,o)=>{e.switchMode("mt32");let i=r[1]+(r[0]<<7);r.subarray(2).forEach((s,f)=>{let l=f+i,d=e.chRedir(Math.floor(l/246+1),a,!0),b=l%246;b<14&&(t(e,te)[(d-1)*$.cmt+b]=s),b<10&&(t(e,le)[d]=1)})}).add([22,18,5],(r,a,o)=>{e.switchMode("mt32");let i=(r[0]<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f,d=Math.floor(l/8),b=l&7,y=d*8;t(e,Ve)[l]=s,([!1,()=>{let k=t(e,Ve)[y];if(k<3){let v="";if(k==2){let E=$.cmt*d;v=`MT-m:${s.toString().padStart(3,"0")}`}else v=e.baseBank.get(0,s+(k<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:d}),e.userBank.load(`MSB LSB PRG NME 000 127 ${d} ${v}`,!0)}}][b]||(()=>{}))()})}).add([22,18,8],(r,a,o)=>{e.switchMode("mt32");let i=((r[0]&1)<<7)+r[1];r.subarray(2).forEach((s,f)=>{let l=i+f;l<$.cmt&&(t(e,Ee)[(r[0]>>1)*$.cmt+l]=s)})}).add([22,18,16],(r,a,o)=>{e.switchMode("mt32");let i=r[1],s=!1,f=function(l,d){t(e,H)[d-12]=l,s=!0};r.subarray(2).forEach((l,d)=>{let b=d+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,f,f,f,f,f,f,f,f,f,()=>{w(e,X,l)}][b]||(()=>{}))(l,d)}),s&&e.buildRchTree()}).add([22,18,32],r=>{e.switchMode("mt32");let a=r[1],o=" ".repeat(a);r.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,he,o.padStart(20," ")),w(e,ke,Date.now()+3200)}).add([22,18,82],(r,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,P)[o+i]=gt[i-1]);console.info("MT-32 alt reset complete.")}),t(this,ge).add([66,0],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][r[0]]} mode.`)}).add([66,1],(r,a)=>{e.switchMode(["ns5r","05rw"][r[0]],!0),w(e,I,!1)}).add([66,18,0,0],(r,a)=>{let o=r[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,I,!1);break}case 125:{console.info(`NS5R drum setup reset: ${r}`);break}default:if(o<10){let i=[0,0,0,0],s=(f,l)=>{i[l]=f};if(r.subarray(1).forEach((f,l)=>{[s,s,s,s,()=>{w(e,X,f*129/16383*100)},()=>f-64,()=>f-64,()=>{},()=>{},()=>{}][o+l]()}),r[0]<4){let f=0;i.forEach(l=>{f=f<<4,f+=l}),f-=1024}}}}).add([66,18,0,1],(r,a)=>{}).add([66,18,0,2],(r,a)=>{}).add([66,18,1],(r,a)=>{let o=e.chRedir(r[0],a,!0),i=o*$.cc,s=r[1],f=`NS5R CH${o+1} `;r.subarray(2).forEach((l,d)=>{let b=s+d;b<3?[()=>{t(e,p)[i+g[0]]=l||121},()=>{t(e,p)[i+g[32]]=l},()=>{t(e,P)[o]=l}][b]():b<8||(b<14?[()=>{let y=e.chRedir(l,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${f}receives from CH${y+1}`))},()=>{t(e,ee)[o]=+!l},()=>{e.setChType(o,l,M.ns5r),console.debug(`${f}type: ${Ye[l]}`)},()=>{t(e,S)[$.rpn*o+3]=l},()=>{},()=>{}][b-8]():b<16||(b<33?[()=>{t(e,p)[i+g[7]]=l},()=>{t(e,p)[i+g[11]]=l},()=>{},()=>{},()=>{t(e,p)[i+g[10]]=l||128},()=>{},()=>{},()=>{t(e,p)[i+g[93]]=l},()=>{t(e,p)[i+g[91]]=l},()=>{t(e,p)[i+g[76]]=l},()=>{t(e,p)[i+g[77]]=l},()=>{t(e,p)[i+g[78]]=l},()=>{t(e,p)[i+g[74]]=l},()=>{t(e,p)[i+g[71]]=l},()=>{t(e,p)[i+g[73]]=l},()=>{t(e,p)[i+g[75]]=l},()=>{t(e,p)[i+g[72]]=l}][b-16]():b<112||b<114&&[()=>{t(e,p)[i+g[5]]=l},()=>{t(e,p)[i+g[65]]=l}][b-112]()))})}).add([66,18,8,0],(r,a)=>{let o=r[0];if(o<32)e.setLetterDisplay(r.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,oe,Date.now()+3200),w(e,j,10),t(e,W,de).fill(0);let s=r.subarray(1),f=4;s.forEach(function(l,d){let b=d+i,y=b>>4,k=b&15;if(b<80){let v=y>3,E=0,x=y0;)t(e,W,de)[k*32+y*7+(x-E)]=v&1,v=v>>1,E++}})}}).add([66,52],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1);let o="";ne(r,(i,s)=>{s<8?(i>31&&(o+=String.fromCharCode(i)),s==7&&(e.aiEfxName=o)):s<10&&e.setEffectType(s-8,44,i)})}).add([66,53],(r,a)=>{e.switchMode("ns5r",!0),w(e,I,!1),ne(r,function(o,i){switch(!0){case i<2944:{let s=e.chRedir(Math.floor(i/92),a,!0),f=s*$.cc;switch(i%92){case 0:{t(e,p)[f+g[0]]=o||121;break}case 1:{t(e,p)[f+g[32]]=o;break}case 2:{t(e,P)[s]=o,o>0&&(t(e,U)[s]=1);break}case 3:{let l=e.chRedir(o,a,!0);t(e,H)[s]=l,s!=l&&(console.info(`NS5R CH${s+1} receives from CH${l+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,S)[s*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,p)[f+g[7]]=o;break}case 11:{t(e,p)[f+g[11]]=o;break}case 14:{t(e,p)[f+g[10]]=o||128;break}case 19:{t(e,p)[f+g[93]]=o;break}case 20:{t(e,p)[f+g[91]]=o;break}case 84:{t(e,p)[f+g[65]]=o;break}case 85:{t(e,p)[f+g[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=80,s=0,f=0,l="MSB PRG LSB NME";ne(r,function(d,b){let y=b%158;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:{i=d&127;break}case y==12:{f=d&127;break}case y==13:{l+=` ${i} ${s} ${f} ${o.trim().replace("Init Voice","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(l)}).add([66,55],(r,a)=>{e.switchMode("ns5r",!0);let o="",i=88,s=0,f=0,l="MSB PRG LSB NME";ne(r,function(d,b){let y=b%126;switch(!0){case y<10:{d>31&&(o+=String.fromCharCode(d));break}case y==11:break;case y==12:break;case y==13:{l+=` -${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ne(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,De).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,Z,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,P)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,P)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,P)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,P)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,P)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,Pe).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,J).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,J).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,O)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,D),!0)},()=>{d&&(t(e,U)[i]=1),t(e,P)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,ee)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})}),t(this,ae).add([0,72,18,0,0,0,0],(r,a,o)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,Z))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,D)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,Z),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,Z)}return e}getChSource(){return t(this,H)}getChType(){return t(this,O)}setChType(e,n,h=t(this,D),c=!1){n&=15,t(this,O)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,P)}getTexts(){return t(this,T).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,oe)}}getLetter(){return{text:t(this,he),expire:t(this,ke)}}getMode(){return $e[t(this,D)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,ce)[h]&&(t(e,ce)[h]=t(e,L)[n])}),t(this,ce)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,Z);$e[t(this,D)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,D)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,Ee).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,P)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,D)]);if(t(this,le)[e])switch(t(this,D)){case M.mt32:n.ending="~",n.name="",t(this,te).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,he," ".repeat(h)),e.forEach(o=>{w(r,he,t(r,he)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,he,t(r,he).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,D,0),w(this,ve,0),w(this,Z,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,P).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,ce).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,T,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,he,""),w(this,oe,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,O).fill(this.CH_MELODIC),t(this,O)[9]=this.CH_DRUM1,t(this,O)[25]=this.CH_DRUM3,t(this,O)[41]=this.CH_DRUMS,t(this,O)[57]=this.CH_DRUMS,t(this,O)[73]=this.CH_DRUM5,t(this,O)[89]=this.CH_DRUM7,t(this,O)[105]=this.CH_DRUMS,t(this,O)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,Ee).fill(0),t(this,me).fill(0),t(this,te).fill(0),t(this,le).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,D)==0||n){let c=t(this,D);w(this,D,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,Z,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,O)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,P)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,ce).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,T).length>100&&t(this,T).splice(100,t(this,T).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},D=new WeakMap,j=new WeakMap,oe=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,O=new WeakMap,p=new WeakMap,ue=new WeakMap,P=new WeakMap,L=new WeakMap,ee=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,ce=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,le=new WeakMap,me=new WeakMap,te=new WeakMap,Ve=new WeakMap,Ee=new WeakMap,Q=new WeakMap,ve=new WeakMap,Z=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,he=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,T=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,J=new WeakMap,ae=new WeakMap,ge=new WeakMap,De=new WeakMap,Pe=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);R();R();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){m(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),Et=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);m(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new Et(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new Et(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let E={type:y.type,data:y.data,track:b,part:0};y.type>14?E.meta=y.metaType:E.part=y.channel,e.push(new rr(a/c/h*60+o,E))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");m(this,qe,void 0);m(this,Ue,"");m(this,Le,[]);m(this,Be,new Uint8ClampedArray(128));m(this,st,new Uint8ClampedArray(128));m(this,xe,.5);m(this,je,120);m(this,F,4);m(this,Ne,4);m(this,ye,0);m(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((E,x)=>{t(this,st)[x]=E}),r.device.newStrength(),n.forEach(function(E){let x=E.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),E.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(E,x,A){A[x]=Math.max(t(r,st)[x],E);let V=A[x]-t(r,Be)[x],se=g.length*x;if(V>=0){let lt=4*.25**(f[se+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[se+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(E,x){E&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; +${i} ${s} ${f} ${o.trim().replace("Init Combi","")}`,s++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(l)}).add([66,125],r=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][r[0]]||"white")}).add([66,127],r=>{let a=new Uint8Array(5760);ne(r,(o,i,s)=>{if(i<720)for(let f=0;f<8;f++)a[i*8+f]=o>>7-f&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(r,a,o)=>{t(e,ge).run([66,...r],a,o)}),t(this,De).add([16,0,8,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="K11 ";([()=>{e.switchMode("k11",!0),w(e,I,!1),w(e,Z,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,8,1],(r,a,o)=>{let i=e.chRedir(r[1],a,!0),s=$.cc*i,f=$.rpn*i,l=(r[3]<<4)+r[4],d=`K11 CH${i+1} `;([()=>{l<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,p)[s+g[0]]=0,t(e,P)[i]=l):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,P)[i]=l-128)},()=>{let b=e.chRedir(l,a,!0);t(e,H)[i]=b,i!=b&&(e.buildRchTree(),console.info(`${d}receives from CH${b+1}`))},()=>{t(e,p)[s+g[7]]=l},()=>{t(e,U)[i]=l},()=>{t(e,p)[s+g[10]]=l},()=>{t(e,S)[f+3]=l+40},()=>{t(e,S)[f+1]=l>>1,t(e,S)[f+2]=l&1},()=>{t(e,p)[s+g[91]]=l?127:0},()=>{},()=>{t(e,p)[s+g[74]]=l},()=>{t(e,p)[s+g[73]]=l},()=>{t(e,p)[s+g[72]]=l}][r[0]]||(()=>{}))()}).add([16,0,9,0],(r,a,o)=>{let i=(r[2]<<4)+r[3],s="GMLX ";([()=>{console.debug(`${s}reverb type: ${i}`)},()=>{console.debug(`${s}reverb time: ${i}`)},()=>{console.debug(`${s}reverb predelay: ${i}`)},()=>{console.debug(`${s}depth high: ${i}`)},()=>{console.debug(`${s}depth low: ${i}`)}][r[0]]||(()=>{}))()}).add([16,0,9,3],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc;[()=>{i<128?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=0,t(e,P)[s]=i):i<160?(e.setChType(s,e.CH_MELODIC,M.k11),t(e,p)[f+g[0]]=0,t(e,p)[f+g[32]]=7,t(e,P)[s]=i-100):(e.setChType(s,e.CH_DRUMS,M.k11),t(e,p)[f+g[0]]=122,t(e,p)[f+g[32]]=0,t(e,P)[s]=i-160)},()=>{let l=e.chRedir(i,a,!0);t(e,H)[s]=l,s!=l&&(e.buildRchTree(),console.info(`GMLX CH${s+1} receives from CH${l+1}`))}][r[0]]()}).add([16,0,9,4],(r,a,o)=>{let i=(r[2]<<4)+r[3],s=e.chRedir(r[1],a,!0),f=s*$.cc,l=s*$.rpn,d=`GMLX CH${s+1} `;[()=>{t(e,U)[s]=i},()=>{t(e,p)[f+g[7]]=i},()=>{t(e,p)[f+g[10]]=i},()=>{t(e,p)[f+g[91]]=i?127:0},()=>{t(e,S)[l+3]=i+40},()=>{t(e,S)[l+1]=i},()=>{t(e,S)[l]=i},()=>{}][r[0]]()}),t(this,Pe).add([66,93,64],(r,a,o)=>{let i=r[2];switch(r[0]){case 0:{switch(r[1]){case 4:{w(e,X,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(r[1]){case 48:{console.debug(`SG reverb type: ${pt[i]}`);break}}break}default:if(r[0]>>4==1){let s=e.chRedir(r[0]&15,a,!0);if(r[1]==2){let f=e.chRedir(i,a,!0);t(e,H)[s]=f,s!=f&&(e.buildRchTree(),console.info(`SG CH${s+1} receives from CH${f+1}`))}else r[1]==19&&(t(e,p)[$.cc*s+g[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${r}`)}}),t(this,Ie).add([9],(r,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][r[0]]||"off"}`)}),t(this,J).add([127,0],(r,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...r]);t(e,J).run(i,a,o)}).add([127,1,0,0],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",s=r[0];r.subarray(1).forEach((f,l)=>{([()=>{w(e,X,f*12900/16383)}][s+l]||(()=>{console.info(`Unrecognized ${i}ID: ${s+l}`)}))()})}).add([127,1,0,0,14],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,0,15],(r,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",s=[];s[95]=(f,l,d)=>{console.debug(`${i}multi edit buffer: ${f[1]}`)},(s[r[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${r[0]}.`)}))(r.subarray(1))}).add([127,1,0,58,55],(r,a,o)=>{e.switchMode("s90es");let i=e.chRedir(r[0],a,!0),s=$.cc*i,f=r[1],l=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(l,r),!(r[0]>15)&&r.subarray(2).forEach((d,b)=>{([()=>{t(e,p)[s+g[0]]=d},()=>{d&&(t(e,U)[i]=1),t(e,p)[s+g[32]]=d,t(e,T)[i]=this.setChType(i,[32,40].indexOf(d)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,D),!0)},()=>{d&&(t(e,U)[i]=1),t(e,P)[i]=d},()=>{let y=e.chRedir(d,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${l}receives from CH${y+1}`))},()=>{t(e,ee)[i]=d?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,p)[s+g[7]]=d},()=>{t(e,p)[s+g[10]]=d},!1,!1,!1,()=>{t(e,p)[s+g[91]]=d},()=>{t(e,p)[s+g[93]]=d},()=>{t(e,p)[s+g[94]]=d},()=>{t(e,p)[s+g[128]]=d},()=>{},()=>{t(e,p)[s+g[74]]=d},()=>{t(e,p)[s+g[71]]=d},!1,()=>{t(e,p)[s+g[65]]=d},()=>{t(e,p)[s+g[5]]=d},()=>{}][f+b]||(()=>{}))()})}).add([127,1,54,16],(r,a,o)=>{e.switchMode("s90es");let i=r[0];r.subarray(1).forEach((s,f)=>{let d=`S90/Motif ES EQ${(f>>2)+1} `;([()=>{let b=s-64},()=>{let b=_e[s]},()=>{let b=s/10},()=>{let b=s}][i+f&3]||(()=>{}))()})}),t(this,ae).add([0,72,18,0,0,0,0],(r,a,o)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}chRedir(e,n,h){if(t(this,Se)[n])return(t(this,Se)[n]-1)*16+e;if([2,3].indexOf(t(this,Z))>-1){if(h==1)return e;let c=0,r=!0;for(;r;)t(this,be)[e+c]==0?(t(this,be)[e+c]=n,console.debug(`Assign track ${n} to channel ${e+c+1}.`),r=!1):t(this,be)[e+c]==n?r=!1:(c+=16,c>=128&&(c=0,r=!1));return e+c}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,h)=>{var c;(c=e[n])!=null&&c.constructor||(e[n]=[]),e[n].push(h)}),w(this,tt,e)}getActive(){let e=t(this,U).slice();return t(this,D)==M.mt32,e}getCc(e){let n=e*$.cc,h=t(this,p).subarray(n,n+$.cc);return h[g[0]]=h[g[0]]||t(this,ve),h[g[32]]=h[g[32]]||t(this,Z),h}getCcCh(e,n){if(Je.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,p)[$.cc*e+g[n]]}getCcAll(){let e=t(this,p).slice();for(let n=0;n<$.ch;n++){let h=n*$.cc;e[h+g[0]]=e[h+g[0]]||t(this,ve),e[h+g[32]]=e[h+g[32]]||t(this,Z)}return e}getChSource(){return t(this,H)}getChType(){return t(this,T)}setChType(e,n,h=t(this,D),c=!1){n&=15,t(this,T)[e]=n,n>0&&!c&&(t(this,p)[e*$.cc+g[0]]=Me[h])}getPitch(){return t(this,we)}getProgram(){return t(this,P)}getTexts(){return t(this,R).slice()}getVel(e){let n=new Map,h=this;return t(h,B).forEach(function(c,r){let a=Math.floor(c/128),o=c%128;e==a&&t(h,L)[c]>0&&n.set(o,{v:t(h,L)[c],s:t(h,G)[r]})}),n}getBitmap(){return{bitmap:t(this,W,de),expire:t(this,oe)}}getLetter(){return{text:t(this,he),expire:t(this,ke)}}getMode(){return $e[t(this,D)]}getMaster(){return{volume:t(this,X)}}getRawStrength(){let e=this;return t(this,B).forEach(function(n){let h=Math.floor(n/128);t(e,L)[n]>t(e,ce)[h]&&(t(e,ce)[h]=t(e,L)[n])}),t(this,ce)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(h,c){e[c]=Math.floor(h*t(n,p)[c*$.cc+g[7]]*t(n,p)[c*$.cc+g[11]]*t(n,X)/803288)}),e}getRpn(){return t(this,S)}getNrpn(){return t(this,Fe)}getVoice(e,n,h,c){let r=e||t(this,ve),a=n,o=h||t(this,Z);$e[t(this,D)]=="ns5r"&&r>0&&r<56&&(o=3);let i=this.userBank.get(r,a,o,c);if($e[t(this,D)]=="mt32"&&i.name.indexOf("MT-m:")==0){let s=parseInt(i.name.slice(5)),f=s*$.cmt,l="";t(this,Ee).subarray(f,f+10).forEach(d=>{d>31&&(l+=String.fromCharCode(d))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${l}`,!0),i.name=l,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(r,a,o,c)),i}getChVoice(e){let n=this.getVoice(t(this,p)[e*$.cc+g[0]],t(this,P)[e],t(this,p)[e*$.cc+g[32]],$e[t(this,D)]);if(t(this,le)[e])switch(t(this,D)){case M.mt32:n.ending="~",n.name="",t(this,te).subarray(14*(e-1),14*(e-1)+10).forEach(h=>{h>31&&(n.name+=String.fromCharCode(h))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,we)[e]/8192*t(this,S)[n]+(t(this,S)[n+3]-64)+((t(this,S)[n+1]<<7)+t(this,S)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,Q).subarray(n,n+2)}setEffectTypeRaw(e=0,n,h){let c=3*e;t(this,Q)[c]=1,t(this,Q)[c+1+ +n]=h}setEffectType(e=0,n,h){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,h)}setLetterDisplay(e,n,h=0,c=3200){let r=this,a;w(r,he," ".repeat(h)),e.forEach(o=>{w(r,he,t(r,he)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(r,ke,Date.now()+3200),w(r,he,t(r,he).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,s)=>{s[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,h=0;for(;n&&h<$.ace;)t(this,ue)[h]==e?n=!1:t(this,ue)[h]||(n=!1,t(this,ue)[h]=e,console.info(`Allocated cc${e} to ACE slot ${h}.`)),h++;h>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ue)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let h=t(this,ue)[n];if(h){if(Je.indexOf(h)>=0)return t(this,p)[e*$.cc+g[h]];throw new Error(`Invalid ACE source: ${h}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,D,0),w(this,ve,0),w(this,Z,0),w(this,pe,0),t(this,U).fill(0),t(this,p).fill(0),t(this,ue).fill(0),t(this,P).fill(0),t(this,L).fill(0),t(this,B).fill(0),t(this,ce).fill(0),t(this,we).fill(0),t(this,Fe).fill(0),t(this,et).fill(0),w(this,X,100),w(this,R,[]),w(this,Xe,500),w(this,ze,0),w(this,ke,0),w(this,he,""),w(this,oe,0),w(this,j,0),t(this,W,de).fill(0),w(this,I,!1),w(this,Ke,0),w(this,re,!0),t(this,H).forEach(function(n,h,c){c[h]=h}),this.buildRchTree(),e==0&&(t(this,be).fill(0),t(this,Se).fill(0)),t(this,p)[$.cc*9]=Me[0],t(this,p)[$.cc*25]=Me[0],t(this,p)[$.cc*41]=Me[0],t(this,p)[$.cc*57]=Me[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ve).fill(0),t(this,Ee).fill(0),t(this,me).fill(0),t(this,te).fill(0),t(this,le).fill(0),t(this,Q).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let h=n*$.cc;t(this,p)[h+g[7]]=100,t(this,p)[h+g[11]]=127,t(this,p)[h+g[10]]=64,t(this,p)[h+g[71]]=64,t(this,p)[h+g[72]]=64,t(this,p)[h+g[73]]=64,t(this,p)[h+g[74]]=64,t(this,p)[h+g[75]]=64,t(this,p)[h+g[76]]=64,t(this,p)[h+g[77]]=64,t(this,p)[h+g[78]]=64,t(this,p)[h+g[91]]=40,t(this,p)[h+g[101]]=127,t(this,p)[h+g[100]]=127,t(this,p)[h+g[99]]=127,t(this,p)[h+g[98]]=127;let c=n*$.rpn;t(this,S)[c]=2,t(this,S)[c+1]=64,t(this,S)[c+2]=0,t(this,S)[c+3]=64,t(this,S)[c+4]=0,t(this,S)[c+5]=0}}switchMode(e,n=!1){let h=$e.indexOf(e);if(h>-1){if(t(this,D)==0||n){let c=t(this,D);w(this,D,h),w(this,j,0),w(this,ve,Xt[0][h]),w(this,Z,Xt[1][h]);for(let a=0;a<$.ch;a++)t(this,T)[a]>0&&t(this,p)[a*$.cc+g[0]]==Me[c]&&(t(this,p)[a*$.cc]=Me[h]);switch(this.initOnReset,h){case M.mt32:{gt.forEach((a,o)=>{let i=o+1;t(this,U)[i]||(t(this,P)[i]=a,t(this,p)[i*$.cc+g[91]]=127)});break}}let r;switch(h){case M.gs:{r=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{r=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:r=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,Q)[3*a]||(t(this,Q)[3*a+1]=r[2*a],t(this,Q)[3*a+2]=r[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,ce).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,rt)[e.type].call(this,e);{let h=this.chRedir(e.part,e.track),c=!1;(n=t(this,tt)[h])==null||n.forEach(r=>{e.channel=r,c=!0,t(this,rt)[e.type].call(this,e)}),c||console.warn(`${zt[e.type]?zt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${h+1} without any recipient.`)}t(this,R).length>100&&t(this,R).splice(100,t(this,R).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{nt.context=this,this.userBank.load(await nt.read(e,n));break}}}},D=new WeakMap,j=new WeakMap,oe=new WeakMap,fe=new WeakMap,W=new WeakSet,de=function(){return t(this,fe)[t(this,j)]},Yt=function(e){t(this,fe)[t(this,j)]=e},U=new WeakMap,H=new WeakMap,T=new WeakMap,p=new WeakMap,ue=new WeakMap,P=new WeakMap,L=new WeakMap,ee=new WeakMap,B=new WeakMap,G=new WeakMap,we=new WeakMap,ce=new WeakMap,Ce=new WeakMap,S=new WeakMap,Fe=new WeakMap,et=new WeakMap,le=new WeakMap,me=new WeakMap,te=new WeakMap,Ve=new WeakMap,Ee=new WeakMap,Q=new WeakMap,ve=new WeakMap,Z=new WeakMap,X=new WeakMap,pe=new WeakMap,Xe=new WeakMap,ze=new WeakMap,he=new WeakMap,ke=new WeakMap,Ke=new WeakMap,re=new WeakMap,I=new WeakMap,tt=new WeakMap,$t=new WeakMap,R=new WeakMap,be=new WeakMap,Se=new WeakMap,_=new WeakMap,Te=new WeakMap,N=new WeakMap,rt=new WeakMap,ot=new WeakMap,Re=new WeakMap,Oe=new WeakMap,J=new WeakMap,ae=new WeakMap,ge=new WeakMap,De=new WeakMap,Pe=new WeakMap,Ie=new WeakMap,Wt);var kt=ur(Zt(),1);O();O();var at,Jt,tr=(Jt=class{constructor(u,e,n,h){m(this,at,!1);w(this,at,u),this.start=e,this.end=n,this.data=h}get duration(){return this.ranged?this.end-this.start:0}get ranged(){return t(this,at)}},at=new WeakMap,Jt),Et=class extends tr{constructor(u,e,n){super(!0,u,e,n)}},rr=class extends tr{constructor(u,e){super(!1,u,u,e)}},Ae,er,vt=(er=class extends Array{constructor(){super(...arguments);m(this,Ae,-1)}resetIndex(e){w(this,Ae,-1)}fresh(){this.sort(function(e,n){return e.start==n.start?0:(+(e.start>n.start)<<1)-1}),this.forEach(function(e,n){e.index=n})}step(e,n=!1){let h=[];if(n)for(let c=0;ce);c++){if(this[c].endt(r,Ae)&&(h.push(a),w(r,Ae,a.index))})}return h}getRange(e,n){var o;e>n&&([e,n]=[n,e]);let h=[],c=-1,r=Math.ceil(Math.sqrt(this.length)),a=!0;for(let i=0;i=e&&(c=i):c=c<0?i:c;for(;a;)((o=this[c])==null?void 0:o.end)=e&&h.push(this[c]):a=!1,c++;return h}},Ae=new WeakMap,er);var kr=0xffffffffffff,ar=function(u){let e=new vt,n=this,h=u.timeDivision,c=120,r=new vt,a=0,o=0;r.push(new Et(0,kr,[120,0])),u.track.forEach(function(l){a=0,l.event.forEach(function(d){a+=d.deltaTime,d.type==255&&(d==null?void 0:d.metaType)==81&&(c=6e7/d.data,r[r.length-1]&&r.push(new Et(a,0xffffffffffff,[c,0])))})}),r.fresh(),r.forEach(function(l,d,b){d>0&&(b[d-1].end=l.start)});let i=120;r.forEach(function(l,d,b){d>0&&(l.end==l.start?b.splice(b.indexOf(l),1):i==l.data[0]&&(b[d-1].end=l.end,b.splice(b.indexOf(l),1)),i=l.data[0])});let s=0,f=120;return r.forEach(function(l){let d=l.start,b=d/f/h*60+s;f=l.data[0],s=b-d/f/h*60,l.data[1]=s}),console.debug("All tempo changes: ",r),c=120,a=0,o=0,u.track.forEach(function(l,d){a=0,o=0;let b=d+1;l.event.forEach(function(y,k){a+=y.deltaTime;let v=r.step(a,!0)[0];v&&(c=v.data[0],o=v.data[1]);let E={type:y.type,data:y.data,track:b,part:0};y.type>14?E.meta=y.metaType:E.part=y.channel,e.push(new rr(a/c/h*60+o,E))})}),e.fresh(),self.midiEvents=e,console.debug(`Parsed a type ${u.formatType} MIDI sequence.`),e};kt.default.customInterpreter=Ft;var qe,Ue,Le,Be,st,xe,je,F,Ne,ye,He,sr,Ta=(sr=class extends it{constructor(e,n=.5,h=.5){super();C(this,"device");m(this,qe,void 0);m(this,Ue,"");m(this,Le,[]);m(this,Be,new Uint8ClampedArray(128));m(this,st,new Uint8ClampedArray(128));m(this,xe,.5);m(this,je,120);m(this,F,4);m(this,Ne,4);m(this,ye,0);m(this,He,0);C(this,"smoothingAtk",0);C(this,"smoothingDcy",0);let c=this;this.smoothingAtk=n,this.smoothingDcy=h,this.device=e,this.addEventListener("meta",function(r){var a;(a=r==null?void 0:r.data)==null||a.forEach(function(o){(t(c,Le)[o.meta]||console.debug).call(c,o.meta,o.data)})}),this.device.addEventListener("mode",function(r){c.dispatchEvent("mode",r.data)}),this.device.addEventListener("channelactive",function(r){c.dispatchEvent("channelactive",r.data)}),this.device.addEventListener("channelmin",function(r){c.dispatchEvent("channelmin",r.data)}),this.device.addEventListener("channelmax",function(r){c.dispatchEvent("channelmax",r.data)}),this.device.addEventListener("channelreset",function(r){c.dispatchEvent("channelreset")}),this.device.addEventListener("screen",function(r){c.dispatchEvent("screen",r.data)}),t(this,Le)[3]=function(r,a){var o;((o=t(c,Ue))==null?void 0:o.length)<1&&w(c,Ue,a)},t(this,Le)[81]=function(r,a){let o=c.noteProgress,i=t(c,xe)||.5;w(c,je,6e7/a),w(c,xe,a/1e6),w(c,ye,t(c,ye)+(o*(i/t(c,xe))-o))},t(this,Le)[88]=function(r,a){let o=c.noteProgress,i=c.noteOverall,s=c.noteBar,f=c.noteBeat,l=t(c,F),d=t(c,Ne);w(c,F,a[0]),w(c,Ne,1<=l&&(lt(this,He)&&w(this,He,e);let n=((v=t(this,qe))==null?void 0:v.step(e))||[],h=0,c=new Set,r=this,a=[];this.device.getStrength().forEach((E,x)=>{t(this,st)[x]=E}),r.device.newStrength(),n.forEach(function(E){let x=E.data;x.type==9&&(x.data[1]>0?c.add(x.part*128+x.data[0]):c.has(x.part*128+x.data[0])&&h++),E.data.type==8&&c.has(x.part*128+x.data[0])&&h++;let A=r.device.runJson(x);switch(A==null?void 0:A.reply){case"meta":{a.push(A);break}}A!=null&&A.reply&&delete A.reply}),(a==null?void 0:a.length)>0&&this.dispatchEvent("meta",a);let o=this.device.getActive(),i=[],s=r.device.getPitch(),f=r.device.getCcAll(),l=r.device.getProgram(),d=r.device.getChType(),b=this.device.getStrength();b.forEach(function(E,x,A){A[x]=Math.max(t(r,st)[x],E);let V=A[x]-t(r,Be)[x],se=g.length*x;if(V>=0){let lt=4*.25**(f[se+g[73]]/64);t(r,Be)[x]+=Math.ceil(V-V*r.smoothingAtk**lt)}else{let lt=4*.25**(f[se+g[72]]/64);t(r,Be)[x]+=Math.floor(V-V*r.smoothingDcy**lt)}});let y=0;return o.forEach(function(E,x){E&&(i[x]=r.device.getVel(x),y+=i[x].size)}),{extraPoly:h,curPoly:y,chInUse:o,chKeyPr:i,chPitch:s,chProgr:l,chContr:f,chType:d,eventCount:n.length,title:t(this,Ue),bitmap:this.device.getBitmap(),letter:this.device.getLetter(),texts:this.device.getTexts(),master:this.device.getMaster(),mode:this.device.getMode(),strength:t(this,Be).slice(),velo:b,rpn:this.device.getRpn(),tSig:this.getTimeSig(),tempo:this.getTempo(),noteBar:this.noteBar,noteBeat:this.noteBeat,ace:this.device.getAce()}}},qe=new WeakMap,Ue=new WeakMap,Le=new WeakMap,Be=new WeakMap,st=new WeakMap,xe=new WeakMap,je=new WeakMap,F=new WeakMap,Ne=new WeakMap,ye=new WeakMap,He=new WeakMap,sr);export{Ta as RootDisplay,g as ccToPos,wt as dnToPos}; diff --git a/dist/xp_state.mjs b/dist/xp_state.mjs index f0a9e027..ce203842 100644 --- a/dist/xp_state.mjs +++ b/dist/xp_state.mjs @@ -1,8 +1,8 @@ -var Rt=Object.defineProperty;var Ot=(b,e,n)=>e in b?Rt(b,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):b[e]=n;var C=(b,e,n)=>(Ot(b,typeof e!="symbol"?e+"":e,n),n),st=(b,e,n)=>{if(!e.has(b))throw TypeError("Cannot "+n)};var t=(b,e,n)=>(st(b,e,"read from private field"),n?n.call(b):e.get(b)),E=(b,e,n)=>{if(e.has(b))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(b):e.set(b,n)},w=(b,e,n,l)=>(st(b,e,"write to private field"),l?l.call(b,n):e.set(b,n),n);(function(){var b=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(b("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return b(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return b(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(b,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(b);s.unshift(d.slice(a+b.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(b,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var _,rt,it=(rt=class{constructor(){E(this,_,{})}addEventListener(b,e){t(this,_)[b]||(t(this,_)[b]=[]),t(this,_)[b].unshift(e)}removeEventListener(b,e){if(t(this,_)[b]){let n=t(this,_)[b].indexOf(e);n>-1&&t(this,_)[b].splice(n,1),t(this,_)[b].length<1&&delete t(this,_)[b]}}dispatchEvent(b,e){var d;let n=new Event(b),l=this;n.data=e,((d=t(this,_)[b])==null?void 0:d.length)>0&&t(this,_)[b].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${b}`]&&this[`on${b}`](n)}},_=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(b){let e=Math.floor(b/10),n=b%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...b){E(this,F,void 0);C(this,"strictMode",!1);this.loadFiles(...b)}get(b=0,e=0,n=0,l){let d=[b,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(b){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{b==0&&n<5?a[2]=0:b>125&&n<5&&n!=2&&(a[2]=b,a[0]=0);break}case"sg":{b==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[b,n,a[0],a[2]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&b==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):b==48?(a[0]=0,a[2]=0,o="!"):b==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):b<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:b==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):b==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):b==121?(s=`GM2Vox0${n}`,o="#"):b==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${b.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),b==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g="DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g="VL";break}case 98:{g="SG";break}case 100:{g="AN";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(b||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(b,e,n){let l=this,d=[],s=0,a=0;b.split(` -`).forEach(function(o,i){let r=o.split(" "),c=[];i==0?r.forEach(function(h,f){d[Dt.indexOf(h)]=f}):r.forEach(async function(h,f){var g;f>2?(t(l,F)[c[d[1]]]=t(l,F)[c[d[1]]]||[],(!((g=t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]])!=null&&g.length)||e)&&(t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]]=r[3],s++),a++):c.push(parseInt(r[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${s} loaded.`)}clearRange(b){let e=b.prg!=null?b.prg.constructor==Array?b.prg:[b.prg,b.prg]:[0,127],n=b.msb!=null?b.msb.constructor==Array?b.msb:[b.msb,b.msb]:[0,127],l=b.lsb!=null?b.lsb.constructor==Array?b.lsb:[b.lsb,b.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let a=l[0];a<=l[1];a++){let o=s+a;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let b=0;b<128;b++)t(this,F).push([""])}async loadFiles(...b){this.init();let e=this;b.forEach(async function(n,l){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,ct=(ot=class{constructor(){E(this,Oe,{});C(this,"context")}set(b,e){t(this,Oe)[b]=e}has(b){return!!t(this,Oe)[b]}async read(b,e){if(!this.has(b))throw new Error(`No decoder registered for "${b}"`);return await t(this,Oe)[b].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(b,e){let n=!0;return e.forEach((l,d)=>{n=n&&b[d]==l}),n},lt=function(b){let e=0;return b.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new ct;Ve.set("s7e",async function(b){let e=new Uint8Array(await b.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",l=[0,0,0,0],d=32,s=0,a=0,o=!0,i=[],r=0;for(;o;){let c=e.subarray(s);([()=>{Le.decode(c.subarray(0,4))=="YSFC"?(s+=80,a=1):s++},()=>{if(Pt(c.subarray(0,4),l))i.forEach((h,f,g)=>{let y=lt(e.subarray(h.start+4,h.start+8));h.length=y}),a=2;else{let h=Le.decode(c.subarray(0,4)),f=lt(c.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[r],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;ye in u?Rt(u,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):u[e]=n;var T=(u,e,n)=>(Ot(u,typeof e!="symbol"?e+"":e,n),n),st=(u,e,n)=>{if(!e.has(u))throw TypeError("Cannot "+n)};var t=(u,e,n)=>(st(u,e,"read from private field"),n?n.call(u):e.get(u)),E=(u,e,n)=>{if(e.has(u))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(u):e.set(u,n)},w=(u,e,n,l)=>(st(u,e,"write to private field"),l?l.call(u,n):e.set(u,n),n);(function(){var u=function(o,i,r){var c,h;if(self.MessageEvent)switch(o){case"message":{h=new MessageEvent(o,{data:i,ports:r==null?void 0:r.ports}),Object.defineProperty(h,"source",{value:r==null?void 0:r.source});break}default:h=new Event(o)}else h=document.createEvent("Event"),h.initEvent(o,!1,!1),r&&o=="message"&&(h.data=i,r.source&&Object.defineProperty(h,"source",{value:r.source}),(c=r.ports)!=null&&c.length&&Object.defineProperty(h,"ports",{value:r.ports}));return h};self.BroadcastChannel?console.info("[Snowy] Snowy is disabled."):(console.info("[Snowy] Snowy is enabled. Path: ".concat(self.SNOWY_PATH||"/snowy.js")),n=[],l={},d=function(o){var i,r=this;if((this==null?void 0:this.constructor)!=d)throw new TypeError("Illegal constructor");n.push(this),(i=l[o])!=null&&i.constructor||(l[o]=[]),l[o].push(this);var c=Math.floor(Math.random()*281474976710656),h=[],f=0,g=[],y=!0,S=!1;Object.defineProperty(this,"id",{get:function(){return c}}),Object.defineProperty(this,"name",{value:o}),this.close=function(){var m,B=n.indexOf(r);B>-1?(e.postMessage({t:"d",c:o,i:c}),n.splice(B,1),(m=l[o])!=null&&m.constructor&&(B=l[o].indexOf(r),B>-1&&l[o].splice(B,1)),l[o].length||delete l[o],console.debug("[Snowy] BroadcastChannel closed."),S=!0):console.debug("[Snowy] BroadcastChannel already closed.")},this.postMessage=function(m){if(e){if(S)throw new Error("Channel already closed");e.postMessage({t:"m",c:o,i:c,m:f,d:m}),f++,f>4294967295&&(f=0)}else g.push(m),console.debug("[Snowy] Message is cached.")},this.flush=function(){if(e){if(y){for(e.postMessage({t:"r",c:o,i:c}),console.debug("[Snowy] ".concat(g.length," message(s) in cache."));g.length;){var m=g.shift();r.postMessage(m)}y=!1,console.debug("[Snowy] All cached messages are flushed away.")}}else throw new Error("Tried to flush when the ports are not ready")},this.receiveMessage=function(m){m.c==o?m.i!=c&&r.dispatchEvent(u("message",m.d,{source:r})):console.debug("[Snowy] Channel ID mismatch. Instance ".concat(c," receives from ").concat(o,", not ").concat(m.c,"."))};var k={};this.dispatchEvent=function(m){var B,de;if(Object.defineProperty(m,"target",{value:r}),Object.defineProperty(m,"currentTarget",{value:r}),(B=k[m.type])!=null&&B.length)for(var ue=k[m.type],ke=0;ke-1&&k[m].splice(ke,1)}!((ue=k[m])!=null&&ue.length)&&k[m].constructor&&delete k[m]}},self.BroadcastChannel=d,s=function(){if(e){e.addEventListener("message",function(i){var r=i.data,c=!1;switch(r.t){case"k":{c=!1,e.postMessage({t:"k"});break}case"m":{var h=l[r.c];if(h!=null&&h.length)for(var f=0;f{switch(l.addEventListener("abort",()=>{s(new Error("Blob read aborted"))}),l.addEventListener("error",a=>{s(l.error||a.data||new Error("Blob read error"))}),l.addEventListener("load",()=>{d(l.result)}),n.toLowerCase()){case"arraybuffer":case"buffer":{l.readAsArrayBuffer(e);break}case"string":case"text":{l.readAsText(e);break}default:s(new Error(`Unknown target ${n}`))}})};Blob.prototype.arrayBuffer=Blob.prototype.arrayBuffer||function(){return u(this,"buffer")},Blob.prototype.text=Blob.prototype.text||function(){return u(this,"text")}}String.prototype.replaceAll=String.prototype.replaceAll||function(u,e){let n=0,l=16,d=this,s=[];for(;n-1;){let a=d.lastIndexOf(u);s.unshift(d.slice(a+u.length)),d=d.slice(0,a),a==0&&s.unshift(""),n++}return d.length&&s.unshift(d),s.join(e)||""},String.prototype.padStart=String.prototype.padStart||function(u,e){if(e){let n=this;for(;n.length0){let l=this.pool.length,d=1<=1&&a>=0;){if(a<=0)throw new Error("TTL reached.");if(s==l)s-=d;else{let i=at(e,this.pool[s]);switch(i){case 0:{a=0;break}case 1:{s+d<=l&&(s+=d);break}case-1:{s!=0&&(s-=d);break}default:console.warn(`Unexpected result ${i}.`)}}d=d>>1,a--}let o=!0;if(s>=this.pool.length)o=!1;else{let i=this;this.pool[s].forEach(function(r,c,h){o&&r!=e[c]&&(o=!1)}),!o&&at(e,this.pool[s])>0&&s++}return o||n?s:-1}else return n?0:-1},this.add=function(e,n){return e.data=n,this.pool.splice(this.point(e,!0),0,e),this},this.default=function(e){console.warn(`No match in "${this.name||"(unknown)"}" for "${e}". Default action not defined.`)},this.get=function(e){let n=this.point(e);if(n>-1)return this.pool[n].data;this.default(e)},this.run=function(e,...n){let l=this.point(e);l>-1?e.subarray?this.pool[l].data(e.subarray(this.pool[l].length),...n):this.pool[l].data(e.slice(this.pool[l].length),...n):this.default(e,...n)}};var _,rt,it=(rt=class{constructor(){E(this,_,{})}addEventListener(u,e){t(this,_)[u]||(t(this,_)[u]=[]),t(this,_)[u].unshift(e)}removeEventListener(u,e){if(t(this,_)[u]){let n=t(this,_)[u].indexOf(e);n>-1&&t(this,_)[u].splice(n,1),t(this,_)[u].length<1&&delete t(this,_)[u]}}dispatchEvent(u,e){var d;let n=new Event(u),l=this;n.data=e,((d=t(this,_)[u])==null?void 0:d.length)>0&&t(this,_)[u].forEach(function(s){try{s==null||s.call(l,n)}catch(a){console.error(a)}}),this[`on${u}`]&&this[`on${u}`](n)}},_=new WeakMap,rt);var Dt=["MSB","PRG","LSB"],Qe=function(u){let e=Math.floor(u/10),n=u%10;return`${e.toString(16)}${n}`},F,nt,je=(nt=class{constructor(...u){E(this,F,void 0);T(this,"strictMode",!1);this.loadFiles(...u)}get(u=0,e=0,n=0,l){let d=[u,e,n],s,a=Array.from(arguments);switch(l){case"xg":{switch(u){case 0:{n==126?a[2]=125:n==127&&(a[2]=0);break}case 32:{a[2]+=4;break}case 33:case 35:case 36:{a[2]+=5;break}case 79:case 80:case 81:case 82:case 83:case 84:a[0]+=16;case 95:case 96:case 97:case 98:case 99:case 100:{n==126&&(a[2]=0);break}case 48:case 64:case 126:case 127:{n==126&&(a[2]=0);break}}break}case"gs":{u==0&&n<5?a[2]=0:u>125&&n<5&&n!=2&&(a[2]=u,a[0]=0);break}case"sd":{u==96?a[0]=121:u>96&&u<100?a[2]|=16:u==104&&(a[0]=120);break}case"sg":{u==8&&n==0&&(a[2]=5);break}case"s90es":{n<8?a[2]+=17:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}case"motif":{n<8?a[2]+=28:n<32?a[2]+=13:a[2]=(a[2]>>3)+19;break}}let o=" ",i="M",r=0,c=0;switch(a[0]){case 0:{a[2]==127?i="MT-a":a[2]==126?i="MT-b":a[2]==7?i="GM-k":a[2]==5?i="SG-a":a[2]==4?i="SP-l":a[2]==0||l=="gs"&&a[2]<5?i="GM-a":(i="y",r=3);break}case 8:{l=="sg"?i="GM-s":i="r:";break}case 48:{i=`yM${(a[2]>>3).toString().padStart(2,"0")}`,r=1;break}case 56:{i="GM-b";break}case 61:case 120:{i="rDrm";break}case 62:{i="kDrm";break}case 63:{if(a[2]<17){let y=a[2];i=y<10?"kP:":"kC:",i+=y%10}else a[2]<34?i=["Pre1","Pre2","Pre3","Pre4","Usr1","Usr2","DrmP","DrmU","Plg1","Plg2","Plg3","Pre1","Pre2","Pre3","Pre4","Pre5","Pre6"][a[2]-17]:i="Ds";break}case 64:{i="ySFX";break}case 67:{i="DX:S";break}case 80:case 81:case 82:case 83:{i=`Prg${"UABC"[a[0]-80]}`;break}case 88:case 89:case 90:case 91:{i=`Cmb${"UABC"[a[0]-88]}`;break}case 95:{i=`${["DR","PC"][a[2]]}-d`;break}case 96:{i=a[2]==106?"AP-a":"PF",a[2]>63&&(c=63),r=3;break}case 97:{i="VL:",r=3,c=112;break}case 98:{i="SG-a";break}case 99:{i="DX",a[2]>63&&(c=63),r=3;break}case 100:{i="AN",a[2]>63&&(c=63),r=3;break}case 121:{i=`GM-${a[2]?"":"a"}`,r=3;break}case 122:{i="lDrm";break}case 126:{i="yDrS";break}case 127:{a[2]==127?i="rDrm":i="yDrm";break}default:a[0]<48?i="r:":i="M"}i.length<4&&(i+=`${[u,n,a[0],a[2]][r]-c}`.padStart(4-i.length,"0")),l=="xg"&&u==16&&(s=`Voice${(n*128+e+1).toString().padStart(3,"0")}`,o=" ");let h=[a[0],a[1],a[2]];for(;!((s==null?void 0:s.length)>=0);)s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s||(this.strictMode?(s="",o="?"):t(this,F)[a[1]||0][a[0]<<7]?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):(a[2]--,o="^"):u==48?(a[0]=0,a[2]=0,o="!"):u==62?(a[1]--,o=" ",a[1]<1&&!(s!=null&&s.length)&&(a[0]=0,o="!")):u<63?a[0]==0?(a[2]=0,o="^"):a[2]<1?(a[0]=0,o="*"):a[2]--:u==80?(s=`PrgU:${e.toString().padStart(3,"0")}`,o="!"):u==88?(s=`CmbU:${e.toString().padStart(3,"0")}`,o="!"):u==121?(s=`GM2Vox0${n}`,o="#"):u==122?(a[1]==32?a[1]==0:a[1]%=7,s=t(this,F)[a[1]||0][(a[0]<<7)+a[2]],s?o=" ":(s="",o="*")):a[1]==0?(s=`${u.toString().padStart(3,"0")} ${e.toString().padStart(3,"0")} ${n.toString().padStart(3,"0")}`,o="!"):a[0]==0?(a[2]=0,o="^"):a[2]>0?a[2]--:a[1]>0?(a[1]=0,o="!"):(a[0]=0,o="?"));let f=[a[0],a[1],a[2]];(l=="gs"||l=="ns5r")&&o=="^"&&(o=" "),u==127&&o=="^"&&(o=" "),o!=" "&&self.debugMode&&(s="");let g="??";switch(a[0]){case 0:{a[2]==0?g="GM":a[2]==5||a[2]==7?g="KG":a[2]<126?g="XG":a[2]==127&&(g="MT");break}case 48:{g="MU";break}case 56:{g="AG";break}case 61:case 80:case 83:case 88:case 89:case 91:{g="AI";break}case 62:case 82:case 90:{g="XD";break}case 63:{a[2]<17?g="KR":a[2]<34?g="ES":g="DS";break}case 64:case 126:{g="XG";break}case 67:case 99:{g=a[2]>>4==1?"SD":"DX";break}case 81:{g="RW";break}case 95:{g=["DR","PC"][a[2]];break}case 96:{g=a[2]==106?"AP":"PF";break}case 97:{g=a[2]>>4==1?"SD":"VL";break}case 98:{g=a[2]>>4==1?"SD":"SG";break}case 100:{g="AN";break}case 104:case 105:case 106:case 107:{g="SD";break}case 120:{g="GS";break}case 121:{g=a[2]?"G2":"GM";break}case 122:{g="KG";break}case 127:{g=a[2]==127?"MT":e==0?"GM":"XG";break}default:a[0]<48&&(a[0]==16&&l=="xg"?g="XG":g="GS")}return{name:s||`${Qe(u||0)} ${Qe(e||0)} ${Qe(n||0)}`,iid:h,eid:f,sid:d,ending:o,sect:i,standard:g}}async load(u,e,n){let l=this,d=[],s=0,a=0;u.split(` +`).forEach(function(o,i){let r=o.split(" "),c=[];i==0?r.forEach(function(h,f){d[Dt.indexOf(h)]=f}):r.forEach(async function(h,f){var g;f>2?(t(l,F)[c[d[1]]]=t(l,F)[c[d[1]]]||[],(!((g=t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]])!=null&&g.length)||e)&&(t(l,F)[c[d[1]]][(c[d[0]]<<7)+c[d[2]]]=r[3],s++),a++):c.push(parseInt(r[f]))})}),e||console.debug(`Map "${n||"(internal)"}": ${a} total, ${s} loaded.`)}clearRange(u){let e=u.prg!=null?u.prg.constructor==Array?u.prg:[u.prg,u.prg]:[0,127],n=u.msb!=null?u.msb.constructor==Array?u.msb:[u.msb,u.msb]:[0,127],l=u.lsb!=null?u.lsb.constructor==Array?u.lsb:[u.lsb,u.lsb]:[0,127];for(let d=n[0];d<=n[1];d++){let s=d<<7;for(let a=l[0];a<=l[1];a++){let o=s+a;for(let i=e[0];i<=e[1];i++)delete t(this,F)[i][o]}}}init(){w(this,F,[]);for(let u=0;u<128;u++)t(this,F).push([""])}async loadFiles(...u){this.init();let e=this;u.forEach(async function(n,l){try{await fetch(`./data/bank/${n}.tsv`).then(function(d){return d.text()}).then(d=>{e.load(d,!1,n)})}catch(d){console.error(`Failed loading "${n}.tsv".`)}})}},F=new WeakMap,nt);var Oe,ot,ct=(ot=class{constructor(){E(this,Oe,{});T(this,"context")}set(u,e){t(this,Oe)[u]=e}has(u){return!!t(this,Oe)[u]}async read(u,e){if(!this.has(u))throw new Error(`No decoder registered for "${u}"`);return await t(this,Oe)[u].call(this.context||this,e)}},Oe=new WeakMap,ot);var Pt=function(u,e){let n=!0;return e.forEach((l,d)=>{n=n&&u[d]==l}),n},lt=function(u){let e=0;return u.forEach(n=>{e*=256,e+=n}),e},Le=new TextDecoder,Ve=new ct;Ve.set("s7e",async function(u){let e=new Uint8Array(await u.slice(0,65536).arrayBuffer()),n="MSB LSB PRG NME",l=[0,0,0,0],d=32,s=0,a=0,o=!0,i=[],r=0;for(;o;){let c=e.subarray(s);([()=>{Le.decode(c.subarray(0,4))=="YSFC"?(s+=80,a=1):s++},()=>{if(Pt(c.subarray(0,4),l))i.forEach((h,f,g)=>{let y=lt(e.subarray(h.start+4,h.start+8));h.length=y}),a=2;else{let h=Le.decode(c.subarray(0,4)),f=lt(c.subarray(4,8));i.push({type:h,start:f}),s+=8}},()=>{let h=i[r],f=e.subarray(h.start,h.start+h.length),g=32;switch(h.type){case"ENVC":{let y=d;for(;y=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});var Be=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ge=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],At=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],De=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ht=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ft=function(b){let e=.1,n=-.3;return b>66?(e=5,n=315):b>56?(e=1,n=47):b>46&&(e=.5,n=18.5),e*b-n},dt=function(b){return b>105?At[b-106]:b>100?b*1.1-100:b/10},ut=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),We={};`hi*, +063 ${(k[17]+1).toString().padStart(3,"0")} ${k[19].toString().padStart(3,"0")} ${m}`),S+=y}break}}r++,r>=i.length&&(a=3,o=!1)}][a]||(()=>{o=!1}))()}return n});var Be=["off","hall","room","stage","plate","delay LCR","delay LR","echo","cross delay","early reflections","gate reverb","reverse gate"].concat(new Array(4),["white room","tunnel","canyon","basement","karaoke"],new Array(43),["pass through","chorus","celeste","flanger","symphonic","rotary speaker","tremelo","auto pan","phaser","distortion","overdrive","amplifier","3-band EQ","2-band EQ","auto wah"],new Array(1),["pitch change","harmonic","touch wah","compressor","noise gate","voice channel","2-way rotary speaker","ensemble detune","ambience"],new Array(4),["talking mod","Lo-Fi","dist + delay","comp + dist + delay","wah + dist + delay","V dist","dual rotor speaker"]),Ge=["melodic","drums","drum set 1","drum set 2","drum set 3","drum set 4","drum set 5","drum set 6","drum set 7","drum set 8"],At=[17.1,18.6,20.2,21.8,23.3,24.9,26.5,28,29.6,31.2,32.8,34.3,35.9,37.5,39,40.6,42.2,43.7,45.3,46.9,48.4,50],De=[20,22,25,28,32,36,40,45,50,56,63,70,80,90,100,110,125,140,160,180,200,225,250,280,315,355,400,450,500,560,630,700,800,900,1e3,1100,1200,1400,1600,1800,2e3,2200,2500,2800,3200,3600,4e3,4500,5e3,5600,6300,7e3,8e3,9e3,1e4,11e3,12e3,14e3,16e3,18e3,2e4],ht=[0,.04,.08,.13,.17,.21,.25,.29,.34,.38,.42,.46,.51,.55,.59,.63,.67,.72,.76,.8,.84,.88,.93,.97,1.01,1.05,1.09,1.14,1.18,1.22,1.26,1.3,1.35,1.39,1.43,1.47,1.51,1.56,1.6,1.64,1.68,1.72,1.77,1.81,1.85,1.89,1.94,1.98,2.02,2.06,2.1,2.15,2.19,2.23,2.27,2.31,2.36,2.4,2.44,2.48,2.52,2.57,2.61,2.65,2.69,2.78,2.86,2.94,3.03,3.11,3.2,3.28,3.37,3.45,3.53,3.62,3.7,3.87,4.04,4.21,4,37,4.54,4.71,4.88,5.05,5.22,5.38,5.55,5.72,6.06,6.39,6.73,7.07,7.4,7.74,8.08,8.41,8.75,9.08,9.42,9.76,10.1,10.8,11.4,12.1,12.8,13.5,14.1,14.8,15.5,16.2,16.8,17.5,18.2,19.5,20.9,22.2,23.6,24.9,26.2,27.6,28.9,30.3,31.6,33,34.3,37,39.7],ft=function(u){let e=.1,n=-.3;return u>66?(e=5,n=315):u>56?(e=1,n=47):u>46&&(e=.5,n=18.5),e*u-n},dt=function(u){return u>105?At[u-106]:u>100?u*1.1-100:u/10},ut=",a,i,u,e,o,ka,ki,ku,ke,ko,ky,kw,sa,si,su,se,so,sh,ta,ti,tu,te,to,t,ch,t,s,na,ni,nu,ne,no,ny,nn,ha,hi,hu,he,ho,hy,fa,fi,fu,fe,fo,ma,mi,mu,me,mo,my,mm,ya,yu,ye,yo,ra,ri,ru,re,ro,ry,wa,wi,we,wo,ga,gi,gu,ge,go,gy,gw,za,zi,zu,ze,zo,ja,ji,ju,je,jo,jy,da,di,du,de,do,dy,ba,bi,bu,be,bo,by,va,vi,vu,ve,vo,pa,pi,pu,pe,po,py,nga,ngi,ngu,nge,ngo,ngy,ng,hha,hhi,hhu,hhe,hho,hhy,hhw,*,_,,,~,.".split(","),We={};`hi*, ka,か ki,き ku,く @@ -139,7 +139,7 @@ o,お ~, ^, _,`.split(` -`).forEach(b=>{let e=b.split(",");We[e[0]]=e[1]});var bt=function(b){let e=b;b[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;e.indexOf(l)>-1;)e=e.replace(l,l[0])});for(let l in We)e=e.replaceAll(l,We[l]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(b){return b?b<96?`cc${b}`:["aftertouch","velocity","pitch bend"][b-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Nt={66307:["drive"],66309:["vowel",b=>"aiueo"[b]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",b=>["off","LPF","HPF"][b]],94984:["noise type",b=>["white","pink"][b]],94987:["disc type",b=>["LP","SP","EP","RND"]],94990:["hum type",b=>`${b+5}0Hz`],94993:["M/S",b=>["mono","stereo"][b]]},Je=function(b){return Ut[(b[0]-32<<8)+b[1]]||`0x${b[0].toString(16).padStart(2,"0")}${b[1].toString(16).padStart(2,"0")}`},yt=function(b,e,n){let l=(b[0]-32<<16)+(b[1]<<8)+e,d=Nt[l]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(b=64){return Math.round(2e3*Math.log10(b/64))/100};var wt=function(b){let e=0;return b.forEach(n=>{e+=n,e=e&127}),~e+1&127},te=function(b,e){let n=0,l=0;for(let d=0;d>s&1)<<7,o=b[d];o+=a,d%8!=0?(e(o,n,b),n++):l=b[d]}},Ie=function(b){let e=Math.floor(b*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,56,82,81,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,62,120,122,122,127],Ht=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],_e=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],M={};be.forEach((b,e)=>{M[b]=e});var p={length:_e.length};_e.forEach((b,e)=>{p[b]=e});var Ct={length:qe.length};qe.forEach((b,e)=>{Ct[b]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(b){let e=[],n=0;return b==null||b.forEach(function(l,d){l==247?e.push(b.subarray(n,d)):l==240&&(n=d+1)}),e.length||e.push(b.subarray(0)),q()&&console.debug(e),e},Mt=function(b,e="",n="",l=2){return b?`${e}${b.toString().padStart(l,"0")}${n}`:""},$={ch:128,cc:_e.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,se,oe,z,ne,Tt,P,H,T,u,ce,O,A,W,U,L,pe,ae,me,v,Pe,Fe,re,ge,Y,Ae,$e,V,ye,Q,I,le,Ue,Ne,ie,we,He,J,D,Xe,tt,x,he,Ee,G,ve,N,Ke,ze,Me,xe,j,Z,fe,Ce,Te,Re,xt,ms=(xt=class extends it{constructor(){super();E(this,z);C(this,"NOTE_IDLE",0);C(this,"NOTE_ATTACK",1);C(this,"NOTE_DECAY",2);C(this,"NOTE_SUSTAIN",3);C(this,"NOTE_HELD",4);C(this,"NOTE_RELEASE",5);C(this,"NOTE_SOSTENUTO_ATTACK",8);C(this,"NOTE_SOSTENUTO_DECAY",9);C(this,"NOTE_SOSTENUTO_SUSTAIN",10);C(this,"NOTE_SOSTENUTO_HELD",11);C(this,"CH_MELODIC",0);C(this,"CH_DRUMS",1);C(this,"CH_DRUM1",2);C(this,"CH_DRUM2",3);C(this,"CH_DRUM3",4);C(this,"CH_DRUM4",5);C(this,"CH_DRUM5",6);C(this,"CH_DRUM6",7);C(this,"CH_DRUM7",8);C(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,se,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,H,new Uint8Array($.ch));E(this,T,new Uint8Array($.ch));E(this,u,new Uint8Array($.ch*$.cc));E(this,ce,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,W,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,ae,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,re,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,Y,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Q,0);E(this,I,100);E(this,le,0);E(this,Ue,500);E(this,Ne,0);E(this,ie,"");E(this,we,0);E(this,He,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,x,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));C(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));C(this,"userBank",new je("gm"));C(this,"initOnReset",!1);C(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,N,{nOff:(e,n)=>{let l=e*128+n,d=t(this,U).lastIndexOf(l);d>-1&&(t(this,u)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_HELD})):t(this,u)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[l]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let d=e*128+n,s=0;for(t(this,W)[e]&&t(this,N).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=l,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,ae)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,l)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[l]=d;let s=t(this,U)[l];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,l,d)=>{let s=n>>7,a=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,N).nOff(s,a)})}});E(this,Ke,{8:function(e){let n=e.channel,l=e.data[0];t(this,N).nOff(n,l)},9:function(e){let n=e.channel;t(this,P)[n]=1;let l=e.data[0],d=e.data[1];d>0?t(this,N).nOn(n,l,d):t(this,N).nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];t(this,U).indexOf(l)>-1&&(t(this,A)[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case M.s90es:case M.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let l=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,N).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,u)[d+p[1]]=0,t(this,u)[d+p[5]]=0,t(this,u)[d+p[64]]=0,t(this,u)[d+p[65]]=0,t(this,u)[d+p[66]]=0,t(this,u)[d+p[67]]=0,t(this,u)[d+p[11]]=127,t(this,u)[d+p[101]]=127,t(this,u)[d+p[100]]=127,t(this,u)[d+p[99]]=127,t(this,u)[d+p[98]]=127;return}case 123:{t(this,N).ano(n);return}case 124:{t(this,N).ano(n);return}case 125:{t(this,N).ano(n);return}case 126:{t(this,W)[n]=1,t(this,N).ano(n);return}case 127:{t(this,W)[n]=0,t(this,N).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0?e.data[1]<48?(t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,R)==M.gs?e.data[1]<56&&t(this,T)[n]>0&&(e.data[1]=t(this,u)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,R)==M.gm?e.data[1]<48?t(this,T)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,R)==M.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,R)){case M.xg:{[126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M["05rw"]:case M.x5d:case M.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case M.g2:{e.data[1]==120?t(this,T)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,T)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[M.xg,M.gs,M.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,u)[l+p[99]],s=t(this,u)[l+p[98]];if(d==1){let a=Bt.indexOf(s);if(a>-1)t(this,u)[l+p[71+a]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,T)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,T)[n]]}.`):t(this,Fe)[(o*$.dpn+Ct[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,T)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,u)[l+p[100]]];t(this,u)[l+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,u)[l+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case M.s90es:case M.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,u)[l+101]==0&&et[t(this,u)[l+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,u)[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,N).hoOf(n);break}case 66:{e.data[1]>>6?t(this,N).soOn(n):t(this,N).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,u)[l+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case M.s90es:case M.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,re)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;t(this,U).forEach(function(d){let s=d>>7;l==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:l,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let l=n[0],d=n[1];(t(this,ze)[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(l,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,le,0);let n=Ht.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,l)=>{t(this,Ce).run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)t(this,Z).run(n,l,e),console.warn("Unknown device SysEx!");else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,Z).run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,l)=>{t(this,fe).run(n,l,e)},67:(e,n,l)=>{t(this,j).run(n,l,e)},68:(e,n,l)=>{t(this,Re).run(n,l,e)},71:(e,n,l)=>{t(this,Te).run(n,l,e)},126:(e,n,l)=>{t(this,Me).run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),t(this,xe).run(n,l,e)}});E(this,Me,void 0);E(this,xe,void 0);E(this,j,void 0);E(this,Z,void 0);E(this,fe,void 0);E(this,Ce,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new ee),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME +`).forEach(u=>{let e=u.split(",");We[e[0]]=e[1]});var bt=function(u){let e=u;u[0]=="*"&&(e=e.slice(1)),["aa","ii","uu","ee","oo"].forEach(l=>{for(;e.indexOf(l)>-1;)e=e.replace(l,l[0])});for(let l in We)e=e.replaceAll(l,We[l]);e.indexOf("ん")==0&&e.length>1&&(e=e.slice(1));let n=e.indexOf("!");return n>-1&&e.length>1&&(e=e.slice(n+1)),e},pt=function(u){return u?u<96?`cc${u}`:["aftertouch","velocity","pitch bend"][u-96]:"off"};var Ye=["room 1","room 2","room 3","hall 1","hall 2","plate","delay","panning delay"],gt=["chorus 1","chorus 2","chorus 3","chorus 4","feedback","flanger","short delay","short delay feedback"],$t=["delay 1","delay 2","delay 3","delay 4","pan delay 1","pan delay 2","pan delay 3","pan delay 4","delay to reverb","pan repeat"];var Ut={0:"thru",256:"stereo EQ",257:"spectrum",258:"enhancer",259:"humanizer",272:"overdrive",273:"distortion",288:"phaser",289:"auto wah",290:"rotary",291:"stereo flanger",292:"step flanger",293:"tremelo",294:"auto pan",304:"compressor",305:"limiter",320:"hexa chorus",321:"tremelo chorus",322:"stereo chorus",323:"space D",324:"3D chorus",336:"stereo delay",337:"modulated delay",338:"3-tap delay",339:"4-tap delay",340:"tremelo control delay",341:"reverb",342:"gate reverb",343:"3D delay",352:"2-pitch shifter",353:"feedback pitch shifter",368:"3D auto",369:"3D manual",370:"Lo-Fi 1",371:"Lo-Fi 2",512:"overdrive - chorus",513:"overdrive - flanger",514:"overdrive - delay",515:"distortion - chorus",516:"distortion - flanger",517:"distortion - delay",518:"enhancer - chorus",519:"enhancer - flanger",520:"enhancer - delay",521:"chorus - delay",522:"flanger - delay",523:"chorus - flanger",524:"rotary multi",1024:"guitar multi 1",1025:"guitar multi 2",1026:"guitar multi 3",1027:"clean guitar multi 1",1028:"clean guitar multi 2",1029:"bass multi",1030:"rhodes multi",1280:"keyboard multi",4352:"chorus / delay",4353:"flanger / delay",4354:"chorus / flanger",4355:"overdrive / distortion",4356:"overdrive / rotary",4357:"overdrive / phaser",4358:"overdrive / auto wah",4359:"phaser / rotary",4360:"phaser / auto wah"},Ht={66307:["drive"],66309:["vowel",u=>"aiueo"[u]],94723:["pre-filter"],94724:["Lo-Fi type"],94725:["post-filter"],94979:["Lo-Fi type"],94980:["fill type",u=>["off","LPF","HPF"][u]],94984:["noise type",u=>["white","pink"][u]],94987:["disc type",u=>["LP","SP","EP","RND"]],94990:["hum type",u=>`${u+5}0Hz`],94993:["M/S",u=>["mono","stereo"][u]]},Je=function(u){return Ut[(u[0]-32<<8)+u[1]]||`0x${u[0].toString(16).padStart(2,"0")}${u[1].toString(16).padStart(2,"0")}`},yt=function(u,e,n){let l=(u[0]-32<<16)+(u[1]<<8)+e,d=Ht[l]||{},s=d[0];if(s!=null&&s.length)return s+=`: ${(d[1]||function(){})(n)||n}`,s},Ze=[68,48,95,78,41,3,110,122,0];var X=function(u=64){return Math.round(2e3*Math.log10(u/64))/100};var wt=function(u){let e=0;return u.forEach(n=>{e+=n,e=e&127}),~e+1&127},te=function(u,e){let n=0,l=0;for(let d=0;d>s&1)<<7,o=u[d];o+=a,d%8!=0?(e(o,n,u),n++):l=u[d]}},Ie=function(u){let e=Math.floor(u*14.2);return e<128?e:0};var be=["?","gm","gs","xg","g2","mt32","ns5r","x5d","05rw","sd","k11","sg","krs","s90es","motif"],Et=[[0,0,0,0,121,0,0,82,81,96,0,0,63,63,63],[0,0,4,0,0,127,0,0,0,0,0,0,0,0,0]],Se=[120,127,120,127,120,127,61,62,62,104,120,122,122,127],Nt=[0,3,81,84,88],kt={8:"Off",9:"On",10:"Note aftertouch",11:"cc",12:"pc",13:"Channel aftertouch",14:"Pitch"},et={0:0,1:1,2:3,5:4},St=[[0,24],[0,127],[0,127],[40,88],[0,127],[0,127]],mt=[36,37],qe=[20,21,22,23,24,25,26,28,29,30,31,36,37,64,65],_e=[0,1,2,4,5,6,7,8,10,11,32,38,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,84,91,92,93,94,95,98,99,100,101,128,12,13,16,17,18,19],Lt=[12,13,16,17,18,19],Bt=[33,99,100,32,102,8,9,10],vt=[0,16,25,40,32,64,26,48],C={};be.forEach((u,e)=>{C[u]=e});var p={length:_e.length};_e.forEach((u,e)=>{p[u]=e});var xt={length:qe.length};qe.forEach((u,e)=>{xt[u]=e});var q=function(){return!!self.Bun||self.debugMode||!1},Gt=function(u){let e=[],n=0;return u==null||u.forEach(function(l,d){l==247?e.push(u.subarray(n,d)):l==240&&(n=d+1)}),e.length||e.push(u.subarray(0)),q()&&console.debug(e),e},Ct=function(u,e="",n="",l=2){return u?`${e}${u.toString().padStart(l,"0")}${n}`:""},$={ch:128,cc:_e.length,nn:128,pl:512,tr:256,cmt:14,rpn:6,ace:8,drm:8,dpn:qe.length,dnc:128,efx:7},R,K,se,oe,z,ne,Tt,P,N,M,b,ce,O,A,W,U,L,pe,ae,me,v,Pe,Fe,re,ge,Y,Ae,$e,V,ye,Q,I,le,Ue,He,ie,we,Ne,J,D,Xe,tt,x,he,Ee,G,ve,H,Ke,ze,Ce,Me,j,Z,fe,xe,Te,Re,Mt,ms=(Mt=class extends it{constructor(){super();E(this,z);T(this,"NOTE_IDLE",0);T(this,"NOTE_ATTACK",1);T(this,"NOTE_DECAY",2);T(this,"NOTE_SUSTAIN",3);T(this,"NOTE_HELD",4);T(this,"NOTE_RELEASE",5);T(this,"NOTE_SOSTENUTO_ATTACK",8);T(this,"NOTE_SOSTENUTO_DECAY",9);T(this,"NOTE_SOSTENUTO_SUSTAIN",10);T(this,"NOTE_SOSTENUTO_HELD",11);T(this,"CH_MELODIC",0);T(this,"CH_DRUMS",1);T(this,"CH_DRUM1",2);T(this,"CH_DRUM2",3);T(this,"CH_DRUM3",4);T(this,"CH_DRUM4",5);T(this,"CH_DRUM5",6);T(this,"CH_DRUM6",7);T(this,"CH_DRUM7",8);T(this,"CH_DRUM8",9);E(this,R,0);E(this,K,0);E(this,se,0);E(this,oe,new Array(11));E(this,P,new Uint8Array($.ch));E(this,N,new Uint8Array($.ch));E(this,M,new Uint8Array($.ch));E(this,b,new Uint8Array($.ch*$.cc));E(this,ce,new Uint8Array($.ace));E(this,O,new Uint8Array($.ch));E(this,A,new Uint8Array($.ch*$.nn));E(this,W,new Uint8Array($.ch));E(this,U,new Uint16Array($.pl));E(this,L,new Uint8Array($.pl));E(this,pe,new Int16Array($.ch));E(this,ae,new Uint8Array($.ch));E(this,me,0);E(this,v,new Uint8Array($.ch*$.rpn));E(this,Pe,new Int8Array($.ch*mt.length));E(this,Fe,new Uint8Array($.drm*$.dpn*$.dnc));E(this,re,new Uint8Array($.ch));E(this,ge,new Uint8Array(128));E(this,Y,new Uint8Array($.cmt*8));E(this,Ae,new Uint8Array(1024));E(this,$e,new Uint8Array($.cmt*64));E(this,V,new Uint8Array($.efx*3));E(this,ye,0);E(this,Q,0);E(this,I,100);E(this,le,0);E(this,Ue,500);E(this,He,0);E(this,ie,"");E(this,we,0);E(this,Ne,0);E(this,J,!0);E(this,D,!1);E(this,Xe,void 0);E(this,tt,new Uint8Array(2));E(this,x,[]);E(this,he,new Uint8Array($.ch));E(this,Ee,new Uint8Array($.tr));T(this,"baseBank",new je("gm","gm2","xg","gs","ns5r","sd","gmega","plg-150vl","plg-150pf","plg-150dx","plg-150an","plg-150dr","plg-100sg","kross","s90es"));T(this,"userBank",new je("gm"));T(this,"initOnReset",!1);T(this,"aiEfxName","");E(this,G,[]);E(this,ve,void 0);E(this,H,{nOff:(e,n)=>{let l=e*128+n,d=t(this,U).lastIndexOf(l);d>-1&&(t(this,b)[$.cc*e+p[64]]>63?(t(this,L)[d]=this.NOTE_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_HELD})):t(this,b)[$.cc*e+p[66]]>63&&t(this,L)[d]==this.NOTE_SOSTENUTO_SUSTAIN?(t(this,L)[d]=this.NOTE_SOSTENUTO_HELD,this.dispatchEvent("note",{part:e,note:n,velo:t(this,A)[l],state:this.NOTE_SOSTENUTO_HELD})):(t(this,U)[d]=0,t(this,A)[l]=0,t(this,L)[d]=this.NOTE_IDLE,this.dispatchEvent("note",{part:e,note:n,velo:0,state:this.NOTE_IDLE})))},nOn:(e,n,l)=>{let d=e*128+n,s=0;for(t(this,W)[e]&&t(this,H).ano(e);t(this,L)[s]>0&&t(this,U)[s]!=d;)s++;s<$.pl?(t(this,U)[s]=d,t(this,A)[d]=l,t(this,L)[s]=this.NOTE_SUSTAIN,t(this,ae)[e]{},cAt:(e,n)=>{},hoOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},soOn:e=>{t(this,L).forEach((n,l)=>{let d;switch(n){case this.NOTE_ATTACK:{d=this.NOTE_SOSTENUTO_ATTACK;break}case this.NOTE_DECAY:{d=this.NOTE_SOSTENUTO_DECAY;break}case this.NOTE_SUSTAIN:{d=this.NOTE_SOSTENUTO_SUSTAIN;break}}if(d){t(this,L)[l]=d;let s=t(this,U)[l];this.dispatchEvent("note",{part:e,note:s&127,velo:t(this,A)[s],state:d})}})},soOf:e=>{t(this,L).forEach((n,l)=>{if(n==this.NOTE_SOSTENUTO_HELD){let d=t(this,U)[l],s=d>>7;e==s&&(t(this,L)[l]=this.NOTE_IDLE,t(this,U)[l]=0,t(this,A)[d]=0,this.dispatchEvent("note",{part:e,note:d&127,velo:0,state:this.NOTE_IDLE}))}})},ano:e=>{t(this,U).forEach((n,l,d)=>{let s=n>>7,a=n&127;n==0&&t(this,A)[0]==0||s==e&&t(this,H).nOff(s,a)})}});E(this,Ke,{8:function(e){let n=e.channel,l=e.data[0];t(this,H).nOff(n,l)},9:function(e){let n=e.channel;t(this,P)[n]=1;let l=e.data[0],d=e.data[1];d>0?t(this,H).nOn(n,l,d):t(this,H).nOff(n,l)},10:function(e){let n=e.channel,l=n*128+e.data[0];t(this,U).indexOf(l)>-1&&(t(this,A)[l]=data[1],this.dispatchEvent("note",{part:n,note:e.data[0],velo:e.data[1],state:this.NOTE_SUSTAIN}))},11:function(e){let n=e.channel;[0,32].indexOf(e.data[0])>-1&&(()=>{switch(t(this,R)){case C.s90es:case C.motif:{if(e.data[0]==0){[0,63].indexOf(e.data[1])>-1&&(t(this,P)[n]=1);break}e.data[1]&&(t(this,P)[n]=1);break}default:{t(this,P)[n]=1;break}}})();let l=n*$.cc;switch(e.data[0]){case 96:return;case 97:return;case 120:return;case 121:{t(this,H).ano(n),t(this,pe)[n]=0;let d=n*$.cc;t(this,b)[d+p[1]]=0,t(this,b)[d+p[5]]=0,t(this,b)[d+p[64]]=0,t(this,b)[d+p[65]]=0,t(this,b)[d+p[66]]=0,t(this,b)[d+p[67]]=0,t(this,b)[d+p[11]]=127,t(this,b)[d+p[101]]=127,t(this,b)[d+p[100]]=127,t(this,b)[d+p[99]]=127,t(this,b)[d+p[98]]=127;return}case 123:{t(this,H).ano(n);return}case 124:{t(this,H).ano(n);return}case 125:{t(this,H).ano(n);return}case 126:{t(this,W)[n]=1,t(this,H).ano(n);return}case 127:{t(this,W)[n]=0,t(this,H).ano(n);return}}if(p[e.data[0]]==null)console.warn(`cc${e.data[0]} is not accepted.`);else{switch(Lt.indexOf(e.data[0])>-1&&this.allocateAce(e.data[0]),e.data[0]){case 0:{switch(q()&&console.debug(`${be[t(this,R)]}, CH${n+1}: ${e.data[1]}`),t(this,R)==0?e.data[1]<48?(t(this,M)[n]>0&&(e.data[1]=t(this,b)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)),e.data[1]>0&&(console.debug(`Roland GS detected with MSB: ${e.data[1]}`),this.switchMode("gs"))):e.data[1]==62?this.switchMode("x5d"):e.data[1]==63?this.switchMode("krs"):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg"):t(this,R)==C.gs?e.data[1]<56&&t(this,M)[n]>0&&(e.data[1]=t(this,b)[l],e.data[1]=120,console.debug(`Forced channel ${n+1} to stay drums.`)):t(this,R)==C.gm?e.data[1]<48?t(this,M)[n]>0&&(e.data[1]=120,this.switchMode("gs",!0),console.debug(`Forced channel ${n+1} to stay drums.`)):(e.data[1]==64||e.data[1]==127)&&this.switchMode("xg",!0):t(this,R)==C.x5d&&e.data[1]>0&&e.data[1]<8&&this.switchMode("05rw",!0),t(this,R)){case C.xg:{[126,127].indexOf(e.data[1])>-1?t(this,M)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,M)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case C["05rw"]:case C.x5d:case C.ns5r:{[61,62,126,127].indexOf(e.data[1])>-1?t(this,M)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,M)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case C.sd:{[104,105,106,107].indexOf(e.data[1])>-1?t(this,M)[n]==0&&(this.setChType(n,this.CH_DRUM2),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,M)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}case C.g2:{e.data[1]==120?t(this,M)[n]==0&&(this.setChType(n,this.CH_DRUMS),console.debug(`CH${n+1} set to drums by MSB.`)):t(this,M)[n]>0&&(this.setChType(n,this.CH_MELODIC),console.debug(`CH${n+1} set to melodic by MSB.`));break}}this.dispatchEvent("voice",{part:n});break}case 6:{if(t(this,me)){[C.xg,C.gs,C.ns5r].indexOf(t(this,R))<0&&console.warn(`NRPN commits are not available under "${be[t(this,R)]}" mode, even when they are supported in Octavia.`);let d=t(this,b)[l+p[99]],s=t(this,b)[l+p[98]];if(d==1){let a=Bt.indexOf(s);if(a>-1)t(this,b)[l+p[71+a]]=e.data[1],q()&&console.debug(`Redirected NRPN 1 ${s} to cc${71+a}.`),this.dispatchEvent("cc",{part:n,cc:71+a,data:e.data[1]});else{let o=mt.indexOf(s);o>-1?t(this,Pe)[n*10+o]=e.data[1]-64:console.warn(`NRPN 0x01${s.toString(16).padStart(2,"0")} is not supported.`),q()&&console.debug(`CH${n+1} voice NRPN ${s} commit`)}}else{if(qe.indexOf(d)<0){let o=`NRPN 0x${d.toString(16).padStart(2,"0")}${s.toString(16).padStart(2,"0")} `;d==127?console.warn(`${o}is not necessary. Consider removing it.`):console.warn(`${o}is not supported.`)}else{let o=t(this,M)[n]-2;o<0?console.warn(`CH${n+1} cannot accept drum NRPN as type ${Ge[t(this,M)[n]]}.`):t(this,Fe)[(o*$.dpn+xt[d])*$.dnc+s]=e.data[1]-64}q()&&console.debug(`CH${n+1} (${Ge[t(this,M)[n]]}) drum NRPN ${d} commit`)}}else{let d=et[t(this,b)[l+p[100]]];t(this,b)[l+p[101]]==0&&d!=null&&(q()&&console.debug(`CH${n+1} RPN 0 ${t(this,b)[l+p[100]]} commit: ${e.data[1]}`),e.data[1]=Math.min(Math.max(e.data[1],St[d][0]),St[d][1]),t(this,v)[n*$.rpn+d]=e.data[1])}break}case 32:{switch(t(this,R)){case C.s90es:case C.motif:{this.setChType(n,[32,40].indexOf(e.data[1])>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0);break}}this.dispatchEvent("voice",{part:n});break}case 38:{t(this,me)||t(this,b)[l+101]==0&&et[t(this,b)[l+100]]!=null&&(t(this,v)[n*$.rpn+et[t(this,b)[l+100]]+1]=e.data[1]);break}case 64:{e.data[1]<64&&t(this,H).hoOf(n);break}case 66:{e.data[1]>>6?t(this,H).soOn(n):t(this,H).soOf(n);break}case 98:case 99:{w(this,me,1);break}case 100:case 101:{w(this,me,0);break}}t(this,b)[l+p[e.data[0]]]=e.data[1],this.dispatchEvent("cc",{part:n,cc:e.data[0],data:e.data[1]})}},12:function(e){let n=e.channel;switch(t(this,R)){case C.s90es:case C.motif:{e.data&&(t(this,P)[n]=1);break}default:t(this,P)[n]=1}t(this,O)[n]=e.data,t(this,re)[n]=0,q()&&console.debug(`T:${e.track} C:${n} P:${e.data}`),this.dispatchEvent("voice",{part:n})},13:function(e){let n=this,l=e.channel;t(this,U).forEach(function(d){let s=d>>7;l==s&&(t(n,A)[d]=e.data,n.dispatchEvent("note",{part:l,note:d&127,velo:e.data,state:n.NOTE_SUSTAIN}))})},14:function(e){let n=e.channel;t(this,pe)[n]=e.data[1]*128+e.data[0]-8192,this.dispatchEvent("pitch",{part:n,pitch:this.getPitchShift(n)})},15:function(e){Gt(e.data).forEach(n=>{let l=n[0],d=n[1];(t(this,ze)[l]||function(){console.debug(`Unknown manufacturer ${l}.`)})(d,n.subarray(2),e.track)})},248:function(e){},250:function(e){},251:function(e){},252:function(e){},254:function(e){},255:function(e){(t(this,G)[e.meta]||function(l,d,s){}).call(this,e.data,e.track,e.meta),e.meta!=32&&w(this,le,0);let n=Nt.indexOf(e.meta)>-1;if(q()&&console.debug(e),n)return e.reply="meta",e}});E(this,ze,{64:(e,n,l)=>{t(this,xe).run(n,l,e)},65:(e,n,l)=>{if(n[0]<16)t(this,Z).run(n,l,e);else{let d=n[n.length-1],s=wt(n.subarray(2,n.length-1));d==s?t(this,Z).run(n.subarray(0,n.length-1),l,e):console.warn(`Bad GS checksum ${d}. Should be ${s}.`)}},66:(e,n,l)=>{t(this,fe).run(n,l,e)},67:(e,n,l)=>{t(this,j).run(n,l,e)},68:(e,n,l)=>{t(this,Re).run(n,l,e)},71:(e,n,l)=>{t(this,Te).run(n,l,e)},126:(e,n,l)=>{t(this,Ce).run(n,l,e)},127:(e,n,l)=>{this.switchMode("gm"),t(this,Me).run(n,l,e)}});E(this,Ce,void 0);E(this,Me,void 0);E(this,j,void 0);E(this,Z,void 0);E(this,fe,void 0);E(this,xe,void 0);E(this,Te,void 0);E(this,Re,void 0);let e=this;w(this,z,new Uint8Array(256),Tt),t(this,oe)[10]=new Uint8Array(512),w(this,ve,new ee),this.userBank.strictMode=!0,this.userBank.load(`MSB PRG LSB NME 062 000 000 122 000 000 122 001 000 @@ -147,10 +147,10 @@ _,`.split(` 122 003 000 122 004 000 122 005 000 -122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,x).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,x).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,x).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,x).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,x).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let a=s.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,x).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,x).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,x).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,x).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,x).unshift(s.slice(1)):t(this,x)[0]+=s:(t(this,x)[0]=s,t(this,x).unshift(""))}},t(this,G)[2]=function(s){t(this,x).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,a){a<1&&t(this,le)<1&&t(this,x).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,a){t(this,x).unshift(`${Mt(t(this,le),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,x).unshift(""):t(this,x)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,x).unshift(`${Mt(t(this,le),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,x).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,le,s[0]+1)},t(this,G)[33]=function(s,a){console.debug(`Track ${a} requests to get assigned to output ${s}.`),t(e,Ee)[a]=s+1},t(this,G)[81]=function(s,a){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,a){t(e,ve).run(s,a)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,a){t(e,Ee)[a]=s[0]+1}),w(this,Me,new ee("universal non-realtime")),w(this,xe,new ee("universal realtime")),w(this,j,new ee("Yamaha")),w(this,Z,new ee("Roland")),w(this,fe,new ee("Korg")),w(this,Ce,new ee("Kawai")),w(this,Te,new ee("Akai")),w(this,Re,new ee("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,Me).default=n,t(this,xe).default=n,t(this,j).default=n,t(this,Z).default=n,t(this,fe).default=n,t(this,Ce).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,Me).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,xe).add([4,1],s=>{w(e,I,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,j).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,r)=>{a[r]=i};if(s.subarray(1).forEach((i,r)=>{let c=r+s[0];([o,o,o,o,h=>{w(this,I,h*129/16383*100)},h=>{},h=>{}][c]||(()=>{}))(i,r)}),s[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],s=>{let a="XG ";s[0]<32?(a+="reverb ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${ft(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(a+="chorus ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ht[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${dt(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${De[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${De[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(a+="variation ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(a+="variation ",s.subarray(1).forEach((o,i)=>{[r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},r=>{console.debug(`${a}to chorus: ${X(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((a,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,c=i-1&3,h=`XG EQ ${r} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${h}${a-64}dB`)},()=>{console.debug(`${h}${a} (raw)`)},()=>{console.debug(`${h}${a/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],s=>{let a=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((r,c)=>{([h=>{e.setEffectTypeRaw(3+a,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+a,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+c]||function(){})(r)})}).add([76,6,0],s=>{let a=s[0];a<64?e.setLetterDisplay(s.subarray(1),"XG letter display",a):w(e,we,Date.now())}).add([76,7,0],s=>{let a=s[0];w(e,K,0),w(e,se,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=$.cc*o,c=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,u)[r+p[0]]=f},()=>{t(e,u)[r+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!f},()=>{},()=>{e.setChType(o,f,M.xg),console.debug(`${c}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{t(e,u)[r+p[128]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[76]]=f},()=>{t(e,u)[r+p[77]]=f},()=>{t(e,u)[r+p[78]]=f},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},()=>{t(e,u)[r+p[73]]=f},()=>{t(e,u)[r+p[75]]=f},()=>{t(e,u)[r+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,u)[r+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((c,h)=>{let f=h+i;switch(f){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${r}${g} control source: ${pt(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${r}${g} scale break point: ${c}`):console.debug(`${r}${g} depth: ${c-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,a)=>{let o=s[0],i="MU1000 System: ";s.subarray(1).forEach((r,c)=>{let h=o+c;h==8?console.debug(`${i}LCD contrast set to ${r}.`):h==18?(w(e,Q,r?126:0),console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):h>=64&&h<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.debug(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.debug(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!r),console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][h-64]()})}).add([73,10,0],(s,a)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let r=e.chRedir(0,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(s[1]<<5,a,!0);t(e,J)&&e.dispatchEvent("channelmin",r),t(e,J)&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let r=e.chRedir(o-16+(t(e,He)<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(o<36){let r=e.chRedir(o-32<<4,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),w(e,He,o-32)),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=`PLG-100SG CH${o+1} `,r=Date.now();if(s[1]==0){let c="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?c+=ut[f]||f.toString().padStart("0"):h+=f*13}),r>=t(e,Ne)&&t(e,x).unshift("SG Lyric: "),t(e,x)[0]+=`${bt(c)}`,w(e,Ne,r+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,j).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,j).add([89,0],(s,a,o)=>{if(e.eprom){let i=s[0],r=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)c[r+7*g+S]+=(h>>6-S&1)<<7;else c[r+7*g+y]=h})}}).add([89,1],(s,a,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,a,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;s.subarray(4).forEach((c,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)r[i+7*f+y]+=(c>>6-y&1)<<7;else r[i+7*f+g]=c})}}).add([89,3],(s,a,o)=>{}),t(this,j).add([39,48],(s,a,o)=>{}).add([43,0,0],(s,a,o)=>{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,()=>{w(this,I,c*129/16383*100)},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][f](c,f)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}).add([43,1,0],(s,a,o)=>{}).add([43,2],(s,a,o)=>{let i=e.chRedir(s[0],a,!0),r=s[1],c=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,u)[c+p[0]]=f},()=>{t(e,u)[c+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+r]||(()=>{}))(f,g+r):g<21||(g<47?([()=>{t(e,W)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,u)[c+p[7]]=f},!1,!1,()=>{t(e,u)[c+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,u)[c+p[128]]=f},()=>{t(e,u)[c+p[93]]=f},()=>{t(e,u)[c+p[91]]=f},()=>{t(e,u)[c+p[94]]=f},()=>{t(e,u)[c+p[76]]=f},()=>{t(e,u)[c+p[77]]=f},()=>{t(e,u)[c+p[74]]=f},()=>{t(e,u)[c+p[71]]=f},()=>{t(e,u)[c+p[73]]=f},()=>{t(e,u)[c+p[75]]=f},()=>{t(e,u)[c+p[72]]=f},()=>{t(e,u)[c+p[78]]=f}][g+r-21]||(()=>{}))(f,g+r):g<95||([()=>{t(e,u)[c+p[65]]=f},()=>{t(e,u)[c+p[5]]=f}][g+r-95]||(()=>{}))(f,g+r))})}).add([43,7,0],(s,a,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,a,o)=>{w(e,K,0),w(e,se,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,r){let c=Math.floor(r/16),h=r%16,f=(h*3+c)*7,g=7,y=0;for(f-=h*5,c==2&&(g=2);y>6-y&1,y++})}),t(this,Z).add([66,18,0,0,127],(s,a,o)=>{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,Q,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,a,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,u)[$.cc*9]=120,t(e,u)[$.cc*25]=120,t(e,u)[$.cc*41]=120,t(e,u)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,g=>{w(this,I,g*129/16383*100)},g=>{},g=>{}][f](c,h)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,64,1],s=>{let a=s[0];if(a<16){let o="".padStart(a," ");s.subarray(1).forEach((i,r)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?s.subarray(1).forEach((o,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${o}ms`)},()=>{console.info(`${r}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)},()=>{console.debug(`${r}to delay: ${X(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?s.subarray(1).forEach((o,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],s=>{let a="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let a="GS EFX ",o=function(i,r){let c=yt(t(e,V).subarray(10,12),r,i);c&&console.debug(`${a}${Je(t(e,V).subarray(10,12))} ${c}`)};s.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${X(i)}dB`)},()=>{console.debug(`${a}to chorus: ${X(i)}dB`)},()=>{console.debug(`${a}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][s[0]+r]||function(c,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+r)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var a;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,se,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,se,Date.now()+3200),(a=t(e,oe)[s[0]-1])!=null&&a.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let r=s.subarray(2);for(let c=0;c>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let l=function(s,a,o){let i=s[0],r=$.cc*a,c=$.rpn*a,h=`GS CH${a+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,u)[r+p[0]]=f},()=>{t(e,O)[a]=f},()=>{let y=e.chRedir(f,o,!0);t(e,H)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,W)[a]=+!f},!1,()=>{e.setChType(a,f<<1,M.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[c+3]=f},!1,()=>{t(e,u)[r+p[7]]=f},!1,!1,()=>{t(e,u)[r+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[91]]=f},!1,!1,()=>{t(e,v)[c+1]=f},()=>{t(e,v)[c+2]=f},()=>{t(e,u)[r+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,a){let o=s[0],i=`GS CH${a+1} `;o<2?s.subarray(1).forEach((r,c)=>{[()=>{t(e,u)[$.cc*a+p[32]]=r},()=>{}][o+c]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((r,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][o+c-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,Z).add([66,18,64,16],(s,a)=>{l(s,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(s,a)=>{l(s,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(s,a)=>{l(s,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(s,a)=>{l(s,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(s,a)=>{l(s,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(s,a)=>{l(s,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(s,a)=>{l(s,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(s,a)=>{l(s,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(s,a)=>{l(s,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(s,a)=>{l(s,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(s,a)=>{l(s,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(s,a)=>{l(s,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(s,a)=>{l(s,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(s,a)=>{l(s,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(s,a)=>{l(s,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(s,a)=>{l(s,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(s,a)=>{d(s,e.chRedir(9,a,!0))}).add([66,18,64,65],(s,a)=>{d(s,e.chRedir(0,a,!0))}).add([66,18,64,66],(s,a)=>{d(s,e.chRedir(1,a,!0))}).add([66,18,64,67],(s,a)=>{d(s,e.chRedir(2,a,!0))}).add([66,18,64,68],(s,a)=>{d(s,e.chRedir(3,a,!0))}).add([66,18,64,69],(s,a)=>{d(s,e.chRedir(4,a,!0))}).add([66,18,64,70],(s,a)=>{d(s,e.chRedir(5,a,!0))}).add([66,18,64,71],(s,a)=>{d(s,e.chRedir(6,a,!0))}).add([66,18,64,72],(s,a)=>{d(s,e.chRedir(7,a,!0))}).add([66,18,64,73],(s,a)=>{d(s,e.chRedir(8,a,!0))}).add([66,18,64,74],(s,a)=>{d(s,e.chRedir(10,a,!0))}).add([66,18,64,75],(s,a)=>{d(s,e.chRedir(11,a,!0))}).add([66,18,64,76],(s,a)=>{d(s,e.chRedir(12,a,!0))}).add([66,18,64,77],(s,a)=>{d(s,e.chRedir(13,a,!0))}).add([66,18,64,78],(s,a)=>{d(s,e.chRedir(14,a,!0))}).add([66,18,64,79],(s,a)=>{d(s,e.chRedir(15,a,!0))}),t(this,fe).add([54,65],(s,a)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],r=e.chRedir(o&15,a,!0),c=$.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,M.x5d),t(e,O)[r]=i-1,t(e,u)[c+p[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,M.x5d),t(e,O)[r]=i-101,t(e,u)[c+p[0]]=56):(e.setChType(r,e.CH_DRUMS,M.x5d),t(e,O)[r]=vt[i-229]||0,t(e,u)[c+p[0]]=62))},()=>{t(e,u)[c+p[7]]=i},()=>{i<31&&(t(e,u)[c+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,u)[c+p[93]]=Ie(i)},()=>{t(e,u)[c+p[91]]=Ie(i)},()=>{t(e,v)[r*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[r*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[r*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=82,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` +122 006 000 `),t(this,G)[1]=function(s){switch(s.slice(0,2)){case"@I":{w(this,D,!0),t(this,x).unshift(`Kar.Info: ${s.slice(2)}`);break}case"@K":{w(this,D,!0),t(this,x).unshift("Karaoke mode active."),console.debug(`Karaoke mode active: ${s.slice(2)}`);break}case"@L":{w(this,D,!0),t(this,x).unshift(`Language: ${s.slice(2)}`);break}case"@T":{w(this,D,!0),t(this,x).unshift(`Ka.Title: ${s.slice(2)}`);break}case"@V":{w(this,D,!0),t(this,x).unshift(`Kara.Ver: ${s.slice(2)}`);break}case"XF":{let a=s.slice(2).split(":");switch(a[0]){case"hd":{a.slice(1).forEach((o,i)=>{o.length&&t(this,x).unshift(`${["SongDate","SnRegion","SongCat.","SongBeat","SongInst","Sn.Vocal","SongCmp.","SongLrc.","SongArr.","SongPerf","SongPrg.","SongTags"][i]}: ${o}`)});break}case"ln":{a.slice(1).forEach((o,i)=>{o.length&&t(this,x).unshift(`${["Kar.Lang","Kar.Name","Kar.Cmp.","Kar.Lrc.","kar.Arr.","Kar.Perf","Kar.Prg."][i]}: ${o}`)});break}default:t(this,x).unshift(`XGF_Data: ${s}`)}break}default:t(this,D)?s[0]=="\\"?t(this,x).unshift(`@ ${s.slice(1)}`):s[0]=="/"?t(this,x).unshift(s.slice(1)):t(this,x)[0]+=s:(t(this,x)[0]=s,t(this,x).unshift(""))}},t(this,G)[2]=function(s){t(this,x).unshift(`Copyrite: ${s}`)},t(this,G)[3]=function(s,a){a<1&&t(this,le)<1&&t(this,x).unshift(`TrkTitle: ${s}`)},t(this,G)[4]=function(s,a){t(this,x).unshift(`${Ct(t(this,le),""," ")}Instrmnt: ${s}`)},t(this,G)[5]=function(s){s.trim()==""?t(this,x).unshift(""):t(this,x)[0]+=`${s}`},t(this,G)[6]=function(s){t(this,x).unshift(`${Ct(t(this,le),""," ")}C.Marker: ${s}`)},t(this,G)[7]=function(s){t(this,x).unshift(`CuePoint: ${s}`)},t(this,G)[32]=function(s){w(this,le,s[0]+1)},t(this,G)[33]=function(s,a){console.debug(`Track ${a} requests to get assigned to output ${s}.`),t(e,Ee)[a]=s+1},t(this,G)[81]=function(s,a){w(e,Ue,s/1e3)},t(this,G)[127]=function(s,a){t(e,ve).run(s,a)},t(this,ve).default=function(s){console.warn(`Unrecognized sequencer-specific byte sequence: ${s}`)},t(this,ve).add([67,0,1],function(s,a){t(e,Ee)[a]=s[0]+1}),w(this,Ce,new ee("universal non-realtime")),w(this,Me,new ee("universal realtime")),w(this,j,new ee("Yamaha")),w(this,Z,new ee("Roland")),w(this,fe,new ee("Korg")),w(this,xe,new ee("Kawai")),w(this,Te,new ee("Akai")),w(this,Re,new ee("Casio"));let n=function(s){console.info(`Unrecognized SysEx in "${this.name}" set.`,s)};t(this,Ce).default=n,t(this,Me).default=n,t(this,j).default=n,t(this,Z).default=n,t(this,fe).default=n,t(this,xe).default=n,t(this,Te).default=n,t(this,Re).default=n,t(this,Ce).add([9],s=>{e.switchMode(["gm","?","g2"][s[0]-1],!0),w(e,D,t(e,D)||!1),console.info(`MIDI reset: ${["GM","Init","GM2"][s[0]-1]}`),s[0]==2&&e.init()}),t(this,Me).add([4,1],s=>{w(e,I,((s[1]<<7)+s[0])/16383*100)}).add([4,3],s=>((s[1]<<7)+s[0]-8192)/8192).add([4,4],s=>s[1]-64),t(this,j).add([76,0,0],s=>{switch(s[0]){case 125:{console.info(`XG drum setup reset: ${s}`);break}case 126:{e.switchMode("xg",!0),w(e,D,!1),console.info("MIDI reset: XG");break}default:{let a=[0,0,0,0],o=(i,r)=>{a[r]=i};if(s.subarray(1).forEach((i,r)=>{let c=r+s[0];([o,o,o,o,h=>{w(this,I,h*129/16383*100)},h=>{},h=>{}][c]||(()=>{}))(i,r)}),s[0]<4){let i=0;a.forEach(r=>{i=i<<4,i+=r}),i-=1024}}}}).add([76,2,1],s=>{let a="XG ";s[0]<32?(a+="reverb ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(0,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(0,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}time: ${ft(r)}s`)},r=>{console.debug(`${a}diffusion: ${r}`)},r=>{console.debug(`${a}initial delay: ${r}`)},r=>{console.debug(`${a}HPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}LPF cutoff: ${De[r]}Hz`)},r=>{console.debug(`${a}width: ${r}`)},r=>{console.debug(`${a}height: ${r}`)},r=>{console.debug(`${a}depth: ${r}`)},r=>{console.debug(`${a}wall type: ${r}`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},!1,!1,r=>{console.debug(`${a}delay: ${r}`)},r=>{console.debug(`${a}density: ${r}`)},r=>{console.debug(`${a}balance: ${r}`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{}][s[0]+i]||function(){console.warn(`Unknown XG reverb address: ${s[0]}.`)})(o)})):s[0]<64?(a+="chorus ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(1,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(1,!0,r),console.debug(`${a}sub type: ${r+1}`)},r=>{console.debug(`${a}LFO: ${ht[r]}Hz`)},r=>{},r=>{console.debug(`${a}feedback: ${r}`)},r=>{console.debug(`${a}delay offset: ${dt(r)}ms`)},r=>{},r=>{console.debug(`${a}low: ${De[r]}Hz`)},r=>{console.debug(`${a}low: ${r-64}dB`)},r=>{console.debug(`${a}high: ${De[r]}Hz`)},r=>{console.debug(`${a}high: ${r-64}dB`)},r=>{console.debug(`${a}dry/wet: ${r}`)},r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},!1,r=>{},r=>{},r=>{},r=>{console.debug(`${a}LFO phase diff: ${(r-64)*3}deg`)},r=>{console.debug(`${a}input mode: ${r?"stereo":"mono"}`)},r=>{}][s[0]-32+i]||function(){console.warn(`Unknown XG chorus address: ${s[0]}.`)})(o)})):s[0]<86?(a+="variation ",s.subarray(1).forEach((o,i)=>{([r=>{e.setEffectTypeRaw(2,!1,r),console.info(`${a}main type: ${Be[r]}`)},r=>{e.setEffectTypeRaw(2,!0,r),console.debug(`${a}sub type: ${r+1}`)}][s[0]-64+i]||function(){})(o)})):s[0]<97?(a+="variation ",s.subarray(1).forEach((o,i)=>{[r=>{console.debug(`${a}send: ${X(r)}dB`)},r=>{console.debug(`${a}pan: ${r-64}`)},r=>{console.debug(`${a}to reverb: ${X(r)}dB`)},r=>{console.debug(`${a}to chorus: ${X(r)}dB`)},r=>{console.debug(`${a}connection: ${r?"system":"insertion"}`)},r=>{console.debug(`${a}channel: CH${r+1}`)},r=>{console.debug(`${a}mod wheel: ${r-64}`)},r=>{console.debug(`${a}bend wheel: ${r-64}`)},r=>{console.debug(`${a}channel after touch: ${r-64}`)},r=>{console.debug(`${a}AC1: ${r-64}`)},r=>{console.debug(`${a}AC2: ${r-64}`)}][s[0]-86+i](o)})):s[0]>111&&s[0]<118?a+="variation ":console.warn(`Unknown XG variation address: ${s[0]}`)}).add([76,2,64],s=>{s.subarray(1).forEach((a,o)=>{let i=o+s[0];if(i==0)console.debug(`XG EQ preset: ${["flat","jazz","pop","rock","classic"][a]}`);else{let r=i-1>>2,c=i-1&3,h=`XG EQ ${r} ${["gain","freq","Q","shape"][c]}: `;[()=>{console.debug(`${h}${a-64}dB`)},()=>{console.debug(`${h}${a} (raw)`)},()=>{console.debug(`${h}${a/10}`)},()=>{console.debug(`${h}${["shelf","peak"][+!!a]}`)}][c]()}})}).add([76,3],s=>{let a=s[0],o=s[1],i=`XG Insertion ${s[0]+1} `;s.subarray(2).forEach((r,c)=>{([h=>{e.setEffectTypeRaw(3+a,!1,h),console.info(`${i}main type: ${Be[h]}`)},h=>{e.setEffectTypeRaw(3+a,!0,h),console.debug(`${i}sub type: ${h+1}`)}][o+c]||function(){})(r)})}).add([76,6,0],s=>{let a=s[0];a<64?e.setLetterDisplay(s.subarray(1),"XG letter display",a):w(e,we,Date.now())}).add([76,7,0],s=>{let a=s[0];w(e,K,0),w(e,se,Date.now()+3200),t(e,z,ne).fill(0);let o=s.subarray(1);for(let i=0;i>6-y&1,y++})}).add([76,8],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=$.cc*o,c=`XG CH${o+1} `,h=`Unknown XG part address ${i}.`;s.subarray(2).forEach((f,g)=>{i<1?console.debug(h):i<41?([()=>{t(e,b)[r+p[0]]=f},()=>{t(e,b)[r+p[32]]=f},()=>{t(e,O)[o]=f},()=>{let y=e.chRedir(f,a,!0);t(e,N)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!f},()=>{},()=>{e.setChType(o,f,C.xg),console.debug(`${c}type: ${Ge[f]||f}`)},()=>{t(e,v)[$.rpn*o+3]=f},!1,!1,()=>{t(e,b)[r+p[7]]=f},!1,!1,()=>{t(e,b)[r+p[10]]=f||128},!1,!1,()=>{t(e,b)[r+p[128]]=f},()=>{t(e,b)[r+p[93]]=f},()=>{t(e,b)[r+p[91]]=f},()=>{t(e,b)[r+p[94]]=f},()=>{t(e,b)[r+p[76]]=f},()=>{t(e,b)[r+p[77]]=f},()=>{t(e,b)[r+p[78]]=f},()=>{t(e,b)[r+p[74]]=f},()=>{t(e,b)[r+p[71]]=f},()=>{t(e,b)[r+p[73]]=f},()=>{t(e,b)[r+p[75]]=f},()=>{t(e,b)[r+p[72]]=f}][i+g-1]||(()=>{}))():i<48?console.debug(h):i<111?i>102&&i<105&&(t(e,b)[r+p[[5,65][i&1]]]=f):i<114?console.debug(h):i<116?console.debug(`${c}EQ ${["bass","treble"][i&1]} gain: ${f-64}dB`):i<118?console.debug(h):i<120?console.debug(`${c}EQ ${["bass","treble"][i&1]} freq: ${f}`):console.debug(h)})}).add([76,9],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=s[1],r=`PLG-150VL CH${o+1} `;s.subarray(2).forEach((c,h)=>{let f=h+i;switch(f){case 1:{console.info(`${r}breath mode: ${["system","breath","velocity","touch EG"][c]}`);break}case 0:case 27:case 28:break;default:if(f<27){let g=["pressure","embouchure","tonguing","scream","breath noise","growl","throat formant","harmonic enhancer","damping","absorption","amplification","brightness"][f-3>>1];f&1?f<23?(console.debug(`${r}${g} control source: ${pt(c)}`),c&&c<96&&e.allocateAce(c)):console.debug(`${r}${g} scale break point: ${c}`):console.debug(`${r}${g} depth: ${c-64}`)}}})}).add([76,10],s=>{}).add([76,16],s=>{}).add([76,17,0,0],s=>{}).add([76,112],s=>{console.debug(`XG enable PLG-1${["50VL","00SG","50DX"][s[0]]} for CH${s[2]+1}.`)}).add([73,0,0],(s,a)=>{let o=s[0],i="MU1000 System: ";s.subarray(1).forEach((r,c)=>{let h=o+c;h==8?console.debug(`${i}LCD contrast set to ${r}.`):h==18?(w(e,Q,r?126:0),console.debug(`${i}bank defaults to ${r?"MU100 Native":"MU Basic"}.`)):h>=64&&h<69&&[()=>{e.dispatchEvent("channelactive",r)},()=>{r<8?(e.dispatchEvent("channelmin",r<<4),console.debug(`Octavia System: Minimum CH${(r<<4)+1}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{r<8?(e.dispatchEvent("channelmax",(r<<4)+15),console.debug(`Octavia System: Maximum CH${(r<<4)+16}`)):(e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges"))},()=>{e.dispatchEvent("channelreset"),console.info("Octavia System: Clear channel ranges")},()=>{w(e,J,!!r),console.info(`Octavia System: RS receiving ${["dis","en"][r]}abled.`)}][h-64]()})}).add([73,10,0],(s,a)=>{let o=s[0],i=`MU1000 RS${t(e,J)?"":" (ignored)"}: `;if(o<16)switch(o){case 2:{let r=e.chRedir(0,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+63)),console.info(`${i}Show CH1~64`);break}case 3:{let r=e.chRedir(s[1]<<5,a,!0);t(e,J)&&e.dispatchEvent("channelmin",r),t(e,J)&&e.dispatchEvent("channelmax",r+31),console.info(`${i}Show CH${r+1}~CH${r+32}`);break}default:console.debug(`${i}unknown switch ${o} invoked.`)}else if(o<32){if(t(e,J)){let r=e.chRedir(o-16+(t(e,Ne)<<4),a,!0);e.dispatchEvent("channelactive",r)}}else if(o<36){let r=e.chRedir(o-32<<4,a,!0);t(e,J)&&(e.dispatchEvent("channelmin",r),e.dispatchEvent("channelmax",r+15),w(e,Ne,o-32)),console.info(`${i}Show CH${r+1}~CH${r+16}`)}}).add([93,3],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=`PLG-100SG CH${o+1} `,r=Date.now();if(s[1]==0){let c="",h=0;s.subarray(2).forEach((f,g)=>{g%2==0?c+=ut[f]||f.toString().padStart("0"):h+=f*13}),r>=t(e,He)&&t(e,x).unshift("SG Lyric: "),t(e,x)[0]+=`${bt(c)}`,w(e,He,r+Math.ceil(h/2)+t(e,Ue)),q()&&console.debug(`${i}vocals: ${c}`)}else console.warn(`Unknown PLG-100SG data: ${s}`)}),t(this,j).add([76,48],s=>{}).add([76,49],s=>{}).add([76,50],s=>{}).add([76,51],s=>{}),t(this,j).add([89,0],(s,a,o)=>{if(e.eprom){let i=s[0],r=(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM trail to 0x${r.toString(16).padStart(6,"0")}, ${i} bytes.`);let c=e.eprom.data;s.subarray(4).forEach((h,f)=>{let g=f>>3,y=f&7;if(y==7)for(let S=0;S<7;S++)c[r+7*g+S]+=(h>>6-S&1)<<7;else c[r+7*g+y]=h})}}).add([89,1],(s,a,o)=>{let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3];q()&&console.debug(`MU1000 EPROM jump to 0x${i.toString(16).padStart(6,"0")}.`),e.eprom&&(e.eprom.offset=i)}).add([89,2],(s,a,o)=>{if(e.eprom){let i=(s[0]<<21)+(s[1]<<14)+(s[2]<<7)+s[3]+(e.eprom.offset||0);q()&&console.debug(`MU1000 EPROM write to 0x${i.toString(16).padStart(6,"0")}.`);let r=e.eprom.data;s.subarray(4).forEach((c,h)=>{let f=h>>3,g=h&7;if(g==7)for(let y=0;y<7;y++)r[i+7*f+y]+=(c>>6-y&1)<<7;else r[i+7*f+g]=c})}}).add([89,3],(s,a,o)=>{}),t(this,j).add([39,48],(s,a,o)=>{}).add([43,0,0],(s,a,o)=>{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,()=>{w(this,I,c*129/16383*100)},()=>c-64,()=>c||128,()=>c,()=>c,()=>{console.debug(`TG300 variation on cc${c}.`)}][f](c,f)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}).add([43,1,0],(s,a,o)=>{}).add([43,2],(s,a,o)=>{let i=e.chRedir(s[0],a,!0),r=s[1],c=$.cc*i,h=`TG300 CH${i+1} `;s.subarray(2).forEach((f,g)=>{g<5?([()=>{},()=>{t(e,b)[c+p[0]]=f},()=>{t(e,b)[c+p[32]]=f},()=>{t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,N)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][g+r]||(()=>{}))(f,g+r):g<21||(g<47?([()=>{t(e,W)[i]=+!f},()=>{},()=>{},()=>{t(e,v)[$.rpn*i+3]=f},()=>{},()=>{t(e,b)[c+p[7]]=f},!1,!1,()=>{t(e,b)[c+p[10]]=f||128},!1,!1,()=>{console.debug(`${h} AC1 at cc${f}`)},()=>{console.debug(`${h} AC2 at cc${f}`)},()=>{t(e,b)[c+p[128]]=f},()=>{t(e,b)[c+p[93]]=f},()=>{t(e,b)[c+p[91]]=f},()=>{t(e,b)[c+p[94]]=f},()=>{t(e,b)[c+p[76]]=f},()=>{t(e,b)[c+p[77]]=f},()=>{t(e,b)[c+p[74]]=f},()=>{t(e,b)[c+p[71]]=f},()=>{t(e,b)[c+p[73]]=f},()=>{t(e,b)[c+p[75]]=f},()=>{t(e,b)[c+p[72]]=f},()=>{t(e,b)[c+p[78]]=f}][g+r-21]||(()=>{}))(f,g+r):g<95||([()=>{t(e,b)[c+p[65]]=f},()=>{t(e,b)[c+p[5]]=f}][g+r-95]||(()=>{}))(f,g+r))})}).add([43,7,0],(s,a,o)=>{let i=s[0];e.setLetterDisplay(s.subarray(1),"TG300 letter display",i)}).add([43,7,1],(s,a,o)=>{w(e,K,0),w(e,se,Date.now()+3200),t(e,z,ne).fill(0),s.forEach(function(i,r){let c=Math.floor(r/16),h=r%16,f=(h*3+c)*7,g=7,y=0;for(f-=h*5,c==2&&(g=2);y>6-y&1,y++})}),t(this,Z).add([66,18,0,0,127],(s,a,o)=>{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,Q,3),w(e,D,!1),t(e,he).fill(0),console.info(`GS system to ${["single","dual"][s[0]]} mode.`)}).add([66,18,64,0],(s,a,o)=>{switch(s[0]){case 127:{e.switchMode("gs",!0),t(e,b)[$.cc*9]=120,t(e,b)[$.cc*25]=120,t(e,b)[$.cc*41]=120,t(e,b)[$.cc*57]=120,w(e,D,!1),t(e,he).fill(0),console.info("MIDI reset: GS");break}default:{let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{let f=h+s[0];[r,r,r,r,g=>{w(this,I,g*129/16383*100)},g=>{},g=>{}][f](c,h)}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,64,1],s=>{let a=s[0];if(a<16){let o="".padStart(a," ");s.subarray(1).forEach((i,r)=>{o+=String.fromCharCode(Math.max(32,i))}),o=o.padEnd(16," "),console.debug(`GS patch name: ${o}`)}else a<48||(a<65?s.subarray(1).forEach((o,i)=>{let r=`GS ${a+i>55?"chorus":"reverb"} `;([()=>{console.info(`${r}type: ${Ye[o]}`),e.setEffectType(0,40,o)},()=>{},()=>{},()=>{},()=>{},()=>{},!1,()=>{console.debug(`${r}predelay: ${o}ms`)},()=>{console.info(`${r}type: ${gt[o]}`),e.setEffectType(1,40,16+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)},()=>{console.debug(`${r}to delay: ${X(o)}`)}][a+i-48]||(()=>{}))()}):a<80?console.debug(`Unknown GS patch address: ${a}`):a<91?s.subarray(1).forEach((o,i)=>{let r="GS delay ";([()=>{console.info(`${r}type: ${$t[o]}`),e.setEffectType(2,40,32+o)},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{},()=>{console.debug(`${r}to reverb: ${X(o)}`)}][a+i-80]||(()=>{}))()}):console.debug(`Unknown GS patch address: ${a}`))}).add([66,18,64,2],s=>{let a="GS EQ ";s.subarray(1).forEach((o,i)=>{([()=>{console.debug(`${a}low freq: ${[200,400][o]}Hz`)},()=>{console.debug(`${a}low gain: ${o-64}dB`)},()=>{console.debug(`${a}high freq: ${[3e3,6e3][o]}Hz`)},()=>{console.debug(`${a}high gain: ${o-64}dB`)}][s[0]+i]||function(){console.warn(`Unknown GS EQ address: ${s[0]+i}`)})()})}).add([66,18,64,3],s=>{let a="GS EFX ",o=function(i,r){let c=yt(t(e,V).subarray(10,12),r,i);c&&console.debug(`${a}${Je(t(e,V).subarray(10,12))} ${c}`)};s.subarray(1).forEach((i,r)=>{([()=>{e.setEffectTypeRaw(3,!1,32+i)},()=>{e.setEffectTypeRaw(3,!0,i),console.info(`${a}type: ${Je(t(e,V).subarray(10,12))}`)},!1,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,()=>{console.debug(`${a}to reverb: ${X(i)}dB`)},()=>{console.debug(`${a}to chorus: ${X(i)}dB`)},()=>{console.debug(`${a}to delay: ${X(i)}dB`)},!1,()=>{console.debug(`${a}1 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}1 depth: ${i-64}`)},()=>{console.debug(`${a}2 source: ${i}`),i&&i<96&&e.allocateAce(i)},()=>{console.debug(`${a}2 depth: ${i-64}`)},()=>{console.debug(`${a}to EQ: ${i?"ON":"OFF"}`)}][s[0]+r]||function(c,h){console.warn(`Unknown GS EFX address: ${h}`)})(i,s[0]+r)})}).add([66,18,65],s=>{}).add([69,18,16],s=>{var a;switch(s[0]){case 0:{let o=s[1];e.setLetterDisplay(s.subarray(2),"GS display text",o);break}case 32:{w(e,se,Date.now()+3200),s[1]==0&&w(e,K,Math.max(Math.min(s[2]-1,9),0));break}default:if(s[0]<11){t(e,K)>9&&w(e,K,0),w(e,se,Date.now()+3200),(a=t(e,oe)[s[0]-1])!=null&&a.length||(t(e,oe)[s[0]-1]=new Uint8Array(256));let o=t(e,oe)[s[0]-1],i=s[1];o.fill(0);let r=s.subarray(2);for(let c=0;c>4-k&1,k++})}else console.warn(`Unknown GS display section: ${s[0]}`)}});let l=function(s,a,o){let i=s[0],r=$.cc*a,c=$.rpn*a,h=`GS CH${a+1} `;i<3?s.subarray(1).forEach((f,g)=>{[()=>{t(e,b)[r+p[0]]=f},()=>{t(e,O)[a]=f},()=>{let y=e.chRedir(f,o,!0);t(e,N)[a]=y,a!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))}][i+g]()}):i<19||(i<44?s.subarray(1).forEach((f,g)=>{([()=>{t(e,W)[a]=+!f},!1,()=>{e.setChType(a,f<<1,C.gs),console.debug(`${h}type: ${f?"drum ":"melodic"}${f||""}`)},()=>{t(e,v)[c+3]=f},!1,()=>{t(e,b)[r+p[7]]=f},!1,!1,()=>{t(e,b)[r+p[10]]=f||128},!1,!1,()=>{console.debug(`${h}CC 1: cc${f}`)},()=>{console.debug(`${h}CC 2: cc${f}`)},()=>{t(e,b)[r+p[93]]=f},()=>{t(e,b)[r+p[91]]=f},!1,!1,()=>{t(e,v)[c+1]=f},()=>{t(e,v)[c+2]=f},()=>{t(e,b)[r+p[94]]=f}][i+g-19]||(()=>{}))()}):i<76||console.debug(`Unknown GS part address: ${i}`))},d=function(s,a){let o=s[0],i=`GS CH${a+1} `;o<2?s.subarray(1).forEach((r,c)=>{[()=>{t(e,b)[$.cc*a+p[32]]=r},()=>{}][o+c]()}):o<32?console.warn(`Unknown GS misc address: ${o}`):o<35?s.subarray(1).forEach((r,c)=>{[()=>{console.debug(`${i}EQ: o${["ff","n"][r]}`)},()=>{},()=>{console.debug(`${i}EFX: o${["ff","n"][r]}`)}][o+c-32]()}):console.warn(`Unknown GS misc address: ${o}`)};t(this,Z).add([66,18,64,16],(s,a)=>{l(s,e.chRedir(9,a,!0),a)}).add([66,18,64,17],(s,a)=>{l(s,e.chRedir(0,a,!0),a)}).add([66,18,64,18],(s,a)=>{l(s,e.chRedir(1,a,!0),a)}).add([66,18,64,19],(s,a)=>{l(s,e.chRedir(2,a,!0),a)}).add([66,18,64,20],(s,a)=>{l(s,e.chRedir(3,a,!0),a)}).add([66,18,64,21],(s,a)=>{l(s,e.chRedir(4,a,!0),a)}).add([66,18,64,22],(s,a)=>{l(s,e.chRedir(5,a,!0),a)}).add([66,18,64,23],(s,a)=>{l(s,e.chRedir(6,a,!0),a)}).add([66,18,64,24],(s,a)=>{l(s,e.chRedir(7,a,!0),a)}).add([66,18,64,25],(s,a)=>{l(s,e.chRedir(8,a,!0),a)}).add([66,18,64,26],(s,a)=>{l(s,e.chRedir(10,a,!0),a)}).add([66,18,64,27],(s,a)=>{l(s,e.chRedir(11,a,!0),a)}).add([66,18,64,28],(s,a)=>{l(s,e.chRedir(12,a,!0),a)}).add([66,18,64,29],(s,a)=>{l(s,e.chRedir(13,a,!0),a)}).add([66,18,64,30],(s,a)=>{l(s,e.chRedir(14,a,!0),a)}).add([66,18,64,31],(s,a)=>{l(s,e.chRedir(15,a,!0),a)}).add([66,18,64,64],(s,a)=>{d(s,e.chRedir(9,a,!0))}).add([66,18,64,65],(s,a)=>{d(s,e.chRedir(0,a,!0))}).add([66,18,64,66],(s,a)=>{d(s,e.chRedir(1,a,!0))}).add([66,18,64,67],(s,a)=>{d(s,e.chRedir(2,a,!0))}).add([66,18,64,68],(s,a)=>{d(s,e.chRedir(3,a,!0))}).add([66,18,64,69],(s,a)=>{d(s,e.chRedir(4,a,!0))}).add([66,18,64,70],(s,a)=>{d(s,e.chRedir(5,a,!0))}).add([66,18,64,71],(s,a)=>{d(s,e.chRedir(6,a,!0))}).add([66,18,64,72],(s,a)=>{d(s,e.chRedir(7,a,!0))}).add([66,18,64,73],(s,a)=>{d(s,e.chRedir(8,a,!0))}).add([66,18,64,74],(s,a)=>{d(s,e.chRedir(10,a,!0))}).add([66,18,64,75],(s,a)=>{d(s,e.chRedir(11,a,!0))}).add([66,18,64,76],(s,a)=>{d(s,e.chRedir(12,a,!0))}).add([66,18,64,77],(s,a)=>{d(s,e.chRedir(13,a,!0))}).add([66,18,64,78],(s,a)=>{d(s,e.chRedir(14,a,!0))}).add([66,18,64,79],(s,a)=>{d(s,e.chRedir(15,a,!0))}),t(this,fe).add([54,65],(s,a)=>{e.switchMode("x5d");let o=(s[1]<<7)+s[0],i=(s[3]<<7)+s[2],r=e.chRedir(o&15,a,!0),c=$.cc*r;[()=>{i<1||(i<101?(e.setChType(r,e.CH_MELODIC,C.x5d),t(e,O)[r]=i-1,t(e,b)[c+p[0]]=82):i<229?(e.setChType(r,e.CH_MELODIC,C.x5d),t(e,O)[r]=i-101,t(e,b)[c+p[0]]=56):(e.setChType(r,e.CH_DRUMS,C.x5d),t(e,O)[r]=vt[i-229]||0,t(e,b)[c+p[0]]=62))},()=>{t(e,b)[c+p[7]]=i},()=>{i<31&&(t(e,b)[c+p[10]]=Math.round((i-15)*4.2+64))},()=>{t(e,b)[c+p[93]]=Ie(i)},()=>{t(e,b)[c+p[91]]=Ie(i)},()=>{t(e,v)[r*$.rpn+3]=i>8191?i-16320:64+i},()=>{t(e,v)[r*$.rpn+1]=i>8191?i-16320:64+i},()=>{i>0&&(t(e,v)[r*$.rpn]=i)},()=>{}][o>>4]()}).add([54,76,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=82,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){if(g<16400){let y=g%164;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` ${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}r>99&&(i=90,r=0)}}),e.userBank.clearRange({msb:82,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,77,0],(s,a)=>{e.switchMode("x5d",!0);let o="",i=90,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){if(g<13600){let y=g%136;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{h+=` -${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,a)=>{e.switchMode("x5d",!0),te(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,a)=>{e.switchMode("x5d",!0),te(s,function(o,i,r,c){if(i<192){let h=e.chRedir(Math.floor(i/12),a,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,M.x5d),t(e,u)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,M.x5d),t(e,u)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,u)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,u)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,u)[f+p[91]]=Ie(y),t(e,u)[f+p[93]]=Ie(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,a,!0),y=o>>4;t(e,H)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,a,!0)}})}),t(this,Z).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1];s.subarray(2).forEach((c,h)=>{let f=h+r;t(e,ge)[f+(i-1)*16]=c,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,re)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=c+40},()=>{t(e,v)[i*$.rpn+1]=c+14},()=>{t(e,v)[i*$.rpn]=c},!1,()=>{t(e,u)[$.cc*i+p[91]]=c?127:0},!1,()=>{t(e,u)[$.cc*i+p[7]]=c},()=>{t(e,u)[$.cc*i+p[10]]=Math.ceil(c*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1]+(s[0]<<7);r<10&&(t(e,re)[i]=1),s.subarray(2).forEach((c,h)=>{let f=h+r;f<14&&(t(e,Y)[(i-1)*$.cmt+f]=c)})}).add([22,18,3],(s,a,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((r,c)=>{let h=c+i;t(e,ge)[h]=r;let f=e.chRedir(1+h>>4,a,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,re)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=r+40},()=>{t(e,v)[f*$.rpn+1]=r+14},()=>{t(e,v)[f*$.rpn]=r},!1,()=>{t(e,u)[$.cc*f+p[91]]=r?127:0},!1,()=>{t(e,u)[$.cc*f+p[7]]=r},()=>{t(e,u)[$.cc*f+p[10]]=Math.ceil(r*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,a,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((r,c)=>{let h=c+i,f=e.chRedir(Math.floor(h/246+1),a,!0),g=h%246;g<14&&(t(e,Y)[(f-1)*$.cmt+g]=r),g<10&&(t(e,re)[f]=1)})}).add([22,18,5],(s,a,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=r,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${r.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,r+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME -000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,a,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=r)})}).add([22,18,16],(s,a,o)=>{e.switchMode("mt32");let i=s[1],r=!1,c=function(h,f){t(e,H)[f-12]=h,r=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{w(e,I,h)}][g]||(()=>{}))(h,f)}),r&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let a=s[1],o=" ".repeat(a);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,ie,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,N).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,a)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,a)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{[r,r,r,r,()=>{w(e,I,c*129/16383*100)},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,0,1],(s,a)=>{}).add([66,18,0,2],(s,a)=>{}).add([66,18,1],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=o*$.cc,r=s[1],c=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=r+f;g<3?[()=>{t(e,u)[i+p[0]]=h||121},()=>{t(e,u)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,a,!0);t(e,H)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!h},()=>{e.setChType(o,h,M.ns5r),console.debug(`${c}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,u)[i+p[7]]=h},()=>{t(e,u)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,u)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,u)[i+p[93]]=h},()=>{t(e,u)[i+p[91]]=h},()=>{t(e,u)[i+p[76]]=h},()=>{t(e,u)[i+p[77]]=h},()=>{t(e,u)[i+p[78]]=h},()=>{t(e,u)[i+p[74]]=h},()=>{t(e,u)[i+p[71]]=h},()=>{t(e,u)[i+p[73]]=h},()=>{t(e,u)[i+p[75]]=h},()=>{t(e,u)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,u)[i+p[5]]=h},()=>{t(e,u)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,a)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,se,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let r=s.subarray(1),c=4;r.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";te(s,(i,r)=>{r<8?(i>31&&(o+=String.fromCharCode(i)),r==7&&(e.aiEfxName=o)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),te(s,function(o,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),c=r*$.cc;switch(i%92){case 0:{t(e,u)[c+p[0]]=o||121;break}case 1:{t(e,u)[c+p[32]]=o;break}case 2:{t(e,O)[r]=o,o>0&&(t(e,P)[r]=1);break}case 3:{let h=e.chRedir(o,a,!0);t(e,H)[r]=h,r!=h&&(console.info(`NS5R CH${r+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[r*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,u)[c+p[7]]=o;break}case 11:{t(e,u)[c+p[11]]=o;break}case 14:{t(e,u)[c+p[10]]=o||128;break}case 19:{t(e,u)[c+p[93]]=o;break}case 20:{t(e,u)[c+p[91]]=o;break}case 84:{t(e,u)[c+p[65]]=o;break}case 85:{t(e,u)[c+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=80,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{c=f&127;break}case y==13:{h+=` +${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}}),e.userBank.clearRange({msb:90,prg:[0,99],lsb:0}),e.userBank.load(h)}).add([54,78],(s,a)=>{e.switchMode("x5d",!0),console.debug(`X5D mode switch requested: ${["combi","combi edit","prog","prog edit","multi","global"][s[0]]} mode.`)}).add([54,85],(s,a)=>{e.switchMode("x5d",!0),te(s,(o,i)=>{i>0&&i<3&&e.setEffectType(i-1,44,o)})}).add([54,104],(s,a)=>{e.switchMode("x5d",!0),te(s,function(o,i,r,c){if(i<192){let h=e.chRedir(Math.floor(i/12),a,!0),f=h*$.cc;switch(i%12){case 0:{o<128?(e.setChType(h,e.CH_MELODIC,C.x5d),t(e,b)[f+p[0]]=82,t(e,O)[h]=o):(e.setChType(h,e.CH_DRUMS,C.x5d),t(e,b)[f+p[0]]=62,t(e,O)[h]=vt[o-128]),o>0&&(t(e,P)[h]=1);break}case 1:{t(e,b)[f+p[7]]=o;break}case 2:{t(e,v)[h*$.rpn+3]=o>127?o-192:64+o;break}case 3:{t(e,v)[h*$.rpn+1]=o>127?o-192:64+o;break}case 4:{o<31&&(t(e,b)[f+p[10]]=Math.round((o-15)*4.2+64));break}case 5:{let g=o>>4,y=o&15;t(e,b)[f+p[91]]=Ie(y),t(e,b)[f+p[93]]=Ie(g);break}case 10:break;case 11:{let g=e.chRedir(o&15,a,!0),y=o>>4;t(e,N)[h]=o,(g!=h||y)&&(console.info(`X5D Part CH${h+1} receives from CH${g+1}.`),e.buildRchTree())}}}else{let h=e.chRedir(i-192,a,!0)}})}),t(this,Z).add([22,18,127],s=>{e.switchMode("mt32",!0),w(e,D,!1),e.userBank.clearRange({msb:0,lsb:127,prg:[0,127]}),console.info("MIDI reset: MT-32")}).add([22,18,0],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1];s.subarray(2).forEach((c,h)=>{let f=h+r;t(e,ge)[f+(i-1)*16]=c,([!1,()=>{let g=t(e,ge)[i-1<<4];if(g<3)if(t(e,re)[i]=1,g==2)for(let y=0;y{t(e,v)[i*$.rpn+3]=c+40},()=>{t(e,v)[i*$.rpn+1]=c+14},()=>{t(e,v)[i*$.rpn]=c},!1,()=>{t(e,b)[$.cc*i+p[91]]=c?127:0},!1,()=>{t(e,b)[$.cc*i+p[7]]=c},()=>{t(e,b)[$.cc*i+p[10]]=Math.ceil(c*9.05)}][f]||(()=>{}))()})}).add([22,18,1],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0)}).add([22,18,2],(s,a,o)=>{e.switchMode("mt32");let i=e.chRedir(o,a,!0),r=s[1]+(s[0]<<7);r<10&&(t(e,re)[i]=1),s.subarray(2).forEach((c,h)=>{let f=h+r;f<14&&(t(e,Y)[(i-1)*$.cmt+f]=c)})}).add([22,18,3],(s,a,o)=>{if(e.switchMode("mt32"),s[0]){let i=s[1]-16}else{let i=s[1];s.subarray(2).forEach((r,c)=>{let h=c+i;t(e,ge)[h]=r;let f=e.chRedir(1+h>>4,a,!0),g=h&15;([!1,()=>{let y=t(e,ge)[f-1<<4];if(y<3)if(t(e,re)[f]=1,y==2)for(let S=0;S{t(e,v)[f*$.rpn+3]=r+40},()=>{t(e,v)[f*$.rpn+1]=r+14},()=>{t(e,v)[f*$.rpn]=r},!1,()=>{t(e,b)[$.cc*f+p[91]]=r?127:0},!1,()=>{t(e,b)[$.cc*f+p[7]]=r},()=>{t(e,b)[$.cc*f+p[10]]=Math.ceil(r*9.05)}][g]||(()=>{}))()})}}).add([22,18,4],(s,a,o)=>{e.switchMode("mt32");let i=s[1]+(s[0]<<7);s.subarray(2).forEach((r,c)=>{let h=c+i,f=e.chRedir(Math.floor(h/246+1),a,!0),g=h%246;g<14&&(t(e,Y)[(f-1)*$.cmt+g]=r),g<10&&(t(e,re)[f]=1)})}).add([22,18,5],(s,a,o)=>{e.switchMode("mt32");let i=(s[0]<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c,f=Math.floor(h/8),g=h&7,y=f*8;t(e,Ae)[h]=r,([!1,()=>{let S=t(e,Ae)[y];if(S<3){let k="";if(S==2){let m=$.cmt*f;k=`MT-m:${r.toString().padStart(3,"0")}`}else k=e.baseBank.get(0,r+(S<<6),127,"mt32").name;e.userBank.clearRange({msb:0,lsb:127,prg:f}),e.userBank.load(`MSB LSB PRG NME +000 127 ${f} ${k}`,!0)}}][g]||(()=>{}))()})}).add([22,18,8],(s,a,o)=>{e.switchMode("mt32");let i=((s[0]&1)<<7)+s[1];s.subarray(2).forEach((r,c)=>{let h=i+c;h<$.cmt&&(t(e,$e)[(s[0]>>1)*$.cmt+h]=r)})}).add([22,18,16],(s,a,o)=>{e.switchMode("mt32");let i=s[1],r=!1,c=function(h,f){t(e,N)[f-12]=h,r=!0};s.subarray(2).forEach((h,f)=>{let g=f+i;([!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,!1,c,c,c,c,c,c,c,c,c,()=>{w(e,I,h)}][g]||(()=>{}))(h,f)}),r&&e.buildRchTree()}).add([22,18,32],s=>{e.switchMode("mt32");let a=s[1],o=" ".repeat(a);s.subarray(2).forEach(i=>{i>31&&(o+=String.fromCharCode(i))}),w(e,ie,o.padStart(20," ")),w(e,we,Date.now()+3200)}).add([22,18,82],(s,a)=>{let o=e.chRedir(0,a,!0);for(let i=0;i<16;i++)t(e,H).ano(o+i),i&&i<10&&(t(e,O)[o+i]=Ze[i-1]);console.info("MT-32 alt reset complete.")}),t(this,fe).add([66,0],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),console.debug(`NS5R mode switch requested: ${["global","multi","prog edit","comb edit","drum edit","effect edit"][s[0]]} mode.`)}).add([66,1],(s,a)=>{e.switchMode(["ns5r","05rw"][s[0]],!0),w(e,D,!1)}).add([66,18,0,0],(s,a)=>{let o=s[0];switch(o){case 124:case 126:case 127:{e.switchMode("ns5r",!0),w(e,D,!1);break}case 125:{console.info(`NS5R drum setup reset: ${s}`);break}default:if(o<10){let i=[0,0,0,0],r=(c,h)=>{i[h]=c};if(s.subarray(1).forEach((c,h)=>{[r,r,r,r,()=>{w(e,I,c*129/16383*100)},()=>c-64,()=>c-64,()=>{},()=>{},()=>{}][o+h]()}),s[0]<4){let c=0;i.forEach(h=>{c=c<<4,c+=h}),c-=1024}}}}).add([66,18,0,1],(s,a)=>{}).add([66,18,0,2],(s,a)=>{}).add([66,18,1],(s,a)=>{let o=e.chRedir(s[0],a,!0),i=o*$.cc,r=s[1],c=`NS5R CH${o+1} `;s.subarray(2).forEach((h,f)=>{let g=r+f;g<3?[()=>{t(e,b)[i+p[0]]=h||121},()=>{t(e,b)[i+p[32]]=h},()=>{t(e,O)[o]=h}][g]():g<8||(g<14?[()=>{let y=e.chRedir(h,a,!0);t(e,N)[o]=y,o!=y&&(e.buildRchTree(),console.info(`${c}receives from CH${y+1}`))},()=>{t(e,W)[o]=+!h},()=>{e.setChType(o,h,C.ns5r),console.debug(`${c}type: ${Ge[h]}`)},()=>{t(e,v)[$.rpn*o+3]=h},()=>{},()=>{}][g-8]():g<16||(g<33?[()=>{t(e,b)[i+p[7]]=h},()=>{t(e,b)[i+p[11]]=h},()=>{},()=>{},()=>{t(e,b)[i+p[10]]=h||128},()=>{},()=>{},()=>{t(e,b)[i+p[93]]=h},()=>{t(e,b)[i+p[91]]=h},()=>{t(e,b)[i+p[76]]=h},()=>{t(e,b)[i+p[77]]=h},()=>{t(e,b)[i+p[78]]=h},()=>{t(e,b)[i+p[74]]=h},()=>{t(e,b)[i+p[71]]=h},()=>{t(e,b)[i+p[73]]=h},()=>{t(e,b)[i+p[75]]=h},()=>{t(e,b)[i+p[72]]=h}][g-16]():g<112||g<114&&[()=>{t(e,b)[i+p[5]]=h},()=>{t(e,b)[i+p[65]]=h}][g-112]()))})}).add([66,18,8,0],(s,a)=>{let o=s[0];if(o<32)e.setLetterDisplay(s.subarray(1,33),"NS5R letter display");else{let i=o-32;w(e,se,Date.now()+3200),w(e,K,10),t(e,z,ne).fill(0);let r=s.subarray(1),c=4;r.forEach(function(h,f){let g=f+i,y=g>>4,S=g&15;if(g<80){let k=y>3,m=0,B=y0;)t(e,z,ne)[S*32+y*7+(B-m)]=k&1,k=k>>1,m++}})}}).add([66,52],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1);let o="";te(s,(i,r)=>{r<8?(i>31&&(o+=String.fromCharCode(i)),r==7&&(e.aiEfxName=o)):r<10&&e.setEffectType(r-8,44,i)})}).add([66,53],(s,a)=>{e.switchMode("ns5r",!0),w(e,D,!1),te(s,function(o,i){switch(!0){case i<2944:{let r=e.chRedir(Math.floor(i/92),a,!0),c=r*$.cc;switch(i%92){case 0:{t(e,b)[c+p[0]]=o||121;break}case 1:{t(e,b)[c+p[32]]=o;break}case 2:{t(e,O)[r]=o,o>0&&(t(e,P)[r]=1);break}case 3:{let h=e.chRedir(o,a,!0);t(e,N)[r]=h,r!=h&&(console.info(`NS5R CH${r+1} receives from CH${h+1}.`),e.buildRchTree())}case 7:break;case 8:{t(e,v)[r*$.rpn+3]=o<40||o>88?o+(o>63?-192:64):o;break}case 9:case 10:{t(e,b)[c+p[7]]=o;break}case 11:{t(e,b)[c+p[11]]=o;break}case 14:{t(e,b)[c+p[10]]=o||128;break}case 19:{t(e,b)[c+p[93]]=o;break}case 20:{t(e,b)[c+p[91]]=o;break}case 84:{t(e,b)[c+p[65]]=o;break}case 85:{t(e,b)[c+p[5]]=o;break}}break}case i<3096:break;case i<3134:break;case i<8566:break}})}).add([66,54],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=80,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){let y=g%158;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:{i=f&127;break}case y==12:{c=f&127;break}case y==13:{h+=` ${i} ${r} ${c} ${o.trim().replace("Init Voice","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:80,lsb:0}),e.userBank.load(h)}).add([66,55],(s,a)=>{e.switchMode("ns5r",!0);let o="",i=88,r=0,c=0,h="MSB PRG LSB NME";te(s,function(f,g){let y=g%126;switch(!0){case y<10:{f>31&&(o+=String.fromCharCode(f));break}case y==11:break;case y==12:break;case y==13:{h+=` -${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let a=new Uint8Array(5760);te(s,(o,i,r)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=o>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(s,a,o)=>{t(e,fe).run([66,...s],a,o)}),t(this,Ce).add([16,0,8,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Q,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,a,o)=>{let i=e.chRedir(s[1],a,!0),r=$.cc*i,c=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,M.k11),t(e,u)[r+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,M.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,a,!0);t(e,H)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,u)[r+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,u)[r+p[10]]=h},()=>{t(e,v)[c+3]=h+40},()=>{t(e,v)[c+1]=h>>1,t(e,v)[c+2]=h&1},()=>{t(e,u)[r+p[91]]=h?127:0},()=>{},()=>{t(e,u)[r+p[74]]=h},()=>{t(e,u)[r+p[73]]=h},()=>{t(e,u)[r+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,M.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=0,t(e,O)[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,M.k11),t(e,u)[c+p[0]]=0,t(e,u)[c+p[32]]=7,t(e,O)[r]=i-100):(e.setChType(r,e.CH_DRUMS,M.k11),t(e,u)[c+p[0]]=122,t(e,u)[c+p[32]]=0,t(e,O)[r]=i-160)},()=>{let h=e.chRedir(i,a,!0);t(e,H)[r]=h,r!=h&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc,h=r*$.rpn,f=`GMLX CH${r+1} `;[()=>{t(e,P)[r]=i},()=>{t(e,u)[c+p[7]]=i},()=>{t(e,u)[c+p[10]]=i},()=>{t(e,u)[c+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,a,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,I,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let r=e.chRedir(s[0]&15,a,!0);if(s[1]==2){let c=e.chRedir(i,a,!0);t(e,H)[r]=c,r!=c&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${c+1}`))}else s[1]==19&&(t(e,u)[$.cc*r+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,j).add([127,0],(s,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,j).run(i,a,o)}).add([127,1,0,0],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=s[0];s.subarray(1).forEach((c,h)=>{([()=>{w(e,I,c*12900/16383)}][r+h]||(()=>{console.info(`Unrecognized ${i}ID: ${r+h}`)}))()})}).add([127,1,0,0,14],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,a,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],a,!0),r=$.cc*i,c=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,u)[r+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,u)[r+p[32]]=f,t(e,T)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,H)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,W)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,u)[r+p[7]]=f},()=>{t(e,u)[r+p[10]]=f},!1,!1,!1,()=>{t(e,u)[r+p[91]]=f},()=>{t(e,u)[r+p[93]]=f},()=>{t(e,u)[r+p[94]]=f},()=>{t(e,u)[r+p[128]]=f},()=>{},()=>{t(e,u)[r+p[74]]=f},()=>{t(e,u)[r+p[71]]=f},!1,()=>{t(e,u)[r+p[65]]=f},()=>{t(e,u)[r+p[5]]=f},()=>{}][c+g]||(()=>{}))()})}).add([127,1,54,16],(s,a,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((r,c)=>{let f=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let g=r-64},()=>{let g=De[r]},()=>{let g=r/10},()=>{let g=r}][i+c&3]||(()=>{}))()})}),t(this,Z).add([0,72,18,0,0,0,0],(s,a,o)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}chRedir(e,n,l){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Q))>-1){if(l==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,H).forEach((n,l)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(l)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==M.mt32,e}getCc(e){let n=e*$.cc,l=t(this,u).subarray(n,n+$.cc);return l[p[0]]=l[p[0]]||t(this,ye),l[p[32]]=l[p[32]]||t(this,Q),l}getCcCh(e,n){if(_e.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,u)[$.cc*e+p[n]]}getCcAll(){let e=t(this,u).slice();for(let n=0;n<$.ch;n++){let l=n*$.cc;e[l+p[0]]=e[l+p[0]]||t(this,ye),e[l+p[32]]=e[l+p[32]]||t(this,Q)}return e}getChSource(){return t(this,H)}getChType(){return t(this,T)}setChType(e,n,l=t(this,R),d=!1){n&=15,t(this,T)[e]=n,n>0&&!d&&(t(this,u)[e*$.cc+p[0]]=Se[l])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,x).slice()}getVel(e){let n=new Map,l=this;return t(l,U).forEach(function(d,s){let a=Math.floor(d/128),o=d%128;e==a&&t(l,A)[d]>0&&n.set(o,{v:t(l,A)[d],s:t(l,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,se)}}getLetter(){return{text:t(this,ie),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,I)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let l=Math.floor(n/128);t(e,A)[n]>t(e,ae)[l]&&(t(e,ae)[l]=t(e,A)[n])}),t(this,ae)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,d){e[d]=Math.floor(l*t(n,u)[d*$.cc+p[7]]*t(n,u)[d*$.cc+p[11]]*t(n,I)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,l,d){let s=e||t(this,ye),a=n,o=l||t(this,Q);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,a,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),c=r*$.cmt,h="";t(this,$e).subarray(c,c+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG -0 127 ${a} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,a,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,u)[e*$.cc+p[0]],t(this,O)[e],t(this,u)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,re)[e])switch(t(this,R)){case M.mt32:n.ending="~",n.name="",t(this,Y).subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,d=3200){let s=this,a;w(s,ie," ".repeat(l)),e.forEach(o=>{w(s,ie,t(s,ie)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(s,we,Date.now()+3200),w(s,ie,t(s,ie).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,r)=>{r[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l<$.ace;)t(this,ce)[l]==e?n=!1:t(this,ce)[l]||(n=!1,t(this,ce)[l]=e,console.info(`Allocated cc${e} to ACE slot ${l}.`)),l++;l>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ce)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let l=t(this,ce)[n];if(l){if(_e.indexOf(l)>=0)return t(this,u)[e*$.cc+p[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Q,0),w(this,le,0),t(this,P).fill(0),t(this,u).fill(0),t(this,ce).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,ae).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,I,100),w(this,x,[]),w(this,Ue,500),w(this,Ne,0),w(this,we,0),w(this,ie,""),w(this,se,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,He,0),w(this,J,!0),t(this,H).forEach(function(n,l,d){d[l]=l}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,u)[$.cc*9]=Se[0],t(this,u)[$.cc*25]=Se[0],t(this,u)[$.cc*41]=Se[0],t(this,u)[$.cc*57]=Se[0],t(this,T).fill(this.CH_MELODIC),t(this,T)[9]=this.CH_DRUM1,t(this,T)[25]=this.CH_DRUM3,t(this,T)[41]=this.CH_DRUMS,t(this,T)[57]=this.CH_DRUMS,t(this,T)[73]=this.CH_DRUM5,t(this,T)[89]=this.CH_DRUM7,t(this,T)[105]=this.CH_DRUMS,t(this,T)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,Y).fill(0),t(this,re).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let l=n*$.cc;t(this,u)[l+p[7]]=100,t(this,u)[l+p[11]]=127,t(this,u)[l+p[10]]=64,t(this,u)[l+p[71]]=64,t(this,u)[l+p[72]]=64,t(this,u)[l+p[73]]=64,t(this,u)[l+p[74]]=64,t(this,u)[l+p[75]]=64,t(this,u)[l+p[76]]=64,t(this,u)[l+p[77]]=64,t(this,u)[l+p[78]]=64,t(this,u)[l+p[91]]=40,t(this,u)[l+p[101]]=127,t(this,u)[l+p[100]]=127,t(this,u)[l+p[99]]=127,t(this,u)[l+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let l=be.indexOf(e);if(l>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,l),w(this,K,0),w(this,ye,Et[0][l]),w(this,Q,Et[1][l]);for(let a=0;a<$.ch;a++)t(this,T)[a]>0&&t(this,u)[a*$.cc+p[0]]==Se[d]&&(t(this,u)[a*$.cc]=Se[l]);switch(this.initOnReset,l){case M.mt32:{Ze.forEach((a,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=a,t(this,u)[i*$.cc+p[91]]=127)});break}}let s;switch(l){case M.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case M.x5d:case M.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,V)[3*a]||(t(this,V)[3*a+1]=s[2*a],t(this,V)[3*a+2]=s[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,ae).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let l=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[l])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${l+1} without any recipient.`)}t(this,x).length>100&&t(this,x).splice(100,t(this,x).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,se=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,H=new WeakMap,T=new WeakMap,u=new WeakMap,ce=new WeakMap,O=new WeakMap,A=new WeakMap,W=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,ae=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,re=new WeakMap,ge=new WeakMap,Y=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Q=new WeakMap,I=new WeakMap,le=new WeakMap,Ue=new WeakMap,Ne=new WeakMap,ie=new WeakMap,we=new WeakMap,He=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,x=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,N=new WeakMap,Ke=new WeakMap,ze=new WeakMap,Me=new WeakMap,xe=new WeakMap,j=new WeakMap,Z=new WeakMap,fe=new WeakMap,Ce=new WeakMap,Te=new WeakMap,Re=new WeakMap,xt);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,Ct as dnToPos}; +${i} ${r} ${c} ${o.trim().replace("Init Combi","")}`,r++,o="";break}}}),e.userBank.clearRange({msb:88,lsb:0}),e.userBank.load(h)}).add([66,125],s=>{e.dispatchEvent("backlight",["green","orange","red",!1,"yellow","blue","purple"][s[0]]||"white")}).add([66,127],s=>{let a=new Uint8Array(5760);te(s,(o,i,r)=>{if(i<720)for(let c=0;c<8;c++)a[i*8+c]=o>>7-c&1}),e.dispatchEvent("screen",{type:"ns5r",data:a})}).add([76],(s,a,o)=>{t(e,fe).run([66,...s],a,o)}),t(this,xe).add([16,0,8,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="K11 ";([()=>{e.switchMode("k11",!0),w(e,D,!1),w(e,Q,i?4:0),console.info("MIDI reset: GMega/K11")},()=>{e.setEffectType(0,24,i),console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,8,1],(s,a,o)=>{let i=e.chRedir(s[1],a,!0),r=$.cc*i,c=$.rpn*i,h=(s[3]<<4)+s[4],f=`K11 CH${i+1} `;([()=>{h<128?(e.setChType(i,e.CH_MELODIC,C.k11),t(e,b)[r+p[0]]=0,t(e,O)[i]=h):(e.setChType(i,e.CH_DRUMS,C.k11),t(e,O)[i]=h-128)},()=>{let g=e.chRedir(h,a,!0);t(e,N)[i]=g,i!=g&&(e.buildRchTree(),console.info(`${f}receives from CH${g+1}`))},()=>{t(e,b)[r+p[7]]=h},()=>{t(e,P)[i]=h},()=>{t(e,b)[r+p[10]]=h},()=>{t(e,v)[c+3]=h+40},()=>{t(e,v)[c+1]=h>>1,t(e,v)[c+2]=h&1},()=>{t(e,b)[r+p[91]]=h?127:0},()=>{},()=>{t(e,b)[r+p[74]]=h},()=>{t(e,b)[r+p[73]]=h},()=>{t(e,b)[r+p[72]]=h}][s[0]]||(()=>{}))()}).add([16,0,9,0],(s,a,o)=>{let i=(s[2]<<4)+s[3],r="GMLX ";([()=>{console.debug(`${r}reverb type: ${i}`)},()=>{console.debug(`${r}reverb time: ${i}`)},()=>{console.debug(`${r}reverb predelay: ${i}`)},()=>{console.debug(`${r}depth high: ${i}`)},()=>{console.debug(`${r}depth low: ${i}`)}][s[0]]||(()=>{}))()}).add([16,0,9,3],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc;[()=>{i<128?(e.setChType(r,e.CH_MELODIC,C.k11),t(e,b)[c+p[0]]=0,t(e,b)[c+p[32]]=0,t(e,O)[r]=i):i<160?(e.setChType(r,e.CH_MELODIC,C.k11),t(e,b)[c+p[0]]=0,t(e,b)[c+p[32]]=7,t(e,O)[r]=i-100):(e.setChType(r,e.CH_DRUMS,C.k11),t(e,b)[c+p[0]]=122,t(e,b)[c+p[32]]=0,t(e,O)[r]=i-160)},()=>{let h=e.chRedir(i,a,!0);t(e,N)[r]=h,r!=h&&(e.buildRchTree(),console.info(`GMLX CH${r+1} receives from CH${h+1}`))}][s[0]]()}).add([16,0,9,4],(s,a,o)=>{let i=(s[2]<<4)+s[3],r=e.chRedir(s[1],a,!0),c=r*$.cc,h=r*$.rpn,f=`GMLX CH${r+1} `;[()=>{t(e,P)[r]=i},()=>{t(e,b)[c+p[7]]=i},()=>{t(e,b)[c+p[10]]=i},()=>{t(e,b)[c+p[91]]=i?127:0},()=>{t(e,v)[h+3]=i+40},()=>{t(e,v)[h+1]=i},()=>{t(e,v)[h]=i},()=>{}][s[0]]()}),t(this,Te).add([66,93,64],(s,a,o)=>{let i=s[2];switch(s[0]){case 0:{switch(s[1]){case 4:{w(e,I,i*129/16383*100);break}case 5:{i-64;break}case 6:{console.debug(`SG global reverb: ${i?"on":"off"}`);break}case 127:{e.switchMode("sg",!0);break}}break}case 1:{switch(s[1]){case 48:{console.debug(`SG reverb type: ${Ye[i]}`);break}}break}default:if(s[0]>>4==1){let r=e.chRedir(s[0]&15,a,!0);if(s[1]==2){let c=e.chRedir(i,a,!0);t(e,N)[r]=c,r!=c&&(e.buildRchTree(),console.info(`SG CH${r+1} receives from CH${c+1}`))}else s[1]==19&&(t(e,b)[$.cc*r+p[7]]=i)}else console.warn(`Unknown AKAI SG SysEx: ${s}`)}}),t(this,Re).add([9],(s,a,o)=>{console.debug(`GZ set effect: ${["stage reverb","hall reverb","room reverb","chorus","tremelo","phaser","rotary speaker","enhancer","flanger","EQ"][s[0]]||"off"}`)}),t(this,j).add([127,0],(s,a,o)=>{e.switchMode("motif");let i=new Uint8Array([127,1,...s]);t(e,j).run(i,a,o)}).add([127,1,0,0],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES system ",r=s[0];s.subarray(1).forEach((c,h)=>{([()=>{w(e,I,c*12900/16383)}][r+h]||(()=>{console.info(`Unrecognized ${i}ID: ${r+h}`)}))()})}).add([127,1,0,0,14],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk header ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,0,15],(s,a,o)=>{e.switchMode("s90es");let i="S90/Motif ES bulk footer ",r=[];r[95]=(c,h,f)=>{console.debug(`${i}multi edit buffer: ${c[1]}`)},(r[s[0]]||(()=>{console.info(`Unrecognized ${i}ID: ${s[0]}.`)}))(s.subarray(1))}).add([127,1,0,58,55],(s,a,o)=>{e.switchMode("s90es");let i=e.chRedir(s[0],a,!0),r=$.cc*i,c=s[1],h=`S90/Motif ES bulk CH${i<16?i+1:"U"+(i-95)} `;console.debug(h,s),!(s[0]>15)&&s.subarray(2).forEach((f,g)=>{([()=>{t(e,b)[r+p[0]]=f},()=>{f&&(t(e,P)[i]=1),t(e,b)[r+p[32]]=f,t(e,M)[i]=this.setChType(i,[32,40].indexOf(f)>-1?this.CH_DRUMS:this.CH_MELODIC,t(this,R),!0)},()=>{f&&(t(e,P)[i]=1),t(e,O)[i]=f},()=>{let y=e.chRedir(f,a,!0);t(e,N)[i]=y,i!=y&&(e.buildRchTree(),console.info(`${h}receives from CH${y+1}`))},()=>{t(e,W)[i]=f?0:1},!1,!1,!1,!1,!1,!1,!1,!1,()=>{t(e,b)[r+p[7]]=f},()=>{t(e,b)[r+p[10]]=f},!1,!1,!1,()=>{t(e,b)[r+p[91]]=f},()=>{t(e,b)[r+p[93]]=f},()=>{t(e,b)[r+p[94]]=f},()=>{t(e,b)[r+p[128]]=f},()=>{},()=>{t(e,b)[r+p[74]]=f},()=>{t(e,b)[r+p[71]]=f},!1,()=>{t(e,b)[r+p[65]]=f},()=>{t(e,b)[r+p[5]]=f},()=>{}][c+g]||(()=>{}))()})}).add([127,1,54,16],(s,a,o)=>{e.switchMode("s90es");let i=s[0];s.subarray(1).forEach((r,c)=>{let f=`S90/Motif ES EQ${(c>>2)+1} `;([()=>{let g=r-64},()=>{let g=De[r]},()=>{let g=r/10},()=>{let g=r}][i+c&3]||(()=>{}))()})}),t(this,Z).add([0,72,18,0,0,0,0],(s,a,o)=>{e.switchMode("sd",!0),console.info("MIDI reset: SD")})}chRedir(e,n,l){if(t(this,Ee)[n])return(t(this,Ee)[n]-1)*16+e;if([2,3].indexOf(t(this,Q))>-1){if(l==1)return e;let d=0,s=!0;for(;s;)t(this,he)[e+d]==0?(t(this,he)[e+d]=n,console.debug(`Assign track ${n} to channel ${e+d+1}.`),s=!1):t(this,he)[e+d]==n?s=!1:(d+=16,d>=128&&(d=0,s=!1));return e+d}else return e}buildRchTree(){let e=[];t(this,N).forEach((n,l)=>{var d;(d=e[n])!=null&&d.constructor||(e[n]=[]),e[n].push(l)}),w(this,Xe,e)}getActive(){let e=t(this,P).slice();return t(this,R)==C.mt32,e}getCc(e){let n=e*$.cc,l=t(this,b).subarray(n,n+$.cc);return l[p[0]]=l[p[0]]||t(this,ye),l[p[32]]=l[p[32]]||t(this,Q),l}getCcCh(e,n){if(_e.indexOf(n)<0)throw new Error("CC number not accepted");return t(this,b)[$.cc*e+p[n]]}getCcAll(){let e=t(this,b).slice();for(let n=0;n<$.ch;n++){let l=n*$.cc;e[l+p[0]]=e[l+p[0]]||t(this,ye),e[l+p[32]]=e[l+p[32]]||t(this,Q)}return e}getChSource(){return t(this,N)}getChType(){return t(this,M)}setChType(e,n,l=t(this,R),d=!1){n&=15,t(this,M)[e]=n,n>0&&!d&&(t(this,b)[e*$.cc+p[0]]=Se[l])}getPitch(){return t(this,pe)}getProgram(){return t(this,O)}getTexts(){return t(this,x).slice()}getVel(e){let n=new Map,l=this;return t(l,U).forEach(function(d,s){let a=Math.floor(d/128),o=d%128;e==a&&t(l,A)[d]>0&&n.set(o,{v:t(l,A)[d],s:t(l,L)[s]})}),n}getBitmap(){return{bitmap:t(this,z,ne),expire:t(this,se)}}getLetter(){return{text:t(this,ie),expire:t(this,we)}}getMode(){return be[t(this,R)]}getMaster(){return{volume:t(this,I)}}getRawStrength(){let e=this;return t(this,U).forEach(function(n){let l=Math.floor(n/128);t(e,A)[n]>t(e,ae)[l]&&(t(e,ae)[l]=t(e,A)[n])}),t(this,ae)}getStrength(){let e=[],n=this;return this.getRawStrength().forEach(function(l,d){e[d]=Math.floor(l*t(n,b)[d*$.cc+p[7]]*t(n,b)[d*$.cc+p[11]]*t(n,I)/803288)}),e}getRpn(){return t(this,v)}getNrpn(){return t(this,Pe)}getVoice(e,n,l,d){let s=e||t(this,ye),a=n,o=l||t(this,Q);be[t(this,R)]=="ns5r"&&s>0&&s<56&&(o=3);let i=this.userBank.get(s,a,o,d);if(be[t(this,R)]=="mt32"&&i.name.indexOf("MT-m:")==0){let r=parseInt(i.name.slice(5)),c=r*$.cmt,h="";t(this,$e).subarray(c,c+10).forEach(f=>{f>31&&(h+=String.fromCharCode(f))}),this.userBank.load(`MSB LSB PRG +0 127 ${a} ${h}`,!0),i.name=h,i.ending=" "}return(i.ending!=" "||!i.name.length)&&(i=this.baseBank.get(s,a,o,d)),i}getChVoice(e){let n=this.getVoice(t(this,b)[e*$.cc+p[0]],t(this,O)[e],t(this,b)[e*$.cc+p[32]],be[t(this,R)]);if(t(this,re)[e])switch(t(this,R)){case C.mt32:n.ending="~",n.name="",t(this,Y).subarray(14*(e-1),14*(e-1)+10).forEach(l=>{l>31&&(n.name+=String.fromCharCode(l))})}return n}getPitchShift(e){let n=e*$.rpn;return t(this,pe)[e]/8192*t(this,v)[n]+(t(this,v)[n+3]-64)+((t(this,v)[n+1]<<7)+t(this,v)[n+2]-8192)/8192}getEffectType(e=0){let n=3*e+1;return t(this,V).subarray(n,n+2)}setEffectTypeRaw(e=0,n,l){let d=3*e;t(this,V)[d]=1,t(this,V)[d+1+ +n]=l}setEffectType(e=0,n,l){this.setEffectTypeRaw(e,!1,n),this.setEffectTypeRaw(e,!0,l)}setLetterDisplay(e,n,l=0,d=3200){let s=this,a;w(s,ie," ".repeat(l)),e.forEach(o=>{w(s,ie,t(s,ie)+String.fromCharCode(o>31?o:32)),o<32&&(a=a||new Set,a.add(o))}),w(s,we,Date.now()+3200),w(s,ie,t(s,ie).padEnd(32," ")),a&&(a=Array.from(a),a.forEach((o,i,r)=>{r[i]=o.toString(16).padStart(2,"0")}),console.warn(`${n}${n?" ":""}invalid code point${a.length>1?"s":""}: 0x${a.join(", 0x")}`))}allocateAce(e){if(!e||e>95){console.warn(`cc${e} cannot be allocated as an active custom effect.`);return}let n=!0,l=0;for(;n&&l<$.ace;)t(this,ce)[l]==e?n=!1:t(this,ce)[l]||(n=!1,t(this,ce)[l]=e,console.info(`Allocated cc${e} to ACE slot ${l}.`)),l++;l>=$.ace&&console.warn("ACE slots are full.")}getAce(){return t(this,ce)}getChAce(e,n){if(n<0||n>=$.ace)throw new RangeError("No such ACE slot");let l=t(this,ce)[n];if(l){if(_e.indexOf(l)>=0)return t(this,b)[e*$.cc+p[l]];throw new Error(`Invalid ACE source: ${l}`)}else return 0}init(e=0){this.dispatchEvent("mode","?"),w(this,R,0),w(this,ye,0),w(this,Q,0),w(this,le,0),t(this,P).fill(0),t(this,b).fill(0),t(this,ce).fill(0),t(this,O).fill(0),t(this,A).fill(0),t(this,U).fill(0),t(this,ae).fill(0),t(this,pe).fill(0),t(this,Pe).fill(0),t(this,Fe).fill(0),w(this,I,100),w(this,x,[]),w(this,Ue,500),w(this,He,0),w(this,we,0),w(this,ie,""),w(this,se,0),w(this,K,0),t(this,z,ne).fill(0),w(this,D,!1),w(this,Ne,0),w(this,J,!0),t(this,N).forEach(function(n,l,d){d[l]=l}),this.buildRchTree(),e==0&&(t(this,he).fill(0),t(this,Ee).fill(0)),t(this,b)[$.cc*9]=Se[0],t(this,b)[$.cc*25]=Se[0],t(this,b)[$.cc*41]=Se[0],t(this,b)[$.cc*57]=Se[0],t(this,M).fill(this.CH_MELODIC),t(this,M)[9]=this.CH_DRUM1,t(this,M)[25]=this.CH_DRUM3,t(this,M)[41]=this.CH_DRUMS,t(this,M)[57]=this.CH_DRUMS,t(this,M)[73]=this.CH_DRUM5,t(this,M)[89]=this.CH_DRUM7,t(this,M)[105]=this.CH_DRUMS,t(this,M)[121]=this.CH_DRUMS,t(this,Ae).fill(0),t(this,$e).fill(0),t(this,ge).fill(0),t(this,Y).fill(0),t(this,re).fill(0),t(this,V).fill(0),this.aiEfxName="",this.userBank.clearRange({msb:0,lsb:127,prg:[0,127]});for(let n=0;n<$.ch;n++){let l=n*$.cc;t(this,b)[l+p[7]]=100,t(this,b)[l+p[11]]=127,t(this,b)[l+p[10]]=64,t(this,b)[l+p[71]]=64,t(this,b)[l+p[72]]=64,t(this,b)[l+p[73]]=64,t(this,b)[l+p[74]]=64,t(this,b)[l+p[75]]=64,t(this,b)[l+p[76]]=64,t(this,b)[l+p[77]]=64,t(this,b)[l+p[78]]=64,t(this,b)[l+p[91]]=40,t(this,b)[l+p[101]]=127,t(this,b)[l+p[100]]=127,t(this,b)[l+p[99]]=127,t(this,b)[l+p[98]]=127;let d=n*$.rpn;t(this,v)[d]=2,t(this,v)[d+1]=64,t(this,v)[d+2]=0,t(this,v)[d+3]=64,t(this,v)[d+4]=0,t(this,v)[d+5]=0}}switchMode(e,n=!1){let l=be.indexOf(e);if(l>-1){if(t(this,R)==0||n){let d=t(this,R);w(this,R,l),w(this,K,0),w(this,ye,Et[0][l]),w(this,Q,Et[1][l]);for(let a=0;a<$.ch;a++)t(this,M)[a]>0&&t(this,b)[a*$.cc+p[0]]==Se[d]&&(t(this,b)[a*$.cc]=Se[l]);switch(this.initOnReset,l){case C.mt32:{Ze.forEach((a,o)=>{let i=o+1;t(this,P)[i]||(t(this,O)[i]=a,t(this,b)[i*$.cc+p[91]]=127)});break}}let s;switch(l){case C.gs:{s=[40,4,40,18,40,32,32,0,0,0,0,0,0,0];break}case C.x5d:case C.ns5r:{s=[44,1,44,19,44,0,44,0,0,0,0,0,0,0];break}default:s=[1,0,65,0,5,0,0,0,0,0,0,0,0,0]}for(let a=0;a<$.efx;a++)t(this,V)[3*a]||(t(this,V)[3*a+1]=s[2*a],t(this,V)[3*a+2]=s[2*a+1]);this.dispatchEvent("mode",e)}}else throw new Error(`Unknown mode ${e}`)}newStrength(){t(this,ae).fill(0)}runJson(e){var n;if(e.type>14)return e.type==15&&e.data.constructor!=Uint8Array&&(e.data=Uint8Array.from(e.data)),t(this,Ke)[e.type].call(this,e);{let l=this.chRedir(e.part,e.track),d=!1;(n=t(this,Xe)[l])==null||n.forEach(s=>{e.channel=s,d=!0,t(this,Ke)[e.type].call(this,e)}),d||console.warn(`${kt[e.type]?kt[e.type]:e.type}${[11,12].includes(e.type)?(e.data[0]!=null?e.data[0]:e.data).toString():""} event sent to CH${l+1} without any recipient.`)}t(this,x).length>100&&t(this,x).splice(100,t(this,x).length-99)}runRaw(e){}async loadBank(e,n){switch(e=e.toLowerCase(),e){case"s7e":{this.userBank.clearRange({msb:63,lsb:[21,22]}),this.userBank.clearRange({msb:63,lsb:[24,27]});break}default:throw new Error(`Unknown bank format ${e}`)}switch(e){case"s7e":{Ve.context=this,this.userBank.load(await Ve.read(e,n));break}}}},R=new WeakMap,K=new WeakMap,se=new WeakMap,oe=new WeakMap,z=new WeakSet,ne=function(){return t(this,oe)[t(this,K)]},Tt=function(e){t(this,oe)[t(this,K)]=e},P=new WeakMap,N=new WeakMap,M=new WeakMap,b=new WeakMap,ce=new WeakMap,O=new WeakMap,A=new WeakMap,W=new WeakMap,U=new WeakMap,L=new WeakMap,pe=new WeakMap,ae=new WeakMap,me=new WeakMap,v=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,re=new WeakMap,ge=new WeakMap,Y=new WeakMap,Ae=new WeakMap,$e=new WeakMap,V=new WeakMap,ye=new WeakMap,Q=new WeakMap,I=new WeakMap,le=new WeakMap,Ue=new WeakMap,He=new WeakMap,ie=new WeakMap,we=new WeakMap,Ne=new WeakMap,J=new WeakMap,D=new WeakMap,Xe=new WeakMap,tt=new WeakMap,x=new WeakMap,he=new WeakMap,Ee=new WeakMap,G=new WeakMap,ve=new WeakMap,H=new WeakMap,Ke=new WeakMap,ze=new WeakMap,Ce=new WeakMap,Me=new WeakMap,j=new WeakMap,Z=new WeakMap,fe=new WeakMap,xe=new WeakMap,Te=new WeakMap,Re=new WeakMap,Mt);export{ms as OctaviaDevice,$ as allocated,p as ccToPos,xt as dnToPos}; diff --git a/src/demoTui/index.js b/src/demoTui/index.js index e15c7579..27dee15b 100644 --- a/src/demoTui/index.js +++ b/src/demoTui/index.js @@ -35,6 +35,11 @@ stSwitch.forEach(function (e, i, a) { }); }); +let resizer = function () { + dispCanvas.style.left = `${textDisplay.offsetLeft + textDisplay.offsetWidth - dispCanvas.offsetWidth}px`; + dispCanvas.style.top = `${textDisplay.offsetTop}px`; +}; + // Standard demo switching let demoPool = new SheetData(); let stList = $e("span#demo-list"), stDemo = []; @@ -104,6 +109,7 @@ getBlobFrom(`list.tsv`).then(async (response) => { visualizer.device.initOnReset = false; }); }); + resizer(); }); // Start the visualizers @@ -236,7 +242,5 @@ getBridge().addEventListener("message", function (ev) { //console.debug(ev.data); }); -addEventListener("resize", function () { - dispCanvas.style.left = `${textDisplay.offsetLeft + textDisplay.offsetWidth - dispCanvas.offsetWidth}px`; - dispCanvas.style.top = `${textDisplay.offsetTop}px`; -}); +addEventListener("resize", resizer); +resizer(); diff --git a/src/disp/disp_tui.mjs b/src/disp/disp_tui.mjs index 7459e62a..ee92789e 100644 --- a/src/disp/disp_tui.mjs +++ b/src/disp/disp_tui.mjs @@ -18,6 +18,7 @@ const modeNames = { "xg": "YamahaXG", "gs": "RolandGS", "mt32": "RlndMT32", + "sd": "RolandSD", "ag10": "KorgAG10", "x5d": "Korg X5D", "05rw": "Korg05RW", diff --git a/src/state/bankReader.js b/src/state/bankReader.js index 9971bc39..5457814b 100644 --- a/src/state/bankReader.js +++ b/src/state/bankReader.js @@ -85,6 +85,16 @@ let VoiceBank = class { }; break; }; + case "sd": { + if (msb == 96) { + args[0] = 121; + } else if (msb > 96 && msb < 100) { + args[2] |= 16; + } else if (msb == 104) { + args[0] = 120; + }; + break; + }; case "sg": { if (msb == 8 && lsb == 0) { args[2] = 5; @@ -430,7 +440,7 @@ let VoiceBank = class { }; case 67: case 99: { - standard = "DX"; // PLG-150DX + standard = args[2] >> 4 == 1 ? "SD" : "DX"; // PLG-150DX break; }; case 81: { @@ -446,17 +456,24 @@ let VoiceBank = class { break; }; case 97: { - standard = "VL"; // PLG-150VL / SONDIUS-XG + standard = args[2] >> 4 == 1 ? "SD" : "VL"; // PLG-150VL / SONDIUS-XG break; }; case 98: { - standard = "SG"; // PLG-100SG + standard = args[2] >> 4 == 1 ? "SD" : "SG"; // PLG-100SG break; }; case 100: { standard = "AN"; // PLG-150AN break; }; + case 104: + case 105: + case 106: + case 107: { + standard = "SD"; // Roland StudioCanvas + break; + }; case 120: { standard = "GS"; break; diff --git a/src/state/index.mjs b/src/state/index.mjs index e12ad8ae..ade75882 100644 --- a/src/state/index.mjs +++ b/src/state/index.mjs @@ -40,10 +40,10 @@ const modeIdx = [ "krs", "s90es", "motif" ]; const substList = [ - [0, 0, 0, 0, 121, 0, 0, 56, 82, 81, 0, 0, 63, 63, 63], + [0, 0, 0, 0, 121, 0, 0, 82, 81, 96, 0, 0, 63, 63, 63], [0, 0, 4, 0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0] ]; -const drumMsb = [120, 127, 120, 127, 120, 127, 61, 62, 62, 62, 120, 122, 122, 127]; +const drumMsb = [120, 127, 120, 127, 120, 127, 61, 62, 62, 104, 120, 122, 122, 127]; const passedMeta = [0, 3, 81, 84, 88]; // What is meta event 32? const eventTypes = { 8: "Off", @@ -219,7 +219,7 @@ let OctaviaDevice = class extends CustomEventSource { // GS Track Occupation #trkRedir = new Uint8Array(allocated.ch); #trkAsReq = new Uint8Array(allocated.tr); // Track Assignment request - baseBank = new VoiceBank("gm", "gm2", "xg", "gs", "ns5r", "gmega", "plg-150vl", "plg-150pf", "plg-150dx", "plg-150an", "plg-150dr", "plg-100sg", "kross", "s90es"); // Load all possible voice banks + baseBank = new VoiceBank("gm", "gm2", "xg", "gs", "ns5r", "sd", "gmega", "plg-150vl", "plg-150pf", "plg-150dx", "plg-150an", "plg-150dr", "plg-100sg", "kross", "s90es"); // Load all possible voice banks userBank = new VoiceBank("gm"); // User-defined bank for MT-32, X5DR and NS5R initOnReset = false; // If this is true, Octavia will re-init upon mode switches aiEfxName = ""; @@ -650,6 +650,20 @@ let OctaviaDevice = class extends CustomEventSource { }; break; }; + case modeMap.sd: { + if ([104, 105, 106, 107].indexOf(det.data[1]) > -1) { + if (this.#chType[part] == 0) { + this.setChType(part, this.CH_DRUM2); + console.debug(`CH${part + 1} set to drums by MSB.`); + }; + } else { + if (this.#chType[part] > 0) { + this.setChType(part, this.CH_MELODIC); + console.debug(`CH${part + 1} set to melodic by MSB.`); + }; + }; + break; + }; case modeMap.g2: { if (det.data[1] == 120) { if (this.#chType[part] == 0) { @@ -894,7 +908,7 @@ let OctaviaDevice = class extends CustomEventSource { // GS: [66, CmdId, HH, MM, LL, ...DD, Checksum] if (msg[0] < 16) { this.#seGs.run(msg, track, id); - console.warn(`Unknown device SysEx!`); + //console.warn(`Unknown device SysEx!`); } else { let sentCs = msg[msg.length - 1]; let calcCs = gsChecksum(msg.subarray(2, msg.length - 1)); diff --git a/test/tui.htm b/test/tui.htm index 13e234d1..1a6c54d4 100644 --- a/test/tui.htm +++ b/test/tui.htm @@ -26,9 +26,9 @@ GS, XG, GM2, + SD, MT-32, NS5R, - AG-10, 05R/W, X5D, GMega,