zynaddsubfx

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

commit 3446ecd6ae8a3c240196cb57b23d3d27f2c657a3
parent a49d349c69870493d63500f4404712f82ff2cb88
Author: Christopher A. Oliver <caowasteland@gmail.com>
Date:   Fri, 13 Nov 2015 05:43:04 -0500

Fix formant filter center freq and range outputs.
Fix bug with slow drag where widget has a step of 1.
Use step_ for variable since step() has meaning in fltk.

Diffstat:
Msrc/UI/FilterUI.fl | 20++++++++++----------
Msrc/UI/Fl_Osc_Slider.cpp | 16+++++++++-------
2 files changed, 19 insertions(+), 17 deletions(-)

diff --git a/src/UI/FilterUI.fl b/src/UI/FilterUI.fl @@ -361,40 +361,40 @@ formantfiltergraph->redraw();} label {Num.Formants} callback {update_formant_window(); formantfiltergraph->redraw();} - xywh {485 15 65 20} type Simple labelfont 1 labelsize 10 align 5 minimum 0 maximum 127 step 1 + xywh {485 15 65 20} type Simple labelfont 0 labelsize 10 align 5 minimum 0 maximum 127 step 1 code0 {o->bounds(1,FF_MAX_FORMANTS);} code1 {o->init("Pnumformants");} class Fl_Osc_Counter } Fl_Dial frsldial { label {Fr.Sl.} - tooltip {Formant's Slowness (Morphing)} xywh {565 15 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 align 1 maximum 127 step 1 + tooltip {Formant's Slowness (Morphing)} xywh {565 15 25 25} box ROUND_UP_BOX labelfont 0 labelsize 10 align 1 maximum 127 step 1 code0 {o->init("Pformantslowness");} class Fl_Osc_Dial } Fl_Value_Output centerfreqvo { label {C.f.} callback {o->value(o->newvalue()/1000.0);} - tooltip {Center Frequency (kHz)} xywh {515 164 33 18} when 3 minimum 1 maximum 10 step 0.01 value 1 textfont 1 + tooltip {Center Frequency (kHz)} xywh {511 164 40 18} when 3 minimum 1 maximum 10 step 0.01 value 1 textfont 1 textsize 11 labelsize 13 code0 {o->init("centerfreq");} class Fl_Osc_Output } Fl_Value_Output octavesfreqvo { label {Oct.} callback {o->value(o->newvalue());} - tooltip {No. of octaves} xywh {515 182 33 18} when 3 minimum 1 maximum 127 step 1 value 5 textfont 1 + tooltip {No. of octaves} xywh {511 182 40 18} when 3 minimum 1 maximum 127 step 0.01 value 5 textfont 1 textsize 11 labelsize 13 code0 {o->init("octavesfreq");} class Fl_Osc_Output } Fl_Slider cfknob { - callback {/*formantfiltergraph->redraw();*/} - xywh {551 167 84 15} type {Horz Knob} box FLAT_BOX maximum 127 + callback {centerfreqvo->update();} + xywh {555 167 84 15} type {Horz Knob} box FLAT_BOX maximum 127 code0 {o->init("Pcenterfreq", 'i');} class Fl_Osc_Slider } Fl_Slider octknob { - callback {/*formantfiltergraph->redraw();*/} - xywh {551 185 84 15} type {Horz Knob} box FLAT_BOX maximum 127 + callback {octavesfreqvo->update();} + xywh {555 185 84 15} type {Horz Knob} box FLAT_BOX maximum 127 code0 {o->init("Poctavesfreq", 'i');} class Fl_Osc_Slider } @@ -405,7 +405,7 @@ formantfiltergraph->redraw();} } Fl_Dial wvknob { label {Vw.Cl.} - tooltip {Vowel "clearness" (how the mixed vowels are avoided)} xywh {600 15 25 25} box ROUND_UP_BOX labelfont 1 labelsize 10 align 1 maximum 127 step 1 + tooltip {Vowel "clearness" (how the mixed vowels are avoided)} xywh {600 15 25 25} box ROUND_UP_BOX labelfont 0 labelsize 10 align 1 maximum 127 step 1 code0 {o->init("Pvowelclearness");} class Fl_Osc_Dial } @@ -421,7 +421,7 @@ formantfiltergraph->redraw();} } Fl_Box {} { label Vowel - xywh {635 10 55 15} + xywh {635 6 55 15} labelfont 1 } } } diff --git a/src/UI/Fl_Osc_Slider.cpp b/src/UI/Fl_Osc_Slider.cpp @@ -102,8 +102,10 @@ int Fl_Osc_Slider::handle(int ev, int X, int Y, int W, int H) { float range = maximum() - minimum(); float absrng = range > 0 ? range : -range; + float step_ = step(); + if (step_ == 0) step_ = 1; - if (absrng / W / step() > 32 && Fl::event_button1()) + if (absrng / W / step_ > 32 && Fl::event_button1()) denominator = 0.25; if (range < 0) denominator *= -1; @@ -111,23 +113,23 @@ int Fl_Osc_Slider::handle(int ev, int X, int Y, int W, int H) break; case FL_MOUSEWHEEL: if (this == Fl::belowmouse() && Fl::e_dy != 0) { - int step = 1, divisor = 16; + int step_ = 1, divisor = 16; switch (Fl::event_state() & ( FL_CTRL | FL_SHIFT)) { case FL_SHIFT: - step = 8; + step_ = 8; case FL_SHIFT | FL_CTRL: break; case FL_CTRL: divisor = 128; default: - step = (fabs(maximum() - minimum()) + 1) / divisor; - if (step < 1) - step = 1; + step_ = (fabs(maximum() - minimum()) + 1) / divisor; + if (step_ < 1) + step_ = 1; } int dy = minimum() <= maximum() ? -Fl::e_dy : Fl::e_dy; // Flip sense for vertical sliders. dy = this->horizontal() ? dy : -dy; - handle_drag(clamp(value() + step * dy)); + handle_drag(clamp(value() + step_ * dy)); } return 1; case FL_RELEASE: