diff --git a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C index 910c4d3..4f91840 100644 --- a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C +++ b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.C @@ -155,6 +155,7 @@ m_Amped(false) m_OutData.InputPortNames = (char *)malloc(256 * m_MaxInputPortCount); m_OutData.InputPortRanges = (PortRange *)malloc(sizeof(PortRange) * m_MaxInputPortCount); + m_OutData.InputPortValues = (float *)malloc(sizeof(float) * m_MaxInputPortCount); m_InData.InputPortRanges = (PortRange *)malloc(sizeof(PortRange) * m_MaxInputPortCount); if (m_OutData.InputPortNames && @@ -162,6 +163,7 @@ m_Amped(false) m_InData.InputPortRanges) { 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("GetInputPortValues", ChannelHandler::OUTPUT, m_OutData.InputPortValues, sizeof(float) * m_MaxInputPortCount); m_AudioCH->RegisterData("SetInputPortRanges", ChannelHandler::INPUT, m_InData.InputPortRanges, sizeof(PortRange) * m_MaxInputPortCount); } else { cerr<<"Memory allocation error"<UpdatePortDisplay(n,m_LADSPABufVec[n][0]); + // Copy values into OutData value buffer for display in GUI + m_OutData.InputPortValues[n] = m_LADSPABufVec[n][0]; } else // zero { diff --git a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h index 605ac97..b42ee66 100644 --- a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h +++ b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPlugin.h @@ -131,6 +131,7 @@ private: { char *InputPortNames; PortRange *InputPortRanges; + float *InputPortValues; }; // Data received from GUI diff --git a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C index fac14e3..f1b38d3 100644 --- a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C +++ b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.C @@ -51,11 +51,12 @@ SpiralPluginGUI(w,h,o,ch) } // Get maximum input port count - m_GUICH->GetData("GetMaxInputPortCount",&(m_InData.MaxInputPorts)); + m_GUICH->GetData("GetMaxInputPortCount",&(m_InData.MaxInputPortCount)); // Set up buffers for data transfer via ChannelHandler - m_InData.InputPortNames = (char *)malloc(256 * m_InData.MaxInputPorts); - m_InData.InputPortRanges = (PortRange *)malloc(sizeof(PortRange) * m_InData.MaxInputPorts); + m_InData.InputPortNames = (char *)malloc(256 * m_InData.MaxInputPortCount); + m_InData.InputPortRanges = (PortRange *)malloc(sizeof(PortRange) * m_InData.MaxInputPortCount); + m_InData.InputPortValues = (float *)malloc(sizeof(float) * m_InData.MaxInputPortCount); if (!(m_InData.InputPortNames && m_InData.InputPortRanges)) { cerr<<"Memory allocation error\n"<GetData("GetInputPortCount", &(m_InData.InputPortCount)); + m_GUICH->GetData("GetInputPortValues", m_InData.InputPortValues); + + for (unsigned long n=0; n < m_InData.InputPortCount; n++) { + UpdatePortDisplay(n, m_InData.InputPortValues[n]); + } +} + inline void LADSPAPluginGUI::cb_Gain_i(Fl_Knob* o, void* v) { m_GUICH->Set("SetGain",(float)(o->value())); @@ -264,7 +275,7 @@ inline void LADSPAPluginGUI::cb_Select_i(Fl_Hold_Browser* o) // Now get the new values to populate GUI controls m_GUICH->GetData("GetName", m_InData.Name); m_GUICH->GetData("GetMaker", m_InData.Maker); - m_GUICH->GetData("GetInputPortCount", &(m_InData.InputPorts)); + m_GUICH->GetData("GetInputPortCount", &(m_InData.InputPortCount)); m_GUICH->GetData("GetInputPortNames", m_InData.InputPortNames); m_GUICH->GetData("GetInputPortRanges", m_InData.InputPortRanges); @@ -274,7 +285,7 @@ inline void LADSPAPluginGUI::cb_Select_i(Fl_Hold_Browser* o) // Clear out port info, and refresh ClearPortInfo(); - for (unsigned long n = 0; n < m_InData.InputPorts; n++) { + 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, diff --git a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h index bb6ad57..c2625ea 100644 --- a/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h +++ b/SpiralSound/Plugins/LADSPAPlugin/LADSPAPluginGUI.h @@ -51,6 +51,7 @@ public: ~LADSPAPluginGUI(); virtual void UpdateValues(SpiralPlugin *o); + virtual void Update(void); void SetName(const char *s); void SetMaker(const char *s); @@ -61,8 +62,8 @@ public: void SetMinMax(int n, float min, float max, bool clamp); void GetMinMax(int n, float &min, float &max, bool &clamp); - string GetFilename() { return m_Filename; } - string GetLabel() { return m_Label; } + string GetFilename(void) { return m_Filename; } + string GetLabel(void) { return m_Label; } void SetFilename(string s) { m_Filename=s; } void SetLabel(string s) { m_Label=s; } @@ -108,10 +109,11 @@ private: float Gain; char Name[256]; char Maker[256]; - unsigned long MaxInputPorts; - unsigned long InputPorts; + unsigned long MaxInputPortCount; + unsigned long InputPortCount; char *InputPortNames; PortRange *InputPortRanges; + float *InputPortValues; }; InChannelData m_InData;