Prepare for open-source release under GPL-3.0-or-later; docs & test maintenance

- Add GPL-3.0 LICENSE and SPDX headers (GPL-3.0-or-later) to every source file
  (58 Kotlin, the C++ file, and the sample-pack HTML tool).
- README: state the GPL-3.0-or-later license (+ badge); fix stale "256 beats"
  -> "256 bars"; fix build instructions (the Gradle wrapper is committed);
  mention master recording and the sample-pack tool.
- DEVELOPER_HANDOVER: resync with the codebase — corrected the wrapper note,
  architecture diagram, full file map, the add-instrument/effect guide, Oboe
  (now default with fallback, not an opt-in toggle), moved SF2/XI to implemented,
  and added recently shipped features with an honest remaining/optional list.
- Fix a pre-existing broken unit test: SngFormatTest called the old
  SngFormat.import(text); the API is importInto(project, text). Tests compile
  and pass again.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Reactorcoremeltdown
2026-07-17 09:47:29 +02:00
parent 3df4bb645a
commit a5fdc7b6c4
63 changed files with 955 additions and 42 deletions

View File

@@ -8,13 +8,14 @@ gamepad, and MIDI** (USB or Bluetooth).
<img alt="platform" src="https://img.shields.io/badge/platform-Android%208%2B-0b0d0e">
<img alt="language" src="https://img.shields.io/badge/kotlin-2.0-7cfc9a">
<img alt="ui" src="https://img.shields.io/badge/UI-Jetpack%20Compose-f2c14e">
<img alt="license" src="https://img.shields.io/badge/license-GPL--3.0--or--later-e05a4b">
</p>
## 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)
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.
@@ -23,16 +24,21 @@ gamepad, and MIDI** (USB or Bluetooth).
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+), let it create the Gradle
wrapper if prompted, and Run on an **API 26+** device or emulator.
Open the project in **Android Studio** (2024.1+) and Run on an **API 26+**
device or emulator.
CLI (after the wrapper exists — `gradle wrapper --gradle-version 8.9`):
From the CLI (the Gradle wrapper is committed, so a fresh clone needs no setup):
```
./gradlew assembleDebug
```
@@ -57,4 +63,9 @@ compatibility shim is a listed TODO in the handover doc.
## License
TBD by the project owner.
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`](LICENSE) file for the full text; every
source file carries an SPDX `GPL-3.0-or-later` header.
Copyright © 2026 Reactorcoremeltdown