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: REACT 2 Released (Read 1280306 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

REACT 2 Released

Reply #925
It's not the cuesheet, it's the log file.

I'm trying to work out why REACT is looking for "D:\Rips\Wheel in the Roses.log".  Are you using EAC 0.99?

Edit: Doh!  The correct question would have been: are you using my mod.  To which your answer must be: no.

The original REACT cannot cope with EAC 0.99 log file naming.  Please download my mod and replace the original REACT.exe.
I'm on a horse.

REACT 2 Released

Reply #926
Maybe we should make a new News Item for ssb16n and update the wiki links accordingly so that people don't assume 2.0 is the latest, It's the same mistake I made, too.

On the react wiki thread, we could probably say,
"Download react 2.0 from [here (react 2.0 download thread)], but an updated version exists [here (react mod wiki page)]."
"Support for both 2.0 and 2.0ssb16n is available [here (New support thread)]"

and link to the same thread from the react mod wiki page? I'll leave the decision up to you though, Synthetic Soul. I'll still frequent the thread and help out


Also, I've noticed you've posted b16n... thank you!  I look forward to tearing it apart testing it for you

REACT 2 Released

Reply #927
It's a good point; it's happening too frequently now.

I have edited the download post with some nice red text.

That should do it, but possibly we may need a wiki page or post (in that thread?) that explains the reasoning.
I'm on a horse.

REACT 2 Released

Reply #928
Hello! Afraid it's time for my weekly REACT questions. I should probably start paying rent for this thread, since I'm in here so much..

I've recently been trying to fully replace AtomicParsley with NeroAacTag and in so doing I have started replacing the disc switches for the MetaData additions.

1) There are some illegal characters that can mess up the DiscName parts, at this line:
Code: [Select]
SET trackDir=%trackDir%\$discname$

I've gotten it to mess up quite a bit with Carets (^), where it appends the next line onto the command and does some funny things. I think things either need to be quoted (like "@discname@") or the $$ vars should replace the caret as well.

2) Is there a reason that you cannot have both Discname and Discnumber in your modified .cfg?

3) I assume that this part of the code:
Code: [Select]
IF "@discname@" EQU "" GOTO end_discname
SET discName=discname
SET discName=@%discname%@
IF "@discname@" EQU "%discName%" GOTO end_discname

Checks to see if (A) @discname@ is null or (B) @discname@ isn't getting substituted at all and is still literally "@discname@". Correct?

REACT 2 Released

Reply #929
  • Hmm.. I can se how that would be a problem, the caret is an escape character in DOS.  I suppose it could be treated as an illegal character by REACT.  I'm not sure about quoting it though, as it needs to appended to a filename IIRC.  That said, DOS may be happy doing things like "C:\Folder with a space\"filename.mp3.  Don't know.
  • Not as such, but I didn't think that there was any need to label a disc with a number and a name.  I think artists probably give a disc a name so that it's neither simply "Disc 1" or "Disc 2".  I'm sure the code could be quite easily changed to record both.
  • Exactly.
I'm on a horse.

REACT 2 Released

Reply #930
Hmm.. I can se how that would be a problem, the caret is an escape character in DOS.  I suppose it could be treated as an illegal character by REACT.  I'm not sure about quoting it though, as it needs to appended to a filename IIRC.  That said, DOS may be happy doing things like "C:\Folder with a space\"filename.mp3.  Don't know.


Since you know your way around the replacement schemes of REACT better than anyone (possibly perhaps due to Akkurat and My constant pestering...) Could you draw up an example of the easiest way to do this? I don't want to dive in and make an incision and break something else...

Do we have to replace the Caret or is there a way to escape it? I don't know a whole lot about DOS, I feel a little bit lost working with it.

REACT 2 Released

Reply #931
Thanks for your help with this utility. I've now got it ripping CDs just how I wanted.

The only thing that's still confusing me is the way it embeds album art into a FLAC image.

This works fine when using REACT to do the task, the album art shows up in Foobar and it's something I'd like with all my rips. Unfortunately around half of the albums I've tried don't have covers available on the sites searched by Cover Art Downloader, I'd like to add album covers manually when that's the case.

