BEAST - Free Software Audio Synthesizer and Tracker  0.10.0
bsemidireceiver.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_MIDI_RECEIVER_H__
3 #define __BSE_MIDI_RECEIVER_H__
4 
5 #include <bse/bseobject.hh>
6 #include <bse/bsemidievent.hh>
7 
8 G_BEGIN_DECLS
9 
10 
11 /* --- API --- */
12 #define BSE_MIDI_CONTROL_MODULE_N_CHANNELS (4)
13 #define BSE_MIDI_VOICE_MODULE_N_CHANNELS (4)
14 #define BSE_MIDI_VOICE_N_CHANNELS (3)
15 typedef void (*BseMidiControlHandler) (gpointer handler_data,
16  guint64 tick_stamp,
17  Bse::MidiSignal signal_type,
18  gfloat control_value,
19  guint n_modules,
20  BseModule *const *modules,
21  gpointer user_data,
22  BseTrans *trans);
23 BseMidiReceiver* bse_midi_receiver_new (const gchar *receiver_name);
24 BseMidiReceiver* bse_midi_receiver_ref (BseMidiReceiver *self);
25 void bse_midi_receiver_unref (BseMidiReceiver *self);
26 void bse_midi_receiver_push_event (BseMidiReceiver *self,
27  BseMidiEvent *event);
28 void bse_midi_receiver_process_events (BseMidiReceiver *self,
29  guint64 max_tick_stamp);
30 BseModule* bse_midi_receiver_retrieve_control_module (BseMidiReceiver *self,
31  guint midi_channel,
32  Bse::MidiSignal signals[BSE_MIDI_CONTROL_MODULE_N_CHANNELS],
33  BseTrans *trans);
34 void bse_midi_receiver_discard_control_module (BseMidiReceiver *self,
35  BseModule *cmodule,
36  BseTrans *trans);
37 gboolean bse_midi_receiver_add_control_handler (BseMidiReceiver *self,
38  guint midi_channel,
39  Bse::MidiSignal signal_type,
40  BseMidiControlHandler handler_func,
41  gpointer handler_data,
42  BseModule *module);
43 void bse_midi_receiver_set_control_handler_data(BseMidiReceiver *self,
44  guint midi_channel,
45  Bse::MidiSignal signal_type,
46  BseMidiControlHandler handler_func,
47  gpointer handler_data,
48  gpointer extra_data,
49  BseFreeFunc extra_free); /* UserThread */
50 void bse_midi_receiver_remove_control_handler (BseMidiReceiver *self,
51  guint midi_channel,
52  Bse::MidiSignal signal_type,
53  BseMidiControlHandler handler_func,
54  gpointer handler_data,
55  BseModule *module);
56 BseModule* bse_midi_receiver_retrieve_mono_voice (BseMidiReceiver *self,
57  guint midi_channel,
58  BseTrans *trans);
59 void bse_midi_receiver_discard_mono_voice (BseMidiReceiver *self,
60  guint midi_channel,
61  BseModule *fmodule,
62  BseTrans *trans);
63 void bse_midi_receiver_channel_enable_poly (BseMidiReceiver *self,
64  guint midi_channel);
65 void bse_midi_receiver_channel_disable_poly (BseMidiReceiver *self,
66  guint midi_channel);
67 guint bse_midi_receiver_create_poly_voice (BseMidiReceiver *self,
68  guint midi_channel,
69  BseTrans *trans);
70 void bse_midi_receiver_discard_poly_voice (BseMidiReceiver *self,
71  guint midi_channel,
72  guint voice_id,
73  BseTrans *trans);
74 BseModule* bse_midi_receiver_get_poly_voice_input (BseMidiReceiver *self,
75  guint midi_channel,
76  guint voice_id);
77 BseModule* bse_midi_receiver_get_poly_voice_output (BseMidiReceiver *self,
78  guint midi_channel,
79  guint voice_id);
80 BseModule* bse_midi_receiver_create_sub_voice (BseMidiReceiver *self,
81  guint midi_channel,
82  guint voice_id,
83  BseTrans *trans);
84 void bse_midi_receiver_discard_sub_voice (BseMidiReceiver *self,
85  guint midi_channel,
86  guint voice_id,
87  BseModule *fmodule,
88  BseTrans *trans);
89 void bse_midi_receiver_set_notifier (BseMidiReceiver *self,
90  BseMidiNotifier *notifier);
91 gboolean bse_midi_receiver_has_notify_events (BseMidiReceiver *self);
92 SfiRing* bse_midi_receiver_fetch_notify_events (BseMidiReceiver *self);
93 gboolean bse_midi_receiver_voices_pending (BseMidiReceiver *self,
94  guint midi_channel);
95 void bse_midi_receiver_enter_farm (BseMidiReceiver *self);
96 void bse_midi_receiver_farm_distribute_event (BseMidiEvent *event);
97 void bse_midi_receiver_farm_process_events (guint64 max_tick_stamp);
98 void bse_midi_receiver_leave_farm (BseMidiReceiver *self);
99 
100 G_END_DECLS
101 
102 #endif /* __BSE_MIDI_RECEIVER_H__ */
Definition: sfiring.hh:23
Definition: bsemidinotifier.hh:19
Definition: bsemidievent.hh:74