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