Guitarix
machine.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2013 Andreas Degert
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  */
18 
19 #pragma once
20 
21 #ifndef SRC_HEADERS_MACHINE_H_
22 #define SRC_HEADERS_MACHINE_H_
23 
24 #include <ext/stdio_filebuf.h>
25 #include "jsonrpc_methods.h"
26 #ifdef HAVE_AVAHI
27 #include "avahi_register.h"
28 #endif
29 
30 namespace gx_gui { class UiBuilderImpl; }
31 
32 enum PluginType {
35 };
36 
37 namespace gx_engine {
38 
40 private:
42 public:
45  bool operator!=(const bank_iterator& i) const { return i.it != it; }
46  bank_iterator& operator++() { ++it; return *this; }
49 };
50 
52 protected:
53  sigc::signal<void,const std::string&, std::vector<gx_system::FileName> > impresp_list;
54  sigc::signal<void, MidiAudioBuffer::Load> jack_load_change;
55 private:
56  virtual int _get_parameter_value_int(const std::string& id) = 0;
57  virtual int _get_parameter_value_bool(const std::string& id) = 0;
58  virtual float _get_parameter_value_float(const std::string& id) = 0;
59  virtual std::string _get_parameter_value_string(const std::string& id) = 0;
60  virtual sigc::signal<void, int>& _signal_parameter_value_int(const std::string& id) = 0;
61  virtual sigc::signal<void, bool>& _signal_parameter_value_bool(const std::string& id) = 0;
62  virtual sigc::signal<void, float>& _signal_parameter_value_float(const std::string& id) = 0;
63 protected:
64  GxMachineBase();
65 public:
66  virtual ~GxMachineBase();
67  // engine
68  virtual void set_state(GxEngineState state) = 0;
69  virtual GxEngineState get_state() = 0;
70  virtual void load_ladspalist(std::vector<std::string>& old_not_found, ladspa::LadspaPluginList& pluginlist) = 0;
71  virtual void save_ladspalist(ladspa::LadspaPluginList& pluginlist) = 0;
72  virtual void commit_ladspa_changes() = 0;
73  virtual sigc::signal<void,Plugin*,PluginChange::pc>& signal_plugin_changed() = 0;
74  virtual Plugin *pluginlist_lookup_plugin(const std::string& id) const = 0;
75  virtual bool load_unit(gx_gui::UiBuilderImpl& builder, PluginDef* pdef) = 0;
76  virtual void pluginlist_append_rack(UiBuilderBase& ui) = 0;
77  virtual float get_tuner_freq() = 0;
78  virtual void set_oscilloscope_mul_buffer(int a) = 0;
79  virtual int get_oscilloscope_mul_buffer() = 0;
80  virtual const float *get_oscilloscope_buffer() = 0;
81  virtual void clear_oscilloscope_buffer() = 0;
82  virtual bool oscilloscope_plugin_box_visible() = 0;
83  virtual sigc::signal<void, int>& signal_oscilloscope_post_pre() = 0;
84  virtual sigc::signal<void, bool>& signal_oscilloscope_visible() = 0;
85  virtual sigc::signal<int, bool>& signal_oscilloscope_activation() = 0;
86  virtual sigc::signal<void, unsigned int>& signal_oscilloscope_size_change() = 0;
87  virtual void maxlevel_get(int channels, float *values) = 0;
88  virtual void get_oscilloscope_info(int& load, int& frames, bool& is_rt, jack_nframes_t& bsize) = 0;
89  virtual gx_system::CmdlineOptions& get_options() const = 0;
90  virtual void start_socket(sigc::slot<void> quit_mainloop, const Glib::ustring& host, int port) = 0;
91  virtual void stop_socket() = 0;
92  virtual sigc::signal<void,GxEngineState>& signal_state_change() = 0;
93  sigc::signal<void,MidiAudioBuffer::Load>& signal_jack_load_change() { return jack_load_change; }
94  virtual void tuner_used_for_display(bool on) = 0;
95  virtual const std::vector<std::string>& get_rack_unit_order(PluginType type) = 0;
96  virtual sigc::signal<void,bool>& signal_rack_unit_order_changed() = 0;
97  virtual void remove_rack_unit(const std::string& unit, PluginType type) = 0;
98  virtual void insert_rack_unit(const std::string& unit, const std::string& before, PluginType type) = 0;
99  // tuner_switcher
100  virtual bool get_tuner_switcher_active() = 0;
101  virtual void tuner_switcher_activate(bool v) = 0;
102  virtual void tuner_switcher_deactivate() = 0;
103  virtual void tuner_switcher_toggle(bool v) = 0;
104  virtual sigc::signal<void,const Glib::ustring&,const Glib::ustring&>& tuner_switcher_signal_display() = 0;
105  virtual sigc::signal<void,TunerSwitcher::SwitcherState>& tuner_switcher_signal_set_state() = 0;
106  virtual sigc::signal<void, bool>& tuner_switcher_signal_selection_done() = 0;
107  // preset
108  virtual bool setting_is_preset() = 0;
109  virtual const Glib::ustring& get_current_bank() = 0;
110  virtual gx_system::PresetFileGui *get_current_bank_file() = 0;
111  virtual const Glib::ustring& get_current_name() = 0;
112  virtual gx_system::PresetFileGui* get_bank_file(const Glib::ustring& bank) const = 0;
113  virtual Glib::ustring get_bank_name(int n) = 0;
114  virtual void load_preset(gx_system::PresetFileGui *pf, const Glib::ustring& name) = 0;
115  virtual void load_online_presets() = 0;
116  virtual void msend_midi_cc(int cc, int pgn, int bgn, int num) = 0;
117  virtual void loadstate() = 0;
118  virtual int bank_size() = 0;
119  virtual int get_bank_index(const Glib::ustring& bank) = 0;
120  virtual void create_default_scratch_preset() = 0;
121  virtual void set_statefilename(const std::string& fn) = 0;
122  virtual void save_to_state(bool preserve_preset=false) = 0;
123  virtual void plugin_preset_list_load(const PluginDef *pdef, gx_preset::UnitPresetList &presetnames) = 0;
124  virtual void plugin_preset_list_set(const PluginDef *pdef, bool factory, const Glib::ustring& name) = 0;
125  virtual void plugin_preset_list_sync_set(const PluginDef *pdef, bool factory, const Glib::ustring& name) = 0;
126  virtual void plugin_preset_list_set_on_idle(const PluginDef *pdef, bool factory, const Glib::ustring& name) = 0;
127  virtual void plugin_preset_list_save(const PluginDef *pdef, const Glib::ustring& name) = 0;
128  virtual void plugin_preset_list_remove(const PluginDef *pdef, const Glib::ustring& name) = 0;
129  virtual void disable_autosave(bool v) = 0;
130  virtual sigc::signal<void>& signal_selection_changed() = 0;
131  virtual sigc::signal<void>& signal_presetlist_changed() = 0;
132  virtual gx_system::PresetFileGui *bank_insert_uri(const Glib::ustring& uri, bool move) = 0;
133  virtual gx_system::PresetFileGui *bank_insert_new(const Glib::ustring& newname) = 0;
134  virtual bool rename_bank(const Glib::ustring& oldname, Glib::ustring& newname) = 0;
135  virtual bool rename_preset(gx_system::PresetFileGui& pf, const Glib::ustring& oldname, const Glib::ustring& newname) = 0;
136  virtual void bank_reorder(const std::vector<Glib::ustring>& neworder) = 0;
137  virtual void reorder_preset(gx_system::PresetFileGui& pf, const std::vector<Glib::ustring>& neworder) = 0;
138  virtual bool bank_check_reparse() = 0;
139  virtual void erase_preset(gx_system::PresetFileGui& pf, const Glib::ustring& name) = 0;
140  virtual void bank_set_flag(gx_system::PresetFileGui *pf, int flag, bool v) = 0;
141  virtual std::string bank_get_filename(const Glib::ustring& bank) = 0;
142  virtual void bank_drag_begin() = 0;
143  virtual gx_system::PresetFileGui *bank_get_file(const Glib::ustring& bank) const = 0;
144  virtual bank_iterator bank_begin() = 0;
145  virtual bank_iterator bank_end() = 0;
146  virtual void pf_append(gx_system::PresetFileGui& pf, const Glib::ustring& src, gx_system::PresetFileGui& pftgt, const Glib::ustring& name) = 0;
147  virtual void pf_insert_before(gx_system::PresetFileGui& pf, const Glib::ustring& src, gx_system::PresetFileGui& pftgt, const Glib::ustring& pos, const Glib::ustring& name) = 0;
148  virtual void pf_insert_after(gx_system::PresetFileGui& pf, const Glib::ustring& src, gx_system::PresetFileGui& pftgt, const Glib::ustring& pos, const Glib::ustring& name) = 0;
149  virtual bool convert_preset(gx_system::PresetFileGui& pf) = 0;
150  virtual bool bank_remove(const Glib::ustring& bank) = 0;
151  virtual void bank_save() = 0;
152  virtual void pf_save(gx_system::PresetFileGui& pf, const Glib::ustring& name) = 0;
153 
154  // jack
155  virtual gx_jack::GxJack *get_jack() = 0;
156  virtual void set_jack_insert(bool v) = 0;
157  // pmap
158  virtual Parameter& get_parameter(const std::string& id) = 0;
159  virtual void insert_param(Glib::ustring group, Glib::ustring name) = 0;
160  virtual void set_init_values() = 0;
161  virtual bool parameter_hasId(const char *p) = 0;
162  virtual bool parameter_hasId(const std::string& id) = 0;
163  virtual void reset_unit(const PluginDef *pdef) const = 0;
164  virtual bool parameter_unit_has_std_values(const PluginDef *pdef) const = 0;
165  virtual void set_parameter_value(const std::string& id, int value) = 0;
166  virtual void set_parameter_value(const std::string& id, float value) = 0;
167  virtual void set_parameter_value(const std::string& id, bool value) = 0;
168  virtual void set_parameter_value(const std::string& id, const std::string& value) = 0;
169  void set_parameter_value(const std::string& id, double value) { set_parameter_value(id, (float)value); }
170  template <class T> T get_parameter_value (const std::string& id);
171  template <class T> sigc::signal<void, T>& signal_parameter_value(const std::string& id);
172  // MidiControllerList
173  virtual bool midi_get_config_mode(int *ctl = 0) = 0;
174  virtual void midi_set_config_mode(bool v, int ctl=-1) = 0;
175  virtual sigc::signal<void>& signal_midi_changed() = 0;
176  virtual sigc::signal<void, int, int>& signal_midi_value_changed() = 0;
177  virtual void request_midi_value_update() = 0;
178  virtual int midi_size() = 0;
179  virtual midi_controller_list& midi_get(int n) = 0;
180  virtual void midi_deleteParameter(Parameter& param) = 0;
181  virtual void midi_set_current_control(int v) = 0;
182  virtual void midi_modifyCurrent(Parameter& param, float lower, float upper, bool toggle, int toggle_behaviour) = 0;
183  virtual int midi_param2controller(Parameter& param, const MidiController** p) = 0;
184  // Convolver
185  virtual void reload_impresp_list(const std::string& path) = 0;
186  sigc::signal<void,const std::string&, std::vector<gx_system::FileName> >& signal_impresp_list() {
187  return impresp_list;
188  }
189  virtual void load_impresp_dirs(std::vector<gx_system::FileName>& dirs) = 0;
190  virtual bool read_audio(const std::string& filename, unsigned int *audio_size, int *audio_chan,
191  int *audio_type, int *audio_form, int *audio_rate, float **buffer) = 0;
192 };
193 
194 template <> inline float GxMachineBase::get_parameter_value(const std::string& id) {
195  return _get_parameter_value_float(id);
196 }
197 
198 template <> inline int GxMachineBase::get_parameter_value(const std::string& id) {
199  return _get_parameter_value_int(id);
200 }
201 
202 template <> inline bool GxMachineBase::get_parameter_value(const std::string& id) {
203  return _get_parameter_value_bool(id);
204 }
205 
206 template <> inline std::string GxMachineBase::get_parameter_value(const std::string& id) {
207  return _get_parameter_value_string(id);
208 }
209 
210 template <> inline sigc::signal<void, float>& GxMachineBase::signal_parameter_value(const std::string& id) {
211  return _signal_parameter_value_float(id);
212 }
213 
214 template <> inline sigc::signal<void, int>& GxMachineBase::signal_parameter_value(const std::string& id) {
215  return _signal_parameter_value_int(id);
216 }
217 
218 template <> inline sigc::signal<void, bool>& GxMachineBase::signal_parameter_value(const std::string& id) {
219  return _signal_parameter_value_bool(id);
220 }
221 
222 class GxMachine: public GxMachineBase {
223 private:
224  gx_system::CmdlineOptions& options;
225  GxEngine engine;
226  gx_jack::GxJack jack;
227  gx_preset::GxSettings settings;
228  TunerSwitcher tuner_switcher;
229  GxService *sock;
230 #ifdef HAVE_AVAHI
231  AvahiService *avahi_service;
232 #endif
233  ParamMap& pmap;
234  Glib::ustring switch_bank;
235 private:
236  void reset_switch_bank();
237  int get_bank_num(Glib::ustring num);
238  void set_mute_state(int mute);
239  void do_program_change(int pgm);
240  void do_bank_change(int pgm);
241  void edge_toggle_tuner(bool v);
242  void on_impresp(const std::string& path);
243  void exit_handler(bool otherthread);
244  void on_jack_load_change();
245  virtual int _get_parameter_value_int(const std::string& id);
246  virtual int _get_parameter_value_bool(const std::string& id);
247  virtual float _get_parameter_value_float(const std::string& id);
248  virtual std::string _get_parameter_value_string(const std::string& id);
249  virtual sigc::signal<void, int>& _signal_parameter_value_int(const std::string& id);
250  virtual sigc::signal<void, bool>& _signal_parameter_value_bool(const std::string& id);
251  virtual sigc::signal<void, float>& _signal_parameter_value_float(const std::string& id);
252 public:
254  virtual ~GxMachine();
255  virtual void set_state(GxEngineState state);
256  virtual GxEngineState get_state();
257  virtual void load_ladspalist(std::vector<std::string>& old_not_found, ladspa::LadspaPluginList& pluginlist);
258  virtual void save_ladspalist(ladspa::LadspaPluginList& pluginlist);
259  virtual void commit_ladspa_changes();
260  virtual sigc::signal<void,Plugin*,PluginChange::pc>& signal_plugin_changed();
261  virtual Plugin *pluginlist_lookup_plugin(const std::string& id) const;
262  virtual bool load_unit(gx_gui::UiBuilderImpl& builder, PluginDef* pdef);
263  virtual void pluginlist_append_rack(UiBuilderBase& ui);
264  virtual float get_tuner_freq();
265  virtual void set_oscilloscope_mul_buffer(int a);
266  virtual int get_oscilloscope_mul_buffer();
267  virtual const float *get_oscilloscope_buffer();
268  virtual void clear_oscilloscope_buffer();
269  virtual bool oscilloscope_plugin_box_visible();
270  virtual sigc::signal<void, int>& signal_oscilloscope_post_pre();
271  virtual sigc::signal<void, bool>& signal_oscilloscope_visible();
272  virtual sigc::signal<int, bool>& signal_oscilloscope_activation();
273  virtual sigc::signal<void, unsigned int>& signal_oscilloscope_size_change();
274  virtual void maxlevel_get(int channels, float *values);
275  virtual void get_oscilloscope_info(int& load, int& frames, bool& is_rt, jack_nframes_t& bsize);
276  virtual gx_system::CmdlineOptions& get_options() const;
277  virtual void start_socket(sigc::slot<void> quit_mainloop, const Glib::ustring& host, int port);
278  virtual void stop_socket();
279  virtual sigc::signal<void,GxEngineState>& signal_state_change();
280  virtual void tuner_used_for_display(bool on);
281  virtual const std::vector<std::string>& get_rack_unit_order(PluginType type);
282  virtual sigc::signal<void,bool>& signal_rack_unit_order_changed();
283  virtual void remove_rack_unit(const std::string& unit, PluginType type);
284  virtual void insert_rack_unit(const std::string& unit, const std::string& before, PluginType type);
285  // tuner_switcher
286  virtual bool get_tuner_switcher_active();
287  virtual void tuner_switcher_activate(bool v);
288  virtual void tuner_switcher_deactivate();
289  virtual void tuner_switcher_toggle(bool v);
290  virtual sigc::signal<void,const Glib::ustring&,const Glib::ustring&>& tuner_switcher_signal_display();
291  virtual sigc::signal<void,TunerSwitcher::SwitcherState>& tuner_switcher_signal_set_state();
292  virtual sigc::signal<void, bool>& tuner_switcher_signal_selection_done();
293  // preset
294  virtual bool setting_is_preset();
295  virtual const Glib::ustring& get_current_bank();
296  virtual gx_system::PresetFileGui *get_current_bank_file();
297  virtual const Glib::ustring& get_current_name();
298  virtual gx_system::PresetFileGui* get_bank_file(const Glib::ustring& bank) const;
299  virtual Glib::ustring get_bank_name(int n);
300  virtual void load_preset(gx_system::PresetFileGui *pf, const Glib::ustring& name);
301  virtual void load_online_presets() ;
302  virtual void msend_midi_cc(int cc, int pgn, int bgn, int num);
303  virtual void loadstate();
304  virtual int bank_size();
305  virtual int get_bank_index(const Glib::ustring& bank);
306  virtual void create_default_scratch_preset();
307  virtual void set_statefilename(const std::string& fn);
308  virtual void save_to_state(bool preserve_preset=false);
309  virtual void plugin_preset_list_load(const PluginDef *pdef, gx_preset::UnitPresetList &presetnames);
310  virtual void plugin_preset_list_set(const PluginDef *pdef, bool factory, const Glib::ustring& name);
311  virtual void plugin_preset_list_sync_set(const PluginDef *pdef, bool factory, const Glib::ustring& name);
312  virtual void plugin_preset_list_set_on_idle(const PluginDef *pdef, bool factory, const Glib::ustring& name);
313  virtual void plugin_preset_list_save(const PluginDef *pdef, const Glib::ustring& name);
314  virtual void plugin_preset_list_remove(const PluginDef *pdef, const Glib::ustring& name);
315  virtual void disable_autosave(bool v);
316  virtual sigc::signal<void>& signal_selection_changed();
317  virtual sigc::signal<void>& signal_presetlist_changed();
318  virtual gx_system::PresetFileGui *bank_insert_uri(const Glib::ustring& uri, bool move);
319  virtual gx_system::PresetFileGui *bank_insert_new(const Glib::ustring& newname);
320  virtual bool rename_bank(const Glib::ustring& oldname, Glib::ustring& newname);
321  virtual bool rename_preset(gx_system::PresetFileGui& pf, const Glib::ustring& oldname, const Glib::ustring& newname);
322  virtual void bank_reorder(const std::vector<Glib::ustring>& neworder);
323  virtual void reorder_preset(gx_system::PresetFileGui& pf, const std::vector<Glib::ustring>& neworder);
324  virtual bool bank_check_reparse();
325  virtual void erase_preset(gx_system::PresetFileGui& pf, const Glib::ustring& name);
326  virtual void bank_set_flag(gx_system::PresetFileGui *pf, int flag, bool v);
327  virtual std::string bank_get_filename(const Glib::ustring& bank);
328  virtual void bank_drag_begin();
329  virtual gx_system::PresetFileGui *bank_get_file(const Glib::ustring& bank) const;
330  virtual bank_iterator bank_begin();
331  virtual bank_iterator bank_end();
332  virtual void pf_append(gx_system::PresetFileGui& pf, const Glib::ustring& src, gx_system::PresetFileGui& pftgt, const Glib::ustring& name);
333  virtual void pf_insert_before(gx_system::PresetFileGui& pf, const Glib::ustring& src, gx_system::PresetFileGui& pftgt, const Glib::ustring& pos, const Glib::ustring& name);
334  virtual void pf_insert_after(gx_system::PresetFileGui& pf, const Glib::ustring& src, gx_system::PresetFileGui& pftgt, const Glib::ustring& pos, const Glib::ustring& name);
335  virtual bool convert_preset(gx_system::PresetFileGui& pf);
336  virtual bool bank_remove(const Glib::ustring& bank);
337  virtual void bank_save();
338  virtual void pf_save(gx_system::PresetFileGui& pf, const Glib::ustring& name);
339 
340  // jack
341  virtual gx_jack::GxJack *get_jack();
342  virtual void set_jack_insert(bool v);
343  // pmap
344  virtual Parameter& get_parameter(const char *p);
345  virtual Parameter& get_parameter(const std::string& id);
346  virtual void insert_param(Glib::ustring group, Glib::ustring name);
347  virtual void set_init_values();
348  virtual bool parameter_hasId(const char *p);
349  virtual bool parameter_hasId(const std::string& id);
350  virtual void reset_unit(const PluginDef *pdef) const;
351  virtual bool parameter_unit_has_std_values(const PluginDef *pdef) const;
352  virtual void set_parameter_value(const std::string& id, int value);
353  virtual void set_parameter_value(const std::string& id, bool value);
354  virtual void set_parameter_value(const std::string& id, float value);
355  virtual void set_parameter_value(const std::string& id, const std::string& value);
356  // bool ui_f_update(const std::string& id, float value);
357  // MidiControllerList
358  virtual bool midi_get_config_mode(int *ctl = 0);
359  virtual void midi_set_config_mode(bool v, int ctl=-1);
360  virtual sigc::signal<void>& signal_midi_changed();
361  virtual sigc::signal<void, int, int>& signal_midi_value_changed();
362  virtual void request_midi_value_update();
363  virtual int midi_size();
364  virtual midi_controller_list& midi_get(int n);
365  virtual void midi_deleteParameter(Parameter& param);
366  virtual void midi_set_current_control(int v);
367  virtual void midi_modifyCurrent(Parameter& param, float lower, float upper, bool toggle, int toggle_behaviour);
368  virtual int midi_param2controller(Parameter& param, const MidiController** p);
369  // Convolver
370  virtual void reload_impresp_list(const std::string& path);
371  virtual void load_impresp_dirs(std::vector<gx_system::FileName>& dirs);
372  virtual bool read_audio(const std::string& filename, unsigned int *audio_size, int *audio_chan,
373  int *audio_type, int *audio_form, int *audio_rate, float **buffer);
374 };
375 
377 private:
378  gx_system::CmdlineOptions& options;
379  ParamMap pmap;
380  PluginListBase pluginlist;
382  sigc::signal<void,GxEngineState> engine_state_change;
383  sigc::signal<void> selection_changed;
384  sigc::signal<void> presetlist_changed;
385  Glib::RefPtr<Gio::Socket> socket;
386  __gnu_cxx::stdio_filebuf<char> *writebuf;
387  ostream *os;
389  std::vector<gx_system::JsonStringParser*> notify_list;
390  sigc::connection idle_conn;
391  gx_preset::UnitRacks rack_units;
392  sigc::signal<void> midi_changed;
393  sigc::signal<void, int, int> midi_value_changed;
394  ControllerArray midi_controller_map;
395  Glib::ustring current_bank;
396  Glib::ustring current_preset;
397  int bank_drag_get_counter;
398  std::string bank_drag_get_path;
399  sigc::signal<int, bool> oscilloscope_activation;
400  sigc::signal<void, unsigned int> oscilloscope_size_change;
401  float *oscilloscope_buffer;
402  unsigned int oscilloscope_buffer_size;
403  sigc::signal<void,const Glib::ustring&,const Glib::ustring&> tuner_switcher_display;
404  sigc::signal<void,TunerSwitcher::SwitcherState> tuner_switcher_set_state;
405  sigc::signal<void, bool> tuner_switcher_selection_done;
406  sigc::signal<void,Plugin*,PluginChange::pc> plugin_changed;
407 private:
408  const jsonrpc_method_def& start_call(jsonrpc_method m_id);
409  void send();
410  void socket_error(int loc);
411  gx_system::JsonStringParser *receive();
412  bool get_bool(gx_system::JsonStringParser *jp);
413  bool socket_input_handler(Glib::IOCondition cond);
414  void add_idle_handler();
415  bool idle_notify_handler();
416  void handle_notify(gx_system::JsonStringParser *jp);
417  void parameter_changed(gx_system::JsonStringParser *jp);
418  static int load_remote_ui_static(const UiBuilder& builder, int form);
419  int load_remote_ui(const UiBuilder& builder, int form);
420  void report_rpc_error(gx_system::JsonStringParser *jp,
421  const gx_system::JsonException& e, const char *method=0);
422  void throw_error(gx_system::JsonStringParser *jp);
423  void param_signal(Parameter *p);
424  void update_plugins(gx_system::JsonParser *jp);
425  void create_bluetooth_socket(const Glib::ustring& bdaddr);
426  void create_tcp_socket();
427  virtual int _get_parameter_value_int(const std::string& id);
428  virtual int _get_parameter_value_bool(const std::string& id);
429  virtual float _get_parameter_value_float(const std::string& id);
430  virtual std::string _get_parameter_value_string(const std::string& id);
431  virtual sigc::signal<void, int>& _signal_parameter_value_int(const std::string& id);
432  virtual sigc::signal<void, bool>& _signal_parameter_value_bool(const std::string& id);
433  virtual sigc::signal<void, float>& _signal_parameter_value_float(const std::string& id);
434 
435 public:
437  virtual ~GxMachineRemote();
438  virtual void set_state(GxEngineState state);
439  virtual GxEngineState get_state();
440  virtual void load_ladspalist(std::vector<std::string>& old_not_found, ladspa::LadspaPluginList& pluginlist);
441  virtual void save_ladspalist(ladspa::LadspaPluginList& pluginlist);
442  virtual void commit_ladspa_changes();
443  virtual sigc::signal<void,Plugin*,PluginChange::pc>& signal_plugin_changed();
444  virtual Plugin *pluginlist_lookup_plugin(const std::string& id) const;
445  virtual bool load_unit(gx_gui::UiBuilderImpl& builder, PluginDef* pdef);
446  virtual void pluginlist_append_rack(UiBuilderBase& ui);
447  virtual float get_tuner_freq();
448  virtual void set_oscilloscope_mul_buffer(int a);
449  virtual int get_oscilloscope_mul_buffer();
450  virtual const float *get_oscilloscope_buffer();
451  virtual void clear_oscilloscope_buffer();
452  virtual bool oscilloscope_plugin_box_visible();
453  virtual sigc::signal<void, int>& signal_oscilloscope_post_pre();
454  virtual sigc::signal<void, bool>& signal_oscilloscope_visible();
455  virtual sigc::signal<int, bool>& signal_oscilloscope_activation();
456  virtual sigc::signal<void, unsigned int>& signal_oscilloscope_size_change();
457  virtual void maxlevel_get(int channels, float *values);
458  virtual void get_oscilloscope_info(int& load, int& frames, bool& is_rt, jack_nframes_t& bsize);
459  virtual gx_system::CmdlineOptions& get_options() const;
460  virtual void start_socket(sigc::slot<void> quit_mainloop, const Glib::ustring& host, int port);
461  virtual void stop_socket();
462  virtual sigc::signal<void,GxEngineState>& signal_state_change();
463  virtual void tuner_used_for_display(bool on);
464  virtual const std::vector<std::string>& get_rack_unit_order(PluginType type);
465  virtual sigc::signal<void,bool>& signal_rack_unit_order_changed();
466  virtual void remove_rack_unit(const std::string& unit, PluginType type);
467  virtual void insert_rack_unit(const std::string& unit, const std::string& before, PluginType type);
468  // tuner_switcher
469  virtual bool get_tuner_switcher_active();
470  virtual void tuner_switcher_activate(bool v);
471  virtual void tuner_switcher_deactivate();
472  virtual void tuner_switcher_toggle(bool v);
473  virtual sigc::signal<void,const Glib::ustring&,const Glib::ustring&>& tuner_switcher_signal_display();
474  virtual sigc::signal<void,TunerSwitcher::SwitcherState>& tuner_switcher_signal_set_state();
475  virtual sigc::signal<void, bool>& tuner_switcher_signal_selection_done();
476  // preset
477  virtual bool setting_is_preset();
478  virtual const Glib::ustring& get_current_bank();
479  virtual gx_system::PresetFileGui *get_current_bank_file();
480  virtual const Glib::ustring& get_current_name();
481  virtual gx_system::PresetFileGui* get_bank_file(const Glib::ustring& bank) const;
482  virtual Glib::ustring get_bank_name(int n);
483  virtual void load_preset(gx_system::PresetFileGui *pf, const Glib::ustring& name);
484  virtual void load_online_presets() ;
485  virtual void msend_midi_cc(int cc, int pgn, int bgn, int num);
486  virtual void loadstate();
487  virtual int bank_size();
488  virtual int get_bank_index(const Glib::ustring& bank);
489  virtual void create_default_scratch_preset();
490  virtual void set_statefilename(const std::string& fn);
491  virtual void save_to_state(bool preserve_preset=false);
492  virtual void plugin_preset_list_load(const PluginDef *pdef, gx_preset::UnitPresetList &presetnames);
493  virtual void plugin_preset_list_set(const PluginDef *pdef, bool factory, const Glib::ustring& name);
494  virtual void plugin_preset_list_sync_set(const PluginDef *pdef, bool factory, const Glib::ustring& name);
495  virtual void plugin_preset_list_set_on_idle(const PluginDef *pdef, bool factory, const Glib::ustring& name);
496  virtual void plugin_preset_list_save(const PluginDef *pdef, const Glib::ustring& name);
497  virtual void plugin_preset_list_remove(const PluginDef *pdef, const Glib::ustring& name);
498  virtual void disable_autosave(bool v);
499  virtual sigc::signal<void>& signal_selection_changed();
500  virtual sigc::signal<void>& signal_presetlist_changed();
501  virtual gx_system::PresetFileGui *bank_insert_uri(const Glib::ustring& uri, bool move);
502  virtual gx_system::PresetFileGui *bank_insert_new(const Glib::ustring& newname);
503  virtual bool rename_bank(const Glib::ustring& oldname, Glib::ustring& newname);
504  virtual bool rename_preset(gx_system::PresetFileGui& pf, const Glib::ustring& oldname, const Glib::ustring& newname);
505  virtual void bank_reorder(const std::vector<Glib::ustring>& neworder);
506  virtual void reorder_preset(gx_system::PresetFileGui& pf, const std::vector<Glib::ustring>& neworder);
507  virtual bool bank_check_reparse();
508  virtual void erase_preset(gx_system::PresetFileGui& pf, const Glib::ustring& name);
509  virtual void bank_set_flag(gx_system::PresetFileGui *pf, int flag, bool v);
510  virtual std::string bank_get_filename(const Glib::ustring& bank);
511  virtual void bank_drag_begin();
512  virtual gx_system::PresetFileGui *bank_get_file(const Glib::ustring& bank) const;
513  virtual bank_iterator bank_begin();
514  virtual bank_iterator bank_end();
515  virtual void pf_append(gx_system::PresetFileGui& pf, const Glib::ustring& src, gx_system::PresetFileGui& pftgt, const Glib::ustring& name);
516  virtual void pf_insert_before(gx_system::PresetFileGui& pf, const Glib::ustring& src, gx_system::PresetFileGui& pftgt, const Glib::ustring& pos, const Glib::ustring& name);
517  virtual void pf_insert_after(gx_system::PresetFileGui& pf, const Glib::ustring& src, gx_system::PresetFileGui& pftgt, const Glib::ustring& pos, const Glib::ustring& name);
518  virtual bool convert_preset(gx_system::PresetFileGui& pf);
519  virtual bool bank_remove(const Glib::ustring& bank);
520  virtual void bank_save();
521  virtual void pf_save(gx_system::PresetFileGui& pf, const Glib::ustring& name);
522 
523  // jack
524  virtual gx_jack::GxJack *get_jack();
525  virtual void set_jack_insert(bool v);
526  // pmap
527  virtual Parameter& get_parameter(const char *p);
528  virtual Parameter& get_parameter(const std::string& id);
529  virtual void insert_param(Glib::ustring group, Glib::ustring name);
530  virtual void set_init_values();
531  virtual bool parameter_hasId(const char *p);
532  virtual bool parameter_hasId(const std::string& id);
533  virtual void reset_unit(const PluginDef *pdef) const;
534  virtual bool parameter_unit_has_std_values(const PluginDef *pdef) const;
535  virtual void set_parameter_value(const std::string& id, int value);
536  virtual void set_parameter_value(const std::string& id, bool value);
537  virtual void set_parameter_value(const std::string& id, float value);
538  virtual void set_parameter_value(const std::string& id, const std::string& value);
539 
540  // MidiControllerList
541  virtual bool midi_get_config_mode(int *ctl = 0);
542  virtual void midi_set_config_mode(bool v, int ctl=-1);
543  virtual sigc::signal<void>& signal_midi_changed();
544  virtual sigc::signal<void, int, int>& signal_midi_value_changed();
545  virtual void request_midi_value_update();
546  virtual int midi_size();
547  virtual midi_controller_list& midi_get(int n);
548  virtual void midi_deleteParameter(Parameter& param);
549  virtual void midi_set_current_control(int v);
550  virtual void midi_modifyCurrent(Parameter& param, float lower, float upper, bool toggle, int toggle_behaviour);
551  virtual int midi_param2controller(Parameter& param, const MidiController** p);
552  // Convolver
553  virtual void reload_impresp_list(const std::string& path);
554  virtual void load_impresp_dirs(std::vector<gx_system::FileName>& dirs);
555  virtual bool read_audio(const std::string& filename, unsigned int *audio_size, int *audio_chan,
556  int *audio_type, int *audio_form, int *audio_rate, float **buffer);
557 };
558 
559 } // namespace gx_engine
560 
561 #endif // SRC_HEADERS_MACHINE_H_
sigc::signal< void, const std::string &, std::vector< gx_system::FileName > > impresp_list
Definition: machine.h:53
BasicOptions & get_options()
Definition: gx_system.h:511
void set_parameter_value(const std::string &id, double value)
Definition: machine.h:169
bank_iterator(gx_system::PresetBanks::iterator it_)
Definition: machine.h:43
std::vector< PluginPresetEntry > UnitPresetList
Definition: gx_preset.h:135
bank_iterator & operator++()
Definition: machine.h:46
bool read_audio(const std::string &filename, unsigned int *audio_size, int *audio_chan, int *audio_type, int *audio_form, int *audio_rate, float **buffer)
PluginType
Definition: machine.h:32
sigc::signal< void, const std::string &, std::vector< gx_system::FileName > > & signal_impresp_list()
Definition: machine.h:186
PresetFileGui * get_guiwrapper()
Definition: gx_json.h:393
gx_system::PresetFileGui * operator*()
Definition: machine.h:48
gx_system::PresetFileGui * operator->()
Definition: machine.h:47
list< MidiController > midi_controller_list
Definition: gx_parameter.h:698
sigc::signal< void, MidiAudioBuffer::Load > jack_load_change
Definition: machine.h:54
int flag
Definition: ladspaback.cpp:55
bool operator!=(const bank_iterator &i) const
Definition: machine.h:45
sigc::signal< void, MidiAudioBuffer::Load > & signal_jack_load_change()
Definition: machine.h:93