21#ifndef __CALF_LADSPA_WRAP_H
22#define __CALF_LADSPA_WRAP_H
36struct ladspa_plugin_metadata_set;
40 audio_module_iface *module;
41 const plugin_metadata_iface *metadata;
42 ladspa_plugin_metadata_set *ladspa;
44 float **
ins, **outs, **params;
47 dssi_feedback_sender *feedback_sender;
50 ladspa_instance(audio_module_iface *_module, ladspa_plugin_metadata_set *_ladspa,
int sample_rate);
51 virtual ~ladspa_instance();
52 virtual const line_graph_iface *get_line_graph_iface()
const {
return module->get_line_graph_iface(); }
53 virtual const phase_graph_iface *get_phase_graph_iface()
const {
return module->get_phase_graph_iface(); }
54 virtual float get_param_value(
int param_no);
55 virtual void set_param_value(
int param_no,
float value);
56 virtual bool activate_preset(
int bank,
int program);
57 virtual char *configure(
const char *
key,
const char *
value);
58 virtual float get_level(
unsigned int port) {
return 0.f; }
59 virtual void execute(
int cmd_no) {
60 module->execute(cmd_no);
62 virtual void send_configures(send_configure_iface *sci) {
63 module->send_configures(sci);
65 virtual int send_status_updates(send_updates_iface *sui,
int last_serial) {
return module->send_status_updates(sui, last_serial); }
66 void run(
unsigned long SampleCount);
70 void run_synth(
unsigned long SampleCount,
snd_seq_event_t *Events,
unsigned long EventCount);
72 virtual const plugin_metadata_iface *get_metadata_iface()
const
79struct ladspa_plugin_metadata_set
90 std::vector<plugin_preset> *presets;
91 std::vector<DSSI_Program_Descriptor> *preset_descs;
94 int input_count, output_count, param_count;
95 const plugin_metadata_iface *metadata;
97 ladspa_plugin_metadata_set();
98 void prepare(
const plugin_metadata_iface *
md,
LADSPA_Handle (*cb_instantiate)(
const struct _LADSPA_Descriptor * Descriptor,
unsigned long sample_rate));
100 ~ladspa_plugin_metadata_set();
104template<
class Module>
107 static ladspa_plugin_metadata_set output;
110 ladspa_wrapper(
const plugin_metadata_iface *
md)
112 output.prepare(
md, cb_instantiate);
117 static LADSPA_Handle cb_instantiate(
const struct _LADSPA_Descriptor * Descriptor,
unsigned long sample_rate)
119 return new ladspa_instance(
new Module, &output, sample_rate);
123 static ladspa_plugin_metadata_set &
get() {
124 static ladspa_wrapper instance(
new typename Module::metadata_class);
125 return instance.output;
static const LV2_Descriptor descriptor
Definition bindings_test_plugin.c:165
static void run(LV2_Handle instance, uint32_t n_samples)
Definition bindings_test_plugin.c:112
unsigned md
Definition inflate.c:944
struct _DSSI_Descriptor DSSI_Descriptor
const DSSI_Descriptor * dssi_descriptor(unsigned long Index)
Definition DSSIaudiooutput.cpp:129
struct _DSSI_Program_Descriptor DSSI_Program_Descriptor
static PuglViewHint int value
Definition pugl.h:1708
void * LADSPA_Handle
Definition ladspa.h:363
struct _LADSPA_Descriptor LADSPA_Descriptor
Definition benchmark.cpp:53
auto & get(ProcessorChain< Processors... > &chain) noexcept
Definition juce_ProcessorChain.h:133
Instrument * ins
Definition HydrogenImport.cpp:138
struct snd_seq_event snd_seq_event_t
Interface for host-GUI-plugin interaction (should be really split in two, but ... meh).
Definition giface.h:389
ZCONST char * key
Definition crypt.c:587