REACT:Adding Support For Disc Information

From Hydrogenaudio Knowledgebase
Jump to: navigation, search

This page provides code examples to allow you to update your image and track config files to create folders and tags using the @discnumber@, @totaldiscs@ and @discname@ tokens which are provided by default with Synthetic Soul's REACT Mod.

The code used includes settings for TAK, which can be added by following the guide "REACT:Adding Support For TAK". If you do not require TAK support you can either leave this code as-is, or remove any line referring to TAK.

Requirements[edit]

  • A version of REACT which has the Additional Meta Data dialogue, i.e.: Synthetic Soul's REACT Mod.
  • The beta version of metamp3, in order to set the TXXX frame "setsubtitle" for MP3 files, if @discname@ is provided.


REACT-image.cfg[edit]

Add the code below, somewhere at the beginning of your CFG file.

REM ** Create Disc-related tags if we have a set

REM If a disc name has been provided
IF "@discname@" EQU "" GOTO end_discname
SET discName=discname
SET discName=@%discname%@
IF "@discname@" EQU "%discName%" GOTO end_discname

	REM Set tagging switches
	SET Disc_Flac=-T "discname=@discname@"
	SET Disc_Wavpack=-w "discname=@discname@"
	REM SET Disc_MP3=--frame TSST:"@discname@"
	SET Disc_MP3=--frame "TXXX[setsubtitle]:@discname@"
	SET Disc_OggEnc2=-c "discname=@discname@"
	SET Disc_Tak=-t "discname=@discname@"
	SET Disc_Flac_acdir=-T $qdiscname=@discname@$q
	SET Disc_Wavpack_acdir=-w $qdiscname=@discname@"$q
	REM SET Disc_MP3_acdir=--frame TSST:$q@discname@$q
	SET Disc_MP3_acdir=--frame $qTXXX[setsubtitle]:@discname@$q
	SET Disc_OggEnc2_acdir=-c $qdiscname=@discname@$q
	SET Disc_Tak_acdir=-t $qdiscname=@discname@$q

	REM Add disc name to image and track folder paths
	SET imageDir=%imageDir%\$discname$
	SET trackDir=%trackDir%\$discname$

	GOTO :end_discnumber

:end_discname

REM Ensure that we have numeric values
SET /A discNumber = @discnumber@ + 0
SET /A totalDiscs = @totaldiscs@ + 0

REM IF a valid disc number and total number of discs has been provided
IF %totalDiscs% LEQ 1 GOTO :end_discnumber
IF %discNumber% LEQ 0 GOTO :end_discnumber

	REM Set tagging switches
	SET Disc_Flac=-T "discnumber=@discnumber@" -T "totaldiscs=@totaldiscs@"
	SET Disc_Wavpack=-w "discnumber=@discnumber@" -w "totaldiscs=@totaldiscs@"
	SET Disc_MP3=--frame TPOS:"@discnumber@/@totaldiscs@"
	SET Disc_NeroAac=--disk "@discnumber@/@totaldiscs@"
	SET Disc_OggEnc2=-c "discnumber=@discnumber@" -c "totaldiscs=@totaldiscs@"
	SET Disc_Tak=-t "discnumber=@discnumber@" -t "totaldiscs=@totaldiscs@"
	SET Disc_Flac_acdir=-T $qdiscnumber=@discnumber@$q -T $qtotaldiscs=@totaldiscs@$q
	SET Disc_Wavpack_acdir=-w $qdiscnumber=@discnumber@$q -w $qtotaldiscs=@totaldiscs@$q
	SET Disc_MP3_acdir=--frame TPOS:$q@discnumber@/@totaldiscs@$q
	SET Disc_NeroAac_acdir=--disk $q@discnumber@/@totaldiscs@$q
	SET Disc_OggEnc2_acdir=-c $qdiscnumber=@discnumber@$q -c $qtotaldiscs=@totaldiscs@$q
	SET Disc_Tak_acdir=-t $qdiscnumber=@discnumber@$q -t $qtotaldiscs=@totaldiscs@$q

	REM Add disc number to image and track folder paths
	SET imageDir=%imageDir%\Disc @discnumber@
	SET trackDir=%trackDir%\Disc @discnumber@