What I can't work out is how to manually replicate the embedding done by REACT using other software. I can see this section of the REACT-image.cfg:

IF %embed_cover%==1 SET Cover_tag=--picture="|image/jpeg|||@cover@"

Yet looking at the tags of a REACT ripped image with successfully embedded album art, it doesn't seem to have that Cover_tag.

The furthest I've got with this is creating a Cover_tag in Foobar and pasting that information into it. That doesn't seem to embed the art, it only displays it when the JPEG is in the same directory. What do I need to do?

Is there any way to have Cover Art Downloader search a local directory? That way I could always download the cover art first...

REACT 2 Released

Reply #932
Edit: To look for local album art, create a "CoverDownloaderLocalPath" in the Settings section of your .ini file, and set this to the path of your existing album art... For instance, you can set it to something like C:\Music\$album$\$artist$\folder.jpg and it'll use that picture if it finds it, but it will open the coverdownloader if it can't. One thing to note is that if you specify a directory here, it could mess stuff up a bit, so specify the exact filename to look for.

Now, this is just my take and I might be wrong. I'm sure Neil will correct me if I'm misleading you


As for your question about manually embedding art, I don't think you'll be able to do it from Foobar. The "Cover_Tag" you are trying to set is actually the name of a variable, and the content you are setting this tag with is actually command line options.
So to manually add some cover art, run something like the following command in a prompt: (win+r "cmd")
"C:\Program Files\React\Tools\Flac.exe" --picture="|image/jpeg|||PUTTHEFILENAMEOFTHEJPGHERE" "Flac-Filename-goes-here"

REACT 2 Released

Reply #933
Edit: To look for local album art, create a "CoverDownloaderLocalPath" in the Settings section of your .ini file, and set this to the path of your existing album art... For instance, you can set it to something like C:\Music\$album$\$artist$\folder.jpg and it'll use that picture if it finds it, but it will open the coverdownloader if it can't. One thing to note is that if you specify a directory here, it could mess stuff up a bit, so specify the exact filename to look for.


Thanks, that worked fine. A bit of a pain that it can't display everything in the directory, but still better than having to embed them afterwards.

REACT 2 Released

Reply #934
Edit: To look for local album art, create a "CoverDownloaderLocalPath" in the Settings section of your .ini file, and set this to the path of your existing album art... For instance, you can set it to something like C:\Music\$album$\$artist$\folder.jpg and it'll use that picture if it finds it, but it will open the coverdownloader if it can't. One thing to note is that if you specify a directory here, it could mess stuff up a bit, so specify the exact filename to look for.
Thanks, that worked fine. A bit of a pain that it can't display everything in the directory, but still better than having to embed them afterwards.
Try using:

Code: [Select]
CoverDownloaderLocalPath=C:\Music\**\*.jpg

... instead.  Take a look at this post for more info.  Ensure that you are using Album Art XUI, and have all relevant variables set correctly.

Edit: Actually, in addition to that info, note that you will need to set CoverDownloaderXUI=1 to use XUI's /localImagesPath
I'm on a horse.

 

REACT 2 Released

Reply #935
Edit: Post outdated, see post below instead!

REACT 2 Released

Reply #936
I am sorry to say that I am still having problems with cuesheet generation with REACT.
...
Key point that this demonstration does address:
1) This demo will NEVER mistake one cuesheet for another. At the worst, it skips ones it cannot locate after a delay.

Problems still with ssb16n? The current n-version will not mistake cuesheets for another! + it asks user to try again/stop/ignore if something went wrong.

(This is my quick response.. I was just going to bed (it's 5 o'clock in the morning).. I'll check your post again tomorrow when I've (hopefully) rested brain and eyes.)

REACT 2 Released

Reply #937
Yeah, Akkurat. Sometimes the keysends fail and it has to retry several times, because while it might not mistake the final cuesheets for one another, sometimes it does generate extra cuesheets, or generally act weird... I am guessing it has to do with EAC writing to the .cue files directly and sometimes when the AU3 script runs across them, they are still being written to, so my demo here tries to wait until the files are released.

