Browse Source

Fixed segfault on load. Defaults now working properly. Selecting (None) plugin works as expected

master
waxfrenzy 23 years ago
parent
commit
4624d22d64
6 changed files with 215 additions and 68 deletions
  1. +11
    -0
      SpiralSound/Plugins/LADSPAPlugin/LADSPAInfo.C
  2. +8
    -0
      SpiralSound/Plugins/LADSPAPlugin/LADSPAInfo.h
  3. +169
    -52
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C
  4. +3
    -3
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h
  5. +23
    -13
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C
  6. +1
    -0
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h

+ 11
- 0
SpiralSound/Plugins/LADSPAPlugin/LADSPAInfo.C View File

@@ -205,6 +205,17 @@ LADSPAInfo::GetPluginList(void)
return m_OrderedPluginList; return m_OrderedPluginList;
} }


unsigned long
LADSPAInfo::GetPluginListEntryByID(unsigned long unique_id)
{
unsigned long j = 0;
for (vector<PluginEntry>::iterator i = m_OrderedPluginList.begin();
i != m_OrderedPluginList.end(); i++, j++) {
if (i->UniqueID == unique_id) return j;
}
return m_OrderedPluginList.size();
}

// **************************************************************************** // ****************************************************************************
// ** Private Member Functions ** // ** Private Member Functions **
// **************************************************************************** // ****************************************************************************


+ 8
- 0
SpiralSound/Plugins/LADSPAPlugin/LADSPAInfo.h View File

@@ -62,7 +62,15 @@ public:
std::string Name; std::string Name;
}; };


// Get a list of plugins ordered by name
const std::vector<PluginEntry> GetPluginList(void); const std::vector<PluginEntry> GetPluginList(void);

// Get the index in the above list for given Unique ID
// If not found, this returns the size of the above list
unsigned long GetPluginListEntryByID(unsigned long unique_id);
// Get the number of input ports for the plugin with the most
// input ports
unsigned long GetMaxInputPortCount(void) { return m_MaxInputPortCount; } unsigned long GetMaxInputPortCount(void) { return m_MaxInputPortCount; }


private: private:


+ 169
- 52
SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C View File

@@ -46,13 +46,13 @@ int GetID()


/////////////////////////////////////////////////////// ///////////////////////////////////////////////////////


