11 typedef struct ALsfmodulator
{
15 ALenum AmountSourceOp
;
20 typedef struct ALfontsound
{
21 volatile RefCount ref
;
24 ALint MinVelocity
, MaxVelocity
;
27 ALint VibratoLfoToPitch
;
32 ALint ModLfoToFilterCutoff
;
33 ALint ModEnvToFilterCutoff
;
63 ALbyte PitchCorrection
;
65 struct ALfontsound
*Link
;
67 ALsfmodulator
*Modulators
;
68 ALsizei NumModulators
;
69 ALsizei ModulatorsMax
;
74 void ALfontsound_Construct(ALfontsound
*self
);
75 void ALfontsound_Destruct(ALfontsound
*self
);
76 ALenum
ALfontsound_addGenerator(ALfontsound
*self
, ALenum generator
, ALint value
);
77 ALenum
ALfontsound_addModulator(ALfontsound
*self
, ALenum sourceop
, ALenum destop
, ALint amount
, ALenum amtsourceop
, ALenum transop
);
80 inline struct ALfontsound
*LookupFontsound(ALCdevice
*device
, ALuint id
)
81 { return (struct ALfontsound
*)LookupUIntMapKey(&device
->FontsoundMap
, id
); }
82 inline struct ALfontsound
*RemoveFontsound(ALCdevice
*device
, ALuint id
)
83 { return (struct ALfontsound
*)RemoveUIntMapKey(&device
->FontsoundMap
, id
); }
85 void ReleaseALFontsounds(ALCdevice
*device
);
88 typedef struct ALsfpreset
{
89 volatile RefCount ref
;
91 ALint Preset
; /* a.k.a. MIDI program number */
92 ALint Bank
; /* MIDI bank 0...127, or percussion (bank 128) */
100 void ALsfpreset_Construct(ALsfpreset
*self
);
101 void ALsfpreset_Destruct(ALsfpreset
*self
);
104 inline struct ALsfpreset
*LookupPreset(ALCdevice
*device
, ALuint id
)
105 { return (struct ALsfpreset
*)LookupUIntMapKey(&device
->PresetMap
, id
); }
106 inline struct ALsfpreset
*RemovePreset(ALCdevice
*device
, ALuint id
)
107 { return (struct ALsfpreset
*)RemoveUIntMapKey(&device
->PresetMap
, id
); }
109 void ReleaseALPresets(ALCdevice
*device
);
112 typedef struct ALsoundfont
{
113 volatile RefCount ref
;
115 ALsfpreset
**Presets
;
122 volatile ALenum Mapped
;
127 void ALsoundfont_Construct(ALsoundfont
*self
);
128 void ALsoundfont_Destruct(ALsoundfont
*self
);
130 inline struct ALsoundfont
*LookupSfont(ALCdevice
*device
, ALuint id
)
131 { return (struct ALsoundfont
*)LookupUIntMapKey(&device
->SfontMap
, id
); }
132 inline struct ALsoundfont
*RemoveSfont(ALCdevice
*device
, ALuint id
)
133 { return (struct ALsoundfont
*)RemoveUIntMapKey(&device
->SfontMap
, id
); }
135 void ReleaseALSoundfonts(ALCdevice
*device
);
141 #endif /* ALMIDI_H */