PM_G-1 Grid
The off-the-shelf Pimoroni Pico Scroll Pack (a 17×7 white LED matrix + 4 buttons) on a plain Raspberry Pi Pico - sibling to the PM_K-1 Kit and PM_X-1 Explorer, sharing the engine, program-string grammar, and live-sync protocol with the web editor.
What it is
The Pico Scroll Pack (PIM545) plugs straight onto a Raspberry Pi Pico's headers: 119 white LEDs in a 17×7 matrix driven by an IS31FL3731 over I²C (individually brightness-controlled), and 4 buttons (A / B / X / Y). No soldering, no touchscreen, no joystick, no RGB - and no onboard speaker. About 65 × 25 × 10 mm on top of the Pico. Power is over VSYS (USB or battery).
It runs the same polymeter engine and program strings as the web editor. The 7-row × 17-column
matrix maps directly onto the editor's lane × step pad grid: each lane is a row, each step a column, and
LED brightness encodes accent / normal / ghost. Beat editing is done in the browser; Live sync mirrors edits
to the device in real time (HELLO/FULL/DELTA over USB-MIDI) and the device mirrors play/stop/tempo/track back.
Audio is over USB-MIDI - turn on the editor's 🎹 Device audio to hear the clicks through your
computer (or solder a piezo to a free GPIO and set P_BUZZER in app.py).
Wiring - the Pico Scroll Pack fixed pinout (just press it onto the Pico)
Everything is wired through the header; this is what the firmware reads. Pins verified against Pimoroni's pico_scroll library.
| Component | Pico pins |
|---|---|
| LED matrix - 17×7 white, IS31FL3731 (I²C @ 0x74) | |
| SDA / SCL | GP4 / GP5 |
| Buttons (digital, pull-up) | |
| A (play/stop) / B (track) | GP12 / GP13 |
| X (-bpm) / Y (+bpm) | GP14 / GP15 |
| Audio (optional - not on the Scroll Pack) | |
Piezo PWM - only if you wire one; set P_BUZZER | any free GPIO |
Controls & views
| Button | Tap | Hold |
|---|---|---|
| A | play / stop | cycle view (Grid → Pendulum → BPM) |
| B | next track | next set list |
| X | tempo -1 | repeat (-5 after ~1.5 s) |
| Y | tempo +1 | repeat (+5 after ~1.5 s) |
| View | What the 17×7 matrix shows |
|---|---|
| Grid | lanes as rows, steps as columns; brightness = accent / normal / ghost; a bright playhead column tracks the beat (bars > 17 steps scale to fit - no steps dropped) |
| Pendulum | a column bounces across the bar like a metronome arm, full-height flash on each beat |
| BPM | the current tempo as three 3×5 digits |
Tap tempo lives in the web editor. The mapping is deliberately simple (this is a UI prototype) and easy to re-bind at the top of app.py.
Parts
Two off-the-shelf parts, no soldering - ballpark one-off price (USD).
| Part | Qty | ~$ |
|---|---|---|
| Pimoroni Pico Scroll Pack (PIM545) - 17×7 white LED matrix (IS31FL3731) + 4 buttons | 1 | 22 |
| Raspberry Pi Pico - RP2040; pre-soldered headers so the pack presses on | 1 | 5 |
| USB cable - power + flashing (micro-USB) | 1 | 2 |
| Total (one-off) | ≈ $29 |
Reference: Pico Scroll Pack product page · vendor code (pico_scroll) · CircuitPython for Raspberry Pi Pico.
Firmware - self-contained appliance (USB drive · web-driven editing via Live sync · MIDI audio · practice log)
The firmware turns the Pico + Scroll Pack into a self-contained appliance: it mounts as a
USB drive carrying the (precompiled) firmware, your tracks and an offline copy of this editor;
drives the 17×7 matrix with web-driven editing via Live sync; logs your practice to
history.json; takes new set lists pushed from the editor over USB-MIDI; and plays
out your computer's speakers over USB-MIDI. By default the firmware owns the drive (read-only to
the computer - so it can log and can't be accidentally erased); hold button A at power-on for
editor mode (drive writable).
Download CircuitPython bundle ↓ Source + README ↗
- Flash CircuitPython for Raspberry Pi Pico
(download)
via BOOTSEL, unzip the bundle onto
CIRCUITPY, and power-cycle. It boots into appliance mode. - Edit on the web: open the editor (beta) in Chrome / Edge / Firefox, click 🔗 Live sync, and the matrix mirrors your edits live (beats, tempo, track changes).
- Save a set list to the device for offline use: set-list ··· menu →
📟 Save to device. It's pushed over USB-MIDI; the device persists it to
/programs.json. - Play through your computer: click 🎹 Device audio, then press A on the device - the full groove sounds through your speakers over USB-MIDI, in sync (the Scroll Pack has no speaker of its own).
- Firmware updates: ··· menu → ⬆ Update firmware - the editor reads
the device id (G = Grid), fetches the matching
pico-scroll-app.mpy, and pushes it over USB-MIDI. The device A/B-updates with automatic rollback if a build won't boot.
Pairs with the touch-driven PM_K-1 Kit and the button-driven PM_X-1 Explorer - same engine, same programs.json, same web editor.