Page 1 of 1
Export Multiple – normalize each track on export
Posted: Fri Jan 11, 2013 8:12 am
by Edgar
Since Normalize is a C++ effect it can be told to function without its GUI dialog; it stores its settings in the CFG file:
Code: Select all
[Effects/Normalize]
RemoveDcOffset=1
Normalize=1
Level=-2
StereoIndependent=0
and uses these settings if the dialog is not presented.

- em.png (45.95 KiB) Viewed 5205 times
I photoshopped this but the code is not hard; if I have some spare time this weekend I will knock it out.
Re: Export Multiple – normalize each track on export
Posted: Fri Jan 11, 2013 12:47 pm
by Gale Andrews
I see it that we need to attach Export Multiple commands to a Chain, or Chains to Export Multiple. I am not sure which way round it should be.
Gale
Re: Export Multiple – normalize each track on export
Posted: Fri Jan 11, 2013 1:55 pm
by steve
Gale Andrews wrote:I see it that we need to attach Export Multiple commands to a Chain
Do you mean, so that the user can create a Chain (sequence) of commands such as :
High-pass filter -> Normalize -> Export Multiple
That has a conceptual problem in that Chains can be applied to either the current project (which would work) or to audio files (which would not work).
There is currently no (official) way to add labels in a Chain, and applying a Chain to files can only act on one file at a time, thus making Export Multiple impossible for batch processing (applying to files).
I don't think that we should be inviting users to do things that can't work, so the only way that I can see this working is if "Chains" functionality is split as separate "batch processing" and "Effect Macro" functions. "Batch Processing" taking over from "apply chain to files" and "Effect Macro" taking over from "apply chain to current project. "Most" Chains could then be available to both "batch" and to "macro", but some commands (such as Export Multiple) would be available only to "macro" and not "batch".
Edgar wrote:Export Multiple – normalize each track on export
Why only for Export Multiple? Why not build it into all Export commands?
It is a very common to want to normalize as a last step before exporting.
When Exporting a project that has multiple tracks as one file, it would be useful for Normalize to be applied after the tracks are mixed.
Re: Export Multiple – normalize each track on export
Posted: Fri Jan 11, 2013 5:24 pm
by Edgar
steve wrote:
Why only for Export Multiple? Why not build it into all Export commands?
It is a very common to want to normalize as a last step before exporting.
When Exporting a project that has multiple tracks as one file, it would be useful for Normalize to be applied after the tracks are mixed.
It is very easy for the user to normalize everything with a keystroke or two just before exporting it but if one has 15 or 30 minutes of LP recorded then broken into 10 or 15 label-separated tracks it is very tedious to select each labeled section individually and normalize them one at a time.
I had also not given any thought as to where in the GUI one would put a checkbox for "normalize on export" except in the case of the Export Multiple dialog. I got quite a ways on the code and currently status of the checkbox (Export Multiple only) is sticky which, given my usage is perfect. Since I do not do much recording with Audacity, and I have "Normalize on import" set to ON, I almost never need to re-normalize when exporting and import.
Re: Export Multiple – normalize each track on export
Posted: Fri Jan 11, 2013 5:38 pm
by steve
Edgar wrote: but if one has 15 or 30 minutes of LP recorded then broken into 10 or 15 label-separated tracks it is very tedious to select each labeled section individually and normalize them one at a time.
Personally, I am unlikely to want to do that. If it is a well produced album, the relative loudness of each track will have been carefully balanced and I'd not want to mess with that - why would I want a purposefully "quiet" track to come out loud?
Edgar wrote:It is very easy for the user to normalize everything with a keystroke or two just before exporting it
but it is a common failure for people working with multi-track projects for the first time to create a mix that is badly distorted because the "mix" is much higher level than the original track.
The "correct" procedure is to mix and render to a single track, then normalize, then export, and if the original multi-track project is to be saved, Undo the mix and render before saving. It would be much quicker and easier to just select "Normalize to ...." in the export dialogue.
Re: Export Multiple – normalize each track on export
Posted: Fri Jan 11, 2013 6:40 pm
by Edgar
steve wrote:Edgar wrote:it is very tedious to select each labeled section individually and normalize them one at a time.
Personally, I am unlikely to want to do that.
Edgar wrote:It is very easy for the user to normalize everything with a keystroke or two just before exporting it
but it is a common failure …
The "correct" procedure …
It would be much quicker and easier to just select "Normalize to ...." in the export dialogue.
Given that it is not easy to change the Export dialog by adding this checkbox I'm going to stay away from that.
Ah, now I see. I keep forgetting that everyone else doesn't use Audacity exactly the same way I do <grin>! When I do a live (or studio) recording, and the Export Multiple is ultimately going to become a CD, that I definitely would not want to normalize individually on export. When I have a piece of vinyl that is 50 years old and I want to put all the tracks on my iPod and listen to them while mowing the lawn or driving the car I do want to make each track loud enough so that I can hear them – for that I want to normalize individually on export.
As it turns out adding this ability to Export Multiple was trivial. Add one variable to the header file, add one line of ShuttleGUI code to the GUI then add four lines of code to ExportMultiple::DoExport():
ExportMultiple.h, a new private variable
ExportMultiple.cpp, ShuttleGUI code in ExportMultiple::PopulateOrExchange()
Code: Select all
mNormalize = S.Id(NormalizeID).AddCheckBox(_("Normalize each track before exporting"), wxT("true"));
ExportMultiple.cpp, the code that does the work in ExportMultiple::DoExport()
Code: Select all
if (mNormalize->GetValue()) {
mProject->mViewInfo.sel0 = t0;
mProject->mViewInfo.sel1 = t1;
mProject->OnEffect(ALL_EFFECTS | CONFIGURED_EFFECT, EffectManager::Get().GetEffectByIdentifier(wxT("Normalize")));
}
Note that this version does not use a TieCheckBox and always defaults to "checked"/ON; storing the user's last choice is also doable.
Re: Export Multiple – normalize each track on export
Posted: Fri Jan 11, 2013 10:36 pm
by steve
I'm guessing that it is hard to add a checkbox to the "Export" dialogue. Is that right?
Re: Export Multiple – normalize each track on export
Posted: Sat Jan 12, 2013 5:04 pm
by Gale Andrews
steve wrote:Gale Andrews wrote:I see it that we need to attach Export Multiple commands to a Chain
Do you mean, so that the user can create a Chain (sequence) of commands such as :
High-pass filter -> Normalize -> Export Multiple
Yes, and of course this is for applying a chain to a project (not to files) until there is some way to run a chain on files with a label track (or some control track) present, or indeed unless the Export Multiple commands available for adding to a Chain let you do things like set labels at percentage points (or seconds) relative to the start and end of the track.
steve wrote:Export Multiple impossible for batch processing (applying to files).
I don't think so at all, it's just not possible now.
But there would be a question whether for applying to projects, it may be more useful to select a Chain to be applied to each exported file from within the Export Multiple dialogue. I would see more conceptual problems with that than applying Export Multiple as a command in a chain.
Gale
Re: Export Multiple – normalize each track on export
Posted: Tue Feb 19, 2013 5:18 am
by Gale Andrews
Gale Andrews wrote:waxcylinder wrote:Does this need transferring to Wiki>PFR - or is someone going to write a proposal - or is it dead?
I am the only one in this topic interested in Export Multiple in Chains, so forget that.
Transfer the normalize on export multiple to PFR.
But my vote is to have an export preference for normalize, comparable to "When importing... Normalize all tracks", so it works on all exports (or it doesn't). There are potentially much more important features that could go into the Export Multiple dialogue, I think.
Gale