commit df291efc1568859129de4c067563abb02f5342ec
parent 576f1371b44db44865d57bbd50609e906bd2bfd7
Author: Daniel Sheeler <dsheeler@pobox.com>
Date: Fri, 15 Mar 2019 00:38:27 -0500
Pfreq => freq
Diffstat:
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_;