# 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

## 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 beats) 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 (NES 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. - **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. ## Build & run Open the project in **Android Studio** (2024.1+), let it create the Gradle wrapper if prompted, and Run on an **API 26+** device or emulator. CLI (after the wrapper exists — `gradle wrapper --gradle-version 8.9`): ``` ./gradlew assembleDebug ``` ## Where to start reading See **[docs/DEVELOPER_HANDOVER.md](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](https://github.com/reactorcoremeltdown/sizzletracker); a byte-exact compatibility shim is a listed TODO in the handover doc. ## License TBD by the project owner.