Browse Source

Drop down list for selecting plugin. Text box added for default (non-connected) values

master
waxfrenzy 22 years ago
parent
commit
d0bae314ac
4 changed files with 176 additions and 110 deletions
  1. +39
    -22
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C
  2. +19
    -12
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h
  3. +110
    -69
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C
  4. +8
    -7
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h

+ 39
- 22
SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C View File

@@ -53,12 +53,13 @@ m_Amped(false)
m_Version=4; m_Version=4;


m_PluginInfo.Name="LADSPA"; 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.NumInputs=0;
m_PluginInfo.NumOutputs=1; m_PluginInfo.NumOutputs=1;
m_PluginInfo.PortTips.push_back("Nuffink yet"); m_PluginInfo.PortTips.push_back("Nuffink yet");


m_PluginIndex = 0;
m_MaxInputPortCount = m_LADSPAInfo.GetMaxInputPortCount(); m_MaxInputPortCount = m_LADSPAInfo.GetMaxInputPortCount();
m_InputPortCount = 0; m_InputPortCount = 0;


@@ -72,19 +73,20 @@ m_Amped(false)
m_AudioCH->RegisterData("GetMaker",ChannelHandler::OUTPUT,m_Maker,256); m_AudioCH->RegisterData("GetMaker",ChannelHandler::OUTPUT,m_Maker,256);
m_AudioCH->RegisterData("GetMaxInputPortCount",ChannelHandler::OUTPUT,&(m_MaxInputPortCount),sizeof(m_MaxInputPortCount)); 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("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.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_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 && 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("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("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 { } else {
cerr<<"Memory allocation error"<<endl; cerr<<"Memory allocation error"<<endl;
} }
@@ -94,9 +96,9 @@ LADSPAPlugin::~LADSPAPlugin()
{ {
// Free allocated buffers // Free allocated buffers
if (m_OutData.InputPortNames) free(m_OutData.InputPortNames); if (m_OutData.InputPortNames) free(m_OutData.InputPortNames);
if (m_OutData.InputPortRanges) free(m_OutData.InputPortRanges);
if (m_OutData.InputPortSettings) free(m_OutData.InputPortSettings);
if (m_OutData.InputPortValues) free(m_OutData.InputPortValues); if (m_OutData.InputPortValues) free(m_OutData.InputPortValues);
if (m_InData.InputPortRanges) free(m_InData.InputPortRanges);
if (m_InData.InputPortSettings) free(m_InData.InputPortSettings);
} }


PluginInfo &LADSPAPlugin::Initialise(const HostInfo *Host) PluginInfo &LADSPAPlugin::Initialise(const HostInfo *Host)
@@ -182,8 +184,8 @@ void LADSPAPlugin::ExecuteCommands()
{ {
switch(m_AudioCH->GetCommand()) switch(m_AudioCH->GetCommand())
{ {
case (SETRANGES) :
SetPortInfo();
case (SETPORTSETTINGS) :
SetPortSettings();
break; break;
case (SELECTPLUGIN) : case (SELECTPLUGIN) :
vector<LADSPAInfo::PluginEntry> pe = m_LADSPAInfo.GetPluginList(); vector<LADSPAInfo::PluginEntry> pe = m_LADSPAInfo.GetPluginList();
@@ -206,18 +208,24 @@ void LADSPAPlugin::StreamOut(ostream &s)
s<<m_PortMin.size()<<" "; s<<m_PortMin.size()<<" ";
assert(m_PortMin.size()==m_PortMax.size()); assert(m_PortMin.size()==m_PortMax.size());
assert(m_PortMin.size()==m_PortClamp.size()); assert(m_PortMin.size()==m_PortClamp.size());
assert(m_PortMin.size()==m_PortDefault.size());
for (vector<float>::iterator i=m_PortMin.begin(); for (vector<float>::iterator i=m_PortMin.begin();
i!=m_PortMin.end(); i++)
i!=m_PortMin.end(); i++)
{ {
s<<*i<<" "; s<<*i<<" ";
} }
for (vector<float>::iterator i=m_PortMax.begin(); for (vector<float>::iterator i=m_PortMax.begin();
i!=m_PortMax.end(); i++)
i!=m_PortMax.end(); i++)
{ {
s<<*i<<" "; s<<*i<<" ";
} }
for (vector<bool>::iterator i=m_PortClamp.begin(); for (vector<bool>::iterator i=m_PortClamp.begin();
i!=m_PortClamp.end(); i++)
i!=m_PortClamp.end(); i++)
{
s<<*i<<" ";
}
for (vector<float>::iterator i=m_PortDefault.begin();
i!=m_PortDefault.end(); i++)
{ {
s<<*i<<" "; s<<*i<<" ";
} }
@@ -296,6 +304,7 @@ void LADSPAPlugin::StreamIn(istream &s)
s>>PortCount; s>>PortCount;
float min,max; float min,max;
bool clamp; bool clamp;
float defolt;


for (int n=0; n<PortCount; n++) for (int n=0; n<PortCount; n++)
{ {
@@ -313,6 +322,11 @@ void LADSPAPlugin::StreamIn(istream &s)
s>>clamp; s>>clamp;
m_PortClamp.push_back(clamp); m_PortClamp.push_back(clamp);
} }
for (int n=0; n<PortCount; n++)
{
s>>defolt;
m_PortDefault.push_back(defolt);
}


UpdatePlugin(UniqueID, false); UpdatePlugin(UniqueID, false);
} }
@@ -555,6 +569,7 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
m_PortMin.push_back(Min); m_PortMin.push_back(Min);
m_PortMax.push_back(Max); m_PortMax.push_back(Max);
m_PortClamp.push_back(true); 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[lbl_length] = '\0';
lbl_start += 256; 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; return true;
@@ -595,11 +611,12 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
return false; return false;
} }


