Reactorcoremeltdown 58639d07cf Add Mix Tightener effect, multi-column preset menus, louder master (v0.7.0)
Mix Tightener — a preset-driven "channel strip in a box" (Neutron-style):
parametric EQ → 3-band multiband compressor → peak limiter, all behind ONE
visible control, Strength, which morphs the whole chain from transparent (0)
to the full preset (1). Every per-band value is a hidden slot param the
presets set; the editor shows only a vertical Strength fader.
 * DSP (Effects.kt): reusable RBJ biquad; LR-style 3-way crossover; per-band
   peak-follower compressors; fast peak limiter + output make-up. Performance:
   the expensive per-band gain computation (log/pow) runs at control rate while
   the envelope follower runs per sample; Strength≈0 bypasses the whole effect,
   and flat EQ bands / ratio≈1 comp bands are skipped. Output is clamped and
   NaN-guarded so a channel FX can never poison the master.
 * 30 factory presets (MixTightenerPresets) across drums (808 Crisp, Industrial
   Drums, Trap Hats, Techno Kick, DnB Breaks, …), bass (EBM Bass, Reese, Acid
   303, Sub Bass Tame, Goth Bass, Synthwave Bass, …), synths/leads/pads
   (Synthwave Lead, Cutting Lead, Darkwave Pad, Arp Sparkle, …) and bus glue
   (Mix Glue, Loudness Max), seeded via PresetLibrary.

Global: RetroDropdown now lays long option lists (>12) into balanced columns
so preset menus grow sideways instead of into a tall vertical scroll — applies
to every dropdown in the app.

Master loudness: raise MASTER_GAIN 0.35 → 0.5 (~+3 dB) so playback sits closer
to other media apps; the soft-knee limiter still catches peaks.

Builds clean (staging + release). On-device performance profiling and install
are pending — the device dropped off wireless adb mid-session.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-18 18:11:56 +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%