Browse Source

Some more fiddling and clean up following tests

master
waxfrenzy 23 years ago
parent
commit
ff8051167a
5 changed files with 76 additions and 38 deletions
  1. +0
    -1
      SpiralSound/Plugins/LADSPAPlugin/LADSPAInfo.C
  2. +20
    -6
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C
  3. +6
    -2
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h
  4. +48
    -28
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C
  5. +2
    -1
      SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h

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

@@ -115,7 +115,6 @@ LADSPAInfo::RescanPlugins(void)
stringstream s;
s << n;
i->Name = name + " (" + s.str() + ")";
cerr << " " << n << endl;
n++;
i++;
}


+ 20
- 6
SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C View File

@@ -52,7 +52,7 @@ LADSPAPlugin::LADSPAPlugin()

ClearPlugin();

m_Version=5;
m_Version=6;

m_PluginInfo.Name="LADSPA";
m_PluginInfo.Width=500;
@@ -76,15 +76,21 @@ LADSPAPlugin::LADSPAPlugin()
m_OutData.InputPortNames = (char *)malloc(256 * m_MaxInputPortCount);
m_OutData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_MaxInputPortCount);
m_OutData.InputPortValues = (PortValues *)calloc(m_MaxInputPortCount, sizeof(PortValues));
m_InData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_MaxInputPortCount);
m_OutData.InputPortDefaults = (float *)calloc(m_MaxInputPortCount, sizeof(float));
m_InData.InputPortSettings = (PortSettings *)calloc(m_MaxInputPortCount, sizeof(PortSettings));
m_InData.InputPortDefaults = (float *)calloc(m_MaxInputPortCount, sizeof(float));

if (m_OutData.InputPortNames &&
m_OutData.InputPortDefaults &&
m_OutData.InputPortSettings &&
m_InData.InputPortSettings) {
m_InData.InputPortSettings &&
m_InData.InputPortDefaults) {
m_AudioCH->RegisterData("GetInputPortNames", ChannelHandler::OUTPUT, m_OutData.InputPortNames, 256 * 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(PortValues) * m_MaxInputPortCount);
m_AudioCH->RegisterData("GetInputPortDefaults", ChannelHandler::OUTPUT, m_OutData.InputPortDefaults, sizeof(float) * m_MaxInputPortCount);
m_AudioCH->RegisterData("SetInputPortSettings", ChannelHandler::INPUT, m_InData.InputPortSettings, sizeof(PortSettings) * m_MaxInputPortCount);
m_AudioCH->RegisterData("SetInputPortDefaults", ChannelHandler::INPUT, m_InData.InputPortDefaults, sizeof(float) * m_MaxInputPortCount);
} else {
cerr<<"Memory allocation error"<<endl;
}
@@ -145,16 +151,22 @@ void LADSPAPlugin::Execute()
}
}
m_OutData.InputPortValues[n].Connected = true;
m_PortDefault[n] = m_OutData.InputPortValues[n].Value;
}
else // Use default
{
for (int i=0; i<m_HostInfo->BUFSIZE; i++) {
m_LADSPABufVec[n][i]=m_PortDefault[n];
}
m_OutData.InputPortValues[n].Connected = false;
if (m_OutData.InputPortValues[n].Connected) {
m_OutData.InputPortValues[n].Connected = false;
m_PortDefault[n] = m_OutData.InputPortValues[n].Value;
}
}
// Copy values into OutData value buffer for display in GUI
m_OutData.InputPortValues[n].Value = m_LADSPABufVec[n][0];
// Ditto for default, which may have been set to value
m_OutData.InputPortDefaults[n] = m_PortDefault[n];
}

// run plugin
@@ -386,6 +398,7 @@ void LADSPAPlugin::StreamIn(istream &s)
ClearPlugin();
}
}
break;
case 5:
{
ClearPlugin();
@@ -714,6 +727,7 @@ void LADSPAPlugin::ClearPlugin(void)
PlugDesc = NULL;
}

m_UniqueID = 0;
m_PluginIndex = 0;
m_InputPortCount = 0;
strncpy(m_Name, "None\0", 5);
@@ -881,7 +895,7 @@ void LADSPAPlugin::SetGUIExports(void)
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];
m_OutData.InputPortDefaults[n] = m_PortDefault[n];
}
}

