[SCM] calf/master: Merge branch 'master' into stringport
js at users.alioth.debian.org
js at users.alioth.debian.org
Tue May 7 15:38:43 UTC 2013
+ ChangeLog: update (0.0.17 no longer "ongoing")
+ VU meter: fix last pixel in reverse mode (eg. compression indicator)
Merge branch 'master' of ssh://repo.or.cz/srv/git/calf
+ Organ, Flanger: more presets
* Compressor: Limited Threshold to -60 dB so logarithmic compressor works properly.
+ Organ: release-related fixes
+ Organ: MOAR PRESETS!!!
+ Organ: make 9x louder, remove test expression pedal support
+ Compressor: Fixed buggy RMS conditional.
Merge branch 'master' of ssh://repo.or.cz/srv/git/calf
+ Compressor: Small cleanups.
+ Flanger, Multi Chorus, Phaser, Vintage Delay: add dry amount knobs for Aux Bus type uses
Merge branch 'master' of ssh://repo.or.cz/srv/git/calf
+ Framework: an attempt at optimizing Hermite interpolation a little bit
+ Compressor: Fixed clip LED to operate completely in integer domain.
Merge branch 'master' of ssh://repo.or.cz/srv/git/calf
+ Compressor: Another go at optimizations.
+ Framework: remove (if'ed out) monotonic Hermite code
+ Benchmark: add more nasty compressor settings, add multichorus benchmarking
+ GUI: nasty hack to make labels less likely to be truncated
Merge branch 'master' of ssh://repo.or.cz/srv/git/calf
+ Flanger, Filter: add frames around freq. response graph for consistency (Stefan Kost's suggestion)
+ Compressor: Various optimizations, speed improved by >30%.
+ Benchmark: restore effect benchmarking, add test params for compressor
+ LED: make a bit brighter
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
X-Git-Refname: refs/heads/master
X-Git-Reftype: branch
X-Git-Oldrev: d6a3c1a63a147948535a50da009275278ad5e6a3
X-Git-Newrev: 34569260c452f0fa4c543155ebba174a42a343dc
The following commit has been merged in the master branch:
commit 23f59038ad7b4780277657e0e1425566d759e1fb
Merge: e13fbb3e61f3f30549f405a5216b448a18ce896f 9573a5592a8e14d5319bb130505aab8f2694ab43
Author: Krzysztof Foltman <wdev at foltman.com>
Date: Sun Nov 30 19:28:54 2008 +0000
Merge branch 'master' into stringport
diff --combined src/calf/metadata.h
index 3714881,cc83b14..544594c
--- a/src/calf/metadata.h
+++ b/src/calf/metadata.h
@@@ -30,14 -30,14 +30,14 @@@ namespace calf_plugins
struct flanger_metadata: public plugin_metadata<flanger_metadata>
{
public:
- enum { par_delay, par_depth, par_rate, par_fb, par_stereo, par_reset, par_amount, param_count };
+ enum { par_delay, par_depth, par_rate, par_fb, par_stereo, par_reset, par_amount, par_dryamount, param_count };
enum { in_count = 2, out_count = 2, support_midi = false, require_midi = false, rt_capable = true };
PLUGIN_NAME_ID_LABEL("flanger", "flanger", "Flanger")
};
struct phaser_metadata: public plugin_metadata<phaser_metadata>
{
- enum { par_freq, par_depth, par_rate, par_fb, par_stages, par_stereo, par_reset, par_amount, param_count };
+ enum { par_freq, par_depth, par_rate, par_fb, par_stages, par_stereo, par_reset, par_amount, par_dryamount, param_count };
enum { in_count = 2, out_count = 2, support_midi = false, require_midi = false, rt_capable = true };
PLUGIN_NAME_ID_LABEL("phaser", "phaser", "Phaser")
};
@@@ -60,7 -60,7 +60,7 @@@ struct reverb_metadata: public plugin_m
struct vintage_delay_metadata: public plugin_metadata<vintage_delay_metadata>
{
- enum { par_bpm, par_divide, par_time_l, par_time_r, par_feedback, par_amount, par_mixmode, par_medium, param_count };
+ enum { par_bpm, par_divide, par_time_l, par_time_r, par_feedback, par_amount, par_mixmode, par_medium, par_dryamount, param_count };
enum { in_count = 2, out_count = 2, rt_capable = true, support_midi = false, require_midi = false };
PLUGIN_NAME_ID_LABEL("vintage_delay", "vintagedelay", "Vintage Delay")
};
@@@ -77,7 -77,7 +77,7 @@@ public
struct multichorus_metadata: public plugin_metadata<multichorus_metadata>
{
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 { par_delay, par_depth, par_rate, par_stereo, par_voices, par_vphase, par_amount, par_dryamount, param_count };
enum { in_count = 2, out_count = 2, rt_capable = true, support_midi = false, require_midi = false };
PLUGIN_NAME_ID_LABEL("multichorus", "multichorus", "Multi Chorus")
};
@@@ -126,12 -126,8 +126,12 @@@ struct organ_enum
par_eg3attack, par_eg3decay, par_eg3sustain, par_eg3release, par_eg3velscl, par_eg3ampctl,
par_lforate, par_lfoamt, par_lfowet, par_lfophase, par_lfomode,
par_transpose, par_detune,
+ par_var_mapcurve,
param_count
};
+ enum {
+ var_count = 1
+ };
enum organ_waveform {
wave_sine,
wave_sinepl1, wave_sinepl2, wave_sinepl3,
diff --combined src/calf/modules_synths.h
index eec733a,9b4b238..775c58b
--- a/src/calf/modules_synths.h
+++ b/src/calf/modules_synths.h
@@@ -207,13 -207,14 +207,14 @@@ public
organ_audio_module()
: drawbar_organ(&par_values)
{
+ var_map_curve = "2\n0 1\n1 1\n"; // XXXKF hacky bugfix
}
void set_sample_rate(uint32_t sr) {
srate = sr;
}
void params_changed() {
- for (int i = 0; i < param_count; i++)
+ for (int i = 0; i < param_count - var_count; i++)
((float *)&par_values)[i] = *params[i];
update_params();
}
diff --combined src/calf/organ.h
index c397597,5d44c98..eed6bdb
--- a/src/calf/organ.h
+++ b/src/calf/organ.h
@@@ -83,8 -83,6 +83,8 @@@ struct organ_parameters
float global_transpose;
float global_detune;
+ float dummy_mapcurve;
+
//////////////////////////////////////////////////////////////////////////
// these parameters are calculated
@@@ -309,7 -307,7 +309,7 @@@ struct drawbar_organ: public dsp::basic
}
if (percussion.get_active())
percussion.render_percussion_to(buf, nsamples);
- float gain = parameters->master * (1.0 / (9 * 8));
+ float gain = parameters->master * (1.0 / 8);
for (int i=0; i<nsamples; i++) {
output[0][i] = gain*buf[i][0];
output[1][i] = gain*buf[i][1];
@@@ -334,10 -332,12 +334,12 @@@
void update_params();
void control_change(int controller, int value)
{
+ #if 0
if (controller == 11)
{
parameters->cutoff = value / 64.0 - 1;
}
+ #endif
dsp::basic_synth::control_change(controller, value);
}
void pitch_bend(int amt);
diff --combined src/giface.cpp
index a1b590f,2046b88..03209b7
--- a/src/giface.cpp
+++ b/src/giface.cpp
@@@ -131,7 -131,7 +131,7 @@@ int parameter_properties::get_char_coun
len = std::max(len, strlen(buf)) + 2;
return (int)len;
}
- return std::max(to_string(min).length(), std::max(to_string(max).length(), to_string(max * 0.999999).length()));
+ return std::max(to_string(min).length(), std::max(to_string(max).length(), to_string(min + (max-min) * 0.987654).length()));
}
std::string parameter_properties::to_string(float value) const
@@@ -149,8 -149,6 +149,8 @@@
}
switch(flags & PF_TYPEMASK)
{
+ case PF_STRING:
+ return "N/A";
case PF_INT:
case PF_BOOL:
case PF_ENUM:
@@@ -190,14 -188,13 +190,14 @@@
void calf_plugins::plugin_ctl_iface::clear_preset() {
int param_count = get_param_count();
for (int i=0; i < param_count; i++)
- set_param_value(i, get_param_props(i)->def_value);
- // This is never called in practice, at least for now
- const char **p = get_default_configure_vars();
- if (p)
{
- for(; p[0]; p += 2)
- configure(p[0], p[1]);
+ parameter_properties &pp = *get_param_props(i);
+ if ((pp.flags & PF_TYPEMASK) == PF_STRING)
+ {
+ configure(pp.short_name, pp.choices ? pp.choices[0] : "");
+ }
+ else
+ set_param_value(i, pp.def_value);
}
}
@@@ -211,25 -208,3 +211,25 @@@ const char *calf_plugins::load_gui_xml(
return NULL;
}
}
+
+bool calf_plugins::check_for_message_context_ports(parameter_properties *parameters, int count)
+{
+ for (int i = count - 1; i >= 0; i--)
+ {
+ if (parameters[i].flags & PF_PROP_MSGCONTEXT)
+ return true;
+ }
+ return false;
+}
+
+bool calf_plugins::check_for_string_ports(parameter_properties *parameters, int count)
+{
+ for (int i = count - 1; i >= 0; i--)
+ {
+ if ((parameters[i].flags & PF_TYPEMASK) == PF_STRING)
+ return true;
+ if ((parameters[i].flags & PF_TYPEMASK) < PF_STRING)
+ return false;
+ }
+ return false;
+}
diff --combined src/gui.cpp
index 20f8d2d,68e669d..c421773
--- a/src/gui.cpp
+++ b/src/gui.cpp
@@@ -52,10 -52,8 +52,10 @@@ void param_control::update_label(
void param_control::hook_params()
{
- if (param_no != -1)
+ if (param_no != -1) {
gui->add_param_ctl(param_no, this);
+ }
+ gui->params.push_back(this);
}
param_control::~param_control()
@@@ -409,7 -407,7 +409,7 @@@ struct curve_param_control_callback: pu
ss << data.size() << endl;
for (size_t i = 0; i < data.size(); i++)
ss << data[i].first << " " << data[i].second << endl;
- ctl->gui->send_configure(ctl->attribs["key"].c_str(), ss.str().c_str());
+ ctl->gui->plugin->configure(ctl->attribs["key"].c_str(), ss.str().c_str());
}
virtual void clip(CalfCurve *src, int pt, float &x, float &y, bool &hide)
{
@@@ -434,7 -432,7 +434,7 @@@ GtkWidget *curve_param_control::create(
void curve_param_control::send_configure(const char *key, const char *value)
{
- cout << "send conf " << key << endl;
+ // cout << "send conf " << key << endl;
if (attribs["key"] == key)
{
stringstream ss(value);
@@@ -776,6 -774,7 +776,6 @@@ void plugin_gui::xml_element_start(cons
current_control->init_xml(element);
current_control->set();
current_control->hook_params();
- params.push_back(current_control);
return;
}
}
@@@ -837,26 -836,22 +837,26 @@@ GtkWidget *plugin_gui::create_from_xml(
void plugin_gui::send_configure(const char *key, const char *value)
{
- plugin->configure(key, value);
+ // XXXKF this should really be replaced by a separate list of SCI-capable param controls
+ for (unsigned int i = 0; i < params.size(); i++)
+ {
+ assert(params[i] != NULL);
+ send_configure_iface *sci = dynamic_cast<send_configure_iface *>(params[i]);
+ if (sci)
+ sci->send_configure(key, value);
+ }
}
void plugin_gui::on_idle()
{
for (unsigned int i = 0; i < params.size(); i++)
{
- if (params[i] != NULL)
- {
- parameter_properties &props = *plugin->get_param_props(params[i]->param_no);
- bool is_output = (props.flags & PF_PROP_OUTPUT) != 0;
- if (is_output) {
- params[i]->set();
- }
- params[i]->on_idle();
+ parameter_properties &props = *plugin->get_param_props(params[i]->param_no);
+ bool is_output = (props.flags & PF_PROP_OUTPUT) != 0;
+ if (is_output) {
+ params[i]->set();
}
+ params[i]->on_idle();
}
// XXXKF iterate over par2ctl, too...
}
@@@ -865,10 -860,13 +865,10 @@@ void plugin_gui::refresh(
{
for (unsigned int i = 0; i < params.size(); i++)
{
- if (params[i] != NULL)
- params[i]->set();
+ params[i]->set();
send_configure_iface *sci = dynamic_cast<send_configure_iface *>(params[i]);
if (sci)
- {
plugin->send_configures(sci);
- }
}
}
@@@ -1112,7 -1110,6 +1112,7 @@@ void plugin_gui_window::create(plugin_c
source_id = g_timeout_add_full(G_PRIORITY_LOW, 1000/30, on_idle, this, NULL); // 30 fps should be enough for everybody
gtk_ui_manager_ensure_update(ui_mgr);
+ gui->plugin->send_configures(gui);
}
void plugin_gui_window::close()
diff --combined src/modules.cpp
index 59b6c39,5742145..b515de1
--- a/src/modules.cpp
+++ b/src/modules.cpp
@@@ -43,7 -43,8 +43,8 @@@ CALF_PORT_PROPS(flanger) =
{ 0.90, -0.99, 0.99, 0, PF_FLOAT | PF_SCALE_PERC | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "feedback", "Feedback" },
{ 0, 0, 360, 9, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_DEG, NULL, "stereo", "Stereo phase" },
{ 0, 0, 1, 2, PF_BOOL | PF_CTL_BUTTON , NULL, "reset", "Reset" },
- { 1, 0, 2, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "amount", "Amount" },
+ { 1, 0, 4, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "amount", "Amount" },
+ { 1.0, 0, 4, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "dry", "Dry Amount" },
};
CALF_PLUGIN_INFO(flanger) = { 0x847d, "Flanger", "Calf Flanger", "Krzysztof Foltman", calf_plugins::calf_copyright_info, "FlangerPlugin" };
@@@ -60,7 -61,8 +61,8 @@@ CALF_PORT_PROPS(phaser) =
{ 6, 1, 12, 12, PF_INT | PF_SCALE_LINEAR | PF_CTL_KNOB, NULL, "stages", "# Stages" },
{ 180, 0, 360, 9, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_DEG, NULL, "stereo", "Stereo phase" },
{ 0, 0, 1, 2, PF_BOOL | PF_CTL_BUTTON , NULL, "reset", "Reset" },
- { 1, 0, 2, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "amount", "Amount" },
+ { 1, 0, 4, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "amount", "Amount" },
+ { 1.0, 0, 4, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "dry", "Dry Amount" },
};
CALF_PLUGIN_INFO(phaser) = { 0x8484, "Phaser", "Calf Phaser", "Krzysztof Foltman", calf_plugins::calf_copyright_info, "PhaserPlugin" };
@@@ -99,7 -101,7 +101,7 @@@ CALF_PORT_PROPS(filter) =
{ 2000, 10,20000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_HZ | PF_PROP_GRAPH, NULL, "freq", "Frequency" },
{ 0.707, 0.707, 32, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "res", "Resonance" },
{ 0, 0, 5, 1, PF_ENUM | PF_CTL_COMBO, filter_choices, "mode", "Mode" },
- { 20, 5, 100, 20, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "inertia", "Inertia"},
+ { 20, 5, 100, 20, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC | PF_PROP_MSGCONTEXT, NULL, "inertia", "Inertia"},
};
CALF_PLUGIN_INFO(filter) = { 0x847f, "Filter", "Calf Filter", "Krzysztof Foltman", calf_plugins::calf_copyright_info, "FilterPlugin" };
@@@ -125,9 -127,10 +127,10 @@@ CALF_PORT_PROPS(vintage_delay) =
{ 3, 1, 16, 1, PF_INT | PF_SCALE_LINEAR | PF_CTL_FADER, NULL, "time_l", "Time L"},
{ 5, 1, 16, 1, PF_INT | PF_SCALE_LINEAR | PF_CTL_FADER, NULL, "time_r", "Time R"},
{ 0.5, 0, 1, 0, PF_FLOAT | PF_SCALE_PERC | PF_CTL_KNOB, NULL, "feedback", "Feedback" },
- { 0.25, 0, 2, 100, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "amount", "Amount" },
+ { 0.25, 0, 4, 100, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "amount", "Amount" },
{ 1, 0, 1, 0, PF_ENUM | PF_CTL_COMBO, vintage_delay_mixmodes, "mix_mode", "Mix mode" },
{ 1, 0, 2, 0, PF_ENUM | PF_CTL_COMBO, vintage_delay_fbmodes, "medium", "Medium" },
+ { 1.0, 0, 4, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "dry", "Dry Amount" },
};
CALF_PLUGIN_INFO(vintage_delay) = { 0x8482, "VintageDelay", "Calf Vintage Delay", "Krzysztof Foltman", calf_plugins::calf_copyright_info, "DelayPlugin" };
@@@ -163,8 -166,7 +166,7 @@@ CALF_PORT_PROPS(multichorus) =
{ 4, 1, 8, 8, PF_INT | PF_SCALE_LINEAR | PF_CTL_FADER, NULL, "voices", "Voices"},
{ 64, 0, 360, 91, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_DEG, NULL, "vphase", "Inter-voice phase" },
{ 2, 0, 4, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "amount", "Amount" },
- { 180, 0, 360, 91, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_DEG | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "lfo_phase_l", "Left LFO phase" },
- { 180, 0, 360, 91, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_DEG | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "lfo_phase_r", "Right LFO phase" },
+ { 1.0, 0, 4, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_COEF | PF_PROP_NOBOUNDS, NULL, "dry", "Dry Amount" },
};
CALF_PLUGIN_INFO(multichorus) = { 0x8501, "MultiChorus", "Calf MultiChorus", "Krzysztof Foltman", calf_plugins::calf_copyright_info, "ChorusPlugin" };
@@@ -177,18 -179,18 +179,18 @@@ const char *compressor_detection_names[
const char *compressor_stereo_link_names[] = { "Average", "Maximum" };
CALF_PORT_PROPS(compressor) = {
- { 0.0625, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "threshold", "Threshold" },
- { 5, 1, 20, 21, PF_FLOAT | PF_SCALE_LOG_INF | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "ratio", "Ratio" },
- { 15, 0.01, 2000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "attack", "Attack" },
- { 150, 0.01, 2000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "release", "Release" },
+ { 0.125, 0.000976563, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "threshold", "Threshold" },
+ { 2, 1, 20, 21, PF_FLOAT | PF_SCALE_LOG_INF | PF_CTL_KNOB | PF_UNIT_COEF, NULL, "ratio", "Ratio" },
+ { 20, 0.01, 2000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "attack", "Attack" },
+ { 250, 0.01, 2000, 0, PF_FLOAT | PF_SCALE_LOG | PF_CTL_KNOB | PF_UNIT_MSEC, NULL, "release", "Release" },
{ 2, 1, 64, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "makeup", "Makeup Gain" },
- { 1, 1, 8, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "knee", "Knee" },
+ { 2.828427125, 1, 8, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_KNOB | PF_UNIT_DB, NULL, "knee", "Knee" },
{ 0, 0, 1, 0, PF_ENUM | PF_CTL_COMBO, compressor_detection_names, "detection", "Detection" },
{ 0, 0, 1, 0, PF_ENUM | PF_CTL_COMBO, compressor_stereo_link_names, "stereo_link", "Stereo Link" },
{ 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "aweighting", "A-weighting" },
{ 0, 0.03125, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_CTLO_REVERSE | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL| PF_PROP_GRAPH, NULL, "compression", "Compression" },
- { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "peak", "Peak" },
- { 0, 0, 1, 0, PF_BOOL | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip", "Clip" },
+ { 0, 0, 1, 0, PF_FLOAT | PF_SCALE_GAIN | PF_CTL_METER | PF_CTLO_LABEL | PF_UNIT_DB | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "peak", "Peak Output" },
+ { 0, 0, 1, 0, PF_BOOL | PF_CTL_LED | PF_PROP_OUTPUT | PF_PROP_OPTIONAL, NULL, "clip", "0dB" },
{ 0, 0, 1, 0, PF_BOOL | PF_CTL_TOGGLE, NULL, "bypass", "Bypass" }
};
@@@ -289,8 -291,6 +291,8 @@@ const char *organ_ampctl_names[] = { "N
const char *organ_vibrato_mode_names[] = { "None", "Direct", "Flt 1", "Flt 2", "Voice", "Global" };
+const char *organ_init_map_curve = "2\n0 1\n1 1\n";
+
CALF_PORT_PROPS(organ) = {
{ 8, 0, 8, 80, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_FADER, NULL, "l1", "16'" },
{ 8, 0, 8, 80, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_FADER, NULL, "l2", "5 1/3'" },
@@@ -430,8 -430,6 +432,8 @@@
{ -12, -24, 24, 49, PF_INT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_SEMITONES, NULL, "transpose", "Transpose" },
{ 0, -100, 100, 201, PF_FLOAT | PF_SCALE_LINEAR | PF_CTL_KNOB | PF_UNIT_CENTS, NULL, "detune", "Detune" },
+
+ { 0, 0, 0, 0, PF_STRING | PF_PROP_MSGCONTEXT, &organ_init_map_curve, "map_curve", "Key mapping curve" },
};
////////////////////////////////////////////////////////////////////////////
--
calf audio plugins packaging
More information about the pkg-multimedia-commits
mailing list