diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2011-04-06 21:09:33 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2011-04-06 21:09:33 +0000 |
commit | 482a680c57e43713767cc119d8544221de4476da (patch) | |
tree | 94fcca5990c1859f95d81c74a994b8a39db6ac1a /gtk2_ardour | |
parent | 45cd3d519c68aa8cc2387e943c525b24d15b3648 (diff) |
demo use of AudioUnit parameter listening (all commented out since its not needed right now)
git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@9313 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour')
-rw-r--r-- | gtk2_ardour/au_pluginui.h | 5 | ||||
-rw-r--r-- | gtk2_ardour/au_pluginui.mm | 39 |
2 files changed, 40 insertions, 4 deletions
diff --git a/gtk2_ardour/au_pluginui.h b/gtk2_ardour/au_pluginui.h index cb4b88ee39..94883cbadf 100644 --- a/gtk2_ardour/au_pluginui.h +++ b/gtk2_ardour/au_pluginui.h @@ -67,6 +67,11 @@ class AUPluginUI : public PlugUIBase, public Gtk::VBox OSStatus carbon_event (EventHandlerCallRef nextHandlerRef, EventRef event); +#ifdef PARAMETER_LISTENING + static void _parameter_change_listener (void* /*arg*/, void* /*src*/, const AudioUnitEvent* event, UInt64 host_time, Float32 new_value); + void parameter_change_listener (void* /*arg*/, void* /*src*/, const AudioUnitEvent* event, UInt64 host_time, Float32 new_value); +#endif + private: boost::shared_ptr<ARDOUR::AUPlugin> au; int prefheight; diff --git a/gtk2_ardour/au_pluginui.mm b/gtk2_ardour/au_pluginui.mm index 66a66023b4..bdc1dd33b4 100644 --- a/gtk2_ardour/au_pluginui.mm +++ b/gtk2_ardour/au_pluginui.mm @@ -120,6 +120,18 @@ AUPluginUI::AUPluginUI (boost::shared_ptr<PluginInsert> insert) error << _("unknown type of editor-supplying plugin (note: no AudioUnit support in this version of ardour)") << endmsg; throw failed_constructor (); } + +#ifdef PARAMETER_LISTENING + if (au->create_parameter_listener (AUPluginUI::_parameter_change_listener, this, 0.05) == 0) { + cerr << "Registered parameter listener for " << insert->name() << endl; + set<uint32_t> params = au->automatable (); + for (set<uint32_t>::iterator p = params.begin(); p != params.end(); ++p) { + cerr << "Listen to " << *p << " result = " << au->listen_to_parameter (*p) << endl; + } + } else { + cerr << "Could not registered parameter listener for " << insert->name() << endl; + } +#endif /* stuff some stuff into the top of the window */ @@ -171,8 +183,10 @@ AUPluginUI::AUPluginUI (boost::shared_ptr<PluginInsert> insert) /* prefer cocoa, fall back to cocoa, but use carbon if its there */ if (test_cocoa_view_support()) { + cerr << insert->name() << " creating cocoa view\n"; create_cocoa_view (); } else if (test_carbon_view_support()) { + cerr << insert->name() << " creating carbon view\n"; create_carbon_view (); } else { create_cocoa_view (); @@ -268,11 +282,11 @@ AUPluginUI::create_cocoa_view () { BOOL wasAbleToLoadCustomView = NO; AudioUnitCocoaViewInfo* cocoaViewInfo = NULL; - UInt32 numberOfClasses = 0; + UInt32 numberOfClasses = 0; UInt32 dataSize; Boolean isWritable; - NSString* factoryClassName = 0; - NSURL* CocoaViewBundlePath; + NSString* factoryClassName = 0; + NSURL* CocoaViewBundlePath = 0; OSStatus result = AudioUnitGetPropertyInfo (*au->get_au(), kAudioUnitProperty_CocoaUI, @@ -286,7 +300,9 @@ AUPluginUI::create_cocoa_view () // Does view have custom Cocoa UI? if ((result == noErr) && (numberOfClasses > 0) ) { + cerr << insert->name() << " has " << numberOfClasses << " cocoa UI classes\n"; cocoaViewInfo = (AudioUnitCocoaViewInfo *)malloc(dataSize); + if(AudioUnitGetProperty(*au->get_au(), kAudioUnitProperty_CocoaUI, kAudioUnitScope_Global, @@ -298,6 +314,7 @@ AUPluginUI::create_cocoa_view () // we only take the first view in this example. factoryClassName = (NSString *)cocoaViewInfo->mCocoaAUViewClass[0]; + cerr << insert->name() << " fetching cocoa UI via factory called " << factoryClassName << '\n'; } else { @@ -523,7 +540,6 @@ int AUPluginUI::parent_cocoa_window () { NSWindow* win = get_nswindow (); - NSRect packFrame; if (!win) { return -1; @@ -683,3 +699,18 @@ AUPluginUI::on_focus_out_event (GdkEventFocus* ev) return false; } +#ifdef PARAMETER_LISTENING + +void +AUPluginUI::_parameter_change_listener (void* arg, void* src, const AudioUnitEvent* event, UInt64 host_time, Float32 new_value) +{ + ((AUPluginUI*) arg)->parameter_change_listener (arg, src, event, host_time, new_value); +} + +void +AUPluginUI::parameter_change_listener (void* /*arg*/, void* /*src*/, const AudioUnitEvent* event, UInt64 host_time, Float32 new_value) +{ + cerr << insert->name() << "Parameter " << event->mArgument.mParameter.mParameterID << " changed to " << new_value << endl; +} + +#endif |