summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConstruct3
-rw-r--r--gtk2_ardour/SConscript8
-rw-r--r--gtk2_ardour/au_pluginui.cc106
-rw-r--r--gtk2_ardour/au_pluginui.h4
-rw-r--r--gtk2_ardour/plugin_selector.cc18
-rw-r--r--gtk2_ardour/plugin_selector.h4
-rw-r--r--gtk2_ardour/redirect_box.cc4
-rw-r--r--gtk2_ardour/sfdb_ui.cc6
-rw-r--r--libs/ardour/SConscript17
-rw-r--r--libs/ardour/ardour/utils.h5
-rw-r--r--libs/ardour/audio_library.cc6
-rw-r--r--libs/ardour/audio_unit.cc1
-rw-r--r--libs/ardour/coreaudiosource.cc4
-rw-r--r--libs/ardour/insert.cc11
-rw-r--r--libs/ardour/plugin.cc3
-rw-r--r--libs/ardour/source_factory.cc6
-rw-r--r--libs/ardour/utils.cc3
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);
}
}
-