I didn't mean to insult your fixes! Get some sleep!

REACT 2 Released

Reply #938
I am sorry to say that I am still having problems with cuesheet generation with REACT.

In an effort to understand why this continually fails, I've drafted up a demonstration that works pretty well with a few notable exceptions. Here's the code:

Code: [Select]
Global $g_eacTitle = "Exact Audio Copy"
Global $g_eacText = "CD Artist"
Global $g_cueMenu = StringSplit("&Action|Create CUE &Sheet|Multiple WAV Files With Gaps...  (Noncompliant)", "|")
global $CueRetryWait = 10;Frequency in MS to check for Cuesheet or to attempt moving it again
global $CueRetryAttempts = 500;Total times to perform above waiting period, so resultant waiting time is 500*10=5000ms (5 seconds)
global $Cuesheet = "C:\Program Files\Exact Audio Copy\TMP\Indestructible Object.cue"

FileDelete("debug.txt")
fMakeCuesheet("Key","!m","(M)")
fMakeCuesheet("Key","!o","(MC)")
fMakeCuesheet("Key","!s","(S)")
fMakeCuesheet("Menu",$g_cueMenu,"(MG)")

Func fMakeCuesheet($action,$keypress,$suffix)
    FileDelete($cuesheet);Delete any cuesheet that matches the filename we're expecting to prevent renaming an existing cuesheet that may not be what we requested
    if $action = "Key" Then ControlSend($g_eacTitle,$g_eacText, "", $keypress);Send the keypress
    if $action = "Menu" Then WinMenuSelectItem($g_eacTitle,$g_eacText, $keypress[1], $keypress[2], $keypress[3]);Or the MenuSelection
    local $r = 0
    While WinExists("Analyzing","Detecting Track Indices")
        sleep(10)
        $r = $r + 1
    WEnd
    FileWrite("debug.txt",$suffix & "Waited for Index Analysis to Finish... (" & $r & ") repetitions, " & $r * 10 & "ms" & @CRLF)
    local $r = 0
    While WinExists("Analyzing","Detecting Pre-Track Gaps")
        sleep(1000)
        $r = $r + 1
    WEnd
    FileWrite("debug.txt",$suffix & "Waited for Gap Analysis to Finish... (" & $r & ") repetitions, " & $r * 1000 & "ms" & @CRLF)
    local $s = 0;Set the number of attempts to 0
    While Not FileExists($cuesheet);If the file isn't found...
        sleep($CueRetryWait);Sleep for a certain number of milliseconds. In my demo, this is 10ms.
        $s = $s + 1;Increment the number of attempts for looking for the cuesheet.
        if $s = $CueRetryAttempts Then ExitLoop;If the number of retry attempts has reached the maximum amount, give up on this cuesheet.
    WEnd
    FileWrite("debug.txt",$suffix & "Waited for cuefile to exist... (" & $s & ") repetitions, " & $CueRetryWait * $s & "ms" & @CRLF);Write to debug how long we've waited for file to appear.
    If FileExists($cuesheet) Then;If the file does indeed exist...
        local $s = 1
        While FileMove($cuesheet,"C:\Program Files\Exact Audio Copy\TMP\" & $suffix & ".cue",1) = 0;While MoveCuesheet Fails ... (In this case, the renamed file is simply ONLY the suffix, but it's sufficient for this demo)
            sleep($CueRetryWait);Sleep for a certain number of milliseconds again. In my demo, this is 10ms.
            $s = $s + 1;Increment the number of attempts for moving the cuesheet.
            if $s = $CueRetryAttempts Then ExitLoop;If the number of retry attempts has reached the maximum amount, give up on moving this cuesheet.
        WEnd
        FileWrite("debug.txt",$suffix & "Waited to move cuefile... Took (" & $s & ") attempts, " & $CueRetryWait * $s & "ms" & @CRLF);Write to debug how long we've waited for file to appear.
    ;FileWrite("debug.txt",$suffix & "Moving Cuesheet... took " & $s & " attempts." & @CRLF);Write to debug to let it know which condition fired.
    Else;If File didn't exist, most likely because the first loop timed out waiting for it to show up
        FileWrite("Debug.txt",$suffix & "Loop has ended, but file didn't exist... Presumably, ControlSend() failed." & @CRLF);Write to debug to let it know which condition fired.
    EndIf
EndFunc


What happens in the above code:

1) Declare Globals, Delete stagnant debug.txt (if any)
2) Call fMakeCuesheet function for the Multiple w/ Leftout Gaps cuesheet.
3) Delete stagnant cuefile if any
4) Send our Key Press.
5) Wait for Analyzing window to subside (Different loops used for Index detection and Gap detection, so we can stall differently for each.) Waits until Analyzing window goes away.
6) Stall until the cuesheet exists. At this point, since the Analyzing window has subsided, it usually exists at this point, but doesn't always. Waits a maximum of 5 seconds before giving up.
7) Stall until the cuesheet is MOVABLE. Sometimes moving fails the first time, so we loop until we are sure to be able to move it. Waits a maximum of 5 seconds before giving up.
8) Repeat steps 3-7 for remaining 3 cuesheets.


