LMMS
Loading...
Searching...
No Matches
giface.h
Go to the documentation of this file.
1/* Calf DSP Library
2 * Common plugin interface definitions (shared between LADSPA/LV2/DSSI/standalone).
3 *
4 * Copyright (C) 2007-2010 Krzysztof Foltman
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
15 *
16 * You should have received a copy of the GNU Lesser General
17 * Public License along with this program; if not, write to the
18 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02111-1307, USA.
20 */
21#ifndef CALF_GIFACE_H
22#define CALF_GIFACE_H
23
24#include <config.h>
25#include "primitives.h"
26#include <complex>
27#include <exception>
28#include <string>
29#include <vector>
30
31namespace osctl {
32 struct osc_client;
33}
34
35namespace calf_plugins {
36
37enum {
39};
40
41struct automation_range;
42
45{
46 PF_TYPEMASK = 0x000F,
47 PF_FLOAT = 0x0000,
48 PF_INT = 0x0001,
49 PF_BOOL = 0x0002,
50 PF_ENUM = 0x0003,
51 PF_ENUM_MULTI = 0x0004,
52
53 PF_SCALEMASK = 0xF0,
56 PF_SCALE_LOG = 0x20,
61
62 PF_CTLMASK = 0x000F00,
63 PF_CTL_DEFAULT = 0x000000,
64 PF_CTL_KNOB = 0x000100,
65 PF_CTL_FADER = 0x000200,
66 PF_CTL_TOGGLE = 0x000300,
67 PF_CTL_COMBO = 0x000400,
68 PF_CTL_RADIO = 0x000500,
69 PF_CTL_BUTTON = 0x000600,
70 PF_CTL_METER = 0x000700,
71 PF_CTL_LED = 0x000800,
72 PF_CTL_LABEL = 0x000900,
73
74 PF_CTLOPTIONS = 0x00F000,
75 PF_CTLO_HORIZ = 0x001000,
76 PF_CTLO_VERT = 0x002000,
77 PF_CTLO_LABEL = 0x004000,
78 PF_CTLO_REVERSE = 0x008000,
79
80 PF_PROP_MASK = 0x3F0000,
81 PF_PROP_NOBOUNDS = 0x010000,
82 PF_PROP_EXPENSIVE = 0x020000,
84 PF_PROP_OPTIONAL = 0x080000,
85 PF_PROP_GRAPH = 0x100000,
86 PF_PROP_OUTPUT = 0x200000,
87
88 PF_UNITMASK = 0x0F000000,
89 PF_UNIT_DB = 0x01000000,
90 PF_UNIT_DBFS = 0x0E000000,
91 PF_UNIT_COEF = 0x02000000,
92 PF_UNIT_HZ = 0x03000000,
93 PF_UNIT_SEC = 0x04000000,
94 PF_UNIT_MSEC = 0x05000000,
95 PF_UNIT_CENTS = 0x06000000,
96 PF_UNIT_SEMITONES = 0x07000000,
97 PF_UNIT_BPM = 0x08000000,
98 PF_UNIT_DEG = 0x09000000,
99 PF_UNIT_NOTE = 0x0A000000,
100 PF_UNIT_RPM = 0x0B000000,
101 PF_UNIT_SAMPLES = 0x0C000000,
102
103 PF_SYNC_BPM = 0x10000000,
104
105 PF_DIGITMASK = 0xE0000000,
106 PF_DIGIT_0 = 0x20000000,
107 PF_DIGIT_1 = 0x40000000,
108 PF_DIGIT_2 = 0x60000000,
109 PF_DIGIT_3 = 0x80000000,
110 PF_DIGIT_ALL = 0xA0000000,
111};
112
114#define FAKE_INFINITY (65536.0 * 65536.0)
116#define IS_FAKE_INFINITY(value) (fabs(value-FAKE_INFINITY) < 1.0)
117
120{
121 const char *label;
122 const char *name;
123 const char *description;
124};
125
128{
132 float min;
134 float max;
136 float step;
140 const char **choices;
142 const char *short_name;
144 const char *name;
146 float from_01(double value01) const;
148 double to_01(float value) const;
150 std::string to_string(float value) const;
152 float string_to_value(const char* string) const;
154 int get_char_count() const;
156 float get_increment() const;
157};
158
160{
162 virtual void set_source_rgba(float r, float g, float b, float a = 1.f) = 0;
163 virtual void set_line_width(float width) = 0;
164 virtual void set_dash(const double *dash, int length) = 0;
165 virtual void draw_label(const char *label, float x, float y, int pos, float margin, float align) = 0;
166 virtual ~cairo_iface() {}
167};
168
170{
171 virtual void report_progress(float percentage, const std::string &message) = 0;
173};
174
177 LG_NONE = 0x000000,
178 LG_CACHE_GRID = 0x000001,
180 LG_CACHE_GRAPH = 0x000004,
182 LG_CACHE_DOT = 0x000010,
183 LG_REALTIME_DOT = 0x000020,
184 LG_CACHE_MOVING = 0x000040,
186};
187
190 LG_MOVING_LEFT = 0x000000,
191 LG_MOVING_RIGHT = 0x000001,
192 LG_MOVING_UP = 0x000002,
193 LG_MOVING_DOWN = 0x000004
194};
195
198{
208 virtual bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode = 0) const { return false; }
209
217 virtual bool get_moving(int index, int subindex, int &direction, float *data, int x, int y, int &offset, uint32_t &color) const { return false; }
218
223 virtual bool get_dot(int index, int subindex, int phase, float &x, float &y, int &size, cairo_iface *context) const { return false; }
224
229 virtual bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const { return false; }
230
236 virtual bool get_layers(int index, int generation, unsigned int &layers) const { return false; }
237
243 virtual std::string get_crosshair_label( int x, int y, int sx, int sy, float q, int dB, int name, int note, int cents) const { std::string s = ""; return s; }
244
246 virtual ~line_graph_iface() {}
247};
248
251{
252 virtual bool get_phase_graph(int index, float ** _buffer, int *_length, int * _mode, bool * _use_fade, float * _fade, int * _accuracy, bool * _display) const { return false; };
254};
255
265
268{
269 const char *name;
271 float min;
272 float max;
273 float def_value;
274 const char **values;
275};
276
279{
281 virtual const table_column_info *get_table_columns() const = 0;
282
284 virtual uint32_t get_table_rows() const = 0;
285
287};
288
291{
295 virtual void send_configure(const char *key, const char *value) = 0;
296
298};
299
302{
306 virtual void send_status(const char *key, const char *value) = 0;
307
309};
310
311struct plugin_command_info;
312
315{
319 const char *label;
321 const char *name;
323 const char *maker;
325 const char *copyright;
327 const char *plugin_type;
328};
329
332{
335 virtual const char *get_name() const = 0;
337 virtual const char *get_id() const = 0;
339 virtual const char *get_label() const = 0;
341 virtual int get_param_count() const = 0;
343 virtual char *get_gui_xml(const char *prefix) const = 0;
345 virtual int get_input_count() const =0;
347 virtual int get_output_count() const =0;
349 virtual int get_inputs_optional() const =0;
351 virtual int get_outputs_optional() const =0;
353 virtual bool is_rt_capable() const =0;
355 virtual bool get_midi() const =0;
357 virtual bool requires_midi() const =0;
359 virtual bool requires_instance_access() const =0;
361 virtual int get_param_port_offset() const = 0;
363 virtual plugin_command_info *get_commands() const { return NULL; }
365 virtual const parameter_properties *get_param_props(int param_no) const = 0;
367 virtual const char **get_port_names() const = 0;
369 virtual const ladspa_plugin_info &get_plugin_info() const = 0;
371 virtual bool is_cv(int param_no) const = 0;
373 virtual bool is_noisy(int param_no) const = 0;
375 virtual void get_configure_vars(std::vector<std::string> &names) const { names.clear(); }
377 virtual const table_metadata_iface *get_table_metadata_iface(const char *key) const { return NULL; }
379 virtual bool get_simulate_stereo_input() const = 0;
381 virtual bool sends_live_updates() const = 0;
382
385};
386
389{
391 virtual float get_param_value(int param_no) = 0;
393 virtual void set_param_value(int param_no, float value) = 0;
395 virtual bool activate_preset(int bank, int program) = 0;
397 virtual float get_level(unsigned int port)=0;
399 virtual void execute(int cmd_no)=0;
401 virtual char *configure(const char *key, const char *value) = 0;
405 virtual void clear_preset();
408 virtual bool blobcall(const char *command, const std::string &request, std::string &result) { result = "Call not supported"; return false; }
411 virtual int send_status_updates(send_updates_iface *sui, int last_serial) = 0;
413 virtual const plugin_metadata_iface *get_metadata_iface() const = 0;
415 virtual const line_graph_iface *get_line_graph_iface() const = 0;
417 virtual const phase_graph_iface *get_phase_graph_iface() const = 0;
419 virtual int get_write_serial(int param_no) { return 0; }
420
422 virtual void add_automation(uint32_t source, const automation_range &dest) {}
424 virtual void delete_automation(uint32_t source, int param_no) {}
427 virtual void get_automation(int param_no, std::multimap<uint32_t, automation_range> &dests) {}
429 virtual uint32_t get_last_automation_source() { return 0xFFFFFFFF; }
432 virtual ~plugin_ctl_iface() {}
433};
434
435struct plugin_list_info_iface;
436
439{
440public:
441 typedef std::vector<const plugin_metadata_iface *> plugin_vector;
442private:
445public:
447 static plugin_registry &instance();
448
450 const plugin_vector &get_all() { return plugins; }
452 const plugin_metadata_iface *get_by_uri(const char *URI);
454 const plugin_metadata_iface *get_by_id(const char *id, bool case_sensitive = false);
455};
456
458extern char *load_gui_xml(const std::string &plugin_id);
459
462{
464 virtual void note_on(int channel, int note, int velocity) = 0;
466 virtual void note_off(int channel, int note, int velocity) = 0;
468 virtual void program_change(int channel, int program) = 0;
470 virtual void control_change(int channel, int controller, int value) = 0;
473 virtual void pitch_bend(int channel, int value) = 0;
476 virtual void channel_pressure(int channel, int value) = 0;
478 virtual void params_changed() = 0;
480 virtual void activate() = 0;
482 virtual void deactivate() = 0;
484 virtual void set_sample_rate(uint32_t sr) = 0;
486 virtual void execute(int cmd_no) = 0;
488 virtual char *configure(const char *key, const char *value) = 0;
490 virtual void send_configures(send_configure_iface *sci) = 0;
492 virtual int send_status_updates(send_updates_iface *sui, int last_serial) = 0;
494 virtual void params_reset() = 0;
496 virtual void post_instantiate(uint32_t sample_rate) = 0;
498 virtual void get_port_arrays(float **&ins_ptrs, float **&outs_ptrs, float **&params_ptrs) = 0;
500 virtual const plugin_metadata_iface *get_metadata_iface() const = 0;
504 virtual uint32_t process_slice(uint32_t offset, uint32_t end) = 0;
506 virtual uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask) = 0;
508 virtual uint32_t message_run(const void *valid_ports, void *output_ports) = 0;
510 virtual const line_graph_iface *get_line_graph_iface() const = 0;
512 virtual const phase_graph_iface *get_phase_graph_iface() const = 0;
514};
515
517template<class Metadata>
519{
520public:
522 using Metadata::in_count;
523 using Metadata::out_count;
524 using Metadata::param_count;
525 float *ins[(Metadata::in_count != 0) ? Metadata::in_count : 1];
526 float *outs[(Metadata::out_count != 0) ? Metadata::out_count : 1];
527 float *params[Metadata::param_count];
530
532
535 memset(ins, 0, sizeof(ins));
536 memset(outs, 0, sizeof(outs));
537 memset(params, 0, sizeof(params));
540 }
541
543 void note_on(int channel, int note, int velocity) {}
545 void note_off(int channel, int note, int velocity) {}
547 void program_change(int channel, int program) {}
549 void control_change(int channel, int controller, int value) {}
552 void pitch_bend(int channel, int value) {}
555 void channel_pressure(int channel, int value) {}
559 void activate() {}
561 void deactivate() {}
565 void execute(int cmd_no) {}
567 virtual char *configure(const char *key, const char *value) { return NULL; }
571 int send_status_updates(send_updates_iface *sui, int last_serial) { return last_serial; }
573 void params_reset() {}
578 uint32_t message_run(const void *valid_ports, void *output_ports) {
579 fprintf(stderr, "ERROR: message run not implemented\n");
580 return 0;
581 }
582
583 virtual void get_port_arrays(float **&ins_ptrs, float **&outs_ptrs, float **&params_ptrs)
584 {
585 ins_ptrs = ins;
586 outs_ptrs = outs;
587 params_ptrs = params;
588 }
589
590 virtual const plugin_metadata_iface *get_metadata_iface() const { return this; }
593
595 inline void zero_by_mask(uint32_t mask, uint32_t offset, uint32_t nsamples)
596 {
597 for (int i=0; i<Metadata::out_count; i++) {
598 if ((mask & (1 << i)) == 0) {
599 dsp::zero(outs[i] + offset, nsamples);
600 }
601 }
602 }
603
605 {
606 bool had_errors = false;
607 for (int i=0; i<Metadata::in_count; ++i) {
608 float *indata = ins[i];
609 if (indata) {
610 float errval = 0;
611 for (uint32_t j = offset; j < end; j++)
612 {
613 if (!std::isfinite(indata[j]) || fabs(indata[j]) > 4294967296.0) {
614 errval = indata[j];
615 had_errors = true;
616 }
617 }
618 if (had_errors && !questionable_data_reported_in) {
619 fprintf(stderr, "Warning: Plugin %s got questionable value %f on its input %d\n", Metadata::get_name(), errval, i);
621 }
622 }
623 }
624 uint32_t total_out_mask = 0;
625 while(offset < end)
626 {
627 uint32_t newend = std::min(offset + MAX_SAMPLE_RUN, end);
628 uint32_t out_mask = !had_errors ? process(offset, newend - offset, -1, -1) : 0;
629 total_out_mask |= out_mask;
630 zero_by_mask(out_mask, offset, newend - offset);
631 offset = newend;
632 }
633 for (int i=0; i<Metadata::out_count; ++i) {
634 if (total_out_mask & (1 << i))
635 {
636 had_errors = false;
637 float *outdata = outs[i];
638 float errval = 0;
639 for (uint32_t j = offset; j < end; j++)
640 {
641 if (!std::isfinite(outdata[j]) || fabs(outdata[j]) > 4294967296.0) {
642 errval = outdata[j];
643 had_errors = true;
644 }
645 }
646 if (had_errors && !questionable_data_reported_out) {
647 fprintf(stderr, "Warning: Plugin %s generated questionable value %f on its output %d - this is most likely a bug in the plugin!\n", Metadata::get_name(), errval, i);
649 }
650 if (had_errors)
651 dsp::zero(outs[i] + offset, end - offset);
652 }
653 }
654 return total_out_mask;
655 }
656
657 virtual const line_graph_iface *get_line_graph_iface() const { return dynamic_cast<const line_graph_iface *>(this); }
659 virtual const phase_graph_iface *get_phase_graph_iface() const { return dynamic_cast<const phase_graph_iface *>(this); }
660};
661
662#if USE_EXEC_GUI || USE_DSSI
663
664enum line_graph_item
665{
666 LGI_END = 0,
667 LGI_GRAPH,
668 LGI_SUBGRAPH,
669 LGI_LEGEND,
670 LGI_DOT,
671 LGI_END_ITEM,
672 LGI_SET_RGBA,
673 LGI_SET_WIDTH,
674};
675
677struct dssi_feedback_sender
678{
680 osctl::osc_client *client;
682 bool is_client_shared;
684 bool quit;
686 std::vector<int> indices;
688 const calf_plugins::line_graph_iface *graph;
689
691 const calf_plugins::phase_graph_iface *phase;
692
694 dssi_feedback_sender(const char *URI, const line_graph_iface *_graph);
695 dssi_feedback_sender(osctl::osc_client *_client, const line_graph_iface *_graph);
696 void add_graphs(const calf_plugins::parameter_properties *props, int num_params);
697 void update();
698 ~dssi_feedback_sender();
699};
700#endif
701
703template<class Metadata>
705{
706public:
707 static const char *port_names[];
711
712 // These below are stock implementations based on enums and static members in Metadata classes
713 // they may be overridden to provide more interesting functionality
714
715 const char *get_name() const { return Metadata::impl_get_name(); }
716 const char *get_id() const { return Metadata::impl_get_id(); }
717 const char *get_label() const { return Metadata::impl_get_label(); }
718 int get_input_count() const { return Metadata::in_count; }
719 int get_output_count() const { return Metadata::out_count; }
720 int get_inputs_optional() const { return Metadata::ins_optional; }
721 int get_outputs_optional() const { return Metadata::outs_optional; }
722 int get_param_count() const { return Metadata::param_count; }
723 bool get_midi() const { return Metadata::support_midi; }
724 bool requires_midi() const { return Metadata::require_midi; }
725 bool requires_instance_access() const { return Metadata::require_instance_access; }
726 bool is_rt_capable() const { return Metadata::rt_capable; }
727 int get_param_port_offset() const { return Metadata::in_count + Metadata::out_count; }
728 char *get_gui_xml(const char *prefix) const { char xmlf[64]; sprintf(xmlf, "%s/%s", prefix, get_id()); char *data_ptr = calf_plugins::load_gui_xml(xmlf); return data_ptr; }
730 const parameter_properties *get_param_props(int param_no) const { return &param_props[param_no]; }
731 const char **get_port_names() const { return port_names; }
732 bool is_cv(int param_no) const { return true; }
733 bool is_noisy(int param_no) const { return false; }
735 bool get_simulate_stereo_input() const { return Metadata::simulate_stereo_input; }
736 bool sends_live_updates() const { return Metadata::has_live_updates; }
737};
738
739#define CALF_PORT_NAMES(name) template<> const char *calf_plugins::plugin_metadata<name##_metadata>::port_names[]
740#define CALF_PORT_PROPS(name) template<> parameter_properties calf_plugins::plugin_metadata<name##_metadata>::param_props[name##_metadata::param_count + 1]
741#define CALF_PLUGIN_INFO(name) template<> calf_plugins::ladspa_plugin_info calf_plugins::plugin_metadata<name##_metadata>::plugin_info
742#define PLUGIN_NAME_ID_LABEL(name, id, label) \
743 static const char *impl_get_name() { return name; } \
744 static const char *impl_get_id() { return id; } \
745 static const char *impl_get_label() { return label; } \
746
747extern const char *calf_copyright_info;
748
749bool get_freq_gridline(int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context, bool use_frequencies = true, float res = 256, float ofs = 0.4);
750
752static inline float dB_grid(float amp, float res = 256, float ofs = 0.4)
753{
754 return log(amp) * (1.0 / log(res)) + ofs;
755}
756
757template<class Fx>
758static bool get_graph(Fx &fx, int subindex, float *data, int points, float res = 256, float ofs = 0.4)
759{
760 for (int i = 0; i < points; i++)
761 {
762 //typedef std::complex<double> cfloat;
763 double freq = 20.0 * pow (20000.0 / 20.0, i * 1.0 / points);
764 data[i] = dB_grid(fx.freq_gain(subindex, freq), res, ofs);
765 }
766 return true;
767}
768
770static inline float dB_grid_inv(float pos, float res = 256, float ofs = 0.4)
771{
772 return pow(res, pos - ofs);
773}
774
777{
778public:
779 mutable bool redraw_graph;
780 virtual bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const;
781 virtual bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const;
782 virtual bool get_layers(int index, int generation, unsigned int &layers) const;
783 virtual float freq_gain(int index, double freq) const { return 0; };
784 virtual std::string get_crosshair_label( int x, int y, int sx, int sy, float q, int dB, int name, int note, int cents) const;
785};
786std::string frequency_crosshair_label(int x, int y, int sx, int sy, float q, int dB, int name, int note, int cents, double res = 256, double ofs = 0.4);
787
788
790void set_channel_color(cairo_iface *context, int channel, float alpha = 0.6);
791void set_channel_dash(cairo_iface *context, int channel);
792void draw_cairo_label(cairo_iface *context, const char *label, float x, float y, int pos, float margin, float align);
793
795{
796 virtual void store_preset() = 0;
797 virtual void activate_preset(int preset, bool builtin) = 0;
799};
800
803{
804public:
818
819 mod_matrix_metadata(unsigned int _rows, const char **_src_names, const char **_dest_names);
820 virtual const table_column_info *get_table_columns() const;
821 virtual uint32_t get_table_rows() const;
823 void get_configure_vars(std::vector<std::string> &names) const;
824
825protected:
828
829 unsigned int matrix_rows;
830};
831
839extern bool parse_table_key(const char *key, const char *prefix, bool &is_rows, int &row, int &column);
840
841#if USE_EXEC_GUI
842class table_via_configure
843{
844protected:
845 typedef std::pair<int, int> coord;
846 std::vector<table_column_info> columns;
847 std::map<coord, std::string> values;
848 int rows;
849public:
850 table_via_configure();
851 void configure(const char *key, const char *value);
852 virtual ~table_via_configure();
853};
854#endif
855
857{
861
862 automation_range(float l, float u, int param)
863 : min_value(l)
864 , max_value(u)
865 , param_no(param)
866 {}
867 void send_configure(const plugin_metadata_iface *metadata, uint32_t from_controller, send_configure_iface *sci);
868 static automation_range *new_from_configure(const plugin_metadata_iface *metadata, const char *key, const char *value, uint32_t &from_controller);
869};
870
871struct automation_map: public std::multimap<uint32_t, automation_range>
872{
873};
874
875inline float subindex_to_freq(int subindex)
876{
877 float freq = 100;
878 if (subindex < 9)
879 freq = 10 * (subindex + 1);
880 else if (subindex < 18)
881 freq = 100 * (subindex - 9 + 1);
882 else if (subindex < 27)
883 freq = 1000 * (subindex - 18 + 1);
884 else
885 freq = 10000 * (subindex - 27 + 1);
886
887 return freq;
888}
889
890};
891
892#define FORWARD_DECLARE_METADATA(plugin) \
893 template<> const char *calf_plugins::plugin_metadata<calf_plugins::plugin##_metadata>::port_names[]; \
894 template<> calf_plugins::parameter_properties calf_plugins::plugin_metadata<calf_plugins::plugin##_metadata>::param_props[]; \
895 template<> calf_plugins::ladspa_plugin_info calf_plugins::plugin_metadata<calf_plugins::plugin##_metadata>::plugin_info;
896
897
898#endif
#define NULL
Definition CarlaBridgeFormat.cpp:30
Controller controller
Definition main.C:5
uint8_t a
Definition Spc_Cpu.h:141
static void message(int level, const char *fmt,...)
Definition adplugdb.cpp:120
static const unsigned long mask[]
Definition bitwise.c:31
uint32_t process_slice(uint32_t offset, uint32_t end)
utility function: call process, and if it returned zeros in output masks, zero out the relevant outpu...
Definition giface.h:604
void set_sample_rate(uint32_t sr)
Set sample rate for the plugin.
Definition giface.h:563
virtual char * configure(const char *key, const char *value)
DSSI configure call.
Definition giface.h:567
void note_on(int channel, int note, int velocity)
Handle MIDI Note On.
Definition giface.h:543
virtual const plugin_metadata_iface * get_metadata_iface() const
Return metadata object.
Definition giface.h:590
virtual void set_progress_report_iface(progress_report_iface *iface)
Set the progress report interface to communicate progress to.
Definition giface.h:592
void pitch_bend(int channel, int value)
Definition giface.h:552
void params_reset()
Reset parameter values for epp:trigger type parameters (ones activated by oneshot push button instead...
Definition giface.h:573
void program_change(int channel, int program)
Handle MIDI Program Change.
Definition giface.h:547
bool questionable_data_reported_out
Definition giface.h:529
float * ins[(BaseClass::in_count !=0) ? BaseClass::in_count :1]
Definition giface.h:525
void send_configures(send_configure_iface *sci)
Send all understood configure vars (none by default).
Definition giface.h:569
uint32_t message_run(const void *valid_ports, void *output_ports)
Definition giface.h:578
virtual const line_graph_iface * get_line_graph_iface() const
Definition giface.h:657
Metadata metadata_type
Definition giface.h:521
float * params[BaseClass::param_count]
Definition giface.h:527
void post_instantiate(uint32_t)
Called after instantiating (after all the feature pointers are set - including interfaces like progre...
Definition giface.h:575
bool questionable_data_reported_in
Definition giface.h:528
void channel_pressure(int channel, int value)
Definition giface.h:555
void control_change(int channel, int controller, int value)
Handle MIDI Control Change.
Definition giface.h:549
void note_off(int channel, int note, int velocity)
Handle MIDI Note Off.
Definition giface.h:545
void deactivate()
LADSPA-esque deactivate function.
Definition giface.h:561
void params_changed()
Called when params are changed (before processing).
Definition giface.h:557
virtual const phase_graph_iface * get_phase_graph_iface() const
Definition giface.h:659
virtual void get_port_arrays(float **&ins_ptrs, float **&outs_ptrs, float **&params_ptrs)
Return the array of input port pointers.
Definition giface.h:583
progress_report_iface * progress_report
Definition giface.h:531
void activate()
LADSPA-esque activate function, except it is called after ports are connected, not before.
Definition giface.h:559
int send_status_updates(send_updates_iface *sui, int last_serial)
Send all supported status vars (none by default).
Definition giface.h:571
void zero_by_mask(uint32_t mask, uint32_t offset, uint32_t nsamples)
utility function: zero port values if mask is 0
Definition giface.h:595
float * outs[(BaseClass::out_count !=0) ? BaseClass::out_count :1]
Definition giface.h:526
audio_module()
Definition giface.h:533
void execute(int cmd_no)
Execute menu command with given number.
Definition giface.h:565
Line graph interface implementation for frequency response graphs.
Definition giface.h:777
virtual bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode) const
Definition giface.cpp:434
bool redraw_graph
Definition giface.h:779
virtual bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const
Definition giface.cpp:440
virtual bool get_layers(int index, int generation, unsigned int &layers) const
Definition giface.cpp:446
virtual float freq_gain(int index, double freq) const
Definition giface.h:783
virtual std::string get_crosshair_label(int x, int y, int sx, int sy, float q, int dB, int name, int note, int cents) const
Definition giface.cpp:454
virtual uint32_t get_table_rows() const
return the fixed number of rows, or 0 if the number of rows is variable
Definition giface.cpp:583
const char ** mod_src_names
Definition giface.h:817
mapping_mode
Mapping modes.
Definition giface.h:806
@ map_bipolar
-100%..100%
Definition giface.h:808
@ map_positive
0..100%
Definition giface.h:807
@ map_antisquared
1-(1-x)^2 scaled to 0..100%
Definition giface.h:812
@ map_squared
x^2
Definition giface.h:810
@ map_negative
-100%..0%
Definition giface.h:809
@ map_parabola
inverted parabola (peaks at 0.5, then decreases to 0)
Definition giface.h:814
@ map_type_count
Definition giface.h:815
@ map_squared_bipolar
x^2 scaled to -100%..100%
Definition giface.h:811
@ map_antisquared_bipolar
1-(1-x)^2 scaled to -100..100%
Definition giface.h:813
mod_matrix_metadata(unsigned int _rows, const char **_src_names, const char **_dest_names)
Definition giface.cpp:561
unsigned int matrix_rows
Definition giface.h:829
virtual const table_column_info * get_table_columns() const
retrieve the table layout for specific parameter
Definition giface.cpp:578
table_column_info table_columns[6]
Column descriptions for table widget.
Definition giface.h:827
void get_configure_vars(std::vector< std::string > &names) const
Return a list of configure variables used by the modulation matrix.
Definition giface.cpp:589
const char ** mod_dest_names
Definition giface.h:817
Metadata base class template, to provide default versions of interface functions.
Definition giface.h:705
char * get_gui_xml(const char *prefix) const
Return custom XML.
Definition giface.h:728
const char ** get_port_names() const
Definition giface.h:731
bool is_cv(int param_no) const
is a given parameter a control voltage?
Definition giface.h:732
plugin_command_info * get_commands() const
Definition giface.h:729
int get_inputs_optional() const
Definition giface.h:720
static parameter_properties param_props[]
Definition giface.h:708
bool is_noisy(int param_no) const
is the given parameter non-interpolated?
Definition giface.h:733
bool requires_instance_access() const
Definition giface.h:725
int get_param_port_offset() const
Definition giface.h:727
int get_outputs_optional() const
Definition giface.h:721
const char * get_name() const
Definition giface.h:715
int get_output_count() const
Definition giface.h:719
bool get_simulate_stereo_input() const
Definition giface.h:735
int get_param_count() const
Definition giface.h:722
const ladspa_plugin_info & get_plugin_info() const
Definition giface.h:734
bool get_midi() const
Definition giface.h:723
int get_input_count() const
Definition giface.h:718
static const char * port_names[]
Definition giface.h:707
bool sends_live_updates() const
Definition giface.h:736
plugin_metadata< Metadata > metadata_class
Definition giface.h:710
static ladspa_plugin_info plugin_info
Definition giface.h:709
bool is_rt_capable() const
Definition giface.h:726
const char * get_id() const
Definition giface.h:716
const char * get_label() const
Definition giface.h:717
bool requires_midi() const
Definition giface.h:724
const parameter_properties * get_param_props(int param_no) const
Definition giface.h:730
const plugin_metadata_iface * get_by_id(const char *id, bool case_sensitive=false)
Get single plugin metadata object by URI.
Definition giface.cpp:514
plugin_vector plugins
Definition giface.h:443
std::vector< const plugin_metadata_iface * > plugin_vector
Definition giface.h:441
plugin_registry()
Definition metadata.cpp:2193
const plugin_vector & get_all()
Get all plugin metadata objects.
Definition giface.h:450
static plugin_registry & instance()
Get the singleton object.
Definition giface.cpp:494
const plugin_metadata_iface * get_by_uri(const char *URI)
Get single plugin metadata object by URI.
Definition giface.cpp:500
int * l
Definition inflate.c:1579
register unsigned j
Definition inflate.c:1576
int y
Definition inflate.c:1588
int g
Definition inflate.c:1573
struct huft * u[BMAX]
Definition inflate.c:1583
register unsigned i
Definition inflate.c:1575
unsigned s
Definition inflate.c:1555
unsigned x[BMAX+1]
Definition inflate.c:1586
static PuglViewHint int value
Definition pugl.h:1708
static const char * name
Definition pugl.h:1582
static int width
Definition pugl.h:1593
JHUFF_TBL long freq[]
Definition jchuff.h:50
JSAMPIMAGE data
Definition jpeglib.h:945
#define URI(prefix, suffix)
std::map< MetadataKey, MetadataValue > Metadata
Definition libjack_metadata.cpp:60
unsigned int uint32_t
Definition mid.cpp:100
Definition benchmark.cpp:53
static float dB_grid(float amp, float res=256, float ofs=0.4)
convert amplitude value to normalized grid-ish value
Definition giface.h:752
parameter_flags
Values ORed together for flags field in parameter_properties.
Definition giface.h:45
@ PF_BOOL
bool value (usually >=0.5f is treated as TRUE, which is inconsistent with LV2 etc....
Definition giface.h:49
@ PF_CTLO_HORIZ
horizontal version of the control (unused)
Definition giface.h:75
@ PF_SCALE_LOG
log scale
Definition giface.h:56
@ PF_SCALE_LOG_INF
log scale + +inf (FAKE_INFINITY)
Definition giface.h:60
@ PF_SCALEMASK
bit mask for scale
Definition giface.h:53
@ PF_CTL_BUTTON
push button
Definition giface.h:69
@ PF_SYNC_BPM
sync a bpm setting with the host environment
Definition giface.h:103
@ PF_SCALE_DEFAULT
no scale given
Definition giface.h:54
@ PF_PROP_OUTPUT_GAIN
epp:outputGain + skip epp:hasStrictBounds
Definition giface.h:83
@ PF_DIGIT_0
Definition giface.h:106
@ PF_CTL_LABEL
label
Definition giface.h:72
@ PF_CTLMASK
bit mask for control type
Definition giface.h:62
@ PF_CTL_DEFAULT
try to figure out automatically
Definition giface.h:63
@ PF_DIGIT_2
Definition giface.h:108
@ PF_UNIT_MSEC
millisecond
Definition giface.h:94
@ PF_UNITMASK
bit mask for units
Definition giface.h:88
@ PF_PROP_EXPENSIVE
epp:expensive, may trigger expensive calculation
Definition giface.h:82
@ PF_UNIT_SEC
second
Definition giface.h:93
@ PF_UNIT_BPM
beats per minute
Definition giface.h:97
@ PF_TYPEMASK
bit mask for type
Definition giface.h:46
@ PF_ENUM_MULTI
SET / multiple-choice.
Definition giface.h:51
@ PF_CTL_LED
light emitting diode
Definition giface.h:71
@ PF_PROP_NOBOUNDS
no epp:hasStrictBounds
Definition giface.h:81
@ PF_DIGIT_ALL
Definition giface.h:110
@ PF_DIGITMASK
Definition giface.h:105
@ PF_UNIT_SAMPLES
samples
Definition giface.h:101
@ PF_SCALE_LINEAR
linear scale
Definition giface.h:55
@ PF_UNIT_SEMITONES
semitones
Definition giface.h:96
@ PF_PROP_GRAPH
add graph
Definition giface.h:85
@ PF_CTLO_REVERSE
use VU_MONOCHROME_REVERSE mode (meters only)
Definition giface.h:78
@ PF_CTLOPTIONS
bit mask for control (widget) options
Definition giface.h:74
@ PF_CTL_KNOB
knob
Definition giface.h:64
@ PF_UNIT_HZ
Hertz.
Definition giface.h:92
@ PF_ENUM
enum value (min, min+1, ..., max, only guaranteed to work when min = 0)
Definition giface.h:50
@ PF_UNIT_DBFS
decibels relative to Full Scale
Definition giface.h:90
@ PF_INT
integer value (still represented as float)
Definition giface.h:48
@ PF_SCALE_QUAD
quadratic scale (decent for some gain/amplitude values)
Definition giface.h:59
@ PF_UNIT_CENTS
cents (1/100 of a semitone, 1/1200 of an octave)
Definition giface.h:95
@ PF_UNIT_DEG
degrees
Definition giface.h:98
@ PF_CTLO_LABEL
add a text display to the control (meters only)
Definition giface.h:77
@ PF_CTL_TOGGLE
toggle button
Definition giface.h:66
@ PF_CTLO_VERT
vertical version of the control (unused)
Definition giface.h:76
@ PF_CTL_COMBO
combo box
Definition giface.h:67
@ PF_UNIT_NOTE
MIDI note number.
Definition giface.h:99
@ PF_SCALE_GAIN
gain = -96dB..0 or -inf dB
Definition giface.h:57
@ PF_DIGIT_1
Definition giface.h:107
@ PF_UNIT_RPM
revolutions per minute
Definition giface.h:100
@ PF_UNIT_DB
decibels
Definition giface.h:89
@ PF_PROP_OUTPUT
output port (flag, cannot be combined with others)
Definition giface.h:86
@ PF_PROP_MASK
bit mask for properties
Definition giface.h:80
@ PF_SCALE_PERC
percent
Definition giface.h:58
@ PF_UNIT_COEF
multiply-by factor
Definition giface.h:91
@ PF_FLOAT
any float value
Definition giface.h:47
@ PF_CTL_RADIO
radio button
Definition giface.h:68
@ PF_CTL_FADER
fader (slider)
Definition giface.h:65
@ PF_CTL_METER
volume meter
Definition giface.h:70
@ PF_PROP_OPTIONAL
connection optional
Definition giface.h:84
@ PF_DIGIT_3
Definition giface.h:109
static float dB_grid_inv(float pos, float res=256, float ofs=0.4)
convert normalized grid-ish value back to amplitude value
Definition giface.h:770
@ MAX_SAMPLE_RUN
Definition giface.h:38
float subindex_to_freq(int subindex)
Definition giface.h:875
bool get_freq_gridline(int subindex, float &pos, bool &vertical, std::string &legend, cairo_iface *context, bool use_frequencies=true, float res=256, float ofs=0.4)
Definition giface.cpp:333
void set_channel_dash(cairo_iface *context, int channel)
Definition giface.cpp:398
std::string frequency_crosshair_label(int x, int y, int sx, int sy, float q, int dB, int name, int note, int cents, double res=256, double ofs=0.4)
Definition giface.cpp:458
table_column_type
Definition giface.h:257
@ TCT_LABEL
string value (encoded as C-escaped string)
Definition giface.h:263
@ TCT_OBJECT
external object, encoded as string
Definition giface.h:262
@ TCT_UNKNOWN
guard invalid type
Definition giface.h:258
@ TCT_FLOAT
float value (encoded as C locale string)
Definition giface.h:259
@ TCT_ENUM
enum value (see: 'values' array in table_column_info) - encoded as string base 10 representation of i...
Definition giface.h:260
@ TCT_STRING
string value (encoded as C-escaped string)
Definition giface.h:261
static bool get_graph(Fx &fx, int subindex, float *data, int points, float res=256, float ofs=0.4)
Definition giface.h:758
const char * calf_copyright_info
Definition metadata.cpp:33
void draw_cairo_label(cairo_iface *context, const char *label, float x, float y, int pos, float margin, float align)
Definition giface.cpp:428
layers_flags
possible bit masks for get_layers
Definition giface.h:176
@ LG_CACHE_DOT
Definition giface.h:182
@ LG_REALTIME_MOVING
Definition giface.h:185
@ LG_REALTIME_GRID
Definition giface.h:179
@ LG_NONE
Definition giface.h:177
@ LG_CACHE_GRAPH
Definition giface.h:180
@ LG_REALTIME_GRAPH
Definition giface.h:181
@ LG_CACHE_MOVING
Definition giface.h:184
@ LG_REALTIME_DOT
Definition giface.h:183
@ LG_CACHE_GRID
Definition giface.h:178
char * load_gui_xml(const std::string &plugin_id)
Load and strdup a text file with GUI definition.
Definition giface.cpp:322
moving_directions
possible values for get_moving
Definition giface.h:189
@ LG_MOVING_DOWN
Definition giface.h:193
@ LG_MOVING_UP
Definition giface.h:192
@ LG_MOVING_LEFT
Definition giface.h:190
@ LG_MOVING_RIGHT
Definition giface.h:191
void set_channel_color(cairo_iface *context, int channel, float alpha=0.6)
set drawing color based on channel index (0 or 1)
Definition giface.cpp:391
bool parse_table_key(const char *key, const char *prefix, bool &is_rows, int &row, int &column)
Definition giface.cpp:528
void zero(float &v)
Set a float to zero.
Definition primitives.h:41
@ quit
Definition juce_ApplicationCommandID.h:62
jack_client_t * client
Definition juce_linux_JackAudio.cpp:57
Definition giface.h:31
png_uint_32 length
Definition png.c:2247
png_structrp int mode
Definition png.h:1139
Interface to audio processing plugins (the real things, not only metadata).
Definition giface.h:462
virtual char * configure(const char *key, const char *value)=0
DSSI configure call, value = NULL = reset to default.
virtual uint32_t process_slice(uint32_t offset, uint32_t end)=0
Clear a part of output buffers that have 0s at mask; subdivide the buffer so that no runs > MAX_SAMPL...
virtual const plugin_metadata_iface * get_metadata_iface() const =0
Return metadata object.
virtual void execute(int cmd_no)=0
Execute menu command with given number.
virtual void params_changed()=0
Called when params are changed (before processing).
virtual const line_graph_iface * get_line_graph_iface() const =0
virtual void program_change(int channel, int program)=0
Handle MIDI Program Change.
virtual void control_change(int channel, int controller, int value)=0
Handle MIDI Control Change.
virtual void channel_pressure(int channel, int value)=0
virtual void note_on(int channel, int note, int velocity)=0
Handle MIDI Note On.
virtual void send_configures(send_configure_iface *sci)=0
Send all understood configure vars (none by default).
virtual void get_port_arrays(float **&ins_ptrs, float **&outs_ptrs, float **&params_ptrs)=0
Return the arrays of port buffer pointers.
virtual uint32_t process(uint32_t offset, uint32_t numsamples, uint32_t inputs_mask, uint32_t outputs_mask)=0
The audio processing loop; assumes numsamples <= MAX_SAMPLE_RUN, for larger buffers,...
virtual void pitch_bend(int channel, int value)=0
virtual void deactivate()=0
LADSPA-esque deactivate function.
virtual int send_status_updates(send_updates_iface *sui, int last_serial)=0
Send all supported status vars (none by default).
virtual void params_reset()=0
Reset parameter values for epp:trigger type parameters (ones activated by oneshot push button instead...
virtual void set_progress_report_iface(progress_report_iface *iface)=0
Set the progress report interface to communicate progress to.
virtual const phase_graph_iface * get_phase_graph_iface() const =0
virtual uint32_t message_run(const void *valid_ports, void *output_ports)=0
Message port processing function.
virtual void activate()=0
LADSPA-esque activate function, except it is called after ports are connected, not before.
virtual void note_off(int channel, int note, int velocity)=0
Handle MIDI Note Off.
virtual void set_sample_rate(uint32_t sr)=0
Set sample rate for the plugin.
virtual ~audio_module_iface()
Definition giface.h:513
virtual void post_instantiate(uint32_t sample_rate)=0
Called after instantiating (after all the feature pointers are set - including interfaces like progre...
Definition giface.h:872
Definition giface.h:857
float min_value
Definition giface.h:858
float max_value
Definition giface.h:859
automation_range(float l, float u, int param)
Definition giface.h:862
void send_configure(const plugin_metadata_iface *metadata, uint32_t from_controller, send_configure_iface *sci)
Definition giface.cpp:40
static automation_range * new_from_configure(const plugin_metadata_iface *metadata, const char *key, const char *value, uint32_t &from_controller)
Definition giface.cpp:48
int param_no
Definition giface.h:860
Definition giface.h:160
virtual void draw_label(const char *label, float x, float y, int pos, float margin, float align)=0
int size_y
Definition giface.h:161
int size_x
Definition giface.h:161
virtual void set_source_rgba(float r, float g, float b, float a=1.f)=0
int pad_x
Definition giface.h:161
virtual void set_line_width(float width)=0
virtual ~cairo_iface()
Definition giface.h:166
virtual void set_dash(const double *dash, int length)=0
int pad_y
Definition giface.h:161
General information about the plugin -.
Definition giface.h:315
const char * maker
maker (author)
Definition giface.h:323
const char * copyright
copyright notice
Definition giface.h:325
uint32_t unique_id
LADSPA ID.
Definition giface.h:317
const char * plugin_type
plugin type for LRDF/LV2
Definition giface.h:327
const char * label
plugin short name (camel case)
Definition giface.h:319
const char * name
plugin human-readable name
Definition giface.h:321
'provides live line graph values' interface
Definition giface.h:198
virtual bool get_layers(int index, int generation, unsigned int &layers) const
Definition giface.h:236
virtual ~line_graph_iface()
Standard destructor to make compiler happy.
Definition giface.h:246
virtual std::string get_crosshair_label(int x, int y, int sx, int sy, float q, int dB, int name, int note, int cents) const
Definition giface.h:243
virtual bool get_graph(int index, int subindex, int phase, float *data, int points, cairo_iface *context, int *mode=0) const
Definition giface.h:208
virtual bool get_moving(int index, int subindex, int &direction, float *data, int x, int y, int &offset, uint32_t &color) const
Definition giface.h:217
virtual bool get_dot(int index, int subindex, int phase, float &x, float &y, int &size, cairo_iface *context) const
Definition giface.h:223
virtual bool get_gridline(int index, int subindex, int phase, float &pos, bool &vertical, std::string &legend, cairo_iface *context) const
Definition giface.h:229
Range, default value, flags and names for a parameter.
Definition giface.h:128
const char * name
parameter human-readable name
Definition giface.h:144
uint32_t flags
logical OR of parameter_flags
Definition giface.h:138
float get_increment() const
get increment step based on step value (if specified) and other factors
Definition giface.cpp:157
int get_char_count() const
get required width (for reserving GUI space)
Definition giface.cpp:187
float min
minimum value
Definition giface.h:132
float def_value
default value
Definition giface.h:130
float from_01(double value01) const
convert from [0, 1] range to [min, max] (applying scaling)
Definition giface.cpp:80
float max
maximum value
Definition giface.h:134
float step
number of steps (for an integer value from 0 to 100 this will be 101; for 0/90/180/270/360 this will ...
Definition giface.h:136
float string_to_value(const char *string) const
convert string (from text entry) to value
Definition giface.cpp:295
double to_01(float value) const
convert from [min, max] to [0, 1] range (applying reverse scaling)
Definition giface.cpp:128
const char * short_name
parameter label (for use in LV2 label field etc.)
Definition giface.h:142
const char ** choices
for PF_ENUM: array of text values (from min to max step 1), otherwise NULL
Definition giface.h:140
std::string to_string(float value) const
stringify (in sensible way)
Definition giface.cpp:207
'provides live line graph values' interface
Definition giface.h:251
virtual bool get_phase_graph(int index, float **_buffer, int *_length, int *_mode, bool *_use_fade, float *_fade, int *_accuracy, bool *_display) const
Definition giface.h:252
virtual ~phase_graph_iface()
Definition giface.h:253
Information record about plugin's menu command.
Definition giface.h:120
const char * description
description (for status line etc.)
Definition giface.h:123
const char * name
human-readable command name
Definition giface.h:122
const char * label
short command name / label
Definition giface.h:121
Interface for host-GUI-plugin interaction (should be really split in two, but ... meh).
Definition giface.h:389
virtual uint32_t get_last_automation_source()
Return the source identifier for the most recently seen control change that could be used for automat...
Definition giface.h:429
virtual void set_param_value(int param_no, float value)=0
Set value of given parameter.
virtual const line_graph_iface * get_line_graph_iface() const =0
virtual bool blobcall(const char *command, const std::string &request, std::string &result)
Definition giface.h:408
virtual ~plugin_ctl_iface()
Do-nothing destructor to silence compiler warning.
Definition giface.h:432
virtual void clear_preset()
Restore all state (parameters and configure vars) to default values - implemented in giface....
Definition giface.cpp:309
virtual float get_level(unsigned int port)=0
virtual bool activate_preset(int bank, int program)=0
Load preset with given number.
virtual int get_write_serial(int param_no)
Definition giface.h:419
virtual float get_param_value(int param_no)=0
virtual char * configure(const char *key, const char *value)=0
Set a configure variable on a plugin.
virtual void send_configures(send_configure_iface *)=0
Send all configure variables set within a plugin to given destination (which may be limited to only t...
virtual void delete_automation(uint32_t source, int param_no)
Remove parameter automation routing.
Definition giface.h:424
virtual void execute(int cmd_no)=0
Execute menu command with given number.
virtual const plugin_metadata_iface * get_metadata_iface() const =0
Return metadata object.
virtual void get_automation(int param_no, std::multimap< uint32_t, automation_range > &dests)
Definition giface.h:427
virtual int send_status_updates(send_updates_iface *sui, int last_serial)=0
virtual void send_automation_configures(send_configure_iface *)
Definition giface.h:430
virtual const phase_graph_iface * get_phase_graph_iface() const =0
virtual void add_automation(uint32_t source, const automation_range &dest)
Add or update parameter automation routing.
Definition giface.h:422
An interface returning metadata about a plugin.
Definition giface.h:332
virtual bool requires_instance_access() const =0
virtual plugin_command_info * get_commands() const
Definition giface.h:363
virtual bool requires_midi() const =0
virtual bool is_rt_capable() const =0
virtual char * get_gui_xml(const char *prefix) const =0
Return custom XML.
virtual ~plugin_metadata_iface()
Do-nothing destructor to silence compiler warning.
Definition giface.h:384
virtual bool is_noisy(int param_no) const =0
is the given parameter non-interpolated?
virtual const ladspa_plugin_info & get_plugin_info() const =0
virtual int get_param_port_offset() const =0
@ simulate_stereo_input
Definition giface.h:333
@ has_live_updates
Definition giface.h:333
virtual const char * get_name() const =0
virtual int get_input_count() const =0
virtual int get_inputs_optional() const =0
virtual const char * get_label() const =0
virtual bool get_simulate_stereo_input() const =0
virtual int get_param_count() const =0
virtual bool get_midi() const =0
virtual int get_outputs_optional() const =0
virtual const parameter_properties * get_param_props(int param_no) const =0
virtual const char * get_id() const =0
virtual bool is_cv(int param_no) const =0
is a given parameter a control voltage?
virtual bool sends_live_updates() const =0
virtual int get_output_count() const =0
virtual void get_configure_vars(std::vector< std::string > &names) const
obtain array of names of configure variables (or NULL is none needed)
Definition giface.h:375
virtual const char ** get_port_names() const =0
virtual const table_metadata_iface * get_table_metadata_iface(const char *key) const
Definition giface.h:377
Definition giface.h:795
virtual void activate_preset(int preset, bool builtin)=0
virtual ~preset_access_iface()
Definition giface.h:798
virtual void report_progress(float percentage, const std::string &message)=0
virtual ~progress_report_iface()
Definition giface.h:172
'may receive configure variables' interface
Definition giface.h:291
virtual ~send_configure_iface()
Definition giface.h:297
virtual void send_configure(const char *key, const char *value)=0
'may receive new status values' interface
Definition giface.h:302
virtual ~send_updates_iface()
Definition giface.h:308
virtual void send_status(const char *key, const char *value)=0
parameters of
Definition giface.h:268
const char * name
column label
Definition giface.h:269
float max
maximum value (for float and enum)
Definition giface.h:272
const char ** values
NULL unless a TCT_ENUM, where it represents a NULL-terminated list of choices.
Definition giface.h:274
table_column_type type
column data type
Definition giface.h:270
float def_value
default value (for float and enum)
Definition giface.h:273
float min
minimum value (for float)
Definition giface.h:271
'has string parameters containing tabular data' interface
Definition giface.h:279
virtual const table_column_info * get_table_columns() const =0
retrieve the table layout for specific parameter
virtual ~table_metadata_iface()
Definition giface.h:286
virtual uint32_t get_table_rows() const =0
return the fixed number of rows, or 0 if the number of rows is variable
ZCONST char * key
Definition crypt.c:587
int r
Definition crypt.c:458
b
Definition crypt.c:628
ulg size
Definition extract.c:2350
zoff_t request
Definition extract.c:1037
register uch * q
Definition fileio.c:817
int result
Definition process.c:1455
else sprintf(d_t_str, LoadFarString(shtYMDHMTime), yr%100, monthstr, dy, hh, mm)