Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: New tool: React - [Run EAC Tasks] (Read 288616 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

New tool: React - [Run EAC Tasks]

Reply #450

Any ideas? Thanks.

The following script will encode LAME -V2 MP3 track files with ID3v1 + ID3v2 tags. The MP3s are then Album Gained with mp3gain.exe which also stores the RG info as APEv2.0 tags in the MP3s, so that it is possible to change from Album Gain to Track Gain in fb2k or for undoing the gain process completely. When playing the MP3s in a portable player that dosen't support RG, then the MP3s will be played Album Gained. Also there is added a "TOTALTRACKS" APEv2.0 tag to the MP3s. I would recommend that after the ripping and encoding has finished, then load the MP3s into fb2k and rewrite the tags as ID3v1 + ID3v2, so that the APEv2.0 tags are converted to ID3v2 tags and deleted afterwards, but that's of course up to you...

@Martin H
After reading some posts here I decided to not use APE tags at all.

I wonder if I should make a simpler version of REACT which only supports image extraction (F10), and only have one configuration script, where you can pick and choose from making:

- flac or wavpack image, or tracks with ACDIR
- mp3, ogg, and aac tracks with ACDIR.

I don't see any good reason for making images in lossy formats, although it would be easy enough to add.

The only slight problem with this approach is to add both album and track replaygain tags in an efficient way. Albumgain, which is by far the most important, can be calculated once with WAVEGAIN from the wav image, and applied to all the compressed files in various ways, though.

@tycho
I'm still a bit confused by all the different RG options but seemingly this idea does sound better. When I look at what the TRACK configs do (what I can follow anyway) I don't see a lot of advantage to using REACT if you just want one format.

New tool: React - [Run EAC Tasks]

Reply #451
Is there a way to integrate ID3v2.3 tags into the FLAC files ripped by EAC & REACT? The default FLAC_MP3-tracks.txt file uses tag.exe to write ID3v1 tags into the FLAC and MP3 files. The config file quoted above uses LAME's --add-id3v2 --pad-id3v2 flags to write ID3v2.3 tags to MP3 files. I also need to include ID3v2.3 tags on my FLAC files in case I need to use them to recreate my MP3 collection. Does anyone have an EAC/REACT config file for ripping tracks to FLAC and MP3 formats using ID3v2.3 tags for both formats?
Do you mean Vorbis comments?  FLAC files should not be tagged with ID3v2.

You should use Vorbis comments, which Tag will write (if compiled with the FLAC libraries), but ID3v1 may be used.  Here's the FLAC FAQ on the subject.

In conclusion: you are confused, using Tag to write the comments will result in FLAC tags/Vorbis comments.  Using an application like foobar or dbPowerAmp will allow you to transfer frome FLAC with Vorbis comments to MP3 with ID3v2.
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #452
Do you mean Vorbis comments?  FLAC files should not be tagged with ID3v2.

You should use Vorbis comments, which Tag will write (if compiled with the FLAC libraries), but ID3v1 may be used.  Here's the FLAC FAQ on the subject.

In conclusion: you are confused, using Tag to write the comments will result in FLAC tags/Vorbis comments.  Using an application like foobar or dbPowerAmp will allow you to transfer frome FLAC with Vorbis comments to MP3 with ID3v2.

Sorry for my ignorance. I am new to FLAC, Ogg Vorbis, REACT, and EAC. I have now researched this area and understand that FLAC files are tagged with Vorbis comments. Thanks.

New tool: React - [Run EAC Tasks]

Reply #453
No need to apologise.

As I say, the conversion from FLAC with Vorbis comments to MP3 with ID3v2 should not be an issue, and Vorbis comments are flexible enough to allow you to store any (text) info that you may need to store.
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #454
Synthetic soul,
I used your TEST-tracks.txt file on the Sheryl Crow album and everything worked fine. The log file showed everything going to the right directory. Next, I tested this album with FLAC_MP3-tracks.txt. To my surprise, everything works fine with this album today. For the life of me, I can't figure out what changed between yesterday and today. Today, all the tracks end up in the right folders and all the WAV to FLAC and MP3 conversions work successfully.

Anyway, thanks for your help. The TEST-tracks.txt file will definitely come in handy for future troubleshooting.

atulc

There appears to be an intermittent various-artist bug lurking around somewhere in the REACT code. Just as the above various-artist CD was being parsed incorrectly one day and it worked fine the next, I now experienced the same issue with another various-artist album. When I first ripped the VA CD "The Romantics - A Windham Hill Sampler," it created directories TrackArtist\AlbumTitle for each track instead of one Various\AlbumTitle directory. Next I used the TEST-tracks.txt config to document the behaviour. The resulting log is shown below. On EAC, the CDArtist shows as Various and the "Various Artists" checkbox is checked. However, REACT does not recognize this as a various-artists CD. For each track, the CDArtist is set to TrackArtist. Consequently, instead of the directory path various\AlbumTitle, REACT uses the path TrackArtist\AlbumTitle. For each TrackArtist, it creates a separate directory. The log below is from the TrackArtist\AlbumTitle directory for the first track on the album. On EAC, the naming schemes are set as follows.

Naming scheme: %D - %C - %N - %T
Various artist naming scheme: %D - %C - %N - %T (%A)

After capturing this log, I ran REACT another time using the TEST-tracks.txt config. The second time, it behaved fine creating only a single various\AlbumTitle directory. Then I tried ripping the CD with FLAC_MP3.txt and it worked fine this time.

It appears to me that there is an intermittent, unpredictable, bug lurking around in the various-artist section of the REACT code. Am I the only one noticing this intermittent problem?

Code: [Select]
==============================================
TEST-tracks config, Mon 10/16/2006 11:16:35.71
==============================================

"reactdir:       C:\Program Files\Exact Audio Copy"
"encdir:         C:\PROGRA~1\EXACTA~1\Encoders"
"mydocumentsdir: C:\Documents and Settings\atulc\My Documents"
"musicdir:       C:\Documents and Settings\atulc\My Documents\My Music"
"sourcedir:      C:\Documents and Settings\atulc\My Documents\My Music\Wav"
"eaclog:         C:\Documents and Settings\atulc\My Documents\My Music\Wav\The Romantics- A Windham Hill Sampler.log"
"destdir1:       C:\Documents and Settings\atulc\My Documents\My Music\TEST\Eugene Friesen\The Romantics- A Windham Hill Sampler"
"destdir2:       C:\Documents and Settings\atulc\My Documents\My Music\TEST"

----------------------------------------------

"trackscuesheet: C:\Documents and Settings\atulc\My Documents\My Music\Wav\The Romantics- A Windham Hill Sampler"
"  single:       C:\Documents and Settings\atulc\My Documents\My Music\Wav\The Romantics- A Windham Hill Sampler.[s].cue"
"  with:         C:\Documents and Settings\atulc\My Documents\My Music\Wav\The Romantics- A Windham Hill Sampler.[mg].cue"
"  leftout:      C:\Documents and Settings\atulc\My Documents\My Music\Wav\The Romantics- A Windham Hill Sampler.[m].cue"
"  corrected:    C:\Documents and Settings\atulc\My Documents\My Music\Wav\The Romantics- A Windham Hill Sampler.[mc].cue"

----------------------------------------------

"basename:       Various Artists - The Romantics- A Windham Hill Sampler - 01 - Vocalise Op. 34 No.14-- Rachmaninoff (Eugene Friesen)"
"source:         C:\Documents and Settings\atulc\My Documents\My Music\Wav\Vtmp1!542.wav"
"dest1:          C:\Documents and Settings\atulc\My Documents\My Music\TEST\Eugene Friesen\The Romantics- A Windham Hill Sampler\01 - Vocalise Op. 34 No.14-- Rachmaninoff"
"dest2:          C:\Documents and Settings\atulc\My Documents\My Music\TEST\Eugene Friesen - The Romantics- A Windham Hill Sampler - 01 - Vocalise Op. 34 No.14-- Rachmaninoff"

"cdartist:       Eugene Friesen (Eugene Friesen)"
"album:          The Romantics- A Windham Hill Sampler (The Romantics- A Windham Hill Sampler)"
"artist:         Eugene Friesen (Eugene Friesen)"
"title:          Vocalise Op. 34 No.14-- Rachmaninoff (Vocalise Op. 34 No.14-- Rachmaninoff)"
"track:          1 (01)"

"numtracks:      13 (13)"
"islast:         0"
"genre:          Classical"
"year:           1995"
"comment:        Track 1"
"freedbid:       A80C420D"

"crc:            90010D91"
"bitrate:        320"
"curdate:        2006-10-16"

----------------------------------------------

New tool: React - [Run EAC Tasks]

Reply #455
IIRC, AutoIT doesn't have very...precise...scoping of variables.  Is it possible that some variable is hanging around from a previously ripped CD and therefore leads to varying outcomes when retesting the same CD across separate runs?

A user test to see if this is possible would be to try reproducing the error by using REACT over several CDs, preferably in the order that you ripped on the day the problem occured...

-brendan

New tool: React - [Run EAC Tasks]

Reply #456
Quote
"basename:      Various Artists - The Romantics- A Windham Hill Sampler - 01 - Vocalise Op. 34 No.14-- Rachmaninoff (Eugene Friesen)"
Not sure how this happens, but REACT is looking for "Various - ", not "Various Artists - ".

I thought, when you checked the VA checkbox, EAC automatically set the Artist to "Various".

That's the reason REACT is getting confused though, we just need to work out why EAC uses "Various" some times and "Various Artists" others.  Perhaps the freedb entry uses "Various Artists" and EAC won't change when it sees "Various" in there somewhere?

Try unchecking the checkbox, clearing the artist name, and then rechecking it again.  Or something else.
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #457
IIRC, AutoIT doesn't have very...precise...scoping of variables.  Is it possible that some variable is hanging around from a previously ripped CD and therefore leads to varying outcomes when retesting the same CD across separate runs?

A user test to see if this is possible would be to try reproducing the error by using REACT over several CDs, preferably in the order that you ripped on the day the problem occured...

-brendan

I have noticed this problem under both of the following situations.
  • Ripping a VA CD after having ripped sever other CDs within the same EAC-REACT session/invocation. Once the problem appears, i.e., once a VA CD is given the basename beginning with "Various Artists -", trying to re-rip it any number of times doesn't make the problem go away.
  • Ripping a VA CD right after starting EAC-REACT.
However, the problem doesn't surface consistently for every VA CD. The same CD might rip fine on one occasion, but run into this issue on another. What does fix the problem is manually unchecking and re-checking the VA checkbox on the EAC UI. It definitely looks like an ill-defined VA variable within EAC or REACT code. Perhaps this variable is not initialized. Perhaps it is not reset after ripping a CD....

This problem happens often enough to be extremely frustrating. Anyone has any clues on how to get to the root cause and fix this problem? Thanks.
Quote
"basename:      Various Artists - The Romantics- A Windham Hill Sampler - 01 - Vocalise Op. 34 No.14-- Rachmaninoff (Eugene Friesen)"
Not sure how this happens, but REACT is looking for "Various - ", not "Various Artists - ".

I thought, when you checked the VA checkbox, EAC automatically set the Artist to "Various".

That's the reason REACT is getting confused though, we just need to work out why EAC uses "Various" some times and "Various Artists" others.  Perhaps the freedb entry uses "Various Artists" and EAC won't change when it sees "Various" in there somewhere?

Try unchecking the checkbox, clearing the artist name, and then rechecking it again.  Or something else.

Before ripping every CD, I make sure that the VA checkbox on EAC is already checked if it is a VA CD. If the VA box is checked, the AlbumArtist on the EAC UI is set to Various. Nevertheless, when the problem occurs, basename is set beginning with "Various Artists -" instead of "Various -". Since the problem is intermittent (a VA CD could rip fine at times, but at other times, the same CD encounters this problem), I don't believe it has anything to do with the freedb entries. It appears to be in the EAC/REACT code. Anyone with knowledge of this section of the code, please help!

edit: wholesale changes to this post after further testing.

New tool: React - [Run EAC Tasks]

Reply #458
Thanks for the info atulc.  You're an excellent example of a user who will help us to help himself (and others).

IIRC REACT has no input to this value - this is the filename that EAC uses given your filename scheme (or various artist naming scheme in this case) set in the Filename tab in EAC options (F9).  I can see from basename that it appears to be set correctly ("%D - %C - %N - %T (%A)").

EAC appears to be setting %D to "Various Artists" on this occassion, rather than "Various".  I have no idea why.

Very strange.  I'll keep thinking...

Edit: To confirm, this is all that REACT does with the string:

Code: [Select]
$g_basename = StringTrimRight($CmdLine[2], 4); remove ".wav" ext.

$CmdLine[2] is the original filename parameter (%o) that EAC sets.  As you can see, all REACT does is strip ".wav" from the end, no further processing takes place.

Edit 2:  What I really don't understand is how EAC can pass "Various" on one run and "Various Artists" on another, with the same CD!  Unless I'm following a red herring here somewhere... I think we need to understand the pattern of when one is used over the other to solve this, if we can...
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #459
Thanks for the info atulc.  You're an excellent example of a user who will help us to help himself (and others).

IIRC REACT has no input to this value - this is the filename that EAC uses given your filename scheme (or various artist naming scheme in this case) set in the Filename tab in EAC options (F9).  I can see from basename that it appears to be set correctly ("%D - %C - %N - %T (%A)").

EAC appears to be setting %D to "Various Artists" on this occassion, rather than "Various".  I have no idea why.

Very strange.  I'll keep thinking...

Edit: To confirm, this is all that REACT does with the string:

Code: [Select]
$g_basename = StringTrimRight($CmdLine[2], 4); remove ".wav" ext.

$CmdLine[2] is the original filename parameter (%o) that EAC sets.  As you can see, all REACT does is strip ".wav" from the end, no further processing takes place.

Synthetic soul, thanks for the quick response. I used to contribute time to open source initiatives. So I have great appreciation for the hard work people like you put in. EAC-REACT is a great framework. I would like to make it still better.

From your response, it appears that the issue is most likely with EAC. I will post this on the EAC developers' mailing list.

Please make sure that you re-read my previous post. I made significant changes to the message just before I read your response. Thanks.

New tool: React - [Run EAC Tasks]

Reply #460
I have just checked the freedb record using the freedb id reported (A80C420D).  It appears to me that the entry that you are using has the artist "Various Artists" instead of "Various" as specified in the freedb FAQ (section 2.2 point 6).

IMHO these issues are being caused by malformed freedb entries, and although EAC looks to handle them OK this value is unfortunately still being used as the album artist.

It would be great if you could confirm this by "manually" checking the freedb entries for other CDs that cause problems.

You may be able to test this also by using Ctrl+D to export the CD info to clipboard, to see what EAC is holding, or perhaps some other "Export data" method.

The fact that it works if you uncheck and recheck the checkbox returned me to this belief.  I think that this clears EAC's hidden value of "Various Artists" and replaces it with "Various" as it should be (i.e.: you are updating the local CD information).  I can only assume that closing EAC is rewriting the entry, or at least reloading it.
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #461
I've just done a search for the Sheryl Crow album and you will note that the artist is specified as "Sheryl Crow", not "Various".

I think the only resolve here is to uncheck and recheck the VA checkbox each time you load a disc...

That said, for track files, I have a vague idea in my head about using the file naming scheme used to detirmine whether the album is VA or not, instead of basename.  This won't help image rippers (like me) though.
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #462
I've just done a search for the Sheryl Crow album and you will note that the artist is specified as "Sheryl Crow", not "Various".

I think the only resolve here is to uncheck and recheck the VA checkbox each time you load a disc...

That said, for track files, I have a vague idea in my head about using the file naming scheme used to detirmine whether the album is VA or not, instead of basename.  This won't help image rippers (like me) though.

That's it. The data on freedb is not pristine. VA albums are tagged with AlbumArtist = "Various", "Various Artists", or the name of one of the artists on the album. The EAC-REACT ripping process works as expected for the "Various" setting. It breaks down for the other two settings. The only solution, as you suggest, is to uncheck and re-check the VA checkbox on EAC. This forces the AlbumArtist back to "Various". I have ripped about 20 CD's today. About half of them were VA albums. The freedb AlbumArtist setting for most of the VA CDs was wrong. But a couple of mouse clicks for each VA album ensured proper ripping.

Thanks Synthetic Soul and others for helping resolve this problem. Now I feel ready to rip my 200+ CDs with EAC & REACT.

 

New tool: React - [Run EAC Tasks]

Reply #463
Now I feel ready to rip my 200+ CDs with EAC & REACT.

Thank you for taking the lead in getting to the bottom of this.    For the flac files are you ripping to individual tracks or to images?

- p

New tool: React - [Run EAC Tasks]

Reply #464
I've just done a search for the Sheryl Crow album and you will note that the artist is specified as "Sheryl Crow", not "Various".

I think the only resolve here is to uncheck and recheck the VA checkbox each time you load a disc...

That said, for track files, I have a vague idea in my head about using the file naming scheme used to detirmine whether the album is VA or not, instead of basename.  This won't help image rippers (like me) though.


Would it be possible for REACT to notice that the Artist contains certain other variants of "Various" (heh) and automatically click twice on the checkbox for those albums?

-brendan

New tool: React - [Run EAC Tasks]

Reply #465
Would it be possible for REACT to notice that the Artist contains certain other variants of "Various" (heh) and automatically click twice on the checkbox for those albums?

-brendan

I am not an EAC or REACT developer. That said, this seems like a reasonable approach as long as the album artist contains the word various. But it won't address the freedb entries where the album artist for a various-artists album is set to the name of an artist. The "Artist's Choice - Sheryl Crow" album is an example of this.

Would it make sense for EAC to check all the track artists and, if there are more than one track artist strings, automatically set the album artist to various? REACT is only invoked with one track at a time. Therefore, this check would have to be done within EAC.

So far, I have only ripped tracks. So I don't know how things would work for ripping images.

Thank you for taking the lead in getting to the bottom of this.    For the flac files are you ripping to individual tracks or to images?

- p

I am ripping to individual tracks. I am too new to this field to understand the benefits of ripping to images. I want my music collection to be usable across different players such as foobar, slimserver, and the abominable iTunes. I am ripping to FLAC and MP3. I plan to use the MP3 files only on iTunes and iPod and FLAC on all the other music players.

New tool: React - [Run EAC Tasks]

Reply #466
I am not an EAC or REACT developer. That said, this seems like a reasonable approach as long as the album artist contains the word various. But it won't address the freedb entries where the album artist for a various-artists album is set to the name of an artist. The "Artist's Choice - Sheryl Crow" album is an example of this.
Exactly.  I was going to suggest using:

Code: [Select]
If StringLeft($g_basename, StringLen($g_artist + 2)) <> $g_artist & " -" Then

... instead of:

Code: [Select]
If StringLeft($CmdLine[2], 9) == "Various -" Then

... but your Sheryl Crow album is just one example where this would, or could, fall over.

However, I still have an idea or two in my head about possibilities to improve this.  REACT sets the naming scheme and various artist naming scheme itself.  It relies, and complains if it is not so, on both starting with "%D", the CD artist.  If users were prepared to keep their schemes to that specified by REACT then REACT could check basename against the pattern "%D - %C - %N - %T".  If it matched then the album is not VA, if it does not then it is.  Some pseudo code:

Code: [Select]
If this is a track rip
  If basename is "<track artist> - <album> - <track> - <title>"
    ' This is not a various artist track rip
  Else
    ' This is a various artist track rip
  End If
Else
  If basename begin with "<track artist> - "
    ' This is not a various artist image rip
  Else
    ' This is a various artist image rip
  End If
End If

Dunno, needs more thought (and then a whole lot of testing).

Would it make sense for EAC to check all the track artists and, if there are more than one track artist strings, automatically set the album artist to various? REACT is only invoked with one track at a time. Therefore, this check would have to be done within EAC.
I think EAC must partly be doing this already - i.e.: setting the VA checkbox according to whether the track format is VA - thus the problems you've been having.  What it is not doing is resetting the artist to Various at the same time.  I guess it should.
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #467
If anyone (atulc, it seems like you would be ideal for this) is interested in testing my amended code, as per the psuedo code above, you can find an EXE and the amended source here.

There's a few code changes, including the addition of @isvarious@, @reactversion@ and @reactconfig@, but here's the realised VA code for easy reference:

Code: [Select]
; VA album?

$g_cdartist = $g_artist
$g_cdartist_fn = $g_artist_fn
If $hasCue Then
  If StringLeft($g_basename, StringLen($g_artist_fn) + 2) <> $g_artist_fn & " -" Then $g_various = 1
Else
  If $g_basename <> fSubstIllegalCharsLikeEac($g_artist) _
    & " - " & fSubstIllegalCharsLikeEac($g_album) _
    & " - " & $g_track_fn _
    & " - " & fSubstIllegalCharsLikeEac($g_title) Then $g_various = 1
EndIf
If $g_various Then
  $g_cdartist = "Various"
  $g_cdartist_fn = "Various"
EndIf

PLEASE NOTE: I have only tested this on a couple of runs!  This is alpha, and normal/new REACT users should stick with tycho's original (1.0).  Testing only!

This relies on your filename scheme being "%D - %C - %N - %T"
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #468
If anyone (atulc, it seems like you would be ideal for this) is interested in testing my amended code, as per the psuedo code above, you can find an EXE and the amended source here.

Synthetic soul,
Thanks for implementing the "various-artists" logic discussed earlier. I tried your new code and here are the results.
  • CD Title: "Artist's Choice - Sheryl Crow" - EAC showed the "various artists" field checked off and CD Artist set to Various. However, the WAV files written by EAC began with "Various Artists -" because the freedb record for this CD showed the CD Artist as "Various Artists". For this album, your code modifications were able to correctly parse the WAV filenames and save the FLAC files to "various\Artist's Choice - Sheryl Crow". Thanks for fixing this!
  • CD Title: "The Romantics - AWindham Hill Sampler" - exactly the same behavior as above. EAC asked me to choose from a couple of freedb entries. I chose the one that showed the CD Artist as "Various Artists". I noticed that the WAV files written by EAC began with "Various Artists - " but the FLAC files were saved to "various\The Romantics - A Windham Hill Sampler".
  • CD Title: "Pure Moods - Celestial Celebration" - freedb lookup reported an inexact match. It found one CD record close to this CD. It was the correct record (the right title and tracks). However, as above, the CD Artist on the freedb entry showed as "Various Artists". However, as above, the code modification was able to correctly parse the WAV filenames beginning with "Various Artists -" and save FLAC files to "various\Pure Moods - Celestial Celebration".
  • CD Title: "The Number 1 Jazz Album" - the freedb entry reported the CD Artist as "Various Jazz". The WAV files written by EAC began with "Various Jazz -". However, as above, the modified REACT code saved the FLAC files to the appropriate path - "various\The Number 1 Jazz Album".
  • CD Title: "The Bodyguard" - This CD has several songs by Whitney Houston and a few songs by other artists. However, the various-artists checkbox on EAC was not checked off. The CD Artist showed as "Soundtrack". The WAV files written by EAC began with "Soundtrack -". My FLAC_MP3-tracks.txt config file includes
    Code: [Select]
    !dest1=@destdir1@\$track$ - $title$
    !Various-dest1=@destdir1@\$track$ - $title$ ($artist$)

    However, the resulting FLAC files had the format - $track$ - $artist$ - $title$. The FLAC files were saved in the directory "Soundtrack\The Bodyguard". I don't know whether one can design an automatic fix for this in the REACT code. EAC should take care of this. It should compare all track artists with the CD artist and, if it finds any track artist not equal to the CD artist, it should default to the Various setting. For now, manually checking the various-artists checkbox on EAC takes care of this. By checking this checkbox, the filenames are properly formed and the files are saved to "various\The Bodyguard".

BOTTOMLINE: With Synthetic soul's version 1.0.1.7 of REACT, as long as the CD Artist begins with Various (perhaps I should say containing Various; Synthetic soul, feel free to comment on this), EAC-REACT work fine. They save the ripped tracks to various\album. If on EAC you see the CD Artist beginning with anything other than Various for an album that you know is various-artists, just manually check the Various-Artists checkbox and everything will work fine.

New tool: React - [Run EAC Tasks]

Reply #469
Firstly, thanks for the comprehensive test and report.  It's good to see the new version catching scenarios 1-4, as expected.

No. 5 failed purely as the VA checkbox was not set.  As far as REACT was concerned this was a normal (non-VA) album, and treated it as such.  In essence it acted as it should, considering its current logic.

As you suggest, perhaps REACT may be able to parse the track names before processing, to detirmine itself whether the VA checkbox should be checked, and check it, but that's one for tycho to answer really.

My changes do not rely on the word "Various"; your first Sheryl Crow example, where the CD Artist was set to Sheryl Crow, immediately turned me away from using "Various" as an indicator.  I will attempt to explain the logic used:

Firstly, the new code checks whether REACT is dealing with an image or track config.  Depending on this fact it uses two different methods to ascertain whether the disc is VA.

Images:

With images the check is the most simple.  Tycho's original check, used in both image and track processing, checked whether the basename began "Various -".  My check for images checks whether the basename begins "<track artist> -".  With a properly set VA album this check will be comparing the basename "Various -" with my string "<track two artist> -".  As the strings don't compare the album is assumed VA.  For example, with your Sheryl Crow album we would be comparing "Various Artists -" with "Carole King -" (when accessing the artist placeholder for images EAC, for some reason, always passes track two's artist).  Again this would fail, and the album is assumed VA.

This check could still go wrong - if the CD artist and track two artist were the same.

Tracks:

This check is more complex, and therefore less easy to fool.  My new code assumes that your track naming scheme is "%D - %C - %N - %T", and your VA naming is "%D - %C - %N - %T (%A)" - which are the values that REACT sets them to.  The code checks basename against the "%D - %C - %N - %T" structure.  If the two strings do not match the album is assumed VA.  So, in the example of the Sheryl Crow album, it will compare the basename, "Various Artists - Artist's Choice - 01 - Don't Think Twice, It's All Right (Bob Dylan)" with the format which equates to "Various Artists - Artist's Choice - 01 - Don't Think Twice".  As the strings are not identical it will correctly assume the album is VA.  In a normal album the strings will be identical, simply as both are formed (one by EAC, and one by my code) using the same format - "%D - %C - %N - %T".

Your fifth scenario failed here because my code was checking "%D - %C - %N - %T" against "%D - %C - %N - %T", when it should, if the VA checkbox had been checked correctly, have been checking "%D - %C - %N - %T (%A)" against "%D - %C - %N - %T".  I suspect the reason that you ended up with the filename format of "$track$ - $artist$ - $title$", given that it should have been "$track$ - $title$", is that the freedb entry used the track name format of "$artist$ - $title$", or possibly "$artist$ \ $title$".

Personally, I think it's a reasonable solution.  It is possible it could even be wrapped inside the original check for "Various -", so properly formed VA freedb entries are quickly picked out, but those failing the check are double-checked by the code I have submitted.

Again, thanks for the testing.  I haven't worked out how I can test with badly formed VA freedb entries, so the testing had been limited.  If I get time I may try setting up a local freedb database and messing around with those entries.  That said, I am very confident in the logic, although it has known flaws: CD artist == track two artist, or file naming scheme's have been changed.  The later could be checked, so that a warning is given if EAC's values do not match those expected (REACT already tests that the schemes begin with "%D", so this check could just be expanded).

Edit:  Hmm... after re-reading, and cheking my earlier post, I see that all I have succeeded in doing is over-complicating the pseudo code I posted before!  The psuedo code really explains this in far easier terms, although here is a more exact, and even simplified, version:

Code: [Select]
If we are dealing with an image rip
  If basename does not begin "<track two artist> -" then we have a VA
Else 'we are dealing with a track rip
  If basename is not in the format "%D - %C - %N - %T" then we have a VA
End
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #470
Firstly, thanks for the comprehensive test and report.  It's good to see the new version catching scenarios 1-4, as expected.

No. 5 failed purely as the VA checkbox was not set.  As far as REACT was concerned this was a normal (non-VA) album, and treated it as such.  In essence it acted as it should, considering its current logic.

I agree. The behavior for CD no. 5 was as expected. In all cases, your code modification worked as expected.

My changes do not rely on the word "Various"; your first Sheryl Crow example, where the CD Artist was set to Sheryl Crow, immediately turned me away from using "Various" as an indicator. I will attempt to explain the logic used: ...

The psuedo code really explains this in far easier terms, although here is a more exact, and even simplified, version:
Code: [Select]
If we are dealing with an image rip
  If basename does not begin "<track two artist> -" then we have a VA
Else 'we are dealing with a track rip
  If basename is not in the format "%D - %C - %N - %T" then we have a VA
End

Ok. Now I understand how simple and elegant the solution is and that it doesn't depend on the word "various". Thanks a lot for implementing this!

I am using your modified code for ripping another 100+ CDs. If I encounter any issues related to various-artists, I will let you know.

New tool: React - [Run EAC Tasks]

Reply #471
I exported my EAC database to a local freedb database*, which meant that I could edit my test CD entry and reload it for testing.

By doing so I have come to a couple of realisations:
  • In image mode, with the VA checkbox checked, the CD artist will always be "Various", as the value is taken from the "CD Artist" text box on the main EAC window (and not the freedb/database data).
  • It appears that only CD artists beginning with "Various" will be accepted as a "Various" alternative.  If I try changing the CD artist in my freedb entry to anything else the VA checkbox becomes unchecked.  It appears then, that EAC simply checks whether the CD artist begins with "Various" to detirmine whether the checkbox should be checked on loading meta (freedb) data.  I guess, on reflection, that this makes sense, as there is no other way for EAC to detirmine whether the CD is VA other than the CD artist (although, as atulc suggested, perhaps analysing the track entries might do better).  EAC should really just check whether it is "Various" exactly, but I guess André is aware of the crappy freedb submissions, and is trying to accommodate additional, ill-formatted, entries.
Although these realisations don't change what my code does, it does mean that it could be simplified, and possibly improved, with this knowledge.

You could also say, although my code does not check for a string beginning "Various" perhaps it ought to.

* To create a local freedb database of your EAC database:
  • "EAC" > "freedb / Database Options..." > "Local freedb" tab to set the location
  • "Database" > "Export CD Information To" > "Local freedb"
To reload data after changing the text file: "Database" > "Get CD Information From" > "Local freedb"[/size]

Edit: I just tested "Variousu" and that worked also.  Therefore, to clarify, EAC will look for a value beginning "Various", and not "Various ".

Also, atulc, I meant to point out, if you haven't tried, that you can use @isvarious@ as in:

Code: [Select]
IF @isvarious@==1

... instead of:

Code: [Select]
IF "$cdartist$"=="Various"


The other tokens I added, @reactversion@ and @reactconfig@, are really for debugging porpoises.
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #472
Hi, this is my first posting but I've really hit the wall with this "Various Artist" issue.

Thanks to Synthetic Soul and Tycho for all there posts and this great utility.

I'm trying to rip to a FLAC image and  MP3 tracks. I started with Synthetic Soul's ini, config, and bat. from Post 299 and modified them from there. Everything worked fine until I tried a Various Artist CD.

The FLAC image looked ok at first but in Foo the artists for all the tracks are the same [taken from the artist of the 2nd track]. I know this problem has been posted before, but it's still occurring.

After much experimenting, I have now installed Synthetic Soul's 1.0.1.7 Alpha from Post 468 and his "Test" config's from Post 432.

In every instance there has been a consistent error in the image file. I have tried several CDs with my own versions of ini and config files, with the test ini and config and also with 1.0 and 1.0.1.7, always with the same results.

In the REACT command window the "Disc info" has the track 2 artist listed as the artist.

In the REACT Log using the "TEST" configs:
Quote
@echo Disc info  : "Kate Bush" - "Two Rooms Celebrating The Songs Of Elton John & Bernie Taupin"
@echo Description : "Test config to record the values being passed from EAC"


In Foo looking at the FLAC files the track 2 artist listed as the artist [the MP3 files end up correct which I suspect is because they are using the ID3 tags or the flac.cue.

Here's a .cue and the log from an album that I actually ripped:

CUE:
Quote
REM REPLAYGAIN_ALBUM_GAIN "-8.49 dB"
REM REPLAYGAIN_ALBUM_PEAK 0.988556
REM GENRE Rock
REM DATE 1997
REM DISCID E3100810
REM COMMENT "ExactAudioCopy v0.95b4"
PERFORMER "Various"
TITLE "KFOG - Live From The Archives IV"
FILE "(1997) - KFOG - Live From The Archives IV.flac" WAVE
  TRACK 01 AUDIO
    TITLE "Jammin' Me"
    PERFORMER "Tom Petty & The Heartbreakers"
    INDEX 01 00:00:00
  TRACK 02 AUDIO
    TITLE "Please Don't Tell Her"
    PERFORMER "Big Head Todd & The Monsters"
    INDEX 01 04:28:72

LOG:
Quote
----- [FLAC-Lame-image] ----- 2006-10-29 22:45:52
@echo Disc info  : "Big Head Todd & The Monsters" - "KFOG - Live From The Archives IV"
@echo Description : "FLAC image with -V3 new MP3"
@echo WaveGain    : gain=-8.49 dB, peak=0.988556
C:\PROGRA~1\AVTOOL~1\REACT\Encoders\FLAC.EXE -5 -f --replay-gain "O:\My CD\WAVs\(tmp1!542.wav" -o "O:\My CD\WAVs\(1997) - KFOG - Live From The Archives IV.flac"
C:\PROGRA~1\AVTOOL~1\REACT\Encoders\TAG.EXE -t "ARTIST=Big Head Todd & The Monsters" -t "ALBUM=KFOG - Live From The Archives IV" -t "YEAR=1997" -t "GENRE=Rock" -t "COMMENT=ÜberStandard - UberNet.org" -t "FREEDB=E3100810" -t "CRC=00000000" -f "CUESHEET=O:\My CD\WAVs\(1997) - KFOG - Live From The Archives IV.flac.cue" -f "EACLOG=O:\My CD\WAVs\KFOG - Live From The Archives IV.log" "O:\My CD\WAVs\(1997) - KFOG - Live From The Archives IV.flac"
SET trackName=$n - $~t
IF "Big Head Todd & The Monsters"=="Various" SET trackName=$n - $~t ($~a)
MOVE "O:\My CD\WAVs\KFOG - Live From The Archives IV.log" "O:\My CD\Logs"
MOVE "O:\My CD\WAVs\(1997) - KFOG - Live From The Archives IV.*" "O:\My CD\FLAC -5\Big Head Todd & The Monsters "
C:\PROGRA~1\AVTOOL~1\REACT\Encoders\ACDIR.EXE --overwrite --output "O:\My CD\MP3 -V3 new\Big Head Todd & The Monsters\(1997) - KFOG - Live From The Archives IV\%trackName%.mp3" --pipe "C:\PROGRA~1\AVTOOL~1\REACT\Encoders\LAME.EXE -V3 --vbr-new --scale 0.376270 --add-id3v2 --pad-id3v2 --ignore-tag-errors --ta $#a --tl $#T --tt $#t --tn $#n --ty $#r{DATE} --tg $#r{GENRE} --tc $qAG applied: -8.49 dB$q - $#o" "O:\My CD\WAVs\(tmp1!542-react.cue"
C:\PROGRA~1\AVTOOL~1\REACT\Encoders\CREATE-M3U.BAT "O:\My CD\MP3 -V3 new\Big Head Todd & The Monsters\(1997) - KFOG - Live From The Archives IV" "Big Head Todd & The Monsters - 919970 - KFOG - Live From The Archives IV"
DEL O:\My CD\WAVs\"O:\My CD\WAVs\(tmp1!542.wav"


I've opened the code to poke around eventhough the last thing I wrote was in BASIC 20 years ago, and here's what I noticed:
Code: [Select]
; VA album?

    $g_cdartist = $g_artist
    $g_cdartist_fn = $g_artist_fn
    If $hasCue Then
        If StringLeft($g_basename, StringLen($g_artist_fn) + 2) <> $g_artist_fn & " -" Then $g_various = 1
    Else
        If $g_basename <> fSubstIllegalCharsLikeEac($g_artist) _
            & " - " & fSubstIllegalCharsLikeEac($g_album) _
            & " - " & $g_track_fn _
            & " - " & fSubstIllegalCharsLikeEac($g_title) Then $g_various = 1
    EndIf
    If $g_various Then
        $g_cdartist = "Various"
        $g_cdartist_fn = "Various"
    EndIf

Only "cdartist" is changed to "Various" while "artist" is not.
But then:
Code: [Select]
$batfile = $temp_root & ".bat"
    $bathead = '@echo Disc info   : "' & $g_artist & '" - "' & $g_album & '"' & @crlf
    If $g_destimage = "" Then
        $bathead = $bathead & '@echo Track info  : (' & $g_track & ') "' & $g_title & '"' & @crlf
    EndIf

"Disc info is set to "artist".

I don't know if adding,
$g_artist = "Various"
$g_artist_fn = "Various"
would cause more problems than it would solve, but I suspect the problem is related to this. I'm not sure where else "artist" is used and if this would break the track extractions.

Thanks for all your help.
If I knew how to code I would try it myself, but I'm really learning as I go along.
Sorry for the long post.

Eric
Guinness Is Good For You!

New tool: React - [Run EAC Tasks]

Reply #473
Although you have provided a good deal of information, I'm finding your post a little hard to decypher.  However, I think I may see your problem.  Your image naming scheme must begin with $artist$, and not $year$.  In my REACT.INI file I have:

Code: [Select]
ImageNaming=$artist$ - $album$

I believe that yours must be:

Code: [Select]
ImageNaming=($year$) - $album$

I believe that tycho has stated this somewhere, but really I think it should be mandatory, to save confusion.

You don't need to use "$artist$ - $album$" exactly, as long as it begins with "$artist$ -".  You could use:

Code: [Select]
ImageNaming=$artist$ - ($year$) - $album$

Edit: To clarify, REACT will not pick up VA albums as being VA, without "$artist$ -" at the start of your basename.  As I say, perhaps this should be stipulated more (if it is not already, it may be).  And Another Edit:  I have just added a little text to the wiki article/help.


RE: VA code: I think the only issue with the code that you highlight is, on quick inspection, it seems to me that tycho should probably be using:

Code: [Select]
$bathead = '@echo Disc info   : "' & $g_cdartist & '" - "' & $g_album & '"' & @crlf

... instead of:

Code: [Select]
$bathead = '@echo Disc info   : "' & $g_artist & '" - "' & $g_album & '"' & @crlf

... but this is purely asthetics, and doesn't affect logic at all.


With regard to the VA code, given my recent findings (they may not be findings to tycho, but they were to me!), I think the easiest solution may be to simply use:

Code: [Select]
; VA album?

If StringLeft($CmdLine[2], 7) == "Various" Then
  $g_cdartist = "Various"
  $g_cdartist_fn = "Various"
  $g_various = 1
Else
  $g_cdartist = $g_artist
  $g_cdartist_fn = $g_artist_fn
EndIf

It will mess up if an individual artist has a name beginning "Various", but (a) it seems to me that this will occur far fewer times than the issues at the moment and (b) EAC basically does this, so it's simply following suit.  If an individual artist had a name beginning "Various" EAC would mark it as a VA album (check the VA checkbox) anyway!
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #474
Synthetic Soul,
 
  Thanks for all your help [your past posts were my guide] and sorry about the confusion.
 
I was using $year$ in the first position. I know I changed it at some point but that must have still been the case with my example [man you're good at this].
  I ran the CD again this morning using:
 
Code: [Select]
  [b]ini.
  [/b][Settings]
  Config=FLAC-Lame
  Version=1.0
  EAC=C:\Program Files\AV Tools\Exact Audio Copy\EAC.exe
  musicdir=C:\Program Files\AV Tools\REACT\TEST FOLDER
  encdir=C:\Program Files\AV Tools\REACT\Encoders
  LogFile=C:\Program Files\AV Tools\REACT\react_log.txt
  CodePage=1252
  MinimizeCompressionWindow=1
  ProcessPriority=1
  TracksHotKey={F4}
  TracksHotVal=+{F5}
  SaveTracksCuesheets=1
  ImageHotKey={F10}
  ImageNaming=$artist$ - $album$
  Sla_Bks_Col_Qst_Bar_Quo_Ast_Lt_Gt=-|-|-||!|'|#|[|]
  Debug=0[b]
 
  Config:
  [/b][b]FLAC-Lame-image.tx[/b]t
  !Description=FLAC -5 image with -V3 new MP3
  !ImageExt=flac
  !CuesheetExt=flac.cue
  !WaveGainAnalysis=1
  !destdir1=@musicdir@\FLAC -5\$cdartist$
  !destdir2=@musicdir@\MP3 -V3 new\$cdartist$\($year$) - $album$
  !destdir3=@musicdir@\Logs
  !destdir4=@musicdir@\WAVs
 
  @encdir@\FLAC.EXE -5 -f --replay-gain "@source@" -o "@image@"
 @encdir@\TAG.EXE -t "ARTIST=@artist@" -t "ALBUM=@album@" -t "YEAR=@year@" -t "GENRE=@genre@" -t "COMMENT=@comment@" -t "FREEDB=@freedbid@" -t "CRC=@crc@" -f "CUESHEET=@cuesheet@" -f "EACLOG=@eaclog@" "@image@"
  MOVE "@eaclog@" "@destdir3@"
  MOVE "@sourcedir@\@basename@.*" "@destdir1@"
  SET trackName=$n - $~t
  IF "$cdartist$"=="Various" SET trackName=$n - $~t ($~a)
 @encdir@\ACDIR.EXE --overwrite --output "@destdir2@\%trackName%.mp3" --pipe "@encdir@\LAME.EXE -V3 --vbr-new --scale @scale@ --add-id3v2 --pad-id3v2 --ignore-tag-errors --ta $#a --tl $#T --tt $#t --tn $#n --ty $#r{DATE} --tg $#r{GENRE} --tc $qAG applied: @gain@$q - $#o" "@sourcecuesheet@"
  @encdir@\CREATE-M3U.BAT "@destdir2@" "$cdartist$ - 9$year$0 - $album$"
  REM DEL @destdir4@\"@source@"
  Everything looks like it worked except...The "Disc info" is obviously still wrong.....
 
Quote
RE: VA code:[/b] I think the only issue with the code that you highlight is, on quick inspection, it seems to me that tycho should probably be using:

Code: [Select]
$bathead = '@echo Disc info   : "' & $g_cdartist & '" - "' & $g_album & '"' & @crlf
... instead of:

Code: [Select]
$bathead = '@echo Disc info   : "' & $g_artist & '" - "' & $g_album & '"' & @crlf
... but this is purely asthetics, and doesn't affect logic at all.
...and in Foobar:
 The FLAC image loads and displays the tracks but with all the "Artist" listings being the Track 2 Artist. It is stored this way in the Metadata under properties. See below [It's not code but I wanted to use a scrolling box instead of the big window].........
 
Code: [Select]
Artist Name : Big Head Todd & The Monsters
  Track Title : Jammin' Me
  Album Title : KFOG: Live From The Archives Vol. 4
  Date : 1997
  Genre : Rock
  Album Artist : Various
  Track Number : 1
  Total Tracks : 16
  Comment : ÜberStandard - UberNet.org
  <CRC> : 00000000
  <DISCID> : E3100810
  <EACLOG> : EAC extraction logfile from 31. October 2006, 7:57 for CD (...)
  <FREEDB> : E3100810
 
  Artist Name : Big Head Todd & The Monsters
  Track Title : Please Don't Tell Her
  Album Title : KFOG: Live From The Archives Vol. 4
  Date : 1997
  Genre : Rock
  Album Artist : Various
  Track Number : 2
  Total Tracks : 16
  Comment : ÜberStandard - UberNet.org
  <CRC> : 00000000
  <DISCID> : E3100810
  <EACLOG> : EAC extraction logfile from 31. October 2006, 7:57 for CD (...)
  <FREEDB> : E3100810
The MP3 tracks display ok but the Metadata does not list an "Album Artist" at all.
 
Code: [Select]
Artist Name : Tom Petty & The Heartbreakers
  Track Title : Jammin' Me
  Album Title : KFOG: Live From The Archives Vol. 4
  Date : 1997
  Genre : Rock
  Composer:
  Performer:
  Album Artist:
  Track Number : 1
  Total Tracks : 
  Disc Number : 
  Total Discs : 
  Comment : AG applied: -8.48 dB
  <ENCODING SETTINGS> : LAME v3.97
 
Artist Name : Big Head Todd & The Monsters
  Track Title : Please Don't Tell Her
  Album Title : KFOG: Live From The Archives Vol. 4
  Date : 1997
  Genre : Rock
  Composer:
  Performer:
  Album Artist:
  Track Number : 2
  Total Tracks : 
  Disc Number : 
  Total Discs : 
  Comment : AG applied: -8.48 dB
  <ENCODING SETTINGS> : LAME v3.97
I can live with the MP3's but would adding another comment tag for CD Artist in the Lame.exe string of the config. take care of this. [I still don't know much about tagging but am working on it].
 
 I would hate to have to retag all the FLAC metadata track by track, is there such a thing as CD Artist in Vorbis? If so, would adding this to the Tag.exe string of the config help with this?
 
Quote
With regard to the VA code, given my recent findings (they may not be findings to tycho, but they were to me!), I think the easiest solution may be to simply use:

Code: [Select]
; VA album?

If StringLeft($CmdLine[2], 7) == "Various" Then
  $g_cdartist = "Various"
  $g_cdartist_fn = "Various"
  $g_various = 1
Else
  $g_cdartist = $g_artist
  $g_cdartist_fn = $g_artist_fn
EndIf
It will mess up if an individual artist has a name beginning "Various", but (a) it seems to me that this will occur far fewer times than the issues at the moment and (b) EAC basically does this, so it's simply following suit. If an individual artist had a name beginning "Various" EAC would mark it as a VA album (check the VA checkbox) anyway!
This is over my head but I'm really trying to learn. What would this address? It seems like it would would use the Artist field and make CD Artist the same if it is not a Various. Would you not use the Basename for comparison? Since it looks like Basename is taken from the .wav, would this change the need for $artist$" to start the  ImageNaming string? Would changing the $artist$ introduce a loop? I only see $artist$ used later in the "Disc info" line and it seems that would be easier to change using your first example.
 
  I'm so close to getting it set up the way I was hoping.
  Thanks to you and Tycho for all your help.
  Hopefully my future posts will be much shorter and more explicit.
Guinness Is Good For You!