[Abcde-users] Apparently unconsistent handling of LEADOUT (CD-ROM drive vs. single-track flac file with embedded cuesheet)
Nicolas Boullis
nboullis at debian.org
Sun Jan 12 23:07:37 GMT 2020
Hi,
I have a CD that I am willing to archive as a single-track flac file and
encode into MP3/vorbis files.
Usually, I do first archive the disc and then use the archive to encode
it into MP3/vorbis files.
When I ran “abcde -1 -o flac -a default,cue -B”, abcde found my disc in
musicbrainz and everything went fine.
But then, when I ran “abcde -o mp3,vorbis -a default,playlist -d
my_disc.flac”, abcde failed to find my disc in musicbrainz.
I wanted to investigate and ran “abcde -VV -a cddb” with both the disc
and the archive. With the disc, I got the following:
makeids: PREGAP 32, LEADIN 150, LEADOUT 228585
while, with the archive, I got:
makeids: PREGAP 32, LEADIN 150, LEADOUT 228617
You can see that the LEADOUT values differ by 32, which is the PREGAP
value.
So I started reading abcde’s do_discid function.
When reading from a flac file, it gets the number of samples of the flac
file from the “REM FLAC__lead-out” line of its embedded cuesheet,
divides it by the number of samples per frame (588 = 44100/75) to get
the LBA of the LEADOUT. If there is a pregap before the start of the
first track, it is included in the flac file, so the LEADOUT already
accounts for that pregap.
On the other hand, when reading from a CD-ROM drive, abcde uses
“cdparanoia -Q --verbose” to get the toc of the disc, and uses the
“TOTAL” line as LEADOUT. But this is the sum of the lengths of the
tracks, which does not account for the pregap.
Then in its “makeids” function, abcde calls “abcde-musicbrainz-tool
--command calcid” with “$(($PREGAP + $LEADOUT))” as the lead-out sector.
As I understand it, this is right when reading from a CD-ROM file, but
wrong when reading from a flac file.
I think it would be better not to add the number of pre-gap sectors to
the lead-out sector number in the “makeids” function, and change the
computation of the LEADOUT value if the “do_discid” function when
reading from a CD-ROM drive to account for the pregap.
I may write a patch for this but, before I do, I’d rather gather
opinions on this.
For what it’s worth, my system is running Debian Stretch, with abcde and
libwebservice-musicbrainz-perl from Debian Buster. Feel free to ask for
more information if you think some important information is missing in
my e-mail.
Cheers,
--
Nicolas Boullis
More information about the Abcde-users
mailing list