Files
sizzletracker-android/app/src/main/cpp/CMakeLists.txt
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

21 lines
778 B
CMake

# Native build for the Oboe (AAudio) low-latency output backend.
cmake_minimum_required(VERSION 3.22.1)
project(sizzle_native)
# Oboe ships as a prefab package inside the com.google.oboe:oboe AAR; AGP exposes
# it here when `buildFeatures { prefab = true }` is set in build.gradle.kts.
find_package(oboe REQUIRED CONFIG)
add_library(sizzle_native SHARED native_audio.cpp)
target_link_libraries(sizzle_native
oboe::oboe
log)
# Align ELF load segments to 16 KB so the library works on Android 15+ devices
# using 16 KB memory pages (and passes Google Play's requirement). NDK r27+ does
# this by default; on r26 we set it explicitly. -Bsymbolic is unrelated; the key
# flag is max-page-size.
target_link_options(sizzle_native PRIVATE
"-Wl,-z,max-page-size=16384")