aboutsummaryrefslogtreecommitdiffstats
path: root/OpenAL32
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2015-10-20 17:41:53 -0700
committerChris Robinson <[email protected]>2015-10-20 18:01:27 -0700
commit6689c61ff474657109c5a73827b8733aba7dfd45 (patch)
tree3c9a3371b1be3085ec4a298148bd45ebf495c44f /OpenAL32
parentd9a77a7edc309f399ce257f4b69d240008f47b49 (diff)
Remove the MIDI code
The extension's not going anywhere, and it can't do anything fluidsynth can't. The code maintenance and bloat is not worth keeping around, and ideally the AL API would be able to facilitate MIDI-like behavior anyway (envelopes, start-at- time, etc).
Diffstat (limited to 'OpenAL32')
-rw-r--r--OpenAL32/Include/alMain.h214
-rw-r--r--OpenAL32/Include/alMidi.h173
-rw-r--r--OpenAL32/alFontsound.c1014
-rw-r--r--OpenAL32/alMidi.c217
-rw-r--r--OpenAL32/alPreset.c339
-rw-r--r--OpenAL32/alSoundfont.c455
-rw-r--r--OpenAL32/alState.c96
7 files changed, 0 insertions, 2508 deletions
diff --git a/OpenAL32/Include/alMain.h b/OpenAL32/Include/alMain.h
index e7ca5ac7..214047ee 100644
--- a/OpenAL32/Include/alMain.h
+++ b/OpenAL32/Include/alMain.h
@@ -61,205 +61,6 @@ ALC_API ALCboolean ALC_APIENTRY alcResetDeviceSOFT(ALCdevice *device, const ALCi
#endif
#endif
-#ifndef ALC_SOFT_midi_interface
-#define ALC_SOFT_midi_interface 1
-/* Global properties */
-#define AL_MIDI_CLOCK_SOFT 0x9999
-#define AL_MIDI_STATE_SOFT 0x9986
-#define AL_MIDI_GAIN_SOFT 0x9998
-#define AL_SOUNDFONTS_SIZE_SOFT 0x9995
-#define AL_SOUNDFONTS_SOFT 0x9994
-
-/* Soundfont properties */
-#define AL_PRESETS_SIZE_SOFT 0x9993
-#define AL_PRESETS_SOFT 0x9992
-
-/* Preset properties */
-#define AL_MIDI_PRESET_SOFT 0x9997
-#define AL_MIDI_BANK_SOFT 0x9996
-#define AL_FONTSOUNDS_SIZE_SOFT 0x9991
-#define AL_FONTSOUNDS_SOFT 0x9990
-
-/* Fontsound properties */
-/* AL_BUFFER */
-#define AL_SAMPLE_START_SOFT 0x2000
-#define AL_SAMPLE_END_SOFT 0x2001
-#define AL_SAMPLE_LOOP_START_SOFT 0x2002
-#define AL_SAMPLE_LOOP_END_SOFT 0x2003
-#define AL_SAMPLE_RATE_SOFT 0x2004
-#define AL_BASE_KEY_SOFT 0x2005
-#define AL_KEY_CORRECTION_SOFT 0x2006
-#define AL_SAMPLE_TYPE_SOFT 0x2007
-#define AL_FONTSOUND_LINK_SOFT 0x2008
-#define AL_MOD_LFO_TO_PITCH_SOFT 0x0005
-#define AL_VIBRATO_LFO_TO_PITCH_SOFT 0x0006
-#define AL_MOD_ENV_TO_PITCH_SOFT 0x0007
-#define AL_FILTER_CUTOFF_SOFT 0x0008
-#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_MOD_LFO_TO_VOLUME_SOFT 0x000D
-#define AL_CHORUS_SEND_SOFT 0x000F
-#define AL_REVERB_SEND_SOFT 0x0010
-#define AL_PAN_SOFT 0x0011
-#define AL_MOD_LFO_DELAY_SOFT 0x0015
-#define AL_MOD_LFO_FREQUENCY_SOFT 0x0016
-#define AL_VIBRATO_LFO_DELAY_SOFT 0x0017
-#define AL_VIBRATO_LFO_FREQUENCY_SOFT 0x0018
-#define AL_MOD_ENV_DELAYTIME_SOFT 0x0019
-#define AL_MOD_ENV_ATTACKTIME_SOFT 0x001A
-#define AL_MOD_ENV_HOLDTIME_SOFT 0x001B
-#define AL_MOD_ENV_DECAYTIME_SOFT 0x001C
-#define AL_MOD_ENV_SUSTAINVOLUME_SOFT 0x001D
-#define AL_MOD_ENV_RELEASETIME_SOFT 0x002E
-#define AL_MOD_ENV_KEY_TO_HOLDTIME_SOFT 0x001F
-#define AL_MOD_ENV_KEY_TO_DECAYTIME_SOFT 0x0020
-#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_ATTENUATION_SOFT 0x0030
-#define AL_TUNING_COARSE_SOFT 0x0033
-#define AL_TUNING_FINE_SOFT 0x0034
-#define AL_LOOP_MODE_SOFT 0x0036
-#define AL_TUNING_SCALE_SOFT 0x0038
-#define AL_EXCLUSIVE_CLASS_SOFT 0x0039
-
-/* Sample Types */
-/* AL_MONO_SOFT */
-#define AL_RIGHT_SOFT 0x0002
-#define AL_LEFT_SOFT 0x0004
-
-/* Loop Modes */
-/* AL_NONE */
-#define AL_LOOP_CONTINUOUS_SOFT 0x0001
-#define AL_LOOP_UNTIL_RELEASE_SOFT 0x0003
-
-/* Fontsound modulator stage properties */
-#define AL_SOURCE0_INPUT_SOFT 0x998F
-#define AL_SOURCE0_TYPE_SOFT 0x998E
-#define AL_SOURCE0_FORM_SOFT 0x998D
-#define AL_SOURCE1_INPUT_SOFT 0x998C
-#define AL_SOURCE1_TYPE_SOFT 0x998B
-#define AL_SOURCE1_FORM_SOFT 0x998A
-#define AL_AMOUNT_SOFT 0x9989
-#define AL_TRANSFORM_OP_SOFT 0x9988
-#define AL_DESTINATION_SOFT 0x9987
-
-/* Sounce Inputs */
-#define AL_ONE_SOFT 0x0080
-#define AL_NOTEON_VELOCITY_SOFT 0x0082
-#define AL_NOTEON_KEY_SOFT 0x0083
-/* AL_KEYPRESSURE_SOFT */
-/* AL_CHANNELPRESSURE_SOFT */
-/* AL_PITCHBEND_SOFT */
-#define AL_PITCHBEND_SENSITIVITY_SOFT 0x0090
-/* CC 0...127 */
-
-/* Source Types */
-#define AL_UNORM_SOFT 0x0000
-#define AL_UNORM_REV_SOFT 0x0100
-#define AL_SNORM_SOFT 0x0200
-#define AL_SNORM_REV_SOFT 0x0300
-
-/* Source Forms */
-#define AL_LINEAR_SOFT 0x0000
-#define AL_CONCAVE_SOFT 0x0400
-#define AL_CONVEX_SOFT 0x0800
-#define AL_SWITCH_SOFT 0x0C00
-
-/* Transform Ops */
-/* AL_LINEAR_SOFT */
-#define AL_ABSOLUTE_SOFT 0x0002
-
-/* Events */
-#define AL_NOTEOFF_SOFT 0x0080
-#define AL_NOTEON_SOFT 0x0090
-#define AL_KEYPRESSURE_SOFT 0x00A0
-#define AL_CONTROLLERCHANGE_SOFT 0x00B0
-#define AL_PROGRAMCHANGE_SOFT 0x00C0
-#define AL_CHANNELPRESSURE_SOFT 0x00D0
-#define AL_PITCHBEND_SOFT 0x00E0
-
-typedef void (AL_APIENTRY*LPALGENSOUNDFONTSSOFT)(ALsizei n, ALuint *ids);
-typedef void (AL_APIENTRY*LPALDELETESOUNDFONTSSOFT)(ALsizei n, const ALuint *ids);
-typedef ALboolean (AL_APIENTRY*LPALISSOUNDFONTSOFT)(ALuint id);
-typedef void (AL_APIENTRY*LPALGETSOUNDFONTIVSOFT)(ALuint id, ALenum param, ALint *values);
-typedef void (AL_APIENTRY*LPALSOUNDFONTPRESETSSOFT)(ALuint id, ALsizei count, const ALuint *pids);
-typedef void (AL_APIENTRY*LPALGENPRESETSSOFT)(ALsizei n, ALuint *ids);
-typedef void (AL_APIENTRY*LPALDELETEPRESETSSOFT)(ALsizei n, const ALuint *ids);
-typedef ALboolean (AL_APIENTRY*LPALISPRESETSOFT)(ALuint id);
-typedef void (AL_APIENTRY*LPALPRESETISOFT)(ALuint id, ALenum param, ALint value);
-typedef void (AL_APIENTRY*LPALPRESETIVSOFT)(ALuint id, ALenum param, const ALint *values);
-typedef void (AL_APIENTRY*LPALPRESETFONTSOUNDSSOFT)(ALuint id, ALsizei count, const ALuint *fsids);
-typedef void (AL_APIENTRY*LPALGETPRESETIVSOFT)(ALuint id, ALenum param, ALint *values);
-typedef void (AL_APIENTRY*LPALGENFONTSOUNDSSOFT)(ALsizei n, ALuint *ids);
-typedef void (AL_APIENTRY*LPALDELETEFONTSOUNDSSOFT)(ALsizei n, const ALuint *ids);
-typedef ALboolean (AL_APIENTRY*LPALISFONTSOUNDSOFT)(ALuint id);
-typedef void (AL_APIENTRY*LPALFONTSOUNDISOFT)(ALuint id, ALenum param, ALint value);
-typedef void (AL_APIENTRY*LPALFONTSOUND2ISOFT)(ALuint id, ALenum param, ALint value1, ALint value2);
-typedef void (AL_APIENTRY*LPALFONTSOUNDIVSOFT)(ALuint id, ALenum param, const ALint *values);
-typedef void (AL_APIENTRY*LPALGETFONTSOUNDIVSOFT)(ALuint id, ALenum param, ALint *values);
-typedef void (AL_APIENTRY*LPALFONTSOUNDMOFULATORISOFT)(ALuint id, ALsizei stage, ALenum param, ALint value);
-typedef void (AL_APIENTRY*LPALGETFONTSOUNDMODULATORIVSOFT)(ALuint id, ALsizei stage, ALenum param, ALint *values);
-typedef void (AL_APIENTRY*LPALMIDISOUNDFONTSOFT)(ALuint id);
-typedef void (AL_APIENTRY*LPALMIDISOUNDFONTVSOFT)(ALsizei count, const ALuint *ids);
-typedef void (AL_APIENTRY*LPALMIDIEVENTSOFT)(ALuint64SOFT time, ALenum event, ALsizei channel, ALsizei param1, ALsizei param2);
-typedef void (AL_APIENTRY*LPALMIDISYSEXSOFT)(ALuint64SOFT time, const ALbyte *data, ALsizei size);
-typedef void (AL_APIENTRY*LPALMIDIPLAYSOFT)(void);
-typedef void (AL_APIENTRY*LPALMIDIPAUSESOFT)(void);
-typedef void (AL_APIENTRY*LPALMIDISTOPSOFT)(void);
-typedef void (AL_APIENTRY*LPALMIDIRESETSOFT)(void);
-typedef void (AL_APIENTRY*LPALMIDIGAINSOFT)(ALfloat value);
-typedef ALint64SOFT (AL_APIENTRY*LPALGETINTEGER64SOFT)(ALenum pname);
-typedef void (AL_APIENTRY*LPALGETINTEGER64VSOFT)(ALenum pname, ALint64SOFT *values);
-typedef void (AL_APIENTRY*LPALLOADSOUNDFONTSOFT)(ALuint id, size_t(*cb)(ALvoid*,size_t,ALvoid*), ALvoid *user);
-#ifdef AL_ALEXT_PROTOTYPES
-AL_API void AL_APIENTRY alGenSoundfontsSOFT(ALsizei n, ALuint *ids);
-AL_API void AL_APIENTRY alDeleteSoundfontsSOFT(ALsizei n, const ALuint *ids);
-AL_API ALboolean AL_APIENTRY alIsSoundfontSOFT(ALuint id);
-AL_API void AL_APIENTRY alGetSoundfontivSOFT(ALuint id, ALenum param, ALint *values);
-AL_API void AL_APIENTRY alSoundfontPresetsSOFT(ALuint id, ALsizei count, const ALuint *pids);
-
-AL_API void AL_APIENTRY alGenPresetsSOFT(ALsizei n, ALuint *ids);
-AL_API void AL_APIENTRY alDeletePresetsSOFT(ALsizei n, const ALuint *ids);
-AL_API ALboolean AL_APIENTRY alIsPresetSOFT(ALuint id);
-AL_API void AL_APIENTRY alPresetiSOFT(ALuint id, ALenum param, ALint value);
-AL_API void AL_APIENTRY alPresetivSOFT(ALuint id, ALenum param, const ALint *values);
-AL_API void AL_APIENTRY alGetPresetivSOFT(ALuint id, ALenum param, ALint *values);
-AL_API void AL_APIENTRY alPresetFontsoundsSOFT(ALuint id, ALsizei count, const ALuint *fsids);
-
-AL_API void AL_APIENTRY alGenFontsoundsSOFT(ALsizei n, ALuint *ids);
-AL_API void AL_APIENTRY alDeleteFontsoundsSOFT(ALsizei n, const ALuint *ids);
-AL_API ALboolean AL_APIENTRY alIsFontsoundSOFT(ALuint id);
-AL_API void AL_APIENTRY alFontsoundiSOFT(ALuint id, ALenum param, ALint value);
-AL_API void AL_APIENTRY alFontsound2iSOFT(ALuint id, ALenum param, ALint value1, ALint value2);
-AL_API void AL_APIENTRY alFontsoundivSOFT(ALuint id, ALenum param, const ALint *values);
-AL_API void AL_APIENTRY alGetFontsoundivSOFT(ALuint id, ALenum param, ALint *values);
-AL_API void AL_APIENTRY alFontsoundModulatoriSOFT(ALuint id, ALsizei stage, ALenum param, ALint value);
-AL_API void AL_APIENTRY alGetFontsoundModulatorivSOFT(ALuint id, ALsizei stage, ALenum param, ALint *values);
-
-AL_API void AL_APIENTRY alMidiSoundfontSOFT(ALuint id);
-AL_API void AL_APIENTRY alMidiSoundfontvSOFT(ALsizei count, const ALuint *ids);
-AL_API void AL_APIENTRY alMidiEventSOFT(ALuint64SOFT time, ALenum event, ALsizei channel, ALsizei param1, ALsizei param2);
-AL_API void AL_APIENTRY alMidiSysExSOFT(ALuint64SOFT time, const ALbyte *data, ALsizei size);
-AL_API void AL_APIENTRY alMidiPlaySOFT(void);
-AL_API void AL_APIENTRY alMidiPauseSOFT(void);
-AL_API void AL_APIENTRY alMidiStopSOFT(void);
-AL_API void AL_APIENTRY alMidiResetSOFT(void);
-AL_API void AL_APIENTRY alMidiGainSOFT(ALfloat value);
-AL_API ALint64SOFT AL_APIENTRY alGetInteger64SOFT(ALenum pname);
-AL_API void AL_APIENTRY alGetInteger64vSOFT(ALenum pname, ALint64SOFT *values);
-AL_API void AL_APIENTRY alLoadSoundfontSOFT(ALuint id, size_t(*cb)(ALvoid*,size_t,ALvoid*), ALvoid *user);
-#endif
-#endif
-
#ifndef ALC_SOFT_device_clock
#define ALC_SOFT_device_clock 1
typedef int64_t ALCint64SOFT;
@@ -677,21 +478,6 @@ struct ALCdevice_struct
// Map of Filters for this device
UIntMap FilterMap;
- // Map of Soundfonts for this device
- UIntMap SfontMap;
-
- // Map of Presets for this device
- UIntMap PresetMap;
-
- // Map of Fontsounds for this device
- UIntMap FontsoundMap;
-
- /* Default soundfont (accessible as ID 0) */
- struct ALsoundfont *DefaultSfont;
-
- /* MIDI synth engine */
- struct MidiSynth *Synth;
-
/* HRTF filter tables */
vector_HrtfEntry Hrtf_List;
al_string Hrtf_Name;
diff --git a/OpenAL32/Include/alMidi.h b/OpenAL32/Include/alMidi.h
deleted file mode 100644
index b1c08e40..00000000
--- a/OpenAL32/Include/alMidi.h
+++ /dev/null
@@ -1,173 +0,0 @@
-#ifndef ALMIDI_H
-#define ALMIDI_H
-
-#include "alMain.h"
-#include "atomic.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct ALsfmodulator {
- struct {
- ALenum Input;
- ALenum Type;
- ALenum Form;
- } Source[2];
- ALint Amount;
- ALenum TransformOp;
- ALenum Dest;
-} ALsfmodulator;
-
-typedef struct ALenvelope {
- ALint DelayTime;
- ALint AttackTime;
- ALint HoldTime;
- ALint DecayTime;
- ALint SustainAttn;
- ALint ReleaseTime;
- ALint KeyToHoldTime;
- ALint KeyToDecayTime;
-} ALenvelope;
-
-
-typedef struct ALfontsound {
- RefCount ref;
-
- ATOMIC(struct ALbuffer*) Buffer;
-
- ALint MinKey, MaxKey;
- ALint MinVelocity, MaxVelocity;
-
- ALint ModLfoToPitch;
- ALint VibratoLfoToPitch;
- ALint ModEnvToPitch;
-
- ALint FilterCutoff;
- ALint FilterQ;
- ALint ModLfoToFilterCutoff;
- ALint ModEnvToFilterCutoff;
- ALint ModLfoToVolume;
-
- ALint ChorusSend;
- ALint ReverbSend;
-
- ALint Pan;
-
- struct {
- ALint Delay;
- ALint Frequency;
- } ModLfo;
- struct {
- ALint Delay;
- ALint Frequency;
- } VibratoLfo;
-
- ALenvelope ModEnv;
- ALenvelope VolEnv;
-
- ALint Attenuation;
-
- ALint CoarseTuning;
- ALint FineTuning;
-
- ALenum LoopMode;
-
- ALint TuningScale;
-
- ALint ExclusiveClass;
-
- ALuint Start;
- ALuint End;
- ALuint LoopStart;
- ALuint LoopEnd;
- ALuint SampleRate;
- ALubyte PitchKey;
- ALbyte PitchCorrection;
- ALenum SampleType;
-
- ATOMIC(struct ALfontsound*) Link;
-
- /* NOTE: Each map entry contains *four* (4) ALsfmodulator objects. */
- UIntMap ModulatorMap;
-
- ALuint id;
-} ALfontsound;
-
-void ALfontsound_setPropi(ALfontsound *self, ALCcontext *context, ALenum param, ALint value);
-void ALfontsound_setModStagei(ALfontsound *self, ALCcontext *context, ALsizei stage, ALenum param, ALint value);
-
-ALfontsound *NewFontsound(ALCcontext *context);
-void DeleteFontsound(ALCdevice *device, ALfontsound *sound);
-
-inline struct ALfontsound *LookupFontsound(ALCdevice *device, ALuint id)
-{ return (struct ALfontsound*)LookupUIntMapKey(&device->FontsoundMap, id); }
-inline struct ALfontsound *RemoveFontsound(ALCdevice *device, ALuint id)
-{ return (struct ALfontsound*)RemoveUIntMapKey(&device->FontsoundMap, id); }
-
-void ReleaseALFontsounds(ALCdevice *device);
-
-
-typedef struct ALsfpreset {
- RefCount ref;
-
- ALint Preset; /* a.k.a. MIDI program number */
- ALint Bank; /* MIDI bank 0...127, or percussion (bank 128) */
-
- ALfontsound **Sounds;
- ALsizei NumSounds;
-
- ALuint id;
-} ALsfpreset;
-
-ALsfpreset *NewPreset(ALCcontext *context);
-void DeletePreset(ALCdevice *device, ALsfpreset *preset);
-
-inline struct ALsfpreset *LookupPreset(ALCdevice *device, ALuint id)
-{ return (struct ALsfpreset*)LookupUIntMapKey(&device->PresetMap, id); }
-inline struct ALsfpreset *RemovePreset(ALCdevice *device, ALuint id)
-{ return (struct ALsfpreset*)RemoveUIntMapKey(&device->PresetMap, id); }
-
-void ReleaseALPresets(ALCdevice *device);
-
-
-typedef struct ALsoundfont {
- RefCount ref;
-
- ALsfpreset **Presets;
- ALsizei NumPresets;
-
- RWLock Lock;
-
- ALuint id;
-} ALsoundfont;
-
-ALsoundfont *ALsoundfont_getDefSoundfont(ALCcontext *context);
-void ALsoundfont_deleteSoundfont(ALsoundfont *self, ALCdevice *device);
-
-inline struct ALsoundfont *LookupSfont(ALCdevice *device, ALuint id)
-{ return (struct ALsoundfont*)LookupUIntMapKey(&device->SfontMap, id); }
-inline struct ALsoundfont *RemoveSfont(ALCdevice *device, ALuint id)
-{ return (struct ALsoundfont*)RemoveUIntMapKey(&device->SfontMap, id); }
-
-void ReleaseALSoundfonts(ALCdevice *device);
-
-
-inline ALboolean IsValidCtrlInput(int cc)
-{
- /* These correspond to MIDI functions, not real controller values. */
- if(cc == 0 || cc == 6 || cc == 32 || cc == 38 || (cc >= 98 && cc <= 101) || cc >= 120)
- return AL_FALSE;
- /* These are the LSB components of CC0...CC31, which are automatically used when
- * reading the MSB controller value. */
- if(cc >= 32 && cc <= 63)
- return AL_FALSE;
- /* All the rest are okay! */
- return AL_TRUE;
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ALMIDI_H */
diff --git a/OpenAL32/alFontsound.c b/OpenAL32/alFontsound.c
deleted file mode 100644
index 069fedd3..00000000
--- a/OpenAL32/alFontsound.c
+++ /dev/null
@@ -1,1014 +0,0 @@
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "alMain.h"
-#include "alMidi.h"
-#include "alError.h"
-#include "alThunk.h"
-#include "alBuffer.h"
-
-#include "midi/base.h"
-
-
-extern inline struct ALfontsound *LookupFontsound(ALCdevice *device, ALuint id);
-extern inline struct ALfontsound *RemoveFontsound(ALCdevice *device, ALuint id);
-
-
-static void ALfontsound_Construct(ALfontsound *self);
-static void ALfontsound_Destruct(ALfontsound *self);
-void ALfontsound_setPropi(ALfontsound *self, ALCcontext *context, ALenum param, ALint value);
-static ALsfmodulator *ALfontsound_getModStage(ALfontsound *self, ALsizei stage);
-void ALfontsound_setModStagei(ALfontsound *self, ALCcontext *context, ALsizei stage, ALenum param, ALint value);
-static void ALfontsound_getModStagei(ALfontsound *self, ALCcontext *context, ALsizei stage, ALenum param, ALint *values);
-
-static inline struct ALsfmodulator *LookupModulator(ALfontsound *sound, ALuint id)
-{
- ALsfmodulator *mod = LookupUIntMapKey(&sound->ModulatorMap, id>>2);
- if(mod) mod += id&3;
- return mod;
-}
-
-
-AL_API void AL_APIENTRY alGenFontsoundsSOFT(ALsizei n, ALuint *ids)
-{
- ALCcontext *context;
- ALsizei cur = 0;
-
- context = GetContextRef();
- if(!context) return;
-
- if(!(n >= 0))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- for(cur = 0;cur < n;cur++)
- {
- ALfontsound *sound = NewFontsound(context);
- if(!sound)
- {
- alDeleteFontsoundsSOFT(cur, ids);
- break;
- }
-
- ids[cur] = sound->id;
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API ALvoid AL_APIENTRY alDeleteFontsoundsSOFT(ALsizei n, const ALuint *ids)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALfontsound *inst;
- ALsizei i;
-
- context = GetContextRef();
- if(!context) return;
-
- if(!(n >= 0))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- device = context->Device;
- for(i = 0;i < n;i++)
- {
- /* Check for valid ID */
- if((inst=LookupFontsound(device, ids[i])) == NULL)
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(ReadRef(&inst->ref) != 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- }
-
- for(i = 0;i < n;i++)
- {
- if((inst=LookupFontsound(device, ids[i])) != NULL)
- DeleteFontsound(device, inst);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API ALboolean AL_APIENTRY alIsFontsoundSOFT(ALuint id)
-{
- ALCcontext *context;
- ALboolean ret;
-
- context = GetContextRef();
- if(!context) return AL_FALSE;
-
- ret = LookupFontsound(context->Device, id) ? AL_TRUE : AL_FALSE;
-
- ALCcontext_DecRef(context);
-
- return ret;
-}
-
-AL_API void AL_APIENTRY alFontsoundiSOFT(ALuint id, ALenum param, ALint value)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALfontsound *sound;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(!(sound=LookupFontsound(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(ReadRef(&sound->ref) != 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
-
- ALfontsound_setPropi(sound, context, param, value);
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alFontsound2iSOFT(ALuint id, ALenum param, ALint value1, ALint value2)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALfontsound *sound;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(!(sound=LookupFontsound(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(ReadRef(&sound->ref) != 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- switch(param)
- {
- case AL_KEY_RANGE_SOFT:
- if(!(value1 >= 0 && value1 <= 127 && value2 >= 0 && value2 <= 127 && value2 >= value1))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- sound->MinKey = value1;
- sound->MaxKey = value2;
- break;
-
- case AL_VELOCITY_RANGE_SOFT:
- if(!(value1 >= 0 && value1 <= 127 && value2 >= 0 && value2 <= 127 && value2 >= value1))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- sound->MinVelocity = value1;
- sound->MaxVelocity = value2;
- break;
-
- default:
- SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alFontsoundivSOFT(ALuint id, ALenum param, const ALint *values)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALfontsound *sound;
-
- switch(param)
- {
- case AL_KEY_RANGE_SOFT:
- case AL_VELOCITY_RANGE_SOFT:
- alFontsound2iSOFT(id, param, values[0], values[1]);
- return;
-
- case AL_MOD_LFO_TO_PITCH_SOFT:
- case AL_VIBRATO_LFO_TO_PITCH_SOFT:
- case AL_MOD_ENV_TO_PITCH_SOFT:
- case AL_FILTER_CUTOFF_SOFT:
- case AL_FILTER_RESONANCE_SOFT:
- case AL_MOD_LFO_TO_FILTER_CUTOFF_SOFT:
- case AL_MOD_ENV_TO_FILTER_CUTOFF_SOFT:
- case AL_MOD_LFO_TO_VOLUME_SOFT:
- case AL_CHORUS_SEND_SOFT:
- case AL_REVERB_SEND_SOFT:
- case AL_PAN_SOFT:
- case AL_MOD_LFO_DELAY_SOFT:
- case AL_MOD_LFO_FREQUENCY_SOFT:
- case AL_VIBRATO_LFO_DELAY_SOFT:
- case AL_VIBRATO_LFO_FREQUENCY_SOFT:
- case AL_MOD_ENV_DELAYTIME_SOFT:
- case AL_MOD_ENV_ATTACKTIME_SOFT:
- case AL_MOD_ENV_HOLDTIME_SOFT:
- case AL_MOD_ENV_DECAYTIME_SOFT:
- case AL_MOD_ENV_SUSTAINVOLUME_SOFT:
- case AL_MOD_ENV_RELEASETIME_SOFT:
- case AL_MOD_ENV_KEY_TO_HOLDTIME_SOFT:
- case AL_MOD_ENV_KEY_TO_DECAYTIME_SOFT:
- 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_ATTENUATION_SOFT:
- case AL_TUNING_COARSE_SOFT:
- case AL_TUNING_FINE_SOFT:
- case AL_LOOP_MODE_SOFT:
- case AL_TUNING_SCALE_SOFT:
- case AL_EXCLUSIVE_CLASS_SOFT:
- case AL_SAMPLE_START_SOFT:
- case AL_SAMPLE_END_SOFT:
- case AL_SAMPLE_LOOP_START_SOFT:
- case AL_SAMPLE_LOOP_END_SOFT:
- case AL_SAMPLE_RATE_SOFT:
- case AL_BASE_KEY_SOFT:
- case AL_KEY_CORRECTION_SOFT:
- case AL_SAMPLE_TYPE_SOFT:
- case AL_FONTSOUND_LINK_SOFT:
- alFontsoundiSOFT(id, param, values[0]);
- return;
- }
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(!(sound=LookupFontsound(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(ReadRef(&sound->ref) != 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- switch(param)
- {
- default:
- SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alGetFontsoundivSOFT(ALuint id, ALenum param, ALint *values)
-{
- ALCdevice *device;
- ALCcontext *context;
- const ALfontsound *sound;
- ALfontsound *link;
- ALbuffer *buffer;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(!(sound=LookupFontsound(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- switch(param)
- {
- case AL_BUFFER:
- buffer = ATOMIC_LOAD(&sound->Buffer);
- values[0] = (buffer ? buffer->id : 0);
- break;
-
- case AL_MOD_LFO_TO_PITCH_SOFT:
- values[0] = sound->ModLfoToPitch;
- break;
-
- case AL_VIBRATO_LFO_TO_PITCH_SOFT:
- values[0] = sound->VibratoLfoToPitch;
- break;
-
- case AL_MOD_ENV_TO_PITCH_SOFT:
- values[0] = sound->ModEnvToPitch;
- break;
-
- case AL_FILTER_CUTOFF_SOFT:
- values[0] = sound->FilterCutoff;
- break;
-
- case AL_FILTER_RESONANCE_SOFT:
- values[0] = sound->FilterQ;
- break;
-
- case AL_MOD_LFO_TO_FILTER_CUTOFF_SOFT:
- values[0] = sound->ModLfoToFilterCutoff;
- break;
-
- case AL_MOD_ENV_TO_FILTER_CUTOFF_SOFT:
- values[0] = sound->ModEnvToFilterCutoff;
- break;
-
- case AL_MOD_LFO_TO_VOLUME_SOFT:
- values[0] = sound->ModLfoToVolume;
- 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;
-
- case AL_MOD_LFO_DELAY_SOFT:
- values[0] = sound->ModLfo.Delay;
- break;
- case AL_MOD_LFO_FREQUENCY_SOFT:
- values[0] = sound->ModLfo.Frequency;
- break;
-
- case AL_VIBRATO_LFO_DELAY_SOFT:
- values[0] = sound->VibratoLfo.Delay;
- break;
- case AL_VIBRATO_LFO_FREQUENCY_SOFT:
- values[0] = sound->VibratoLfo.Frequency;
- break;
-
- case AL_MOD_ENV_DELAYTIME_SOFT:
- values[0] = sound->ModEnv.DelayTime;
- break;
- case AL_MOD_ENV_ATTACKTIME_SOFT:
- values[0] = sound->ModEnv.AttackTime;
- break;
- case AL_MOD_ENV_HOLDTIME_SOFT:
- values[0] = sound->ModEnv.HoldTime;
- break;
- case AL_MOD_ENV_DECAYTIME_SOFT:
- values[0] = sound->ModEnv.DecayTime;
- break;
- case AL_MOD_ENV_SUSTAINVOLUME_SOFT:
- values[0] = sound->ModEnv.SustainAttn;
- break;
- case AL_MOD_ENV_RELEASETIME_SOFT:
- values[0] = sound->ModEnv.ReleaseTime;
- break;
- case AL_MOD_ENV_KEY_TO_HOLDTIME_SOFT:
- values[0] = sound->ModEnv.KeyToHoldTime;
- break;
- case AL_MOD_ENV_KEY_TO_DECAYTIME_SOFT:
- values[0] = sound->ModEnv.KeyToDecayTime;
- break;
-
- 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.SustainAttn;
- 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;
- break;
-
- case AL_VELOCITY_RANGE_SOFT:
- values[0] = sound->MinVelocity;
- values[1] = sound->MaxVelocity;
- break;
-
- case AL_ATTENUATION_SOFT:
- values[0] = sound->Attenuation;
- break;
-
- case AL_TUNING_COARSE_SOFT:
- values[0] = sound->CoarseTuning;
- break;
- case AL_TUNING_FINE_SOFT:
- values[0] = sound->FineTuning;
- break;
-
- case AL_LOOP_MODE_SOFT:
- values[0] = sound->LoopMode;
- break;
-
- case AL_TUNING_SCALE_SOFT:
- values[0] = sound->TuningScale;
- break;
-
- case AL_EXCLUSIVE_CLASS_SOFT:
- values[0] = sound->ExclusiveClass;
- break;
-
- case AL_SAMPLE_START_SOFT:
- values[0] = sound->Start;
- break;
-
- case AL_SAMPLE_END_SOFT:
- values[0] = sound->End;
- break;
-
- case AL_SAMPLE_LOOP_START_SOFT:
- values[0] = sound->LoopStart;
- break;
-
- case AL_SAMPLE_LOOP_END_SOFT:
- values[0] = sound->LoopEnd;
- break;
-
- case AL_SAMPLE_RATE_SOFT:
- values[0] = sound->SampleRate;
- break;
-
- case AL_BASE_KEY_SOFT:
- values[0] = sound->PitchKey;
- break;
-
- case AL_KEY_CORRECTION_SOFT:
- values[0] = sound->PitchCorrection;
- break;
-
- case AL_SAMPLE_TYPE_SOFT:
- values[0] = sound->SampleType;
- break;
-
- case AL_FONTSOUND_LINK_SOFT:
- link = ATOMIC_LOAD(&sound->Link);
- values[0] = (link ? link->id : 0);
- break;
-
- default:
- SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alFontsoundModulatoriSOFT(ALuint id, ALsizei stage, ALenum param, ALint value)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALfontsound *sound;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(!(sound=LookupFontsound(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- ALfontsound_setModStagei(sound, context, stage, param, value);
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alGetFontsoundModulatorivSOFT(ALuint id, ALsizei stage, ALenum param, ALint *values)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALfontsound *sound;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(!(sound=LookupFontsound(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- ALfontsound_getModStagei(sound, context, stage, param, values);
-
-done:
- ALCcontext_DecRef(context);
-}
-
-
-ALfontsound *NewFontsound(ALCcontext *context)
-{
- ALCdevice *device = context->Device;
- ALfontsound *sound;
- ALenum err;
-
- sound = calloc(1, sizeof(*sound));
- if(!sound)
- SET_ERROR_AND_RETURN_VALUE(context, AL_OUT_OF_MEMORY, NULL);
- ALfontsound_Construct(sound);
-
- err = NewThunkEntry(&sound->id);
- if(err == AL_NO_ERROR)
- err = InsertUIntMapEntry(&device->FontsoundMap, sound->id, sound);
- if(err != AL_NO_ERROR)
- {
- ALfontsound_Destruct(sound);
- memset(sound, 0, sizeof(*sound));
- free(sound);
-
- SET_ERROR_AND_RETURN_VALUE(context, err, NULL);
- }
-
- return sound;
-}
-
-void DeleteFontsound(ALCdevice *device, ALfontsound *sound)
-{
- RemoveFontsound(device, sound->id);
-
- ALfontsound_Destruct(sound);
-
- memset(sound, 0, sizeof(*sound));
- free(sound);
-}
-
-
-static void ALfontsound_Construct(ALfontsound *self)
-{
- InitRef(&self->ref, 0);
-
- ATOMIC_INIT(&self->Buffer, NULL);
-
- self->MinKey = 0;
- self->MaxKey = 127;
- self->MinVelocity = 0;
- self->MaxVelocity = 127;
-
- self->ModLfoToPitch = 0;
- self->VibratoLfoToPitch = 0;
- self->ModEnvToPitch = 0;
-
- self->FilterCutoff = 13500;
- self->FilterQ = 0;
- self->ModLfoToFilterCutoff = 0;
- self->ModEnvToFilterCutoff = 0;
- self->ModLfoToVolume = 0;
-
- self->ChorusSend = 0;
- self->ReverbSend = 0;
-
- self->Pan = 0;
-
- self->ModLfo.Delay = 0;
- self->ModLfo.Frequency = 0;
-
- self->VibratoLfo.Delay = 0;
- self->VibratoLfo.Frequency = 0;
-
- self->ModEnv.DelayTime = -12000;
- self->ModEnv.AttackTime = -12000;
- self->ModEnv.HoldTime = -12000;
- self->ModEnv.DecayTime = -12000;
- self->ModEnv.SustainAttn = 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;
- self->VolEnv.DecayTime = -12000;
- self->VolEnv.SustainAttn = 0;
- self->VolEnv.ReleaseTime = -12000;
- self->VolEnv.KeyToHoldTime = 0;
- self->VolEnv.KeyToDecayTime = 0;
-
- self->Attenuation = 0;
-
- self->CoarseTuning = 0;
- self->FineTuning = 0;
-
- self->LoopMode = AL_NONE;
-
- self->TuningScale = 100;
-
- self->ExclusiveClass = 0;
-
- self->Start = 0;
- self->End = 0;
- self->LoopStart = 0;
- self->LoopEnd = 0;
- self->SampleRate = 0;
- self->PitchKey = 0;
- self->PitchCorrection = 0;
- self->SampleType = AL_MONO_SOFT;
-
- ATOMIC_INIT(&self->Link, NULL);
-
- InitUIntMap(&self->ModulatorMap, ~0);
-
- self->id = 0;
-}
-
-static void ALfontsound_Destruct(ALfontsound *self)
-{
- ALfontsound *link;
- ALbuffer *buffer;
- ALsizei i;
-
- FreeThunkEntry(self->id);
- self->id = 0;
-
- if((buffer=ATOMIC_EXCHANGE(ALbuffer*, &self->Buffer, NULL)) != NULL)
- DecrementRef(&buffer->ref);
-
- if((link=ATOMIC_EXCHANGE(ALfontsound*, &self->Link, NULL)) != NULL)
- DecrementRef(&link->ref);
-
- for(i = 0;i < self->ModulatorMap.size;i++)
- {
- free(self->ModulatorMap.array[i].value);
- self->ModulatorMap.array[i].value = NULL;
- }
- ResetUIntMap(&self->ModulatorMap);
-}
-
-void ALfontsound_setPropi(ALfontsound *self, ALCcontext *context, ALenum param, ALint value)
-{
- ALfontsound *link;
- ALbuffer *buffer;
-
- switch(param)
- {
- case AL_BUFFER:
- buffer = value ? LookupBuffer(context->Device, value) : NULL;
- if(value && !buffer)
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- else if(buffer)
- {
- /* Buffer must have a non-0 length, and must be mono. */
- if(buffer->SampleLen <= 0 || buffer->FmtChannels != FmtMono)
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- }
-
- if(buffer) IncrementRef(&buffer->ref);
- if((buffer=ATOMIC_EXCHANGE(ALbuffer*, &self->Buffer, buffer)) != NULL)
- DecrementRef(&buffer->ref);
- break;
-
- case AL_MOD_LFO_TO_PITCH_SOFT:
- self->ModLfoToPitch = value;
- break;
-
- case AL_VIBRATO_LFO_TO_PITCH_SOFT:
- self->VibratoLfoToPitch = value;
- break;
-
- case AL_MOD_ENV_TO_PITCH_SOFT:
- self->ModEnvToPitch = value;
- break;
-
- case AL_FILTER_CUTOFF_SOFT:
- self->FilterCutoff = value;
- break;
-
- case AL_FILTER_RESONANCE_SOFT:
- if(!(value >= 0))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- self->FilterQ = value;
- break;
-
- case AL_MOD_LFO_TO_FILTER_CUTOFF_SOFT:
- self->ModLfoToFilterCutoff = value;
- break;
-
- case AL_MOD_ENV_TO_FILTER_CUTOFF_SOFT:
- self->ModEnvToFilterCutoff = value;
- break;
-
- case AL_MOD_LFO_TO_VOLUME_SOFT:
- self->ModLfoToVolume = value;
- break;
-
- case AL_CHORUS_SEND_SOFT:
- if(!(value >= 0 && value <= 1000))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- self->ChorusSend = value;
- break;
- case AL_REVERB_SEND_SOFT:
- if(!(value >= 0 && value <= 1000))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- self->ReverbSend = value;
- break;
-
- case AL_PAN_SOFT:
- self->Pan = value;
- break;
-
- case AL_MOD_LFO_DELAY_SOFT:
- self->ModLfo.Delay = value;
- break;
- case AL_MOD_LFO_FREQUENCY_SOFT:
- self->ModLfo.Frequency = value;
- break;
-
- case AL_VIBRATO_LFO_DELAY_SOFT:
- self->VibratoLfo.Delay = value;
- break;
- case AL_VIBRATO_LFO_FREQUENCY_SOFT:
- self->VibratoLfo.Frequency = value;
- break;
-
- case AL_MOD_ENV_DELAYTIME_SOFT:
- self->ModEnv.DelayTime = value;
- break;
- case AL_MOD_ENV_ATTACKTIME_SOFT:
- self->ModEnv.AttackTime = value;
- break;
- case AL_MOD_ENV_HOLDTIME_SOFT:
- self->ModEnv.HoldTime = value;
- break;
- case AL_MOD_ENV_DECAYTIME_SOFT:
- self->ModEnv.DecayTime = value;
- break;
- case AL_MOD_ENV_SUSTAINVOLUME_SOFT:
- self->ModEnv.SustainAttn = value;
- break;
- case AL_MOD_ENV_RELEASETIME_SOFT:
- self->ModEnv.ReleaseTime = value;
- break;
- case AL_MOD_ENV_KEY_TO_HOLDTIME_SOFT:
- self->ModEnv.KeyToHoldTime = value;
- break;
- case AL_MOD_ENV_KEY_TO_DECAYTIME_SOFT:
- self->ModEnv.KeyToDecayTime = value;
- break;
-
- case AL_VOLUME_ENV_DELAYTIME_SOFT:
- self->VolEnv.DelayTime = value;
- break;
- case AL_VOLUME_ENV_ATTACKTIME_SOFT:
- self->VolEnv.AttackTime = value;
- break;
- case AL_VOLUME_ENV_HOLDTIME_SOFT:
- self->VolEnv.HoldTime = value;
- break;
- case AL_VOLUME_ENV_DECAYTIME_SOFT:
- self->VolEnv.DecayTime = value;
- break;
- case AL_VOLUME_ENV_SUSTAINVOLUME_SOFT:
- self->VolEnv.SustainAttn = value;
- break;
- case AL_VOLUME_ENV_RELEASETIME_SOFT:
- self->VolEnv.ReleaseTime = value;
- break;
- case AL_VOLUME_ENV_KEY_TO_HOLDTIME_SOFT:
- self->VolEnv.KeyToHoldTime = value;
- break;
- case AL_VOLUME_ENV_KEY_TO_DECAYTIME_SOFT:
- self->VolEnv.KeyToDecayTime = value;
- break;
-
- case AL_ATTENUATION_SOFT:
- if(!(value >= 0))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- self->Attenuation = value;
- break;
-
- case AL_TUNING_COARSE_SOFT:
- self->CoarseTuning = value;
- break;
- case AL_TUNING_FINE_SOFT:
- self->FineTuning = value;
- break;
-
- case AL_LOOP_MODE_SOFT:
- if(!(value == AL_NONE || value == AL_LOOP_CONTINUOUS_SOFT ||
- value == AL_LOOP_UNTIL_RELEASE_SOFT))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- self->LoopMode = value;
- break;
-
- case AL_TUNING_SCALE_SOFT:
- self->TuningScale = value;
- break;
-
- case AL_EXCLUSIVE_CLASS_SOFT:
- self->ExclusiveClass = value;
- break;
-
- case AL_SAMPLE_START_SOFT:
- self->Start = value;
- break;
-
- case AL_SAMPLE_END_SOFT:
- self->End = value;
- break;
-
- case AL_SAMPLE_LOOP_START_SOFT:
- self->LoopStart = value;
- break;
-
- case AL_SAMPLE_LOOP_END_SOFT:
- self->LoopEnd = value;
- break;
-
- case AL_SAMPLE_RATE_SOFT:
- if(!(value > 0))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- self->SampleRate = value;
- break;
-
- case AL_BASE_KEY_SOFT:
- if(!((value >= 0 && value <= 127) || value == 255))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- self->PitchKey = value;
- break;
-
- case AL_KEY_CORRECTION_SOFT:
- if(!(value >= -99 && value <= 99))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- self->PitchCorrection = value;
- break;
-
- case AL_SAMPLE_TYPE_SOFT:
- if(!(value == AL_MONO_SOFT || value == AL_RIGHT_SOFT || value == AL_LEFT_SOFT))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- self->SampleType = value;
- break;
-
- case AL_FONTSOUND_LINK_SOFT:
- link = value ? LookupFontsound(context->Device, value) : NULL;
- if(value && !link)
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
-
- if(link) IncrementRef(&link->ref);
- if((link=ATOMIC_EXCHANGE(ALfontsound*, &self->Link, link)) != NULL)
- DecrementRef(&link->ref);
- break;
-
- default:
- SET_ERROR_AND_RETURN(context, AL_INVALID_ENUM);
- }
-}
-
-static ALsfmodulator *ALfontsound_getModStage(ALfontsound *self, ALsizei stage)
-{
- ALsfmodulator *ret = LookupModulator(self, stage);
- if(!ret)
- {
- static const ALsfmodulator moddef = {
- { { AL_ONE_SOFT, AL_UNORM_SOFT, AL_LINEAR_SOFT },
- { AL_ONE_SOFT, AL_UNORM_SOFT, AL_LINEAR_SOFT } },
- 0,
- AL_LINEAR_SOFT,
- AL_NONE
- };
- ret = malloc(sizeof(ALsfmodulator[4]));
- ret[0] = moddef;
- ret[1] = moddef;
- ret[2] = moddef;
- ret[3] = moddef;
- InsertUIntMapEntry(&self->ModulatorMap, stage>>2, ret);
- ret += stage&3;
- }
- return ret;
-}
-
-void ALfontsound_setModStagei(ALfontsound *self, ALCcontext *context, ALsizei stage, ALenum param, ALint value)
-{
- ALint srcidx = 0;
-
- if(ReadRef(&self->ref) != 0)
- SET_ERROR_AND_RETURN(context, AL_INVALID_OPERATION);
- switch(param)
- {
- case AL_SOURCE1_INPUT_SOFT:
- srcidx++;
- /* fall-through */
- case AL_SOURCE0_INPUT_SOFT:
- if(!(value == AL_ONE_SOFT || value == AL_NOTEON_VELOCITY_SOFT ||
- value == AL_NOTEON_KEY_SOFT || value == AL_KEYPRESSURE_SOFT ||
- value == AL_CHANNELPRESSURE_SOFT || value == AL_PITCHBEND_SOFT ||
- value == AL_PITCHBEND_SENSITIVITY_SOFT ||
- IsValidCtrlInput(value)))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- ALfontsound_getModStage(self, stage)->Source[srcidx].Input = value;
- break;
-
- case AL_SOURCE1_TYPE_SOFT:
- srcidx++;
- /* fall-through */
- case AL_SOURCE0_TYPE_SOFT:
- if(!(value == AL_UNORM_SOFT || value == AL_UNORM_REV_SOFT ||
- value == AL_SNORM_SOFT || value == AL_SNORM_REV_SOFT))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- ALfontsound_getModStage(self, stage)->Source[srcidx].Type = value;
- break;
-
- case AL_SOURCE1_FORM_SOFT:
- srcidx++;
- /* fall-through */
- case AL_SOURCE0_FORM_SOFT:
- if(!(value == AL_LINEAR_SOFT || value == AL_CONCAVE_SOFT ||
- value == AL_CONVEX_SOFT || value == AL_SWITCH_SOFT))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- ALfontsound_getModStage(self, stage)->Source[srcidx].Form = value;
- break;
-
- case AL_AMOUNT_SOFT:
- ALfontsound_getModStage(self, stage)->Amount = value;
- break;
-
- case AL_TRANSFORM_OP_SOFT:
- if(!(value == AL_LINEAR_SOFT || value == AL_ABSOLUTE_SOFT))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- ALfontsound_getModStage(self, stage)->TransformOp = value;
- break;
-
- case AL_DESTINATION_SOFT:
- if(!(value == AL_MOD_LFO_TO_PITCH_SOFT || value == AL_VIBRATO_LFO_TO_PITCH_SOFT ||
- value == AL_MOD_ENV_TO_PITCH_SOFT || value == AL_FILTER_CUTOFF_SOFT ||
- value == AL_FILTER_RESONANCE_SOFT || value == AL_MOD_LFO_TO_FILTER_CUTOFF_SOFT ||
- value == AL_MOD_ENV_TO_FILTER_CUTOFF_SOFT || value == AL_MOD_LFO_TO_VOLUME_SOFT ||
- value == AL_CHORUS_SEND_SOFT || value == AL_REVERB_SEND_SOFT || value == AL_PAN_SOFT ||
- value == AL_MOD_LFO_DELAY_SOFT || value == AL_MOD_LFO_FREQUENCY_SOFT ||
- value == AL_VIBRATO_LFO_DELAY_SOFT || value == AL_VIBRATO_LFO_FREQUENCY_SOFT ||
- value == AL_MOD_ENV_DELAYTIME_SOFT || value == AL_MOD_ENV_ATTACKTIME_SOFT ||
- value == AL_MOD_ENV_HOLDTIME_SOFT || value == AL_MOD_ENV_DECAYTIME_SOFT ||
- value == AL_MOD_ENV_SUSTAINVOLUME_SOFT || value == AL_MOD_ENV_RELEASETIME_SOFT ||
- value == AL_MOD_ENV_KEY_TO_HOLDTIME_SOFT || value == AL_MOD_ENV_KEY_TO_DECAYTIME_SOFT ||
- value == AL_VOLUME_ENV_DELAYTIME_SOFT || value == AL_VOLUME_ENV_ATTACKTIME_SOFT ||
- value == AL_VOLUME_ENV_HOLDTIME_SOFT || value == AL_VOLUME_ENV_DECAYTIME_SOFT ||
- value == AL_VOLUME_ENV_SUSTAINVOLUME_SOFT || value == AL_VOLUME_ENV_RELEASETIME_SOFT ||
- value == AL_VOLUME_ENV_KEY_TO_HOLDTIME_SOFT || value == AL_VOLUME_ENV_KEY_TO_DECAYTIME_SOFT ||
- value == AL_ATTENUATION_SOFT || value == AL_TUNING_COARSE_SOFT ||
- value == AL_TUNING_FINE_SOFT || value == AL_TUNING_SCALE_SOFT))
- SET_ERROR_AND_RETURN(context, AL_INVALID_VALUE);
- ALfontsound_getModStage(self, stage)->Dest = value;
- break;
-
- default:
- SET_ERROR_AND_RETURN(context, AL_INVALID_ENUM);
- }
-}
-
-static void ALfontsound_getModStagei(ALfontsound *self, ALCcontext *context, ALsizei stage, ALenum param, ALint *values)
-{
- ALsfmodulator *mod = LookupModulator(self, stage);
- ALint srcidx = 0;
-
- switch(param)
- {
- case AL_SOURCE1_INPUT_SOFT:
- srcidx++;
- /* fall-through */
- case AL_SOURCE0_INPUT_SOFT:
- values[0] = mod ? mod->Source[srcidx].Input : AL_ONE_SOFT;
- break;
-
- case AL_SOURCE1_TYPE_SOFT:
- srcidx++;
- /* fall-through */
- case AL_SOURCE0_TYPE_SOFT:
- values[0] = mod ? mod->Source[srcidx].Type : AL_UNORM_SOFT;
- break;
-
- case AL_SOURCE1_FORM_SOFT:
- srcidx++;
- /* fall-through */
- case AL_SOURCE0_FORM_SOFT:
- values[0] = mod ? mod->Source[srcidx].Form : AL_LINEAR_SOFT;
- break;
-
- case AL_AMOUNT_SOFT:
- values[0] = mod ? mod->Amount : 0;
- break;
-
- case AL_TRANSFORM_OP_SOFT:
- values[0] = mod ? mod->TransformOp : AL_LINEAR_SOFT;
- break;
-
- case AL_DESTINATION_SOFT:
- values[0] = mod ? mod->Dest : AL_NONE;
- break;
-
- default:
- SET_ERROR_AND_RETURN(context, AL_INVALID_ENUM);
- }
-}
-
-
-/* ReleaseALFontsounds
- *
- * Called to destroy any fontsounds that still exist on the device
- */
-void ReleaseALFontsounds(ALCdevice *device)
-{
- ALsizei i;
- for(i = 0;i < device->FontsoundMap.size;i++)
- {
- ALfontsound *temp = device->FontsoundMap.array[i].value;
- device->FontsoundMap.array[i].value = NULL;
-
- ALfontsound_Destruct(temp);
-
- memset(temp, 0, sizeof(*temp));
- free(temp);
- }
-}
diff --git a/OpenAL32/alMidi.c b/OpenAL32/alMidi.c
deleted file mode 100644
index 015b1915..00000000
--- a/OpenAL32/alMidi.c
+++ /dev/null
@@ -1,217 +0,0 @@
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <limits.h>
-
-#include "alMain.h"
-#include "alMidi.h"
-#include "alError.h"
-#include "alThunk.h"
-#include "evtqueue.h"
-#include "rwlock.h"
-#include "alu.h"
-
-#include "midi/base.h"
-
-
-MidiSynth *SynthCreate(ALCdevice *device)
-{
- MidiSynth *synth = NULL;
- if(!synth) synth = SSynth_create(device);
- if(!synth) synth = FSynth_create(device);
- if(!synth) synth = DSynth_create(device);
- return synth;
-}
-
-
-AL_API void AL_APIENTRY alMidiSoundfontSOFT(ALuint id)
-{
- alMidiSoundfontvSOFT(1, &id);
-}
-
-AL_API void AL_APIENTRY alMidiSoundfontvSOFT(ALsizei count, const ALuint *ids)
-{
- ALCdevice *device;
- ALCcontext *context;
- MidiSynth *synth;
- ALenum err;
-
- context = GetContextRef();
- if(!context) return;
-
- if(count < 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- device = context->Device;
- synth = device->Synth;
-
- WriteLock(&synth->Lock);
- if(synth->State == AL_PLAYING || synth->State == AL_PAUSED)
- alSetError(context, AL_INVALID_OPERATION);
- else
- {
- err = V(synth,selectSoundfonts)(context, count, ids);
- if(err != AL_NO_ERROR)
- alSetError(context, err);
- }
- WriteUnlock(&synth->Lock);
-
-done:
- ALCcontext_DecRef(context);
-}
-
-
-AL_API void AL_APIENTRY alMidiEventSOFT(ALuint64SOFT time, ALenum event, ALsizei channel, ALsizei param1, ALsizei param2)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALenum err;
-
- context = GetContextRef();
- if(!context) return;
-
- if(!(event == AL_NOTEOFF_SOFT || event == AL_NOTEON_SOFT ||
- event == AL_KEYPRESSURE_SOFT || event == AL_CONTROLLERCHANGE_SOFT ||
- event == AL_PROGRAMCHANGE_SOFT || event == AL_CHANNELPRESSURE_SOFT ||
- event == AL_PITCHBEND_SOFT))
- SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
- if(!(channel >= 0 && channel <= 15))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- if(!(param1 >= 0 && param1 <= 127))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- if(!(param2 >= 0 && param2 <= 127))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- device = context->Device;
- ALCdevice_Lock(device);
- err = MidiSynth_insertEvent(device->Synth, time, event|channel, param1, param2);
- ALCdevice_Unlock(device);
- if(err != AL_NO_ERROR)
- alSetError(context, err);
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alMidiSysExSOFT(ALuint64SOFT time, const ALbyte *data, ALsizei size)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALenum err;
-
- context = GetContextRef();
- if(!context) return;
-
- if(!data || size < 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- device = context->Device;
- ALCdevice_Lock(device);
- err = MidiSynth_insertSysExEvent(device->Synth, time, data, size);
- ALCdevice_Unlock(device);
- if(err != AL_NO_ERROR)
- alSetError(context, err);
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alMidiPlaySOFT(void)
-{
- ALCcontext *context;
- MidiSynth *synth;
-
- context = GetContextRef();
- if(!context) return;
-
- synth = context->Device->Synth;
- WriteLock(&synth->Lock);
- MidiSynth_setState(synth, AL_PLAYING);
- WriteUnlock(&synth->Lock);
-
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alMidiPauseSOFT(void)
-{
- ALCcontext *context;
- MidiSynth *synth;
-
- context = GetContextRef();
- if(!context) return;
-
- synth = context->Device->Synth;
- WriteLock(&synth->Lock);
- MidiSynth_setState(synth, AL_PAUSED);
- WriteUnlock(&synth->Lock);
-
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alMidiStopSOFT(void)
-{
- ALCdevice *device;
- ALCcontext *context;
- MidiSynth *synth;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- synth = device->Synth;
-
- WriteLock(&synth->Lock);
- MidiSynth_setState(synth, AL_STOPPED);
-
- ALCdevice_Lock(device);
- V0(synth,stop)();
- ALCdevice_Unlock(device);
- WriteUnlock(&synth->Lock);
-
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alMidiResetSOFT(void)
-{
- ALCdevice *device;
- ALCcontext *context;
- MidiSynth *synth;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- synth = device->Synth;
-
- WriteLock(&synth->Lock);
- MidiSynth_setState(synth, AL_INITIAL);
-
- ALCdevice_Lock(device);
- V0(synth,reset)();
- ALCdevice_Unlock(device);
- WriteUnlock(&synth->Lock);
-
- ALCcontext_DecRef(context);
-}
-
-
-AL_API void AL_APIENTRY alMidiGainSOFT(ALfloat value)
-{
- ALCdevice *device;
- ALCcontext *context;
-
- context = GetContextRef();
- if(!context) return;
-
- if(!(value >= 0.0f && isfinite(value)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- device = context->Device;
- V(device->Synth,setGain)(value);
-
-done:
- ALCcontext_DecRef(context);
-}
diff --git a/OpenAL32/alPreset.c b/OpenAL32/alPreset.c
deleted file mode 100644
index 1934ba05..00000000
--- a/OpenAL32/alPreset.c
+++ /dev/null
@@ -1,339 +0,0 @@
-
-#include "config.h"
-
-#include <stdlib.h>
-#include <string.h>
-
-#include "alMain.h"
-#include "alMidi.h"
-#include "alError.h"
-#include "alThunk.h"
-
-#include "midi/base.h"
-
-
-extern inline struct ALsfpreset *LookupPreset(ALCdevice *device, ALuint id);
-extern inline struct ALsfpreset *RemovePreset(ALCdevice *device, ALuint id);
-
-static void ALsfpreset_Construct(ALsfpreset *self);
-static void ALsfpreset_Destruct(ALsfpreset *self);
-
-
-AL_API void AL_APIENTRY alGenPresetsSOFT(ALsizei n, ALuint *ids)
-{
- ALCcontext *context;
- ALsizei cur = 0;
-
- context = GetContextRef();
- if(!context) return;
-
- if(!(n >= 0))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- for(cur = 0;cur < n;cur++)
- {
- ALsfpreset *preset = NewPreset(context);
- if(!preset)
- {
- alDeletePresetsSOFT(cur, ids);
- break;
- }
-
- ids[cur] = preset->id;
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API ALvoid AL_APIENTRY alDeletePresetsSOFT(ALsizei n, const ALuint *ids)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsfpreset *preset;
- ALsizei i;
-
- context = GetContextRef();
- if(!context) return;
-
- if(!(n >= 0))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- device = context->Device;
- for(i = 0;i < n;i++)
- {
- /* Check for valid ID */
- if((preset=LookupPreset(device, ids[i])) == NULL)
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(ReadRef(&preset->ref) != 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- }
-
- for(i = 0;i < n;i++)
- {
- if((preset=LookupPreset(device, ids[i])) != NULL)
- DeletePreset(device, preset);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API ALboolean AL_APIENTRY alIsPresetSOFT(ALuint id)
-{
- ALCcontext *context;
- ALboolean ret;
-
- context = GetContextRef();
- if(!context) return AL_FALSE;
-
- ret = LookupPreset(context->Device, id) ? AL_TRUE : AL_FALSE;
-
- ALCcontext_DecRef(context);
-
- return ret;
-}
-
-AL_API void AL_APIENTRY alPresetiSOFT(ALuint id, ALenum param, ALint value)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsfpreset *preset;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if((preset=LookupPreset(device, id)) == NULL)
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(ReadRef(&preset->ref) != 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- switch(param)
- {
- case AL_MIDI_PRESET_SOFT:
- if(!(value >= 0 && value <= 127))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- preset->Preset = value;
- break;
-
- case AL_MIDI_BANK_SOFT:
- if(!(value >= 0 && value <= 128))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- preset->Bank = value;
- break;
-
- default:
- SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alPresetivSOFT(ALuint id, ALenum param, const ALint *values)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsfpreset *preset;
-
- switch(param)
- {
- case AL_MIDI_PRESET_SOFT:
- case AL_MIDI_BANK_SOFT:
- alPresetiSOFT(id, param, values[0]);
- return;
- }
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if((preset=LookupPreset(device, id)) == NULL)
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(ReadRef(&preset->ref) != 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- switch(param)
- {
- default:
- SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alGetPresetivSOFT(ALuint id, ALenum param, ALint *values)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsfpreset *preset;
- ALsizei i;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if((preset=LookupPreset(device, id)) == NULL)
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- switch(param)
- {
- case AL_MIDI_PRESET_SOFT:
- values[0] = preset->Preset;
- break;
-
- case AL_MIDI_BANK_SOFT:
- values[0] = preset->Bank;
- break;
-
- case AL_FONTSOUNDS_SIZE_SOFT:
- values[0] = preset->NumSounds;
- break;
-
- case AL_FONTSOUNDS_SOFT:
- for(i = 0;i < preset->NumSounds;i++)
- values[i] = preset->Sounds[i]->id;
- break;
-
- default:
- SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alPresetFontsoundsSOFT(ALuint id, ALsizei count, const ALuint *fsids)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsfpreset *preset;
- ALfontsound **sounds;
- ALsizei i;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(!(preset=LookupPreset(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(count < 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- if(ReadRef(&preset->ref) != 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
-
- if(count == 0)
- sounds = NULL;
- else
- {
- sounds = calloc(count, sizeof(sounds[0]));
- if(!sounds)
- SET_ERROR_AND_GOTO(context, AL_OUT_OF_MEMORY, done);
-
- for(i = 0;i < count;i++)
- {
- if(!(sounds[i]=LookupFontsound(device, fsids[i])))
- {
- free(sounds);
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- }
- }
- }
-
- for(i = 0;i < count;i++)
- IncrementRef(&sounds[i]->ref);
-
- sounds = ExchangePtr((XchgPtr*)&preset->Sounds, sounds);
- count = ExchangeInt(&preset->NumSounds, count);
-
- for(i = 0;i < count;i++)
- DecrementRef(&sounds[i]->ref);
- free(sounds);
-
-done:
- ALCcontext_DecRef(context);
-}
-
-
-ALsfpreset *NewPreset(ALCcontext *context)
-{
- ALCdevice *device = context->Device;
- ALsfpreset *preset;
- ALenum err;
-
- preset = calloc(1, sizeof(*preset));
- if(!preset)
- SET_ERROR_AND_RETURN_VALUE(context, AL_OUT_OF_MEMORY, NULL);
- ALsfpreset_Construct(preset);
-
- err = NewThunkEntry(&preset->id);
- if(err == AL_NO_ERROR)
- err = InsertUIntMapEntry(&device->PresetMap, preset->id, preset);
- if(err != AL_NO_ERROR)
- {
- ALsfpreset_Destruct(preset);
- memset(preset, 0, sizeof(*preset));
- free(preset);
-
- SET_ERROR_AND_RETURN_VALUE(context, err, NULL);
- }
-
- return preset;
-}
-
-void DeletePreset(ALCdevice *device, ALsfpreset *preset)
-{
- RemovePreset(device, preset->id);
-
- ALsfpreset_Destruct(preset);
- memset(preset, 0, sizeof(*preset));
- free(preset);
-}
-
-
-static void ALsfpreset_Construct(ALsfpreset *self)
-{
- InitRef(&self->ref, 0);
-
- self->Preset = 0;
- self->Bank = 0;
-
- self->Sounds = NULL;
- self->NumSounds = 0;
-
- self->id = 0;
-}
-
-static void ALsfpreset_Destruct(ALsfpreset *self)
-{
- ALsizei i;
-
- FreeThunkEntry(self->id);
- self->id = 0;
-
- for(i = 0;i < self->NumSounds;i++)
- DecrementRef(&self->Sounds[i]->ref);
- free(self->Sounds);
- self->Sounds = NULL;
- self->NumSounds = 0;
-}
-
-
-/* ReleaseALPresets
- *
- * Called to destroy any presets that still exist on the device
- */
-void ReleaseALPresets(ALCdevice *device)
-{
- ALsizei i;
- for(i = 0;i < device->PresetMap.size;i++)
- {
- ALsfpreset *temp = device->PresetMap.array[i].value;
- device->PresetMap.array[i].value = NULL;
-
- ALsfpreset_Destruct(temp);
-
- memset(temp, 0, sizeof(*temp));
- free(temp);
- }
-}
diff --git a/OpenAL32/alSoundfont.c b/OpenAL32/alSoundfont.c
deleted file mode 100644
index 96feed46..00000000
--- a/OpenAL32/alSoundfont.c
+++ /dev/null
@@ -1,455 +0,0 @@
-
-#include "config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-
-#include "alMain.h"
-#include "alMidi.h"
-#include "alThunk.h"
-#include "alError.h"
-#include <alBuffer.h>
-
-#include "midi/base.h"
-
-
-extern inline struct ALsoundfont *LookupSfont(ALCdevice *device, ALuint id);
-extern inline struct ALsoundfont *RemoveSfont(ALCdevice *device, ALuint id);
-
-static void ALsoundfont_Construct(ALsoundfont *self);
-static void ALsoundfont_Destruct(ALsoundfont *self);
-void ALsoundfont_deleteSoundfont(ALsoundfont *self, ALCdevice *device);
-ALsoundfont *ALsoundfont_getDefSoundfont(ALCcontext *context);
-static size_t ALsoundfont_read(ALvoid *buf, size_t bytes, ALvoid *ptr);
-
-
-AL_API void AL_APIENTRY alGenSoundfontsSOFT(ALsizei n, ALuint *ids)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsizei cur = 0;
- ALenum err;
-
- context = GetContextRef();
- if(!context) return;
-
- if(!(n >= 0))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- device = context->Device;
- for(cur = 0;cur < n;cur++)
- {
- ALsoundfont *sfont = calloc(1, sizeof(ALsoundfont));
- if(!sfont)
- {
- alDeleteSoundfontsSOFT(cur, ids);
- SET_ERROR_AND_GOTO(context, AL_OUT_OF_MEMORY, done);
- }
- ALsoundfont_Construct(sfont);
-
- err = NewThunkEntry(&sfont->id);
- if(err == AL_NO_ERROR)
- err = InsertUIntMapEntry(&device->SfontMap, sfont->id, sfont);
- if(err != AL_NO_ERROR)
- {
- ALsoundfont_Destruct(sfont);
- memset(sfont, 0, sizeof(ALsoundfont));
- free(sfont);
-
- alDeleteSoundfontsSOFT(cur, ids);
- SET_ERROR_AND_GOTO(context, err, done);
- }
-
- ids[cur] = sfont->id;
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API ALvoid AL_APIENTRY alDeleteSoundfontsSOFT(ALsizei n, const ALuint *ids)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsoundfont *sfont;
- ALsizei i;
-
- context = GetContextRef();
- if(!context) return;
-
- if(!(n >= 0))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- device = context->Device;
- for(i = 0;i < n;i++)
- {
- /* Check for valid soundfont ID */
- if(ids[i] == 0)
- {
- if(!(sfont=device->DefaultSfont))
- continue;
- }
- else if((sfont=LookupSfont(device, ids[i])) == NULL)
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(ReadRef(&sfont->ref) != 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- }
-
- for(i = 0;i < n;i++)
- {
- if(ids[i] == 0)
- {
- MidiSynth *synth = device->Synth;
- WriteLock(&synth->Lock);
- if(device->DefaultSfont != NULL)
- ALsoundfont_deleteSoundfont(device->DefaultSfont, device);
- device->DefaultSfont = NULL;
- WriteUnlock(&synth->Lock);
- continue;
- }
- else if((sfont=RemoveSfont(device, ids[i])) == NULL)
- continue;
-
- ALsoundfont_Destruct(sfont);
-
- memset(sfont, 0, sizeof(*sfont));
- free(sfont);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API ALboolean AL_APIENTRY alIsSoundfontSOFT(ALuint id)
-{
- ALCcontext *context;
- ALboolean ret;
-
- context = GetContextRef();
- if(!context) return AL_FALSE;
-
- ret = ((!id || LookupSfont(context->Device, id)) ?
- AL_TRUE : AL_FALSE);
-
- ALCcontext_DecRef(context);
-
- return ret;
-}
-
-AL_API void AL_APIENTRY alGetSoundfontivSOFT(ALuint id, ALenum param, ALint *values)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsoundfont *sfont;
- ALsizei i;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(id == 0)
- sfont = ALsoundfont_getDefSoundfont(context);
- else if(!(sfont=LookupSfont(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- switch(param)
- {
- case AL_PRESETS_SIZE_SOFT:
- values[0] = sfont->NumPresets;
- break;
-
- case AL_PRESETS_SOFT:
- for(i = 0;i < sfont->NumPresets;i++)
- values[i] = sfont->Presets[i]->id;
- break;
-
- default:
- SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
- }
-
-done:
- ALCcontext_DecRef(context);
-}
-
-AL_API void AL_APIENTRY alSoundfontPresetsSOFT(ALuint id, ALsizei count, const ALuint *pids)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsoundfont *sfont;
- ALsfpreset **presets;
- ALsizei i;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(id == 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- if(!(sfont=LookupSfont(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
- if(count < 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
-
- WriteLock(&sfont->Lock);
- if(ReadRef(&sfont->ref) != 0)
- {
- WriteUnlock(&sfont->Lock);
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- }
-
- if(count == 0)
- presets = NULL;
- else
- {
- presets = calloc(count, sizeof(presets[0]));
- if(!presets)
- {
- WriteUnlock(&sfont->Lock);
- SET_ERROR_AND_GOTO(context, AL_OUT_OF_MEMORY, done);
- }
-
- for(i = 0;i < count;i++)
- {
- if(!(presets[i]=LookupPreset(device, pids[i])))
- {
- free(presets);
- WriteUnlock(&sfont->Lock);
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- }
- }
- }
-
- for(i = 0;i < count;i++)
- IncrementRef(&presets[i]->ref);
-
- presets = ExchangePtr((XchgPtr*)&sfont->Presets, presets);
- count = ExchangeInt(&sfont->NumPresets, count);
- WriteUnlock(&sfont->Lock);
-
- for(i = 0;i < count;i++)
- DecrementRef(&presets[i]->ref);
- free(presets);
-
-done:
- ALCcontext_DecRef(context);
-}
-
-
-AL_API void AL_APIENTRY alLoadSoundfontSOFT(ALuint id, size_t(*cb)(ALvoid*,size_t,ALvoid*), ALvoid *user)
-{
- ALCdevice *device;
- ALCcontext *context;
- ALsoundfont *sfont;
- Reader reader;
-
- context = GetContextRef();
- if(!context) return;
-
- device = context->Device;
- if(id == 0)
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- if(!(sfont=LookupSfont(device, id)))
- SET_ERROR_AND_GOTO(context, AL_INVALID_NAME, done);
-
- WriteLock(&sfont->Lock);
- if(ReadRef(&sfont->ref) != 0)
- {
- WriteUnlock(&sfont->Lock);
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- }
- if(sfont->NumPresets > 0)
- {
- WriteUnlock(&sfont->Lock);
- SET_ERROR_AND_GOTO(context, AL_INVALID_OPERATION, done);
- }
-
- reader.cb = cb;
- reader.ptr = user;
- reader.error = 0;
- loadSf2(&reader, sfont, context);
- WriteUnlock(&sfont->Lock);
-
-done:
- ALCcontext_DecRef(context);
-}
-
-
-static void ALsoundfont_Construct(ALsoundfont *self)
-{
- InitRef(&self->ref, 0);
-
- self->Presets = NULL;
- self->NumPresets = 0;
-
- RWLockInit(&self->Lock);
-
- self->id = 0;
-}
-
-static void ALsoundfont_Destruct(ALsoundfont *self)
-{
- ALsizei i;
-
- FreeThunkEntry(self->id);
- self->id = 0;
-
- for(i = 0;i < self->NumPresets;i++)
- {
- DecrementRef(&self->Presets[i]->ref);
- self->Presets[i] = NULL;
- }
- free(self->Presets);
- self->Presets = NULL;
- self->NumPresets = 0;
-}
-
-ALsoundfont *ALsoundfont_getDefSoundfont(ALCcontext *context)
-{
- ALCdevice *device = context->Device;
- al_string fname = AL_STRING_INIT_STATIC();
- const char *namelist;
-
- if(device->DefaultSfont)
- return device->DefaultSfont;
-
- device->DefaultSfont = calloc(1, sizeof(device->DefaultSfont[0]));
- ALsoundfont_Construct(device->DefaultSfont);
-
- namelist = getenv("ALSOFT_SOUNDFONT");
- if(!namelist || !namelist[0])
- ConfigValueStr(al_string_get_cstr(device->DeviceName), "midi", "soundfont", &namelist);
- while(namelist && namelist[0])
- {
- const char *next, *end;
- FILE *f;
-
- while(*namelist && (isspace(*namelist) || *namelist == ','))
- namelist++;
- if(!*namelist)
- break;
- next = strchr(namelist, ',');
- end = next ? next++ : (namelist+strlen(namelist));
- while(--end != namelist && isspace(*end)) {
- }
- if(end == namelist)
- continue;
- al_string_append_range(&fname, namelist, end+1);
- namelist = next;
-
- f = OpenDataFile(al_string_get_cstr(fname), "openal/soundfonts");
- if(f == NULL)
- ERR("Failed to open %s\n", al_string_get_cstr(fname));
- else
- {
- Reader reader;
- reader.cb = ALsoundfont_read;
- reader.ptr = f;
- reader.error = 0;
- TRACE("Loading %s\n", al_string_get_cstr(fname));
- loadSf2(&reader, device->DefaultSfont, context);
- fclose(f);
- }
-
- al_string_clear(&fname);
- }
- AL_STRING_DEINIT(fname);
-
- return device->DefaultSfont;
-}
-
-void ALsoundfont_deleteSoundfont(ALsoundfont *self, ALCdevice *device)
-{
- ALsfpreset **presets = self->Presets;
- ALsizei num_presets = self->NumPresets;
- VECTOR(ALbuffer*) buffers;
- ALsizei i;
-
- VECTOR_INIT(buffers);
-
- self->Presets = NULL;
- self->NumPresets = 0;
-
- for(i = 0;i < num_presets;i++)
- {
- ALsfpreset *preset = presets[i];
- ALfontsound **sounds = preset->Sounds;
- ALsizei num_sounds = preset->NumSounds;
- ALboolean deleting;
- ALsizei j;
-
- preset->Sounds = NULL;
- preset->NumSounds = 0;
- DeletePreset(device, preset);
- preset = NULL;
-
- for(j = 0;j < num_sounds;j++)
- DecrementRef(&sounds[j]->ref);
- /* Some fontsounds may not be immediately deletable because they're
- * linked to another fontsound. When those fontsounds are deleted
- * they should become deletable, so use a loop until all fontsounds
- * are deleted. */
- do {
- deleting = AL_FALSE;
- for(j = 0;j < num_sounds;j++)
- {
- if(sounds[j] && ReadRef(&sounds[j]->ref) == 0)
- {
- ALbuffer *buffer;
-
- deleting = AL_TRUE;
- if((buffer=ATOMIC_LOAD(&sounds[j]->Buffer)) != NULL)
- {
- ALbuffer **iter;
-
-#define MATCH_BUFFER(_i) (buffer == *(_i))
- VECTOR_FIND_IF(iter, ALbuffer*, buffers, MATCH_BUFFER);
- if(iter == VECTOR_ITER_END(buffers))
- VECTOR_PUSH_BACK(buffers, buffer);
-#undef MATCH_BUFFER
- }
- DeleteFontsound(device, sounds[j]);
- sounds[j] = NULL;
- }
- }
- } while(deleting);
- free(sounds);
- }
-
- ALsoundfont_Destruct(self);
- free(self);
-
-#define DELETE_BUFFER(iter) do { \
- assert(ReadRef(&(*(iter))->ref) == 0); \
- DeleteBuffer(device, *(iter)); \
-} while(0)
- VECTOR_FOR_EACH(ALbuffer*, buffers, DELETE_BUFFER);
-#undef DELETE_BUFFER
- VECTOR_DEINIT(buffers);
-}
-
-
-static size_t ALsoundfont_read(ALvoid *buf, size_t bytes, ALvoid *ptr)
-{
- return fread(buf, 1, bytes, (FILE*)ptr);
-}
-
-
-/* ReleaseALSoundfonts
- *
- * Called to destroy any soundfonts that still exist on the device
- */
-void ReleaseALSoundfonts(ALCdevice *device)
-{
- ALsizei i;
- for(i = 0;i < device->SfontMap.size;i++)
- {
- ALsoundfont *temp = device->SfontMap.array[i].value;
- device->SfontMap.array[i].value = NULL;
-
- ALsoundfont_Destruct(temp);
-
- memset(temp, 0, sizeof(*temp));
- free(temp);
- }
-}
diff --git a/OpenAL32/alState.c b/OpenAL32/alState.c
index f2f25f97..dca41363 100644
--- a/OpenAL32/alState.c
+++ b/OpenAL32/alState.c
@@ -28,10 +28,8 @@
#include "alError.h"
#include "alSource.h"
#include "alAuxEffectSlot.h"
-#include "alMidi.h"
#include "backends/base.h"
-#include "midi/base.h"
static const ALchar alVendor[] = "OpenAL Community";
@@ -160,7 +158,6 @@ done:
AL_API ALdouble AL_APIENTRY alGetDouble(ALenum pname)
{
- ALCdevice *device;
ALCcontext *context;
ALdouble value = 0.0;
@@ -189,16 +186,6 @@ AL_API ALdouble AL_APIENTRY alGetDouble(ALenum pname)
value = (ALdouble)context->DeferUpdates;
break;
- case AL_MIDI_GAIN_SOFT:
- device = context->Device;
- value = (ALdouble)MidiSynth_getGain(device->Synth);
- break;
-
- case AL_MIDI_STATE_SOFT:
- device = context->Device;
- value = (ALdouble)MidiSynth_getState(device->Synth);
- break;
-
default:
SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
}
@@ -211,7 +198,6 @@ done:
AL_API ALfloat AL_APIENTRY alGetFloat(ALenum pname)
{
- ALCdevice *device;
ALCcontext *context;
ALfloat value = 0.0f;
@@ -240,16 +226,6 @@ AL_API ALfloat AL_APIENTRY alGetFloat(ALenum pname)
value = (ALfloat)context->DeferUpdates;
break;
- case AL_MIDI_GAIN_SOFT:
- device = context->Device;
- value = MidiSynth_getGain(device->Synth);
- break;
-
- case AL_MIDI_STATE_SOFT:
- device = context->Device;
- value = (ALfloat)MidiSynth_getState(device->Synth);
- break;
-
default:
SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
}
@@ -263,8 +239,6 @@ done:
AL_API ALint AL_APIENTRY alGetInteger(ALenum pname)
{
ALCcontext *context;
- ALCdevice *device;
- MidiSynth *synth;
ALint value = 0;
context = GetContextRef();
@@ -292,17 +266,6 @@ AL_API ALint AL_APIENTRY alGetInteger(ALenum pname)
value = (ALint)context->DeferUpdates;
break;
- case AL_SOUNDFONTS_SIZE_SOFT:
- device = context->Device;
- synth = device->Synth;
- value = synth->NumSoundfonts;
- break;
-
- case AL_MIDI_STATE_SOFT:
- device = context->Device;
- value = MidiSynth_getState(device->Synth);
- break;
-
default:
SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
}
@@ -316,8 +279,6 @@ done:
AL_API ALint64SOFT AL_APIENTRY alGetInteger64SOFT(ALenum pname)
{
ALCcontext *context;
- ALCdevice *device;
- MidiSynth *synth;
ALint64SOFT value = 0;
context = GetContextRef();
@@ -345,24 +306,6 @@ AL_API ALint64SOFT AL_APIENTRY alGetInteger64SOFT(ALenum pname)
value = (ALint64SOFT)context->DeferUpdates;
break;
- case AL_MIDI_CLOCK_SOFT:
- device = context->Device;
- V0(device->Backend,lock)();
- value = MidiSynth_getTime(device->Synth);
- V0(device->Backend,unlock)();
- break;
-
- case AL_SOUNDFONTS_SIZE_SOFT:
- device = context->Device;
- synth = device->Synth;
- value = (ALint64SOFT)synth->NumSoundfonts;
- break;
-
- case AL_MIDI_STATE_SOFT:
- device = context->Device;
- value = (ALint64SOFT)MidiSynth_getState(device->Synth);
- break;
-
default:
SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
}
@@ -419,8 +362,6 @@ AL_API ALvoid AL_APIENTRY alGetDoublev(ALenum pname, ALdouble *values)
case AL_DISTANCE_MODEL:
case AL_SPEED_OF_SOUND:
case AL_DEFERRED_UPDATES_SOFT:
- case AL_MIDI_GAIN_SOFT:
- case AL_MIDI_STATE_SOFT:
values[0] = alGetDouble(pname);
return;
}
@@ -454,8 +395,6 @@ AL_API ALvoid AL_APIENTRY alGetFloatv(ALenum pname, ALfloat *values)
case AL_DISTANCE_MODEL:
case AL_SPEED_OF_SOUND:
case AL_DEFERRED_UPDATES_SOFT:
- case AL_MIDI_GAIN_SOFT:
- case AL_MIDI_STATE_SOFT:
values[0] = alGetFloat(pname);
return;
}
@@ -479,9 +418,6 @@ done:
AL_API ALvoid AL_APIENTRY alGetIntegerv(ALenum pname, ALint *values)
{
ALCcontext *context;
- ALCdevice *device;
- MidiSynth *synth;
- ALsizei i;
if(values)
{
@@ -492,8 +428,6 @@ AL_API ALvoid AL_APIENTRY alGetIntegerv(ALenum pname, ALint *values)
case AL_DISTANCE_MODEL:
case AL_SPEED_OF_SOUND:
case AL_DEFERRED_UPDATES_SOFT:
- case AL_SOUNDFONTS_SIZE_SOFT:
- case AL_MIDI_STATE_SOFT:
values[0] = alGetInteger(pname);
return;
}
@@ -504,18 +438,6 @@ AL_API ALvoid AL_APIENTRY alGetIntegerv(ALenum pname, ALint *values)
switch(pname)
{
- case AL_SOUNDFONTS_SOFT:
- device = context->Device;
- synth = device->Synth;
- if(synth->NumSoundfonts > 0)
- {
- if(!(values))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- for(i = 0;i < synth->NumSoundfonts;i++)
- values[i] = synth->Soundfonts[i]->id;
- }
- break;
-
default:
SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
}
@@ -527,9 +449,6 @@ done:
AL_API void AL_APIENTRY alGetInteger64vSOFT(ALenum pname, ALint64SOFT *values)
{
ALCcontext *context;
- ALCdevice *device;
- MidiSynth *synth;
- ALsizei i;
if(values)
{
@@ -540,9 +459,6 @@ AL_API void AL_APIENTRY alGetInteger64vSOFT(ALenum pname, ALint64SOFT *values)
case AL_DISTANCE_MODEL:
case AL_SPEED_OF_SOUND:
case AL_DEFERRED_UPDATES_SOFT:
- case AL_MIDI_CLOCK_SOFT:
- case AL_SOUNDFONTS_SIZE_SOFT:
- case AL_MIDI_STATE_SOFT:
values[0] = alGetInteger64SOFT(pname);
return;
}
@@ -553,18 +469,6 @@ AL_API void AL_APIENTRY alGetInteger64vSOFT(ALenum pname, ALint64SOFT *values)
switch(pname)
{
- case AL_SOUNDFONTS_SOFT:
- device = context->Device;
- synth = device->Synth;
- if(synth->NumSoundfonts > 0)
- {
- if(!(values))
- SET_ERROR_AND_GOTO(context, AL_INVALID_VALUE, done);
- for(i = 0;i < synth->NumSoundfonts;i++)
- values[i] = (ALint64SOFT)synth->Soundfonts[i]->id;
- }
- break;
-
default:
SET_ERROR_AND_GOTO(context, AL_INVALID_ENUM, done);
}