aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/midi
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2013-12-29 02:40:12 -0800
committerChris Robinson <[email protected]>2013-12-29 02:40:12 -0800
commitdeecbbc55d44a0043c92464949c83c9722d6be00 (patch)
treec00c75c006cce9167ecefe32fe9fa67cd59e8da6 /Alc/midi
parentd9aedc14167c7f5c4fc02f95de6be89ef8db63c2 (diff)
Add modulation envelope properties
Diffstat (limited to 'Alc/midi')
-rw-r--r--Alc/midi/base.c9
-rw-r--r--Alc/midi/fluidsynth.c8
-rw-r--r--Alc/midi/sf2load.c16
3 files changed, 25 insertions, 8 deletions
diff --git a/Alc/midi/base.c b/Alc/midi/base.c
index 00114f59..7eb2d2c5 100644
--- a/Alc/midi/base.c
+++ b/Alc/midi/base.c
@@ -299,6 +299,15 @@ void ALfontsound_Construct(ALfontsound *self)
self->VibratoLfoToPitch = 0;
self->ModEnvToPitch = 0;
+ self->ModEnv.DelayTime = -12000;
+ self->ModEnv.AttackTime = -12000;
+ self->ModEnv.HoldTime = -12000;
+ self->ModEnv.DecayTime = -12000;
+ self->ModEnv.SustainVol = 0;
+ self->ModEnv.ReleaseTime = -12000;
+ self->ModEnv.KeyToHoldTime = 0;
+ self->ModEnv.KeyToDecayTime = 0;
+
self->VolEnv.DelayTime = -12000;
self->VolEnv.AttackTime = -12000;
self->VolEnv.HoldTime = -12000;
diff --git a/Alc/midi/fluidsynth.c b/Alc/midi/fluidsynth.c
index 7855132a..35092966 100644
--- a/Alc/midi/fluidsynth.c
+++ b/Alc/midi/fluidsynth.c
@@ -166,6 +166,14 @@ static int FPreset_noteOn(fluid_preset_t *preset, fluid_synth_t *synth, int chan
fluid_voice_gen_set(voice, 5, sound->ModLfoToPitch);
fluid_voice_gen_set(voice, 6, sound->VibratoLfoToPitch);
fluid_voice_gen_set(voice, 7, sound->ModEnvToPitch);
+ fluid_voice_gen_set(voice, 25, sound->ModEnv.DelayTime);
+ fluid_voice_gen_set(voice, 26, sound->ModEnv.AttackTime);
+ fluid_voice_gen_set(voice, 27, sound->ModEnv.HoldTime);
+ fluid_voice_gen_set(voice, 28, sound->ModEnv.DecayTime);
+ fluid_voice_gen_set(voice, 29, sound->ModEnv.SustainVol);
+ fluid_voice_gen_set(voice, 30, sound->ModEnv.ReleaseTime);
+ fluid_voice_gen_set(voice, 31, sound->ModEnv.KeyToHoldTime);
+ fluid_voice_gen_set(voice, 32, sound->ModEnv.KeyToDecayTime);
fluid_voice_gen_set(voice, 33, sound->VolEnv.DelayTime);
fluid_voice_gen_set(voice, 34, sound->VolEnv.AttackTime);
fluid_voice_gen_set(voice, 35, sound->VolEnv.HoldTime);
diff --git a/Alc/midi/sf2load.c b/Alc/midi/sf2load.c
index be2cb1df..b33ea8af 100644
--- a/Alc/midi/sf2load.c
+++ b/Alc/midi/sf2load.c
@@ -819,14 +819,14 @@ static void fillZone(ALuint id, const GenModList *zone)
0, /* 22 - freqModLFO */
0, /* 23 - delayVibLFO */
0, /* 24 - freqVibLFO */
- 0, /* 25 - delayModEnv */
- 0, /* 26 - attackModEnv */
- 0, /* 27 - holdModEnv */
- 0, /* 28 - decayModEnv */
- 0, /* 29 - sustainModEnv */
- 0, /* 30 - releaseModEnv */
- 0, /* 31 - keynumToModEnvHold */
- 0, /* 32 - keynumToModEnvDecay */
+ AL_MOD_ENV_DELAYTIME_SOFT, /* 25 - delayModEnv */
+ AL_MOD_ENV_ATTACKTIME_SOFT, /* 26 - attackModEnv */
+ AL_MOD_ENV_HOLDTIME_SOFT, /* 27 - holdModEnv */
+ AL_MOD_ENV_DECAYTIME_SOFT, /* 28 - decayModEnv */
+ AL_MOD_ENV_SUSTAINVOLUME_SOFT, /* 29 - sustainModEnv */
+ AL_MOD_ENV_RELEASETIME_SOFT, /* 30 - releaseModEnv */
+ AL_MOD_ENV_KEY_TO_HOLDTIME_SOFT, /* 31 - keynumToModEnvHold */
+ AL_MOD_ENV_KEY_TO_DECAYTIME_SOFT, /* 32 - keynumToModEnvDecay */
AL_VOLUME_ENV_DELAYTIME_SOFT, /* 33 - delayVolEnv */
AL_VOLUME_ENV_ATTACKTIME_SOFT, /* 34 - attackVolEnv */
AL_VOLUME_ENV_HOLDTIME_SOFT, /* 35 - holdVolEnv */