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 286476 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

New tool: React - [Run EAC Tasks]

Reply #275
Quote
I have added the REACT and Config INI’s as I have edited them. I have tried to understand exactly what the REACT and Config INI files are doing but basically I don’t understand it all and so I have a few questions:

1. Is REACT doing replaygain on the WAV and therefore (as I understand) is lossey or is it doing replaygain on the FLAC and MP3´s and therefore (again as I understand) is lossless and therefore if I choose, it can be ignored during playback?

2 Is REACT doing album gain to the FLAC and MP3?

3. What type of tags are added to the FLAC and MP3´s, and can it add ID3v1 and ID3v2 tags to MP3´s. As I believe this gives the extra allowance for information of ID3v2 but also general player acceptability of ID3v1?

Quote
Re A. I can see the tags under your 1. and 4. but don't understand exactly what information is going to be held in the tags.

Re B. I see the album and track gain on the flac under your 8. but not on the MP3's. Also when I play back, can I choose to ignore these and therefore choose to listen to the original unaltered music?

Re C. I can see getting album art under your 9. and this being put into dest2. Does it also place it dest1?


1. REACT only analyses the WAV files and finds the RG values. It then only put these in as tags in the FLAC files. On the MP3's, REACT apply the album gain (--scale),  and therefore changes the volume in every mp3 frame in the files while encoding.  The rationale is that mp3's are mostly used on hardware players, which does not recognise replay gain values in LAME or APE2 tags (as foobar does), and therefore this approach is normally better for MP3.

2. Explained in 1.

3. The FLAC files get vorbis-comment tags (only one allowed in flac), and the mp3's gets id3v1 tags, I believe. Tag.exe does not write id3v2 tags, so if you want that and also mp3's scaled to album gain level, you must rewrite the config, so that lame.exe encodes and tags your files, and then when all tracks are ripped, you must apply mp3gain.exe to change the volume.

A. Explained in 3.

B. As said, no RG tags in the MP3s - the files will be played with album gain volume level on every player.

C. Albumart is a semi-automatic feature. You must manually save the right jpg. The config script cannot copy the jpg file from dest1 to dest2, because you may not yet have saved it. You start albumart.exe twice with different save targets (dest1 and dest2).

New tool: React - [Run EAC Tasks]

Reply #276
Questions from a newbie:

So, all I have to do is copy the parameters contained within whichever one of the notes files that pertains to what I'm trying to do: i.e. Wavpack Image.  I then paste this within the .ini file, correct?

Also, does the EAC executable have to be within the React folder?  I tried running React today, and, while it did format EAC, it couldn't open it.

Thanks.

P.S.  What I'm mainly trying to do is to get a Wavpack image with embedded cuesheet along with either mp3's or ogg files. 

P.S.S.  Are there any notes for config's for the new Nero AAC encoder?

New tool: React - [Run EAC Tasks]

Reply #277
You must manually edit the INI file, and set e.g. Config=WV_MP3. REACT will then use the scripts in the files "Config\WV_MP3-tracks.txt" and "Config\WV_MP3-image.txt" when hitting F4 and F10 respectively.

REACT does not need to be within the EAC folder, but you must have ran EAC before launching REACT for the first time in order for REACT to see where EAC is located. You can manually edit the REACT INI file and set EAC=<full path to EAC>.

To make use of the new Nero AAC encoder, download it first (link in Readme.txt), and put the .exe in the "Encoders" folder. In the INI file, set Config=MP4 or Config=WV_MP4 (if you want both wavpack and aac files).

New tool: React - [Run EAC Tasks]

Reply #278
Re A.  I can see the tags under your 1. and 4. but don't understand exactly what information is going to be held in the tags.

The tag information comes from EAC. Either what comes from FreeDB or what you type in. In 4 I think it comes form the cuesheet made by EAC

Re B.  I see the album and track gain on the flac under your 8. but not on the MP3's.  Also when I play back, can I choose to ignore these and therefore choose to listen to the original unaltered music?

I couldn't figure out a way to get album gain for the mp3s only the track gain in 5

In the options of most players is a check box to read or not to read the replay gain info

Re C.  I can see getting album art under your 9. and this being put into dest2.  Does it also place it dest1?

13

New tool: React - [Run EAC Tasks]

Reply #279
[quote name='tycho' date='May 24 2006, 19:22' post='395594']
Quote

Tag.exe does not write id3v2 tags, so if you want that and also mp3's scaled to album gain level, you must rewrite the config, so that lame.exe encodes and tags your files
Quote


Thanks Karit and Tycho for answering my questions, it is appreciated.

What do I need to add to the config to add id3v2 tags?

In fact: Perhaps you should set up a service where people like me who don't have the technical ability to rewrite the configs could pay you a fee to do it for us.

I for one would be prepared to pay to have someone rewrite the configs to get them to do exactly what I want them to do (which will most probably be different from what the next person wants them to do).

Even after your kind help, I am not entirely sure that I will be able to achieve everything.

Let me know if this could work.  Thanks again.

New tool: React - [Run EAC Tasks]

Reply #280
You must manually edit the INI file, and set e.g. Config=WV_MP3. REACT will then use the scripts in the files "Config\WV_MP3-tracks.txt" and "Config\WV_MP3-image.txt" when hitting F4 and F10 respectively.

REACT does not need to be within the EAC folder, but you must have ran EAC before launching REACT for the first time in order for REACT to see where EAC is located. You can manually edit the REACT INI file and set EAC=<full path to EAC>.

To make use of the new Nero AAC encoder, download it first (link in Readme.txt), and put the .exe in the "Encoders" folder. In the INI file, set Config=MP4 or Config=WV_MP4 (if you want both wavpack and aac files).


Thanks for the reply.  Your answers were very brief and succint.  Exactly what I needed. 

One last question: How can I incorporate the Itunes cover downloader?

New tool: React - [Run EAC Tasks]

Reply #281
it silently bombs out (seemingly randomly, though -- sometimes works, sometimes doesn't -- eg, repeated process on same disc), leaving no final .wv (but it does leave the .wv.cue)....
Is it possible it works sometimes because the previous unsucessful run leaves some files behind that are required?  For instance, it may bomb out as the cuesheet can't be found, the cuesheet is then created, and the next run finds the cuesheet created previously...


baning my head against the wall still. downgraded back to 0.966.1 and REACT's success rate (not retuning to 'normal EAC mode' and hence bailing at the final compression step) is substantially improved. there is seeminly no rhyme nor reason for REACT going back to 'normal EAC mode' (i've attemped repeated rips, deleted left over files, sometimes it works, sometimes it bails). this is 100% reproducible across several different PCs, using multiple versions of REACT.
the only theory i seem to be able to come up with, is that REACT is turning into 'normal EAC mode' (and bailing) more often (??apparently??) when ripping is slow. this makes life more frustrating as when you have a disc that takes hours (or even days) to rip, all that time is lost in the end.

New tool: React - [Run EAC Tasks]

Reply #282
ok...got some more info to try to figure this one out. turned on debugging (in REACT 0.966.1). From the output below, it seems the problem is:
error in tag spec: EACLOG=@C:\tmp\Ripping\Stuck In A Moment [CID 770].log !

however, in REACT/eac, I have Genre and freedb both set to "Rock".  if i repeat this same rip a few more (random) times, it will complete. ideas ?

Active code page: 1252
Disc info  : "U2" - "Stuck In A Moment [CID 770]"
Description : "Wavpack image with APEv2 RG album tags and embedded cuesheet and
EAC log"

C:\Program Files\REACT>C:\PROGRA~1\AUDIO_~1\WaveGain.exe -a "C:\tmp\Ripping\Utmp
1!542.wav" --exec C:\PROGRA~1\AUDIO_~1\wavpack.exe -hmy -w "ARTIST=U2" -w "ALBUM
=Stuck In A Moment [CID 770]" -w "YEAR=2001" -w "GENRE=Rock" -w "REPLAYGAIN_ALBU
M_GAIN=%ALBUM_GAIN% dB" -w "REPLAYGAIN_ALBUM_PEAK=%ALBUM_PEAK%" -w "REPLAYGAIN_T
RACK_GAIN=%TRACK_GAIN% dB" -w "REPLAYGAIN_TRACK_PEAK=%TRACK_PEAK%" -w "CUESHEET=
@C:\tmp\Ripping\U2 - (2001) Stuck In A Moment [CID 770].wv.cue" -w "EACLOG=@C:\t
mp\Ripping\Stuck In A Moment [CID 770].log" "C:\tmp\Ripping\Utmp1!542.wav" "C:\t
mp\Ripping\U2 - (2001) Stuck In A Moment [CID 770].wv"

Analyzing...

    Gain  |  Peak  | Scale | New Peak |Left DC|Right DC| Track
          |        |      |          |Offset | Offset | Track
--------------------------------------------------------------
  -8.43 dB |  32767 |  0.38 |    12415 |  -2  |    0  | C:\tmp\Ripping\Utmp1!5
42.wav

Recommended Album Gain:  -8.43 dB      Scale: 0.3789


WaveGain Processing completed normally

Executing command on "C:\tmp\Ripping\Utmp1!542.wav":


WAVPACK  Hybrid Lossless Audio Compressor  Win32 Version 4.31  2005-12-10
Copyright © 1998 - 2005 Conifer Software.  All Rights Reserved.

error in tag spec: EACLOG=@C:\tmp\Ripping\Stuck In A Moment [CID 770].log !

C:\Program Files\REACT>del "C:\tmp\Ripping\Utmp1!542.wav" "C:\tmp\Ripping\Stuck
In A Moment [CID 770].log"

C:\Program Files\REACT>move "C:\tmp\Ripping\U2 - (2001) Stuck In A Moment [CID 7
70].*" "C:\tmp\Ripping\IMAGES\U2"
C:\tmp\Ripping\U2 - (2001) Stuck In A Moment [CID 770].wv.cue

C:\Program Files\REACT>pause
Press any key to continue . . .

New tool: React - [Run EAC Tasks]

Reply #283
ok...got some more info to try to figure this one out. turned on debugging (in REACT 0.966.1). From the output below, it seems the problem is:
error in tag spec: EACLOG=@C:\tmp\Ripping\Stuck In A Moment [CID 770].log !

however, in REACT/eac, I have Genre and freedb both set to "Rock".  if i repeat this same rip a few more (random) times, it will complete. ideas ?


a bit more...as i watch the files being generated by REACT, the .log .cue and .wav all get generated by REACT, while ripping, REACT loses it's tray icon (returning to 'normal' EAC mode), and the .log vanishes at that point, hence wavpack bailing. can i provide any more info ?

New tool: React - [Run EAC Tasks]

Reply #284
Is the log actually called "C:\tmp\Ripping\Stuck In A Moment [CID 770].log"?  Is it available at that time?

If you go to EAC Options' Tools tab do you have "Automatically write status report after extraction" checked?
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #285
Your problem seems to be that there is no EAC log, and it complains about the EACLOG tag which reference to this file. REACT self-configuration (first time use, or Ctrl-F2) sets up EAC to save a log after ripping, so I figure you have this option enabled in EAC. However, REACT relies on detecting the "ripping done" dialog and closes that. First then is the EAC logfile file written to disk. Something seems to go wrong here.

To get around the problem, remove the EACLOG=@.... tag from your setup. You won't get an embedded log file in your wavpack image, but that may be ok for you.

Edit: Hi, Synthetic Soul - I didn't see your post

New tool: React - [Run EAC Tasks]

Reply #286
Is the log actually called "C:\tmp\Ripping\Stuck In A Moment [CID 770].log"?  Is it available at that time?

If you go to EAC Options' Tools tab do you have "Automatically write status report after extraction" checked?


yes. the log is indeed there, created by REACT upon beginning ripping. once the tray icon disappears, EAC continues ripping, the cue and wav are left but the log disappears.

New tool: React - [Run EAC Tasks]

Reply #287
robin, can you specify exactly when in the process the tray icon disappears?

New tool: React - [Run EAC Tasks]

Reply #288
robin, can you specify exactly when in the process the tray icon disappears?


loaded up a different disc. just got to about 55% and the tray icon disappeared. seems entirely random....or perhaps when ripping drops below 1x. or when error correction kicks in. i seriously cannot tell. argh

 

New tool: React - [Run EAC Tasks]

Reply #289

robin, can you specify exactly when in the process the tray icon disappears?


loaded up a different disc. just got to about 55% and the tray icon disappeared. seems entirely random....or perhaps when ripping drops below 1x. or when error correction kicks in. i seriously cannot tell. argh


yeah. that failed.
closed EAC (_was_ REACT), relauched, reconfigured (ctrl-F2), same disc that lost the tray icon last time near 55% already has the try icon lost at only 7%.

New tool: React - [Run EAC Tasks]

Reply #290


robin, can you specify exactly when in the process the tray icon disappears?


loaded up a different disc. just got to about 55% and the tray icon disappeared. seems entirely random....or perhaps when ripping drops below 1x. or when error correction kicks in. i seriously cannot tell. argh


yeah. that failed.
closed EAC (_was_ REACT), relauched, reconfigured (ctrl-F2), same disc that lost the tray icon last time near 55% already has the try icon lost at only 7%.


repeat above iteration. close REACT (which downgraded to 'normal' EAC) at 7% ripping, removed all extraneous leftover files (wav, cue, etc). relaunched REACT 1.000, reconfigured (ctrl-F2), relauched, began ripping same disc. lost tray icon at about 45%. totally random.

New tool: React - [Run EAC Tasks]

Reply #291
Ok, ok. I get the picture. I think I know a way to fix this.

New tool: React - [Run EAC Tasks]

Reply #292
Ok, ok. I get the picture. I think I know a way to fix this.


awesome. thanks for taking the time to look into this. could you perhaps surmise as to what you think is happening ?

New tool: React - [Run EAC Tasks]

Reply #293
OK, before anyone yells at me, I have spent multiple hours over the last 4 days trying to figure out what to do, and I'm still banging my head against the wall.

If anyone is willing to take pity and help me, I would be eternally grateful.  I have to get rid of virtually everything I own in the next 1-2 months...INCLUDING MY 1500+ CD's!!!  I have been out of work for over a year, and as luck would have it, the job I've been offered is overseas.  I'll be gone for over a year, and frankly can't afford to put stuff into storage right now.  I obviously don't want to lose my music, so I've been frantically trying to figure out how to save it for future use.   

After reading the forums, it looks like the best thing for me to do would be to use REACT with EAC and either FLAC or WavPack to create an archival file, and then LAME to create a good 192 VBR MP3 collection.  I know it's a lot to ask, but I need some kind soul to give me settings to use to what I outlined above.  I would like to be able to re-create my CD's at some point, so does that mean I will have to create a cue sheet with the FLAC files?  I really don't understand that part at all.

Here is what I would like to do.

1. Create a reproducable copy of my CD's using FLAC (or WavPack, if that is better).  I would like to be able to not only re-create the entire CD, but also have a lossless version of each song on the CD (is that possible??).

2. Create 192 VBR MP3's of the same discs.

Right now, not only am I a virtual idiot, but extremely stressed, so I would need someone to take me through with baby steps to help me figure out what the #$% I am doing!

My file structure would be something like this:

1. C:\MUSIC\FLAC WHOLE

2. C:\MUSIC\FLAC SINGLES

3. C:\MUSIC\192

Is there a way for me to setup REACT to do all 3 of these?  If so, please let me know!

Sorry for the long message, but like I said...my music means a LOT to me, and I'm desperate! 

Thanks,
David

New tool: React - [Run EAC Tasks]

Reply #294
Regarding 1 and 2:  Either way you could play individual tracks^ and recreate the CD exactly.*

^ With a player like foobar which can understand cuesheets
* As long as the CD doesn't have a hidden track at TRACK 01 INDEX 00

Having both seems like overkill, especially on 1500+ CDs.

If you have -V2 --vbr-new (approx. 192kbps VBR) LAME MP3s you really shouldn't need to listen to your lossless.

Just trying to save you a few hundred GB...

Edit: We really need to resolve this before anyone can help with the INI, as it will have a major effect on the script used (i.e.: whether an image is used or not).  Two sets of lossless is going to mean an extra 500GB or so over just one...

Firon's WavPack hybrid mode idea (below) does have some mileage, depending on where you plan to listen to your music.
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #295
Well, you can always go the WavPack hybrid route, and use -b400 or something...

New tool: React - [Run EAC Tasks]

Reply #296

Ok, ok. I get the picture. I think I know a way to fix this.


awesome. thanks for taking the time to look into this. could you perhaps surmise as to what you think is happening ?



as a temporary work-a-round, i've put a pause statement before the wavegain/wavpack statement. so when REACT loses it's tray icon, and winds up in 'normal EAC mode', waiting for me to click OK (*after* which the log file is created), i can click "ok", the log file is then created, then i unpause that batch file....

look forward to a permanent solution.

New tool: React - [Run EAC Tasks]

Reply #297
Thanks SyntheticSoul, I didn't realize that about Foobar!   

OK, so I would skip ripping the singles in FLAC (and save some GB!), and then just rip FLAC and VBR 192.  I tried using Karit's settings from a post they put up a few weeks ago, but I somehow screwed it up.  Plus I read in the script something that looked like the old alt -insane preset, which I'm not certain I need.

So here's the new wishlist.

1. Archive everything in FLAC, recreating the CD exactly

2. Create 192 VBR MP3's (using SyntheticSoul's suggestion - I have a 60G iPod, but would also be listening to these at some point through a decent stereo).

In the past, just messing about with MP3's, I created my files like this: C:\Music\MP3\Artist - Album\Track Number - Title.mp3.  I then also create a m3u file for the Album\CD that was: Artist - Album.m3u.

Two questions re: File Structure and m3u's?

1. Can I create a file structure like that using code for REACT?
2. Can I create an m3u file?  Would I not want to for some reason?

Oh, and I also DON'T need to have album art or anything like that.  Right now it's just a waste of space (and time), and if I really get desparate for it I can search for it in the future.  The music is the main thing!

Thank you all SOOO much for your help with this!      Even though I don't post very often (I never really had much to add), I've been a member of this forum for 2 years; primarily because of all the knowledge and VERY helpful people I've seen on the boards.   

David

New tool: React - [Run EAC Tasks]

Reply #298
Try this:

react.ini (C:\Program Files\REACT\react.ini)

Code: [Select]
[Settings]
Config=FLAC-MP3
Version=1.0
EAC=C:\Program Files\Exact Audio Copy\EAC.exe
musicdir=C:\Music
encdir=C:\Program Files\REACT\Encoders
CodePage=1252
MinimizeCompressionWindow=1
ProcessPriority=1
TracksHotkey={F4}
ImageHotkey={F10}
ImageNaming=$artist$ - $album$
Sla_Bks_Col_Qst_Bar_Quo_Ast_Lt_Gt=-|-|-||!|'|#|[|]
Debug=0
TracksHotVal=+{F5}
SaveTracksCuesheets=0
FLAC-MP3-image.txt (C:\Program Files\REACT\Config\FLAC-MP3-image.txt)

Code: [Select]
!Description=FLAC image with -V2 MP3
!ImageExt=flac
!CuesheetExt=flac.cue
!destdir1=@musicdir@\FLAC\$cdartist$\$album$
!destdir2=@musicdir@\MP3\$cdartist$\$album$

@encdir@\FLAC.EXE -8 "@source@" -o "@image@"
@encdir@\TAG.EXE -t "ARTIST=@artist@" -t "ALBUM=@album@" -t "YEAR=@year@" -t "GENRE=@genre@" -t "COMMENT=@comment@" -f "CUESHEET=@cuesheet@" -f "EACLOG=@eaclog@" "@image@"
MOVE "@eaclog@" "@destdir1@"
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 -V2 --vbr-new --add-id3v2 --pad-id3v2 --ignore-tag-errors --ta $#a --tl $#T --tt $#t --tn $#n --ty $#r{DATE} --tg $#r{GENRE} - $#o" "@sourcecuesheet@"
@encdir@\CREATE-M3U.BAT "@destdir2@" "$cdartist$ - $album$"
DEL "@source@"
create-m3u.bat (C:\Program Files\REACT\Encoders\create-m3u.bat)

Code: [Select]
@ECHO OFF
CLS

REM CREATE-M3U.BAT Written by Neil Popham, 2005 (neilpopham@bigfoot.com)

SET batchname=CREATE-M3U.BAT
SET version=1.0.0
TITLE=%batchname%, Version %version%

REM REM ##############################
REM  PLEASE CONFIGURE THESE VARIABLES
REM REM ##############################
REM Set the name of the playlist to create in each folder
IF [%2] EQU [] (SET playlist=playlist.m3u) ELSE (SET playlist=%~2.m3u)
REM Create list of valid file extensions
SET validExtn=.mp3.mp2.mp1.mpc.mp+.mpp.ogg.aac.mac.ape.flac.fla.wv.shn.ofr.ofs.ogg.m4a.mp4
REM REM ##############################

REM Add another delimiter to the end so I can search for .<ext>.
SET validExtn=%validExtn%.

REM Check a folder has been passed
IF NOT EXIST %1 GOTO NoParams
IF %~z1 GTR 0 GOTO NoParams

REM Remove all existing "playlist.m3u" files otherwise files will be appended
FOR /R %1 %%G IN (%playlist%) DO IF EXIST %%G DEL "%%G"

REM Iterate through every file and pass the path to :WriteToPlayList
FOR /R %1 %%G IN (*.*) DO CALL :WriteToPlayList "%%G"

GOTO:EOF

REM ========================================================================
REM  WriteToPlayList : Adds the file to the playlist, if the extension fits
REM                  : %1 The file to process
REM ========================================================================
:WriteToPlayList
REM Check that the file extension is valid
SET extn=%~x1
IF [%extn%] EQU [] GOTO:EOF
SET tmpExtn=%validExtn%
CALL SET result=%%tmpExtn:%extn%.=%%
REM If no match found in list of extensions exit function
IF [%result%] EQU [%validExtn%] GOTO:EOF
REM Escape ampersand and caret
SET tmpString="%~nx1"
SET tmpString=%tmpString:^=^^%
SET tmpString=%tmpString:&=^^^&%
REM Remove quotes
SET tmpString=%tmpString:"=%
REM Write filename to playlist
ECHO %tmpString%>>"%~dp1\%playlist%"
GOTO:EOF

REM =====================================================
REM  NoParams : a folder has not been passed
REM =====================================================
:NoParams
ECHO To run this script, please pass a folder as a parameter.
ECHO.
ECHO Press any key to exit
PAUSE >NUL

Replace the contents of your react.ini file with the text quoted above.  Create a new TXT file in "\Config" called "FLAC-MP3-image.txt" and paste in the text quoted above.  Create a new BAT file in "\Encoders" called "create-m3u.bat" and paste in the text quoted above.

"create-m3u.bat" is a minor adaption of my batch file "create-playlist.bat" and allows you to pass the name of the M3U file as a parameter, which explains the line:

@encdir@\CREATE-M3U.BAT "@destdir2@" "$cdartist$ - $album$"

... in "FLAC-MP3-image.txt".  This should mean that the M3U file is named "<artist> - <album>.m3u".

FLAC image is called "<artist> - <album>.flac" and stored in "C:\Music\FLAC\<artist>\<album>".  MP3s are called "<track> - <title>.mp3" and stored in "C:\Music\MP3\<artist>\<album>".

I think that's about it.

Edit: Sorry, just reread your post.  If you really want "<artist> - <album>" as the folder structure then change:

!destdir1=@musicdir@\FLAC\$cdartist$\$album$
!destdir2=@musicdir@\MP3\$cdartist$\$album$


... in "FLAC-MP3-image.txt" to:

!destdir1=@musicdir@\FLAC\$cdartist$ - $album$
!destdir2=@musicdir@\MP3\$cdartist$ - $album$
I'm on a horse.

New tool: React - [Run EAC Tasks]

Reply #299
That's great, thank you!      I'll just go with the naming convention you laid out, as it doesn't differ much from what I had, and I don't think it makes much difference.

I'm assuming that these settings are to be used with setting up REACT/EAC/LAME/ACDIR as has been previously discussed?

If not, please let me know.

Thanks again, you're a (musical) life saver! 

David