:end_discnumber

The code below uses the FLAC image section to demonstrate the use of the %imageDir% and %Disc_Flac% variables. You will need to amend the other sections accordingly.

IF NOT @ImageExt@==flac GOTO end_flac_image
	SET dest="@ImageDir_Flac@%imageDir%"
	IF NOT EXIST %dest% MKDIR %dest%
	IF %embed_cover%==1 SET Cover_tag=--picture="|image/jpeg|||@cover@"
	@tools@\flac.exe @Opt_Flac@ %RG_Flac% %Cover_tag% %Disc_Flac% -T "%ArtistField%=@cdartist@" -T album="@album@" -T totaltracks="@numtracks@" -T date="@year@" -T genre="@genre@" -T comment="@comment@" -T encoded-by="%USERNAME%" -T encoding="Flac @Ver_Flac@ @Opt_Flac@" --tag-from-file="cuesheet=@cuesheet@" --tag-from-file="eaclog=@eaclog@" "@source@" -o "@image@"
	MOVE /Y "@image@" %dest%
	MOVE /Y "@cuesheet@" %dest%
	IF %have_cover%==1 COPY /Y "@cover@" %dest%\"@basename@.jpg"
:end_flac_image

The code below uses the FLAC tracks section to demonstrate the use of the %trackDir% and %Disc_Flac_acdir% variables. You will need to amend the other sections accordingly.

IF NOT @Flac@==1 GOTO end_flac_tracks
	SET dest="@TrackDir_Flac@%trackDir%"
	IF NOT EXIST %dest% MKDIR %dest%
	PUSHD %dest%
		IF @various@==1 SET VA_tag=-T $qalbum artist=@VA@$q
		IF %embed_cover%==1 SET Cover_tag=--picture=$#x
		@tools@\acdir.exe --overwrite --output "%TrackName%.flac" --extra-opt "|image/jpeg|||@cover@" --pipe "TITLE $n/$N flac $#T & @tools@\flac.exe @Opt_Flac@ %Cover_tag% %VA_tag% %Disc_Flac_acdir% -T artist=$#a -T album=$#T -T title=$#t -T tracknumber=$n/$N -T date=$q@year@$q -T genre=$q@genre@$q -T comment=$q@comment@$q -T encoded-by=$q%USERNAME%$q -T encoding=$qFlac @Ver_Flac@ @Opt_Flac@$q - -o $#o" "@sourcecuesheet@"
		IF %add_rg%==1 @tools@\Glob.exe -v -c @tools@\metaflac.exe %RG_MetaFlac% *.flac
		COPY /Y "@eaclog@" "EAClog.txt"
		IF %have_cover%==1 COPY /Y "@cover@" "folder.jpg"
		IF EXIST "@albumfile@.[*].cue" COPY /Y "@albumfile@.[*].cue" .
	POPD
:end_flac_tracks


REACT-track.cfg[edit]

Remove the lines:

SET TrackDir_Flac="@TrackDir_Flac@"
SET TrackDir_Wavpack="@TrackDir_Wavpack@"
SET TrackDir_MP3="@TrackDir_MP3@"
SET TrackDir_AAC="@TrackDir_AAC@"
SET TrackDir_OGG="@TrackDir_OGG@"

... and replace them with the code below:

REM ** Create Disc-related tags if we have a set

REM If a disc name has been provided
IF "@discname@" EQU "" GOTO end_discname
SET discName=discname
SET discName=@%discname%@
IF "@discname@" EQU "%discName%" GOTO end_discname

	REM Set tagging switches
	SET Disc_Flac=-T "discname=@discname@"
	SET Disc_Wavpack=-w "discname=@discname@"
	REM SET Disc_MP3=--frame TSST:"@discname@"
	SET Disc_MP3=--frame "TXXX[setsubtitle]:@discname@"
	SET Disc_OggEnc2=-c "discname=@discname@"
	SET Disc_Tak=-t "discname=@discname@"

	REM Add disc name to folder path
	SET trackDir=%trackDir%\$discname$

	GOTO :end_discnumber

:end_discname

REM Ensure that we have numeric values
SET /A discNumber = @discnumber@ + 0
SET /A totalDiscs = @totaldiscs@ + 0

REM IF a valid disc number and total number of discs has been provided
IF %totalDiscs% LEQ 1 GOTO :end_discnumber
IF %discNumber% LEQ 0 GOTO :end_discnumber

	REM Set tagging switches
	SET Disc_Flac=-T "discnumber=@discnumber@" -T "totaldiscs=@totaldiscs@"
	SET Disc_Wavpack=-w "discnumber=@discnumber@" -w "totaldiscs=@totaldiscs@"
	SET Disc_MP3=--frame TPOS:"@discnumber@/@totaldiscs@"
	SET Disc_NeroAac=--disk "@discnumber@/@totaldiscs@"
	SET Disc_OggEnc2=-c "discnumber=@discnumber@" -c "totaldiscs=@totaldiscs@"
	SET Disc_Tak=-t "discnumber=@discnumber@" -t "totaldiscs=@totaldiscs@"

	REM Add disc number to folder path
	SET trackDir=%trackDir%\Disc @discnumber@

:end_discnumber


SET TrackDir_Flac="@TrackDir_Flac@%trackDir%"
SET TrackDir_Wavpack="@TrackDir_Wavpack@%trackDir%"
SET TrackDir_MP3="@TrackDir_MP3@%trackDir%"
SET TrackDir_AAC="@TrackDir_AAC@%trackDir%"
SET TrackDir_OGG="@TrackDir_OGG@%trackDir%"
SET TrackDir_Tak="@TrackDir_Tak@%trackDir%"

The code below uses the FLAC section to demonstrate the use of the %Disc_Flac% variable. You will need to amend the other sections accordingly.

IF NOT @Flac@==1 GOTO end_flac_tracks
	IF NOT EXIST %TrackDir_Flac% MKDIR %TrackDir_Flac%
	PUSHD %TrackDir_Flac%
		IF @various@==1 SET VA_tag=-T "album artist=@VA@"
		IF %embed_cover%==1 SET Cover_tag=--picture="|image/jpeg|||@cover@"
		ECHO ON
		@tools@\flac.exe @Opt_Flac@ %Cover_tag% %VA_tag% %Disc_Flac% -T artist="@artist@" -T album="@album@" -T tracknumber="@track@/@numtracks@" -T title="@title@" -T date="@year@" -T genre="@genre@" -T comment="@comment@" -T encoded-by="%USERNAME%" -T encoding="Flac @Ver_Flac@ @Opt_Flac@" "@source@" -o "%TrackName%.flac"
		@ECHO OFF
		IF %have_cover%==1 IF NOT EXIST folder.jpg COPY "@cover@" folder.jpg
	POPD
:end_flac_tracks


%imageDir% and %trackDir%[edit]

You may note that I use lines like:

SET imageDir=%imageDir%\$discname$

when I could use:

SET imageDir=\$discname$

This is simply so that the same technique could be used in other sections, before or after the section, all moving toward creating a variable that extends the base path. Using this technique all sections can append, or prepend, to %imageDir% and %trackDir% harmoniously.

For example, I might add another section, before these sections, to deal with an @albumsubtitle@ token. This section may end up setting:

SET imageDir=%imageDir% ($albumsubtitle$)

which could result in:

($albumsubtitle$)\Disc @discnumber@


Related Thread[edit]

This tip is a result of Synthetic Soul's dogged pursuit of a method to pass additional meta data into the REACT config files. This particular method was first documented in this post in the REACT 2 thread.