Skip to content

Commit 51a644f

Browse files
authored
Copy Hidden Track One Audio if found
New feature to copy Hidden Track One Audio (HTOA), if it exists. Not all optical drives can read HTOA. Defaults to off. Resolves #5
1 parent 6e7795e commit 51a644f

File tree

7 files changed

+947
-856
lines changed

7 files changed

+947
-856
lines changed

Makefile

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
abcde_version = abcde-2.11.0
1+
abcde_version = abcde-2.11.1
22
INSTALL = /usr/bin/install -c
33

44
prefix = /usr/local

README

+3
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,9 @@ MAJOR CHANGES
2727

2828
(see changelog for more details)
2929

30+
Changes in 2.11.1
31+
* New feature: read Hidden Track One Audio if found
32+
3033
Changes in 2.11.0
3134

3235
* Updates to FLAC comment tags - Comments are being seperated to User, Disc

README.md

+8-7
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# Introduction
22
This is a fork of [abcde](https://abcde.einval.com/wiki/):
33
> abcde version 2.9.3 is the most recent download and was released on February 5th 2019.
4+
The starting point for this repository was [2.9.4-DEV](https://git.einval.com/git/abcde.git) with the last commit dated 2021-02-14.
45

5-
I've ripped many hundreds of CD's with abcde and wanted to fix some bugs and have a go at some enhancements - now up to version 2.11.0 released on April 13th 2025.
6+
I've ripped many hundreds of CD's with abcde and wanted to fix some bugs and have a go at some enhancements - now up to version 2.11.1 released on April 26th 2025.
67

78
My ripping objective is to create lossless music tracks (flac) for listening and also to record as much information from the read process as possible for archival posterity, such as TOC, cue sheet, CD-TEXT, enhanced CD directory listing, media read progress/status/errors and metadata downloaded. Ideally the info should be stored in the audio file metadata.
89

@@ -58,19 +59,19 @@ Your feedback is very welcome. Please open an issue or pull request and I will l
5859
- Download the latest package or source code from: https://github.com/poddmo/abcde/releases/latest
5960
## Package Installation
6061
```
61-
wget https://github.com/poddmo/abcde/releases/download/2.11.0/abcde_2.11.0-1_all.deb
62-
dpkg -i abcde_2.11.0-1_all.deb
62+
wget https://github.com/poddmo/abcde/releases/download/2.11.1/abcde_2.11.1-1_all.deb
63+
dpkg -i abcde_2.11.1-1_all.deb
6364
```
6465

6566
## Source Installation
6667
Download the source, extract it, create a package from it and then install your fresh package:
6768
```
68-
wget -O abcde_2.11.0.tar.gz https://github.com/poddmo/abcde/archive/refs/tags/2.11.0.tar.gz
69-
tar zxf abcde_2.11.0.tar.gz
70-
cd abcde-2.11.0
69+
wget -O abcde_2.11.1.tar.gz https://github.com/poddmo/abcde/archive/refs/tags/2.11.1.tar.gz
70+
tar zxf abcde_2.11.1.tar.gz
71+
cd abcde-2.11.1
7172
dpkg-buildpackage -us -uc --build=binary
7273
cd ..
73-
dpkg -i abcde_2.11.0-1_all.deb
74+
dpkg -i abcde_2.11.1-1_all.deb
7475
```
7576

7677
# Testing

abcde

+46-8
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# with this program; if not, write to the Free Software Foundation, Inc.,
1212
# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
1313

14-
VERSION='2.11.0'
14+
VERSION='2.11.1'
1515

1616
usage ()
1717
{
@@ -1120,7 +1120,7 @@ do_tag ()
11201120
*) echo COMMENT="$USERCOMMENT";;
11211121
esac
11221122
fi
1123-
# use extended disc info for a FLAC comment tag
1123+
# use CDDB extended disc info for a FLAC comment tag
11241124
DISCCOMMENT="$(getcddbinfo DISC-INFO | munge_collapsewhitespace )"
11251125
if [ -n "$(eval echo '${DISCCOMMENT}')" ]; then
11261126
vecho DISCCOMMENT is "${DISCCOMMENT}" >&2
@@ -1129,7 +1129,15 @@ do_tag ()
11291129
*) echo COMMENT="$DISCCOMMENT";;
11301130
esac
11311131
fi
1132-
# use extended track info for a FLAC comment tag
1132+
# abcde generated track comment, eg hidden track notice
1133+
if [ -n "$(eval echo '${ABCDECOMMENT}')" ]; then
1134+
vecho ABCDECOMMENT is "${ABCDECOMMENT}" >&2
1135+
case "$ABCDECOMMENT" in
1136+
*=*) echo "$ABCDECOMMENT";;
1137+
*) echo COMMENT="$ABCDECOMMENT";;
1138+
esac
1139+
fi
1140+
# use CDDB extended track info for a FLAC comment tag
11331141
COMMENTOUTPUT="$(getcddbinfo TRACK-INFO | munge_collapsewhitespace )"
11341142
if [ -n "$(eval echo '${COMMENTOUTPUT}')" ]; then
11351143
vecho COMMENTOUTPUT is "${COMMENTOUTPUT}" >&2
@@ -1983,6 +1991,7 @@ do_playlist ()
19831991
CDDBTRACKNUM=$(expr $UTRACKNUM - 1) # Unpad
19841992
getcddbinfo TRACKNAME
19851993
splitvarious
1994+
if [ "$UTRACKNUM" = "00" ]; then TRACKNAME="Hidden Track" ; fi
19861995
TRACKFILE="$(mungetrackname "$TRACKNAME")"
19871996
ARTISTFILE="$(mungeartistname "$TRACKARTIST")"
19881997
ALBUMFILE="$(mungealbumname "$DALBUM")"
@@ -2177,7 +2186,7 @@ abcde.mkcue () {
21772186
printf " TRACK %02i AUDIO\n" $i
21782187
if [ "$i" -eq 1 ] && [ "$1" -ne 150 ] ; then
21792188
if [ "$MODE" = PREGAP ] ; then
2180-
echomsf " PREGAP " $(($"OFFSET" - 150))
2189+
echomsf " PREGAP " $(("$OFFSET" - 150))
21812190
else
21822191
echo " INDEX 00 00:00:00"
21832192
fi
@@ -2338,7 +2347,7 @@ do_discid ()
23382347
log info "The disc does not contain any tracks. Giving up..."
23392348
exit 0
23402349
fi
2341-
echo -n "Grabbing entire CD - tracks: "
2350+
echo -n "Grabbing entire CD - "
23422351
if [ ! "$PADTRACKS" = "y" ] ; then
23432352
TRACKNUMPADDING=$(echo -n $TRACKS | wc -c | tr -d ' ')
23442353
fi
@@ -2351,7 +2360,22 @@ do_discid ()
23512360
TRACKQUEUE="$TRACKQUEUE $PT"
23522361
X=$(($X + 1))
23532362
done
2354-
echo "$TRACKQUEUE"
2363+
2364+
# if the pregap to track1 > 150 frames (2 Secs) then there is probably Hidden Track One Audio (HTOA)
2365+
# cdparanoia can rip it by specifying track zero.
2366+
if [ "$CDROMREADERSYNTAX" = "cdparanoia" ] ; then
2367+
if [ "${READHIDDENTRACK:-n}" = "y" ]; then
2368+
X=$(echo "$CDPARANOIAOUTPUT" | awk '$1=="1." {if ($4 > 150) print "y"; else print "n"};')
2369+
if [ "$X" = "y" ]; then
2370+
# hidden track exists so prepend it to TRACKQUEUE
2371+
echo -n 'Hidden track found - ' >&2
2372+
X=$(printf "%0.${TRACKNUMPADDING}d" 0)
2373+
TRACKQUEUE=$(echo $X $TRACKQUEUE)
2374+
fi
2375+
fi
2376+
fi
2377+
2378+
echo "Tracks queued: $TRACKQUEUE"
23552379
else
23562380
TRACKS=$(echo "$CDDBTRACKINFO" | cut -f2 -d' ')
23572381
# User-supplied track queue.
@@ -3736,7 +3760,10 @@ do_cdread ()
37363760
if [ "$1" = "onetrack" ]; then
37373761
echo "Grabbing ${PIPE_MESSAGE}tracks $UTRACKNUM - $LASTTRACK as one track ..." >&2
37383762
else
3739-
if [ -r "$CDDBDATA" ]; then
3763+
if [ "$UTRACKNUM" = "00" ]; then
3764+
TRACKNAME="Hidden Track"
3765+
echo "Grabbing ${PIPE_MESSAGE}track $UTRACKNUM: $TRACKNAME..." >&2
3766+
elif [ -r "$CDDBDATA" ]; then
37403767
getcddbinfo TRACKNAME
37413768
echo "Grabbing ${PIPE_MESSAGE}track $UTRACKNUM: $TRACKNAME..." >&2
37423769
else
@@ -3753,6 +3780,8 @@ do_cdread ()
37533780
cdparanoia|libcdio)
37543781
if [ "$USEPIPES" = "y" ]; then
37553782
nice $READNICE $CDROMREADER -"$CDPARANOIACDROMBUS" "$CDROM" "${READTRACKNUMS:-$UTRACKNUM}" "$FILEARG"
3783+
elif [ "$UTRACKNUM" = "00" ]; then
3784+
nice $READNICE $CDROMREADER -Z -"$CDPARANOIACDROMBUS" "$CDROM" "${READTRACKNUMS:-$UTRACKNUM}" "$FILEARG" >&2
37563785
else
37573786
nice $READNICE $CDROMREADER -"$CDPARANOIACDROMBUS" "$CDROM" "${READTRACKNUMS:-$UTRACKNUM}" "$FILEARG" >&2
37583787
fi
@@ -4017,6 +4046,7 @@ NOCDDBQUERY=n
40174046
FLACTAGSTARTCASE=n
40184047
FLACTAGALBUMARTISTTAGNAME="ALBUMARTIST"
40194048
FLACTAGALBUMARTISTVALUE="Various Artists"
4049+
READHIDDENTRACK=n
40204050

