From: Anton Baskanov <baskanov(a)gmail.com> --- dlls/dmsynth/synth.c | 7 +++++-- dlls/dmsynth/tests/dmsynth.c | 6 +++--- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/dlls/dmsynth/synth.c b/dlls/dmsynth/synth.c index 69a12910647..27a5c40f9b7 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,10 @@ 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 + && (conn->usTransform != CONN_TRANSFORM(CONN_TRN_BIPOLAR, CONN_TRN_NONE, CONN_TRN_NONE) + || (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 */ -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9522