Help - Search - Members - Calendar
Full Version: Examples of gapless playback: Karma vs iPod
Hydrogenaudio Forums > Lossy Audio Compression > MP3 > MP3 - General
nudel
I've written a page about the problem of gapless album playback on MP3 players.

It has examples which let you see and hear the Karma doing perfect (to my ears) gapless playback with both MP3 and Ogg Vorbis while the iPod utterly fails at gapless playback. The graphs say it all.

http://www.pretentiousname.com/mp3players/

Hopefully this is useful to other people who care about gapless!

But one other thing I hope the people here can do is let me know if I've got anything wrong because I'm sure you guys know a lot more about all this stuff than I do (e.g. about LAME's new nogap stuff). Any corrections or additional information to add to the page would be much appreciated!

Most of all I hope it is a useful demonstration for people who want a portable player that does gapless playback.

This forum seemed the most appropriate place but I'm pretty much just an occasional lurker here until today and I'm sorry if I'm in the wrong place.
ancl
A correction: Foobar200 does not solve the problem with added silence (actually it is not even just silence) by guessing from looking at the data. Instead it uses information stored by the lame encoder, that specifies how much "padding data" is added.
Newer versions of mpg123 (is available as winamp plugin) apperantly does this too...

(With reservation for me having understood this wrong.)
freakngoat
QUOTE
MP3 is a lossy compression. The sound at any point in an MP3 may differ slightly from that in the original wave and if each MP3 file is created independently then there's nothing to stop the waveform at the end of one file being quite different from the waveform at the start of the next one, possibly resulting in a click during playback.


nudel: Unless there was a bug in the encoder, that does not occur or is negligable. MP3 is not gapless because the encoder adds padding to the start and end of the file. It doesn't have to do with MP3 being a lossly format necessarily.

LAME adds a tag that tells exactly how many samples of padding were used at the beginning and end of the file; Foobar2000 reads this tag and removes the exact amount of samples, thus producing seemless playback.

There are plugins that simply remove silent samples at the beginning and end of tracks, and that may be what the Rio Karma player is doing as well. I especially liked the graphs on your page.
spoon
Nice article, I think any player that wants to create universal gapless playback should search the samples removing the silence front and back, then you don't have to have specific encoders writing specific headers.
germanjulian
the creative jukebox zen usb2 fails harshly a well smile.gif


and i dont need ay test cause its so dam obvious laugh.gif
Gabriel
The gap problem is not specific to the mp3 format, it also exists with every frame-based codec (vorbis, wma, mp2, mpc, ac3, aac,...)

However some encoders are storing the delay and padding values with the encoded bitstream. A decoder could then use those values to remove the added silence. So Vorbis or AAC are not more Gapless than MP3.
Gabriel
QUOTE
Nice article, I think any player that wants to create universal gapless playback should search the samples removing the silence front and back, then you don't have to have specific encoders writing specific headers.


Bad idea, as such player would also remove silence that was in the original track.
spoon
Why would anyone want to listen to silence at the beginning or end of a track?
kjoonlee
For sample exact CDDB queries? Perfectly timed copies for burning to CD-R?
David Nordin
intentional artistic value?
spoon
In the context of a player, or more exact a Karma where someone is after gapless playback.

QUOTE
For sample exact CDDB queries?


From my understanding the CDDB identification cannot be calculated on tracks even with exact length, as it is calculated also using the lead in address of the CD.
PoisonDan
QUOTE(David Nordin @ Jan 22 2004, 11:21 AM)
intentional artistic value?

Ditto. If the silence is intentional, it should be preserverd.
danbee
QUOTE(PoisonDan @ Jan 22 2004, 12:45 PM)
QUOTE(David Nordin @ Jan 22 2004, 11:21 AM)
intentional artistic value?

Ditto. If the silence is intentional, it should be preserverd.

Perhaps the player could use some sort of cut off value, so if the silence is less than say 1/10 of a second it gets removed.
nudel
QUOTE(danbee @ Jan 22 2004, 06:43 AM)
Perhaps the player could use some sort of cut off value, so if the silence is less than say  1/10 of a second it gets removed.

I think this is what the Karma does. From the list of changes in the 1.25 firmware:

- Incorporated a "Silence filter", which detects an abrupt drop in level within the last fraction of a second of a track, and trims off anything after that. This enables continuous mix albums to play back more smoothly even if they have not been created by an encoder with a "nogap" option.

I wonder if that means it uses the exact-track-length metadata that encoders like LAME add and only applies the filter if the metadata is missing?

By the way, thanks for all the replies and info! I will update my page soon.

Is it very only recent versions of LAME which add the metadata? The MP3-decoded-and-spliced example on my page was created with a recent LAME (not sure if it was the very latest version or not though). It seems odd to me that there was silence at the end after decoding back to wav. I decoded with RazorLame which I presume just calls LAME on the commandline which I presume can properly decode its own files? (And the wave format doesn't suffer from a fixed frame size or anything stupid, surely?)
NRAninja
Good article nudel. I especially liked it because you use Parabol and Parabola as an example. Those tracks are also my gapless test tracks. I remember air guitaring to those songs while listening to them in MP3 in my friends car. I always remembered to pause for the gap (which was really long on his car mp3 player) laugh.gif
neomoe
QUOTE
I especially liked the graphs on your page.


the graphs are damn nice!

if i were from apple i'd have to think alot about it! ohmy.gif
freakngoat
QUOTE
Perhaps the player could use some sort of cut off value, so if the silence is less than say 1/10 of a second it gets removed.


Yes, this is how I have my Gap Killer plugin in Foobar set, for all my older tracks created with pre-LAME 3.90 and Fraunhofer. However, this plugin also removes silence on post-LAME 3.90 tracks (only when there is intentional silence) but it removes so little its not noticible. I have it set for removable of a maximum of 40ms.

I do agree with Gabriel that this should not occur normally however; it should occur only if the user chooses the option.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.