aboutsummaryrefslogtreecommitdiffstats
path: root/Alc
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2013-12-29 02:14:10 -0800
committerChris Robinson <[email protected]>2013-12-29 02:14:10 -0800
commitfc928bb75a8b677e101785e50b8c4cf0d39a62aa (patch)
treeb68eb470eb2ca46cde300041d35926d59abda285 /Alc
parent4659669a740a2501b93aa54ae925eeb91ac5e80d (diff)
Add volume envelope properties
Diffstat (limited to 'Alc')
-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 470157e1..11c43d25 100644
--- a/Alc/midi/base.c
+++ b/Alc/midi/base.c
@@ -295,6 +295,15 @@ void ALfontsound_Construct(ALfontsound *self)
self->MinVelocity = 0;
self->MaxVelocity = 127;
+ self->VolEnv.DelayTime = -12000;
+ self->VolEnv.AttackTime = -12000;
+ self->VolEnv.HoldTime = -12000;
+ self->VolEnv.DecayTime = -12000;
+ self->VolEnv.SustainVol = 0;
+ self->VolEnv.ReleaseTime = -12000;
+ self->VolEnv.KeyToHoldTime = 0;
+ self->VolEnv.KeyToDecayTime = 0;
+
self->Start = 0;
self->End = 0;
self->LoopStart = 0;
diff --git a/Alc/midi/fluidsynth.c b/Alc/midi/fluidsynth.c
index 5b57de21..d5174887 100644
--- a/Alc/midi/fluidsynth.c
+++ b/Alc/midi/fluidsynth.c
@@ -163,6 +163,14 @@ static int FPreset_noteOn(fluid_preset_t *preset, fluid_synth_t *synth, int chan
if(voice == NULL)
return FLUID_FAILED;
+ 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);
+ fluid_voice_gen_set(voice, 36, sound->VolEnv.DecayTime);
+ fluid_voice_gen_set(voice, 37, sound->VolEnv.SustainVol);
+ fluid_voice_gen_set(voice, 38, sound->VolEnv.ReleaseTime);
+ fluid_voice_gen_set(voice, 39, sound->VolEnv.KeyToHoldTime);
+ fluid_voice_gen_set(voice, 40, sound->VolEnv.KeyToDecayTime);
fluid_voice_gen_set(voice, 54, sound->LoopMode);
for(m = 0;m < sample->NumMods;m++)
fluid_voice_add_mod(voice, &sample->Mods[m], FLUID_VOICE_OVERWRITE);
diff --git a/Alc/midi/sf2load.c b/Alc/midi/sf2load.c
index e8b4fb1b..e5fcee43 100644
--- a/Alc/midi/sf2load.c
+++ b/Alc/midi/sf2load.c
@@ -827,14 +827,14 @@ static void fillZone(ALuint id, const GenModList *zone)
0, /* 30 - releaseModEnv */
0, /* 31 - keynumToModEnvHold */
0, /* 32 - keynumToModEnvDecay */
- 0, /* 33 - delayVolEnv */
- 0, /* 34 - attackVolEnv */
- 0, /* 35 - holdVolEnv */
- 0, /* 36 - decayVolEnv */
- 0, /* 37 - sustainVolEnv */
- 0, /* 38 - releaseVolEnv */
- 0, /* 39 - keynumToVolEnvHold */
- 0, /* 40 - keynumToVolEnvDecay */
+ AL_VOLUME_ENV_DELAYTIME_SOFT, /* 33 - delayVolEnv */
+ AL_VOLUME_ENV_ATTACKTIME_SOFT, /* 34 - attackVolEnv */
+ AL_VOLUME_ENV_HOLDTIME_SOFT, /* 35 - holdVolEnv */
+ AL_VOLUME_ENV_DECAYTIME_SOFT, /* 36 - decayVolEnv */
+ AL_VOLUME_ENV_SUSTAINVOLUME_SOFT, /* 37 - sustainVolEnv */
+ AL_VOLUME_ENV_RELEASETIME_SOFT, /* 38 - releaseVolEnv */
+ AL_VOLUME_ENV_KEY_TO_HOLDTIME_SOFT, /* 39 - keynumToVolEnvHold */
+ AL_VOLUME_ENV_KEY_TO_DECAYTIME_SOFT, /* 40 - keynumToVolEnvDecay */
0, /* 41 - */
0, /* 42 - */
AL_KEY_RANGE_SOFT, /* 43 - keyRange */