Highlight a cell on the arrangement roll and Play now begins at that selection's first beat instead of always from the top. Stop clears the highlight, so the next Play resumes from the beginning. The rectangular selection is hoisted from ArrangementRoll to the ViewModel (four ints) so the transport can read/clear it; engine.play() gains a startBeat that seeks playlistIndex in the built playlist (A/B expansion respected; falls back to the top if the beat isn't in it) or currentLine in pattern-loop mode. Loading/importing a project also clears the selection so a stale one can't apply to a new arrangement. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sizzletracker (Android)
A retro, grid-based music tracker for Android — monospace UI, pixel icons, demoscene-style pattern editing — playable equally with touch, keyboard, gamepad, and MIDI (USB or Bluetooth).
📖 Full User Guide — a detailed, screenshot‑by‑screenshot walkthrough of every tab, instrument, effect and control.
Features at a glance
- Tracker tab — 4-track pattern grid (note / velocity-hex / MIDI-channel per track), beat & bar coloring, tap-to-focus + drag-to-edit with haptics and scale-aware note entry; plus an 8-lane arrangement piano-roll (up to 256 bars) with A/B loop regions.
- Mix tab — 4 channels, each with an instrument + 4 FX slots, MIDI channel, volume, mute/solo.
- Toolbox tab — 16 slots for instruments (3-oscillator synth, sampler, SF2/XI) and effects (arp, transposer, LFO, tape delay, reverb, filters, 10-band EQ, bitcrusher). Every device has an auto-generated editor and text presets.
- Setup tab —
.sngproject save/load, color themes (with import/export), gamepad bindings, and searchable/collapsible MIDI bindings. - Master recording — render the master bus (with FX tail) to a WAV file.
- Background playback with a media notification (Play/Pause/Stop).
- Two-thread design — Compose UI on the main thread, a sample-accurate sound engine on its own high-priority thread.
There is also a standalone tools/samplepack-builder.html — an offline page for
assembling Sampler preset bundles (drop audio onto 16 note-labelled pads, then
download an importable .zip).
Build & run
Open the project in Android Studio (2024.1+) and Run on an API 26+ device or emulator.
From the CLI (the Gradle wrapper is committed, so a fresh clone needs no setup):
./gradlew assembleDebug
Where to start reading
See docs/DEVELOPER_HANDOVER.md — a from-scratch tour written for a developer new to Android: architecture, the file map, the "one action / one song / two threads" model, how to add an instrument or input, and an honest implemented-vs-TODO list.
Fastest orientation in code:
model/Project.kt → input/InputAction.kt → ui/AppViewModel.kt →
audio/AudioEngine.kt.
Project format
Songs use a human-readable .sng text format (see io/ProjectIo.kt), aligned in
spirit with the desktop
Sizzletracker; a byte-exact
compatibility shim is a listed TODO in the handover doc.
License
Sizzletracker is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License v3.0 or later
(GPL-3.0-or-later). See the LICENSE file for the full text; every
source file carries an SPDX GPL-3.0-or-later header.
Copyright © 2026 Reactorcoremeltdown