BEAST/BSE - Better Audio System and Sound Engine
0.8.2
|
00001 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html 00002 #ifndef __BSE_BIQUAD_FILTER_H__ 00003 #define __BSE_BIQUAD_FILTER_H__ 00004 00005 #include <bse/bsesource.hh> 00006 #include <bse/gslfilter.hh> 00007 00008 #ifdef __cplusplus 00009 extern "C" { 00010 #endif /* __cplusplus */ 00011 00012 00013 /* --- type macros --- */ 00014 #define BSE_TYPE_BIQUAD_FILTER (BSE_TYPE_ID (BseBiquadFilter)) 00015 #define BSE_BIQUAD_FILTER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_BIQUAD_FILTER, BseBiquadFilter)) 00016 #define BSE_BIQUAD_FILTER_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_BIQUAD_FILTER, BseBiquadFilterClass)) 00017 #define BSE_IS_BIQUAD_FILTER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_BIQUAD_FILTER)) 00018 #define BSE_IS_BIQUAD_FILTER_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_BIQUAD_FILTER)) 00019 #define BSE_BIQUAD_FILTER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_BIQUAD_FILTER, BseBiquadFilterClass)) 00020 00021 00022 /* --- enums --- */ 00023 typedef enum 00024 { 00025 BSE_BIQUAD_FILTER_RESONANT_LOWPASS = GSL_BIQUAD_RESONANT_LOWPASS, 00026 BSE_BIQUAD_FILTER_RESONANT_HIGHPASS = GSL_BIQUAD_RESONANT_HIGHPASS, 00027 } BseBiquadFilterType; 00028 typedef enum /* skip */ 00029 { 00030 BSE_BIQUAD_FILTER_NORM_PASSBAND = GSL_BIQUAD_NORMALIZE_PASSBAND, 00031 BSE_BIQUAD_FILTER_NORM_RESONANCE_GAIN = GSL_BIQUAD_NORMALIZE_RESONANCE_GAIN, 00032 BSE_BIQUAD_FILTER_NORM_PEAK_GAIN = GSL_BIQUAD_NORMALIZE_PEAK_GAIN 00033 } BseBiquadFilterNorm; 00034 /* --- BseBiquadFilter source --- */ 00035 struct BseBiquadFilter; 00036 struct BseBiquadFilterClass; 00037 struct BseBiquadFilter : BseSource { 00038 BseBiquadFilterType filter_type; 00039 guint type_change : 1; 00040 guint exponential_fm : 1; 00041 gfloat freq; 00042 gfloat fm_strength; 00043 gfloat fm_n_octaves; 00044 BseBiquadFilterNorm norm_type; 00045 gfloat gain; 00046 gfloat gain_strength; 00047 }; 00048 struct BseBiquadFilterClass : BseSourceClass 00049 {}; 00050 00051 /* --- channels --- */ 00052 enum 00053 { 00054 BSE_BIQUAD_FILTER_ICHANNEL_AUDIO, 00055 BSE_BIQUAD_FILTER_ICHANNEL_FREQ, 00056 BSE_BIQUAD_FILTER_ICHANNEL_FREQ_MOD, 00057 BSE_BIQUAD_FILTER_ICHANNEL_GAIN_MOD, 00058 BSE_BIQUAD_FILTER_N_ICHANNELS 00059 }; 00060 enum 00061 { 00062 BSE_BIQUAD_FILTER_OCHANNEL_AUDIO, 00063 BSE_BIQUAD_FILTER_N_OCHANNELS 00064 }; 00065 00066 00067 #ifdef __cplusplus 00068 } 00069 #endif /* __cplusplus */ 00070 00071 #endif /* __BSE_BIQUAD_FILTER_H__ */