1use fmod_sys::*;
8
9#[derive(Debug, Clone, Copy, PartialEq, Eq)]
10#[derive(
11 num_enum::TryFromPrimitive,
12 num_enum::IntoPrimitive,
13 num_enum::UnsafeFromPrimitive
14)]
15#[cfg_attr(target_env = "msvc", repr(i32))]
17#[cfg_attr(not(target_env = "msvc"), repr(u32))]
18pub enum SpeakerMode {
19 Default = FMOD_SPEAKERMODE_DEFAULT,
20 Raw = FMOD_SPEAKERMODE_RAW,
21 Mono = FMOD_SPEAKERMODE_MONO,
22 Stereo = FMOD_SPEAKERMODE_STEREO,
23 Quad = FMOD_SPEAKERMODE_QUAD,
24 Surround = FMOD_SPEAKERMODE_SURROUND,
25 FivePointOne = FMOD_SPEAKERMODE_5POINT1,
26 SevenPointOne = FMOD_SPEAKERMODE_7POINT1,
27 SevenPointOneFour = FMOD_SPEAKERMODE_7POINT1POINT4,
28}
29
30#[derive(Debug, Clone, Copy, PartialEq, Eq)]
31#[derive(
32 num_enum::TryFromPrimitive,
33 num_enum::IntoPrimitive,
34 num_enum::UnsafeFromPrimitive
35)]
36#[cfg_attr(target_env = "msvc", repr(i32))]
38#[cfg_attr(not(target_env = "msvc"), repr(u32))]
39pub enum OutputType {
40 AutoDetect = FMOD_OUTPUTTYPE_AUTODETECT,
41 Unknown = FMOD_OUTPUTTYPE_UNKNOWN,
42 NoSound = FMOD_OUTPUTTYPE_NOSOUND,
43 WavWriter = FMOD_OUTPUTTYPE_WAVWRITER,
44 NoSoundNRT = FMOD_OUTPUTTYPE_NOSOUND_NRT,
45 WavWriterNRT = FMOD_OUTPUTTYPE_WAVWRITER_NRT,
46 WASAPI = FMOD_OUTPUTTYPE_WASAPI,
47 ASIO = FMOD_OUTPUTTYPE_ASIO,
48 PulseAudio = FMOD_OUTPUTTYPE_PULSEAUDIO,
49 Alsa = FMOD_OUTPUTTYPE_ALSA,
50 CoreAudio = FMOD_OUTPUTTYPE_COREAUDIO,
51 AudioTrack = FMOD_OUTPUTTYPE_AUDIOTRACK,
52 OpenSL = FMOD_OUTPUTTYPE_OPENSL,
53 AudioOut = FMOD_OUTPUTTYPE_AUDIOOUT,
54 WebAudio = FMOD_OUTPUTTYPE_WEBAUDIO,
55 NNAudio = FMOD_OUTPUTTYPE_NNAUDIO,
56 WinSonic = FMOD_OUTPUTTYPE_WINSONIC,
57 AAudio = FMOD_OUTPUTTYPE_AAUDIO,
58 AudioWorklet = FMOD_OUTPUTTYPE_AUDIOWORKLET,
59 Phase = FMOD_OUTPUTTYPE_PHASE,
60 OHAudio = FMOD_OUTPUTTYPE_OHAUDIO,
61}
62
63#[derive(Debug, Clone, Copy, PartialEq, Eq)]
64#[derive(
65 num_enum::TryFromPrimitive,
66 num_enum::IntoPrimitive,
67 num_enum::UnsafeFromPrimitive
68)]
69#[cfg_attr(target_env = "msvc", repr(i32))]
71#[cfg_attr(not(target_env = "msvc"), repr(u32))]
72pub enum ThreadType {
73 Mixer = FMOD_THREAD_TYPE_MIXER,
74 Feeder = FMOD_THREAD_TYPE_FEEDER,
75 Stream = FMOD_THREAD_TYPE_STREAM,
76 File = FMOD_THREAD_TYPE_FILE,
77 NonBlocking = FMOD_THREAD_TYPE_NONBLOCKING,
78 Record = FMOD_THREAD_TYPE_RECORD,
79 Geometry = FMOD_THREAD_TYPE_GEOMETRY,
80 Profiler = FMOD_THREAD_TYPE_PROFILER,
81 StudioUpdate = FMOD_THREAD_TYPE_STUDIO_UPDATE,
82 StudioLoadBank = FMOD_THREAD_TYPE_STUDIO_LOAD_BANK,
83 StudioLoadSample = FMOD_THREAD_TYPE_STUDIO_LOAD_SAMPLE,
84 Convolution1 = FMOD_THREAD_TYPE_CONVOLUTION1,
85 Convolution2 = FMOD_THREAD_TYPE_CONVOLUTION2,
86}
87
88#[derive(Debug, Clone, Copy, PartialEq, Eq)]
89#[derive(
90 num_enum::TryFromPrimitive,
91 num_enum::IntoPrimitive,
92 num_enum::UnsafeFromPrimitive
93)]
94#[repr(u32)]
95pub enum TimeUnit {
96 MS = FMOD_TIMEUNIT_MS,
97 PCM = FMOD_TIMEUNIT_PCM,
98 PCMBytes = FMOD_TIMEUNIT_PCMBYTES,
99 RawBytes = FMOD_TIMEUNIT_RAWBYTES,
100 PCMFraction = FMOD_TIMEUNIT_PCMFRACTION,
101 ModOrder = FMOD_TIMEUNIT_MODORDER,
102 ModRow = FMOD_TIMEUNIT_MODROW,
103 ModPattern = FMOD_TIMEUNIT_MODPATTERN,
104}
105
106#[derive(Debug, Clone, Copy, PartialEq, Eq)]
107#[derive(
108 num_enum::TryFromPrimitive,
109 num_enum::IntoPrimitive,
110 num_enum::UnsafeFromPrimitive
111)]
112#[repr(i32)]
113pub enum Speaker {
114 None = FMOD_SPEAKER_NONE,
115 FrontLeft = FMOD_SPEAKER_FRONT_LEFT,
116 FrontRight = FMOD_SPEAKER_FRONT_RIGHT,
117 FrontCenter = FMOD_SPEAKER_FRONT_CENTER,
118 LowFrequency = FMOD_SPEAKER_LOW_FREQUENCY,
119 SurroundLeft = FMOD_SPEAKER_SURROUND_LEFT,
120 SurroundRight = FMOD_SPEAKER_SURROUND_RIGHT,
121 BackLeft = FMOD_SPEAKER_BACK_LEFT,
122 BackRight = FMOD_SPEAKER_BACK_RIGHT,
123 TopFrontLeft = FMOD_SPEAKER_TOP_FRONT_LEFT,
124 TopFrontRight = FMOD_SPEAKER_TOP_FRONT_RIGHT,
125 TopBackLeft = FMOD_SPEAKER_TOP_BACK_LEFT,
126 TopBackRight = FMOD_SPEAKER_TOP_BACK_RIGHT,
127}
128
129#[derive(Debug, Clone, Copy, PartialEq, Eq)]
130#[derive(
131 num_enum::TryFromPrimitive,
132 num_enum::IntoPrimitive,
133 num_enum::UnsafeFromPrimitive
134)]
135#[cfg_attr(target_env = "msvc", repr(i32))]
137#[cfg_attr(not(target_env = "msvc"), repr(u32))]
138pub enum PluginType {
139 Output = FMOD_PLUGINTYPE_OUTPUT,
140 Codec = FMOD_PLUGINTYPE_CODEC,
141 DSP = FMOD_PLUGINTYPE_DSP,
142}
143
144#[derive(Debug, Clone, Copy, PartialEq, Eq)]
145#[derive(
146 num_enum::TryFromPrimitive,
147 num_enum::IntoPrimitive,
148 num_enum::UnsafeFromPrimitive
149)]
150#[cfg_attr(target_env = "msvc", repr(i32))]
152#[cfg_attr(not(target_env = "msvc"), repr(u32))]
153pub enum DspType {
154 Unknown = FMOD_DSP_TYPE_UNKNOWN,
155 Mixer = FMOD_DSP_TYPE_MIXER,
156 Oscillator = FMOD_DSP_TYPE_OSCILLATOR,
157 Lowpass = FMOD_DSP_TYPE_LOWPASS,
158 ItLowpass = FMOD_DSP_TYPE_ITLOWPASS,
159 Highpass = FMOD_DSP_TYPE_HIGHPASS,
160 Echo = FMOD_DSP_TYPE_ECHO,
161 Fader = FMOD_DSP_TYPE_FADER,
162 Flange = FMOD_DSP_TYPE_FLANGE,
163 Distortion = FMOD_DSP_TYPE_DISTORTION,
164 Normalize = FMOD_DSP_TYPE_NORMALIZE,
165 Limiter = FMOD_DSP_TYPE_LIMITER,
166 ParamEq = FMOD_DSP_TYPE_PARAMEQ,
167 PitchShift = FMOD_DSP_TYPE_PITCHSHIFT,
168 Chorus = FMOD_DSP_TYPE_CHORUS,
169 VstPlugin = FMOD_DSP_TYPE_VSTPLUGIN,
170 WinampPlugin = FMOD_DSP_TYPE_WINAMPPLUGIN,
171 ItEcho = FMOD_DSP_TYPE_ITECHO,
172 Compressor = FMOD_DSP_TYPE_COMPRESSOR,
173 SfxReverb = FMOD_DSP_TYPE_SFXREVERB,
174 LowpassSimple = FMOD_DSP_TYPE_LOWPASS_SIMPLE,
175 Delay = FMOD_DSP_TYPE_DELAY,
176 Tremolo = FMOD_DSP_TYPE_TREMOLO,
177 LadspaPlugin = FMOD_DSP_TYPE_LADSPAPLUGIN,
178 Send = FMOD_DSP_TYPE_SEND,
179 Return = FMOD_DSP_TYPE_RETURN,
180 HighpassSimple = FMOD_DSP_TYPE_HIGHPASS_SIMPLE,
181 Pan = FMOD_DSP_TYPE_PAN,
182 ThreeEq = FMOD_DSP_TYPE_THREE_EQ,
183 Fft = FMOD_DSP_TYPE_FFT,
184 LoudnessMeter = FMOD_DSP_TYPE_LOUDNESS_METER,
185 EnvelopeFollower = FMOD_DSP_TYPE_ENVELOPEFOLLOWER,
186 ConvolutionReverb = FMOD_DSP_TYPE_CONVOLUTIONREVERB,
187 ChannelMix = FMOD_DSP_TYPE_CHANNELMIX,
188 Transceiver = FMOD_DSP_TYPE_TRANSCEIVER,
189 ObjectPan = FMOD_DSP_TYPE_OBJECTPAN,
190 MultibandEq = FMOD_DSP_TYPE_MULTIBAND_EQ,
191}
192
193#[derive(Debug, Clone, Copy, PartialEq, Eq)]
194#[derive(
195 num_enum::TryFromPrimitive,
196 num_enum::IntoPrimitive,
197 num_enum::UnsafeFromPrimitive
198)]
199#[cfg_attr(target_env = "msvc", repr(i32))]
201#[cfg_attr(not(target_env = "msvc"), repr(u32))]
202pub enum PortType {
203 Music = FMOD_PORT_TYPE_MUSIC,
204 CopyrightMusic = FMOD_PORT_TYPE_COPYRIGHT_MUSIC,
205 Voice = FMOD_PORT_TYPE_VOICE,
206 Controller = FMOD_PORT_TYPE_CONTROLLER,
207 Personal = FMOD_PORT_TYPE_PERSONAL,
208 Vibration = FMOD_PORT_TYPE_VIBRATION,
209 AUX = FMOD_PORT_TYPE_AUX,
210}
211
212#[derive(Debug, Clone, Copy, PartialEq, Eq)]
213#[derive(
214 num_enum::TryFromPrimitive,
215 num_enum::IntoPrimitive,
216 num_enum::UnsafeFromPrimitive
217)]
218#[cfg_attr(target_env = "msvc", repr(i32))]
220#[cfg_attr(not(target_env = "msvc"), repr(u32))]
221pub enum SoundGroupBehavior {
222 Fail = FMOD_SOUNDGROUP_BEHAVIOR_FAIL,
223 Mute = FMOD_SOUNDGROUP_BEHAVIOR_MUTE,
224 StealLowest = FMOD_SOUNDGROUP_BEHAVIOR_STEALLOWEST,
225}
226
227#[derive(Debug, Clone, Copy, PartialEq, Eq)]
228#[derive(
229 num_enum::TryFromPrimitive,
230 num_enum::IntoPrimitive,
231 num_enum::UnsafeFromPrimitive
232)]
233#[cfg_attr(target_env = "msvc", repr(i32))]
235#[cfg_attr(not(target_env = "msvc"), repr(u32))]
236pub enum DspConnectionType {
237 Standard = FMOD_DSPCONNECTION_TYPE_STANDARD,
238 Sidechain = FMOD_DSPCONNECTION_TYPE_SIDECHAIN,
239 Send = FMOD_DSPCONNECTION_TYPE_SEND,
240 SendSidechain = FMOD_DSPCONNECTION_TYPE_SEND_SIDECHAIN,
241}
242
243#[derive(Debug, Clone, Copy, PartialEq, Eq)]
244#[derive(num_enum::TryFromPrimitive, num_enum::IntoPrimitive)]
245#[repr(i32)]
246pub enum DspParameterDataType {
247 User = FMOD_DSP_PARAMETER_DATA_TYPE_USER,
248 OverAlign = FMOD_DSP_PARAMETER_DATA_TYPE_OVERALLGAIN,
249 Attributes3D = FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES,
250 Sidechain = FMOD_DSP_PARAMETER_DATA_TYPE_SIDECHAIN,
251 FFT = FMOD_DSP_PARAMETER_DATA_TYPE_FFT,
252 Attributes3DMulti = FMOD_DSP_PARAMETER_DATA_TYPE_3DATTRIBUTES_MULTI,
253 AttenuationRange = FMOD_DSP_PARAMETER_DATA_TYPE_ATTENUATION_RANGE,
254}
255
256#[derive(Debug, Clone, Copy, PartialEq, Eq)]
257#[derive(
258 num_enum::TryFromPrimitive,
259 num_enum::IntoPrimitive,
260 num_enum::UnsafeFromPrimitive
261)]
262#[cfg_attr(target_env = "msvc", repr(i32))]
264#[cfg_attr(not(target_env = "msvc"), repr(u32))]
265pub enum SoundType {
266 Unknown = FMOD_SOUND_TYPE_UNKNOWN,
267 AIFF = FMOD_SOUND_TYPE_AIFF,
268 ASF = FMOD_SOUND_TYPE_ASF,
269 DLS = FMOD_SOUND_TYPE_DLS,
270 FLAC = FMOD_SOUND_TYPE_FLAC,
271 FSB = FMOD_SOUND_TYPE_FSB,
272 IT = FMOD_SOUND_TYPE_IT,
273 MIDI = FMOD_SOUND_TYPE_MIDI,
274 MOD = FMOD_SOUND_TYPE_MOD,
275 MPEG = FMOD_SOUND_TYPE_MPEG,
276 OGGVORBIS = FMOD_SOUND_TYPE_OGGVORBIS,
277 Playlist = FMOD_SOUND_TYPE_PLAYLIST,
278 RAW = FMOD_SOUND_TYPE_RAW,
279 S3M = FMOD_SOUND_TYPE_S3M,
280 User = FMOD_SOUND_TYPE_USER,
281 WAV = FMOD_SOUND_TYPE_WAV,
282 XM = FMOD_SOUND_TYPE_XM,
283 XMA = FMOD_SOUND_TYPE_XMA,
284 AudioQueue = FMOD_SOUND_TYPE_AUDIOQUEUE,
285 AT9 = FMOD_SOUND_TYPE_AT9,
286 Vorbis = FMOD_SOUND_TYPE_VORBIS,
287 MediaFoundation = FMOD_SOUND_TYPE_MEDIA_FOUNDATION,
288 MediaCodec = FMOD_SOUND_TYPE_MEDIACODEC,
289 FADPCM = FMOD_SOUND_TYPE_FADPCM,
290 OPUS = FMOD_SOUND_TYPE_OPUS,
291}
292
293#[derive(Debug, Clone, Copy, PartialEq, Eq)]
294#[derive(
295 num_enum::TryFromPrimitive,
296 num_enum::IntoPrimitive,
297 num_enum::UnsafeFromPrimitive
298)]
299#[cfg_attr(target_env = "msvc", repr(i32))]
301#[cfg_attr(not(target_env = "msvc"), repr(u32))]
302pub enum SoundFormat {
303 None = FMOD_SOUND_FORMAT_NONE,
304 PCM8 = FMOD_SOUND_FORMAT_PCM8,
305 PCM16 = FMOD_SOUND_FORMAT_PCM16,
306 PCM24 = FMOD_SOUND_FORMAT_PCM24,
307 PCM32 = FMOD_SOUND_FORMAT_PCM32,
308 PCMFloat = FMOD_SOUND_FORMAT_PCMFLOAT,
309 BitStream = FMOD_SOUND_FORMAT_BITSTREAM,
310}
311
312#[derive(Debug, Clone, Copy, PartialEq, Eq)]
313#[derive(
314 num_enum::TryFromPrimitive,
315 num_enum::IntoPrimitive,
316 num_enum::UnsafeFromPrimitive
317)]
318#[cfg_attr(target_env = "msvc", repr(i32))]
320#[cfg_attr(not(target_env = "msvc"), repr(u32))]
321pub enum TagType {
322 Unknown = FMOD_TAGTYPE_UNKNOWN,
323 ID3V1 = FMOD_TAGTYPE_ID3V1,
324 ID3V2 = FMOD_TAGTYPE_ID3V2,
325 VorbisComment = FMOD_TAGTYPE_VORBISCOMMENT,
326 ShoutCast = FMOD_TAGTYPE_SHOUTCAST,
327 IceCast = FMOD_TAGTYPE_ICECAST,
328 ASF = FMOD_TAGTYPE_ASF,
329 MIDI = FMOD_TAGTYPE_MIDI,
330 Playlist = FMOD_TAGTYPE_PLAYLIST,
331 Fmod = FMOD_TAGTYPE_FMOD,
332 User = FMOD_TAGTYPE_USER,
333}
334
335#[derive(Debug, Clone, PartialEq, Eq)]
336#[cfg_attr(target_env = "msvc", repr(i32))]
338#[cfg_attr(not(target_env = "msvc"), repr(u32))]
339pub enum OpenState {
340 Ready = FMOD_OPENSTATE_READY,
341 Loading = FMOD_OPENSTATE_LOADING,
342 Error(Error) = FMOD_OPENSTATE_ERROR,
343 Connecting = FMOD_OPENSTATE_CONNECTING,
344 Buffering = FMOD_OPENSTATE_BUFFERING,
345 Seeking = FMOD_OPENSTATE_SEEKING,
346 Playing = FMOD_OPENSTATE_PLAYING,
347 SetPosition = FMOD_OPENSTATE_SETPOSITION,
348}
349
350impl OpenState {
351 pub fn try_from_ffi(value: FMOD_OPENSTATE, error: Option<Error>) -> Result<Self> {
352 match value {
353 FMOD_OPENSTATE_READY => Ok(OpenState::Ready),
354 FMOD_OPENSTATE_LOADING => Ok(OpenState::Loading),
355 FMOD_OPENSTATE_ERROR => error
356 .map(OpenState::Error)
357 .ok_or(Error::Fmod(FMOD_RESULT::FMOD_ERR_INVALID_PARAM)),
358 FMOD_OPENSTATE_CONNECTING => Ok(OpenState::Connecting),
359 FMOD_OPENSTATE_BUFFERING => Ok(OpenState::Buffering),
360 FMOD_OPENSTATE_SEEKING => Ok(OpenState::Seeking),
361 FMOD_OPENSTATE_PLAYING => Ok(OpenState::Playing),
362 FMOD_OPENSTATE_SETPOSITION => Ok(OpenState::SetPosition),
363 _ => Err(Error::EnumFromPrivitive {
364 name: "LoadingState",
365 primitive: i64::from(value),
366 }),
367 }
368 }
369}
370
371#[derive(Debug, Clone, Copy, PartialEq, Eq)]
372#[derive(
373 num_enum::TryFromPrimitive,
374 num_enum::IntoPrimitive,
375 num_enum::UnsafeFromPrimitive
376)]
377#[cfg_attr(target_env = "msvc", repr(i32))]
379#[cfg_attr(not(target_env = "msvc"), repr(u32))]
380pub enum ChannelOrder {
381 Default = FMOD_CHANNELORDER_DEFAULT,
382 WaveFormat = FMOD_CHANNELORDER_WAVEFORMAT,
383 ProTools = FMOD_CHANNELORDER_PROTOOLS,
384 AllMono = FMOD_CHANNELORDER_ALLMONO,
385 AllStereo = FMOD_CHANNELORDER_ALLSTEREO,
386 Alsa = FMOD_CHANNELORDER_ALSA,
387}