LADSPAPlugin::LADSPAPlugin() :
PlugHandle(0),
PlugDesc(NULL),
m_Gain(1.0f),
m_Amped(false)
LADSPAPlugin::LADSPAPlugin()
{ {
m_Version=4;
PlugDesc = NULL;

ClearPlugin();

m_Version=5;


m_PluginInfo.Name="LADSPA"; m_PluginInfo.Name="LADSPA";
m_PluginInfo.Width=500; m_PluginInfo.Width=500;
@@ -61,9 +61,7 @@ m_Amped(false)
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;


// For receiving from GUI // For receiving from GUI
m_AudioCH->Register("SetGain",&(m_InData.Gain)); m_AudioCH->Register("SetGain",&(m_InData.Gain));
@@ -96,6 +94,9 @@ m_Amped(false)


LADSPAPlugin::~LADSPAPlugin() LADSPAPlugin::~LADSPAPlugin()
{ {
// Clear plugin
ClearPlugin();

// 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.InputPortSettings) free(m_OutData.InputPortSettings); if (m_OutData.InputPortSettings) free(m_OutData.InputPortSettings);
@@ -186,12 +187,18 @@ void LADSPAPlugin::ExecuteCommands()
{ {
switch(m_AudioCH->GetCommand()) switch(m_AudioCH->GetCommand())
{ {
case (SETPORTSETTINGS) :
case (SETPORTSETTINGS):
SetPortSettings(); SetPortSettings();
break; break;
case (SELECTPLUGIN) :
case (CLEARPLUGIN):
ClearPlugin();
m_PluginInfo.NumOutputs=1;
m_PluginInfo.PortTips.push_back("Nuffink yet");
UpdatePluginInfoWithHost();
break;
case (SELECTPLUGIN):
vector<LADSPAInfo::PluginEntry> pe = m_LADSPAInfo.GetPluginList(); vector<LADSPAInfo::PluginEntry> pe = m_LADSPAInfo.GetPluginList();
UpdatePlugin(pe[m_InData.PluginIndex].UniqueID);
UpdatePlugin(pe[m_InData.PluginIndex - 1].UniqueID);
break; break;
} }
} }
@@ -203,7 +210,7 @@ void LADSPAPlugin::StreamOut(ostream &s)


switch (m_Version) switch (m_Version)
{ {
case 4:
case 5:
{ {
s<<m_Gain<<" "; s<<m_Gain<<" ";
s<<m_UniqueID<<" "; s<<m_UniqueID<<" ";
@@ -233,10 +240,35 @@ void LADSPAPlugin::StreamOut(ostream &s)
} }
} }
break; break;
case 3:
case 4:
{ {
// Here for consistency - should never actually happen, as // Here for consistency - should never actually happen, as
// version is always 4!
// version is always 5!
// s<<m_Gain<<" ";
// s<<m_UniqueID<<" ";
// s<<m_PortMin.size()<<" ";
// assert(m_PortMin.size()==m_PortMax.size());
// assert(m_PortMin.size()==m_PortClamp.size());
// assert(m_PortMin.size()==m_PortDefault.size());
// for (vector<float>::iterator i=m_PortMin.begin();
// i!=m_PortMin.end(); i++)
// {
// s<<*i<<" ";
// }
// for (vector<float>::iterator i=m_PortMax.begin();
// i!=m_PortMax.end(); i++)
// {
// s<<*i<<" ";
// }
// for (vector<bool>::iterator i=m_PortClamp.begin();
// i!=m_PortClamp.end(); i++)
// {
// s<<*i<<" ";
// }
}
break;
case 3:
{
// s<<m_Gain<<" "; // s<<m_Gain<<" ";
// s<<m_Filename<<" "; // s<<m_Filename<<" ";
// s<<m_Label<<" "; // s<<m_Label<<" ";
@@ -296,6 +328,43 @@ void LADSPAPlugin::StreamIn(istream &s)


switch (version) switch (version)
{ {
case 5:
{
s>>m_Gain;

unsigned long UniqueID;
s>>UniqueID;
int PortCount;
s>>PortCount;
float Min, Max;
bool Clamp;
float Default;

for (int n=0; n<PortCount; n++)
{
s>>Min;
m_PortMin.push_back(Min);
}

for (int n=0; n<PortCount; n++)
{
s>>Max;
m_PortMax.push_back(Max);
}
for (int n=0; n<PortCount; n++)
{
s>>Clamp;
m_PortClamp.push_back(Clamp);
}
for (int n=0; n<PortCount; n++)
{
s>>Default;
m_PortDefault.push_back(Default);
}

UpdatePlugin(UniqueID, false);
}
break;
case 4: case 4:
{ {
s>>m_Gain; s>>m_Gain;
@@ -304,30 +373,29 @@ void LADSPAPlugin::StreamIn(istream &s)
s>>UniqueID; s>>UniqueID;
int PortCount; int PortCount;
s>>PortCount; s>>PortCount;
float min,max;
bool clamp;
float defolt;
float Min, Max;
bool Clamp;


for (int n=0; n<PortCount; n++) for (int n=0; n<PortCount; n++)
{ {
s>>min;
m_PortMin.push_back(min);
s>>Min;
m_PortMin.push_back(Min);
} }


for (int n=0; n<PortCount; n++) for (int n=0; n<PortCount; n++)
{ {
s>>max;
m_PortMax.push_back(max);
s>>Max;
m_PortMax.push_back(Max);
} }
for (int n=0; n<PortCount; n++) for (int n=0; n<PortCount; n++)
{ {
s>>clamp;
m_PortClamp.push_back(clamp);
s>>Clamp;
m_PortClamp.push_back(Clamp);
} }
for (int n=0; n<PortCount; n++) for (int n=0; n<PortCount; n++)
{ {
s>>defolt;
m_PortDefault.push_back(defolt);
// Set defaults to zero
m_PortDefault.push_back(0.0f);
} }


UpdatePlugin(UniqueID, false); UpdatePlugin(UniqueID, false);
@@ -362,6 +430,12 @@ void LADSPAPlugin::StreamIn(istream &s)
m_PortClamp.push_back(clamp); m_PortClamp.push_back(clamp);
} }


for (int n=0; n<PortCount; n++)
{
// Set defaults to zero
m_PortDefault.push_back(0.0f);
}

if (Filename!="None") if (Filename!="None")
{ {
// Get Unique ID from filename and label // Get Unique ID from filename and label
@@ -398,6 +472,12 @@ void LADSPAPlugin::StreamIn(istream &s)
m_PortClamp.push_back(true); m_PortClamp.push_back(true);
} }


for (int n=0; n<PortCount; n++)
{
// Set defaults to zero
m_PortDefault.push_back(0.0f);
}

if (Filename!="None") if (Filename!="None")
{ {
// Get Unique ID from filename and label // Get Unique ID from filename and label
@@ -418,22 +498,55 @@ void LADSPAPlugin::StreamIn(istream &s)
{ {
// Get Unique ID from filename and label // Get Unique ID from filename and label
unsigned long id = m_LADSPAInfo.GetIDFromFilenameAndLabel(Filename, Label); unsigned long id = m_LADSPAInfo.GetIDFromFilenameAndLabel(Filename, Label);
if (id) UpdatePlugin(id, false);
// Reset Port Settings, as none will be in file
if (id) UpdatePlugin(id, true);
} }
} }
break; break;
} }
} }


bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
void
LADSPAPlugin::ClearPlugin(void)
{ {
// first call with same info, to clear the ports
UpdatePluginInfoWithHost();

// Clear selected plugin
if (PlugDesc) { if (PlugDesc) {
if (PlugDesc->deactivate) PlugDesc->deactivate(PlugInstHandle); if (PlugDesc->deactivate) PlugDesc->deactivate(PlugInstHandle);
PlugDesc->cleanup(PlugInstHandle); PlugDesc->cleanup(PlugInstHandle);
PlugDesc = NULL;
}

m_PluginIndex = 0;
m_InputPortCount = 0;
m_Gain = 1.0f;
m_Amped = false;
strncpy(m_Name, "None\0", 5);
strncpy(m_Maker, "None\0", 5);

for(vector<LADSPA_Data*>::iterator i=m_LADSPABufVec.begin();
i!=m_LADSPABufVec.end(); i++)
{
if (*i) delete[] (*i);
} }
m_LADSPABufVec.clear();

RemoveAllInputs();
RemoveAllOutputs();

m_PluginInfo.NumInputs = 0;
m_PluginInfo.NumOutputs = 0;
m_PluginInfo.PortTips.clear();

m_PortID.clear();
m_PortMin.clear();
m_PortMax.clear();
m_PortClamp.clear();
m_PortDefault.clear();
}

bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool ResetPortSettings)
{
ClearPlugin();


PlugDesc = m_LADSPAInfo.GetDescriptorByID(UniqueID, true); PlugDesc = m_LADSPAInfo.GetDescriptorByID(UniqueID, true);


@@ -447,7 +560,6 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
} }


// Find number of input and output ports // Find number of input and output ports
m_PluginInfo.NumInputs = m_PluginInfo.NumOutputs = 0;
for (unsigned long i = 0; i < PlugDesc->PortCount; i++) { for (unsigned long i = 0; i < PlugDesc->PortCount; i++) {
if (LADSPA_IS_PORT_INPUT(PlugDesc->PortDescriptors[i])) { if (LADSPA_IS_PORT_INPUT(PlugDesc->PortDescriptors[i])) {
m_PluginInfo.NumInputs++; m_PluginInfo.NumInputs++;
@@ -459,13 +571,6 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
///////////////////////////////// /////////////////////////////////
// LADSPA Buffers // LADSPA Buffers


for(vector<LADSPA_Data*>::iterator i=m_LADSPABufVec.begin();
i!=m_LADSPABufVec.end(); i++)
{
if (*i) delete[] (*i);
}
m_LADSPABufVec.clear();

unsigned long c=0; unsigned long c=0;
for (unsigned int n=0; n<PlugDesc->PortCount; n++) for (unsigned int n=0; n<PlugDesc->PortCount; n++)
{ {
@@ -498,19 +603,13 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
///////////////////////////////// /////////////////////////////////
// SSM Buffers // SSM Buffers


// Clear i/o buffers
RemoveAllInputs();
RemoveAllOutputs();

// Reallocate the i/o buffers required
// Allocate the i/o buffers required
for (int n=0; n<m_PluginInfo.NumInputs; n++) AddInput(); for (int n=0; n<m_PluginInfo.NumInputs; n++) AddInput();
for (int n=0; n<m_PluginInfo.NumOutputs; n++) AddOutput(); for (int n=0; n<m_PluginInfo.NumOutputs; n++) AddOutput();


////////////////////////////// //////////////////////////////
// Update the GUI stuff // Update the GUI stuff


m_PluginInfo.PortTips.clear();

string desc; string desc;
c=0; c=0;
for (unsigned int i = 0; i < PlugDesc->PortCount; i++) for (unsigned int i = 0; i < PlugDesc->PortCount; i++)
@@ -538,12 +637,8 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)


UpdatePluginInfoWithHost(); UpdatePluginInfoWithHost();


if (PortClampReset)
if (ResetPortSettings)
{ {
m_PortMin.clear();
m_PortMax.clear();
m_PortClamp.clear();

for (int n=0; n<m_PluginInfo.NumInputs; n++) for (int n=0; n<m_PluginInfo.NumInputs; n++)
{ {
float Max=1.0f, Min=-1.0f, Default=0.0f; float Max=1.0f, Min=-1.0f, Default=0.0f;
@@ -585,7 +680,7 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
Default=PlugDesc->PortRangeHints[Port].LowerBound; Default=PlugDesc->PortRangeHints[Port].LowerBound;
} else if (LADSPA_IS_HINT_DEFAULT_MAXIMUM(HintDesc) && } else if (LADSPA_IS_HINT_DEFAULT_MAXIMUM(HintDesc) &&
LADSPA_IS_HINT_BOUNDED_ABOVE(HintDesc)) { LADSPA_IS_HINT_BOUNDED_ABOVE(HintDesc)) {
Default=PlugDesc->PortRangeHints[Port].LowerBound;
Default=PlugDesc->PortRangeHints[Port].UpperBound;
} else if (LADSPA_IS_HINT_BOUNDED_BELOW(HintDesc) && } else if (LADSPA_IS_HINT_BOUNDED_BELOW(HintDesc) &&
LADSPA_IS_HINT_BOUNDED_ABOVE(HintDesc)) { LADSPA_IS_HINT_BOUNDED_ABOVE(HintDesc)) {
// These hints require both upper and lower bounds // These hints require both upper and lower bounds
@@ -604,7 +699,26 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
} }


if (LADSPA_IS_HINT_LOGARITHMIC(HintDesc)) { if (LADSPA_IS_HINT_LOGARITHMIC(HintDesc)) {
Default = exp(log(min) * lp + log(max) * up);
if (min==0.0f || max==0.0f) {
// Zero at either end means zero no matter
// where hint is at, since:
// log(n->0) -> Infinity
Default = 0.0f;
} else {
// Catch negatives
bool neg_min = min < 0.0f ? true : false;
bool neg_max = max < 0.0f ? true : false;

if (!neg_min && !neg_max) {
Default = exp(log(min) * lp + log(max) * up);
} else if (neg_min && neg_max) {
Default = -exp(log(-min) * lp + log(-max) * up);
} else {
// Logarithmic range has asymptote
// so just use linear scale
Default = min * lp + max * up;
}
}
} else { } else {
Default = min * lp + max * up; Default = min * lp + max * up;
} }
@@ -638,6 +752,7 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
char *lbl_start; char *lbl_start;


m_UniqueID = PlugDesc->UniqueID; m_UniqueID = PlugDesc->UniqueID;
m_PluginIndex = m_LADSPAInfo.GetPluginListEntryByID(m_UniqueID) + 1;
m_InputPortCount = m_PluginInfo.NumInputs; m_InputPortCount = m_PluginInfo.NumInputs;


lbl_length = strlen(PlugDesc->Name); lbl_length = strlen(PlugDesc->Name);
@@ -667,6 +782,8 @@ bool LADSPAPlugin::UpdatePlugin(unsigned long UniqueID, bool PortClampReset)
return true; return true;
} }


// Oops. Clean up.
ClearPlugin();
cerr << "Error loading LADSPA Plugin.\n"; cerr << "Error loading LADSPA Plugin.\n";


return false; return false;


+ 3
- 3
SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h View File

@@ -67,17 +67,17 @@ public:
return settings; return settings;
} }


enum GUICommands{NONE,SETPORTSETTINGS,SELECTPLUGIN};
enum GUICommands{NONE,SETPORTSETTINGS,SELECTPLUGIN,CLEARPLUGIN};


private: private:


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


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


void * PlugHandle;
const LADSPA_Descriptor * PlugDesc; const LADSPA_Descriptor * PlugDesc;


vector<LADSPA_Data*> m_LADSPABufVec; vector<LADSPA_Data*> m_LADSPABufVec;


+ 23
- 13
SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C View File

@@ -57,7 +57,7 @@ SpiralPluginGUI(w,h,o,ch)
} }


// Set up widgets // Set up widgets
m_Browser = new Fl_Choice(60,20,420,20,"Plugin:");
m_Browser = new Fl_Choice(60,20,420,25,"Plugin:");
m_Browser->callback((Fl_Callback *)cb_Select); m_Browser->callback((Fl_Callback *)cb_Select);


m_Browser->add("(None)"); m_Browser->add("(None)");
@@ -66,20 +66,21 @@ SpiralPluginGUI(w,h,o,ch)
{ {
m_Browser->add(i->Name.c_str()); m_Browser->add(i->Name.c_str());
} }
m_Browser->value(0);


m_Name = new Fl_Box(10,45,480,20,"None");
m_Name = new Fl_Box(10,50,480,20,"None");
m_Name->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); 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(10,65,480,20,"None");
m_Maker = new Fl_Box(10,70,480,20,"None");
m_Maker->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE); 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_InputScroll = new Fl_Scroll(10,105,480,150," Value Min Max Clamp? Default Port Name");
m_InputScroll = new Fl_Scroll(10,110,480,150," Value Min Max Clamp? Default Port Name");
m_InputScroll->labelsize(12); m_InputScroll->labelsize(12);
m_InputScroll->align(FL_ALIGN_TOP_LEFT); m_InputScroll->align(FL_ALIGN_TOP_LEFT);
m_InputScroll->type(Fl_Scroll::VERTICAL); m_InputScroll->type(Fl_Scroll::VERTICAL);
@@ -171,7 +172,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()+5,y()+110,460,20,"");
m_InputPack = new Fl_Pack(x()+5,y()+115,460,20,"");
m_InputScroll->add(m_InputPack); m_InputScroll->add(m_InputPack);


m_PortOutput.clear(); m_PortOutput.clear();
@@ -233,8 +234,6 @@ void LADSPAPluginGUI::AddPortInfo(const char *Info)
NewGroup->redraw(); NewGroup->redraw();
m_InputPack->redraw(); m_InputPack->redraw();
m_InputScroll->redraw(); m_InputScroll->redraw();

redraw();
} }


