From: Anton Baskanov baskanov@gmail.com
--- dlls/dmsynth/synth.c | 8 ++++++-- dlls/dmsynth/tests/dmsynth.c | 6 +++--- 2 files changed, 9 insertions(+), 5 deletions(-)
diff --git a/dlls/dmsynth/synth.c b/dlls/dmsynth/synth.c index 69a12910647..1b37e1b5318 100644 --- a/dlls/dmsynth/synth.c +++ b/dlls/dmsynth/synth.c @@ -44,7 +44,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(dmsynth); #define CONN_TRN_BIPOLAR (1<<4) #define CONN_TRN_INVERT (1<<5)
-#define CONN_TRANSFORM(src, ctrl, dst) (((src) & 0x3f) << 10) | (((ctrl) & 0x3f) << 4) | ((dst) & 0xf) +#define CONN_TRANSFORM(src, ctrl, dst) ((((src) & 0x3f) << 10) | (((ctrl) & 0x3f) << 4) | ((dst) & 0xf))
#define BASE_GAIN 60. #define CENTER_PAN_GAIN -30.10 @@ -1598,7 +1598,11 @@ static BOOL set_gen_from_connection(fluid_voice_t *fluid_voice, const CONNECTION UINT gen;
if (conn->usControl != CONN_SRC_NONE) return FALSE; - if (conn->usTransform != CONN_TRN_NONE) return FALSE; + if (conn->usTransform != CONN_TRN_NONE) + { + if (conn->usTransform != CONN_TRANSFORM(CONN_TRN_BIPOLAR, CONN_TRN_NONE, CONN_TRN_NONE)) return FALSE; + if (conn->usSource != CONN_SRC_LFO && conn->usSource != CONN_SRC_VIBRATO) return FALSE; + }
if (conn->usSource == CONN_SRC_NONE) { diff --git a/dlls/dmsynth/tests/dmsynth.c b/dlls/dmsynth/tests/dmsynth.c index 9634b8f715a..3940f28194b 100644 --- a/dlls/dmsynth/tests/dmsynth.c +++ b/dlls/dmsynth/tests/dmsynth.c @@ -2613,7 +2613,7 @@ static void test_dls(void) envelope = default_volume_envelope; envelope.lfo.freq = 2.; envelope.lfo.scale = 10.; - check_volume_envelope(synth, &download, &default_midi, &envelope, TRUE); + check_volume_envelope(synth, &download, &default_midi, &envelope, FALSE);
/* LFO x CC1 -> gain */
@@ -2793,7 +2793,7 @@ static void test_dls(void) envelope = default_pitch_envelope; envelope.lfo.freq = 2.; envelope.lfo.scale = 100.; - check_pitch_envelope(synth, &download, &default_midi, &envelope, TRUE); + check_pitch_envelope(synth, &download, &default_midi, &envelope, FALSE);
/* vibrato LFO x CC1 -> pitch */
@@ -2892,7 +2892,7 @@ static void test_dls(void) envelope = default_pitch_envelope; envelope.lfo.freq = 2.; envelope.lfo.scale = 100.; - check_pitch_envelope(synth, &download, &default_midi, &envelope, TRUE); + check_pitch_envelope(synth, &download, &default_midi, &envelope, FALSE);
/* LFO x CC1 -> pitch */