projects
/
ardour.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d1580ba
)
fix stict-i/o midi bypass
author
Robin Gareus
<robin@gareus.org>
Sat, 2 Apr 2016 13:34:26 +0000
(15:34 +0200)
committer
Robin Gareus
<robin@gareus.org>
Sat, 2 Apr 2016 13:34:26 +0000
(15:34 +0200)
libs/ardour/plugin_insert.cc
patch
|
blob
|
history
diff --git
a/libs/ardour/plugin_insert.cc
b/libs/ardour/plugin_insert.cc
index 99893ca0220e6a3b1d8fb77646b050a50c6216bc..bf560ad3eeea34ac97731f5c40ea638c6c542a3a 100644
(file)
--- a/
libs/ardour/plugin_insert.cc
+++ b/
libs/ardour/plugin_insert.cc
@@
-1064,7
+1064,7
@@
PluginInsert::configure_io (ChanCount in, ChanCount out)
#ifndef NDEBUG
if (DEBUG_ENABLED(DEBUG::ChanMapping)) {
DEBUG_STR_DECL(a);
#ifndef NDEBUG
if (DEBUG_ENABLED(DEBUG::ChanMapping)) {
DEBUG_STR_DECL(a);
- DEBUG_STR_APPEND(a, string_compose ("Match '%1':", name()));
+ DEBUG_STR_APPEND(a, string_compose ("Match '%1':
", name()));
DEBUG_STR_APPEND(a, _match);
DEBUG_TRACE (DEBUG::ChanMapping, DEBUG_STR(a).str());
}
DEBUG_STR_APPEND(a, _match);
DEBUG_TRACE (DEBUG::ChanMapping, DEBUG_STR(a).str());
}
@@
-1219,7
+1219,7
@@
PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
/* if a user specified a custom cfg, so be it. */
if (_custom_cfg) {
out = _custom_out;
/* if a user specified a custom cfg, so be it. */
if (_custom_cfg) {
out = _custom_out;
- return Match (ExactMatch, get_count(),
false
, true); // XXX
+ return Match (ExactMatch, get_count(),
_strict_io
, true); // XXX
}
/* try automatic configuration */
}
/* try automatic configuration */
@@
-1228,10
+1228,6
@@
PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
PluginInfoPtr info = _plugins.front()->get_info();
ChanCount inputs = info->n_inputs;
ChanCount outputs = info->n_outputs;
PluginInfoPtr info = _plugins.front()->get_info();
ChanCount inputs = info->n_inputs;
ChanCount outputs = info->n_outputs;
- ChanCount midi_bypass;
- if (inx.get(DataType::MIDI) == 1 && outputs.get(DataType::MIDI) == 0) {
- midi_bypass.set (DataType::MIDI, 1);
- }
/* handle case strict-i/o */
if (_strict_io && m.method != Impossible) {
/* handle case strict-i/o */
if (_strict_io && m.method != Impossible) {
@@
-1243,6
+1239,7
@@
PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
ChanCount max_out (DataType::AUDIO, 2); // TODO use master-out
max_out.set (DataType::MIDI, out.get(DataType::MIDI));
out = ChanCount::min (out, max_out);
ChanCount max_out (DataType::AUDIO, 2); // TODO use master-out
max_out.set (DataType::MIDI, out.get(DataType::MIDI));
out = ChanCount::min (out, max_out);
+ DEBUG_TRACE (DEBUG::ChanMapping, string_compose ("special case strict-i/o instrument: %1\n", name()));
return m;
}
return m;
}
@@
-1257,8
+1254,9
@@
PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
if (nin == 0 || inx.get(*t) == 0) { continue; }
f = max (f, (uint32_t) ceil (inx.get(*t) / (float)nin));
}
if (nin == 0 || inx.get(*t) == 0) { continue; }
f = max (f, (uint32_t) ceil (inx.get(*t) / (float)nin));
}
- out = inx + midi_bypass;
- return Match (Replicate, f);
+ out = inx;
+ DEBUG_TRACE (DEBUG::ChanMapping, string_compose ("special case strict-i/o generator: %1\n", name()));
+ return Match (Replicate, f, _strict_io);
}
break;
case Split:
}
break;
case Split:
@@
-1267,12
+1265,7
@@
PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
break;
}
break;
}
- out = inx + midi_bypass;
- if (inx.get(DataType::MIDI) == 1
- && out.get (DataType::MIDI) == 0
- && outputs.get(DataType::MIDI) == 0) {
- out += ChanCount (DataType::MIDI, 1);
- }
+ out = inx;
return m;
}
return m;
}
@@
-1280,6
+1273,8
@@
PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
return m;
}
return m;
}
+ DEBUG_TRACE (DEBUG::ChanMapping, string_compose ("resolving 'Impossible' match for %1\n", name()));
+
if (info->reconfigurable_io()) {
ChanCount useins;
bool const r = _plugins.front()->can_support_io_configuration (inx, out, &useins);
if (info->reconfigurable_io()) {
ChanCount useins;
bool const r = _plugins.front()->can_support_io_configuration (inx, out, &useins);
@@
-1290,6
+1285,11
@@
PluginInsert::private_can_support_io_configuration (ChanCount const & inx, ChanC
return Match (Delegate, 1);
}
return Match (Delegate, 1);
}
+ ChanCount midi_bypass;
+ if (inx.get(DataType::MIDI) == 1 && outputs.get(DataType::MIDI) == 0) {
+ midi_bypass.set (DataType::MIDI, 1);
+ }
+
// add at least as many plugins so that output count matches input count
uint32_t f = 0;
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
// add at least as many plugins so that output count matches input count
uint32_t f = 0;
for (DataType::iterator t = DataType::begin(); t != DataType::end(); ++t) {
@@
-1340,11
+1340,11
@@
PluginInsert::automatic_can_support_io_configuration (ChanCount const & inx, Cha
ChanCount outputs = info->n_outputs;
if (in.get(DataType::MIDI) == 1 && outputs.get(DataType::MIDI) == 0) {
ChanCount outputs = info->n_outputs;
if (in.get(DataType::MIDI) == 1 && outputs.get(DataType::MIDI) == 0) {
- DEBUG_TRACE (
DEBUG::ChanMapping, string_compose ("bypassing midi-data around %1\n", name()));
+ DEBUG_TRACE (DEBUG::ChanMapping, string_compose ("bypassing midi-data around %1\n", name()));
midi_bypass.set (DataType::MIDI, 1);
}
if (in.get(DataType::MIDI) == 1 && inputs.get(DataType::MIDI) == 0) {
midi_bypass.set (DataType::MIDI, 1);
}
if (in.get(DataType::MIDI) == 1 && inputs.get(DataType::MIDI) == 0) {
- DEBUG_TRACE (
DEBUG::ChanMapping, string_compose ("hiding midi-port from plugin %1\n", name()));
+ DEBUG_TRACE (DEBUG::ChanMapping, string_compose ("hiding midi-port from plugin %1\n", name()));
in.set(DataType::MIDI, 0);
}
in.set(DataType::MIDI, 0);
}