40214051
# If using scsi devices, cdda2wav/icedax needs a CDROMID, instead of a device node
40224052
# i.e. CDROMID="1,0,0"
@@ -5670,7 +5700,12 @@ do
56705700
## FIXME ## Add here
56715701
## run_command "tagtrack-$OUTPUT-$1" $METAFLAC $METAFLACOPTS ${IMPORTCUESHEET:+--import-cuesheet-from="${ABCDETEMPDIR}/$CUEFILE"} --import-tags-from=- "${ABCDETEMPDIR}/track$1.$FLACOUTPUTCONTAINER"
56725702
# Set TRACKNUM, TRACKNAME
5673-
if [ -e "$CDDBDATA" ]; then
5703+
if [ "$UTRACKNUM" = "00" ]; then
5704+
# hidden track one audio
5705+
TRACKNAME="Hidden Track"
5706+
TRACKARTIST="$DARTIST"
5707+
ABCDECOMMENT="Hidden Track One Audio"
5708+
elif [ -e "$CDDBDATA" ]; then
56745709
if [ "$ONETRACK" = "y" ]; then
56755710
TRACKNAME="$DALBUM"
56765711
TRACKNUM="$FIRSTTRACK"
@@ -5719,6 +5754,9 @@ do
57195754
fi
57205755
fi
57215756
) &
5757+
5758+
# Clean up our abcde track comments
5759+
unset ABCDECOMMENT
57225760
done
57235761

