mtrack 0.12.0

A multitrack audio and MIDI player for live performances.
Documentation
<!-- *     * Copyright (C) 2026 Michael Wilson <mike@mdwn.dev>
     *
     * This program is free software: you can redistribute it and/or modify it under
     * the terms of the GNU General Public License as published by the Free Software
     * Foundation, version 3.
     *
     * This program is distributed in the hope that it will be useful, but WITHOUT
     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
     * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License along with
     * this program. If not, see <https://www.gnu.org/licenses/>.
     *
     * -->
<!doctype html>
<html lang="en" class="nc">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta name="theme-color" content="#231F20" />
    <title>mtrack</title>
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link
      href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;500;600;700;800&family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&display=swap"
      rel="stylesheet"
    />
    <script>
      // Apply the user's theme before first paint to avoid a flash of
      // the wrong palette when "dark" is the chosen / system preference.
      (function () {
        try {
          var stored = localStorage.getItem("mtrack-theme");
          var dark =
            stored === "dark" ||
            (stored !== "light" &&
              window.matchMedia &&
              window.matchMedia("(prefers-color-scheme: dark)").matches);
          if (dark) document.documentElement.classList.add("nc--dark");
        } catch (e) {
          // localStorage unavailable (private mode etc.) — fall through to default.
        }
      })();
    </script>
    <script type="module" crossorigin src="/assets/index-agvQv-K9.js"></script>
    <link rel="modulepreload" crossorigin href="/assets/vendor-Crp00Pws.js">
    <link rel="stylesheet" crossorigin href="/assets/index-fH4U2XoL.css">
  </head>
  <body>
    <div id="app"></div>
  </body>
</html>