BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
bsebiquadfilter.hh
Go to the documentation of this file.
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__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines