Close
0%
0%

M5MusicTab5

Open-Source Music Exploration Terminal based on M5Stack TAB5(ESP32-P4).

Similar projects worth following
A pocket-size music studio running 12 built-in apps. Features an SF2 sample synthesizer, an 8-track step sequencer, midi recording, and a smart AI voice assistant. 2 themes. Powered by M5Stack TAB5. Source Code: (https://github.com/Fangbrbr/M5MusicTab5) Web‑flasher(one‑click flash): (https://fangbrbr.github.io/M5MusicTab5/)

I built M5MusicTab5 because I wanted a single device to sketch beats, practice, and listen to my MIDI files away from a laptop. It's a complete firmware for the M5Stack Tab5 — ESP32-P4, 5" 1280×720 touch screen, stereo audio — written from scratch on ESP-IDF and LVGL 9 (UI built withEEZ Studio).

The center of version v3.0 is the step sequencer. It's the part I kept tuning until it felt like an instrument:

  • Euclidean rhythms in one tap. Each track generates a style-aware pattern via the Euclidean algorithm — the same "distributed as evenly as possible" logic behind a lot of classic drum patterns — then you break it by hand until it's yours.
  • Per-step velocity, trigger probability and CC locks. Long-press any cell to open its settings. Set a snare to fire 80% of the time and the groove starts breathing.
  • Humanized timing. Per-track random timing plus swing, so straight 16ths don't sound like a metronome.
  • Six pattern slots with beat-quantized switching. While playing, tap another slot: it blinks until the next bar line, then takes over — no stutters, no restarts. Song structure happens live.
  • 23 GM percussion voices from the on-board SF2 synth, with custom soundfonts loadable from SD.
  • Everything survives power-off. Patterns save as .m5p files on SD; live performances record to standard .mid that drops straight into any DAW.

Around the sequencer sits the rest of the terminal: a tiny piano and an XY pad with pitch-bend, ear training and chord practice (with an interactive circle of fifths), a metronome with tap tempo, an MP3/MIDI player, a WAV recorder with dual-mic echo cancellation, an AI voice assistant, and a clock/calendar. All input paths — USB Host, BLE(TBD), UART — feed one global MIDI bus, so a keyboard plugged into the USB-A port plays the internal synth like any other voice.

On the engineering side, the things I care most about:

  • The sequencer core (engine_sequencer) is pure logic with a single dependency on the MIDI bus — no UI, no hardware calls. It runs host-side unit tests, with a Python cross-check that the Euclid distribution is actually even.
  • Timing comes from esp_timer hooks, not the UI loop — the grid renders as one canvas with direct drawing (no tree of 128 cell widgets), while audio stays on a fixed-priority core.
  • The synth streams SF2 sample data out of PSRAM with a memory budget gate, so a ~16 MB soundfont loads without starving the UI.
  • Flashing takes one browser tab: an esptool-js page with a three-button wizard (connect → flash → watch the boot log auto-open). No toolchain, no drivers.

The full source is on GitHub (MIT), with bilingual documentation in Chinese and English, and demo videos on Bilibili. 

  • The v3 headline: an 8-track step sequencer

    Fangbrbr09/05/2026 at 18:53 0 comments

    The drum pad grew into a full step sequencer, built for rhythm people:

    • One-tap Euclidean rhythms — generate a style-aware starting pattern per track, then edit by hand
    • Every step has its own parameters — long-press any cell to set velocity, trigger probability and a CC lock for that step
    • Humanized timing — per-track random timing and swing, BPM 20–300
    • Six pattern slots (A–F) — live switching quantized to the beat, pending slot blinks until it takes over
    • 23 GM percussion voices — driven by the on-board SF2 synth; custom soundfonts load from SD
    • 16/32-step grid — 8 tracks × 16 steps, expandable to 32 (A/B pages)
    • Nothing is throwaway — patterns save as .m5p to SD; performances record to standard .mid that opens in any DAW
    Also new:
    • Recorder app — WAV recording in three modes: voice (16 kHz mono), instrument (44.1 kHz stereo), ambient (dual-mic AEC), with live level meters and in-app playback
    • Player file management — long-press to delete MIDI/recording files, with confirmation
    • Web flasher wizard — open the page in Chrome/Edge and follow three big buttons: connect, flash, watch the log; the pro panel keeps every advanced control
    Full app guide: doc/apps.md · Flash in your browser: fangbrbr.github.io/M5MusicTab5

  • Sequencer is on the way.....

    Fangbrbr09/01/2026 at 18:07 0 comments

    Sequencer is on the way.... 

    Just as the gallery shows, maybe release in version v2.1.0.

    This is the new 8x16 step sequencer I've been working on. It's driven by a pure logic engine with random generation and humanized jitter (probabilities). The interaction is highly tactile: just tap the grid to toggle steps, long-press to tweak velocity and CC locks. It's a big upgrade from the previous drum pad!

    Stay tuned for the official v2.1.0 release!

View all 2 project logs

View all instructions

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates