BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
bsewaveosc.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_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__ */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines