Repository navigation
v0.3.6 adds optional beat haptics to the Full edition: your phone gives a short, crisp vibration on each bass hit. It also rolls up an internal v0.3.5 (build and packaging changes; nothing you'd notice), which was never released as APKs. All three editions are published again, signed with the same key as before, so they update in place from 0.3.0 or later.
What's new
Beat haptics (Full edition, off by default). Open the top-right menu and tap Beat haptics; you get a confirming pulse. From then on, while the companion screen is open and music is playing, the phone vibrates on each bass hit: a short pulse (about 18 to 42 ms), stronger and slightly longer on the big hits. Turn it off the same way. It does nothing when the screen is closed or the music is paused.
- Why only Full: Vibes' wave is a procedural animation, so its beat is made up; buzzing to a rhythm unrelated to your music would feel wrong. Standalone has no wave.
- Permission: Full now declares the normal Vibrate permission. Android grants it at install with no prompt. Standalone and Vibes don't declare it.
- How the beat is found: a new detector watches how sharply the bass jumps between audio frames (about 20 per second), not how loud it is. A loudness threshold was tried first and, on a real 50 s capture from the test phone, missed stretches of up to 7 seconds because modern bass lines are rarely quiet. The jump-based detector tracked the same track with gaps around a second (about 115 detections per minute). It is unit-tested on synthetic kick trains, silence, steady loud bass and strength scaling.
- Vibration type: media usage. On the test phone the system's touch-feedback setting is off, so ordinary app haptics are ignored by Android; media-usage vibrations still play.
v0.3.5, rolled up (build only, no app change): the dependency-metadata blob AGP embeds in every APK is removed, the Gradle download is pinned by SHA-256, and the unverified JDK 25 pin was dropped.
Which file do I download?
| Edition | File | What you get | Installs |
|---|---|---|---|
| Standalone | setbeat-standalone-v0.3.6.apk |
Stopwatch and countdown, gestures, local video and audio with the negative-blend timer, playlists, background countdown alarm. No companion mode, no wave. | Any phone, from a browser or file manager |
| Full | setbeat-full-v0.3.6.apk |
Everything in Standalone plus companion mode, the beat-reactive wave on real audio (including with spatial audio on, since 0.3.4), and the new beat haptics. | Needs Google Play or adb on phones that apply the Play Protect block |
| Vibes | setbeat-vibes-v0.3.6.apk |
Everything in Full except the wave is a procedural animation that always moves, and there are no haptics. Never asks for Record audio. | Same as Full |
Only one edition can be installed at a time (same app id and signing key; installing one replaces another and keeps your data).
Signing and checksums
Certificate SHA-256 (must match):
23:79:00:8C:6B:C1:D0:15:77:63:FD:A5:D3:23:4B:51:3E:A5:78:55:1E:A9:5E:5D:8E:3B:17:5D:13:DF:B8:6A
File checksums (SHA-256, also in SHA256SUMS.txt):
879625bd914f36fed932c4a6441d68561aac94cfd1ab6d8cd744f3517e73303e setbeat-full-v0.3.6.apk
8d687fb3b2336675680028fb32f8dd8784b4d3d014fe666d81558c5e502c16a8 setbeat-standalone-v0.3.6.apk
73582af17591111bd0e20ba7726211f9f35b89d31a073907abc2f32cf684ad66 setbeat-vibes-v0.3.6.apk
Versions before 0.3.0 used a shared debug key, so from those you must uninstall first (playlists and timer are removed).
How it was tested
- Unit tests (including 5 new beat-detector tests) and lint pass on all three editions; the APKs were built from the
v0.3.6tag with a clean working tree. - Each APK checked with
apksigner(verifies, release key above) andaapt2: versionCode 12, not debuggable. Permissions: Vibrate appears only in Full; Standalone has no notification listener or Record audio; Vibes has the listener but no Record audio or Modify audio settings. - On the test phone (POCO X7 Pro, HyperOS, Mi Music): a Full 0.3.6 build with the same code was installed; with Beat haptics on, the system vibration log showed one media-usage vibration per detected beat, 18 to 42 ms with intensity following the hit strength. The owner felt it and said it feels good. The wave kept working with Immersive sound on.
Not verified
- Timing against the audible beat was judged by feel, not measured. The audio capture itself adds some delay.
- Other music, genres and quiet tracks; the detector was tuned on one 50 s capture from one song.
- Standalone 0.3.6 and Vibes 0.3.6 were not installed on a phone, and the exact release APKs (not just the same code) were not each installed; they are covered by the unit tests, lint, and the permission and signature checks above.
- The on-device instrumented test suites were not run for this release (the edition test now also expects the Vibrate permission; it compiles).
- Haptics on phones with weak or no amplitude control fall back to the system's tick effect and were not tried.
- Not on Google Play, and R8/minification is still off (about 29 MB per APK).
Full diff: v0.3.4...v0.3.6