@@ -891,6 +905,6 @@ void LADSPAPlugin::SetPortSettings(void)
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;
m_PortDefault[n] = m_InData.InputPortDefaults[n];
}
}

+ 6
- 2
SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h View File

@@ -32,7 +32,6 @@ struct PortSettings
float Min;
float Max;
bool Clamp;
float Default;
};
struct PortValues
{
@@ -66,9 +65,12 @@ public:
settings.Min = m_PortMin[p];
settings.Max = m_PortMax[p];
settings.Clamp = m_PortClamp[p];
settings.Default = m_PortDefault[p];
return settings;
}
float GetPortDefault(unsigned long p)
{
return m_PortDefault[p];
}

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

@@ -113,6 +115,7 @@ private:
char *InputPortNames;
PortSettings *InputPortSettings;
PortValues *InputPortValues;
float *InputPortDefaults;
};

// Data received from GUI
@@ -120,6 +123,7 @@ private:
{
unsigned long PluginIndex;
PortSettings *InputPortSettings;
float *InputPortDefaults;
};

OutputChannelData m_OutData;


+ 48
- 28
SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C View File

@@ -51,8 +51,10 @@ SpiralPluginGUI(w,h,o,ch)
m_InData.InputPortNames = (char *)malloc(256 * m_InData.MaxInputPortCount);
m_InData.InputPortSettings = (PortSettings *)malloc(sizeof(PortSettings) * m_InData.MaxInputPortCount);
m_InData.InputPortValues = (PortValues *)calloc(m_InData.MaxInputPortCount, sizeof(PortValues));
m_InData.InputPortDefaults = (float *)calloc(m_InData.MaxInputPortCount, sizeof(float));

if (!(m_InData.InputPortNames && m_InData.InputPortSettings)) {
if (!(m_InData.InputPortNames && m_InData.InputPortSettings &&
m_InData.InputPortValues && m_InData.InputPortDefaults)) {
cerr<<"Memory allocation error\n"<<endl;
}

@@ -129,32 +131,11 @@ LADSPAPluginGUI::~LADSPAPluginGUI(void)
{
if (m_InData.InputPortNames) free(m_InData.InputPortNames);
if (m_InData.InputPortSettings) free(m_InData.InputPortSettings);
if (m_InData.InputPortValues) free(m_InData.InputPortValues);
if (m_InData.InputPortDefaults) free(m_InData.InputPortDefaults);
Fl::check();
}

void LADSPAPluginGUI::UpdatePortDisplay(int n, PortValues pv)
{
// Need to show that a connection is present
// regardless of Refresh being set
if (pv.Connected) {
// Disable
m_PortDefault[n]->readonly(1);
m_PortDefault[n]->color(FL_BACKGROUND_COLOR);
} else {
// Enable
m_PortDefault[n]->readonly(0);
m_PortDefault[n]->color(FL_BACKGROUND2_COLOR);
}
m_PortDefault[n]->redraw();

// Only update values if Refresh is set
if (!m_UpdateInputs->value()) return;

char temp[256];
sprintf(temp,"%.4f",pv.Value);
m_PortOutput[n]->value(temp);
}

void LADSPAPluginGUI::SetPortSettings(unsigned long n, float min, float max, bool clamp, float defolt)
{
char temp[256];
@@ -257,6 +238,40 @@ void LADSPAPluginGUI::AddPortInfo(const char *Info)
m_InputScroll->redraw();
}

void LADSPAPluginGUI::UpdatePortDisplay(int n, PortValues pv, float defolt)
{
char temp[256];

// Need to show that a connection is present
// regardless of Refresh being set
if (!(pv.Connected && m_PortDefault[n]->readonly())) {
if (pv.Connected) {
// Disable
m_PortDefault[n]->readonly(1);
m_PortDefault[n]->color(FL_BACKGROUND_COLOR);

sprintf(temp,"%.4f",defolt);
m_PortDefault[n]->value(temp);
} else {
// Enable
m_PortDefault[n]->readonly(0);
m_PortDefault[n]->color(FL_BACKGROUND2_COLOR);
}
m_PortDefault[n]->redraw();
}

// Only update values if Refresh is set
if (!m_UpdateInputs->value()) return;

sprintf(temp,"%.4f",pv.Value);
m_PortOutput[n]->value(temp);

if (pv.Connected) {
sprintf(temp,"%.4f",defolt);
m_PortDefault[n]->value(temp);
}
}

void LADSPAPluginGUI::UpdateValues(SpiralPlugin *o)
{
LADSPAPlugin* Plugin = (LADSPAPlugin*)o;
@@ -266,12 +281,14 @@ void LADSPAPluginGUI::UpdateValues(SpiralPlugin *o)
unsigned long n = Plugin->GetInputPortCount();
const char *name;
PortSettings settings;
float defolt;

for (unsigned long p = 0; p < n; p++) {
name = Plugin->GetPortName(p);
settings = Plugin->GetPortSettings(p);
defolt = Plugin->GetPortDefault(p);
AddPortInfo(name);
SetPortSettings(p, settings.Min, settings.Max, settings.Clamp, settings.Default);
SetPortSettings(p, settings.Min, settings.Max, settings.Clamp, defolt);
}
}

@@ -280,11 +297,12 @@ void LADSPAPluginGUI::Update(void)
m_GUICH->GetData("GetPluginIndex", &(m_InData.PluginIndex));
m_GUICH->GetData("GetInputPortCount", &(m_InData.InputPortCount));
m_GUICH->GetData("GetInputPortValues", m_InData.InputPortValues);
m_GUICH->GetData("GetInputPortDefaults", m_InData.InputPortDefaults);

m_Browser->value(m_InData.PluginIndex);

for (unsigned long n=0; n < m_InData.InputPortCount; n++) {
UpdatePortDisplay(n, m_InData.InputPortValues[n]);
UpdatePortDisplay(n, m_InData.InputPortValues[n], m_InData.InputPortDefaults[n]);
}
}

@@ -308,6 +326,7 @@ inline void LADSPAPluginGUI::cb_Select_i(Fl_Choice* o)
m_GUICH->GetData("GetInputPortCount", &(m_InData.InputPortCount));
m_GUICH->GetData("GetInputPortNames", m_InData.InputPortNames);
m_GUICH->GetData("GetInputPortSettings", m_InData.InputPortSettings);
m_GUICH->GetData("GetInputPortDefaults", m_InData.InputPortDefaults);

SetName((const char *)m_InData.Name);
SetMaker((const char *)m_InData.Maker);
@@ -320,7 +339,7 @@ inline void LADSPAPluginGUI::cb_Select_i(Fl_Choice* o)
SetPortSettings(n, m_InData.InputPortSettings[n].Min,
m_InData.InputPortSettings[n].Max,
m_InData.InputPortSettings[n].Clamp,
m_InData.InputPortSettings[n].Default);
m_InData.InputPortDefaults[n]);
}

redraw();
@@ -357,11 +376,12 @@ inline void LADSPAPluginGUI::cb_PortSettings_i(Fl_Button* o, void* v)
for (vector<Fl_Input*>::iterator i=m_PortDefault.begin();
i!=m_PortDefault.end(); i++)
{
m_InData.InputPortSettings[n].Default = atof((*i)->value());
m_InData.InputPortDefaults[n] = atof((*i)->value());
n++;
}

m_GUICH->SetData("SetInputPortSettings", m_InData.InputPortSettings);
m_GUICH->SetData("SetInputPortDefaults", m_InData.InputPortDefaults);
m_GUICH->SetCommand(LADSPAPlugin::SETPORTSETTINGS);
}
void LADSPAPluginGUI::cb_PortSettings(Fl_Button* o, void* v)


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

@@ -61,7 +61,7 @@ public:

void ClearPortInfo();
void AddPortInfo(const char *Info);
void UpdatePortDisplay(int n, PortValues pv);
void UpdatePortDisplay(int n, PortValues pv, float defolt);
void SetPortSettings(unsigned long n, float min, float max, bool clamp, float defolt);

private:
@@ -105,6 +105,7 @@ private:
char *InputPortNames;
PortSettings *InputPortSettings;
PortValues *InputPortValues;
float *InputPortDefaults;
};

InChannelData m_InData;


Loading…
Cancel
Save