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_WAVE_OSC_H__ 00003 #define __BSE_WAVE_OSC_H__ 00004 00005 #include <bse/bsesource.hh> 00006 #include <bse/bsewave.hh> 00007 #include <bse/gslwaveosc.hh> 00008 00009 G_BEGIN_DECLS 00010 00011 /* --- object type macros --- */ 00012 #define BSE_TYPE_WAVE_OSC (BSE_TYPE_ID (BseWaveOsc)) 00013 #define BSE_WAVE_OSC(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_WAVE_OSC, BseWaveOsc)) 00014 #define BSE_WAVE_OSC_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_WAVE_OSC, BseWaveOscClass)) 00015 #define BSE_IS_WAVE_OSC(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_WAVE_OSC)) 00016 #define BSE_IS_WAVE_OSC_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_WAVE_OSC)) 00017 #define BSE_WAVE_OSC_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_WAVE_OSC, BseWaveOscClass)) 00018 00019 struct BseWaveOsc : BseSource { 00020 BseWave *wave; 00021 GslWaveChunk *esample_wchunk; 00022 GslWaveOscConfig config; 00023 gfloat fm_strength; 00024 gfloat n_octaves; 00025 }; 00026 struct BseWaveOscClass : BseSourceClass 00027 {}; 00028 00029 void bse_wave_osc_request_pcm_position (BseWaveOsc *self); 00030 void bse_wave_osc_mass_seek (guint n_woscs, 00031 BseWaveOsc **woscs, 00032 gfloat perc); 00033 void bse_wave_osc_set_from_esample (BseWaveOsc *self, 00034 BseEditableSample *esample); 00035 00036 00037 /* --- channels --- */ 00038 enum 00039 { 00040 BSE_WAVE_OSC_ICHANNEL_FREQ, 00041 BSE_WAVE_OSC_ICHANNEL_SYNC, 00042 BSE_WAVE_OSC_ICHANNEL_MOD, 00043 BSE_WAVE_OSC_N_ICHANNELS 00044 }; 00045 enum 00046 { 00047 BSE_WAVE_OSC_OCHANNEL_WAVE, 00048 BSE_WAVE_OSC_OCHANNEL_GATE, 00049 BSE_WAVE_OSC_OCHANNEL_DONE, 00050 BSE_WAVE_OSC_N_OCHANNELS 00051 }; 00052 00053 G_END_DECLS 00054 00055 #endif /* __BSE_WAVE_OSC_H__ */