void LADSPAPluginGUI::UpdateValues(SpiralPlugin *o) void LADSPAPluginGUI::UpdateValues(SpiralPlugin *o)
@@ -259,9 +258,12 @@ void LADSPAPluginGUI::UpdateValues(SpiralPlugin *o)


void LADSPAPluginGUI::Update(void) void LADSPAPluginGUI::Update(void)
{ {
m_GUICH->GetData("GetPluginIndex", &(m_InData.PluginIndex));
m_GUICH->GetData("GetInputPortCount", &(m_InData.InputPortCount)); m_GUICH->GetData("GetInputPortCount", &(m_InData.InputPortCount));
m_GUICH->GetData("GetInputPortValues", m_InData.InputPortValues); m_GUICH->GetData("GetInputPortValues", m_InData.InputPortValues);

m_Browser->value(m_InData.PluginIndex);

for (unsigned long n=0; n < m_InData.InputPortCount; n++) { for (unsigned long n=0; n < m_InData.InputPortCount; n++) {
UpdatePortDisplay(n, m_InData.InputPortValues[n]); UpdatePortDisplay(n, m_InData.InputPortValues[n]);
} }
@@ -278,8 +280,14 @@ void LADSPAPluginGUI::cb_Gain(Fl_Knob* o, void* v)


inline void LADSPAPluginGUI::cb_Select_i(Fl_Choice* o) inline void LADSPAPluginGUI::cb_Select_i(Fl_Choice* o)
{ {
m_GUICH->Set("SetPluginIndex",o->value()-1);
m_GUICH->SetCommand(LADSPAPlugin::SELECTPLUGIN);
if (o->value() == 0) {
// "(None)" selected
m_GUICH->SetCommand(LADSPAPlugin::CLEARPLUGIN);
} else {
// Plugin selected
m_GUICH->Set("SetPluginIndex",o->value());
m_GUICH->SetCommand(LADSPAPlugin::SELECTPLUGIN);
}


// Wait until next update for plugin to be loaded etc. // Wait until next update for plugin to be loaded etc.
m_GUICH->Wait(); m_GUICH->Wait();
@@ -300,10 +308,12 @@ inline void LADSPAPluginGUI::cb_Select_i(Fl_Choice* 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));
SetPortSettings(n, m_InData.InputPortSettings[n].Min, SetPortSettings(n, m_InData.InputPortSettings[n].Min,
m_InData.InputPortSettings[n].Max,
m_InData.InputPortSettings[n].Clamp,
m_InData.InputPortSettings[n].Default);
m_InData.InputPortSettings[n].Max,
m_InData.InputPortSettings[n].Clamp,
m_InData.InputPortSettings[n].Default);
} }

redraw();
} }
void LADSPAPluginGUI::cb_Select(Fl_Choice* o) void LADSPAPluginGUI::cb_Select(Fl_Choice* o)
{ {


+ 1
- 0
SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h View File

@@ -100,6 +100,7 @@ private:


struct InChannelData struct InChannelData
{ {
unsigned long PluginIndex;
float Gain; float Gain;
char Name[256]; char Name[256];
char Maker[256]; char Maker[256];


Loading…
Cancel
Save