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.
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).
I've added some of the new plugin stuff to LV2, Nyquist, and
Vamp so that they play better in the new system. They no
longer get bunched in with the Audacity effects when sorting
or grouping the menus. They have not been fully converted
but they should be good for 2.1.0.
Nyquist plugins now include ";author" and ";copyright"
statements.
Added the 4 new Nyquist plugins to the Windows build.
Audiounits are still coming...had to push them to the back
burner to get this other stuff out of the way.
Scanning for new plugins has been improved so that newly
discovered ones will be shown to the user when Audacity starts.
Effects menu sorting has been fixed and improved.
Disabling effect types in Preferences works again and you
no longer have to restart Audacity for them the change to work.
Effect usage in chains works again.
Plugin registration dialog code simplified a bit.
Group names in the pluginregistry are now base64 encoded. I
never really thought about it, but wxFileConfig group names
are case insensitive and since I was using the group name as
the plugin ID, I ran into a conflict on Linux where there
were two plugins with the same name, just different case. (And
they were different plugins.) Hoping all of this will change
when/if the config file gets converted to XML. (wx3 if finally
including XML support)
A fair amount of cleanup of this new code has been done and
will continue as more stuff is converted.
The main operational difference is that for v4 effect onward, the
sound name will now be *TRACK*. This will not affect existing
effects since they use version number 3 or less.
This also provides the Nyquist effect with much more information about
the current processing:
Variable Property What
*AUDACITY* VERSION current Audacity version number
*SYSTEM-DIR* BASE Audacity install path
*SYSTEM-DIR* DATA Audacity data path
*SYSTEM-DIR* HELP Audacity help path
*SYSTEM-DIR* TEMP Audacity temp file path
*SYSTEM-DIR* PLUGIN Audacity search path for Nyquist plugins
*PROJECT* RATE current project sample rate
*PROJECT* TRACKS total number of tracks in the project
*PROJECT* WAVETRACKS number of wave tracks in the project
*PROJECT* LABELTRACKS number of label tracks in the project
*PROJECT* MIDITRACKS number of midi tracks in the project
*PROJECT* TIMETRACKS number of time tracks in the project
*SELECTION* START start time of current selection
*SELECTION* END end time of current selection
*SELECTION* TRACKS number of tracks in the current selection
*SELECTION* CHANNELS number of channels in the current selection
*SELECTION* LOW-HZ low frequency from spectrogram (if available, else nil)
*SELECTION* CENTER-HZ center frequence (calculated) (if available, else nil)
*SELECTION* HIGH-HZ high frequence from spectrogram (if available, else nil)
*SELECTION* BANDWIDTH bandwidth in octaves (calculated) (if available, else nil)
*SELECTION* PEAK-LEVEL peak amplitude for the current selection
*TRACK* INDEX 1-based index of track being processed
*TRACK* NAME name of track
*TRACK* TYPE type of track: wave, midi, label, time
*TRACK* VIEW track view: Waveform, Waveform (dB), etc.
*TRACK* CHANNELS number of channels in the track
*TRACK* START-TIME start time of track
*TRACK* END-TIME end time of track
*TRACK* GAIN track gain
*TRACK* PAN track pan
*TRACK* RATE sample rate of track
*TRACK* FORMAT sample format: 16 (int), 24 (int), 32.0 (float)
*TRACK* CLIPS list of start/end times for clips for each channel