Reactorcoremeltdown 9fdef7fee7 Play starts from the arrangement selection; Stop clears it (v0.19.0)
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>
2026-07-21 18:04:47 +02:00

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).

platform language ui license

📖 Full User Guide — a detailed, screenshotbyscreenshot 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.sng project 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.ktinput/InputAction.ktui/AppViewModel.ktaudio/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

Description
No description provided
Readme GPL-3.0 3.1 MiB
Languages
Kotlin 96.2%
HTML 2.1%
C++ 1.6%
CMake 0.1%