From: Anton Baskanov baskanov@gmail.com
--- dlls/dmsynth/tests/dmsynth.c | 4 ++-- libs/fluidsynth/src/synth/fluid_voice.c | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/dmsynth/tests/dmsynth.c b/dlls/dmsynth/tests/dmsynth.c index 3940f28194b..3df6f9caf68 100644 --- a/dlls/dmsynth/tests/dmsynth.c +++ b/dlls/dmsynth/tests/dmsynth.c @@ -2254,7 +2254,7 @@ static void test_dls(void) download.connection_list.cConnections = 1; download.connections[0].usDestination = CONN_DST_EG1_RELEASETIME; download.connections[0].lScale = ABS_TIME_MS(200); - check_volume_envelope(synth, &download, &midi, &default_volume_envelope, TRUE); + check_volume_envelope(synth, &download, &midi, &default_volume_envelope, FALSE);
memset(&midi, 0, sizeof(midi)); midi.messages[0] = default_note_on; @@ -2266,7 +2266,7 @@ static void test_dls(void) download.connections[0].lScale = ABS_TIME_MS(200); download.connections[1].usDestination = CONN_DST_EG1_SHUTDOWNTIME; download.connections[1].lScale = ABS_TIME_MS(200); - check_volume_envelope(synth, &download, &midi, &default_volume_envelope, TRUE); + check_volume_envelope(synth, &download, &midi, &default_volume_envelope, FALSE);
/* velocity -> EG1 attack time */
diff --git a/libs/fluidsynth/src/synth/fluid_voice.c b/libs/fluidsynth/src/synth/fluid_voice.c index aadfc097895..c1daf3d316d 100644 --- a/libs/fluidsynth/src/synth/fluid_voice.c +++ b/libs/fluidsynth/src/synth/fluid_voice.c @@ -1398,6 +1398,7 @@ fluid_voice_kill_excl(fluid_voice_t *voice) */ fluid_voice_gen_set(voice, GEN_EXCLUSIVECLASS, 0);
+#if 0 /* unused in Wine */ /* Speed up the volume envelope */ /* The value was found through listening tests with hi-hat samples. */ fluid_voice_gen_set(voice, GEN_VOLENVRELEASE, -200); @@ -1406,6 +1407,12 @@ fluid_voice_kill_excl(fluid_voice_t *voice) /* Speed up the modulation envelope */ fluid_voice_gen_set(voice, GEN_MODENVRELEASE, -200); fluid_voice_update_param(voice, GEN_MODENVRELEASE); + gen[i].val = fluid_gen_info[i].def; +#else + /* Speed up the volume envelope */ + fluid_voice_gen_set(voice, GEN_VOLENVRELEASE, -32768); + fluid_voice_update_param(voice, GEN_VOLENVRELEASE); +#endif
at_tick = fluid_channel_get_min_note_length_ticks(voice->channel); UPDATE_RVOICE_I1(fluid_rvoice_noteoff, at_tick);