... Should have no effect on generated code, except perhaps some slight faster
virtual function calls. Mostly useful as documentation of design intent.
Tried to mark every one of our classes that inherits from another, or is a
base for others, or has abstract virtual functions, and a few others besides.
I realized after the last commit that it was probably just a VST
version issue. The effCanBeAutomated opcode was only added for
VST version 2 and, at least the steroizer effect attached to the
but, was built for a VST version before that.
configure script now auto detects whether wxWidgets was built using
gtk2 or gtk3, so there's no longer a need to specify which one when
running configure.
VST support updated for wx3 under GTK.
This gets FileDialog updated and working on Windows. It also
removes removes the "wx3" build configurations and makes the default
Debug and Release builds wx3-only.
Still need to get VSTs updated.
Main change is that VST GUI support is now integrate with new Cocoa
views. Direct support for VST Cocoa views (via Cockos extensions:
http://www.reaper.fm/sdk/vst/vst_ext.php) has been added.
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.
Some hosts (like Ardour) use the "user" field and some use
the resvd2 field. In 2.0.6 I'd switced from resvd2 to user.
This fix puts it back to resv2 since at least one plugin,
Audiocation Phase, uses the "user" field for its own purposes
and rightly so.
When building for wx3 on Linux, the backported number validators
and formatter conflicts with the wx3 version because I never
renamed them. Crashes during termination would occur because
the wx3 version and our version had different vtables.
I was thinking that we would just be able to delete the
backported version when upgrading to wx3, but since
we've made Audacity specific changes to them we can't
simply start using the real wx3 versions anymore.
Therefore, I needed to rename then to prevent the crashes.
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.
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.
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).
This round fixes Mac pointers when mouse transitions from
the main project window to an open effect window in GUI
mode and back.
Not all of the cases are fixed with VST overlay windows
being the final holdout. Couldn't figure out the cause
so will just deal with it when we convert to wx3.
(I GET TO REDO ALL OF THIS FOR WX3...WOOHOO!!!)
When looking into the +morphfilter issue, I noticed that
I wasn't consistently handling preset chunks. While I
didn't have any effects complaining about it, some of it
was (near as I can deduce...this stuff isn't well documented)
probably wrong.
So, I cleaned it all up and in the process added more validity
checking when loading presets for all 3 preset formats.
Incidentially, the +morphfilter still crashes Audacity...but
it also crashes Cubase, so we're in good company. :-) I've
sent an email to the author to see if I'm setting the chunks
correctly or he has a known issue.