BEAST/BSE - Better Audio System and Sound Engine  0.9.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bsesnet.hh
Go to the documentation of this file.
1  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
2 #ifndef __BSE_SNET_H__
3 #define __BSE_SNET_H__
4 
5 #include <bse/bsesuper.hh>
6 #include <bse/bseglobals.hh> /* FIXME */
7 
8 
9 G_BEGIN_DECLS
10 
11 
12 /* --- object type macros --- */
13 #define BSE_TYPE_SNET (BSE_TYPE_ID (BseSNet))
14 #define BSE_SNET(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_SNET, BseSNet))
15 #define BSE_SNET_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_SNET, BseSNetClass))
16 #define BSE_IS_SNET(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_SNET))
17 #define BSE_IS_SNET_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_SNET))
18 #define BSE_SNET_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_SNET, BseSNetClass))
19 #define BSE_SNET_USER_SYNTH(src) ((BSE_OBJECT_FLAGS (src) & BSE_SNET_FLAG_USER_SYNTH) != 0)
20 
21 typedef enum /*< skip >*/
22 {
23  BSE_SNET_FLAG_USER_SYNTH = 1 << (BSE_SUPER_FLAGS_USHIFT + 0)
24 } BseSNetFlags;
25 #define BSE_SNET_FLAGS_USHIFT (BSE_SUPER_FLAGS_USHIFT + 1)
26 
27 struct BseSNetPort {
28  gchar *name;
29  guint context : 31;
30  guint input : 1;
31  BseModule *src_omodule; /* output */
32  guint src_ostream;
33  BseModule *dest_imodule; /* input */
34  guint dest_istream;
35 };
36 
37 struct BseSNet : BseSuper {
38  SfiRing *sources; /* of type BseSource* */
39  SfiRing *isources; /* internal (protected) sources */
40  GSList *iport_names;
41  GSList *oport_names;
42  GBSearchArray *port_array; /* of type BseSNetPort* */
43  GSList *tmp_context_children;
44  guint port_unregistered_id;
45 };
47 {};
48 
50  BseMidiReceiver *midi_receiver;
51  guint midi_channel;
52  guint voice_id;
53 };
54 
55 guint bse_snet_create_context (BseSNet *snet,
56  BseMidiContext mcontext,
57  BseTrans *trans);
58 guint bse_snet_context_clone_branch (BseSNet *self,
59  guint context,
60  BseSource *context_merger,
61  BseMidiContext mcontext,
62  BseTrans *trans);
63 gboolean bse_snet_context_is_branch (BseSNet *self,
64  guint context_id);
65 void bse_snet_intern_child (BseSNet *self,
66  gpointer child);
67 BseMidiContext bse_snet_get_midi_context (BseSNet *snet,
68  guint context_handle);
69 const gchar* bse_snet_iport_name_register (BseSNet *snet,
70  const gchar *tmpl_name);
71 gboolean bse_snet_iport_name_registered (BseSNet *snet,
72  const gchar *name);
73 void bse_snet_iport_name_unregister (BseSNet *snet,
74  const gchar *name);
75 const gchar* bse_snet_oport_name_register (BseSNet *snet,
76  const gchar *tmpl_name);
77 gboolean bse_snet_oport_name_registered (BseSNet *snet,
78  const gchar *name);
79 void bse_snet_oport_name_unregister (BseSNet *snet,
80  const gchar *name);
81 void bse_snet_set_iport_src (BseSNet *snet,
82  const gchar *port_name,
83  guint snet_context,
84  BseModule *omodule,
85  guint ostream,
86  BseTrans *trans);
87 void bse_snet_set_iport_dest (BseSNet *snet,
88  const gchar *port_name,
89  guint snet_context,
90  BseModule *imodule,
91  guint istream,
92  BseTrans *trans);
93 void bse_snet_set_oport_src (BseSNet *snet,
94  const gchar *port_name,
95  guint snet_context,
96  BseModule *omodule,
97  guint ostream,
98  BseTrans *trans);
99 void bse_snet_set_oport_dest (BseSNet *snet,
100  const gchar *port_name,
101  guint snet_context,
102  BseModule *imodule,
103  guint istream,
104  BseTrans *trans);
105 
106 
107 G_END_DECLS
108 
109 #endif /* __BSE_SNET_H__ */
Definition: bsesnet.hh:27
Definition: bsesnet.hh:49
Definition: bsesnet.hh:37
Definition: bsesuper.hh:25
Definition: gbsearcharray.hh:37
Definition: bsesuper.hh:31
void bse_snet_intern_child(BseSNet *self, gpointer child)
Definition: bsesnet.cc:94
Definition: bsesource.hh:84
Definition: sfiring.hh:23
Definition: bsesnet.hh:46