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_SERVER_H__ 00003 #define __BSE_SERVER_H__ 00004 #include <bse/bsesuper.hh> 00005 #include <bse/bsepcmdevice.hh> 00006 #include <bse/bsemididevice.hh> 00007 #include <bse/testobject.hh> 00008 00009 G_BEGIN_DECLS 00010 00011 /* --- BSE type macros --- */ 00012 #define BSE_TYPE_SERVER (BSE_TYPE_ID (BseServer)) 00013 #define BSE_SERVER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_SERVER, BseServer)) 00014 #define BSE_SERVER_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_SERVER, BseServerClass)) 00015 #define BSE_IS_SERVER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_SERVER)) 00016 #define BSE_IS_SERVER_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_SERVER)) 00017 #define BSE_SERVER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_SERVER, BseServerClass)) 00018 00019 struct BseServer : BseContainer { 00020 GSource *engine_source; 00021 GList *projects; 00022 GSList *children; 00023 gchar *wave_file; 00024 double wave_seconds; 00025 guint dev_use_count; 00026 guint log_messages : 1; 00027 guint pcm_input_checked : 1; 00028 BsePcmDevice *pcm_device; 00029 BseModule *pcm_imodule; 00030 BseModule *pcm_omodule; 00031 BsePcmWriter *pcm_writer; 00032 BseMidiDevice *midi_device; 00033 GSList *watch_list; 00034 }; 00035 struct BseServerClass : BseContainerClass 00036 {}; 00037 00038 BseServer* bse_server_get (void); 00039 BseProject* bse_server_create_project (BseServer *server, 00040 const gchar *name); 00041 BseProject* bse_server_find_project (BseServer *server, 00042 const gchar *name); 00043 void bse_server_stop_recording (BseServer *server); 00044 void bse_server_start_recording (BseServer *server, 00045 const char *wave_file, 00046 double n_seconds); 00047 BseErrorType bse_server_open_devices (BseServer *server); 00048 void bse_server_close_devices (BseServer *server); 00049 BseModule* bse_server_retrieve_pcm_output_module (BseServer *server, 00050 BseSource *source, 00051 const gchar *uplink_name); 00052 void bse_server_discard_pcm_output_module (BseServer *server, 00053 BseModule *module); 00054 BseModule* bse_server_retrieve_pcm_input_module (BseServer *server, 00055 BseSource *source, 00056 const gchar *uplink_name); 00057 void bse_server_discard_pcm_input_module (BseServer *server, 00058 BseModule *module); 00059 void bse_server_require_pcm_input (BseServer *server); 00060 BseModule* bse_server_retrieve_midi_input_module (BseServer *server, 00061 const gchar *downlink_name, 00062 guint midi_channel_id, 00063 guint nth_note, 00064 guint signals[4]); 00065 void bse_server_discard_midi_input_module (BseServer *server, 00066 BseModule *module); 00067 void bse_server_add_io_watch (BseServer *server, 00068 gint fd, 00069 GIOCondition events, 00070 BseIOWatch watch_func, 00071 gpointer data); 00072 void bse_server_remove_io_watch (BseServer *server, 00073 BseIOWatch watch_func, 00074 gpointer data); 00075 00076 /* --- internal --- */ 00077 void bse_server_registration (BseServer *server, 00078 BseRegistrationType rtype, 00079 const gchar *what, 00080 const gchar *error); 00081 void bse_server_script_start (BseServer *server, 00082 BseJanitor *janitor); 00083 void bse_server_script_error (BseServer *server, 00084 const gchar *script_name, 00085 const gchar *proc_name, 00086 const gchar *reason); 00087 BseErrorType bse_server_run_remote (BseServer *server, 00088 const gchar *process_name, 00089 SfiRing *params, 00090 const gchar *script_name, 00091 const gchar *proc_name, 00092 BseJanitor **janitor_p); 00093 void bse_server_queue_kill_wire (BseServer *server, 00094 SfiComWire *wire); 00095 void bse_server_notify_gconfig (BseServer *server); 00096 G_END_DECLS 00097 00098 00099 namespace Bse { 00100 00101 class ServerImpl : public ServerIface { 00102 TestObjectImplP test_object_; 00103 protected: 00104 explicit ServerImpl (); 00105 virtual ~ServerImpl (); 00106 public: 00107 virtual TestObjectIface* get_test_object (); 00108 static ServerImpl& instance (); 00109 void send_user_message (const UserMessage &umsg); 00110 }; 00111 00112 } // Bse 00113 00114 #endif /* __BSE_SERVER_H__ */