57245762

abcde.1

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.TH abcde 1 "13 April 2025" "abcde 2.11.0"
1+
.TH abcde 1 "26 April 2025" "abcde 2.11.1"
22
.SH NAME
33
abcde \- Grab an entire CD and compress it to Ogg/Vorbis, MP3, FLAC, Ogg/Speex, AAC,
44
WavPack, Monkey's Audio (ape), MPP/MP+(Musepack), True Audio (tta), MP2 format
@@ -556,6 +556,10 @@ playlists, etc.
556556
If set, the resulting playlist will have CR-LF line endings, needed by some
557557
hardware-based players.
558558
.TP
559+
.B READHIDDENTRACK
560+
If your CD drive can read into the pregap of track 1 then set this to y to
561+
copy Hidden Track One Audio (HTOA), if it exists. (Currently only used with cdparanoia)
562+
.TP
559563
.B FLACTAGSTARTCASE
560564
If set to y, artist name, album title and track title FLAC tags will be
561565
piped through the munge_Startcase function so all words begin with a capital

abcde.conf

+9-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1-
# System defaults for abcde version 2.11.0
1+
# System defaults for abcde version 2.11.1
22
# Nothing in this file is uncommented by default.
33
#
44
# If you wish to override these system-wide settings, create your own
55
# .abcde.conf file in your home directory.
66

77
# Explicitly define the locale character encoding to get consistency across
8-
# the various utilities
9-
#export LC_ALL=en_AU.UTF-8
8+
# the various utilities. Be sure to update this to your locale.
9+
# Use the locale command to find your current settings.
10+
#export LC_ALL=en_US.UTF-8
1011

1112
# CDDB options
1213

@@ -138,6 +139,11 @@
138139
#READNICE=10
139140
#DISTMP3NICE=10
140141

142+
# Copy Hidden Track One Audio (HTOA) if it exists.
143+
# If your CD drive can read into the pregap of track 1 then set this to y:
144+
# (Currently only used with cdparanoia)
145+
#READHIDDENTRACK=n
146+
141147
# Paths of programs to use
142148

143149
# Encoders:

0 commit comments

Comments
 (0)