54 Commits

Author SHA1 Message Date
Reactorcoremeltdown
c8acc3827d Add master recording, landscape layout, and a batch of FX/UX improvements
Recording & audio:
- Master-bus WAV recorder: arm + FX-tail + SAF output folder on the mixer
  toolbar; allocation-free capture (ring buffer -> writer thread).
- Oboe is now the default backend; falls back to AudioTrack only on init
  error and shows a popup. Removed the manual engine toggle.
- Arpeggiator: fixed loop-boundary slip (phase-continuous), monophonic
  (no chord/voice pile-up), and a per-bar reset toggle.
- AmbienceReverb: 8-line FDN (was 16) to fit the real-time budget; per-bus
  soft-clip limiter; per-channel non-finite guard on the master sum.

UI / layout:
- Responsive landscape layouts: side nav rail; tracker grid beside the
  arrangement/keyboard; toolbox tiles beside a wider keyboard; two-column
  mixer strips; collapsed transport toolbar.
- Two-column instrument/effect editors; reverb controls paged with dot
  pagination.
- Arrangement: per-lane mute toggles; center-follow scrolling.
- Tracker toolbar: BLK dropdown, SKIP moved by OFF/KBD, glyph edit buttons.
- Sampler: normalize button, per-pad volume snap, single CLEAR.
- Import error popups; content validation on all file loaders.
- App themes: import/export/delete/dropdown library (stock themes protected).

Persistence & QoL:
- Persist keyboard MIDI channel/octave; remember loaded project in the
  settings dropdown; New Project button.

Cleanup:
- Removed dead code and fixed audio-thread allocation hot spots
  (per-sample iterators, Math.random on the RT thread, etc.).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 11:25:23 +02:00
Reactorcoremeltdown
a4c8ba2080 Big batch update: the tracker is mostly usable 2026-07-15 16:22:04 +02:00
Reactorcoremeltdown
d380f8643b UI Improvements: Piano widget, rigid sizes, proportions, etc 2026-07-14 07:37:48 +02:00
Reactorcoremeltdown
3cef1b4e85 Initial commit: Sizzletracker Android music tracker
A retro, grid-based music tracker for Android (Kotlin + Jetpack Compose,
single Activity) with four equally-capable input methods (touch, keyboard,
gamepad, MIDI) and four tabs: tracker, mixer, toolbox, settings.

Highlights:
- Tracker: Canvas-drawn 4-track pattern grid over an 8-lane arrangement roll,
  with a glyph cache and draw-phase state reads so the playhead and edits
  redraw without per-frame recomposition.
- Audio: sample-accurate sequencer feeding a shared AudioEngine, driven by
  either a Kotlin AudioTrack loop or native Oboe/AAudio via JNI (16 KB-aligned
  native libs). media3 MediaSession for lock-screen/headset transport.
- Toolbox: 16 instrument/effect slots with a 2-octave audition keyboard;
  single-tap select, double-tap edit, long-press clear.
- Note entry: long-press cell popups (piano keyboard / value steppers) plus
  keyboard/gamepad stepping that resumes from the last note/channel entered.
  Velocity capped at 0x7F, channel at 16.
- Selection/clipboard (cut/copy/paste/delete) and .sng import/export
  compatible with the reference desktop tool.
- A `profile` build type (non-debuggable, debug-signed) for realistic
  on-device performance testing.
- Developer handover documentation under docs/.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 22:15:13 +02:00