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_MIDI_RECEIVER_H__ 00003 #define __BSE_MIDI_RECEIVER_H__ 00004 00005 #include <bse/bseobject.hh> 00006 #include <bse/bsemidievent.hh> 00007 00008 G_BEGIN_DECLS 00009 00010 00011 /* --- API --- */ 00012 #define BSE_MIDI_CONTROL_MODULE_N_CHANNELS (4) 00013 #define BSE_MIDI_VOICE_MODULE_N_CHANNELS (4) 00014 #define BSE_MIDI_VOICE_N_CHANNELS (3) 00015 typedef void (*BseMidiControlHandler) (gpointer handler_data, 00016 guint64 tick_stamp, 00017 BseMidiSignalType signal_type, 00018 gfloat control_value, 00019 guint n_modules, 00020 BseModule *const *modules, 00021 gpointer user_data, 00022 BseTrans *trans); 00023 BseMidiReceiver* bse_midi_receiver_new (const gchar *receiver_name); 00024 BseMidiReceiver* bse_midi_receiver_ref (BseMidiReceiver *self); 00025 void bse_midi_receiver_unref (BseMidiReceiver *self); 00026 void bse_midi_receiver_push_event (BseMidiReceiver *self, 00027 BseMidiEvent *event); 00028 void bse_midi_receiver_process_events (BseMidiReceiver *self, 00029 guint64 max_tick_stamp); 00030 BseModule* bse_midi_receiver_retrieve_control_module (BseMidiReceiver *self, 00031 guint midi_channel, 00032 BseMidiSignalType signals[BSE_MIDI_CONTROL_MODULE_N_CHANNELS], 00033 BseTrans *trans); 00034 void bse_midi_receiver_discard_control_module (BseMidiReceiver *self, 00035 BseModule *cmodule, 00036 BseTrans *trans); 00037 gboolean bse_midi_receiver_add_control_handler (BseMidiReceiver *self, 00038 guint midi_channel, 00039 BseMidiSignalType signal_type, 00040 BseMidiControlHandler handler_func, 00041 gpointer handler_data, 00042 BseModule *module); 00043 void bse_midi_receiver_set_control_handler_data(BseMidiReceiver *self, 00044 guint midi_channel, 00045 BseMidiSignalType signal_type, 00046 BseMidiControlHandler handler_func, 00047 gpointer handler_data, 00048 gpointer extra_data, 00049 BseFreeFunc extra_free); /* UserThread */ 00050 void bse_midi_receiver_remove_control_handler (BseMidiReceiver *self, 00051 guint midi_channel, 00052 BseMidiSignalType signal_type, 00053 BseMidiControlHandler handler_func, 00054 gpointer handler_data, 00055 BseModule *module); 00056 BseModule* bse_midi_receiver_retrieve_mono_voice (BseMidiReceiver *self, 00057 guint midi_channel, 00058 BseTrans *trans); 00059 void bse_midi_receiver_discard_mono_voice (BseMidiReceiver *self, 00060 guint midi_channel, 00061 BseModule *fmodule, 00062 BseTrans *trans); 00063 void bse_midi_receiver_channel_enable_poly (BseMidiReceiver *self, 00064 guint midi_channel); 00065 void bse_midi_receiver_channel_disable_poly (BseMidiReceiver *self, 00066 guint midi_channel); 00067 guint bse_midi_receiver_create_poly_voice (BseMidiReceiver *self, 00068 guint midi_channel, 00069 BseTrans *trans); 00070 void bse_midi_receiver_discard_poly_voice (BseMidiReceiver *self, 00071 guint midi_channel, 00072 guint voice_id, 00073 BseTrans *trans); 00074 BseModule* bse_midi_receiver_get_poly_voice_input (BseMidiReceiver *self, 00075 guint midi_channel, 00076 guint voice_id); 00077 BseModule* bse_midi_receiver_get_poly_voice_output (BseMidiReceiver *self, 00078 guint midi_channel, 00079 guint voice_id); 00080 BseModule* bse_midi_receiver_create_sub_voice (BseMidiReceiver *self, 00081 guint midi_channel, 00082 guint voice_id, 00083 BseTrans *trans); 00084 void bse_midi_receiver_discard_sub_voice (BseMidiReceiver *self, 00085 guint midi_channel, 00086 guint voice_id, 00087 BseModule *fmodule, 00088 BseTrans *trans); 00089 void bse_midi_receiver_set_notifier (BseMidiReceiver *self, 00090 BseMidiNotifier *notifier); 00091 gboolean bse_midi_receiver_has_notify_events (BseMidiReceiver *self); 00092 SfiRing* bse_midi_receiver_fetch_notify_events (BseMidiReceiver *self); 00093 gboolean bse_midi_receiver_voices_pending (BseMidiReceiver *self, 00094 guint midi_channel); 00095 void bse_midi_receiver_enter_farm (BseMidiReceiver *self); 00096 void bse_midi_receiver_farm_distribute_event (BseMidiEvent *event); 00097 void bse_midi_receiver_farm_process_events (guint64 max_tick_stamp); 00098 void bse_midi_receiver_leave_farm (BseMidiReceiver *self); 00099 00100 G_END_DECLS 00101 00102 #endif /* __BSE_MIDI_RECEIVER_H__ */