[SCM] calf/master: + Framework: add require_midi flag to plugins, generate LV2 requiredFeature from it, more API documentation to giface.h
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:38:12 UTC 2013
The following commit has been merged in the master branch:
commit 72379e9b81fde2febef4a0ca487c55ab47e97818
Author: Krzysztof Foltman <wdev at foltman.com>
Date: Sat Nov 1 14:08:27 2008 +0000
+ Framework: add require_midi flag to plugins, generate LV2 requiredFeature from it, more API documentation to giface.h
diff --git a/src/calf/giface.h b/src/calf/giface.h
index 55a1003..91690ab 100644
--- a/src/calf/giface.h
+++ b/src/calf/giface.h
@@ -220,30 +220,43 @@ struct plugin_ctl_iface
virtual ~plugin_ctl_iface() {}
};
-struct midi_event {
- uint8_t command;
- uint8_t param1;
- uint16_t param2;
- float param3;
-};
-
struct ladspa_plugin_info
{
+ /// LADSPA ID
uint32_t unique_id;
+ /// plugin short name (camel case)
const char *label;
+ /// plugin human-readable name
const char *name;
+ /// maker (author)
const char *maker;
+ /// copyright notice
const char *copyright;
+ /// plugin type for LRDF/LV2
const char *plugin_type;
};
struct giface_plugin_info
{
+ /// information like LADSPA ID, LADSPA label, name, maker, copyright and LRDF/LV2 plugin type (category)
ladspa_plugin_info *info;
- int inputs, outputs, params;
- bool rt_capable, midi_in_capable;
+ /// number of inputs
+ int inputs;
+ /// number of outputs
+ int outputs;
+ /// number of control ports (inputs or outputs)
+ int params;
+ /// is realtime-capable?
+ bool rt_capable;
+ /// has MIDI input?
+ bool midi_in_capable;
+ /// requires MIDI input handling (a synth or equivalent)
+ bool midi_in_required;
+ /// parameter properties structure
parameter_properties *param_props;
+ /// is a given parameter a control voltage?
bool (*is_cv)(int param_no);
+ /// is the given parameter non-interpolated?
bool (*is_noisy)(int param_no);
};
diff --git a/src/calf/modules.h b/src/calf/modules.h
index aa6fba9..6a6b297 100644
--- a/src/calf/modules.h
+++ b/src/calf/modules.h
@@ -91,7 +91,7 @@ public:
class amp_audio_module: public null_audio_module
{
public:
- enum { in_count = 2, out_count = 2, param_count = 1, support_midi = false, rt_capable = true };
+ enum { in_count = 2, out_count = 2, param_count = 1, support_midi = false, require_midi = false, rt_capable = true };
float *ins[2];
float *outs[2];
float *params[1];
@@ -118,7 +118,7 @@ class flanger_audio_module: public null_audio_module
{
public:
enum { par_delay, par_depth, par_rate, par_fb, par_stereo, par_reset, par_amount, param_count };
- enum { in_count = 2, out_count = 2, support_midi = false, rt_capable = true };
+ enum { in_count = 2, out_count = 2, support_midi = false, require_midi = false, rt_capable = true };
static const char *port_names[in_count + out_count];
static synth::ladspa_plugin_info plugin_info;
dsp::simple_flanger<float, 2048> left, right;
@@ -189,7 +189,7 @@ class phaser_audio_module: public null_audio_module
{
public:
enum { par_freq, par_depth, par_rate, par_fb, par_stages, par_stereo, par_reset, par_amount, param_count };
- enum { in_count = 2, out_count = 2, support_midi = false, rt_capable = true };
+ enum { in_count = 2, out_count = 2, support_midi = false, require_midi = false, rt_capable = true };
static const char *port_names[in_count + out_count];
static synth::ladspa_plugin_info plugin_info;
float *ins[in_count];
@@ -262,7 +262,7 @@ class reverb_audio_module: public null_audio_module
{
public:
enum { par_decay, par_hfdamp, par_roomsize, par_diffusion, par_amount, param_count };
- enum { in_count = 2, out_count = 2, support_midi = false, rt_capable = true };
+ enum { in_count = 2, out_count = 2, support_midi = false, require_midi = false, rt_capable = true };
static const char *port_names[in_count + out_count];
static synth::ladspa_plugin_info plugin_info;
dsp::reverb<float> reverb;
@@ -311,7 +311,7 @@ class filter_audio_module: public null_audio_module
{
public:
enum { par_cutoff, par_resonance, par_mode, par_inertia, param_count };
- enum { in_count = 2, out_count = 2, rt_capable = true, support_midi = false };
+ enum { in_count = 2, out_count = 2, rt_capable = true, require_midi = false, support_midi = false };
float *ins[in_count];
float *outs[out_count];
float *params[param_count];
@@ -466,7 +466,7 @@ public:
// 1MB of delay memory per channel... uh, RAM is cheap
enum { MAX_DELAY = 262144, ADDR_MASK = MAX_DELAY - 1 };
enum { par_bpm, par_divide, par_time_l, par_time_r, par_feedback, par_amount, par_mixmode, par_medium, param_count };
- enum { in_count = 2, out_count = 2, rt_capable = true, support_midi = false };
+ enum { in_count = 2, out_count = 2, rt_capable = true, support_midi = false, require_midi = false };
float *ins[in_count];
float *outs[out_count];
float *params[param_count];
@@ -576,7 +576,7 @@ class rotary_speaker_audio_module: public null_audio_module
{
public:
enum { par_speed, par_spacing, par_shift, par_moddepth, par_treblespeed, par_bassspeed, par_micdistance, par_reflection, param_count };
- enum { in_count = 2, out_count = 2, support_midi = true, rt_capable = true };
+ enum { in_count = 2, out_count = 2, support_midi = true, require_midi = false, rt_capable = true };
static const char *port_names[];
float *ins[in_count];
float *outs[out_count];
@@ -775,7 +775,7 @@ class multichorus_audio_module: public null_audio_module
{
public:
enum { par_delay, par_depth, par_rate, par_stereo, par_voices, par_vphase, par_amount, par_lfophase_l, par_lfophase_r, param_count };
- enum { in_count = 2, out_count = 2, rt_capable = true, support_midi = false };
+ enum { in_count = 2, out_count = 2, rt_capable = true, support_midi = false, require_midi = false };
float *ins[in_count];
float *outs[out_count];
float *params[param_count];
diff --git a/src/calf/modules_synths.h b/src/calf/modules_synths.h
index de4458c..35ca5d2 100644
--- a/src/calf/modules_synths.h
+++ b/src/calf/modules_synths.h
@@ -42,7 +42,7 @@ public:
enum { wave_saw, wave_sqr, wave_pulse, wave_sine, wave_triangle, wave_varistep, wave_skewsaw, wave_skewsqr, wave_test1, wave_test2, wave_test3, wave_test4, wave_test5, wave_test6, wave_test7, wave_test8, wave_count };
enum { flt_lp12, flt_lp24, flt_2lp12, flt_hp12, flt_lpbr, flt_hpbr, flt_bp6, flt_2bp6 };
enum { par_wave1, par_wave2, par_detune, par_osc2xpose, par_oscmode, par_oscmix, par_filtertype, par_cutoff, par_resonance, par_cutoffsep, par_envmod, par_envtores, par_envtoamp, par_attack, par_decay, par_sustain, par_release, par_keyfollow, par_legato, par_portamento, par_vel2filter, par_vel2amp, par_master, param_count };
- enum { in_count = 0, out_count = 2, support_midi = true, rt_capable = true };
+ enum { in_count = 0, out_count = 2, support_midi = true, require_midi = true, rt_capable = true };
enum { step_size = 64 };
static const char *port_names[];
static synth::ladspa_plugin_info plugin_info;
@@ -220,7 +220,7 @@ public:
using drawbar_organ::note_on;
using drawbar_organ::note_off;
using drawbar_organ::control_change;
- enum { in_count = 0, out_count = 2, support_midi = true, rt_capable = true };
+ enum { in_count = 0, out_count = 2, support_midi = true, require_midi = true, rt_capable = true };
static const char *port_names[];
float *ins[in_count];
float *outs[out_count];
diff --git a/src/makerdf.cpp b/src/makerdf.cpp
index 19ed05c..82ae658 100644
--- a/src/makerdf.cpp
+++ b/src/makerdf.cpp
@@ -27,6 +27,7 @@
#include <calf/plugininfo.h>
#if USE_LV2
#include <calf/lv2_event.h>
+#include <calf/lv2_uri_map.h>
#endif
using namespace std;
@@ -434,8 +435,16 @@ void make_ttl(string path_prefix)
if (pi.rt_capable)
ttl += " lv2:optionalFeature lv2:hardRtCapable ;\n";
if (pi.midi_in_capable)
- ttl += " lv2:optionalFeature <" LV2_EVENT_URI "> ;\n";
- // ttl += " lv2:requiredFeature <" LV2_EVENT_URI "> ;\n";
+ {
+ if (pi.midi_in_required) {
+ ttl += " lv2:requiredFeature <" LV2_EVENT_URI "> ;\n";
+ ttl += " lv2:requiredFeature <" LV2_URI_MAP_URI "> ;\n";
+ }
+ else {
+ ttl += " lv2:optionalFeature <" LV2_EVENT_URI "> ;\n";
+ ttl += " lv2:optionalFeature <" LV2_URI_MAP_URI "> ;\n";
+ }
+ }
string ports = "";
int pn = 0;
diff --git a/src/modules.cpp b/src/modules.cpp
index b8e6359..aa926a5 100644
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@ -185,6 +185,7 @@ giface_plugin_info create_plugin_info(ladspa_plugin_info &info)
pi.params = Module::param_count;
pi.rt_capable = Module::rt_capable;
pi.midi_in_capable = Module::support_midi;
+ pi.midi_in_required = Module::require_midi;
pi.param_props = Module::param_props;
pi.is_noisy = Module::is_noisy;
pi.is_cv = Module::is_cv;
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list