diff --git a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C index 2708687..7f7da86 100644 --- a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C +++ b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C @@ -53,12 +53,13 @@ m_Amped(false) m_Version=4; m_PluginInfo.Name="LADSPA"; - m_PluginInfo.Width=600; - m_PluginInfo.Height=300; + m_PluginInfo.Width=500; + m_PluginInfo.Height=320; m_PluginInfo.NumInputs=0; m_PluginInfo.NumOutputs=1; m_PluginInfo.PortTips.push_back("Nuffink yet"); + m_PluginIndex = 0; m_MaxInputPortCount = m_LADSPAInfo.GetMaxInputPortCount(); m_InputPortCount = 0; @@ -72,19 +73,20 @@ m_Amped(false) m_AudioCH->RegisterData("GetMaker",ChannelHandler::OUTPUT,m_Maker,256); m_AudioCH->RegisterData("GetMaxInputPortCount",ChannelHandler::OUTPUT,&(m_MaxInputPortCount),sizeof(m_MaxInputPortCount)); m_AudioCH->RegisterData("GetInputPortCount",ChannelHandler::OUTPUT,&(m_InputPortCount),sizeof(m_InputPortCount)); + m_AudioCH->RegisterData("GetPluginIndex",ChannelHandler::OUTPUT,&(m_PluginIndex),sizeof(m_PluginIndex)); m_OutData.InputPortNames = (char *)malloc(256 * m_MaxInputPortCount); - m_OutData.InputPortRanges = (PortRange *)malloc(sizeof(PortRange) * m_MaxInputPortCount); + m_OutData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_MaxInputPortCount); m_OutData.InputPortValues = (float *)calloc(m_MaxInputPortCount, sizeof(float)); - m_InData.InputPortRanges = (PortRange *)malloc(sizeof(PortRange) * m_MaxInputPortCount); + m_InData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_MaxInputPortCount); if (m_OutData.InputPortNames && - m_OutData.InputPortRanges && - m_InData.InputPortRanges) { + m_OutData.InputPortSettings && + m_InData.InputPortSettings) { m_AudioCH->RegisterData("GetInputPortNames", ChannelHandler::OUTPUT, m_OutData.InputPortNames, 256 * m_MaxInputPortCount); - m_AudioCH->RegisterData("GetInputPortRanges", ChannelHandler::OUTPUT, m_OutData.InputPortRanges, sizeof(PortRange) * m_MaxInputPortCount); + m_AudioCH->RegisterData("GetInputPortSettings", ChannelHandler::OUTPUT, m_OutData.InputPortSettings, sizeof(PortSettings) * m_MaxInputPortCount); m_AudioCH->RegisterData("GetInputPortValues", ChannelHandler::OUTPUT, m_OutData.InputPortValues, sizeof(float) * m_MaxInputPortCount); - m_AudioCH->RegisterData("SetInputPortRanges", ChannelHandler::INPUT, m_InData.InputPortRanges, sizeof(PortRange) * m_MaxInputPortCount); + m_AudioCH->RegisterData("SetInputPortSettings", ChannelHandler::INPUT, m_InData.InputPortSettings, sizeof(PortSettings) * m_MaxInputPortCount); } else { cerr<<"Memory allocation error"<GetCommand()) { - case (SETRANGES) : - SetPortInfo(); + case (SETPORTSETTINGS) : + SetPortSettings(); break; case (SELECTPLUGIN) : vector pe = m_LADSPAInfo.GetPluginList(); @@ -206,18 +208,24 @@ void LADSPAPlugin::StreamOut(ostream &s) s<::iterator i=m_PortMin.begin(); - i!=m_PortMin.end(); i++) + i!=m_PortMin.end(); i++) { s<<*i<<" "; } for (vector::iterator i=m_PortMax.begin(); - i!=m_PortMax.end(); i++) + i!=m_PortMax.end(); i++) { s<<*i<<" "; } for (vector::iterator i=m_PortClamp.begin(); - i!=m_PortClamp.end(); i++) + i!=m_PortClamp.end(); i++) + { + s<<*i<<" "; + } + for (vector::iterator i=m_PortDefault.begin(); + i!=m_PortDefault.end(); i++) { s<<*i<<" "; } @@ -296,6 +304,7 @@ void LADSPAPlugin::StreamIn(istream &s) s>>PortCount; float min,max; bool clamp; + float defolt; for (int n=0; n>clamp; m_PortClamp.push_back(clamp); } + for (int n=0; n>defolt; + m_PortDefault.push_back(defolt); + } UpdatePlugin(UniqueID, false); } @@ -555,6 +569,7 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset) m_PortMin.push_back(Min); m_PortMax.push_back(Max); m_PortClamp.push_back(true); + m_PortDefault.push_back(0.0f); } } @@ -582,9 +597,10 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset) lbl_start[lbl_length] = '\0'; lbl_start += 256; - m_OutData.InputPortRanges[n].Min = m_PortMin[n]; - m_OutData.InputPortRanges[n].Max = m_PortMax[n]; - m_OutData.InputPortRanges[n].Clamp = m_PortClamp[n]; + m_OutData.InputPortSettings[n].Min = m_PortMin[n]; + m_OutData.InputPortSettings[n].Max = m_PortMax[n]; + m_OutData.InputPortSettings[n].Clamp = m_PortClamp[n]; + m_OutData.InputPortSettings[n].Default = m_PortDefault[n]; } return true; @@ -595,11 +611,12 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset) return false; } -void LADSPAPlugin::SetPortInfo(void) +void LADSPAPlugin::SetPortSettings(void) { for (unsigned long n = 0; n < m_InputPortCount; n++) { - m_PortMin[n] = m_InData.InputPortRanges[n].Min; - m_PortMax[n] = m_InData.InputPortRanges[n].Max; - m_PortClamp[n] = m_InData.InputPortRanges[n].Clamp; + m_PortMin[n] = m_InData.InputPortSettings[n].Min; + m_PortMax[n] = m_InData.InputPortSettings[n].Max; + m_PortClamp[n] = m_InData.InputPortSettings[n].Clamp; + m_PortDefault[n] = m_InData.InputPortSettings[n].Default; } } diff --git a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h index cd67317..524f9dc 100644 --- a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h +++ b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h @@ -26,11 +26,12 @@ static const unsigned int NUM_PORTS = 8; -struct PortRange +struct PortSettings { float Min; float Max; bool Clamp; + float Default; }; class LADSPAPlugin : public SpiralPlugin @@ -51,23 +52,27 @@ public: const char *GetName() { return (const char *)m_Name; } const char *GetMaker() { return (const char *)m_Maker; } unsigned long GetInputPortCount() { return m_InputPortCount; } - const char *GetPortName(unsigned long p) { return (const char *)(m_OutData.InputPortNames + p * 256); } - PortRange GetPortRange(unsigned long p) + const char *GetPortName(unsigned long p) { - PortRange range; - range.Min = m_PortMin[p]; - range.Max = m_PortMax[p]; - range.Clamp = m_PortClamp[p]; - return range; + return (const char *)(m_OutData.InputPortNames + p * 256); + } + PortSettings GetPortSettings(unsigned long p) + { + PortSettings settings; + settings.Min = m_PortMin[p]; + settings.Max = m_PortMax[p]; + settings.Clamp = m_PortClamp[p]; + settings.Default = m_PortDefault[p]; + return settings; } - enum GUICommands{NONE,SETRANGES,SELECTPLUGIN}; + enum GUICommands{NONE,SETPORTSETTINGS,SELECTPLUGIN}; private: void UpdatePortRange(void); bool UpdatePlugin(unsigned long UniqueID, bool PortClampReset=true); - void SetPortInfo(void); + void SetPortSettings(void); void LoadPluginList(void); @@ -81,12 +86,14 @@ private: vector m_PortMin; vector m_PortMax; vector m_PortClamp; + vector m_PortDefault; int m_Version; // our database of ladspa plugins LADSPAInfo m_LADSPAInfo; + unsigned long m_PluginIndex; unsigned long m_UniqueID; float m_Gain; @@ -100,7 +107,7 @@ private: struct OutputChannelData { char *InputPortNames; - PortRange *InputPortRanges; + PortSettings *InputPortSettings; float *InputPortValues; }; @@ -110,7 +117,7 @@ private: unsigned long PluginIndex; float Gain; bool Amped; - PortRange *InputPortRanges; + PortSettings *InputPortSettings; }; OutputChannelData m_OutData; diff --git a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C index 345bb28..b77cb82 100644 --- a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C +++ b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C @@ -43,48 +43,69 @@ SpiralPluginGUI(w,h,o,ch) int Width=20; int Height=100; - m_Browser= new Fl_Hold_Browser(5,20,290,260,"LADSPA Plugins"); - m_Browser->callback((Fl_Callback*)cb_Select); - - for (vector::iterator i=PluginList.begin(); - i!=PluginList.end(); i++) - { - m_Browser->add(i->Name.c_str()); - } - // Get maximum input port count m_GUICH->GetData("GetMaxInputPortCount",&(m_InData.MaxInputPortCount)); // Set up buffers for data transfer via ChannelHandler m_InData.InputPortNames = (char *)malloc(256 * m_InData.MaxInputPortCount); - m_InData.InputPortRanges = (PortRange *)malloc(sizeof(PortRange) * m_InData.MaxInputPortCount); + m_InData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_InData.MaxInputPortCount); m_InData.InputPortValues = (float *)calloc(m_InData.MaxInputPortCount, sizeof(float)); - if (!(m_InData.InputPortNames && m_InData.InputPortRanges)) { + if (!(m_InData.InputPortNames && m_InData.InputPortSettings)) { cerr<<"Memory allocation error\n"<align(FL_ALIGN_TOP_LEFT); - m_InputScroll->type(Fl_Scroll::VERTICAL); - m_InputScroll->box(FL_DOWN_BOX); - add(m_InputScroll); - m_InputPack = new Fl_Pack(300,85,300,100,""); - m_InputScroll->add(m_InputPack); +// Set up widgets + m_Browser = new Fl_Choice(60,20,420,20,"Plugin:"); + m_Browser->callback((Fl_Callback *)cb_Select); + + m_Browser->add("(None)"); + for (vector::iterator i=PluginList.begin(); + i!=PluginList.end(); i++) + { + m_Browser->add(i->Name.c_str()); + } - m_Name = new Fl_Box(290,20,10,20,"None"); - m_Name->align(FL_ALIGN_RIGHT); + m_Name = new Fl_Box(10,45,480,20,"None"); + m_Name->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); m_Name->labelcolor(GUI_COLOUR); m_Name->labelsize(10); add(m_Name); - m_Maker = new Fl_Box(290,40,10,20,"None"); - m_Maker->align(FL_ALIGN_RIGHT); + m_Maker = new Fl_Box(10,65,480,20,"None"); + m_Maker->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); m_Maker->labelcolor(GUI_COLOUR); m_Maker->labelsize(10); add(m_Maker); - m_OutputGain = new Fl_Knob(545,240,40,40,"Output Gain"); + m_InputScroll = new Fl_Scroll(10,105,480,150," Value Min Max Clamp? Default Port Name"); + m_InputScroll->labelsize(12); + m_InputScroll->align(FL_ALIGN_TOP_LEFT); + m_InputScroll->type(Fl_Scroll::VERTICAL); + m_InputScroll->box(FL_DOWN_BOX); + add(m_InputScroll); + m_InputPack = new Fl_Pack(20,115,460,20,""); + m_InputScroll->add(m_InputPack); + + m_PowerAmp = new Fl_Button(125,277,100,25,"PowerAmp"); + m_PowerAmp->labelsize(10); + m_PowerAmp->value(0); + m_PowerAmp->type(1); + m_PowerAmp->callback((Fl_Callback*)cb_PowerAmp); + add(m_PowerAmp); + + m_UpdateMinMax = new Fl_Button(230,277,100,25,"Update Settings"); + m_UpdateMinMax->labelsize(10); + m_UpdateMinMax->callback((Fl_Callback*)cb_MinMax); + add(m_UpdateMinMax); + + m_UpdateInputs = new Fl_Button(335,277,100,25,"Refresh"); + m_UpdateInputs->labelsize(10); + m_UpdateInputs->value(1); + m_UpdateInputs->type(1); + add(m_UpdateInputs); + + m_OutputGain = new Fl_Knob(440,265,40,40,"Output Gain"); m_OutputGain->color(GUI_COLOUR); m_OutputGain->type(Fl_Knob::DOTLIN); m_OutputGain->maximum(2); @@ -94,31 +115,13 @@ SpiralPluginGUI(w,h,o,ch) m_OutputGain->callback((Fl_Callback*)cb_Gain); add(m_OutputGain); - m_UpdateInputs = new Fl_Button(480,252,50,25,"Refresh"); - m_UpdateInputs->labelsize(10); - m_UpdateInputs->value(1); - m_UpdateInputs->type(1); - add(m_UpdateInputs); - - m_UpdateMinMax = new Fl_Button(400,252,85,25,"Update Min/Max"); - m_UpdateMinMax->labelsize(10); - m_UpdateMinMax->callback((Fl_Callback*)cb_MinMax); - add(m_UpdateMinMax); - - m_PowerAmp = new Fl_Button(320,252,80,25,"PowerAmp"); - m_PowerAmp->labelsize(10); - m_PowerAmp->value(0); - m_PowerAmp->type(1); - m_PowerAmp->callback((Fl_Callback*)cb_PowerAmp); - add(m_PowerAmp); - end(); } LADSPAPluginGUI::~LADSPAPluginGUI(void) { if (m_InData.InputPortNames) free(m_InData.InputPortNames); - if (m_InData.InputPortRanges) free(m_InData.InputPortRanges); + if (m_InData.InputPortSettings) free(m_InData.InputPortSettings); Fl::check(); } @@ -131,6 +134,23 @@ void LADSPAPluginGUI::UpdatePortDisplay(int n, float v) m_PortOutput[n]->value(temp); } +void LADSPAPluginGUI::SetPortSettings(unsigned long n, float min, float max, bool clamp, float defolt) +{ + char temp[256]; + sprintf(temp,"%.4f",min); + m_PortMin[n]->value(temp); + + sprintf(temp,"%.4f",max); + m_PortMax[n]->value(temp); + + sprintf(temp, "%d",clamp); + m_PortClamp[n]->value(atoi(temp)); + + sprintf(temp, "%.4f",defolt); + m_PortDefault[n]->value(temp); +} + +/* void LADSPAPluginGUI::SetMinMax(int n, float min, float max, bool clamp) { char temp[256]; @@ -150,7 +170,7 @@ void LADSPAPluginGUI::GetMinMax(int n, float &min, float &max, bool &clamp) max = atof(m_PortMax[n]->value()); clamp = m_PortClamp[n]->value(); } - +*/ void LADSPAPluginGUI::SetName(const char *s) { m_Name->label(s); @@ -171,7 +191,7 @@ void LADSPAPluginGUI::ClearPortInfo() m_InputScroll->remove(m_InputPack); delete m_InputPack; - m_InputPack = new Fl_Pack(x()+300,y()+85,300,100,""); + m_InputPack = new Fl_Pack(x()+5,y()+110,460,20,""); m_InputScroll->add(m_InputPack); m_PortOutput.clear(); @@ -179,44 +199,57 @@ void LADSPAPluginGUI::ClearPortInfo() m_PortMin.clear(); m_PortMax.clear(); m_PortClamp.clear(); + m_PortDefault.clear(); } void LADSPAPluginGUI::AddPortInfo(const char *Info) { - Fl_Group* NewGroup = new Fl_Group(0,85,150,15,""); + Fl_Group* NewGroup = new Fl_Group(0,0,430,18,""); NewGroup->box(FL_FLAT_BOX); m_InputPack->add(NewGroup); m_PackVec.push_back(NewGroup); - Fl_Box* NewText = new Fl_Box(100,85,80,15,""); - NewText->label(Info); - NewText->labelsize(8); - NewText->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); - NewGroup->add(NewText); - - Fl_Output* NewOutput = new Fl_Output(5,85,20,15,""); +// Value + Fl_Output* NewOutput = new Fl_Output(10,0,60,18,""); NewOutput->value(0); NewOutput->textsize(10); NewGroup->add(NewOutput); m_PortOutput.push_back(NewOutput); - Fl_Input* NewInput = new Fl_Input(26,85,20,15,""); +// Min + Fl_Input* NewInput = new Fl_Input(72,0,60,18,""); NewInput->value(0); NewInput->textsize(10); NewGroup->add(NewInput); m_PortMin.push_back(NewInput); - NewInput = new Fl_Input(47,85,20,15,""); +// Max + NewInput = new Fl_Input(134,0,60,18,""); NewInput->value(0); NewInput->textsize(10); NewGroup->add(NewInput); m_PortMax.push_back(NewInput); - Fl_Check_Button* NewCheckButton = new Fl_Check_Button(80,85,15,15,""); +// Clamp + Fl_Check_Button* NewCheckButton = new Fl_Check_Button(200,0,10,18,""); NewCheckButton->value(0); NewGroup->add(NewCheckButton); m_PortClamp.push_back(NewCheckButton); +// Fixed Value + NewInput = new Fl_Input(250,0,60,18,""); + NewInput->value(0); + NewInput->textsize(10); + NewGroup->add(NewInput); + m_PortDefault.push_back(NewInput); + +// Port Name + Fl_Box* NewText = new Fl_Box(322,0,10,18,""); + NewText->label(Info); + NewText->labelsize(10); + NewText->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); + NewGroup->add(NewText); + NewGroup->redraw(); m_InputPack->redraw(); m_InputScroll->redraw(); @@ -234,13 +267,13 @@ void LADSPAPluginGUI::UpdateValues(SpiralPlugin *o) unsigned long n = Plugin->GetInputPortCount(); const char *name; - PortRange range; + PortSettings settings; for (unsigned long p = 0; p < n; p++) { name = Plugin->GetPortName(p); - range = Plugin->GetPortRange(p); + settings = Plugin->GetPortSettings(p); AddPortInfo(name); - SetMinMax(p, range.Min, range.Max, range.Clamp); + SetPortSettings(p, settings.Min, settings.Max, settings.Clamp, settings.Default); } } @@ -263,7 +296,7 @@ void LADSPAPluginGUI::cb_Gain(Fl_Knob* o, void* v) ((LADSPAPluginGUI*)(o->parent()))->cb_Gain_i(o,v); } -inline void LADSPAPluginGUI::cb_Select_i(Fl_Hold_Browser* o) +inline void LADSPAPluginGUI::cb_Select_i(Fl_Choice* o) { m_GUICH->Set("SetPluginIndex",o->value()-1); m_GUICH->SetCommand(LADSPAPlugin::SELECTPLUGIN); @@ -276,7 +309,7 @@ inline void LADSPAPluginGUI::cb_Select_i(Fl_Hold_Browser* o) m_GUICH->GetData("GetMaker", m_InData.Maker); m_GUICH->GetData("GetInputPortCount", &(m_InData.InputPortCount)); m_GUICH->GetData("GetInputPortNames", m_InData.InputPortNames); - m_GUICH->GetData("GetInputPortRanges", m_InData.InputPortRanges); + m_GUICH->GetData("GetInputPortSettings", m_InData.InputPortSettings); SetName((const char *)m_InData.Name); SetMaker((const char *)m_InData.Maker); @@ -286,12 +319,13 @@ inline void LADSPAPluginGUI::cb_Select_i(Fl_Hold_Browser* o) for (unsigned long n = 0; n < m_InData.InputPortCount; n++) { AddPortInfo((const char *)(m_InData.InputPortNames + n * 256)); - SetMinMax(n, m_InData.InputPortRanges[n].Min, - m_InData.InputPortRanges[n].Max, - m_InData.InputPortRanges[n].Clamp); + SetPortSettings(n, m_InData.InputPortSettings[n].Min, + m_InData.InputPortSettings[n].Max, + m_InData.InputPortSettings[n].Clamp, + m_InData.InputPortSettings[n].Default); } } -void LADSPAPluginGUI::cb_Select(Fl_Hold_Browser* o) +void LADSPAPluginGUI::cb_Select(Fl_Choice* o) { ((LADSPAPluginGUI*)(o->parent()))->cb_Select_i(o); } @@ -302,26 +336,33 @@ inline void LADSPAPluginGUI::cb_MinMax_i(Fl_Button* o, void* v) for (vector::iterator i=m_PortMin.begin(); i!=m_PortMin.end(); i++) { - m_InData.InputPortRanges[n].Min = atof((*i)->value()); + m_InData.InputPortSettings[n].Min = atof((*i)->value()); n++; } n=0; for (vector::iterator i=m_PortMax.begin(); i!=m_PortMax.end(); i++) { - m_InData.InputPortRanges[n].Max = atof((*i)->value()); + m_InData.InputPortSettings[n].Max = atof((*i)->value()); n++; } n=0; for (vector::iterator i=m_PortClamp.begin(); i!=m_PortClamp.end(); i++) { - m_InData.InputPortRanges[n].Clamp = (bool)((*i)->value()); + m_InData.InputPortSettings[n].Clamp = (bool)((*i)->value()); + n++; + } + n=0; + for (vector::iterator i=m_PortDefault.begin(); + i!=m_PortDefault.end(); i++) + { + m_InData.InputPortSettings[n].Default = atof((*i)->value()); n++; } - m_GUICH->SetData("SetInputPortRanges", m_InData.InputPortRanges); - m_GUICH->SetCommand(LADSPAPlugin::SETRANGES); + m_GUICH->SetData("SetInputPortSettings", m_InData.InputPortSettings); + m_GUICH->SetCommand(LADSPAPlugin::SETPORTSETTINGS); } void LADSPAPluginGUI::cb_MinMax(Fl_Button* o, void* v) { diff --git a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h index e5e2adc..3a90101 100644 --- a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h +++ b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include "../Widgets/Fl_Knob.H" @@ -64,13 +63,14 @@ public: void ClearPortInfo(); void AddPortInfo(const char *Info); void UpdatePortDisplay(int n, float v); - void SetMinMax(int n, float min, float max, bool clamp); - void GetMinMax(int n, float &min, float &max, bool &clamp); + void SetPortSettings(unsigned long n, float min, float max, bool clamp, float defolt); +// void SetMinMax(int n, float min, float max, bool clamp); +// void GetMinMax(int n, float &min, float &max, bool &clamp); private: Fl_Scroll *m_InputScroll; Fl_Pack *m_InputPack; - Fl_Hold_Browser *m_Browser; + Fl_Choice *m_Browser; Fl_Knob *m_OutputGain; Fl_Box *m_Name; Fl_Box *m_Maker; @@ -81,6 +81,7 @@ private: std::vector m_PortMin; std::vector m_PortMax; std::vector m_PortClamp; + std::vector m_PortDefault; std::vector PluginList; @@ -90,8 +91,8 @@ private: int inited; - inline void cb_Select_i(Fl_Hold_Browser* o); - static void cb_Select(Fl_Hold_Browser* o); + inline void cb_Select_i(Fl_Choice* o); + static void cb_Select(Fl_Choice* o); inline void cb_Gain_i(Fl_Knob* o, void* v); static void cb_Gain(Fl_Knob* o, void* v); inline void cb_MinMax_i(Fl_Button* o, void* v); @@ -107,7 +108,7 @@ private: unsigned long MaxInputPortCount; unsigned long InputPortCount; char *InputPortNames; - PortRange *InputPortRanges; + PortSettings *InputPortSettings; float *InputPortValues; };