zynaddsubfx

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

commit a403e9a1d6788b2cf4b6372655526ccbc16b3725
parent e69cf702f762420d6d1e6fe800cfbd49e677ec24
Author: Christopher A. Oliver <caowasteland@gmail.com>
Date:   Thu,  5 Nov 2015 14:02:28 -0500

Now user can adjust anti-pop filter for both ADsynth and PADsynth.

Diffstat:
Msrc/Params/ADnoteParameters.h | 2--
Msrc/Params/PADnoteParameters.cpp | 5+++++
Msrc/Params/PADnoteParameters.h | 3+++
Msrc/Synth/PADnote.cpp | 4++++
Msrc/Synth/PADnote.h | 1+
Msrc/UI/PADnoteUI.fl | 18++++++++++++------
Msrc/globals.h | 5+++++
7 files changed, 30 insertions(+), 8 deletions(-)

diff --git a/src/Params/ADnoteParameters.h b/src/Params/ADnoteParameters.h @@ -30,8 +30,6 @@ enum FMTYPE { NONE, MORPH, RING_MOD, PHASE_MOD, FREQ_MOD, PITCH_MOD }; -#define FADEIN_ADJUSTMENT_SCALE 20 - /*****************************************************************/ /* GLOBAL PARAMETERS */ /*****************************************************************/ diff --git a/src/Params/PADnoteParameters.cpp b/src/Params/PADnoteParameters.cpp @@ -51,6 +51,8 @@ static const rtosc::Ports realtime_ports = rParamZyn(PVolume, "Synth Volume"), rParamZyn(PAmpVelocityScaleFunction, "Amplitude Velocity Sensing function"), + rParamZyn(Fadein_adjustment, "Adjustment for anti-pop strategy."), + //Punch rParamZyn(PPunchStrength, "Punch Strength"), rParamZyn(PPunchTime, "UNKNOWN"), @@ -323,6 +325,7 @@ void PADnoteParameters::defaults() PAmpVelocityScaleFunction = 64; AmpEnvelope->defaults(); AmpLfo->defaults(); + Fadein_adjustment = FADEIN_ADJUSTMENT_SCALE; PPunchStrength = 0; PPunchTime = 60; PPunchStretch = 64; @@ -947,6 +950,7 @@ void PADnoteParameters::add2XML(XMLwrapper *xml) xml->addpar("volume", PVolume); xml->addpar("panning", PPanning); xml->addpar("velocity_sensing", PAmpVelocityScaleFunction); + xml->addpar("fadein_adjustment", Fadein_adjustment); xml->addpar("punch_strength", PPunchStrength); xml->addpar("punch_time", PPunchTime); xml->addpar("punch_stretch", PPunchStretch); @@ -1058,6 +1062,7 @@ void PADnoteParameters::getfromXML(XMLwrapper *xml) PPanning = xml->getpar127("panning", PPanning); PAmpVelocityScaleFunction = xml->getpar127("velocity_sensing", PAmpVelocityScaleFunction); + Fadein_adjustment = xml->getpar127("fadein_adjustment", Fadein_adjustment); PPunchStrength = xml->getpar127("punch_strength", PPunchStrength); PPunchTime = xml->getpar127("punch_time", PPunchTime); PPunchStretch = xml->getpar127("punch_stretch", PPunchStretch); diff --git a/src/Params/PADnoteParameters.h b/src/Params/PADnoteParameters.h @@ -126,6 +126,9 @@ class PADnoteParameters:public Presets LFOParams *AmpLfo; + /* Adjustment factor for anti-pop fadein */ + unsigned char Fadein_adjustment; + unsigned char PPunchStrength, PPunchTime, PPunchStretch, PPunchVelocitySensing; diff --git a/src/Synth/PADnote.cpp b/src/Synth/PADnote.cpp @@ -114,6 +114,9 @@ void PADnote::setup(float freq, PFilterVelocityScaleFunction) - 1); if(!legato) { + NoteGlobalPar.Fadein_adjustment = + pars.Fadein_adjustment / (float)FADEIN_ADJUSTMENT_SCALE; + NoteGlobalPar.Fadein_adjustment *= NoteGlobalPar.Fadein_adjustment; if(pars.PPunchStrength != 0) { NoteGlobalPar.Punch.Enabled = 1; NoteGlobalPar.Punch.t = 1.0f; //start from 1.0f and to 0.0f @@ -206,6 +209,7 @@ inline void PADnote::fadein(float *smps) float tmp = (synth.buffersize_f - 1.0f) / (zerocrossings + 1) / 3.0f; if(tmp < 8.0f) tmp = 8.0f; + tmp *= NoteGlobalPar.Fadein_adjustment; int n; F2I(tmp, n); //how many samples is the fade-in diff --git a/src/Synth/PADnote.h b/src/Synth/PADnote.h @@ -85,6 +85,7 @@ class PADnote:public SynthNote Envelope *AmpEnvelope; LFO *AmpLfo; + float Fadein_adjustment; struct { int Enabled; float initialvalue, dt, t; diff --git a/src/UI/PADnoteUI.fl b/src/UI/PADnoteUI.fl @@ -714,27 +714,33 @@ cbwidget->do_callback();} code0 {o->init("PPanning");} class Fl_Osc_Dial } + Fl_Dial {} { + label De-pop selected + tooltip {Pop suppression} xywh {208 238 20 20} type Float labelsize 10 maximum 127 step 1 textfont 1 textsize 11 + code0 {o->init("Fadein_adjustment");} + class Fl_Osc_Dial + } Fl_Dial pstr { label {P.Str.} - tooltip {Punch Strength} xywh {125 247 25 25} box ROUND_UP_BOX labelsize 10 align 1 maximum 127 step 1 + tooltip {Punch Strength} xywh {78 247 25 25} box ROUND_UP_BOX labelsize 10 align 1 maximum 127 step 1 code0 {o->init("PPunchStrength");} class Fl_Osc_Dial } Fl_Dial pt { label {P.t.} - tooltip {Punch Time (duration)} xywh {155 247 25 25} box ROUND_UP_BOX labelsize 10 align 1 maximum 127 step 1 + tooltip {Punch Time (duration)} xywh {108 247 25 25} box ROUND_UP_BOX labelsize 10 align 1 maximum 127 step 1 code0 {o->init("PPunchTime");} class Fl_Osc_Dial } Fl_Dial pstc { label {P.Stc.} - tooltip {Punch Stretch} xywh {185 247 25 25} box ROUND_UP_BOX labelsize 10 align 1 maximum 127 step 1 + tooltip {Punch Stretch} xywh {138 247 25 25} box ROUND_UP_BOX labelsize 10 align 1 maximum 127 step 1 code0 {o->init("PPunchStretch");} class Fl_Osc_Dial } Fl_Dial pvel { label {P.Vel.} - tooltip {Punch Velocity Sensing} xywh {215 247 25 25} box ROUND_UP_BOX labelsize 10 align 1 maximum 127 step 1 + tooltip {Punch Velocity Sensing} xywh {168 247 25 25} box ROUND_UP_BOX labelsize 10 align 1 maximum 127 step 1 code0 {o->init("PPunchVelocitySensing");} class Fl_Osc_Dial } @@ -753,7 +759,7 @@ cbwidget->do_callback();} Fl_Check_Button stereo { label Stereo callback {hprofile->redraw();} - xywh {15 245 70 25} down_box DOWN_BOX + xywh {10 245 70 25} down_box DOWN_BOX labelsize 12 code0 {o->init("PStereo");} class Fl_Osc_Check } @@ -776,7 +782,7 @@ cbwidget->do_callback();} } {} Fl_Group filterui { label {PADsynth - Filter} open - xywh {250 55 275 75} box FLAT_BOX color 50 align 144 + xywh {250 50 275 75} box FLAT_BOX color 50 align 144 code0 {o->init(location + "PFilter", osc_i, location, "GlobalFilter/");} class FilterUI diff --git a/src/globals.h b/src/globals.h @@ -180,6 +180,11 @@ typedef std::complex<fftw_real> fft_t; #define LOG_10 2.302585093f /* + * For de-pop adjustment + */ +#define FADEIN_ADJUSTMENT_SCALE 20 + +/* * Envelope Limits */ #define MAX_ENVELOPE_POINTS 40