Some sample outputs from the debug.txt, which I feel are very telling about the different stages at which Cuesheet extraction has failed in the past:

Example debug.txt for a CD that has had gaps pre-detected:
Quote
(M)Waited for Index Analysis to Finish... (0) repetitions, 0ms
(M)Waited for Gap Analysis to Finish... (0) repetitions, 0ms
(M)Waited for cuefile to exist... (9) repetitions, 90ms
(M)Waited to move cuefile... Took (2) attempts, 20ms
(MC)Waited for Index Analysis to Finish... (1) repetitions, 10ms
(MC)Waited for Gap Analysis to Finish... (0) repetitions, 0ms
(MC)Waited for cuefile to exist... (0) repetitions, 0ms
(MC)Waited to move cuefile... Took (1) attempts, 10ms
(S)Waited for Index Analysis to Finish... (0) repetitions, 0ms
(S)Waited for Gap Analysis to Finish... (0) repetitions, 0ms
(S)Waited for cuefile to exist... (5) repetitions, 50ms
(S)Waited to move cuefile... Took (2) attempts, 20ms
(MG)Waited for Index Analysis to Finish... (0) repetitions, 0ms
(MG)Waited for Gap Analysis to Finish... (0) repetitions, 0ms
(MG)Waited for cuefile to exist... (9) repetitions, 90ms
(MG)Waited to move cuefile... Took (1) attempts, 10ms

Things to notice:
1) Sometimes the script required waiting for the "Index Analysis" window to go away (this is the window you see flicker sometimes when you go to extract cuesheets.) You can see this for the (MC) loop.
2) Sometimes the script required waiting to be able to move the cuesheet, you can see this on the (S) loop.
3) Usually the script needs to wait various periods of time for the cuefile to actually exist. (seen on M, S, and MG loops)

Example debug.txt for a CD that requires Gap Analysis:
Quote
(M)Waited for Index Analysis to Finish... (0) repetitions, 0ms
(M)Waited for Gap Analysis to Finish... (14) repetitions, 14000ms
(M)Waited for cuefile to exist... (0) repetitions, 0ms
(M)Waited to move cuefile... Took (1) attempts, 10ms
(MC)Waited for Index Analysis to Finish... (0) repetitions, 0ms
(MC)Waited for Gap Analysis to Finish... (0) repetitions, 0ms
(MC)Waited for cuefile to exist... (2) repetitions, 20ms
(MC)Waited to move cuefile... Took (1) attempts, 10ms
(S)Waited for Index Analysis to Finish... (1) repetitions, 10ms
(S)Waited for Gap Analysis to Finish... (0) repetitions, 0ms
(S)Waited for cuefile to exist... (1) repetitions, 10ms
(S)Waited to move cuefile... Took (2) attempts, 20ms
(MG)Waited for Index Analysis to Finish... (0) repetitions, 0ms
(MG)Waited for Gap Analysis to Finish... (0) repetitions, 0ms
(MG)Waited for cuefile to exist... (2) repetitions, 20ms
(MG)Waited to move cuefile... Took (2) attempts, 20ms

Things to notice:
1) Waits a long period of time only on the first Gap Analysis wait period for (M) loop (14s)
2) Never waits at Gap Analysis for any amount of time ever again.



Remaining Issues this Demonstration does not solve:
1) ControlSend() will fail if the EAC window is minimized, but NOT if the window is merely inactive.


Key Points:
1) It never mistakes cuefiles for the wrong type.
2) Won't fail because it works too fast. (e.g, doesn't get ahead of itself.)
3) Will finish quickly (with loops between 10, 100 and 1000ms) for different checks, potentially finishes even faster than the current CueSheet loop and without repercussion.
4) Good debug output!

REACT 2 Released

Reply #939
Hello all, I love REACT, but I'm having a small problem with meta data.  I'm using EAC v0.99pb3 and REACT v2.0.ssb16n, which are the latest for both I believe. I've tweaked my REACT.ini as follows:

[Settings]
...
Test=@testandcopy@
...
...
[UserSettings]
...
Opt_LameMP3=@lameoptions@
...
...
[DefaultMetaData]
...
extractmethod=Secure
testandcopy=0
lameoptions=-V1 --vbr-new --noreplaygain

extractmethod works correctly, both .cfg files put it into TSSE along with the lame settings by . Changing it between Secure, and Burst Test and Copy with Alt-F5 puts the correct string into TSSE.  This lets me keep track of the extraction method for tracks in case I find artifacts.  I'm still uncertain which is the best method. This meta data isn't accessed in REACT.ini, but the both .cfg files find it.

lameoptions  works correctly.  I can use Alt-F5 to change lameoptions to -V5 --vbr-new --noreplaygain, and the new settings are passed to lame.  I checked the bitrate and encoder setting values in the .mp3 file with Mp3tag, and everything is as expected.  The file was encoded with -V5 instead of -V1. This meta data is accessed only in REACT.ini, and the assignment to Opt_LameMP3 is working correctly.

When I change testandcopy to 1 however, EAC just does a copy without a test pass.  I tried setting the default value of testandcopy to 1, but that didn't help. If I change Test=@testandcopy@ to Test=1 in the REACT.ini file and save it, EAC does a test and copy.

What in the world am I doing wrong?

EDIT: I know extractmethod is a kludge, but I haven't found a way for REACT to know whether Burst or Secure is selected in EAC.  It would be very useful if there was a way to pass that information to REACT.

Thanks,
dd_wizard

REACT 2 Released

Reply #940
What in the world am I doing wrong?


the MetaData is replaced only after the Command Line encoder has been called (after extraction has finished), whereas the "Test" value is required before extraction even begins. I believe the same goes for all User* sections as well. "Test" is at the top for a reason, unfortunately; These settings are read by REACT prior to extraction.


Edit: If you want to know about Secure mode, take a look at HKCU\Software\AWSoftware\EAC\Drive Options\ and under Drive Options will rest a folder with your drive's name in it, and under that there is the key "Extraction Mode". This is the one you want. Burst is 00, Fast is 01..

Secure (+AS -Cache -C2) is 03.
Secure (-AS +Cache -C2) is 04.
Secure (+AS +Cache -C2) is 05.
Secure (+AS -Cache +C2) is 06.
Secure (+AS +Cache +C2) is 07.

You can read these values from the CFG file by using REG QUERY "HKCU\Software\AWSoftware\EAC\Drive Options\Optiarc DVD RW AD-7530A EX32" /v "ExtractionMode"

..filling in for your Drive in where needed, though how to convert this result into a usable variable all from within a .cfg I do not know.

Sorry for getting your hopes up, unless you're some sort of DOS wizard!

REACT 2 Released

Reply #941
Edit: If you want to know about Secure mode, take a look at HKCU\Software\AWSoftware\EAC\Drive Options\ and under Drive Options will rest a folder with your drive's name in it, and under that there is the key "Extraction Mode". This is the one you want. Burst is 00, Fast is 01..

Secure (+AS -Cache -C2) is 03.
Secure (-AS +Cache -C2) is 04.
Secure (+AS +Cache -C2) is 05.
Secure (+AS -Cache +C2) is 06.
Secure (+AS +Cache +C2) is 07.

Sorry for getting your hopes up, unless you're some sort of DOS wizard!


Is DOS unix?  LOL  That is interesting and worth looking at, so I probably will.  I notice that a few variables are available in the [Settings] section, surrounded by $ instead of @.  Are those described in this thread?  Don't tell me where, I just don't want to wade through every post if it's a fruitless venture.

EDIT: Haha .  I was just going to edit my post to suggest HKCU instead of my user hive.  That's definitely a better idea than the first one.

Thanks,
dd_wizard

REACT 2 Released

Reply #942
I notice that a few variables are available in the [Settings] section, surrounded by $ instead of @.


Variables surrounded by $ are "file-safe" versions. They replace illegal characters. I don't know if they work for all the variables, but I do know they work for all the key ones-- Artist, Album, Title, etc. The wiki only mentions it briefly at the beginning of the article. Look at the HA Wiki for a full list of user-available tokens.

As for UNIX, no, no. I'm just referencing the Registry, where EAC keeps all its settings. You can easily read the registry with "REG QUERY" in the .cfg script, but I don't know how to store the results of that query as a variable so you can convert your findings into a usable tag: I'll be honest, it'd be a lot easier to edit the .au3 sourcefile for react and recompile; using AutoIt's RegRead() function, but if that doesn't sound like a jolly good time to you, I would certainly advise against messing with the AU3 code  Don't be an idiot like me

Edit: Yeah, it's late. I forgot about HKCU until I realized how ugly my Registry was... kept wondering why I never noticed it being that ugly. Realised I had pointed you to a static user key . I'll be going to sleep now

REACT 2 Released

Reply #943
the MetaData is replaced only after the Command Line encoder has been called (after extraction has finished), whereas the "Test" value is required before extraction even begins. I believe the same goes for all User* sections as well. "Test" is at the top for a reason, unfortunately; These settings are read by REACT prior to extraction.

Since variables in the [Settitngs] section are replaced when F4 or F10 are pressed, i.e. before extraction begins, is there any chance a future release of REACT will replace MetaData in the same way?

Edit: If you want to know about Secure mode, take a look at HKCU\Software\AWSoftware\EAC\Drive Options\ and under Drive Options will rest a folder with your drive's name in it, and under that there is the key "Extraction Mode". This is the one you want. Burst is 00, Fast is 01...

Since it is possible to queue multiple encoding tasks, the registry could reflect the current extraction method rather than the extraction method EAC used for a queued encoding task.  Wouldn't it be safer to parse the appropriate log file for "Read Mode :"?

Thanks,
dd_wizard

REACT 2 Released

Reply #944
1) Variables in the [Settings] section aren't replaced, unless you use them in the .cfg. REACT, when it is time to run a compression thread, (e.g, when it is called via command line by EAC) will take the .cfg files and replace the tokens contained within with the "current data" and then rename it as a .bat file, and run it.

So the variables in the .ini only get replaced when they are read in that .cfg script. Because [Settings] are read by REACT directly, they are not replaced, and I doubt this functionality would be implemented any time soon.

For instance, say you press F10 to start tracks mode... REACT issues an IniRead() command of sorts to obtain the value of Test= to see if it should test or not. The variable replacing part only occurs for the .cfg, so direct hits to the .ini don't see anything replaced.

Honestly, why not just use the standard test value?


2) I guess you have a point, but how often are you going to change the extraction method while you're still compressing things? But if you can parse the logfile, godspeed... that does sound a lot easier than murking with the registry, but I just always think of the hard way first

REACT 2 Released

Reply #945
Honestly, why not just use the standard test value?


Elegance?    If I can define all my extraction and encoding settings with MetaData, there's no need to edit the .ini file.  Looks like that's not an option for now.  And thinking about how an ini file is read by the app, replacing tokens would require some special coding.  With all the other enhancements/fixes going on, this would be a really low priority.

Thanks for  the answers,
dd_wizard

REACT 2 Released

