aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32
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 /OpenAL32
parent4659669a740a2501b93aa54ae925eeb91ac5e80d (diff)
Add volume envelope properties
Diffstat (limited to 'OpenAL32')
-rw-r--r--OpenAL32/Include/alMain.h8
-rw-r--r--OpenAL32/Include/alMidi.h11
-rw-r--r--OpenAL32/alFontsound.c72
3 files changed, 91 insertions, 0 deletions
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h
index 0cc06df3..2f9440b9 100644
--- a/OpenAL32/Include/alMain.h
+++ b/OpenAL32/Include/alMain.h
@@ -48,6 +48,14 @@
#define AL_KEY_CORRECTION_SOFT 0x2006
#define AL_SAMPLE_TYPE_SOFT 0x2007
#define AL_FONTSOUND_LINK_SOFT 0x2008
+#define AL_VOLUME_ENV_DELAYTIME_SOFT 0x0021
+#define AL_VOLUME_ENV_ATTACKTIME_SOFT 0x0022
+#define AL_VOLUME_ENV_HOLDTIME_SOFT 0x0023
+#define AL_VOLUME_ENV_DECAYTIME_SOFT 0x0024
+#define AL_VOLUME_ENV_SUSTAINVOLUME_SOFT 0x0025
+#define AL_VOLUME_ENV_RELEASETIME_SOFT 0x0026
+#define AL_VOLUME_ENV_KEY_TO_HOLDTIME_SOFT 0x0027
+#define AL_VOLUME_ENV_KEY_TO_DECAYTIME_SOFT 0x0028
#define AL_KEY_RANGE_SOFT 0x002B
#define AL_VELOCITY_RANGE_SOFT 0x002C
#define AL_LOOP_MODE_SOFT 0x0036
diff --git a/OpenAL32/Include/alMidi.h b/OpenAL32/Include/alMidi.h
index 44d05c1a..cdaebc28 100644
--- a/OpenAL32/Include/alMidi.h
+++ b/OpenAL32/Include/alMidi.h
@@ -23,6 +23,17 @@ typedef struct ALfontsound {
ALint MinKey, MaxKey;
ALint MinVelocity, MaxVelocity;
+ struct {
+ ALint DelayTime;
+ ALint AttackTime;
+ ALint HoldTime;
+ ALint DecayTime;
+ ALint SustainVol;
+ ALint ReleaseTime;
+ ALint KeyToHoldTime;
+ ALint KeyToDecayTime;
+ } VolEnv;
+
ALuint Start;
ALuint End;
ALuint LoopStart;
diff --git a/OpenAL32/alFontsound.c b/OpenAL32/alFontsound.c
index 36f34570..e4da6503 100644
--- a/OpenAL32/alFontsound.c
+++ b/OpenAL32/alFontsound.c
@@ -130,6 +130,38 @@ AL_API void AL_APIENTRY alFontsoundiSOFT(ALuint id, ALenum param, ALint value)
SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
switch(param)
{
+ case AL_VOLUME_ENV_DELAYTIME_SOFT:
+ sound->VolEnv.DelayTime = value;
+ break;
+
+ case AL_VOLUME_ENV_ATTACKTIME_SOFT:
+ sound->VolEnv.AttackTime = value;
+ break;
+
+ case AL_VOLUME_ENV_HOLDTIME_SOFT:
+ sound->VolEnv.HoldTime = value;
+ break;
+
+ case AL_VOLUME_ENV_DECAYTIME_SOFT:
+ sound->VolEnv.DecayTime = value;
+ break;
+
+ case AL_VOLUME_ENV_SUSTAINVOLUME_SOFT:
+ sound->VolEnv.SustainVol = value;
+ break;
+
+ case AL_VOLUME_ENV_RELEASETIME_SOFT:
+ sound->VolEnv.ReleaseTime = value;
+ break;
+
+ case AL_VOLUME_ENV_KEY_TO_HOLDTIME_SOFT:
+ sound->VolEnv.KeyToHoldTime = value;
+ break;
+
+ case AL_VOLUME_ENV_KEY_TO_DECAYTIME_SOFT:
+ sound->VolEnv.KeyToDecayTime = value;
+ break;
+
case AL_SAMPLE_START_SOFT:
sound->Start = value;
break;
@@ -250,6 +282,14 @@ AL_API void AL_APIENTRY alFontsoundivSOFT(ALuint id, ALenum param, const ALint *
alFontsound2iSOFT(id, param, values[0], values[1]);
return;
+ case AL_VOLUME_ENV_DELAYTIME_SOFT:
+ case AL_VOLUME_ENV_ATTACKTIME_SOFT:
+ case AL_VOLUME_ENV_HOLDTIME_SOFT:
+ case AL_VOLUME_ENV_DECAYTIME_SOFT:
+ case AL_VOLUME_ENV_SUSTAINVOLUME_SOFT:
+ case AL_VOLUME_ENV_RELEASETIME_SOFT:
+ case AL_VOLUME_ENV_KEY_TO_HOLDTIME_SOFT:
+ case AL_VOLUME_ENV_KEY_TO_DECAYTIME_SOFT:
case AL_SAMPLE_START_SOFT:
case AL_SAMPLE_END_SOFT:
case AL_SAMPLE_LOOP_START_SOFT:
@@ -296,6 +336,38 @@ AL_API void AL_APIENTRY alGetFontsoundivSOFT(ALuint id, ALenum param, ALint *val
SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
switch(param)
{
+ case AL_VOLUME_ENV_DELAYTIME_SOFT:
+ values[0] = sound->VolEnv.DelayTime;
+ break;
+
+ case AL_VOLUME_ENV_ATTACKTIME_SOFT:
+ values[0] = sound->VolEnv.AttackTime;
+ break;
+
+ case AL_VOLUME_ENV_HOLDTIME_SOFT:
+ values[0] = sound->VolEnv.HoldTime;
+ break;
+
+ case AL_VOLUME_ENV_DECAYTIME_SOFT:
+ values[0] = sound->VolEnv.DecayTime;
+ break;
+
+ case AL_VOLUME_ENV_SUSTAINVOLUME_SOFT:
+ values[0] = sound->VolEnv.SustainVol;
+ break;
+
+ case AL_VOLUME_ENV_RELEASETIME_SOFT:
+ values[0] = sound->VolEnv.ReleaseTime;
+ break;
+
+ case AL_VOLUME_ENV_KEY_TO_HOLDTIME_SOFT:
+ values[0] = sound->VolEnv.KeyToHoldTime;
+ break;
+
+ case AL_VOLUME_ENV_KEY_TO_DECAYTIME_SOFT:
+ values[0] = sound->VolEnv.KeyToDecayTime;
+ break;
+
case AL_KEY_RANGE_SOFT:
values[0] = sound->MinKey;
values[1] = sound->MaxKey;