|
- // generated by Fast Light User Interface Designer (fluid) version 1.0300
-
- #include "external/zynaddsubfx/UI/FilterUI.h"
- //Copyright (c) 2002-2005 Nasca Octavian Paul
- //License: GNU GPL version 2 or later
- #include <cmath>
- #include <stdio.h>
- #include <stdlib.h>
-
- void FilterUI::cb_P_i(Fl_Button*, void*) {
- presetsui->paste(filterui->loc(),this);
- }
- void FilterUI::cb_P(Fl_Button* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_P_i(o,v);
- }
-
- Fl_Menu_Item FilterUI::menu_analogfiltertypechoice[] = {
- {"LPF1", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"HPF1", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"LPF2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"HPF2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"BPF2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"NF2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"PkF2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"LSh2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"HSh2", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {0,0,0,0,0,0,0,0,0}
- };
-
- Fl_Menu_Item FilterUI::menu_svfiltertypechoice[] = {
- {"1LPF", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"1HPF", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"1BPF", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"1NF", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {0,0,0,0,0,0,0,0,0}
- };
-
- void FilterUI::cb_filtertype_i(Fl_Osc_Choice*, void*) {
- refresh();
- }
- void FilterUI::cb_filtertype(Fl_Osc_Choice* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->user_data()))->cb_filtertype_i(o,v);
- }
-
- Fl_Menu_Item FilterUI::menu_filtertype[] = {
- {"Analog", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"Formant", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {"StVarF", 0, 0, 0, 0, FL_NORMAL_LABEL, 1, 10, 0},
- {0,0,0,0,0,0,0,0,0}
- };
-
- void FilterUI::cb_qdial_i(Fl_Osc_Dial*, void*) {
- formantfiltergraph->redraw();
- }
- void FilterUI::cb_qdial(Fl_Osc_Dial* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->user_data()))->cb_qdial_i(o,v);
- }
-
- void FilterUI::cb_gaindial_i(Fl_Osc_Dial*, void*) {
- formantfiltergraph->redraw();
- }
- void FilterUI::cb_gaindial(Fl_Osc_Dial* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->user_data()))->cb_gaindial_i(o,v);
- }
-
- void FilterUI::cb_stcounter_i(Fl_Osc_Choice*, void*) {
- formantfiltergraph->redraw();
- }
- void FilterUI::cb_stcounter(Fl_Osc_Choice* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->user_data()))->cb_stcounter_i(o,v);
- }
-
- void FilterUI::cb_editbutton_i(Fl_Button*, void*) {
- formantparswindow->show();
- }
- void FilterUI::cb_editbutton(Fl_Button* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_editbutton_i(o,v);
- }
-
- void FilterUI::cb_C_i(Fl_Button*, void*) {
- presetsui->copy(filterui->loc());
- }
- void FilterUI::cb_C(Fl_Button* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_C_i(o,v);
- }
-
- void FilterUI::cb_P1_i(Fl_Button*, void*) {
- presetsui->paste(filterui->loc(),this);
- }
- void FilterUI::cb_P1(Fl_Button* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_P1_i(o,v);
- }
-
- void FilterUI::cb_P2_i(Fl_Button*, void*) {
- presetsui->paste(filterui->loc(),this,nvowel);
- }
- void FilterUI::cb_P2(Fl_Button* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_P2_i(o,v);
- }
-
- void FilterUI::cb_Formant_i(Fl_Counter* o, void*) {
- nformant=(int) o->value();
- formantparsgroup->reext("Pvowels"+to_s(nvowel)+"/Pformants"+to_s(nformant)+"/");
- update_formant_window();
- formantfiltergraph->redraw();
- }
- void FilterUI::cb_Formant(Fl_Counter* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->user_data()))->cb_Formant_i(o,v);
- }
-
- void FilterUI::cb_Vowel_i(Fl_Counter* o, void*) {
- nvowel=(int) o->value();
- formantparsgroup->reext("Pvowels"+to_s(nvowel)+"/Pformants"+to_s(nformant)+"/");
- update_formant_window();
- formantfiltergraph->redraw();
- }
- void FilterUI::cb_Vowel(Fl_Counter* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->user_data()))->cb_Vowel_i(o,v);
- }
-
- void FilterUI::cb_formant_freq_dial_i(Fl_Osc_Dial*, void*) {
- formantfiltergraph->update();
- }
- void FilterUI::cb_formant_freq_dial(Fl_Osc_Dial* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->parent()->user_data()))->cb_formant_freq_dial_i(o,v);
- }
-
- void FilterUI::cb_formant_q_dial_i(Fl_Osc_Dial*, void*) {
- formantfiltergraph->update();
- }
- void FilterUI::cb_formant_q_dial(Fl_Osc_Dial* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->parent()->user_data()))->cb_formant_q_dial_i(o,v);
- }
-
- void FilterUI::cb_formant_amp_dial_i(Fl_Osc_Dial*, void*) {
- formantfiltergraph->update();
- }
- void FilterUI::cb_formant_amp_dial(Fl_Osc_Dial* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->parent()->user_data()))->cb_formant_amp_dial_i(o,v);
- }
-
- void FilterUI::cb_sequencesize_i(Fl_Osc_Counter*, void*) {
- update_formant_window();
- }
- void FilterUI::cb_sequencesize(Fl_Osc_Counter* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->user_data()))->cb_sequencesize_i(o,v);
- }
-
- void FilterUI::cb_S_i(Fl_Counter* o, void*) {
- nseqpos = o->value();update_formant_window();vowel_counter->oscMove("vowel_seq"+to_s(nseqpos));
- }
- void FilterUI::cb_S(Fl_Counter* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->user_data()))->cb_S_i(o,v);
- }
-
- void FilterUI::cb_vowel_counter_i(Fl_Osc_Counter* o, void*) {
- (void)o;//pars->Psequence[nseqpos].nvowel=(int) o->value(); pars->changed=true;
- }
- void FilterUI::cb_vowel_counter(Fl_Osc_Counter* o, void* v) {
- ((FilterUI*)(o->parent()->parent()->user_data()))->cb_vowel_counter_i(o,v);
- }
-
- void FilterUI::cb_numformants_i(Fl_Osc_Counter*, void*) {
- update_formant_window();
- formantfiltergraph->redraw();
- }
- void FilterUI::cb_numformants(Fl_Osc_Counter* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_numformants_i(o,v);
- }
-
- void FilterUI::cb_centerfreqvo_i(Fl_Osc_Output* o, void*) {
- o->value(o->newvalue()/1000.0);
- }
- void FilterUI::cb_centerfreqvo(Fl_Osc_Output* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_centerfreqvo_i(o,v);
- }
-
- void FilterUI::cb_octavesfreqvo_i(Fl_Osc_Output* o, void*) {
- o->value(o->newvalue());
- }
- void FilterUI::cb_octavesfreqvo(Fl_Osc_Output* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_octavesfreqvo_i(o,v);
- }
-
- void FilterUI::cb_cfknob_i(Fl_Osc_Slider*, void*) {
- centerfreqvo->update();
- }
- void FilterUI::cb_cfknob(Fl_Osc_Slider* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_cfknob_i(o,v);
- }
-
- void FilterUI::cb_octknob_i(Fl_Osc_Slider*, void*) {
- octavesfreqvo->update();
- }
- void FilterUI::cb_octknob(Fl_Osc_Slider* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_octknob_i(o,v);
- }
-
- void FilterUI::cb_Close_i(Fl_Button*, void*) {
- formantparswindow->hide();
- }
- void FilterUI::cb_Close(Fl_Button* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_Close_i(o,v);
- }
-
- void FilterUI::cb_C1_i(Fl_Button*, void*) {
- presetsui->copy(filterui->loc(),nvowel);
- }
- void FilterUI::cb_C1(Fl_Button* o, void* v) {
- ((FilterUI*)(o->parent()->user_data()))->cb_C1_i(o,v);
- }
-
- FilterUI::FilterUI(int x,int y, int w, int h, const char *label):Fl_Osc_Group(x,y,w,h) {
- nvowel=0;nformant=0;nseqpos=0;
- }
-
- FilterUI::~FilterUI() {
- filterui->hide();
- formantparswindow->hide();
- hide();
- //delete (filterui);
- delete (formantparswindow);
- }
-
- Fl_Osc_Group* FilterUI::make_window() {
- { filterui = new Fl_Osc_Group(0, 0, 275, 70);
- filterui->box(FL_FLAT_BOX);
- filterui->color(FL_LIGHT1);
- filterui->selection_color(FL_BACKGROUND_COLOR);
- filterui->labeltype(FL_NO_LABEL);
- filterui->labelfont(1);
- filterui->labelsize(14);
- filterui->labelcolor(FL_FOREGROUND_COLOR);
- filterui->user_data((void*)(this));
- filterui->align(Fl_Align(FL_ALIGN_TOP));
- filterui->when(FL_WHEN_RELEASE);
- { Fl_Button* o = new Fl_Button(203, 5, 15, 15, "P");
- o->box(FL_THIN_UP_BOX);
- o->color((Fl_Color)179);
- o->labelfont(1);
- o->labelsize(10);
- o->labelcolor((Fl_Color)55);
- o->callback((Fl_Callback*)cb_P);
- } // Fl_Button* o
- { Fl_Group* o = filterparamswindow = new Fl_Group(0, 0, 275, 75, "Filter Parameters");
- filterparamswindow->box(FL_UP_FRAME);
- filterparamswindow->color((Fl_Color)183);
- filterparamswindow->labeltype(FL_ENGRAVED_LABEL);
- filterparamswindow->labelsize(10);
- filterparamswindow->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
- { Fl_Osc_Choice* o = analogfiltertypechoice = new Fl_Osc_Choice(10, 50, 50, 15, "FilterType");
- analogfiltertypechoice->tooltip("The Filter type");
- analogfiltertypechoice->box(FL_UP_BOX);
- analogfiltertypechoice->down_box(FL_BORDER_BOX);
- analogfiltertypechoice->color(FL_BACKGROUND_COLOR);
- analogfiltertypechoice->selection_color(FL_SELECTION_COLOR);
- analogfiltertypechoice->labeltype(FL_NORMAL_LABEL);
- analogfiltertypechoice->labelfont(0);
- analogfiltertypechoice->labelsize(10);
- analogfiltertypechoice->labelcolor(FL_FOREGROUND_COLOR);
- analogfiltertypechoice->textsize(10);
- analogfiltertypechoice->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- analogfiltertypechoice->when(FL_WHEN_RELEASE);
- analogfiltertypechoice->menu(menu_analogfiltertypechoice);
- o->init("Ptype");
- } // Fl_Osc_Choice* analogfiltertypechoice
- { Fl_Osc_Choice* o = svfiltertypechoice = new Fl_Osc_Choice(10, 50, 50, 15, "FilterType");
- svfiltertypechoice->tooltip("The Filter type");
- svfiltertypechoice->box(FL_UP_BOX);
- svfiltertypechoice->down_box(FL_BORDER_BOX);
- svfiltertypechoice->color(FL_BACKGROUND_COLOR);
- svfiltertypechoice->selection_color(FL_SELECTION_COLOR);
- svfiltertypechoice->labeltype(FL_NORMAL_LABEL);
- svfiltertypechoice->labelfont(0);
- svfiltertypechoice->labelsize(10);
- svfiltertypechoice->labelcolor(FL_FOREGROUND_COLOR);
- svfiltertypechoice->textsize(10);
- svfiltertypechoice->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- svfiltertypechoice->when(FL_WHEN_RELEASE);
- svfiltertypechoice->menu(menu_svfiltertypechoice);
- o->init("Ptype");
- } // Fl_Osc_Choice* svfiltertypechoice
- { Fl_Osc_Choice* o = filtertype = new Fl_Osc_Choice(10, 20, 60, 15, "Category");
- filtertype->tooltip("The Category of the Filter (Analog/Formantic/etc.)");
- filtertype->box(FL_UP_BOX);
- filtertype->down_box(FL_BORDER_BOX);
- filtertype->color(FL_BACKGROUND_COLOR);
- filtertype->selection_color(FL_SELECTION_COLOR);
- filtertype->labeltype(FL_NORMAL_LABEL);
- filtertype->labelfont(0);
- filtertype->labelsize(10);
- filtertype->labelcolor(FL_FOREGROUND_COLOR);
- filtertype->textsize(10);
- filtertype->callback((Fl_Callback*)cb_filtertype);
- filtertype->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- filtertype->when(FL_WHEN_RELEASE);
- filtertype->menu(menu_filtertype);
- o->init("Pcategory");
- } // Fl_Osc_Choice* filtertype
- { Fl_Osc_Dial* o = cfreqdial = new Fl_Osc_Dial(75, 25, 30, 30, "C.Freq");
- cfreqdial->tooltip("Center Frequency of the Filter or the base position in the vowel\'s sequence");
- cfreqdial->box(FL_ROUND_UP_BOX);
- cfreqdial->color(FL_BACKGROUND_COLOR);
- cfreqdial->selection_color(FL_INACTIVE_COLOR);
- cfreqdial->labeltype(FL_NORMAL_LABEL);
- cfreqdial->labelfont(0);
- cfreqdial->labelsize(10);
- cfreqdial->labelcolor(FL_FOREGROUND_COLOR);
- cfreqdial->maximum(127);
- cfreqdial->step(1);
- cfreqdial->align(Fl_Align(FL_ALIGN_BOTTOM));
- cfreqdial->when(FL_WHEN_CHANGED);
- o->init("Pfreq");
- } // Fl_Osc_Dial* cfreqdial
- { Fl_Osc_Dial* o = qdial = new Fl_Osc_Dial(110, 25, 30, 30, "Q");
- qdial->tooltip("Filter resonance or bandwidth");
- qdial->box(FL_ROUND_UP_BOX);
- qdial->color(FL_BACKGROUND_COLOR);
- qdial->selection_color(FL_INACTIVE_COLOR);
- qdial->labeltype(FL_NORMAL_LABEL);
- qdial->labelfont(0);
- qdial->labelsize(10);
- qdial->labelcolor(FL_FOREGROUND_COLOR);
- qdial->maximum(127);
- qdial->step(1);
- qdial->callback((Fl_Callback*)cb_qdial);
- qdial->align(Fl_Align(FL_ALIGN_BOTTOM));
- qdial->when(FL_WHEN_CHANGED);
- o->init("Pq");
- } // Fl_Osc_Dial* qdial
- { Fl_Osc_Dial* o = freqtrdial = new Fl_Osc_Dial(215, 25, 30, 30, "freq.tr.");
- freqtrdial->tooltip("Filter frequency tracking (left is negative, middle is 0, and right is positi\
- ve)");
- freqtrdial->box(FL_ROUND_UP_BOX);
- freqtrdial->color(FL_BACKGROUND_COLOR);
- freqtrdial->selection_color(FL_INACTIVE_COLOR);
- freqtrdial->labeltype(FL_NORMAL_LABEL);
- freqtrdial->labelfont(0);
- freqtrdial->labelsize(10);
- freqtrdial->labelcolor(FL_FOREGROUND_COLOR);
- freqtrdial->maximum(127);
- freqtrdial->step(1);
- freqtrdial->align(Fl_Align(FL_ALIGN_BOTTOM));
- freqtrdial->when(FL_WHEN_CHANGED);
- o->init("Pfreqtrack");
- } // Fl_Osc_Dial* freqtrdial
- { Fl_Osc_Dial* o = vsnsadial = new Fl_Osc_Dial(145, 25, 30, 30, "V.SnsA.");
- vsnsadial->tooltip("Velocity sensing amount of the Filter");
- vsnsadial->box(FL_ROUND_UP_BOX);
- vsnsadial->color(FL_BACKGROUND_COLOR);
- vsnsadial->selection_color(FL_INACTIVE_COLOR);
- vsnsadial->labeltype(FL_NORMAL_LABEL);
- vsnsadial->labelfont(0);
- vsnsadial->labelsize(10);
- vsnsadial->labelcolor(FL_FOREGROUND_COLOR);
- vsnsadial->maximum(127);
- vsnsadial->step(1);
- vsnsadial->align(Fl_Align(FL_ALIGN_BOTTOM));
- vsnsadial->when(FL_WHEN_CHANGED);
- if(!alt_root.empty()) o->alt_init(alt_root, "VelocityScale");
- else {o->deactivate(); o->value(127);o->mark_dead();}
- } // Fl_Osc_Dial* vsnsadial
- { Fl_Osc_Dial* o = vsnsdial = new Fl_Osc_Dial(180, 25, 30, 30, "V.Sns.");
- vsnsdial->tooltip("Velocity Sensing Function of the Filter");
- vsnsdial->box(FL_ROUND_UP_BOX);
- vsnsdial->color(FL_BACKGROUND_COLOR);
- vsnsdial->selection_color(FL_INACTIVE_COLOR);
- vsnsdial->labeltype(FL_NORMAL_LABEL);
- vsnsdial->labelfont(0);
- vsnsdial->labelsize(10);
- vsnsdial->labelcolor(FL_FOREGROUND_COLOR);
- vsnsdial->maximum(127);
- vsnsdial->step(1);
- vsnsdial->align(Fl_Align(FL_ALIGN_BOTTOM));
- vsnsdial->when(FL_WHEN_CHANGED);
- if(!alt_root.empty()) o->alt_init(alt_root, "VelocityScaleFunction");
- else {o->deactivate(); o->value(127);o->mark_dead();}
- } // Fl_Osc_Dial* vsnsdial
- { Fl_Osc_Dial* o = gaindial = new Fl_Osc_Dial(250, 35, 20, 20, "gain");
- gaindial->tooltip("Filter output gain/damp");
- gaindial->box(FL_ROUND_UP_BOX);
- gaindial->color(FL_BACKGROUND_COLOR);
- gaindial->selection_color(FL_INACTIVE_COLOR);
- gaindial->labeltype(FL_NORMAL_LABEL);
- gaindial->labelfont(0);
- gaindial->labelsize(10);
- gaindial->labelcolor(FL_FOREGROUND_COLOR);
- gaindial->maximum(127);
- gaindial->step(1);
- gaindial->callback((Fl_Callback*)cb_gaindial);
- gaindial->align(Fl_Align(FL_ALIGN_BOTTOM));
- gaindial->when(FL_WHEN_CHANGED);
- o->init("Pgain");
- } // Fl_Osc_Dial* gaindial
- { Fl_Osc_Choice* o = stcounter = new Fl_Osc_Choice(235, 5, 35, 15, "St");
- stcounter->tooltip("Filter stages (in order to increase dB/oct. value and the order of the filter\
- )");
- stcounter->box(FL_UP_BOX);
- stcounter->down_box(FL_BORDER_BOX);
- stcounter->color(FL_BACKGROUND_COLOR);
- stcounter->selection_color(FL_SELECTION_COLOR);
- stcounter->labeltype(FL_NORMAL_LABEL);
- stcounter->labelfont(0);
- stcounter->labelsize(10);
- stcounter->labelcolor(FL_FOREGROUND_COLOR);
- stcounter->textfont(1);
- stcounter->textsize(10);
- stcounter->callback((Fl_Callback*)cb_stcounter);
- stcounter->align(Fl_Align(FL_ALIGN_LEFT));
- stcounter->when(FL_WHEN_RELEASE);
- for (int i=0;i<MAX_FILTER_STAGES;i++) {char tmp[10];snprintf(tmp,10,"%dx",i+1);o->add(tmp);};
- o->init("Pstages");
- } // Fl_Osc_Choice* stcounter
- set_module_parameters( o );
- filterparamswindow->end();
- } // Fl_Group* filterparamswindow
- { editbutton = new Fl_Button(15, 40, 50, 25, "Edit");
- editbutton->labelfont(1);
- editbutton->labelsize(11);
- editbutton->callback((Fl_Callback*)cb_editbutton);
- } // Fl_Button* editbutton
- { Fl_Button* o = new Fl_Button(186, 5, 15, 15, "C");
- o->box(FL_THIN_UP_BOX);
- o->color((Fl_Color)179);
- o->labelfont(1);
- o->labelsize(10);
- o->labelcolor((Fl_Color)55);
- o->callback((Fl_Callback*)cb_C);
- } // Fl_Button* o
- { Fl_Button* o = new Fl_Button(203, 5, 15, 15, "P");
- o->box(FL_THIN_UP_BOX);
- o->color((Fl_Color)179);
- o->labelfont(1);
- o->labelsize(10);
- o->labelcolor((Fl_Color)55);
- o->callback((Fl_Callback*)cb_P1);
- } // Fl_Button* o
- filterui->end();
- } // Fl_Osc_Group* filterui
- return filterui;
- }
-
- Fl_Osc_Window* FilterUI::make_formant_window() {
- { formantparswindow = new Fl_Osc_Window(700, 205, "Formant Filter Parameters");
- formantparswindow->box(FL_FLAT_BOX);
- formantparswindow->color(FL_BACKGROUND_COLOR);
- formantparswindow->selection_color(FL_BACKGROUND_COLOR);
- formantparswindow->labeltype(FL_NO_LABEL);
- formantparswindow->labelfont(0);
- formantparswindow->labelsize(14);
- formantparswindow->labelcolor(FL_FOREGROUND_COLOR);
- formantparswindow->user_data((void*)(this));
- formantparswindow->align(Fl_Align(FL_ALIGN_TOP));
- formantparswindow->when(FL_WHEN_RELEASE);
- { Fl_Button* o = new Fl_Button(665, 25, 25, 15, "P");
- o->box(FL_THIN_UP_BOX);
- o->color((Fl_Color)179);
- o->labelfont(1);
- o->labelsize(11);
- o->labelcolor((Fl_Color)55);
- o->callback((Fl_Callback*)cb_P2);
- formantparswindow->osc = osc;
- formantparswindow->base = loc();
- } // Fl_Button* o
- { Fl_Osc_Group* o = new Fl_Osc_Group(485, 47, 105, 113);
- o->box(FL_THIN_UP_BOX);
- o->color(FL_BACKGROUND_COLOR);
- o->selection_color(FL_BACKGROUND_COLOR);
- o->labeltype(FL_NORMAL_LABEL);
- o->labelfont(0);
- o->labelsize(14);
- o->labelcolor(FL_FOREGROUND_COLOR);
- o->align(Fl_Align(FL_ALIGN_TOP));
- o->when(FL_WHEN_RELEASE);
- { Fl_Counter* o = new Fl_Counter(545, 80, 40, 15, "Formant ");
- o->type(1);
- o->labelfont(1);
- o->labelsize(10);
- o->minimum(0);
- o->maximum(127);
- o->step(1);
- o->textsize(10);
- o->callback((Fl_Callback*)cb_Formant);
- o->align(Fl_Align(FL_ALIGN_LEFT));
- o->bounds(0,FF_MAX_FORMANTS-1);
- o->value(nformant);
- } // Fl_Counter* o
- { Fl_Counter* o = new Fl_Counter(545, 55, 40, 20, "Vowel no.");
- o->type(1);
- o->labelfont(1);
- o->labelsize(10);
- o->minimum(0);
- o->maximum(127);
- o->step(1);
- o->textfont(1);
- o->textsize(11);
- o->callback((Fl_Callback*)cb_Vowel);
- o->align(Fl_Align(FL_ALIGN_LEFT));
- o->bounds(0,FF_MAX_VOWELS-1);
- o->value(nvowel);
- } // Fl_Counter* o
- { formantparsgroup = new Fl_Osc_Group(490, 105, 95, 50);
- formantparsgroup->box(FL_ENGRAVED_FRAME);
- formantparsgroup->color(FL_BACKGROUND_COLOR);
- formantparsgroup->selection_color(FL_BACKGROUND_COLOR);
- formantparsgroup->labeltype(FL_NORMAL_LABEL);
- formantparsgroup->labelfont(0);
- formantparsgroup->labelsize(14);
- formantparsgroup->labelcolor(FL_FOREGROUND_COLOR);
- formantparsgroup->align(Fl_Align(FL_ALIGN_TOP));
- formantparsgroup->when(FL_WHEN_RELEASE);
- { Fl_Box* o = new Fl_Box(515, 130, 35, 16, "dummy");
- o->hide();
- o->deactivate();
- formantparsgroup->ext = "Pvowels0/Pformants0/";
- } // Fl_Box* o
- { Fl_Osc_Dial* o = formant_freq_dial = new Fl_Osc_Dial(495, 115, 25, 25, "freq");
- formant_freq_dial->tooltip("Formant frequency");
- formant_freq_dial->box(FL_ROUND_UP_BOX);
- formant_freq_dial->color(FL_BACKGROUND_COLOR);
- formant_freq_dial->selection_color(FL_INACTIVE_COLOR);
- formant_freq_dial->labeltype(FL_NORMAL_LABEL);
- formant_freq_dial->labelfont(0);
- formant_freq_dial->labelsize(10);
- formant_freq_dial->labelcolor(FL_FOREGROUND_COLOR);
- formant_freq_dial->maximum(127);
- formant_freq_dial->step(1);
- formant_freq_dial->callback((Fl_Callback*)cb_formant_freq_dial);
- formant_freq_dial->align(Fl_Align(FL_ALIGN_BOTTOM));
- formant_freq_dial->when(FL_WHEN_CHANGED);
- //TODO get widget renaming working here!!!
- o->init("freq");
- } // Fl_Osc_Dial* formant_freq_dial
- { Fl_Osc_Dial* o = formant_q_dial = new Fl_Osc_Dial(525, 115, 24, 25, "Q");
- formant_q_dial->tooltip("Formant\'s Q");
- formant_q_dial->box(FL_ROUND_UP_BOX);
- formant_q_dial->color(FL_BACKGROUND_COLOR);
- formant_q_dial->selection_color(FL_INACTIVE_COLOR);
- formant_q_dial->labeltype(FL_NORMAL_LABEL);
- formant_q_dial->labelfont(0);
- formant_q_dial->labelsize(10);
- formant_q_dial->labelcolor(FL_FOREGROUND_COLOR);
- formant_q_dial->maximum(127);
- formant_q_dial->step(1);
- formant_q_dial->callback((Fl_Callback*)cb_formant_q_dial);
- formant_q_dial->align(Fl_Align(FL_ALIGN_BOTTOM));
- formant_q_dial->when(FL_WHEN_CHANGED);
- o->init("q");
- } // Fl_Osc_Dial* formant_q_dial
- { Fl_Osc_Dial* o = formant_amp_dial = new Fl_Osc_Dial(555, 115, 24, 25, "amp");
- formant_amp_dial->tooltip("Formant amplitude");
- formant_amp_dial->box(FL_ROUND_UP_BOX);
- formant_amp_dial->color(FL_BACKGROUND_COLOR);
- formant_amp_dial->selection_color(FL_INACTIVE_COLOR);
- formant_amp_dial->labeltype(FL_NORMAL_LABEL);
- formant_amp_dial->labelfont(0);
- formant_amp_dial->labelsize(10);
- formant_amp_dial->labelcolor(FL_FOREGROUND_COLOR);
- formant_amp_dial->maximum(127);
- formant_amp_dial->step(1);
- formant_amp_dial->callback((Fl_Callback*)cb_formant_amp_dial);
- formant_amp_dial->align(Fl_Align(FL_ALIGN_BOTTOM));
- formant_amp_dial->when(FL_WHEN_CHANGED);
- o->init("amp");
- } // Fl_Osc_Dial* formant_amp_dial
- formantparsgroup->end();
- } // Fl_Osc_Group* formantparsgroup
- o->end();
- } // Fl_Osc_Group* o
- { Fl_Osc_Group* o = new Fl_Osc_Group(590, 47, 100, 113);
- o->box(FL_THIN_UP_BOX);
- o->color(FL_BACKGROUND_COLOR);
- o->selection_color(FL_BACKGROUND_COLOR);
- o->labeltype(FL_NORMAL_LABEL);
- o->labelfont(0);
- o->labelsize(14);
- o->labelcolor(FL_FOREGROUND_COLOR);
- o->align(Fl_Align(FL_ALIGN_TOP));
- o->when(FL_WHEN_RELEASE);
- { Fl_Osc_Counter* o = sequencesize = new Fl_Osc_Counter(595, 62, 55, 20, "Seq.Size");
- sequencesize->type(1);
- sequencesize->box(FL_UP_BOX);
- sequencesize->color(FL_BACKGROUND_COLOR);
- sequencesize->selection_color(FL_INACTIVE_COLOR);
- sequencesize->labeltype(FL_NORMAL_LABEL);
- sequencesize->labelfont(1);
- sequencesize->labelsize(10);
- sequencesize->labelcolor(FL_FOREGROUND_COLOR);
- sequencesize->minimum(0);
- sequencesize->maximum(127);
- sequencesize->step(1);
- sequencesize->textfont(1);
- sequencesize->textsize(11);
- sequencesize->callback((Fl_Callback*)cb_sequencesize);
- sequencesize->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- sequencesize->when(FL_WHEN_CHANGED);
- o->bounds(1,FF_MAX_SEQUENCE-1);
- o->init("Psequencesize");
- } // Fl_Osc_Counter* sequencesize
- { Fl_Counter* o = new Fl_Counter(595, 97, 40, 15, "S.Pos.");
- o->tooltip("Current position from the sequence");
- o->type(1);
- o->labelfont(1);
- o->labelsize(10);
- o->minimum(0);
- o->maximum(127);
- o->step(1);
- o->textsize(10);
- o->callback((Fl_Callback*)cb_S);
- o->align(Fl_Align(FL_ALIGN_TOP_RIGHT));
- o->bounds(0,FF_MAX_SEQUENCE-2);
- o->value(nseqpos);
- } // Fl_Counter* o
- { Fl_Osc_Counter* o = vowel_counter = new Fl_Osc_Counter(640, 97, 40, 15, "Vowel");
- vowel_counter->type(1);
- vowel_counter->box(FL_UP_BOX);
- vowel_counter->color(FL_BACKGROUND_COLOR);
- vowel_counter->selection_color(FL_INACTIVE_COLOR);
- vowel_counter->labeltype(FL_NORMAL_LABEL);
- vowel_counter->labelfont(0);
- vowel_counter->labelsize(10);
- vowel_counter->labelcolor(FL_FOREGROUND_COLOR);
- vowel_counter->minimum(0);
- vowel_counter->maximum(127);
- vowel_counter->step(1);
- vowel_counter->textsize(10);
- vowel_counter->callback((Fl_Callback*)cb_vowel_counter);
- vowel_counter->align(Fl_Align(FL_ALIGN_TOP));
- vowel_counter->when(FL_WHEN_CHANGED);
- o->bounds(0,FF_MAX_VOWELS-1);
- o->init("vowel_seq0");
- } // Fl_Osc_Counter* vowel_counter
- { Fl_Osc_Check* o = new Fl_Osc_Check(625, 132, 60, 20, "Neg.Input");
- o->tooltip("Negate the input from LFO/envelopes/etc.");
- o->box(FL_NO_BOX);
- o->down_box(FL_DOWN_BOX);
- o->color(FL_BACKGROUND_COLOR);
- o->selection_color(FL_FOREGROUND_COLOR);
- o->labeltype(FL_NORMAL_LABEL);
- o->labelfont(0);
- o->labelsize(10);
- o->labelcolor(FL_FOREGROUND_COLOR);
- o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
- o->when(FL_WHEN_RELEASE);
- o->init("Psequencereversed");
- } // Fl_Osc_Check* o
- { Fl_Osc_Dial* o = strchdial = new Fl_Osc_Dial(595, 130, 25, 25, "Strch");
- strchdial->tooltip("Sequence Stretch");
- strchdial->box(FL_ROUND_UP_BOX);
- strchdial->color(FL_BACKGROUND_COLOR);
- strchdial->selection_color(FL_INACTIVE_COLOR);
- strchdial->labeltype(FL_NORMAL_LABEL);
- strchdial->labelfont(0);
- strchdial->labelsize(10);
- strchdial->labelcolor(FL_FOREGROUND_COLOR);
- strchdial->maximum(127);
- strchdial->step(1);
- strchdial->align(Fl_Align(FL_ALIGN_TOP));
- strchdial->when(FL_WHEN_CHANGED);
- o->init("Psequencestretch");
- } // Fl_Osc_Dial* strchdial
- o->end();
- } // Fl_Osc_Group* o
- { Fl_Osc_Counter* o = numformants = new Fl_Osc_Counter(485, 15, 65, 20, "Num.Formants");
- numformants->type(1);
- numformants->box(FL_UP_BOX);
- numformants->color(FL_BACKGROUND_COLOR);
- numformants->selection_color(FL_INACTIVE_COLOR);
- numformants->labeltype(FL_NORMAL_LABEL);
- numformants->labelfont(0);
- numformants->labelsize(10);
- numformants->labelcolor(FL_FOREGROUND_COLOR);
- numformants->minimum(0);
- numformants->maximum(127);
- numformants->step(1);
- numformants->callback((Fl_Callback*)cb_numformants);
- numformants->align(Fl_Align(FL_ALIGN_TOP_LEFT));
- numformants->when(FL_WHEN_CHANGED);
- o->bounds(1,FF_MAX_FORMANTS);
- o->init("Pnumformants");
- } // Fl_Osc_Counter* numformants
- { Fl_Osc_Dial* o = frsldial = new Fl_Osc_Dial(565, 15, 25, 25, "Fr.Sl.");
- frsldial->tooltip("Formant\'s Slowness (Morphing)");
- frsldial->box(FL_ROUND_UP_BOX);
- frsldial->color(FL_BACKGROUND_COLOR);
- frsldial->selection_color(FL_INACTIVE_COLOR);
- frsldial->labeltype(FL_NORMAL_LABEL);
- frsldial->labelfont(0);
- frsldial->labelsize(10);
- frsldial->labelcolor(FL_FOREGROUND_COLOR);
- frsldial->maximum(127);
- frsldial->step(1);
- frsldial->align(Fl_Align(FL_ALIGN_TOP));
- frsldial->when(FL_WHEN_CHANGED);
- o->init("Pformantslowness");
- } // Fl_Osc_Dial* frsldial
- { Fl_Osc_Output* o = centerfreqvo = new Fl_Osc_Output(511, 164, 40, 18, "C.f.");
- centerfreqvo->tooltip("Center Frequency (kHz)");
- centerfreqvo->box(FL_NO_BOX);
- centerfreqvo->color(FL_BACKGROUND_COLOR);
- centerfreqvo->selection_color(FL_BACKGROUND_COLOR);
- centerfreqvo->labeltype(FL_NORMAL_LABEL);
- centerfreqvo->labelfont(0);
- centerfreqvo->labelsize(13);
- centerfreqvo->labelcolor(FL_FOREGROUND_COLOR);
- centerfreqvo->minimum(1);
- centerfreqvo->maximum(10);
- centerfreqvo->step(0.01);
- centerfreqvo->value(1);
- centerfreqvo->textfont(1);
- centerfreqvo->textsize(11);
- centerfreqvo->callback((Fl_Callback*)cb_centerfreqvo);
- centerfreqvo->align(Fl_Align(FL_ALIGN_LEFT));
- centerfreqvo->when(3);
- o->init("centerfreq");
- } // Fl_Osc_Output* centerfreqvo
- { Fl_Osc_Output* o = octavesfreqvo = new Fl_Osc_Output(511, 182, 40, 18, "Oct.");
- octavesfreqvo->tooltip("No. of octaves");
- octavesfreqvo->box(FL_NO_BOX);
- octavesfreqvo->color(FL_BACKGROUND_COLOR);
- octavesfreqvo->selection_color(FL_BACKGROUND_COLOR);
- octavesfreqvo->labeltype(FL_NORMAL_LABEL);
- octavesfreqvo->labelfont(0);
- octavesfreqvo->labelsize(13);
- octavesfreqvo->labelcolor(FL_FOREGROUND_COLOR);
- octavesfreqvo->minimum(1);
- octavesfreqvo->maximum(127);
- octavesfreqvo->step(0.01);
- octavesfreqvo->value(5);
- octavesfreqvo->textfont(1);
- octavesfreqvo->textsize(11);
- octavesfreqvo->callback((Fl_Callback*)cb_octavesfreqvo);
- octavesfreqvo->align(Fl_Align(FL_ALIGN_LEFT));
- octavesfreqvo->when(3);
- o->init("octavesfreq");
- } // Fl_Osc_Output* octavesfreqvo
- { Fl_Osc_Slider* o = cfknob = new Fl_Osc_Slider(555, 167, 84, 15);
- cfknob->type(5);
- cfknob->box(FL_FLAT_BOX);
- cfknob->color(FL_BACKGROUND_COLOR);
- cfknob->selection_color(FL_BACKGROUND_COLOR);
- cfknob->labeltype(FL_NORMAL_LABEL);
- cfknob->labelfont(0);
- cfknob->labelsize(14);
- cfknob->labelcolor(FL_FOREGROUND_COLOR);
- cfknob->maximum(127);
- cfknob->callback((Fl_Callback*)cb_cfknob);
- cfknob->align(Fl_Align(FL_ALIGN_BOTTOM));
- cfknob->when(FL_WHEN_CHANGED);
- o->init("Pcenterfreq", 'i');
- } // Fl_Osc_Slider* cfknob
- { Fl_Osc_Slider* o = octknob = new Fl_Osc_Slider(555, 185, 84, 15);
- octknob->type(5);
- octknob->box(FL_FLAT_BOX);
- octknob->color(FL_BACKGROUND_COLOR);
- octknob->selection_color(FL_BACKGROUND_COLOR);
- octknob->labeltype(FL_NORMAL_LABEL);
- octknob->labelfont(0);
- octknob->labelsize(14);
- octknob->labelcolor(FL_FOREGROUND_COLOR);
- octknob->maximum(127);
- octknob->callback((Fl_Callback*)cb_octknob);
- octknob->align(Fl_Align(FL_ALIGN_BOTTOM));
- octknob->when(FL_WHEN_CHANGED);
- o->init("Poctavesfreq", 'i');
- } // Fl_Osc_Slider* octknob
- { FormantFilterGraph* o = formantfiltergraph = new FormantFilterGraph(5, 5, 475, 195);
- formantfiltergraph->box(FL_BORDER_BOX);
- formantfiltergraph->color(FL_BACKGROUND_COLOR);
- formantfiltergraph->selection_color(FL_BACKGROUND_COLOR);
- formantfiltergraph->labeltype(FL_NORMAL_LABEL);
- formantfiltergraph->labelfont(0);
- formantfiltergraph->labelsize(14);
- formantfiltergraph->labelcolor(FL_FOREGROUND_COLOR);
- formantfiltergraph->align(Fl_Align(FL_ALIGN_CENTER));
- formantfiltergraph->when(FL_WHEN_RELEASE);
- o->init(&nvowel,&nformant);
- } // FormantFilterGraph* formantfiltergraph
- { Fl_Osc_Dial* o = wvknob = new Fl_Osc_Dial(600, 15, 25, 25, "Vw.Cl.");
- wvknob->tooltip("Vowel \"clearness\" (how the mixed vowels are avoided)");
- wvknob->box(FL_ROUND_UP_BOX);
- wvknob->color(FL_BACKGROUND_COLOR);
- wvknob->selection_color(FL_INACTIVE_COLOR);
- wvknob->labeltype(FL_NORMAL_LABEL);
- wvknob->labelfont(0);
- wvknob->labelsize(10);
- wvknob->labelcolor(FL_FOREGROUND_COLOR);
- wvknob->maximum(127);
- wvknob->step(1);
- wvknob->align(Fl_Align(FL_ALIGN_TOP));
- wvknob->when(FL_WHEN_CHANGED);
- o->init("Pvowelclearness");
- } // Fl_Osc_Dial* wvknob
- { Fl_Button* o = new Fl_Button(645, 180, 50, 25, "Close");
- o->box(FL_THIN_UP_BOX);
- o->callback((Fl_Callback*)cb_Close);
- } // Fl_Button* o
- { Fl_Button* o = new Fl_Button(635, 25, 25, 15, "C");
- o->box(FL_THIN_UP_BOX);
- o->color((Fl_Color)179);
- o->labelfont(1);
- o->labelsize(11);
- o->labelcolor((Fl_Color)55);
- o->callback((Fl_Callback*)cb_C1);
- } // Fl_Button* o
- { Fl_Box* o = new Fl_Box(635, 6, 55, 15, "Vowel");
- o->labelfont(1);
- } // Fl_Box* o
- formantparswindow->end();
- } // Fl_Osc_Window* formantparswindow
- return formantparswindow;
- }
-
- void FilterUI::update_formant_window() {
- //formant_freq_dial->value(pars->Pvowels[nvowel].formants[nformant].freq);
- //formant_q_dial->value(pars->Pvowels[nvowel].formants[nformant].q);
- //formant_amp_dial->value(pars->Pvowels[nvowel].formants[nformant].amp);
- if (nformant<numformants->value()) formantparsgroup->activate();
- else formantparsgroup->deactivate();
-
- if (nseqpos<sequencesize->value()) vowel_counter->activate();
- else vowel_counter->deactivate();
-
-
- //vowel_counter->value(pars->Psequence[nseqpos].nvowel);
- }
-
- void FilterUI::refresh() {
- update_formant_window();
- formantfiltergraph->redraw();
- const int Pcategory = filtertype->value();
- const int Ptype = analogfiltertypechoice->value();
-
- if (Pcategory==2) svfiltertypechoice->value(Ptype);
- if (Pcategory==0) analogfiltertypechoice->value(Ptype);
-
- const int categ=Pcategory;
- if ((categ==0)||(categ==2)) {
- if (categ==0) {
- analogfiltertypechoice->show();
- svfiltertypechoice->hide();
- } else {
- svfiltertypechoice->show();
- analogfiltertypechoice->hide();
- };
- editbutton->hide();
- formantparswindow->hide();
- cfreqdial->label("C.freq");
- } else {
- analogfiltertypechoice->hide();
- svfiltertypechoice->hide();
- editbutton->show();
- cfreqdial->label("BS.pos");
- };
-
- filterparamswindow->redraw();
- }
-
- void FilterUI::rebase(std::string new_base) {
- formantparswindow->rebase(new_base+"VoiceFilter/");
- Fl_Osc_Group::rebase(new_base);
- }
-
- void FilterUI::init(std::string alt_root_, Fl_Osc_Interface *osc_, std::string base_, std::string ext_) {
- alt_root = alt_root_;
- osc = osc_;
- base = base_;
- ext = ext_;
-
- assert(osc);
-
- make_window();
- end();
- make_formant_window();
-
-
- filterui->resize(this->x(),this->y(),this->w(),this->h());
-
- switchcategory(0);
-
- formantparswindow->label(this->label());
-
- update_formant_window();
- }
-
- void FilterUI::switchcategory(int newcat) {
- //TODO update Pgain & filter type on switch Pgain=64;
- (void) newcat;
- refresh();
- }
-
- void FilterUI::use_for_dynamic_filter() {
- freqtrdial->deactivate();
- gaindial->when(0);
-
- cfknob->when(FL_WHEN_RELEASE);
- octknob->when(FL_WHEN_RELEASE);
-
- frsldial->when(0);
- wvknob->when(0);
- formant_freq_dial->when(0);
- formant_q_dial->when(0);
- formant_amp_dial->when(0);
- strchdial->when(0);
- }
|