Non-linear effects now process tracks before mixing.
This will be slower when multiple tracks are selected
but the preview should now match the applied effect.
SetLinearEffectFlag(true) allows linear effects to
preview more quickly when multiple tracks selected, by
pre-mixing selected tracks.
Simple generators like Tone and Noise may be marked as
'linear' so that they only preview a few seconds.
Generators that vary over time (such as Chirp) must use
the full duration that is set. As this currently
requires calculating the full duration, preview for
'non-linear' generators are not limited to the preview
length.
In particular, use an options structure for AudioIO::StartStream to simplify
calls
ControlToolBar::PlayPlayRegion also takes that structure as an argument, and a
SelectedRegion instead of two times
And other changes
This brings the builtin, LV2, and VAMP effects inline with the
Audio Units, LADSPA, and VST effects. All effects now share
a common UI.
This gives all effects (though not implemented for all):
User and factory preset capability
Preset import/export capability
Shared or private configuration options
Builtin effects can now be migrated to RTP, depending on algorithm.
LV2 effects now support graphical interfaces if the plugin supplies one.
Nyquist prompt enhanced to provide some features of the Nyquist Workbench.
It may not look like it, but this was a LOT of work, so trust me, there
WILL be problems and everything effect related should be suspect. Keep
a sharp eye (or two) open.
New project. New track. Generate sound -- do not cancel. Select all,
generate sound again -- this time, do cancel the progress dialog.
Undo, so you see one, empty track again. Save. Close. Reopen.
The cause of these orphans is different from the first case. The previous
commit is necessary but not sufficient to fix this.
If latency was introduced by an effect, the input position could
get offset by the amount of latency, such that the same input
would be processed twice for the number of sample of latency.
There was an issue in AUs where a "latency done" flags wasn't
being reset and so the second and subsequent uses of an effect
could not latency correct.
And in research that, I found that you need to set the sample rate
on all 3 scopes (global, input, and output) instead of just the
global scope.
Steps to reproduce:
1) Launch Audacity
2) File > New
3) Generate a sound in the new project
4) Open a LADSPA effect
5) In second project: File > Close, don't save changes.
6) In first project, generate a sound.
7) Click "Play" button - crash :-(
1) Shell VSTs were completely unrecognized...that is no longer the case
2) All VSTs will now ALWAYS be initialized and cleaned up from the main
GUI thread. I found that some Waves VSTs would freeze Audacity when
initialized in the audio thread and closed in the GUI thread.
3) While realtime previewing, it was possible that the wrong slave
could be used to process new blocks of audio.
4) I found that the Waves AUs don't crash on a real Mac (instead of a
virtual machine), so I removed the "black list" I'd put in just for
them. (Something to do with needing full 3D support I think.)
Anyway, #2 and #3 were quite intrusive, so as much RTP testing as possible
would be a good thing.
Makes the tooltips display the action that is going to
be performed rather than a generic description.
Disables transport buttons when the effect dialog is
initially displayed if another project has using the
audio device.
It corrects several "multiple project" problems with the
meter toolbars and meters.
In addition, there was a "multiple project" issue where
the transport buttons didn't disable properly in the
non-active project.
This bit the textual mode plain old text based buttons
and retains the bitmap buttons for graphical mode.
It also allowed me to remove the manual accelerator table
building (no access keys in GUI mode) which was a good
thing as I really didn't know if the was gonna work for
non-English keyboards anyway.
1) Play now respects play region
If there is a play region it will always play that no matter
what the selection is and it will always "rewind" to the start
of the region even if stopped in the middle.
2) i18n-hints added to the labels and tooltips to let translators
know that the access keys should be the same for the different
labels/tips for a specific button.
3) (ALT+...) removed from the Mac tooltips
4) You now get a message if nothing is selected and Apply is pressed
I thought this was simply the best way...nothing fancy.
If you can believe it, this whole big mess is
just to get localized effect labels back into
the menus.
I sure wish I'd had a little bit more time to
finish up all of the effects. It sure would
be a lot cleaner (code wise).
Per David Bailes, removing the "&" mnemonic characters also
removed the access key feedback present to screen reader
users. He also found that having the mnemonic and the
accelerators still prevented the focus from jumping to the
transport button.
I'm hoping that with wx3, we can clean this up some as it
appears they've redone the whole bitmap button design.
On Windows, when the button access keys were used, the focus
would jump to the associated button. This would be a real
pain for keyboard user since they would then have to TAB back
to the control they were on to make further adjustments.
By using the accelerator table instead of the normal mnemonic,
the access key isn't directly tied to the button, so focus
remains untouched.
On GTK, this actually makes the accelerators work. It seems
that normal mnemonics do not work with a wxBitmapButton, so
using the accelerator table provides the access keys.
The hairbrained "solution" I came up with in r13716
"worked" but it was simply unnecessary and this is
what I should have just done to begin with.
The previous "solution" actually caused some display
issues in the menus.
The problem is that lookup of effects is based on their
ID and legacy effects didn't play well in this scheme, so
I've added a workaround for now. This will go away when
I get all of the effects converted.
And removes some debugging.