Skip silence and internal decoder cause stuttering and skipped beats

Issue description:

When “Prefer internal decoder” and “Skip silence (All)” are enabled, songs sound a bit garbled or seem to stutter, and beats get obviously audibly missed. Turning off “Prefer internal decoder” solves the problem for me (although it makes seeking take a long time). Turning off “Skip silence (All)” also solves the problem for me. Most of my music is “lame -V2” (~190 kbps VBR) encoded.

My uploaded debug log corresponds to (if I’m remembering right):

  1. With both “Skip silence (All)” and “Prefer internal decoder” on, I played the first 10 seconds of the song, “No Workin”, by Alific, which I’m providing along with the log. I heard it skip multiple beats.

  2. I tried all other combinations in some order I don’t now remember, of “Skip silence (All)” on, “Prefer internal decoder” off, of “Skip silence (All)” off, “Prefer internal decoder” on, and I think of “Skip silence (All)” off, “Prefer internal decoder” off. Each time I seek back to the beginning of the song by dragging, I listened to the first 10 seconds, and it sounded fine.

Logs:

Upload description: zachcallear

Additional information:

 

 

Reproduction steps:

 
(already included in main description)
 

Media provider:

Subsonic

Screenshots:

     

I did some more testing (all via playback through Navidrome, all skipping silence and using internal decoder):

  • If I decode the original test MP3 file to WAV via ffmpeg, and then encode it to FLAC, it sounds fine in Symfonium.

  • If I decode that resulting FLAC file to WAV, and then encode it with LAME 3.100 via “lame -V2 song.wav” (so MP3 to FLAC to MP3), it sounds fine in Symfonium.

  • The original file continues to skip beats. Its encoder was “LAME3.98r”, and its encoding settings were “-m j -V 0 -q 0 -lowpass 19.5 --vbr-new -b 32”, according to MediaInfo, so presumably it was just “lame -V0 song.wav” originally, on LAME 3.98r.

I’ll do a bit more experimenting to see if this affects all of my LAME 3.98r VBR music specifically.

Well skip silence does skip all silences as it’s name says it’s not meant to be used with music.

You are facing some rounding issues in the decoding due to the lowpass filter and those skipped parts are seen as silent.

Don’t use skip silence for music or use higher quality media.

I did some more testing. It also fails on files encoded as follows:

  • LAME3.99r “-m j -V 2 -q 0 -lowpass 18.5 --vbr-new -b 32” (LAME 3.99r with -V2 VBR)

  • LAME3.99r “-m j -V 4 -q 3 -lowpass 17 -b 128” (LAME 3.99r with 128 kbps CBR)

Ah, alright. I thought it was like gapless playback, lol. Does Symfonium support gapless playback? It’s also odd that it works fine with the same exact songs, decoded and then re-encoded, which leads me to believe the low-pass filter is not the specific issue.

Yes it’s enabled by default and automatic. But it’s rare to have proper gapless encoding in low quality VBR files.

I take mild offense to your saying “LAME -V2” is low-quality. It was the scene standard for a long time. It’s literally a synonym for the old " --alt-preset standard" LAME preset. Hydrogenaudio calls even “-V3” “very high quality” and says they “normally produce transparent results”. LAME has been encoding things as gapless by default for eternity, also.

To each their own, but 320 CBR is not strictly “better” than LAME -V2 VBR; it just wastes more bits.

And the video scene standard was 720p 650mb file for as long, but then it moved on with technology.

V3 with lowpass at 128 is not high quality by any modern standard, even my old ears can easily spot the difference.

That doc talks about V 3 at 175 without lowpass and even then on many kind of media the difference with v0 is audible.

“-V3” by itself is not 128. It’s ~175 kbps. I don’t go below “-V2” (~190 kbps), though. I do happen to have some stray ancient 128 kbps files around, though.

If you’re hearing the difference between FLAC 44,100 16-bit and LAME -V0, or even between FLAC 44,100 16-bit and LAME -V2, then you have superpowers.

Either way, LAME records gapless information, so your player should ideally support it, but I haven’t tested that angle specifically; I did notice there seemed to be gaps until I started using “Skip silence”. I’ll investigate that issue separately, as it is indeed separate from this.

FWIW, gapless playback works perfectly, even with my older, LAME 3.99r -V2 MP3 files. I sometimes mix gapless up with skipping leading/trailing silence, but those are not the same thing.

I perfectly know and that’s what I wrote above … I was referring to the encoding specs you gave that are 128 with lowpass :wink:

And no again if you read correctly I’m saying that i can easily spot the diff between v3 lowpass 128 and v 0 …

Anyway your issue is normal skip silence does skip silence as it’s name says.

1 Like

lame -V 4 -b 128 actually specifies 128 kbps as the minimum bitrate for VBR encoding. So you are both wrong :wink:

I just encoded a file with LAME 3.100 via “lame -b 128 song.wav”, the output is 128 kbps CBR, and MediaInfo shows “-m j -V 4 -q 3 -lowpass 17 -b 128”. Using “-V 2” results in “-m j -V 2 -q 0 -lowpass 18.5 --vbr-new -b 32”. Using “-V 0” results in “-m j -V 0 -q 0 -lowpass 22.1 --vbr-new -b 32”. Using “-b 320” results in “-m j -V 4 -q 3 -lowpass 20.5”.

Interesting… the lame manual is very clear:

When used with variable bitrate encodings (VBR), -b specifies the
minimum bitrate to use. This is useful only if you need to circumvent
a buggy hardware device with strange bitrate constrains.

and also

Constant Bit Rate (CBR)
-b n [meaning] set bitrate

–preset cbr number [meaning] -b number

That the sole -b 128, which should result in a CBR file is translated into -V 4 ... -b 128 then seems curious.

I’ve been confused in seeing that over the years, too, and I agree with you that it doesn’t seem to match the documentation, but it is what it is.