BEAST - Free Software Audio Synthesizer and Tracker  0.10.0
bseserver.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_SERVER_H__
3 #define __BSE_SERVER_H__
4 #include <bse/bsesuper.hh>
5 #include <bse/bsepcmdevice.hh>
6 #include <bse/bsemididevice.hh>
7 #include <bse/testobject.hh>
8 
9 G_BEGIN_DECLS
10 
11 /* --- BSE type macros --- */
12 #define BSE_TYPE_SERVER (BSE_TYPE_ID (BseServer))
13 #define BSE_SERVER_CAST(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), BSE_TYPE_SERVER, BseServer))
14 #define BSE_SERVER_CLASS(class) (G_TYPE_CHECK_CLASS_CAST ((class), BSE_TYPE_SERVER, BseServerClass))
15 #define BSE_IS_SERVER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), BSE_TYPE_SERVER))
16 #define BSE_IS_SERVER_CLASS(class) (G_TYPE_CHECK_CLASS_TYPE ((class), BSE_TYPE_SERVER))
17 #define BSE_SERVER_GET_CLASS(object) (G_TYPE_INSTANCE_GET_CLASS ((object), BSE_TYPE_SERVER, BseServerClass))
18 
20  GSource *engine_source;
21  GList *projects;
22  GSList *children;
23  gchar *wave_file;
24  double wave_seconds;
25  guint dev_use_count;
26  guint log_messages : 1;
27  guint pcm_input_checked : 1;
28  BsePcmDevice *pcm_device;
29  BseModule *pcm_imodule;
30  BseModule *pcm_omodule;
31  BsePcmWriter *pcm_writer;
32  BseMidiDevice *midi_device;
33  GSList *watch_list;
34 };
36 {};
37 
39 BseProject* bse_server_find_project (BseServer *server,
40  const gchar *name);
41 void bse_server_stop_recording (BseServer *server);
42 void bse_server_start_recording (BseServer *server,
43  const char *wave_file,
44  double n_seconds);
45 Bse::Error bse_server_open_devices (BseServer *server);
46 void bse_server_close_devices (BseServer *server);
47 BseModule* bse_server_retrieve_pcm_output_module (BseServer *server,
48  BseSource *source,
49  const gchar *uplink_name);
50 void bse_server_discard_pcm_output_module (BseServer *server,
51  BseModule *module);
52 BseModule* bse_server_retrieve_pcm_input_module (BseServer *server,
53  BseSource *source,
54  const gchar *uplink_name);
55 void bse_server_discard_pcm_input_module (BseServer *server,
56  BseModule *module);
57 void bse_server_require_pcm_input (BseServer *server);
58 BseModule* bse_server_retrieve_midi_input_module (BseServer *server,
59  const gchar *downlink_name,
60  guint midi_channel_id,
61  guint nth_note,
62  guint signals[4]);
63 void bse_server_discard_midi_input_module (BseServer *server,
64  BseModule *module);
65 void bse_server_add_io_watch (BseServer *server,
66  gint fd,
67  GIOCondition events,
68  BseIOWatch watch_func,
69  gpointer data);
70 void bse_server_remove_io_watch (BseServer *server,
71  BseIOWatch watch_func,
72  gpointer data);
73 
74 /* --- internal --- */
75 void bse_server_registration (BseServer *server,
76  BseRegistrationType rtype,
77  const gchar *what,
78  const gchar *error);
80  BseJanitor *janitor);
82  const gchar *script_name,
83  const gchar *proc_name,
84  const gchar *reason);
85 Bse::Error bse_server_run_remote (BseServer *server,
86  const gchar *process_name,
87  SfiRing *params,
88  const gchar *script_name,
89  const gchar *proc_name,
90  BseJanitor **janitor_p);
91 void bse_server_queue_kill_wire (BseServer *server,
92  SfiComWire *wire);
93 void bse_server_notify_gconfig (BseServer *server);
94 G_END_DECLS
95 
96 
97 #define BSE_SERVER (Bse::ServerImpl::instance())
98 
99 namespace Bse {
100 
101 class ServerImpl : public virtual ServerIface, public virtual ObjectImpl {
102  TestObjectImplP test_object_;
103 protected:
104  virtual ~ServerImpl ();
105 public:
106  explicit ServerImpl (BseObject*);
107  virtual TestObjectIfaceP get_test_object () override;
108  virtual ObjectIfaceP from_proxy (int64_t proxyid) override;
109  virtual String get_mp3_version () override;
110  virtual String get_vorbis_version () override;
111  virtual String get_ladspa_path () override;
112  virtual String get_plugin_path () override;
113  virtual String get_script_path () override;
114  virtual String get_instrument_path () override;
115  virtual String get_sample_path () override;
116  virtual String get_effect_path () override;
117  virtual String get_demo_path () override;
118  virtual String get_version () override;
119  virtual String get_custom_effect_dir () override;
120  virtual String get_custom_instrument_dir () override;
121  virtual void save_preferences () override;
122  virtual void register_ladspa_plugins () override;
123  virtual void register_core_plugins () override;
124  virtual void start_recording (const String &wave_file, double n_seconds) override;
125  virtual void register_scripts () override;
126  virtual bool preferences_locked () override;
127  virtual int n_scripts () override;
128  virtual bool can_load (const String &file_name) override;
129  virtual ProjectIfaceP create_project (const String &project_name) override;
130  virtual void destroy_project (ProjectIface &project) override;
131  virtual AuxDataSeq list_module_types () override;
132  virtual AuxData find_module_type (const String &module_type) override;
133  virtual Icon module_type_icon (const String &module_type) override;
134  virtual SampleFileInfo sample_file_info (const String &filename) override;
135  virtual NoteDescription note_describe_from_freq (MusicalTuning musical_tuning, double freq) override;
136  virtual NoteDescription note_describe (MusicalTuning musical_tuning, int note, int fine_tune) override;
137  virtual NoteDescription note_construct (MusicalTuning musical_tuning, int semitone, int octave, int fine_tune) override;
138  virtual NoteDescription note_from_string (MusicalTuning musical_tuning, const String &name) override;
139  virtual int note_from_freq (MusicalTuning musical_tuning, double frequency) override;
140  virtual double note_to_freq (MusicalTuning musical_tuning, int note, int fine_tune) override;
141  void send_user_message (const UserMessage &umsg);
142  static void register_source_module (const String &type, const String &title, const String &tags, const uint8 *pixstream);
143  static ServerImpl& instance ();
144 };
145 
146 } // Bse
147 
148 #endif /* __BSE_SERVER_H__ */
virtual Icon module_type_icon(const String &module_type) override
See Server::module_type_icon()
Definition: bseserver.cc:1542
virtual AuxData find_module_type(const String &module_type) override
See Server::find_module_type()
Definition: bseserver.cc:1533
virtual String get_custom_effect_dir() override
See Server::get_custom_effect_dir()
Definition: bseserver.cc:1207
See also the corresponding IDL class Project.
Definition: bseserverapi.hh:1482
virtual NoteDescription note_describe(MusicalTuning musical_tuning, int note, int fine_tune) override
See Server::note_describe()
Definition: bseserver.cc:1582
virtual void start_recording(const String &wave_file, double n_seconds) override
See Server::start_recording()
Definition: bseserver.cc:1333
Definition: bsecontainer.hh:26
The Bse namespace contains all functions of the synthesis engine.
Definition: bstbseutils.cc:88
virtual SampleFileInfo sample_file_info(const String &filename) override
See Server::sample_file_info()
Definition: bseserver.cc:1551
typedef int64_t
Representation of an icon pixel image.
Definition: bseapi.idl:387
static void register_source_module(const String &type, const String &title, const String &tags, const uint8 *pixstream)
Register a synthesis module type at program startup.
Definition: bseserver.cc:1487
virtual String get_ladspa_path() override
See Server::get_ladspa_path()
Definition: bseserver.cc:1159
Definition: bsepcmdevice.hh:42
virtual String get_version() override
See Server::get_version()
Definition: bseserver.cc:1201
void bse_server_script_error(BseServer *server, const gchar *script_name, const gchar *proc_name, const gchar *reason)
Definition: bseserver.cc:728
A note description provides all needed details about a specific note. ".
Definition: bseapi.idl:442
See also the corresponding IDL class Server.
Definition: bseserverapi.hh:1563
virtual NoteDescription note_from_string(MusicalTuning musical_tuning, const String &name) override
See Server::note_from_string()
Definition: bseserver.cc:1595
virtual NoteDescription note_construct(MusicalTuning musical_tuning, int semitone, int octave, int fine_tune) override
See Server::note_construct()
Definition: bseserver.cc:1588
virtual void save_preferences() override
See Server::save_preferences()
Definition: bseserver.cc:1221
virtual ProjectIfaceP create_project(const String &project_name) override
See Server::create_project()
Definition: bseserver.cc:1445
virtual String get_custom_instrument_dir() override
See Server::get_custom_instrument_dir()
Definition: bseserver.cc:1214
Definition: bsepcmwriter.hh:19
virtual void register_core_plugins() override
See Server::register_core_plugins()
Definition: bseserver.cc:1317
virtual double note_to_freq(MusicalTuning musical_tuning, int note, int fine_tune) override
See Server::note_to_freq()
Definition: bseserver.cc:1608
virtual NoteDescription note_describe_from_freq(MusicalTuning musical_tuning, double freq) override
See Server::note_describe_from_freq()
Definition: bseserver.cc:1575
AuxData - record to describe entity attributes with "key=value" strings.
Definition: bseapi.idl:394
STL class.
virtual String get_script_path() override
See Server::get_script_path()
Definition: bseserver.cc:1171
virtual void register_scripts() override
See Server::register_scripts()
Definition: bseserver.cc:1382
virtual String get_demo_path() override
See Server::get_demo_path()
Definition: bseserver.cc:1195
virtual int note_from_freq(MusicalTuning musical_tuning, double frequency) override
See Server::note_from_freq()
Definition: bseserver.cc:1602
Definition: bseserver.hh:19
Definition: bsecontainer.hh:29
virtual String get_sample_path() override
See Server::get_sample_path()
Definition: bseserver.cc:1183
Structure containing meta data for multi wave samples.
Definition: bseapi.idl:775
Definition: bseobject.hh:61
Definition: bsejanitor.hh:19
virtual String get_vorbis_version() override
See Server::get_vorbis_version()
Definition: bseserver.cc:1153
virtual void destroy_project(ProjectIface &project) override
See Server::destroy_project()
Definition: bseserver.cc:1469
virtual int n_scripts() override
See Server::n_scripts()
Definition: bseserver.cc:1416
Definition: bsesource.hh:84
Definition: sfiring.hh:23
virtual TestObjectIfaceP get_test_object() override
See Server::get_test_object()
Definition: bseserver.cc:1117
virtual ObjectIfaceP from_proxy(int64_t proxyid) override
See Server::from_proxy()
Definition: bseserver.cc:1125
virtual void register_ladspa_plugins() override
See Server::register_ladspa_plugins()
Definition: bseserver.cc:1277
Definition: bseobject.hh:9
Definition: bseproject.hh:26
Definition: bsemididevice.hh:25
Definition: bseserver.hh:35
BseServer * bse_server_get(void)
Definition: bseserver.cc:352
void bse_server_script_start(BseServer *server, BseJanitor *janitor)
Definition: bseserver.cc:700
virtual String get_instrument_path() override
See Server::get_instrument_path()
Definition: bseserver.cc:1177
AuxDataSeq - a variable length list of AuxData records.
Definition: bseapi.idl:400
virtual AuxDataSeq list_module_types() override
See Server::list_module_types()
Definition: bseserver.cc:1525
virtual bool preferences_locked() override
See Server::preferences_locked()
Definition: bseserver.cc:1410
Structure for submission of user interface messages from BSE.
Definition: bseapi.idl:418
virtual bool can_load(const String &file_name) override
See Server::can_load()
Definition: bseserver.cc:1428
virtual String get_effect_path() override
See Server::get_effect_path()
Definition: bseserver.cc:1189
virtual String get_mp3_version() override
See Server::get_mp3_version()
Definition: bseserver.cc:1147
virtual String get_plugin_path() override
See Server::get_plugin_path()
Definition: bseserver.cc:1165
Definition: bseserver.hh:101