void LADSPAPlugin::SetPortInfo(void)
void LADSPAPlugin::SetPortSettings(void)
{ {
for (unsigned long n = 0; n < m_InputPortCount; n++) { 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;
} }
} }

+ 19
- 12
SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h View File

@@ -26,11 +26,12 @@


static const unsigned int NUM_PORTS = 8; static const unsigned int NUM_PORTS = 8;


struct PortRange
struct PortSettings
{ {
float Min; float Min;
float Max; float Max;
bool Clamp; bool Clamp;
float Default;
}; };


class LADSPAPlugin : public SpiralPlugin class LADSPAPlugin : public SpiralPlugin
@@ -51,23 +52,27 @@ public:
const char *GetName() { return (const char *)m_Name; } const char *GetName() { return (const char *)m_Name; }
const char *GetMaker() { return (const char *)m_Maker; } const char *GetMaker() { return (const char *)m_Maker; }
unsigned long GetInputPortCount() { return m_InputPortCount; } 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: private:


void UpdatePortRange(void); void UpdatePortRange(void);
bool UpdatePlugin(unsigned long UniqueID, bool PortClampReset=true); bool UpdatePlugin(unsigned long UniqueID, bool PortClampReset=true);
void SetPortInfo(void);
void SetPortSettings(void);


void LoadPluginList(void); void LoadPluginList(void);


@@ -81,12 +86,14 @@ private:
vector<float> m_PortMin; vector<float> m_PortMin;
vector<float> m_PortMax; vector<float> m_PortMax;
vector<bool> m_PortClamp; vector<bool> m_PortClamp;
vector<float> m_PortDefault;


int m_Version; int m_Version;


// our database of ladspa plugins // our database of ladspa plugins
LADSPAInfo m_LADSPAInfo; LADSPAInfo m_LADSPAInfo;


unsigned long m_PluginIndex;
unsigned long m_UniqueID; unsigned long m_UniqueID;


float m_Gain; float m_Gain;
@@ -100,7 +107,7 @@ private:
struct OutputChannelData struct OutputChannelData
{ {
char *InputPortNames; char *InputPortNames;
PortRange *InputPortRanges;
PortSettings *InputPortSettings;
float *InputPortValues; float *InputPortValues;
}; };


@@ -110,7 +117,7 @@ private:
unsigned long PluginIndex; unsigned long PluginIndex;
float Gain; float Gain;
bool Amped; bool Amped;
PortRange *InputPortRanges;
PortSettings *InputPortSettings;
}; };


OutputChannelData m_OutData; OutputChannelData m_OutData;


+ 110
- 69
SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C View File

@@ -43,48 +43,69 @@ SpiralPluginGUI(w,h,o,ch)
int Width=20; int Width=20;
int Height=100; int Height=100;


m_Browser= new Fl_Hold_Browser(5,20,290,260,"LADSPA Plugins");
m_Browser->callback((Fl_Callback*)cb_Select);

for (vector<LADSPAInfo::PluginEntry>::iterator i=PluginList.begin();
i!=PluginList.end(); i++)
{
m_Browser->add(i->Name.c_str());
}

// Get maximum input port count // Get maximum input port count
m_GUICH->GetData("GetMaxInputPortCount",&(m_InData.MaxInputPortCount)); m_GUICH->GetData("GetMaxInputPortCount",&(m_InData.MaxInputPortCount));


// Set up buffers for data transfer via ChannelHandler // Set up buffers for data transfer via ChannelHandler
m_InData.InputPortNames = (char *)malloc(256 * m_InData.MaxInputPortCount); 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)); 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"<<endl; cerr<<"Memory allocation error\n"<<endl;
} }


m_InputScroll = new Fl_Scroll(300,80,290,150," Value Min Max Clamp?");
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(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<LADSPAInfo::PluginEntry>::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->labelcolor(GUI_COLOUR);
m_Name->labelsize(10); m_Name->labelsize(10);
add(m_Name); 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->labelcolor(GUI_COLOUR);
m_Maker->labelsize(10); m_Maker->labelsize(10);
add(m_Maker); 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->color(GUI_COLOUR);
m_OutputGain->type(Fl_Knob::DOTLIN); m_OutputGain->type(Fl_Knob::DOTLIN);
m_OutputGain->maximum(2); m_OutputGain->maximum(2);
@@ -94,31 +115,13 @@ SpiralPluginGUI(w,h,o,ch)
m_OutputGain->callback((Fl_Callback*)cb_Gain); m_OutputGain->callback((Fl_Callback*)cb_Gain);
add(m_OutputGain); 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(); end();
} }


LADSPAPluginGUI::~LADSPAPluginGUI(void) LADSPAPluginGUI::~LADSPAPluginGUI(void)
{ {
if (m_InData.InputPortNames) free(m_InData.InputPortNames); 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(); Fl::check();
} }


@@ -131,6 +134,23 @@ void LADSPAPluginGUI::UpdatePortDisplay(int n, float v)
m_PortOutput[n]->value(temp); 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) void LADSPAPluginGUI::SetMinMax(int n, float min, float max, bool clamp)
{ {
char temp[256]; char temp[256];
@@ -150,7 +170,7 @@ void LADSPAPluginGUI::GetMinMax(int n, float &min, float &max, bool &clamp)
max = atof(m_PortMax[n]->value()); max = atof(m_PortMax[n]->value());
clamp = m_PortClamp[n]->value(); clamp = m_PortClamp[n]->value();
} }
*/
void LADSPAPluginGUI::SetName(const char *s) void LADSPAPluginGUI::SetName(const char *s)
{ {
m_Name->label(s); m_Name->label(s);
@@ -171,7 +191,7 @@ void LADSPAPluginGUI::ClearPortInfo()


m_InputScroll->remove(m_InputPack); m_InputScroll->remove(m_InputPack);
delete 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_InputScroll->add(m_InputPack);


m_PortOutput.clear(); m_PortOutput.clear();
@@ -179,44 +199,57 @@ void LADSPAPluginGUI::ClearPortInfo()
m_PortMin.clear(); m_PortMin.clear();
m_PortMax.clear(); m_PortMax.clear();
m_PortClamp.clear(); m_PortClamp.clear();
m_PortDefault.clear();
} }


