HearBuds is a Dioxus (0.7) app for Android and desktop. It uses your mic, runs low-latency DSP, and plays audio to your output device. You can run a calibration sweep, then fine-tune your sound profile with EQ controls.
- Mic -> DSP -> speaker pipeline (low latency).
- Threshold-seeking calibration sweep (per-band, adaptive).
- Multi-band compression tuned for speech clarity.
- Noise reduction with:
- strength control
- room-noise capture
- Comfort / Strong profiles
- artifact guard metrics in advanced view
- EQ display with user-unlocked editing.
- Safety limiter and safe mode.
- Profiles (save/load).
- Rust-first DSP core for performance-critical processing.
Active development (alpha). The Dioxus UI, state flow, and native audio pipeline are working. The app is usable for testing, but not yet production-ready.
Known gaps:
- Bluetooth headset/earbud microphone routing is not yet reliable across devices.
- Android runtime mic permission flow still needs broader device validation.
- Background audio behavior depends on Android system policy and device settings.
src/: Dioxus UI, state, and Rust DSP core (src/lib.rs).android/: Android manifest/project files.- Android audio runs through
trombone-audio(AAudio/OpenSL ES fallback) with the Rust DSP core.
- Rust (
cargo) - Dioxus CLI (
dx) - Android SDK (with NDK tools)
- Java (JDK)
cargo-ndk(cargo install cargo-ndk)adb(for device install)
dx serve --platform desktop --no-default-features --features desktopWindows PowerShell:
.\scripts\dev_desktop.ps1macOS / Linux:
./scripts/dev_desktop.shEnvironment variables (required):
ANDROID_HOME(orANDROID_SDK_ROOT) -> Android SDK rootANDROID_NDK_HOME-> NDK root (for example:...\\Sdk\\ndk\\29.0.14206865)JAVA_HOME-> JDK/JBR path
Windows:
.\scripts\build_android.ps1macOS / Linux:
./scripts/build_android.shBoth scripts:
- Run
dx build --platform android --target aarch64-linux-android.
Windows:
.\scripts\deploy_android.ps1macOS / Linux:
./scripts/deploy_android.shThese scripts:
- Ensure Android SDK/NDK environment variables are set or inferred.
- Build the APK.
- Install it to the connected device.
- Launch the app.
Optional:
- Override the launch app ID with
APP_ID(bash) or-AppId(PowerShell).
Google Play requires an Android App Bundle (.aab) for normal release uploads.
Windows:
.\scripts\build_android_bundle.ps1macOS / Linux:
./scripts/build_android_bundle.shThese scripts:
- Build Android release output through Dioxus.
- Run
bundleReleasein the generated Gradle project. - Print the final
.aabpath.
Use the minsize profile.
It enables release build and size-focused Rust settings.
Windows:
.\scripts\build_android.ps1 -Profile minsize
.\scripts\deploy_android.ps1 -Profile minsizemacOS / Linux:
PROFILE=minsize ./scripts/build_android.sh
PROFILE=minsize ./scripts/deploy_android.shPass extra args to dx:
Windows:
.\scripts\build_android.ps1 -DxArgs "--verbose"macOS / Linux:
DX_ARGS="--verbose" ./scripts/build_android.shTarget a different ABI (emulators, etc.):
Windows:
.\scripts\build_android.ps1 -Target x86_64macOS / Linux:
TARGET=x86_64 ./scripts/build_android.sh- Build the Android artifact.
- Find the APK path from the
dx buildoutput (typicallytarget/dx/hear_buds/debug/android/app/app/build/outputs/apk/debug/app-debug.apk). - Install:
adb install -r /path/to/your.apk- Feedback suppression / notch filters.
- Refine calibration -> EQ mapping with real-world tests.
- On-device latency and CPU profiling.
- Solidify Bluetooth input device routing.
- Ensure smooth operation when the screen is locked
- Checklist: docs/release/PUBLISH_CHECKLIST.md
- Release process: docs/release/RELEASE_RUNBOOK.md
- Privacy policy draft: docs/release/PRIVACY_POLICY_TEMPLATE.md
Issues and pull requests are welcome.
Please read:
- CONTRIBUTING.md for setup, coding standards, and required checks.
- CODE_OF_CONDUCT.md for expected behavior in the community.
Short version:
- Keep real-time audio paths fast and safe.
- Keep changes focused.
- Run
cargo fmt,cargo clippy, andcargo checkbefore opening a PR.
GitHub Actions runs:
cargo fmt --checkcargo clippy --no-default-features --features desktopcargo check --no-default-features --features desktopcargo check --target aarch64-linux-android --no-default-features --features mobile
Apache-2.0. See LICENSE.