Skip to content

feat: add Buffer and Threshold sliders for Skip Silence on Android - #357

Open
danieljrich wants to merge 1 commit into
pounat:mainfrom
danieljrich:feature/skip-silence-controls
Open

feat: add Buffer and Threshold sliders for Skip Silence on Android#357
danieljrich wants to merge 1 commit into
pounat:mainfrom
danieljrich:feature/skip-silence-controls

Conversation

@danieljrich

@danieljrich danieljrich commented Aug 22, 2026

Copy link
Copy Markdown

Closes #364

Summary

Adds configurable Buffer (padding) and Threshold (dB cutoff) sliders when Skip Silence is enabled on Android.

Why

The default ExoPlayer 20 ms silence padding was cutting off word-initial unvoiced consonants (s, th, f, p) and trailing syllables on some audiobooks. Allowing users to adjust the buffer (0–200 ms, default 20 ms) and threshold (-50 to -20 dB, default -30 dB) resolves word clipping while keeping silence skipping fast and natural.

Key Changes

  • Native Android pipeline: Slim wrapper (AbsorbSilenceAudioProcessor) delegating directly to Media3's SilenceSkippingAudioProcessor with on-the-fly parameter updates.
  • Audio pipeline bridge: Static AbsorbSilenceController mirroring the established MonoController pattern.
  • UI Sliders: Reuses _EffectRow in the Equalizer sheet with default position indicator tick marks:
    • Buffer: 0 ms – 200 ms (default: 20 ms)
    • Threshold: -50 dB – -20 dB (default: -30 dB)
  • Persistence & Backup: Integrated into scoped preferences and backup/restore.

Testing

  • Tested on Android with live run and release build.
  • Verified slider adjustments immediately update audio playback in real-time.
  • Verified per-book EQ overrides and reset button work as expected.
skip_silence_demo.mp4

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Configurable Buffer and Threshold sliders for Skip Silence on Android

1 participant