void LADSPAPluginGUI::AddPortInfo(const char *Info) 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); NewGroup->box(FL_FLAT_BOX);
m_InputPack->add(NewGroup); m_InputPack->add(NewGroup);
m_PackVec.push_back(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->value(0);
NewOutput->textsize(10); NewOutput->textsize(10);
NewGroup->add(NewOutput); NewGroup->add(NewOutput);
m_PortOutput.push_back(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->value(0);
NewInput->textsize(10); NewInput->textsize(10);
NewGroup->add(NewInput); NewGroup->add(NewInput);
m_PortMin.push_back(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->value(0);
NewInput->textsize(10); NewInput->textsize(10);
NewGroup->add(NewInput); NewGroup->add(NewInput);
m_PortMax.push_back(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); NewCheckButton->value(0);
NewGroup->add(NewCheckButton); NewGroup->add(NewCheckButton);
m_PortClamp.push_back(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(); NewGroup->redraw();
m_InputPack->redraw(); m_InputPack->redraw();
m_InputScroll->redraw(); m_InputScroll->redraw();
@@ -234,13 +267,13 @@ void LADSPAPluginGUI::UpdateValues(SpiralPlugin *o)


unsigned long n = Plugin->GetInputPortCount(); unsigned long n = Plugin->GetInputPortCount();
const char *name; const char *name;
PortRange range;
PortSettings settings;


for (unsigned long p = 0; p < n; p++) { for (unsigned long p = 0; p < n; p++) {
name = Plugin->GetPortName(p); name = Plugin->GetPortName(p);
range = Plugin->GetPortRange(p);
settings = Plugin->GetPortSettings(p);
AddPortInfo(name); 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); ((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->Set("SetPluginIndex",o->value()-1);
m_GUICH->SetCommand(LADSPAPlugin::SELECTPLUGIN); 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("GetMaker", m_InData.Maker);
m_GUICH->GetData("GetInputPortCount", &(m_InData.InputPortCount)); m_GUICH->GetData("GetInputPortCount", &(m_InData.InputPortCount));
m_GUICH->GetData("GetInputPortNames", m_InData.InputPortNames); 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); SetName((const char *)m_InData.Name);
SetMaker((const char *)m_InData.Maker); 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++) { for (unsigned long n = 0; n < m_InData.InputPortCount; n++) {
AddPortInfo((const char *)(m_InData.InputPortNames + n * 256)); 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); ((LADSPAPluginGUI*)(o->parent()))->cb_Select_i(o);
} }
@@ -302,26 +336,33 @@ inline void LADSPAPluginGUI::cb_MinMax_i(Fl_Button* o, void* v)
for (vector<Fl_Input*>::iterator i=m_PortMin.begin(); for (vector<Fl_Input*>::iterator i=m_PortMin.begin();
i!=m_PortMin.end(); i++) i!=m_PortMin.end(); i++)
{ {
m_InData.InputPortRanges[n].Min = atof((*i)->value());
m_InData.InputPortSettings[n].Min = atof((*i)->value());
n++; n++;
} }
n=0; n=0;
for (vector<Fl_Input*>::iterator i=m_PortMax.begin(); for (vector<Fl_Input*>::iterator i=m_PortMax.begin();
i!=m_PortMax.end(); i++) i!=m_PortMax.end(); i++)
{ {
m_InData.InputPortRanges[n].Max = atof((*i)->value());
m_InData.InputPortSettings[n].Max = atof((*i)->value());
n++; n++;
} }
n=0; n=0;
for (vector<Fl_Check_Button*>::iterator i=m_PortClamp.begin(); for (vector<Fl_Check_Button*>::iterator i=m_PortClamp.begin();
i!=m_PortClamp.end(); i++) 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<Fl_Input*>::iterator i=m_PortDefault.begin();
i!=m_PortDefault.end(); i++)
{
m_InData.InputPortSettings[n].Default = atof((*i)->value());
n++; 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) void LADSPAPluginGUI::cb_MinMax(Fl_Button* o, void* v)
{ {


+ 8
- 7
SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h View File

@@ -25,7 +25,6 @@
#include <FL/Fl_Button.H> #include <FL/Fl_Button.H>
#include <FL/Fl_Check_Button.H> #include <FL/Fl_Check_Button.H>
#include <FL/Fl_Box.H> #include <FL/Fl_Box.H>
#include <FL/Fl_Hold_Browser.H>
#include <FL/Fl_Output.H> #include <FL/Fl_Output.H>
#include <FL/Fl_Scroll.H> #include <FL/Fl_Scroll.H>
#include "../Widgets/Fl_Knob.H" #include "../Widgets/Fl_Knob.H"
@@ -64,13 +63,14 @@ public:
void ClearPortInfo(); void ClearPortInfo();
void AddPortInfo(const char *Info); void AddPortInfo(const char *Info);
void UpdatePortDisplay(int n, float v); 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: private:
Fl_Scroll *m_InputScroll; Fl_Scroll *m_InputScroll;
Fl_Pack *m_InputPack; Fl_Pack *m_InputPack;
Fl_Hold_Browser *m_Browser;
Fl_Choice *m_Browser;
Fl_Knob *m_OutputGain; Fl_Knob *m_OutputGain;
Fl_Box *m_Name; Fl_Box *m_Name;
Fl_Box *m_Maker; Fl_Box *m_Maker;
@@ -81,6 +81,7 @@ private:
std::vector<Fl_Input*> m_PortMin; std::vector<Fl_Input*> m_PortMin;
std::vector<Fl_Input*> m_PortMax; std::vector<Fl_Input*> m_PortMax;
std::vector<Fl_Check_Button*> m_PortClamp; std::vector<Fl_Check_Button*> m_PortClamp;
std::vector<Fl_Input*> m_PortDefault;


std::vector<LADSPAInfo::PluginEntry> PluginList; std::vector<LADSPAInfo::PluginEntry> PluginList;


@@ -90,8 +91,8 @@ private:


int inited; 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); inline void cb_Gain_i(Fl_Knob* o, void* v);
static void cb_Gain(Fl_Knob* o, void* v); static void cb_Gain(Fl_Knob* o, void* v);
inline void cb_MinMax_i(Fl_Button* o, void* v); inline void cb_MinMax_i(Fl_Button* o, void* v);
@@ -107,7 +108,7 @@ private:
unsigned long MaxInputPortCount; unsigned long MaxInputPortCount;
unsigned long InputPortCount; unsigned long InputPortCount;
char *InputPortNames; char *InputPortNames;
PortRange *InputPortRanges;
PortSettings *InputPortSettings;
float *InputPortValues; float *InputPortValues;
}; };




Loading…
Cancel
Save