diff options
-rw-r--r-- | SConstruct | 3 | ||||
-rw-r--r-- | gtk2_ardour/SConscript | 8 | ||||
-rw-r--r-- | gtk2_ardour/au_pluginui.cc | 106 | ||||
-rw-r--r-- | gtk2_ardour/au_pluginui.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/plugin_selector.cc | 18 | ||||
-rw-r--r-- | gtk2_ardour/plugin_selector.h | 4 | ||||
-rw-r--r-- | gtk2_ardour/redirect_box.cc | 4 | ||||
-rw-r--r-- | gtk2_ardour/sfdb_ui.cc | 6 | ||||
-rw-r--r-- | libs/ardour/SConscript | 17 | ||||
-rw-r--r-- | libs/ardour/ardour/utils.h | 5 | ||||
-rw-r--r-- | libs/ardour/audio_library.cc | 6 | ||||
-rw-r--r-- | libs/ardour/audio_unit.cc | 1 | ||||
-rw-r--r-- | libs/ardour/coreaudiosource.cc | 4 | ||||
-rw-r--r-- | libs/ardour/insert.cc | 11 | ||||
-rw-r--r-- | libs/ardour/plugin.cc | 3 | ||||
-rw-r--r-- | libs/ardour/source_factory.cc | 6 | ||||
-rw-r--r-- | libs/ardour/utils.cc | 3 |
17 files changed, 54 insertions, 155 deletions
diff --git a/SConstruct b/SConstruct index 57177fa173..d657e822ca 100644 --- a/SConstruct +++ b/SConstruct @@ -26,6 +26,7 @@ subst_dict = { } opts = Options('scache.conf') opts.AddOptions( ('ARCH', 'Set architecture-specific compilation flags by hand (all flags as 1 argument)',''), + BoolOption('AUDIOUNITS', 'Compile with Apple\'s AudioUnit library. (experimental)', 0), BoolOption('COREAUDIO', 'Compile with Apple\'s CoreAudio library', 0), BoolOption('DEBUG', 'Set to build with debugging information and no optimizations', 0), PathOption('DESTDIR', 'Set the intermediate install "prefix"', '/'), @@ -509,8 +510,6 @@ else: libraries['dmalloc'] = conf.Finish () # - -# # Audio/MIDI library (needed for MIDI, since audio is all handled via JACK) # diff --git a/gtk2_ardour/SConscript b/gtk2_ardour/SConscript index ca40cbfcb9..c1eba1ea1d 100644 --- a/gtk2_ardour/SConscript +++ b/gtk2_ardour/SConscript @@ -61,7 +61,7 @@ skipped_files=Split(""" connection_editor.cc """) -coreaudio_files=Split(""" +audiounit_files=Split(""" au_pluginui.cc """) @@ -221,9 +221,9 @@ if env['VST']: extra_sources += vst_files gtkardour.Append (CCFLAGS="-DVST_SUPPORT", CPPPATH="#libs/fst") -if gtkardour['COREAUDIO']: - extra_sources += coreaudio_files - gtkardour.Append(CCFLAGS='-DHAVE_COREAUDIO') +if gtkardour['AUDIOUNITS']: + extra_sources += audiounit_files + gtkardour.Append(CCFLAGS='-DHAVE_AUDIOUNITS') gtkardour.Append(LINKFLAGS='-framework Carbon') gtkardour.Merge([libraries['appleutility']]) diff --git a/gtk2_ardour/au_pluginui.cc b/gtk2_ardour/au_pluginui.cc index 092e34d50b..ce8771bc94 100644 --- a/gtk2_ardour/au_pluginui.cc +++ b/gtk2_ardour/au_pluginui.cc @@ -43,77 +43,6 @@ AUPluginUI::AUPluginUI (boost::shared_ptr<PluginInsert> insert) throw failed_constructor (); } - OSStatus err = noErr; - - CAComponentDescription desc; - Component carbonViewComponent = NULL; - AudioUnitCarbonView carbonView = NULL; - - GetComponentInfo(au->get_comp()->Comp(), &desc, 0, 0, 0); - carbonViewComponent = get_carbon_view_component(desc.componentSubType); - err = OpenAComponent(carbonViewComponent, &carbonView); - - Rect rec; - rec.top = 0; - rec.left = 0; - rec.bottom = 400; - rec.right = 500; - - ProcessSerialNumber ourPSN; - - /* Here we will set the MacOSX native section of the process to the foreground for putting up this - * dialog box. First step is to get our process serial number. We do this by calling - * GetCurrentProcess. - * First Argument: On success this PSN will be our PSN on return. - * Return Value: A Macintosh error indicating success or failure. - */ - err = GetCurrentProcess(&ourPSN); - - //If no error then set this process to be frontmost. - if (err == noErr) { - /* Calling SetFrontProcess to make us frontmost. - * First Argument: The Process Serial Number of the process we want to make frontmost. Here - * of course we pass our process serial number - * Return Value: An error value indicating success or failure. We just ignore the return - * value here. - */ - (void)SetFrontProcess(&ourPSN); - } else { - error << "couldn't get current process" << endmsg; - } - - err = CreateNewWindow (kDocumentWindowClass, kWindowStandardFloatingAttributes, &rec, &wr); - - ComponentResult auResult; - ControlRef rootControl = NULL; - GetRootControl(wr, &rootControl); - - int width = 500; - int height = 400; - Float32Point location = {30, 30}; - Float32Point size = {width, height}; - ControlRef audioUnitControl = NULL; - - auResult = AudioUnitCarbonViewCreate(carbonView, - au->get_au()->AU(), - wr, - rootControl, - &location, - &size, - &audioUnitControl); - - ShowWindow (wr); - BringToFront (wr); -// AudioUnitCarbonViewSetEventListener(carbonView, EventListener, this); -#if 0 - set_name ("PluginEditor"); - add_events (Gdk::KEY_PRESS_MASK|Gdk::KEY_RELEASE_MASK|Gdk::BUTTON_PRESS_MASK|Gdk::BUTTON_RELEASE_MASK); - - signal_delete_event().connect (bind (sigc::ptr_fun (just_hide_it), reinterpret_cast<Window*> (this))); -#endif - - insert->GoingAway.connect (mem_fun(*this, &AUPluginUI::plugin_going_away)); - info << "AUPluginUI created" << endmsg; } @@ -122,38 +51,3 @@ AUPluginUI::~AUPluginUI () // nothing to do here - plugin destructor destroys the GUI } -void -AUPluginUI::plugin_going_away (ARDOUR::Redirect* ignored) -{ - ENSURE_GUI_THREAD(bind (mem_fun(*this, &AUPluginUI::plugin_going_away), ignored)); - - delete_when_idle (this); -} - -Component -AUPluginUI::get_carbon_view_component(OSType subtype) -{ - ComponentDescription desc; - Component component; - - desc.componentType = kAudioUnitCarbonViewComponentType; // 'auvw' - desc.componentSubType = subtype; - desc.componentManufacturer = 0; - desc.componentFlags = 0; - desc.componentFlagsMask = 0; - - // First see if we can find a carbon view designed specifically for this - // plug-in: - - component = FindNextComponent(NULL, &desc); - if (component) - return component; - - // If not, grab the generic carbon view, which will create a GUI for - // any Audio Unit. - - desc.componentSubType = kAUCarbonViewSubType_Generic; - component = FindNextComponent(NULL, &desc); - - return component; -} diff --git a/gtk2_ardour/au_pluginui.h b/gtk2_ardour/au_pluginui.h index 2dcefcc42f..f52605217a 100644 --- a/gtk2_ardour/au_pluginui.h +++ b/gtk2_ardour/au_pluginui.h @@ -38,11 +38,7 @@ class AUPluginUI ~AUPluginUI (); private: - WindowRef wr; boost::shared_ptr<ARDOUR::AUPlugin> au; - - void plugin_going_away (ARDOUR::Redirect*); - Component get_carbon_view_component(OSType subtype); }; #endif // __au_plugin_ui_h__ diff --git a/gtk2_ardour/plugin_selector.cc b/gtk2_ardour/plugin_selector.cc index 69f6f56690..8a52e8587f 100644 --- a/gtk2_ardour/plugin_selector.cc +++ b/gtk2_ardour/plugin_selector.cc @@ -92,7 +92,7 @@ PluginSelector::PluginSelector (PluginManager *mgr) } #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT aumodel = ListStore::create(aucols); au_display.set_model (aumodel); au_display.append_column (_("Available plugins"), aucols.name); @@ -151,7 +151,7 @@ PluginSelector::PluginSelector (PluginManager *mgr) } #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT notebook.pages().push_back (TabElem (auscroller, _("AudioUnit"))); #endif @@ -171,7 +171,7 @@ PluginSelector::PluginSelector (PluginManager *mgr) } #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT au_display.signal_button_press_event().connect_notify (mem_fun(*this, &PluginSelector::row_clicked)); au_display.get_selection()->signal_changed().connect (mem_fun(*this, &PluginSelector::au_display_selection_changed)); #endif @@ -187,7 +187,7 @@ PluginSelector::PluginSelector (PluginManager *mgr) vst_refiller (); #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT au_refiller (); #endif @@ -219,7 +219,7 @@ PluginSelector::set_correct_focus() } #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT cp--; if (cp == 0) { @@ -330,7 +330,7 @@ PluginSelector::vst_display_selection_changed() #endif //VST_SUPPORT -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT void PluginSelector::_au_refiller (void *arg) @@ -374,7 +374,7 @@ PluginSelector::au_display_selection_changed() current_selection = ARDOUR::AudioUnit; } -#endif //HAVE_COREAUDIO +#endif //HAVE_AUDIOUNIT void PluginSelector::use_plugin (PluginInfoPtr pi) @@ -413,7 +413,7 @@ PluginSelector::btn_add_clicked() #endif break; case ARDOUR::AudioUnit: -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT row = *(au_display.get_selection()->get_selected()); name = row[aucols.name]; pi = row[aucols.plugin]; @@ -451,7 +451,7 @@ PluginSelector::btn_update_clicked() #ifdef VST_SUPPORT vst_refiller (); #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT au_refiller (); #endif } diff --git a/gtk2_ardour/plugin_selector.h b/gtk2_ardour/plugin_selector.h index d71203131c..73c3008e64 100644 --- a/gtk2_ardour/plugin_selector.h +++ b/gtk2_ardour/plugin_selector.h @@ -110,7 +110,7 @@ class PluginSelector : public ArdourDialog void vst_display_selection_changed(); #endif // VST_SUPPORT -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT // page 3 struct AUColumns : public Gtk::TreeModel::ColumnRecord { AUColumns () { @@ -131,7 +131,7 @@ class PluginSelector : public ArdourDialog static void _au_refiller (void *); void au_refiller (); void au_display_selection_changed(); -#endif //HAVE_COREAUDIO +#endif //HAVE_AUDIOUNIT ARDOUR::PluginManager *manager; diff --git a/gtk2_ardour/redirect_box.cc b/gtk2_ardour/redirect_box.cc index 058cc9f5ab..48562f1ffb 100644 --- a/gtk2_ardour/redirect_box.cc +++ b/gtk2_ardour/redirect_box.cc @@ -62,7 +62,7 @@ #include "i18n.h" -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT #include "au_pluginui.h" #endif @@ -1000,7 +1000,7 @@ RedirectBox::edit_redirect (boost::shared_ptr<Redirect> redirect) } else { plugin_ui->show_all (); } -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNIT } else if (type == ARDOUR::AudioUnit) { AUPluginUI* plugin_ui; if (plugin_insert->get_gui() == 0) { diff --git a/gtk2_ardour/sfdb_ui.cc b/gtk2_ardour/sfdb_ui.cc index cfede6d863..0f167776b0 100644 --- a/gtk2_ardour/sfdb_ui.cc +++ b/gtk2_ardour/sfdb_ui.cc @@ -269,7 +269,11 @@ SoundFileBox::remove_field_clicked () void SoundFileBox::field_edited (const Glib::ustring& str1, const Glib::ustring& str2) { - cout << "field_edited" << endl; + Gtk::TreeModel::Children rows(fields->children()); + Gtk::TreeModel::Row row(rows[atoi(str1.c_str())]); + + Library->set_field (path, row[label_columns.field], str2); + Library->save_changes (); } diff --git a/libs/ardour/SConscript b/libs/ardour/SConscript index 55acb865d1..63c0cdd96f 100644 --- a/libs/ardour/SConscript +++ b/libs/ardour/SConscript @@ -102,7 +102,8 @@ arch_specific_objects = [ ] osc_files = [ 'osc.cc' ] vst_files = [ 'vst_plugin.cc', 'session_vst.cc' ] -coreaudio_files = [ 'audio_unit.cc', 'coreaudiosource.cc' ] +audiounit_files = [ 'audio_unit.cc' ] +coreaudio_files = [ 'coreaudiosource.cc' ] extra_sources = [ ] if ardour['VST']: @@ -180,11 +181,15 @@ if conf.CheckCHeader('sys/vfs.h'): if conf.CheckCHeader('/System/Library/Frameworks/CoreMIDI.framework/Headers/CoreMIDI.h'): ardour.Append(LINKFLAGS="-framework CoreMIDI") -if conf.CheckCHeader('/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h') and ardour['COREAUDIO'] == 1: +if conf.CheckCHeader('/System/Library/Frameworks/AudioUnit.framework/Headers/AudioUnit.h') and ardour['AUDIOUNITS']: + ardour.Append(CXXFLAGS="-DHAVE_AUDIOUNITS") + ardour.Append(LINKFLAGS="-framework AudioUnit") + extra_sources += audiounit_files + +if conf.CheckCHeader('/System/Library/Frameworks/AudioToolbox.framework/Headers/ExtendedAudioFile.h') and ardour['COREAUDIO']: ardour.Append(CXXFLAGS="-DHAVE_COREAUDIO") ardour.Append(LINKFLAGS="-framework AudioToolbox") extra_sources += coreaudio_files - if env['CONFIG_ARCH'] == 'apple': # this next line avoids issues with circular dependencies between libardour and libardour_cp. @@ -212,7 +217,7 @@ ardour.Merge ([ if ardour['LIBLO']: ardour.Merge ([ libraries['lo'] ]) -if ardour['COREAUDIO']: +if ardour['COREAUDIO'] or ardour['AUDIOUNITS']: ardour.Merge ([ libraries['appleutility'] ]) ardour.VersionBuild(['version.cc', 'ardour/version.h'], 'SConscript') @@ -242,12 +247,12 @@ libardour = ardour.SharedLibrary('ardour', ardour_files + extra_sources + arch_s Default(libardour) if env['NLS']: - i18n (ardour, ardour_files + vst_files + coreaudio_files, env) + i18n (ardour, ardour_files + vst_files + coreaudio_files + audiounit_files, env) env.Alias('install', env.Install(os.path.join(install_prefix, 'lib/ardour2'), libardour)) env.Alias('tarball', env.Distribute (env['DISTTREE'], [ 'SConscript', 'i18n.h', 'gettext.h', 'sse_functions.s', 'sse_functions_64bit.s' ] + - ardour_files + vst_files + coreaudio_files + + ardour_files + vst_files + coreaudio_files + audiounit_files + glob.glob('po/*.po') + glob.glob('ardour/*.h'))) diff --git a/libs/ardour/ardour/utils.h b/libs/ardour/ardour/utils.h index 5128c98a77..214e74156c 100644 --- a/libs/ardour/ardour/utils.h +++ b/libs/ardour/ardour/utils.h @@ -25,7 +25,7 @@ #include <string> #include <cmath> -#ifdef HAVE_COREAUDIO +#if defined(HAVE_COREAUDIO) || defined(HAVE_AUDIOUNITS) #include <CoreFoundation/CoreFoundation.h> #endif @@ -59,8 +59,9 @@ std::string path_expand (std::string); void compute_equal_power_fades (jack_nframes_t nframes, float* in, float* out); -#ifdef HAVE_COREAUDIO +#if defined(HAVE_COREAUDIO) || defined(HAVE_AUDIOUNITS) std::string CFStringRefToStdString(CFStringRef stringRef); #endif // HAVE_COREAUDIO #endif /* __ardour_utils_h__ */ + diff --git a/libs/ardour/audio_library.cc b/libs/ardour/audio_library.cc index ad008f6312..3aa6d05be1 100644 --- a/libs/ardour/audio_library.cc +++ b/libs/ardour/audio_library.cc @@ -432,9 +432,9 @@ AudioLibrary::safe_file_extension(string file) file.rfind(".vwe") == string::npos && file.rfind(".paf") == string::npos && #ifdef HAVE_COREAUDIO - file.rfind(".mp3") == string::npos && - file.rfind(".aac") == string::npos && - file.rfind(".mp4") == string::npos && + file.rfind(".mp3") == string::npos && + file.rfind(".aac") == string::npos && + file.rfind(".mp4") == string::npos && #endif // HAVE_COREAUDIO file.rfind(".voc") == string::npos); } diff --git a/libs/ardour/audio_unit.cc b/libs/ardour/audio_unit.cc index ad98621814..57d5505a0f 100644 --- a/libs/ardour/audio_unit.cc +++ b/libs/ardour/audio_unit.cc @@ -394,3 +394,4 @@ AUPluginInfo::setup_nchannels (CAComponentDescription& comp_desc) 0, &cinfo, &info_size); } } + diff --git a/libs/ardour/coreaudiosource.cc b/libs/ardour/coreaudiosource.cc index 19b75619e3..0d7e690a25 100644 --- a/libs/ardour/coreaudiosource.cc +++ b/libs/ardour/coreaudiosource.cc @@ -31,16 +31,12 @@ CoreAudioSource::CoreAudioSource (const XMLNode& node) : AudioFileSource (node) { init (_name); - - AudioSourceCreated (this); /* EMIT SIGNAL */ } CoreAudioSource::CoreAudioSource (const string& idstr, Flag flags) : AudioFileSource(idstr, flags) { init (idstr); - - AudioSourceCreated (this); /* EMIT SIGNAL */ } void diff --git a/libs/ardour/insert.cc b/libs/ardour/insert.cc index f9ead93dbc..1c3ce510f3 100644 --- a/libs/ardour/insert.cc +++ b/libs/ardour/insert.cc @@ -35,7 +35,7 @@ #include <ardour/vst_plugin.h> #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNITS #include <ardour/audio_unit.h> #endif @@ -513,7 +513,7 @@ PluginInsert::plugin_factory (boost::shared_ptr<Plugin> other) #ifdef VST_SUPPORT boost::shared_ptr<VSTPlugin> vp; #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNITS boost::shared_ptr<AUPlugin> ap; #endif @@ -523,7 +523,7 @@ PluginInsert::plugin_factory (boost::shared_ptr<Plugin> other) } else if ((vp = boost::dynamic_pointer_cast<VSTPlugin> (other)) != 0) { return boost::shared_ptr<Plugin> (new VSTPlugin (*vp)); #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNITS } else if ((ap = boost::dynamic_pointer_cast<AUPlugin> (other)) != 0) { return boost::shared_ptr<Plugin> (new AUPlugin (*ap)); #endif @@ -829,7 +829,7 @@ PluginInsert::type () #ifdef VST_SUPPORT boost::shared_ptr<VSTPlugin> vp; #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNITS boost::shared_ptr<AUPlugin> ap; #endif @@ -841,7 +841,7 @@ PluginInsert::type () } else if ((vp = boost::dynamic_pointer_cast<VSTPlugin> (other)) != 0) { return ARDOUR::VST; #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNITS } else if ((ap = boost::dynamic_pointer_cast<AUPlugin> (other)) != 0) { return ARDOUR::AudioUnit; #endif @@ -1068,3 +1068,4 @@ PortInsert::input_streams() const { return n_outputs (); } + diff --git a/libs/ardour/plugin.cc b/libs/ardour/plugin.cc index bedc32a0b3..8d200b0ee4 100644 --- a/libs/ardour/plugin.cc +++ b/libs/ardour/plugin.cc @@ -261,7 +261,7 @@ ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginType ty break; #endif -#ifdef HAVE_COREAUDIO +#ifdef HAVE_AUDIOUNITS case ARDOUR::AudioUnit: plugs = AUPluginInfo::discover (); unique_id = 0; // Neither do AU. @@ -282,3 +282,4 @@ ARDOUR::find_plugin(Session& session, string name, long unique_id, PluginType ty return PluginPtr ((Plugin*) 0); } + diff --git a/libs/ardour/source_factory.cc b/libs/ardour/source_factory.cc index 8432bcbd6f..e5bbe96d5e 100644 --- a/libs/ardour/source_factory.cc +++ b/libs/ardour/source_factory.cc @@ -23,6 +23,10 @@ #include <ardour/destructive_filesource.h> #include <ardour/configuration.h> +#ifdef HAVE_COREAUDIO +#include <ardour/coreaudiosource.h> +#endif + #include "i18n.h" using namespace ARDOUR; @@ -31,8 +35,6 @@ using namespace std; sigc::signal<void,boost::shared_ptr<Source> > SourceFactory::SourceCreated; #ifdef HAVE_COREAUDIO - - boost::shared_ptr<Source> SourceFactory::create (const XMLNode& node) { diff --git a/libs/ardour/utils.cc b/libs/ardour/utils.cc index 5f676964d2..9e8603827a 100644 --- a/libs/ardour/utils.cc +++ b/libs/ardour/utils.cc @@ -253,7 +253,7 @@ path_expand (string path) #endif } -#ifdef HAVE_COREAUDIO +#if defined(HAVE_COREAUDIO) || defined(HAVE_AUDIOUNITS) string CFStringRefToStdString(CFStringRef stringRef) { @@ -297,4 +297,3 @@ compute_equal_power_fades (jack_nframes_t nframes, float* in, float* out) in[n] = inVal * (scale * inVal + 1.0f - scale); } } - |