X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fglobals.cc;h=3a37073e29d2997b9318cc59152cc0e7802827b2;hb=dd577004459b7810daae2b4ad6741e3a2b858565;hp=6e6dd7085673026f1c64f27264e6122cf36c3a32;hpb=d5e09076ca69fda1402a12e383de7a7d9bc5f0ec;p=ardour.git diff --git a/libs/ardour/globals.cc b/libs/ardour/globals.cc index 6e6dd70856..3a37073e29 100644 --- a/libs/ardour/globals.cc +++ b/libs/ardour/globals.cc @@ -29,11 +29,15 @@ #include #include -#ifdef VST_SUPPORT +#ifdef WINDOWS_VST_SUPPORT #include #endif -#ifdef HAVE_AUDIOUNITS +#ifdef LXVST_SUPPORT +#include "ardour/linux_vst_support.h" +#endif + +#ifdef AUDIOUNIT_SUPPORT #include "ardour/audio_unit.h" #endif @@ -237,7 +241,7 @@ lotsa_files_please () } int -ARDOUR::init (bool use_vst, bool try_optimization) +ARDOUR::init (bool use_windows_vst, bool try_optimization) { if (!Glib::thread_supported()) { Glib::thread_init(); @@ -289,18 +293,27 @@ ARDOUR::init (bool use_vst, bool try_optimization) return -1; } - Config->set_use_vst (use_vst); + Config->set_use_windows_vst (use_windows_vst); +#ifdef LXVST_SUPPORT + Config->set_use_lxvst(true); +#endif Profile = new RuntimeProfile; -#ifdef VST_SUPPORT - if (Config->get_use_vst() && fst_init (0)) { +#ifdef WINDOWS_VST_SUPPORT + if (Config->get_use_windows_vst() && fst_init (0)) { + return -1; + } +#endif + +#ifdef LXVST_SUPPORT + if (Config->get_use_lxvst() && vstfx_init (0)) { return -1; } #endif -#ifdef HAVE_AUDIOUNITS +#ifdef AUDIOUNIT_SUPPORT AUPluginInfo::load_cached_info (); #endif @@ -321,13 +334,31 @@ ARDOUR::init (bool use_vst, bool try_optimization) Analyser::init (); /* singleton - first object is "it" */ - new PluginManager (); + (void) PluginManager::instance(); ProcessThread::init (); - BufferManager::init (10); // XX should be num_processors_for_dsp + BufferManager::init (10); // XX should be num_processors_for_dsp + 1 for the GUI thread PannerManager::instance().discover_panners(); + // Initialize parameter metadata + EventTypeMap::instance().new_parameter(NullAutomation); + EventTypeMap::instance().new_parameter(GainAutomation); + EventTypeMap::instance().new_parameter(PanAzimuthAutomation); + EventTypeMap::instance().new_parameter(PanElevationAutomation); + EventTypeMap::instance().new_parameter(PanWidthAutomation); + EventTypeMap::instance().new_parameter(PluginAutomation); + EventTypeMap::instance().new_parameter(SoloAutomation); + EventTypeMap::instance().new_parameter(MuteAutomation); + EventTypeMap::instance().new_parameter(MidiCCAutomation); + EventTypeMap::instance().new_parameter(MidiPgmChangeAutomation); + EventTypeMap::instance().new_parameter(MidiPitchBenderAutomation); + EventTypeMap::instance().new_parameter(MidiChannelPressureAutomation); + EventTypeMap::instance().new_parameter(FadeInAutomation); + EventTypeMap::instance().new_parameter(FadeOutAutomation); + EventTypeMap::instance().new_parameter(EnvelopeAutomation); + EventTypeMap::instance().new_parameter(MidiCCAutomation); + return 0; } @@ -343,6 +374,10 @@ ARDOUR::init_post_engine () if ((node = Config->control_protocol_state()) != 0) { ControlProtocolManager::instance().set_state (*node, Stateful::loading_state_version); } + + /* find plugins */ + + ARDOUR::PluginManager::instance().refresh (); } int @@ -351,9 +386,13 @@ ARDOUR::cleanup () delete Library; lrdf_cleanup (); delete &ControlProtocolManager::instance(); -#ifdef VST_SUPPORT +#ifdef WINDOWS_VST_SUPPORT fst_exit (); #endif + +#ifdef LXVST_SUPPOR + vstfx_exit(); +#endif return 0; } @@ -415,9 +454,14 @@ ARDOUR::setup_fpu () MXCSR = _mm_getcsr(); +#ifdef DEBUG_DENORMAL_EXCEPTION + /* This will raise a FP exception if a denormal is detected */ + MXCSR &= ~_MM_MASK_DENORM; +#endif + switch (Config->get_denormal_model()) { case DenormalNone: - MXCSR &= ~(_MM_FLUSH_ZERO_ON|0x8000); + MXCSR &= ~(_MM_FLUSH_ZERO_ON | 0x40); break; case DenormalFTZ: @@ -429,14 +473,14 @@ ARDOUR::setup_fpu () case DenormalDAZ: MXCSR &= ~_MM_FLUSH_ZERO_ON; if (fpu.has_denormals_are_zero()) { - MXCSR |= 0x8000; + MXCSR |= 0x40; } break; case DenormalFTZDAZ: if (fpu.has_flush_to_zero()) { if (fpu.has_denormals_are_zero()) { - MXCSR |= _MM_FLUSH_ZERO_ON | 0x8000; + MXCSR |= _MM_FLUSH_ZERO_ON | 0x40; } else { MXCSR |= _MM_FLUSH_ZERO_ON; }