v1.2.0
What's new in 1.2.0 · Akhanda
New
- 💿 CUE sheets. A single-file album (one long FLAC/WAV/AIFF/ALAC with a
.cuebeside it) now appears and plays as its individual tracks — real titles and per-track times — on both the standard and bit-perfect USB-DAC paths, with skip and seek working within each track. Needs all-files access or the folder added under Settings → folders. - 🔗 Native gapless (experimental). On the bit-perfect USB-DAC path, consecutive same-format tracks (FLAC/WAV/AIFF/ALAC at the same rate and bit depth) now play with no gap — the engine splices the next track into the still-open DAC stream instead of re-opening it per track. Different rates/bit depths and DSD switch exactly as before. Turn it on under Settings → Native gapless.
Improved
- 🔊 Bit-perfect at any volume. On USB DACs with a working hardware volume control, the app now uses it by default, so playback stays fully bit-perfect (bitXact) at any volume instead of only at 100% — the volume keys and slider drive the DAC's own (often analog) volume while the digital stream is sent untouched. DACs whose control isn't real are detected at connect and fall back to software automatically, and you can still force software volume in Settings.
- 🧮 Cleaner software volume. When a USB DAC has no usable hardware volume and the app attenuates in software, the output is now TPDF-dithered instead of truncated, so quiet passages get a benign, near-inaudible noise floor instead of low-level distortion. Full-volume bit-perfect playback stays byte-identical.
- 🎛️ Crossfade curves. Crossfade now offers selectable fade curves — Linear, Equal power, Exponential or Logarithmic — to shape how one track blends into the next (Equal power keeps perceived loudness steadier through the blend). Applies to the standard output path.
- 🎧 Bluetooth codec controls. The Bluetooth codec screen now lets you pick LDAC quality (Adaptive / 990 / 660 / 330 kbps) alongside sample rate and bit depth, shows the connected headphone's battery level where your phone exposes it, and its "Open Developer Options" button jumps straight to (and highlights) the Bluetooth Audio Codec setting on supported phones.
- 💎 Refined bitXact badge. The Now Playing bit-perfect indicator is now a tiny embossed bitXact chip — "bit" and "act" glow gold and the "X" carries your app-icon gradient when the track is genuinely bit-exact, resting dim and calm otherwise.
- ⏱️ Sleep timer polish. The Sleep timer default slider snaps in clean 5-minute steps (5–120 min), and the playback-screen timer dialog now links to it — a one-tap "Default · N min" option sits at the top and the custom field opens pre-filled with your configured default.
- 🎞️ Optional screen animations. A subtle fade when moving between screens, under Settings → Feed & Visuals — off by default, so the app keeps its instant, flicker-free swaps unless you turn it on.
- 🧭 Clearer Fix My Sound. The Fix My Sound button now explains what it does and how it differs from the bitXact path — it flattens your EQ/DSP to a transparent baseline, while the bit-perfect button changes the output route to your DAC.
Fixed
- 🔉 Hardware volume on more dongles. Some USB dongles (e.g. certain Realtek-based DACs) whose main volume accepts changes but doesn't actually lower the level now work — the app drives their per-channel control instead, so the slider and volume keys finally take effect.
- 🏷️ Correct signal-path blocker labels. An off-by-one in the blocker table made a non-unity L/R balance (channel trim) show up as "EQ active" (and mislabeled every blocker after it) — blockers now name the real reason a track isn't bit-exact.
- 📻 Real rate on tagless streams. The signal path now shows the actual locked output rate and bit depth on the bitXact USB path even when a track carries no tags (e.g. internet radio), instead of "ACTIVE" beside blank "—" rows; streams that aren't bit-exact still correctly show "—".
- 🎚️ Volume keys anywhere in bit-perfect. During bit-perfect / USB-DAC (exclusive) playback you can now change volume with the hardware keys from anywhere — home screen, another app or a locked screen — not just while the app is open.
- 🔌 USB exclusive re-claims after fast skips. If a rapid track change briefly drops the native engine to ExoPlayer (grey badge), the app now automatically re-claims the DAC and returns to bit-perfect once the skips settle.
- 📁 Exclude any folder. Excluding a folder (including standard ones like Music or Download) no longer dead-ends on Android's "Can't use this folder" screen or flashes a loader and closes — it now uses the same in-app browser as "Add folder", reaching any directory and saying why if one genuinely can't be opened.
- 🗂️ Per-folder scroll memory. The Folders tab now remembers each folder's scroll position independently, so opening a sub-folder and stepping back no longer snaps the parent list to the top.
- 🎯 Cover-art jump is one-shot. Using "tap cover art to find the song" no longer hijacks the bottom Home button afterward — it's a one-shot jump and no longer forces the All-songs tab until you restart.
- 🔔 Exit clears the notification when paused. Exiting from a paused state no longer leaves a lingering media card in the notification shade.
- 📱 Scrollable menu in landscape. The track ⋮ menu no longer runs off the bottom of the screen in landscape — long menus cap to the visible height and scroll, keeping every action reachable.
- 🛡️ No crash on slow lyrics fetch. Fetching or previewing lyrics from an online source no longer crashes when the network is slow or a service is unreachable — a timeout now falls through to "no match" or the next source.
versionCode 26 · minSdk 31 (Android 12) · targetSdk 36 (Android 16)