Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

SqrSeq v3

A Tenori-on inspired multi-track grid sequencer for Linux with a touch-first UI, SoundFont instruments, MIDI output, and fullscreen support. Built for square displays but works on any screen.

Python License Platform

What is it?

SqrSeq is a 16-row step sequencer where you tap cells on a grid to place notes. A playhead sweeps left to right, playing each column's active notes in a loop. Notes use a pentatonic minor scale so everything sounds good together — no music theory required.

Think of it as a software clone of the Yamaha Tenori-on, running on a Linux box with a touchscreen.

Screenshots

Grid Menu Instruments

Features

  • 16 tracks — each with its own grid, instrument, volume, and MIDI channel
  • Unlimited sequence length — add pages of 16 steps with the + button, no limit
  • 32 GM instruments — piano, strings, bells, pads, guitar, flute, synths, and more
  • SoundFont support — use any .sf2 file, including MT-32 and Sound Canvas soundfonts
  • External MIDI output — send notes to USB MIDI devices, switchable between internal, external, or both
  • Touch-first UI — slide-out menu, track tabs, page controls, no keyboard needed
  • Volume slider with real-time MIDI CC control per track
  • 9 pattern slots — save/load all tracks, pages, BPM, instruments, and volumes
  • Fullscreen — auto-adapts to any resolution, optimized for square displays (720×720)
  • Adjustable tempo — 40 to 200 BPM
  • Ghost notes — dim dots show other tracks' notes on the current grid
  • In-app screenshots — captures directly from pygame, works on DRM/KMS displays

Install

sudo apt install fluidsynth fluid-soundfont-gm python3-pygame python3-numpy
pip install pyfluidsynth --break-system-packages

Run

python3 sqrseq.py

With a custom SoundFont:

python3 sqrseq.py /path/to/soundfont.sf2

UI Layout

┌─────────────────────────────────────────┐
│ ☰  Instrument    ▶ Play      120 bpm   │  Topbar
│ < │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ > │  Track tabs (tap < > for 9-16)
├───┬─────────────────────────────────┬───┤
│   │                                 │   │
│ < │          16×16 Grid             │ > │  Page nav
│   │                                 │   │
│ - │                                 │ + │  Remove/add pages
│   │                                 │   │
├───┴─────────────────────────────────┴───┤
│              ● ● ● ●                   │  Beat markers + page indicator
└─────────────────────────────────────────┘

Controls

Everything is accessible via the touch UI:

Element Action
Grid Tap cells to toggle notes on/off
Play/Pause Centered button in top bar
Track tabs Tap 1-16 to switch tracks (< > to page)
+ / - Add or remove 16-step pages
< / > Navigate between pages
Hamburger menu Top-left — opens settings panel
Tempo −5 / +5 buttons in menu
Volume Draggable slider in menu (per track)
Instrument Tap to expand list, tap to select (per track)
MIDI output Cycle mode: Internal / External / Both
Pattern slots 1–9 numbered slots, Save/Load buttons
Clear Clears current track (all pages)
Screenshot Saves PNG to home directory
Exit Closes the app

Tracks

SqrSeq supports 16 independent tracks, each mapped to a MIDI channel (0-15). Every track has its own grid, instrument, and volume. The topbar shows 8 track tabs at a time — use the arrow buttons to flip between tracks 1-8 and 9-16. Active tracks are color-coded, and tracks with notes are dimly highlighted.

Ghost notes from other tracks appear as small dots on the grid so you can see the full arrangement while editing a single track.

Sequence Pages

The grid starts with one 16-step page. Tap + on the right side to add more pages. The playhead sweeps through all pages in order before looping. Page navigation is manual — the display stays on the page you're editing while playback continues across all pages.

MIDI Output

SqrSeq can send MIDI to external USB devices. In the menu under MIDI Output:

  • Internal — FluidSynth only (default)
  • External — USB MIDI device only
  • Both — plays through FluidSynth and external device simultaneously

Tap a device in the list to connect. Use "Rescan MIDI" if you plug in a device after launch. FluidSynth virtual ports and MIDI Through are filtered from the list.

Patterns

Patterns are saved as JSON in ~/.sqrseq/:

~/.sqrseq/pattern_1.json
~/.sqrseq/pattern_2.json
...

Each file stores all 16 tracks (grid, instrument, volume), BPM, and page count. Backward compatible with older single-track saves.

SoundFonts

SqrSeq auto-detects GM SoundFonts from common system paths. You can also use:

  • FluidR3_GM (installed via fluid-soundfont-gm) — good general purpose
  • MT-32 SoundFonts — for that classic Roland LA synth sound
  • SC-55 SoundFonts — for Sound Canvas GM sounds
  • Any .sf2 file — pass it as a command line argument

Changelog

v3

  • 16 independent tracks with per-track instrument, volume, and MIDI channel
  • Track tabs in topbar with page flip (1-8 / 9-16)
  • Unlimited sequence length via addable 16-step pages
  • Side-mounted page controls (< > + -)
  • Ghost notes showing other tracks' activity
  • External MIDI output (Internal / External / Both)
  • MIDI device scanning with virtual port filtering
  • In-app screenshot button

v2

  • Touchscreen-only UI with slide-out hamburger menu
  • Fullscreen with dynamic layout
  • Volume slider with MIDI CC control
  • Collapsible instrument submenu
  • Tap vs drag detection
  • 9 pattern save/load slots

v1

  • 16×16 grid sequencer
  • 32 GM instruments via FluidSynth
  • Pentatonic minor scale
  • Keyboard controls

License

MIT

About

Tenori-on inspired 16×16 grid sequencer for Linux with touch UI, SoundFont instruments, and fullscreen support

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages