Add chorus and reverb send properties
This commit is contained in:
@@ -306,6 +306,9 @@ void ALfontsound_Construct(ALfontsound *self)
|
||||
|
||||
self->Pan = 0;
|
||||
|
||||
self->ChorusSend = 0;
|
||||
self->ReverbSend = 0;
|
||||
|
||||
self->ModEnv.DelayTime = -12000;
|
||||
self->ModEnv.AttackTime = -12000;
|
||||
self->ModEnv.HoldTime = -12000;
|
||||
|
||||
@@ -170,6 +170,8 @@ static int FPreset_noteOn(fluid_preset_t *preset, fluid_synth_t *synth, int chan
|
||||
fluid_voice_gen_set(voice, 9, sound->FilterQ);
|
||||
fluid_voice_gen_set(voice, 10, sound->ModLfoToFilterCutoff);
|
||||
fluid_voice_gen_set(voice, 11, sound->ModEnvToFilterCutoff);
|
||||
fluid_voice_gen_set(voice, 15, sound->ChorusSend);
|
||||
fluid_voice_gen_set(voice, 16, sound->ReverbSend);
|
||||
fluid_voice_gen_set(voice, 17, sound->Pan);
|
||||
fluid_voice_gen_set(voice, 25, sound->ModEnv.DelayTime);
|
||||
fluid_voice_gen_set(voice, 26, sound->ModEnv.AttackTime);
|
||||
|
||||
+4
-2
@@ -809,8 +809,8 @@ static void fillZone(ALuint id, const GenModList *zone)
|
||||
0, /* 12 - endAddrCoarseOffset */
|
||||
0, /* 13 - modLfoToVolume */
|
||||
0, /* 14 - */
|
||||
0, /* 15 - chorusEffectsSend */
|
||||
0, /* 16 - reverbEffectsSend */
|
||||
AL_CHORUS_SEND_SOFT, /* 15 - chorusEffectsSend */
|
||||
AL_REVERB_SEND_SOFT, /* 16 - reverbEffectsSend */
|
||||
AL_PAN_SOFT, /* 17 - pan */
|
||||
0, /* 18 - */
|
||||
0, /* 19 - */
|
||||
@@ -897,6 +897,8 @@ static void fillZone(ALuint id, const GenModList *zone)
|
||||
break;
|
||||
if(param == AL_FILTER_RESONANCE_SOFT || param == AL_ATTENUATION_SOFT)
|
||||
value = maxi(0, value);
|
||||
else if(param == AL_CHORUS_SEND_SOFT || param == AL_REVERB_SEND_SOFT)
|
||||
value = clampi(value, 0, 1000);
|
||||
else if(param == AL_LOOP_MODE_SOFT)
|
||||
{
|
||||
if(!(value == 0 || value == 1 || value == 3))
|
||||
|
||||
@@ -55,6 +55,8 @@
|
||||
#define AL_FILTER_RESONANCE_SOFT 0x0009
|
||||
#define AL_MOD_LFO_TO_FILTER_CUTOFF_SOFT 0x000A
|
||||
#define AL_MOD_ENV_TO_FILTER_CUTOFF_SOFT 0x000B
|
||||
#define AL_CHORUS_SEND_SOFT 0x000F
|
||||
#define AL_REVERB_SEND_SOFT 0x0010
|
||||
#define AL_PAN_SOFT 0x0011
|
||||
#define AL_MOD_ENV_DELAYTIME_SOFT 0x0019
|
||||
#define AL_MOD_ENV_ATTACKTIME_SOFT 0x001A
|
||||
|
||||
@@ -32,6 +32,9 @@ typedef struct ALfontsound {
|
||||
ALint ModLfoToFilterCutoff;
|
||||
ALint ModEnvToFilterCutoff;
|
||||
|
||||
ALint ChorusSend;
|
||||
ALint ReverbSend;
|
||||
|
||||
ALint Pan;
|
||||
|
||||
struct {
|
||||
|
||||
@@ -160,6 +160,18 @@ AL_API void AL_APIENTRY alFontsoundiSOFT(ALuint id, ALenum param, ALint value)
|
||||
sound->ModEnvToFilterCutoff = value;
|
||||
break;
|
||||
|
||||
case AL_CHORUS_SEND_SOFT:
|
||||
if(!(value >= 0 && value <= 1000))
|
||||
SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
|
||||
sound->ChorusSend = value;
|
||||
break;
|
||||
|
||||
case AL_REVERB_SEND_SOFT:
|
||||
if(!(value >= 0 && value <= 1000))
|
||||
SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
|
||||
sound->ReverbSend = value;
|
||||
break;
|
||||
|
||||
case AL_PAN_SOFT:
|
||||
sound->Pan = value;
|
||||
break;
|
||||
@@ -358,6 +370,8 @@ AL_API void AL_APIENTRY alFontsoundivSOFT(ALuint id, ALenum param, const ALint *
|
||||
case AL_FILTER_RESONANCE_SOFT:
|
||||
case AL_MOD_LFO_TO_FILTER_CUTOFF_SOFT:
|
||||
case AL_MOD_ENV_TO_FILTER_CUTOFF_SOFT:
|
||||
case AL_CHORUS_SEND_SOFT:
|
||||
case AL_REVERB_SEND_SOFT:
|
||||
case AL_PAN_SOFT:
|
||||
case AL_MOD_ENV_DELAYTIME_SOFT:
|
||||
case AL_MOD_ENV_ATTACKTIME_SOFT:
|
||||
@@ -453,6 +467,14 @@ AL_API void AL_APIENTRY alGetFontsoundivSOFT(ALuint id, ALenum param, ALint *val
|
||||
values[0] = sound->ModEnvToFilterCutoff;
|
||||
break;
|
||||
|
||||
case AL_CHORUS_SEND_SOFT:
|
||||
values[0] = sound->ChorusSend;
|
||||
break;
|
||||
|
||||
case AL_REVERB_SEND_SOFT:
|
||||
values[0] = sound->ReverbSend;
|
||||
break;
|
||||
|
||||
case AL_PAN_SOFT:
|
||||
values[0] = sound->Pan;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user