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