From 02f16b4a098cf9c06619edf09d5de231e082f045 Mon Sep 17 00:00:00 2001 From: be_ Date: Fri, 13 Jan 2017 14:47:47 -0600 Subject: [PATCH] improve effects defaults * Improve default effect parameter values * Change default metaknob linkings * Rearrange parameters so those linked to metaknob by default are at the end. This allows controllers that can control individual parameters to make best use of their knobs without having redundancy when controlling the metaknob or controlling individual parameters. --- src/effects/native/autopaneffect.cpp | 54 +++++++------- src/effects/native/echoeffect.cpp | 30 ++++---- src/effects/native/flangereffect.cpp | 25 +++---- .../native/moogladder4filtereffect.cpp | 3 +- src/effects/native/phasereffect.cpp | 71 +++++++++---------- 5 files changed, 90 insertions(+), 93 deletions(-) diff --git a/src/effects/native/autopaneffect.cpp b/src/effects/native/autopaneffect.cpp index 987cb6b61ee7..a5b385675589 100644 --- a/src/effects/native/autopaneffect.cpp +++ b/src/effects/native/autopaneffect.cpp @@ -26,31 +26,6 @@ EffectManifest AutoPanEffect::getManifest() { "A delay, inversed on each side, is added to increase the " "spatial move and the period can be synced with the BPM.")); - // Width : applied on the channel with gain reducing. - EffectManifestParameter* width = manifest.addParameter(); - width->setId("width"); - width->setName(QObject::tr("Width")); - width->setDescription("How far the signal goes on the left or on the right"); - width->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); - width->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); - width->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - width->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); - width->setMinimum(0.0); - width->setMaximum(1.0); // 0.02 * sampleRate => 20ms - width->setDefault(0.5); - - // Period unit - EffectManifestParameter* periodUnit = manifest.addParameter(); - periodUnit->setId("periodUnit"); - periodUnit->setName(QObject::tr("Sync")); - periodUnit->setDescription(QObject::tr("Synchronizes the period with the BPM if it can be retrieved")); - periodUnit->setControlHint(EffectManifestParameter::CONTROL_TOGGLE_STEPPING); - periodUnit->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); - periodUnit->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - periodUnit->setDefault(1); - periodUnit->setMinimum(0); - periodUnit->setMaximum(1); - // Period // The maximum is at 128 + 1 allowing 128 as max value and // enabling us to pause time when the parameter is above @@ -62,8 +37,6 @@ EffectManifest AutoPanEffect::getManifest() { period->setControlHint(EffectManifestParameter::CONTROL_KNOB_LOGARITHMIC); period->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); period->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - period->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); - period->setDefaultLinkInversion(EffectManifestParameter::LinkInversion::INVERTED); period->setMinimum(0.0625); // 1 / 16 period->setMaximum(129.0); // 128 + 1 period->setDefault(3.0); @@ -80,10 +53,35 @@ EffectManifest AutoPanEffect::getManifest() { smoothing->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); smoothing->setMinimum(0.0); smoothing->setMaximum(0.5); // there are two steps per period so max is half - smoothing->setDefault(0.25); + smoothing->setDefault(0.5); // TODO(Ferran Pujol): when KnobComposedMaskedRing branch is merged to master, // make the scaleStartParameter for this be 1. + // Width : applied on the channel with gain reducing. + EffectManifestParameter* width = manifest.addParameter(); + width->setId("width"); + width->setName(QObject::tr("Width")); + width->setDescription("How far the signal goes on the left or on the right"); + width->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); + width->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); + width->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); + width->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); + width->setMinimum(0.0); + width->setMaximum(1.0); // 0.02 * sampleRate => 20ms + width->setDefault(0.5); + + // Period unit + EffectManifestParameter* periodUnit = manifest.addParameter(); + periodUnit->setId("periodUnit"); + periodUnit->setName(QObject::tr("Sync")); + periodUnit->setDescription(QObject::tr("Synchronizes the period with the BPM if it can be retrieved")); + periodUnit->setControlHint(EffectManifestParameter::CONTROL_TOGGLE_STEPPING); + periodUnit->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); + periodUnit->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); + periodUnit->setDefault(1); + periodUnit->setMinimum(0); + periodUnit->setMaximum(1); + return manifest; } diff --git a/src/effects/native/echoeffect.cpp b/src/effects/native/echoeffect.cpp index bed1e3d97f15..07b1f8be98ef 100644 --- a/src/effects/native/echoeffect.cpp +++ b/src/effects/native/echoeffect.cpp @@ -22,18 +22,6 @@ EffectManifest EchoEffect::getManifest() { manifest.setVersion("1.0"); manifest.setDescription(QObject::tr("Simple Echo with pingpong")); - EffectManifestParameter* send = manifest.addParameter(); - send->setId("send_amount"); - send->setName(QObject::tr("Send")); - send->setDescription( - QObject::tr("How much of the signal to send into the delay buffer")); - send->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); - send->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); - send->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - send->setMinimum(0.0); - send->setDefault(1.0); - send->setMaximum(1.0); - EffectManifestParameter* delay = manifest.addParameter(); delay->setId("delay_time"); delay->setName(QObject::tr("Delay")); @@ -42,7 +30,7 @@ EffectManifest EchoEffect::getManifest() { delay->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); delay->setUnitsHint(EffectManifestParameter::UNITS_TIME); delay->setMinimum(0.1); - delay->setDefault(0.5); + delay->setDefault(1.0); delay->setMaximum(2.0); EffectManifestParameter* feedback = manifest.addParameter(); @@ -53,9 +41,8 @@ EffectManifest EchoEffect::getManifest() { feedback->setControlHint(EffectManifestParameter::CONTROL_KNOB_LOGARITHMIC); feedback->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); feedback->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - feedback->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); feedback->setMinimum(0.00); - feedback->setDefault(0.40); + feedback->setDefault(0.5); feedback->setMaximum(1.0); EffectManifestParameter* pingpong = manifest.addParameter(); @@ -72,6 +59,19 @@ EffectManifest EchoEffect::getManifest() { pingpong->setDefault(0.0); pingpong->setMaximum(1.0); + EffectManifestParameter* send = manifest.addParameter(); + send->setId("send_amount"); + send->setName(QObject::tr("Send")); + send->setDescription( + QObject::tr("How much of the signal to send into the delay buffer")); + send->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); + send->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); + send->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); + send->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); + send->setMinimum(0.0); + send->setDefault(1.0); + send->setMaximum(1.0); + return manifest; } diff --git a/src/effects/native/flangereffect.cpp b/src/effects/native/flangereffect.cpp index b4cb270fc5f7..079cb436349a 100644 --- a/src/effects/native/flangereffect.cpp +++ b/src/effects/native/flangereffect.cpp @@ -24,18 +24,6 @@ EffectManifest FlangerEffect::getManifest() { "A simple modulation effect, created by taking the input signal " "and mixing it with a delayed, pitch modulated copy of itself.")); - EffectManifestParameter* depth = manifest.addParameter(); - depth->setId("depth"); - depth->setName(QObject::tr("Depth")); - depth->setDescription(QObject::tr("Controls the intensity of the effect.")); - depth->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); - depth->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); - depth->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - depth->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); - depth->setDefault(0.0); - depth->setMinimum(0.0); - depth->setMaximum(1.0); - EffectManifestParameter* delay = manifest.addParameter(); delay->setId("delay"); delay->setName(QObject::tr("Delay")); @@ -58,6 +46,19 @@ EffectManifest FlangerEffect::getManifest() { period->setMinimum(50000.0); period->setMaximum(2000000.0); + EffectManifestParameter* depth = manifest.addParameter(); + depth->setId("depth"); + depth->setName(QObject::tr("Depth")); + depth->setDescription(QObject::tr("Controls the intensity of the effect.")); + depth->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); + depth->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); + depth->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); + depth->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); + depth->setDefault(0.0); + depth->setMinimum(0.0); + depth->setMaximum(1.0); + + return manifest; } diff --git a/src/effects/native/moogladder4filtereffect.cpp b/src/effects/native/moogladder4filtereffect.cpp index fcac1b486210..0d34f075e29c 100644 --- a/src/effects/native/moogladder4filtereffect.cpp +++ b/src/effects/native/moogladder4filtereffect.cpp @@ -46,9 +46,9 @@ EffectManifest MoogLadder4FilterEffect::getManifest() { q->setControlHint(EffectManifestParameter::CONTROL_KNOB_LOGARITHMIC); q->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); q->setUnitsHint(EffectManifestParameter::UNITS_SAMPLERATE); - q->setDefault(0); q->setMinimum(0.0); q->setMaximum(4.0); + q->setDefault(1.0); EffectManifestParameter* hpf = manifest.addParameter(); hpf->setId("hpf"); @@ -106,7 +106,6 @@ void MoogLadder4FilterEffect::processChannel( const GroupFeatureState& groupFeatures) { Q_UNUSED(handle); Q_UNUSED(groupFeatures); - Q_UNUSED(sampleRate); double resonance = m_pResonance->value(); diff --git a/src/effects/native/phasereffect.cpp b/src/effects/native/phasereffect.cpp index 98a99b5e0f2a..0eb676efbd9e 100644 --- a/src/effects/native/phasereffect.cpp +++ b/src/effects/native/phasereffect.cpp @@ -22,17 +22,16 @@ EffectManifest PhaserEffect::getManifest() { "A more complex sound effect obtained by mixing the input signal" " with a copy passed through a series of all-pass filters.")); - EffectManifestParameter* depth = manifest.addParameter(); - depth->setId("depth"); - depth->setName(QObject::tr("Depth")); - depth->setDescription("Controls the intensity of the effect."); - depth->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); - depth->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); - depth->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - depth->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); - depth->setDefault(0.0); - depth->setMinimum(0.0); - depth->setMaximum(1.0); + EffectManifestParameter* frequency = manifest.addParameter(); + frequency->setId("lfo_frequency"); + frequency->setName(QObject::tr("Rate")); + frequency->setDescription(QObject::tr("Controls the speed of the low frequency oscilator.")); + frequency->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); + frequency->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); + frequency->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); + frequency->setMinimum(0.0); + frequency->setMaximum(5.0); + frequency->setDefault(2.5); EffectManifestParameter* range = manifest.addParameter(); range->setId("range"); @@ -41,21 +40,9 @@ EffectManifest PhaserEffect::getManifest() { range->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); range->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); range->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - range->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); - range->setDefault(0.5); range->setMinimum(0.05); range->setMaximum(0.95); - - EffectManifestParameter* fb = manifest.addParameter(); - fb->setId("feedback"); - fb->setName(QObject::tr("Feedback")); - fb->setDescription(QObject::tr("Controls how much of the output signal is looped")); - fb->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); - fb->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); - fb->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - fb->setDefault(0.0); - fb->setMinimum(-0.95); - fb->setMaximum(0.95); + range->setDefault(0.05); EffectManifestParameter* stages = manifest.addParameter(); stages->setId("stages"); @@ -64,20 +51,32 @@ EffectManifest PhaserEffect::getManifest() { stages->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); stages->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); stages->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - stages->setDefault(3.5); stages->setMinimum(1.0); stages->setMaximum(6.0); + stages->setDefault(3.5); - EffectManifestParameter* frequency = manifest.addParameter(); - frequency->setId("lfo_frequency"); - frequency->setName(QObject::tr("Rate")); - frequency->setDescription(QObject::tr("Controls the speed of the low frequency oscilator.")); - frequency->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); - frequency->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); - frequency->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - frequency->setDefault(0.5); - frequency->setMinimum(0.0); - frequency->setMaximum(5.0); + EffectManifestParameter* fb = manifest.addParameter(); + fb->setId("feedback"); + fb->setName(QObject::tr("Feedback")); + fb->setDescription(QObject::tr("Controls how much of the output signal is looped")); + fb->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); + fb->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); + fb->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); + fb->setMinimum(-0.95); + fb->setMaximum(0.95); + fb->setDefault(0.0); + + EffectManifestParameter* depth = manifest.addParameter(); + depth->setId("depth"); + depth->setName(QObject::tr("Depth")); + depth->setDescription("Controls the intensity of the effect."); + depth->setControlHint(EffectManifestParameter::CONTROL_KNOB_LINEAR); + depth->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); + depth->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); + depth->setDefaultLinkType(EffectManifestParameter::LINK_LINKED); + depth->setMinimum(0.5); + depth->setMaximum(1.0); + depth->setDefault(0.0); EffectManifestParameter* stereo = manifest.addParameter(); stereo->setId("stereo"); @@ -86,9 +85,9 @@ EffectManifest PhaserEffect::getManifest() { stereo->setControlHint(EffectManifestParameter::CONTROL_TOGGLE_STEPPING); stereo->setSemanticHint(EffectManifestParameter::SEMANTIC_UNKNOWN); stereo->setUnitsHint(EffectManifestParameter::UNITS_UNKNOWN); - stereo->setDefault(0); stereo->setMinimum(0); stereo->setMaximum(1); + stereo->setDefault(0); return manifest; }