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>
16 lines
545 B
Properties
16 lines
545 B
Properties
# JVM options for the Gradle daemon. 2 GB heap is plenty for this project.
|
|
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
|
|
|
|
# Run independent tasks in parallel and cache outputs — faster incremental builds.
|
|
org.gradle.parallel=true
|
|
org.gradle.caching=true
|
|
|
|
# AndroidX is the modern support-library namespace. Required for Compose.
|
|
android.useAndroidX=true
|
|
|
|
# Kotlin code style used by the IDE formatter.
|
|
kotlin.code.style=official
|
|
|
|
# Only generate the R (resources) class per-module that actually needs it.
|
|
android.nonTransitiveRClass=true
|