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_SNET_H__ 00003 #define __BSE_SNET_H__ 00004 00005 #include <bse/bsesuper.hh> 00006 #include <bse/bseglobals.hh> /* FIXME */ 00007 00008 00009 G_BEGIN_DECLS 00010 00011 00012 /* --- object type macros --- */ 00013 #define BSE_TYPE_SNET (BSE_TYPE_ID (BseSNet)) 00014 #define BSE_SNET(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_SNET, BseSNet)) 00015 #define BSE_SNET_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_SNET, BseSNetClass)) 00016 #define BSE_IS_SNET(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_SNET)) 00017 #define BSE_IS_SNET_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_SNET)) 00018 #define BSE_SNET_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_SNET, BseSNetClass)) 00019 #define BSE_SNET_USER_SYNTH(src) ((BSE_OBJECT_FLAGS (src) & BSE_SNET_FLAG_USER_SYNTH) != 0) 00020 00021 typedef enum /*< skip >*/ 00022 { 00023 BSE_SNET_FLAG_USER_SYNTH = 1 << (BSE_SUPER_FLAGS_USHIFT + 0) 00024 } BseSNetFlags; 00025 #define BSE_SNET_FLAGS_USHIFT (BSE_SUPER_FLAGS_USHIFT + 1) 00026 00027 struct BseSNetPort { 00028 gchar *name; 00029 guint context : 31; 00030 guint input : 1; 00031 BseModule *src_omodule; /* output */ 00032 guint src_ostream; 00033 BseModule *dest_imodule; /* input */ 00034 guint dest_istream; 00035 }; 00036 00037 struct BseSNet : BseSuper { 00038 SfiRing *sources; /* of type BseSource* */ 00039 SfiRing *isources; /* internal (protected) sources */ 00040 GSList *iport_names; 00041 GSList *oport_names; 00042 GBSearchArray *port_array; /* of type BseSNetPort* */ 00043 GSList *tmp_context_children; 00044 guint port_unregistered_id; 00045 }; 00046 struct BseSNetClass : BseSuperClass 00047 {}; 00048 00049 struct BseMidiContext { 00050 BseMidiReceiver *midi_receiver; 00051 guint midi_channel; 00052 guint voice_id; 00053 }; 00054 00055 guint bse_snet_create_context (BseSNet *snet, 00056 BseMidiContext mcontext, 00057 BseTrans *trans); 00058 guint bse_snet_context_clone_branch (BseSNet *self, 00059 guint context, 00060 BseSource *context_merger, 00061 BseMidiContext mcontext, 00062 BseTrans *trans); 00063 gboolean bse_snet_context_is_branch (BseSNet *self, 00064 guint context_id); 00065 void bse_snet_intern_child (BseSNet *self, 00066 gpointer child); 00067 BseMidiContext bse_snet_get_midi_context (BseSNet *snet, 00068 guint context_handle); 00069 const gchar* bse_snet_iport_name_register (BseSNet *snet, 00070 const gchar *tmpl_name); 00071 gboolean bse_snet_iport_name_registered (BseSNet *snet, 00072 const gchar *name); 00073 void bse_snet_iport_name_unregister (BseSNet *snet, 00074 const gchar *name); 00075 const gchar* bse_snet_oport_name_register (BseSNet *snet, 00076 const gchar *tmpl_name); 00077 gboolean bse_snet_oport_name_registered (BseSNet *snet, 00078 const gchar *name); 00079 void bse_snet_oport_name_unregister (BseSNet *snet, 00080 const gchar *name); 00081 void bse_snet_set_iport_src (BseSNet *snet, 00082 const gchar *port_name, 00083 guint snet_context, 00084 BseModule *omodule, 00085 guint ostream, 00086 BseTrans *trans); 00087 void bse_snet_set_iport_dest (BseSNet *snet, 00088 const gchar *port_name, 00089 guint snet_context, 00090 BseModule *imodule, 00091 guint istream, 00092 BseTrans *trans); 00093 void bse_snet_set_oport_src (BseSNet *snet, 00094 const gchar *port_name, 00095 guint snet_context, 00096 BseModule *omodule, 00097 guint ostream, 00098 BseTrans *trans); 00099 void bse_snet_set_oport_dest (BseSNet *snet, 00100 const gchar *port_name, 00101 guint snet_context, 00102 BseModule *imodule, 00103 guint istream, 00104 BseTrans *trans); 00105 00106 00107 G_END_DECLS 00108 00109 #endif /* __BSE_SNET_H__ */