rodio icon indicating copy to clipboard operation
rodio copied to clipboard

Popping when a "silent" source is appended to a Sink

Open alexheretic opened this issue 1 year ago • 2 comments

I have some music after which I have appended some silence. I noticed this now causes popping sounds. I'm running Linux ~I haven't tested other OSes~ also reproduced the same behaviour running on Windows.

Repro

// [dependencies]
// rodio =  "0.19"
fn main() {
    const MUSIC: &[u8] = include_bytes!("../../rodio/assets/music.ogg");

    let (_stream, handle) = rodio::OutputStream::try_default().unwrap();

    let sink = rodio::Sink::try_new(&handle).unwrap();
    sink.set_volume(0.8);
    sink.append(
        rodio::Decoder::new(Cursor::new(MUSIC))
            .unwrap()
            .skip_duration(Duration::from_secs(60)),
    );
    let silence = rodio::source::Empty::<u16>::new().delay(Duration::from_secs(5));
    sink.append(silence);

    while !sink.empty() {
        println!("pos = {:.1?}", sink.get_pos());
        std::thread::sleep(Duration::from_millis(100));
    }
    println!("done");
}
  • When the music finishes ~9.4 I hear a pop
  • When the "silence" finishes after additional 5s I hear another pop

Expected behaviour

No pops.

Let me know also if there is a better way to do this.

alexheretic avatar Aug 16 '24 19:08 alexheretic

This happens also on Windows.

alexheretic avatar Aug 18 '24 18:08 alexheretic

First off thanks for reporting this!

I cant look into this now (not a lot of time). I to have some time in a month or 2 to look at this.

yara-blue avatar Aug 19 '24 11:08 yara-blue