A controller-driven drum-machine / instrument for the living room, played with a DualSense controller. Two apps kept at feature parity:
padkit-native/— Apple TV / iOS (Swift, SwiftUI, AVAudioEngine, GameController). Generated with XcodeGen (project.yml); runxcodegen generatethen openPadKit.xcodeproj.padkit-android/— Android TV / Google TV (Kotlin, Compose for TV, Oboe C++/NDK audio core).
| Kit | Sounds |
|---|---|
| 808 LAB | Real Roland TR-808 samples (kick, snare, hats, clap, rim) |
| STUDIO | Real acoustic kit — gretsch kick/snare/toms/hats/ride/crash |
| TAALA | Real CC0 tabla / mridangam multisamples |
| PERFORMANCE DECK | One-shots — real 808 punch + reverse cymbal, designed FX stabs/laser/riser |
| AURORA | Handpan (modal synthesis, 6 selectable scales) |
| NEBULA | Warp handpan (live synthesis voice) |
docs/FEATURES.md is the platform-agnostic behavioral source of truth; docs/ARCHITECTURE.md
holds the shared architecture and the iOS↔Android mapping matrix. Change behavior there first,
then both apps.
Android TVs self-update from an in-app updater that checks version.json. The signing keystore
(padkit-android/app/padkit.keystore) is irreplaceable — losing or rotating it breaks the
update chain for every installed TV. Keep this repository private.