Skip to content

treeguy1234/MusicMatrixWeb

Repository files navigation

MusicMatrix Web Code Builder

A browser-based configurator for MusicMatrix, a custom macro pad built for MuseScore Studio 4. Drag MuseScore shortcuts onto a 4×8 grid, and export ready-to-flash Arduino firmware.

MusicMatrix configurator screenshot

Features

  • Drag-and-drop assignment - drag any of MuseScore's keyboard shortcuts from the sidebar library onto one of the 32 macro slots.
  • Searchable shortcut library - instantly filter by name or description (Ctrl+K or / to jump to search).
  • Hover-to-preview - hover or focus any icon to see its full name, description, and key combination before you commit it to a slot.
  • Live status bar - no more guessing which slot is which; hovering a slot shows its row/column position or its currently assigned shortcut.
  • One-click export - generates a full code file so you can drop it into your PlatformIO project or Arduino IDE sketch.
  • Persistent layout - your grid is saved to the browser automatically (via localStorage), so refreshing the page won't lose your work.
  • No build step, no backend - pure HTML/CSS/JS. Open index.html directly, or serve it with any static file server.

Getting Started

Navigate to https://treeguy1234.github.io/MusicMatrixWeb/ to get started. For a more customizable experience, host the files yourself.

Usage

  1. Browse or search the shortcut library on the right. Hover over any icon to see what it does.
  2. Drag a shortcut onto any of the 32 slots in the main grid.
  3. Rearrange by dragging an already-assigned slot's icon to a new slot, or click a filled slot to clear it.
  4. Once all 32 slots are assigned, the Export button unlocks — click it to download a .ino/.cpp file containing your shortcut array, ready to paste into the MusicMatrix Arduino sketch.

Project Structure

.
├── index.html                # Page shell
├── style.css                 # All styling (design tokens, layout, chip/slot states)
├── main.js                   # Drag-and-drop logic, slot state, export
├── musescore_shortcuts.js    # Full shortcut data set (title, description, keys, icon path)
├── Fonts/                    # Contains a font file for the UI
└── Icons/                    # SVG icon set, extracted from the Bravura music font and Google Fonts/Icons

Customizing the Shortcut List

Shortcuts live in musescore_shortcuts.js as a single object, grouped by category:

const shortcuts = {
  "General Editing": [
    {
      title: "Undo",
      description: "Undo the last action",
      shortkey1: "Ctrl",
      shortkey2: "Z",
      shortkey3: "",
      icon: "./Icons/Undo.svg"
    },
    // ...
  ],
  // ...
};

To add, remove, or re-map a shortcut, edit this file directly. The sidebar will rebuild automatically from whatever's in here. Setting icon to null is fine; unmatched entries fall back to a text label.

Hardware

This tool is built specifically for the MusicMatrix macro pad:

  • 4×8 button grid (32 macros) + a 7-key piano section
  • Arduino Leonardo or Arduino Uno R4 WiFi (native USB HID via Keyboard.h)
  • Cherry MX–compatible switches, diode matrix wiring

Hardware design files and firmware live in a separate repo (I'm still making it)

Roadmap

  • Piano section support in the configurator
  • Touch-screen compatibility
  • Import/export layout presets as shareable JSON
  • Add your own shortcuts

Contributing

Want to contribute an icon, shortcut, or anything else? Contributions are welcome!

  1. Fork this repository and clone it locally.
  2. Create a new branch for your change:
   git checkout -b <your-branch-name>
  1. Make your changes. Add an icon to Icons/, update an entry in musescore_shortcuts.js, whatever it may be.
  2. Commit and push your branch:
   git commit -am "Description of your changes"
   git push origin <your-branch-name>
  1. Open a pull request describing what you added or changed.

If you're adding a new icon, please keep it visually consistent with the existing set (single-color, similar stroke weight) so everything reads well together on a small keycap.

If you spot a bug or have an idea but don't want to implement it yourself, feel free to just open an issue instead.

Acknowledgments

License

This project is licensed under the MIT License.

About

This is the source files for the MusicMatrix web client

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors