Spoon will soon have a tool to check crc accuraterip values against the file and the accurterip db for files ripped to lossless formats w/ dbpoweramp. I know it doesnt help w/ EAC but I am not aware of a solution there.

So far I found only this tool:http://www.cdtag.com/However, there is some bug in this function so it doesnt work.

I tried also doing such a compare manually:-decoding flac to wav-calculating CRC value of wav-comparing it with CRC sorted in log fileand they all the time were different! Why is that? How exactly EAC CRC is calculated?

Now I will play a little, maybe it will be possible to make a simple batch file which would decode each flac file to stdout, calculate crc and save to txt file. Comparing could be done manually, not a big problem. However, parsing log file shouldnt be hard to do as well.

You definetly should decode to raw pcm or cut wave header. That's how they usually calculate checksums for audio.

Uh, yeah. It works with every tool that calculates CRC32... thanks, that's all I need to know.

So for decoding a FLAC to RAW PCM one can simply use this "flac -d --force-raw-format --endian=little --sign=signed <infile.flac> <outfile.raw>" and then a tool like fsum to get the CRC. It should be the same as the one in EAC's logs, unless EAC uses some sort of derivate of CRC32 like eDonkey2000 did with MD4.

Only problem now is to optimise checking the CRCs with as little temp files as possible, ideally none and using pipes instead. And of course accepting all major lossless input formats.

Oh wait, Triza's post mentions the fact that EAC knows two ways to calculate the CRC, it's either based on audio with silence or without silence.

I think a proper tool for checking the CRCs should take this into account. Luckily he already did most of the work for us. All you have to do is change his code, for instance so that both CRCs are written to stdout or implement a command line switch to choose which CRC to use.

// Skip silence when calculate CRC. If EAC is set so that it // does not skip silence when CRC is calculated, remove this if // statement, or change its condition to non-zero, so it is always // true.

As I said in my previous post, EAC knows two ways of calculating the CRC and unfortunately it's not mentioned in the EAC log which one was used, so you have to try both ways when you're not sure. That's what I was talking about in my previous post... so try this:

Yeah, I am aware of that, been doing this by changing 0 to other digit in if statement. Same result as your code (tested to be 100% sure).This program gives 4969EC84 or 23DCDBC3 (depends on that silence), while it should return 8875EB97 (value in log as well as when calculating crc of: flac.exe -d -c -f --totally-silent --force-raw-format --endian=little --sign=signed 1.flac >out.raw )

Thats probably because I suck at c programming Just googled the errors and changed a little bit code. I have no idea how to do it in Cygwin, and now I dont really want to mess with it moderation: CODE => CODEBOX

I tried about two years ago to compile it with MinGW but the binary provide a different CRC.Cygwin compiled binaries (cygwin1.dll needed) work perfect here.

for %%f in (*.log) do (rem opens .log in notepad, to open in default app for .log files chage next line to: "%%f"notepad.exe "%%f")

IF errorlevel=1 GOTO failGOTO end:failecho.echo Sth is wrong.echo.pause:endrem uncomment next line to prevent cmd window from closingrem pause

Save as .bat and use in foo_run, total commander, windows explorer or any other tool Could be 100% effective if I would know some way to compile Triza code. Maybe I will make own tool for this in c, for now this must be enough