Take midi into account for penalty computation
authorJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Thu, 4 Aug 2016 10:29:19 +0000 (12:29 +0200)
committerJulien "_FrnchFrgg_" RIVAUD <frnchfrgg@free.fr>
Sat, 6 Aug 2016 17:38:09 +0000 (19:38 +0200)
Demote configurations if they have mismatched midi in or out with the
same mechanism as for audio, but with lower coefficients so that
mismatched midi has less influence than mismatched audio in selecting
the best configuration.

POLICY CHANGE.

libs/ardour/luaproc.cc

index 35e39fe4ebaade3b4f83e988049844be564073dd..46fc0aef2fdd2ec2395513f1d575d2a826aa15bd 100644 (file)
@@ -379,6 +379,7 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
 
        // preferred setting (provided by plugin_insert)
        const int preferred_out = out.n_audio ();
+       const int preferred_midiout = out.n_midi ();
 
        int midi_out = -1;
        int audio_out = -1;
@@ -402,8 +403,12 @@ LuaProc::can_support_io_configuration (const ChanCount& in, ChanCount& out, Chan
 #define FOUNDCFG_IMPRECISE(in, out) {                               \
   const float p = fabsf ((float)(out) - preferred_out) *            \
                       (((out) > preferred_out) ? 1.1 : 1)           \
+                + fabsf ((float)possible_midiout - preferred_midiout) *    \
+                      ((possible_midiout - preferred_midiout) ? 0.6 : 0.5) \
                 + fabsf ((float)(in) - audio_in) *                  \
-                      (((in) > audio_in) ? 275 : 250);              \
+                      (((in) > audio_in) ? 275 : 250)               \
+                + fabsf ((float)possible_midiin - midi_in) *        \
+                      ((possible_midiin - midi_in) ? 100 : 110);    \
   FOUNDCFG_PENALTY(in, out, p);                                     \
 }