fmod/dsp/
parameter.rs

1use num_derive::FromPrimitive;
2use crate::{ll};
3
4#[derive(Clone, Debug, Eq, PartialEq)]
5pub struct Desc {
6  pub type_       : Type,
7  pub name        : String,
8  pub label       : String,
9  pub description : String
10}
11
12#[derive(Copy, Clone, Debug, Eq, PartialEq, FromPrimitive)]
13pub enum Type {
14  Bool  = ll::FMOD_DSP_PARAMETER_TYPE_FMOD_DSP_PARAMETER_TYPE_BOOL  as isize,
15  Data  = ll::FMOD_DSP_PARAMETER_TYPE_FMOD_DSP_PARAMETER_TYPE_DATA  as isize,
16  Float = ll::FMOD_DSP_PARAMETER_TYPE_FMOD_DSP_PARAMETER_TYPE_FLOAT as isize,
17  Int   = ll::FMOD_DSP_PARAMETER_TYPE_FMOD_DSP_PARAMETER_TYPE_INT   as isize,
18  MAX   = ll::FMOD_DSP_PARAMETER_TYPE_FMOD_DSP_PARAMETER_TYPE_MAX   as isize
19}
20
21// TODO: more parameters
22
23#[derive(Copy, Clone, Debug, Eq, PartialEq, FromPrimitive)]
24pub enum Echo {
25  Delay    = ll::FMOD_DSP_ECHO_FMOD_DSP_ECHO_DELAY    as isize,
26  Feedback = ll::FMOD_DSP_ECHO_FMOD_DSP_ECHO_FEEDBACK as isize,
27  DryLevel = ll::FMOD_DSP_ECHO_FMOD_DSP_ECHO_DRYLEVEL as isize,
28  WetLevel = ll::FMOD_DSP_ECHO_FMOD_DSP_ECHO_WETLEVEL as isize
29}
30
31#[derive(Copy, Clone, Debug, Eq, PartialEq, FromPrimitive)]
32pub enum Lowpass {
33  /// float 10.0-22000.0, default = 5000.0
34  Cutoff    = ll::FMOD_DSP_LOWPASS_FMOD_DSP_LOWPASS_CUTOFF    as isize,
35  /// float 1.0-10.0, default = 1.0
36  Resonance = ll::FMOD_DSP_LOWPASS_FMOD_DSP_LOWPASS_RESONANCE as isize
37}
38
39#[derive(Copy, Clone, Debug, Eq, PartialEq, FromPrimitive)]
40pub enum MultibandEq {
41  /// int MultibandEqFilterType, default = Lowpass12db
42  AFilter    = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_A_FILTER as isize,
43  /// float 20.0-22000.0, default = 8000.0
44  AFrequency = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_A_FREQUENCY
45    as isize,
46  /// float 0.1-10.0, default = 0.707
47  AQ         = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_A_Q as isize,
48  /// float -30.0-30.0, default = 0.0
49  AGain      = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_A_GAIN as isize,
50  /// int MultibandEqFilterType, default = Disabled
51  BFilter    = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_B_FILTER as isize,
52  /// float 20.0-22000.0, default = 8000.0
53  BFrequency = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_B_FREQUENCY
54    as isize,
55  /// float 0.1-10.0, default = 0.707
56  BQ         = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_B_Q as isize,
57  /// float -30.0-30.0, default = 0.0
58  BGain      = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_B_GAIN as isize,
59  /// int MultibandEqFilterType, default = Disabled
60  CFilter    = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_C_FILTER as isize,
61  /// float 20.0-22000.0, default = 8000.0
62  CFrequency = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_C_FREQUENCY
63    as isize,
64  /// float 0.1-10.0, default = 0.707
65  CQ         = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_C_Q as isize,
66  /// float -30.0-30.0, default = 0.0
67  CGain      = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_C_GAIN as isize,
68  /// int MultibandEqFilterType, default = Disabled
69  DFilter    = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_D_FILTER as isize,
70  /// float 20.0-22000.0, default = 8000.0
71  DFrequency = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_D_FREQUENCY
72    as isize,
73  /// float 0.1-10.0, default = 0.707
74  DQ         = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_D_Q as isize,
75  /// float -30.0-30.0, default = 0.0
76  DGain      = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_D_GAIN as isize,
77  /// int MultibandEqFilterType, default = Disabled
78  EFilter    = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_E_FILTER as isize,
79  /// float 20.0-22000.0, default = 8000.0
80  EFrequency = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_E_FREQUENCY
81    as isize,
82  /// float 0.1-10.0, default = 0.707
83  EQ         = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_E_Q as isize,
84  /// float -30.0-30.0, default = 0.0
85  EGain      = ll::FMOD_DSP_MULTIBAND_EQ_FMOD_DSP_MULTIBAND_EQ_E_GAIN as isize,
86}
87
88#[derive(Copy, Clone, Debug, Eq, PartialEq, FromPrimitive)]
89pub enum MultibandEqFilterType {
90  Disabled =
91    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_DISABLED
92    as isize,
93  Lowpass12db =
94    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_12DB
95    as isize,
96  Lowpass24db =
97    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_24DB
98    as isize,
99  Lowpass48db =
100    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_LOWPASS_48DB
101    as isize,
102  Highpass12db =
103    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_12DB
104    as isize,
105  Highpass24db =
106    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_24DB
107    as isize,
108  Highpass48db =
109    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHPASS_48DB
110    as isize,
111  Lowshelf =
112    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_LOWSHELF
113    as isize,
114  Highshelf =
115    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_HIGHSHELF
116    as isize,
117  Peaking =
118    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_PEAKING
119    as isize,
120  Bandpass =
121    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_BANDPASS
122    as isize,
123  Notch =
124    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_NOTCH
125    as isize,
126  Allpass =
127    ll::FMOD_DSP_MULTIBAND_EQ_FILTER_TYPE_FMOD_DSP_MULTIBAND_EQ_FILTER_ALLPASS
128    as isize
129}
130
131/// See also `reverb3d::Properties`
132#[derive(Copy, Clone, Debug, Eq, PartialEq, FromPrimitive)]
133pub enum Sfxreverb {
134  DecayTime    = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_DECAYTIME   as isize,
135  Density      = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_DENSITY     as isize,
136  Diffusion    = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_DIFFUSION   as isize,
137  DryLevel     = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_DRYLEVEL    as isize,
138  EarlyDelay   = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_EARLYDELAY  as isize,
139  EarlyLateMix = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_EARLYLATEMIX as isize,
140  HfDecayRatio = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_HFDECAYRATIO as isize,
141  HfReference  = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_HFREFERENCE as isize,
142  HighCut      = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_HIGHCUT     as isize,
143  LateDelay    = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_LATEDELAY   as isize,
144  LowShelfFrequency = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_LOWSHELFFREQUENCY
145    as isize,
146  LowShelfGain = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_LOWSHELFGAIN as isize,
147  WetLevel     = ll::FMOD_DSP_SFXREVERB_FMOD_DSP_SFXREVERB_WETLEVEL    as isize
148}
149