From 21ca6a10a96c135e7435f1cc786f4395020ca232 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Thu, 9 Jan 2014 00:18:29 +0100 Subject: rework panning -- Squashed commit of the following: commit 6f4f4f161b00cb36252727f67ecc4913eb944fd7 Author: Robin Gareus Date: Wed Jan 8 22:13:09 2014 +0100 fix panner plugin discovery (prev commit) commit 26e514f4a80af9192cae3cbd62fde0ae95474dfc Author: Robin Gareus Date: Wed Jan 8 18:56:59 2014 +0100 update panner plugin discovery * recurse dirs in 'PANNER_PATH' and 'panner_dir_name' up to 1 level. * don't look in ardour_dll_directory() -- no panners are supposed to be in there * use .dylib on OSX exclusively. commit a514c3f1c425dccf3d42eee9d2b183b44fd26a03 Author: Robin Gareus Date: Wed Jan 8 16:48:34 2014 +0100 remove debug/devel printf()s commit d863742ddc69af493ee6a8817bc778968d9b0800 Author: Robin Gareus Date: Wed Jan 8 16:17:13 2014 +0100 panner-type: session backward/forward compatibility commit 25d5e4c663ada34129451b0f9045ab047d6cc2f0 Author: Robin Gareus Date: Wed Jan 8 16:09:07 2014 +0100 update URIs -> URLs commit 00a606a43d9456cfbaf43cae4fb598549326ba71 Merge: 0f1cec1 382eb0f Author: Robin Gareus Date: Wed Jan 8 03:29:45 2014 +0100 Merge branch 'master' into panning commit 0f1cec19babae538c9697eed4be5d6ddc851b013 Author: Robin Gareus Date: Wed Jan 8 02:41:15 2014 +0100 switch panner ID to URI commit 575282b412c3ae1cd8219cf75f00a1a4239e2813 Author: Robin Gareus Date: Wed Jan 8 00:50:15 2014 +0100 prepare API for panner URI commit ea62cd049308859782a7bb16e4f18169d8638b46 Author: Robin Gareus Date: Tue Jan 7 19:57:06 2014 +0100 update development doc relating to panner selection commit 586d7de2392e26b9d7f597b1a00b98dfaa42ecdc Author: Robin Gareus Date: Tue Jan 7 19:56:24 2014 +0100 clean up PanShell::set_user_selected_panner_type() API commit 99077886a5a1cacece908d87c29c3be12903027e Author: Robin Gareus Date: Tue Jan 7 04:46:22 2014 +0100 panner bypass: visualize & [in]sensitivity commit 46d688d216f0e67d672376a607157af02b359fb2 Merge: 4e67573 c4cdf61 Author: Robin Gareus Date: Tue Jan 7 02:18:54 2014 +0100 Merge branch 'master' into panning commit 4e67573517b3d60ddf65729783687b16cfb2adb7 Author: Robin Gareus Date: Tue Jan 7 01:05:17 2014 +0100 don't call configure_io() for merely swapping panners commit d32a4c51f6967f48f7680554866f1f7b311ccde1 Merge: a3226d4 cec3116 Author: Robin Gareus Date: Mon Jan 6 23:49:55 2014 +0100 Merge branch 'master' into panning commit a3226d46b598afae54a65ac69320eca84669f347 Author: Robin Gareus Date: Mon Jan 6 17:52:38 2014 +0100 add notes about panner re-design commit d1ae2366024605f22b05572a81ee249e6fdbcd2f Author: Robin Gareus Date: Mon Jan 6 15:06:40 2014 +0100 add simple stereo-balance panner for testing commit e0ddd256ff2288b8d8cfad3ad485a916964ce5b5 Author: Robin Gareus Date: Mon Jan 6 17:02:52 2014 +0100 add frontend/GUI for panner selection commit 2cb8f846755eb5aea8a2620d31ea981c446c4041 Author: Robin Gareus Date: Mon Jan 6 17:02:20 2014 +0100 prepare backend for panner selection --- libs/panners/2in2out/panner_2in2out.cc | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libs/panners/2in2out') diff --git a/libs/panners/2in2out/panner_2in2out.cc b/libs/panners/2in2out/panner_2in2out.cc index a316b764c7..43cf4840a1 100644 --- a/libs/panners/2in2out/panner_2in2out.cc +++ b/libs/panners/2in2out/panner_2in2out.cc @@ -63,6 +63,8 @@ using namespace PBD; static PanPluginDescriptor _descriptor = { "Equal Power Stereo", + "http://ardour.org/plugin/panner_2in2out", + "http://ardour.org/plugin/panner_2in2out#ui", 2, 2, Panner2in2out::factory }; @@ -464,6 +466,8 @@ XMLNode& Panner2in2out::get_state () { XMLNode& root (Panner::get_state ()); + root.add_property (X_("uri"), _descriptor.panner_uri); + /* this is needed to allow new sessions to load with old Ardour: */ root.add_property (X_("type"), _descriptor.name); return root; } -- cgit v1.2.3 From 8d64665ce18a7feab1ad0483b2dc73e036ca2bf8 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Fri, 10 Jan 2014 12:13:22 +0100 Subject: add a fixed priority to panner modules --- libs/ardour/ardour/panner.h | 1 + libs/ardour/panner_manager.cc | 29 ++++++++++++++++++++-------- libs/panners/1in2out/panner_1in2out.cc | 1 + libs/panners/2in2out/panner_2in2out.cc | 1 + libs/panners/stereobalance/panner_balance.cc | 1 + libs/panners/vbap/vbap.cc | 1 + 6 files changed, 26 insertions(+), 8 deletions(-) (limited to 'libs/panners/2in2out') diff --git a/libs/ardour/ardour/panner.h b/libs/ardour/ardour/panner.h index fa72b236f7..0c025b0ca2 100644 --- a/libs/ardour/ardour/panner.h +++ b/libs/ardour/ardour/panner.h @@ -178,6 +178,7 @@ struct PanPluginDescriptor { std::string gui_uri; int32_t in; int32_t out; + uint32_t priority; ARDOUR::Panner* (*factory)(boost::shared_ptr, boost::shared_ptr); }; } diff --git a/libs/ardour/panner_manager.cc b/libs/ardour/panner_manager.cc index b62f36b355..24fa10e225 100644 --- a/libs/ardour/panner_manager.cc +++ b/libs/ardour/panner_manager.cc @@ -146,9 +146,11 @@ PannerManager::get_descriptor (string path) PannerInfo* PannerManager::select_panner (ChanCount in, ChanCount out, std::string const uri) { + PannerInfo* rv = NULL; PanPluginDescriptor* d; int32_t nin = in.n_audio(); int32_t nout = out.n_audio(); + uint32_t priority = 0; /* look for user-preference -- check if channels match */ for (list::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { @@ -164,40 +166,51 @@ PannerManager::select_panner (ChanCount in, ChanCount out, std::string const uri for (list::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { d = &(*p)->descriptor; - if (d->in == nin && d->out == nout) { - return *p; + if (d->in == nin && d->out == nout && d->priority > priority) { + priority = d->priority; + rv = *p; } } + if (rv) { return rv; } /* no exact match, look for good fit on inputs and variable on outputs */ + priority = 0; for (list::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { d = &(*p)->descriptor; - if (d->in == nin && d->out == -1) { - return *p; + if (d->in == nin && d->out == -1 && d->priority > priority) { + priority = d->priority; + rv = *p; } } + if (rv) { return rv; } /* no exact match, look for good fit on outputs and variable on inputs */ + priority = 0; for (list::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { d = &(*p)->descriptor; - if (d->in == -1 && d->out == nout) { - return *p; + if (d->in == -1 && d->out == nout && d->priority > priority) { + priority = d->priority; + rv = *p; } } + if (rv) { return rv; } /* no exact match, look for variable fit on inputs and outputs */ + priority = 0; for (list::iterator p = panner_info.begin(); p != panner_info.end(); ++p) { d = &(*p)->descriptor; - if (d->in == -1 && d->out == -1) { - return *p; + if (d->in == -1 && d->out == -1 && d->priority > priority) { + priority = d->priority; + rv = *p; } } + if (rv) { return rv; } warning << string_compose (_("no panner discovered for in/out = %1/%2"), nin, nout) << endmsg; diff --git a/libs/panners/1in2out/panner_1in2out.cc b/libs/panners/1in2out/panner_1in2out.cc index b7ca5ce914..12e7896cfb 100644 --- a/libs/panners/1in2out/panner_1in2out.cc +++ b/libs/panners/1in2out/panner_1in2out.cc @@ -66,6 +66,7 @@ static PanPluginDescriptor _descriptor = { "http://ardour.org/plugin/panner_1in2out", "http://ardour.org/plugin/panner_1in2out#ui", 1, 2, + 10000, Panner1in2out::factory }; diff --git a/libs/panners/2in2out/panner_2in2out.cc b/libs/panners/2in2out/panner_2in2out.cc index 43cf4840a1..f801a36ff4 100644 --- a/libs/panners/2in2out/panner_2in2out.cc +++ b/libs/panners/2in2out/panner_2in2out.cc @@ -66,6 +66,7 @@ static PanPluginDescriptor _descriptor = { "http://ardour.org/plugin/panner_2in2out", "http://ardour.org/plugin/panner_2in2out#ui", 2, 2, + 10000, Panner2in2out::factory }; diff --git a/libs/panners/stereobalance/panner_balance.cc b/libs/panners/stereobalance/panner_balance.cc index 18bda54b18..d5ab96b73c 100644 --- a/libs/panners/stereobalance/panner_balance.cc +++ b/libs/panners/stereobalance/panner_balance.cc @@ -67,6 +67,7 @@ static PanPluginDescriptor _descriptor = { "http://ardour.org/plugin/panner_balance", "http://ardour.org/plugin/panner_balance#ui", 2, 2, + 2000, Pannerbalance::factory }; diff --git a/libs/panners/vbap/vbap.cc b/libs/panners/vbap/vbap.cc index 83095cf7b8..2241ab96e3 100644 --- a/libs/panners/vbap/vbap.cc +++ b/libs/panners/vbap/vbap.cc @@ -49,6 +49,7 @@ static PanPluginDescriptor _descriptor = { "http://ardour.org/plugin/panner_vbap", "http://ardour.org/plugin/panner_vbap#ui", -1, -1, + 1000, VBAPanner::factory }; -- cgit v1.2.3