Reply #946
Dear nago, you didn't insult me or my fixes, nonono.  Instead you lured me back to REACT... I was taking a vacation from it because I was frustrated.. back on the "stress train" I s'pose, thanks. 

Remaining Issues this Demonstration does not solve:
1) ControlSend() will fail if the EAC window is minimized, but NOT if the window is merely inactive.
This is something we can't fix.

Key Points:
1) It never mistakes cuefiles for the wrong type.
2) Won't fail because it works too fast. (e.g, doesn't get ahead of itself.)
3) Will finish quickly (with loops between 10, 100 and 1000ms) for different checks, potentially finishes even faster than the current CueSheet loop and without repercussion.
4) Good debug output!
I looked at your code and debug logs and I thought to test a bit... ended up with the following after many hours:
Code: [Select]
- Added your suggestion of "Indices Detection 'Analyzing' window" pause.
- Added your suggestion of "cuefile locked" pause.
    - Plus fixed/added enhancement to it: retry/abort option to user if file locked over 5 secs.
      (I guess REACT shouldn't continue if the file can't be moved (renamed)...?)
- Modified the pauses in the cuesheet generation.
- Modified the "Missing Cuesheet" dialog to only show Retry and Cancel buttons. (Ignore removed because it's foolish to ignore missing cuesheet! Especially if infocuesheet is missing in track mode.)
- Fixed a _very_ rare (if ever) occurring problem with locked cuefile.. anyways, it's covered. :)
- Fixed a problem in the fMoveCuesheet() function when there's a left behind cuesheet.
- + minor changes (debug messages, cuefile deletions, etc.)
PM me and give me your email so I can send you the code. I'd love to hear if these fixes work for you.

Here's my debug log:
Code: [Select]
2007-12-14 03:37:18  Creating a cuesheet to glean information
2007-12-14 03:37:20  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:21  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:22  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:23  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:24  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:25  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:27  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:28  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:30  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:31  Waiting for the Gap Detection 'Analyzing' window to disappear
2007-12-14 03:37:32  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\REACT.cue'
2007-12-14 03:37:32  Creating cuesheets
2007-12-14 03:37:32  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\te'stin'g.[s].cue'
2007-12-14 03:37:33  Waiting for the Indices Detection 'Analyzing' window to disappear
2007-12-14 03:37:33  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\te'stin'g.[mg].cue'
2007-12-14 03:37:33  Waiting for the Indices Detection 'Analyzing' window to disappear
2007-12-14 03:37:33  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\te'stin'g.[m].cue'
2007-12-14 03:37:34  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\te'stin'g.[mc].cue'
2007-12-14 03:37:34  Copy Tracks Beginning...

2007-12-14 03:37:34  - END -

2007-12-14 03:37:45  Creating a cuesheet to glean information
2007-12-14 03:37:45  Waiting for the Indices Detection 'Analyzing' window to disappear
2007-12-14 03:37:46  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\REACT.cue'
2007-12-14 03:37:46  Creating cuesheets
2007-12-14 03:37:46  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\te'stin'g.[s].cue'
2007-12-14 03:37:46  Waiting for the Indices Detection 'Analyzing' window to disappear
2007-12-14 03:37:46  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\te'stin'g.[mg].cue'
2007-12-14 03:37:47  Waiting for the Indices Detection 'Analyzing' window to disappear
2007-12-14 03:37:47  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\te'stin'g.[m].cue'
2007-12-14 03:37:47  Waiting for the Indices Detection 'Analyzing' window to disappear
2007-12-14 03:37:47  Cuesheet 'D:\Music\RIPPED\EAC\te'stin g.CUE' moved to 'D:\Music\RIPPED\EAC\te'stin'g.[mc].cue'
2007-12-14 03:37:47  Copy Tracks Beginning...
As you can see the first rip (no gaps detected yet) takes only 2-3 seconds after gaps have been detected to start the actual ripping. The 2nd rip (gaps known) takes only 2 seconds to start the actual rip. Too slow? Are we building a rocket here?  On the other hand, it's completely fine to trim the procedure if you're planning your fixes to completely new REACT mod.


Have you asked Jan S. for access to wiki? I'll contact him tomorrow.


I still would like to ask somebody if the new REACT forum could be started.. I just don't know who to ask.. Jan S.? It's really hard to communicate/develop/help others here in this one forum thread. Actually this is what is alienating me from REACT development.


And oh yes, almost forgot (hmm, why's that? Look above for explanation.), I'll look at the caret-escaping thing when I've more time. Ok?


And one thing more before I forget it: It would be nice to add the new (better looking) EAC icon to new REACT version.. if/when that happens.


@ Synthetic Soul:
About the last "clash" we had (I said that I was done with this subject.. not); I think we've very hard time understanding each other. That's normal, it happens between some people. I do apologize that I accused you of "attacking" me.

REACT 2 Released

Reply #947
I did get in touch with Jan S for wiki access, but I'm waiting to roll together a few things before I bother editing the wiki. When my edits are complete (or complete enough) I'll post them to this thread first and a few of my friends, do some bug testing, and then I'll post it to the wiki as a beta.

Slow and steady wins the race!

REACT 2 Released

Reply #948
I would like to Thank everyone for putting in the effort to making REACT such great program. The Wiki helped a lot configuring REACT. I'm now able to rip to flac and mp3 simultaneously.  I'm going to keep an eye thread for updates and the such, would like to help but I'm newb ATM 


Thank You!!!

REACT 2 Released

Reply #949
1) Variables in the [Settings] section aren't replaced, unless you use them in the .cfg. REACT, when it is time to run a compression thread, (e.g, when it is called via command line by EAC) will take the .cfg files and replace the tokens contained within with the "current data" and then rename it as a .bat file, and run it.

Actually, variables in the [Settings] section are never replaced.  If you reference @Test@ or @EAC@ in the .cfg, you get back @Test@ or @EAC@. So I had to use MetaData to  pass the value of Test to the .cfg files.  The following does what I wanted to do, but would be cleaner if @Test@ was available:
Code: [Select]
REM ============== Begin Gene's Mods ==================

REM Test is only performed for non-zero numbers in @Test@
set /A TestPerformed = @testandcopy@ + 0
set ExtractMethod=Copy
IF %TestPerformed% NEQ 0 set ExtractMethod=Test and %ExtractMethod%

REM Prepend EAC's read mode, grep would be a LOT more robust
REM There is one space between the : and Burst, and 15 between the : and Secure
find "Read mode : Burst" "@eaclog@" > NUL
IF NOT errorlevel 1 set ExtractMethod=Burst %ExtractMethod%
find "Read mode               : Secure" "@eaclog@" > NUL
IF NOT errorlevel 1 set ExtractMethod=Secure %ExtractMethod%

REM Add Verified by database to comment if it's set
set CommentField=@Comment@
IF "@verifiedby@" NEQ "" set CommentField=%CommentField%, verified by @verifiedby@
set CommentField=%CommentField%. @curdate@

REM =============== End Gene's Mods ===================

ExtractMethod goes into TSSE as $qEAC %ExtractMethod%; LAME ...$q. Replace LAME ... with the appropriate encoder info in aac, ogg, etc.

1. Is there any particular reason why the variables in the [Settings] section aren't tokenized?  This slowed me down quite a bit while I figured out what was going on.

I put the mod in the Image section of image.cfg right after the wait for @eaclog@ is satisfied.  I added a wait loop to track.cfg in the Track section ahead of my mod.  While testing things, I noticed that REACT.cue gets generated when F4 is pressed to encode in track mode.  I added a little code to clean it up and blew away all the files in my music directory, not many and none important.  LOL

In track mode, @cuesheet@ is empty, so del "@cuesheet@" becomes del "".  Apparantly del "" is the same as del * in unix.      I guess I'll find the appropriate path variable in the image.cfg and fix the cleanup code I put into track.cfg.

2. If REACT-track.cfg doesn't even know the path to REACT.cue, why is it created when F4 is pressed?

EDIT: That's what I get for testing track mode ripping on one track.  @eaclog@ isn't created until the last track is ripped, so checking for the rip mode in the log file works great in image mode but forces all the tracks to queue up in track mode.  Back to the drawing board.

Thanks,
dd_wizard