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 __DAV_SYNDRUM_H__ 00003 #define __DAV_SYNDRUM_H__ 00004 00005 #include <bse/bseplugin.hh> 00006 #include <bse/bsesource.hh> 00007 00008 G_BEGIN_DECLS 00009 00010 00011 /* --- object type macros --- */ 00012 #define DAV_TYPE_SYN_DRUM (dav_syn_drum_get_type()) 00013 #define DAV_SYN_DRUM(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), DAV_TYPE_SYN_DRUM, DavSynDrum)) 00014 #define DAV_SYN_DRUM_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), DAV_TYPE_SYN_DRUM, DavSynDrumClass)) 00015 #define DAV_IS_SYN_DRUM(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), DAV_TYPE_SYN_DRUM)) 00016 #define DAV_IS_SYN_DRUM_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), DAV_TYPE_SYN_DRUM)) 00017 #define DAV_SYN_DRUM_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), DAV_TYPE_SYN_DRUM, DavSynDrumClass)) 00018 00019 struct DavSynDrumParams { 00020 gfloat freq; 00021 gfloat trigger_vel; 00022 gfloat ratio; 00023 gfloat res; /* sample rate specific */ 00024 }; 00025 struct DavSynDrum : BseSource { 00026 DavSynDrumParams params; /* .res is unused (due to its sample rate dependency) */ 00027 gfloat half; 00028 gboolean force_trigger; 00029 }; 00030 struct DavSynDrumClass : BseSourceClass 00031 {}; 00032 struct DavSynDrumModule { 00033 DavSynDrumParams params; 00034 gfloat last_trigger_level; 00035 gfloat spring_vel; 00036 gfloat spring_pos; 00037 gfloat env; 00038 gfloat freq_rad; 00039 gfloat freq_shift; 00040 }; 00041 00042 enum 00043 { 00044 DAV_SYN_DRUM_ICHANNEL_FREQ, 00045 DAV_SYN_DRUM_ICHANNEL_RATIO, 00046 DAV_SYN_DRUM_ICHANNEL_TRIGGER, 00047 DAV_SYN_DRUM_N_ICHANNELS 00048 }; 00049 enum 00050 { 00051 DAV_SYN_DRUM_OCHANNEL_MONO, 00052 DAV_SYN_DRUM_N_OCHANNELS 00053 }; 00054 00055 G_END_DECLS 00056 00057 #endif /* __DAV_SYNDRUM_H__ */