2 #ifndef __BSE_SOURCE_H__
3 #define __BSE_SOURCE_H__
11 #define BSE_TYPE_SOURCE (BSE_TYPE_ID (BseSource))
12 #define BSE_SOURCE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_SOURCE, BseSource))
13 #define BSE_SOURCE_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_SOURCE, BseSourceClass))
14 #define BSE_IS_SOURCE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_SOURCE))
15 #define BSE_IS_SOURCE_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_SOURCE))
16 #define BSE_SOURCE_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_SOURCE, BseSourceClass))
20 #define BSE_SOURCE_PREPARED(src) ((BSE_OBJECT_FLAGS (src) & BSE_SOURCE_FLAG_PREPARED) != 0)
21 #define BSE_SOURCE_COLLECTED(src) ((BSE_OBJECT_FLAGS (src) & BSE_SOURCE_FLAG_COLLECTED) != 0)
22 #define BSE_SOURCE_N_ICHANNELS(src) (BSE_SOURCE (src)->channel_defs->n_ichannels)
23 #define BSE_SOURCE_ICHANNEL_IDENT(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_idents[(id)])
24 #define BSE_SOURCE_ICHANNEL_LABEL(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_labels[(id)])
25 #define BSE_SOURCE_ICHANNEL_BLURB(src,id) (BSE_SOURCE (src)->channel_defs->ichannel_blurbs[(id)])
26 #define BSE_SOURCE_IS_JOINT_ICHANNEL(s,i) ((BSE_SOURCE (s)->channel_defs->ijstreams[(i)] & BSE_SOURCE_JSTREAM_FLAG) != 0)
27 #define BSE_SOURCE_N_JOINT_ICHANNELS(src) (BSE_SOURCE (src)->channel_defs->n_jstreams)
28 #define BSE_SOURCE_N_OCHANNELS(src) (BSE_SOURCE (src)->channel_defs->n_ochannels)
29 #define BSE_SOURCE_OCHANNEL_IDENT(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_idents[(id)])
30 #define BSE_SOURCE_OCHANNEL_LABEL(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_labels[(id)])
31 #define BSE_SOURCE_OCHANNEL_BLURB(src,id) (BSE_SOURCE (src)->channel_defs->ochannel_blurbs[(id)])
33 #define BSE_SOURCE_CLASS_N_ICHANNELS(sc) (BSE_SOURCE_CLASS (sc)->channel_defs.n_ichannels)
34 #define BSE_SOURCE_CLASS_N_OCHANNELS(sc) (BSE_SOURCE_CLASS (sc)->channel_defs.n_ochannels)
36 #define BSE_SOURCE_INPUT(src,id) (BSE_SOURCE (src)->inputs + (guint) (id))
37 #define BSE_SOURCE_OCHANNEL_OSTREAM(s,oc) ((oc) < BSE_SOURCE_N_OCHANNELS (s) ? (oc) : 0xffffffff)
38 #define BSE_SOURCE_ICHANNEL_ISTREAM(s,ic) ((ic) < BSE_SOURCE_N_ICHANNELS (s) \
39 && !BSE_SOURCE_IS_JOINT_ICHANNEL ((s), (ic)) ? \
40 BSE_SOURCE (s)->channel_defs->ijstreams[(ic)] & ~BSE_SOURCE_JSTREAM_FLAG : \
42 #define BSE_SOURCE_ICHANNEL_JSTREAM(s,ic) ((ic) < BSE_SOURCE_N_ICHANNELS (s) \
43 && BSE_SOURCE_IS_JOINT_ICHANNEL ((s), (ic)) ? \
44 BSE_SOURCE (s)->channel_defs->ijstreams[(ic)] & ~BSE_SOURCE_JSTREAM_FLAG : \
46 #define BSE_SOURCE_JSTREAM_FLAG ((guint) 1 << 31)
47 #define BSE_SOURCE_PRIVATE_INPUTS(src) ((BSE_OBJECT_FLAGS (src) & BSE_SOURCE_FLAG_PRIVATE_INPUTS) != 0)
51 BSE_SOURCE_FLAG_PRIVATE_INPUTS = 1 << (BSE_ITEM_FLAGS_USHIFT + 0),
52 BSE_SOURCE_FLAG_PREPARED = 1 << (BSE_ITEM_FLAGS_USHIFT + 1),
53 BSE_SOURCE_FLAG_COLLECTED = 1 << (BSE_ITEM_FLAGS_USHIFT + 2)
55 #define BSE_SOURCE_FLAGS_USHIFT (BSE_ITEM_FLAGS_USHIFT + 3)
57 typedef struct _BseSourceProbes BseSourceProbes;
58 typedef void (*BseSourceFreeContextData) (
BseSource *source,
74 gchar **ichannel_idents;
75 gchar **ichannel_labels;
76 gchar **ichannel_blurbs;
80 gchar **ochannel_idents;
81 gchar **ochannel_labels;
82 gchar **ochannel_blurbs;
90 BseSourceProbes *probes;
94 void (*property_updated) (
BseSource *source,
100 void (*context_create) (
BseSource *source,
101 guint context_handle,
103 void (*context_connect) (
BseSource *source,
104 guint context_handle,
106 void (*context_dismiss) (
BseSource *source,
107 guint context_handle,
120 BseModuleClass *engine_class;
121 gboolean filtered_properties;
122 SfiRing *unprepared_properties;
123 SfiRing *automation_properties;
126 guint bse_source_find_ichannel (
BseSource *source,
127 const gchar *ichannel_ident);
128 guint bse_source_find_ochannel (
BseSource *source,
129 const gchar *ochannel_ident);
130 BseErrorType bse_source_set_input (
BseSource *source,
134 BseErrorType bse_source_unset_input (
BseSource *source,
138 gboolean bse_source_get_input (
BseSource *source,
142 void bse_source_must_set_input_loc (
BseSource *source,
146 const gchar *strloc);
147 #define bse_source_must_set_input(is,ic,os,oc) \
148 bse_source_must_set_input_loc (is, ic, os, oc, G_STRLOC)
152 guint bse_source_class_add_ichannel (
BseSourceClass *source_class,
156 guint bse_source_class_add_jchannel (
BseSourceClass *source_class,
160 guint bse_source_class_add_ochannel (
BseSourceClass *source_class,
164 void bse_source_class_inherit_channels (
BseSourceClass *source_class);
165 void bse_source_set_context_imodule (
BseSource *source,
166 guint context_handle,
168 void bse_source_set_context_omodule (
BseSource *source,
169 guint context_handle,
171 BseModule* bse_source_get_context_imodule (
BseSource *source,
172 guint context_handle);
173 BseModule* bse_source_get_context_omodule (
BseSource *source,
174 guint context_handle);
175 void bse_source_flow_access_module (
BseSource *source,
176 guint context_handle,
180 BseFreeFunc data_free_func,
182 void bse_source_flow_access_modules (
BseSource *source,
186 BseFreeFunc data_free_func,
188 void bse_source_access_modules (
BseSource *source,
191 BseFreeFunc data_free_func,
193 BseErrorType bse_source_check_input (
BseSource *source,
197 gboolean bse_source_has_output (
BseSource *source,
199 void bse_source_backup_ichannels_to_undo (
BseSource *source);
200 void bse_source_backup_ochannels_to_undo (
BseSource *source);
201 void bse_source_input_backup_to_undo (
BseSource *source,
206 void bse_source_class_cache_engine_class (
BseSourceClass *source_class,
207 const BseModuleClass *engine_class);
208 void bse_source_set_context_module (
BseSource *source,
209 guint context_handle,
211 void bse_source_update_modules (
BseSource *source,
213 gpointer member_data,
216 void bse_source_clear_ichannels (
BseSource *source);
217 void bse_source_clear_ochannels (
BseSource *source);
218 BseMusicalTuningType bse_source_prepared_musical_tuning (
BseSource *source);
224 BseMidiSignalType signal_type;
226 BseErrorType bse_source_set_automation_property (
BseSource *source,
227 const gchar *prop_name,
229 BseMidiSignalType signal_type);
230 void bse_source_get_automation_property (
BseSource *source,
231 const gchar *prop_name,
232 guint *pmidi_channel,
233 BseMidiSignalType *psignal_type);
240 void bse_source_free_collection (
SfiRing *ring);
241 gboolean bse_source_test_input_recursive (
BseSource *source,
243 gpointer bse_source_get_context_data (
BseSource *source,
244 guint context_handle);
245 void bse_source_create_context_with_data (
BseSource *source,
246 guint context_handle,
248 BseSourceFreeContextData free_data,
250 void bse_source_create_context (
BseSource *source,
251 guint context_handle,
253 void bse_source_connect_context (
BseSource *source,
254 guint context_handle,
256 void bse_source_dismiss_context (
BseSource *source,
257 guint context_handle,
259 void bse_source_recreate_context (
BseSource *source,
260 guint context_handle,
262 void bse_source_prepare (
BseSource *source);
263 void bse_source_reset (
BseSource *source);
264 guint* bse_source_context_ids (
BseSource *source,
266 gboolean bse_source_has_context (
BseSource *source,
267 guint context_handle);
270 void bse_source_clear_probes (
BseSource *source);
272 void bse_source_probes_modules_changed (
BseSource *source);
Definition: gbsearcharray.hh:37
Definition: bsesource.hh:72
Definition: bsesource.hh:61
Definition: bsesource.hh:221
void(* BseEngineAccessFunc)(BseModule *module, gpointer data)
Definition: bsedefs.hh:128
Definition: bsesource.hh:84
Definition: sfiring.hh:23
Definition: bsesource.hh:92
Definition: bseitem.hh:39
Definition: bseitem.hh:33