zynaddsubfx

ZynAddSubFX open source synthesizer
Log | Files | Refs | Submodules | LICENSE

commit df291efc1568859129de4c067563abb02f5342ec
parent 576f1371b44db44865d57bbd50609e906bd2bfd7
Author: Daniel Sheeler <dsheeler@pobox.com>
Date:   Fri, 15 Mar 2019 00:38:27 -0500

Pfreq => freq

Diffstat:
Msrc/Params/ADnoteParameters.cpp | 4++--
Msrc/Params/LFOParams.cpp | 60++++++++++++++++++++++++++++++++++++------------------------
Msrc/Params/LFOParams.h | 6+++---
Msrc/Synth/LFO.cpp | 6++----
4 files changed, 43 insertions(+), 33 deletions(-)

diff --git a/src/Params/ADnoteParameters.cpp b/src/Params/ADnoteParameters.cpp @@ -317,7 +317,7 @@ static const Ports globalPorts = { rParamZyn(PPanning, rShort("pan"), rDefault(64), "Panning of ADsynth (0 random, 1 left, 127 right)"), rParamF(Volume, rShort("vol"), rLinear(-60.0f,20.0f), - rDefault(-3.75f), "volume control"), + rUnit(dB), rDefault(-3.75f), "volume control"), rParamZyn(PAmpVelocityScaleFunction, rShort("sense"), rDefault(64), "Volume velocity sense"), {"PVolume::i", rShort("vol.") rLinear(0,127) @@ -327,7 +327,7 @@ static const Ports globalPorts = { rObject *obj = (rObject *)d.obj; if (!rtosc_narguments(msg)) d.reply(d.loc, "i", (int)roundf(96.0f * (1.0f + obj->Volume/60.0f))); - else + else obj->Volume = -60.0f * (1.0f - rtosc_argument(msg, 0).i / 96.0f); }}, rParamZyn(Fadein_adjustment, rDefault(FADEIN_ADJUSTMENT_SCALE), diff --git a/src/Params/LFOParams.cpp b/src/Params/LFOParams.cpp @@ -37,17 +37,29 @@ static const rtosc::Ports _ports = { rOptions(ad_global_amp, ad_global_freq, ad_global_filter, ad_voice_amp, ad_voice_freq, ad_voice_filter, unspecified), "location of the filter"), - rParamF(Pfreq, rShort("freq"), rLinear(0.0,1.0), + rParamF(freq, rShort("freq"), rUnit(HZ), rLog(0.078,85.25), rDefaultDepends(loc), - rPreset(ad_global_amp, 0x1.42850ap-1), // 80 - rPreset(ad_global_freq, 0x1.1a3468p-1), // 70 - rPreset(ad_global_filter, 0x1.42850ap-1), - rPreset(ad_voice_amp, 0x1.6ad5acp-1), // 90 - rPreset(ad_voice_freq, 0x1.93264cp-2), // 50 - rPreset(ad_voice_filter, 0x1.93264cp-2), + rPreset(ad_global_amp, 6.49), // 80 + rPreset(ad_global_freq, 3.71), // 70 + rPreset(ad_global_filter, 6.49), + rPreset(ad_voice_amp, 11.25), // 90 + rPreset(ad_voice_freq, 1.19), // 50 + rPreset(ad_voice_filter, 1.19), "frequency of LFO\n" - "lfo frequency = (2^(10*Pfreq)-1)/12 * stretch\n" - "true frequency is [0,85.33] Hz"), + "lfo frequency = Pfreq * stretch\n" + "true frequency is [0,85.25] Hz"), + {"Pfreq::f", rShort("freq.") rLinear(0, 1.0) rDoc("frequency of LFO " + "lfo frequency = Pfreq * stretch " + "true frequency is [0,85.25] Hz"), NULL, + [](const char *msg, RtData &d) + { + rObject *obj = (rObject *)d.obj; + if (!rtosc_narguments(msg)) { + d.reply(d.loc, "f", log2f(12.0f * obj->freq + 1.0f) / 10.0f); + } else { + obj->freq = (powf(2, 10.0f * rtosc_argument(msg, 0).f) - 1.0f) / 12.0f; + } + }}, rParamZyn(Pintensity, rShort("depth"), rDefaultDepends(loc), rDefault(0), rPreset(ad_voice_amp, 32), @@ -119,11 +131,11 @@ void LFOParams::setup() // TODO: reuse LFOParams::LFOParams(const AbsTime *time_) : - LFOParams(64, 0, 0, 0, 0, 0, 0, loc_unspecified, time_) + LFOParams(2.65, 0, 0, 0, 0, 0, 0, loc_unspecified, time_) { } -LFOParams::LFOParams(char Pfreq_, +LFOParams::LFOParams(float freq_, char Pintensity_, char Pstartphase_, char PLFOtype_, @@ -134,7 +146,7 @@ LFOParams::LFOParams(char Pfreq_, const AbsTime *time_) : loc(loc), time(time_), last_update_timestamp(0) { - Dfreq = Pfreq_; + Dfreq = freq_; Dintensity = Pintensity_; Dstartphase = Pstartphase_; DLFOtype = PLFOtype_; @@ -151,10 +163,10 @@ LFOParams::LFOParams(consumer_location_t loc, last_update_timestamp(0) { auto init = - [&](char Pfreq_, char Pintensity_, char Pstartphase_, char PLFOtype_, + [&](float freq_, char Pintensity_, char Pstartphase_, char PLFOtype_, char Prandomness_, char Pdelay_, char Pcontinous_) { - Dfreq = Pfreq_; + Dfreq = freq_; Dintensity = Pintensity_; Dstartphase = Pstartphase_; DLFOtype = PLFOtype_; @@ -165,12 +177,12 @@ LFOParams::LFOParams(consumer_location_t loc, switch(loc) { - case ad_global_amp: init(80, 0, 64, 0, 0, 0, 0); break; - case ad_global_freq: init(70, 0, 64, 0, 0, 0, 0); break; - case ad_global_filter: init(80, 0, 64, 0, 0, 0, 0); break; - case ad_voice_amp: init(90, 32, 64, 0, 0, 30, 0); break; - case ad_voice_freq: init(50, 40, 0, 0, 0, 0, 0); break; - case ad_voice_filter: init(50, 20, 64, 0, 0, 0, 0); break; + case ad_global_amp: init(6.49, 0, 64, 0, 0, 0, 0); break; + case ad_global_freq: init(3.71, 0, 64, 0, 0, 0, 0); break; + case ad_global_filter: init(6.49, 0, 64, 0, 0, 0, 0); break; + case ad_voice_amp: init(11.25, 32, 64, 0, 0, 30, 0); break; + case ad_voice_freq: init(1.19, 40, 0, 0, 0, 0, 0); break; + case ad_voice_filter: init(1.19, 20, 64, 0, 0, 0, 0); break; default: throw std::logic_error("Invalid LFO consumer location"); } @@ -182,7 +194,7 @@ LFOParams::~LFOParams() void LFOParams::defaults() { - Pfreq = Dfreq / 127.0f; + freq = Dfreq; Pintensity = Dintensity; Pstartphase = Dstartphase; PLFOtype = DLFOtype; @@ -196,7 +208,7 @@ void LFOParams::defaults() void LFOParams::add2XML(XMLwrapper& xml) { - xml.addparreal("freq", Pfreq); + xml.addparreal("freq", freq); xml.addpar("intensity", Pintensity); xml.addpar("start_phase", Pstartphase); xml.addpar("lfo_type", PLFOtype); @@ -209,7 +221,7 @@ void LFOParams::add2XML(XMLwrapper& xml) void LFOParams::getfromXML(XMLwrapper& xml) { - Pfreq = xml.getparreal("freq", Pfreq, 0.0f, 1.0f); + freq = xml.getparreal("freq", freq, 0.078f, 85.25f); Pintensity = xml.getpar127("intensity", Pintensity); Pstartphase = xml.getpar127("start_phase", Pstartphase); PLFOtype = xml.getpar127("lfo_type", PLFOtype); @@ -223,7 +235,7 @@ void LFOParams::getfromXML(XMLwrapper& xml) #define COPY(y) this->y=x.y void LFOParams::paste(LFOParams &x) { - COPY(Pfreq); + COPY(freq); COPY(Pintensity); COPY(Pstartphase); COPY(PLFOtype); diff --git a/src/Params/LFOParams.h b/src/Params/LFOParams.h @@ -37,7 +37,7 @@ class LFOParams:public Presets LFOParams(const AbsTime* time_ = nullptr); LFOParams(consumer_location_t loc, const AbsTime* time_ = nullptr); - LFOParams(char Pfreq_, + LFOParams(float freq_, char Pintensity_, char Pstartphase_, char PLFOtype_, @@ -55,7 +55,7 @@ class LFOParams:public Presets void paste(LFOParams &); /* MIDI Parameters*/ - float Pfreq; /**<frequency*/ + float freq; /**<frequency*/ unsigned char Pintensity; /**<intensity*/ unsigned char Pstartphase; /**<start phase (0=random)*/ unsigned char PLFOtype; /**<LFO type (sin,triangle,square,ramp,...)*/ @@ -78,7 +78,7 @@ class LFOParams:public Presets void setup(); /* Default parameters */ - unsigned char Dfreq; + float Dfreq; unsigned char Dintensity; unsigned char Dstartphase; unsigned char DLFOtype; diff --git a/src/Synth/LFO.cpp b/src/Synth/LFO.cpp @@ -38,8 +38,7 @@ LFO::LFO(const LFOParams &lfopars, float basefreq, const AbsTime &t, WatchManage //max 2x/octave const float lfostretch = powf(basefreq / 440.0f, (stretch - 64.0f) / 63.0f); - const float lfofreq = - (powf(2, lfopars.Pfreq * 10.0f) - 1.0f) / 12.0f * lfostretch; + const float lfofreq = lfopars.freq * lfostretch; phaseInc = fabs(lfofreq) * t.dt(); if(!lfopars.Pcontinous) { @@ -128,8 +127,7 @@ float LFO::lfoout() stretch = 1; const float lfostretch = powf(basefreq_ / 440.0f, (stretch - 64.0f) / 63.0f); - float lfofreq = - (powf(2, lfopars_.Pfreq * 10.0f) - 1.0f) / 12.0f * lfostretch; + float lfofreq = lfopars_.freq * lfostretch; phaseInc = fabs(lfofreq) * dt_;