@@ -62,7 +62,6 @@ m_DC(0.0f) | |||
m_PluginInfo.PortTips.push_back("Gain CV"); | |||
m_PluginInfo.PortTips.push_back("DC Offset CV"); | |||
m_PluginInfo.PortTips.push_back("Output"); | |||
m_AudioCH->Register("Gain",&m_Gain); | |||
m_AudioCH->Register("DC",&m_DC); | |||
} | |||
@@ -92,7 +91,8 @@ void AmpPlugin::Execute() | |||
in = GetInput(0,n); | |||
in *= m_Gain+GetInput(1,n); | |||
in += (-m_DC)+GetInput(2,n); | |||
SetOutput(0,n,in); | |||
SetOutput(0,n,in); | |||
//cerr << m_Gain << " "; | |||
} | |||
} | |||
@@ -14,14 +14,14 @@ | |||
* You should have received a copy of the GNU General Public License | |||
* along with this program; if not, write to the Free Software | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#include "../SpiralPlugin.h" | |||
#include <FL/Fl.h> | |||
*/ | |||
#ifndef AMPPLUGIN | |||
#define AMPPLUGIN | |||
#include "../SpiralPlugin.h" | |||
#include <FL/Fl.h> | |||
class AmpPlugin : public SpiralPlugin | |||
{ | |||
public: | |||
@@ -37,15 +37,13 @@ public: | |||
// has to be defined in the plugin | |||
virtual void UpdateGUI() { Fl::check(); } | |||
float GetGain() { return m_Gain; } | |||
float GetDC() { return m_DC; } | |||
float GetGain() { return m_Gain; } | |||
float GetDC() { return m_DC; } | |||
void Randomise(); | |||
private: | |||
float m_Gain; | |||
float m_DC; | |||
float m_Gain, m_DC; | |||
friend std::istream &operator>>(std::istream &s, AmpPlugin &o); | |||
friend std::ostream &operator<<(std::ostream &s, AmpPlugin &o); | |||
}; | |||
@@ -166,7 +166,7 @@ void AmpPluginGUI::cb_NumDC (Fl_Counter* o, void* v) { | |||
inline void AmpPluginGUI::cb_Reset_i (Fl_Button* o, void* v) { | |||
m_NumGain->value (1.0); | |||
m_Gain->value (1.0); | |||
m_GUICH->Set ("Gain", 0); | |||
m_GUICH->Set ("Gain", 1.0f); | |||
m_NumDC->value (0.0); | |||
m_DC->value (2.0); | |||
m_GUICH->Set ("DC", 0); | |||
@@ -36,6 +36,7 @@ string SpiralPlugin_GetGroupName() { return "Control"; } | |||
MeterPlugin::MeterPlugin(): | |||
m_Data (NULL), | |||
m_DataReady (false), | |||
m_VUMode (true) | |||
{ | |||
m_PluginInfo.Name = "Meter"; | |||
@@ -45,6 +46,7 @@ m_VUMode (true) | |||
m_PluginInfo.NumOutputs = 1; | |||
m_PluginInfo.PortTips.push_back ("Input"); | |||
m_PluginInfo.PortTips.push_back ("Output"); | |||
m_AudioCH->Register ("DataReady", &m_DataReady, ChannelHandler::OUTPUT); | |||
m_Version = 1; | |||
} | |||
@@ -64,12 +66,13 @@ SpiralGUIType *MeterPlugin::CreateGUI() { | |||
} | |||
void MeterPlugin::Execute() { | |||
// Just copy the data through. | |||
if (GetOutputBuf (0)) GetOutputBuf (0)->Zero(); | |||
if (GetInput (0)) { | |||
GetOutputBuf (0)->Mix (*GetInput(0), 0); | |||
memcpy (m_Data, GetInput (0)->GetBuffer (), m_HostInfo->BUFSIZE * sizeof (float)); | |||
} | |||
// Just copy the data through. | |||
m_DataReady = InputExists (0); | |||
if (GetOutputBuf (0)) GetOutputBuf (0)->Zero(); | |||
if (m_DataReady) { | |||
GetOutputBuf (0)->Mix (*GetInput(0), 0); | |||
memcpy (m_Data, GetInput (0)->GetBuffer (), m_HostInfo->BUFSIZE * sizeof (float)); | |||
} | |||
} | |||
void MeterPlugin::ExecuteCommands () { | |||
@@ -35,7 +35,8 @@ class MeterPlugin : public SpiralPlugin { | |||
enum GUICommands {NONE, SETVU, SETMM}; | |||
private: | |||
float *m_Data; | |||
bool m_VUMode; // This value isn't USED for anything, it's here so we can save/load it | |||
// m_VUMode isn't USED for anything, it's here so we can save/load it | |||
bool m_DataReady, m_VUMode; | |||
}; | |||
#endif |
@@ -94,7 +94,8 @@ void MeterPluginGUI::draw() { | |||
SpiralGUIType::draw (); | |||
if (! m_Bypass) { | |||
float datum = 0.0; | |||
m_GUICH->GetData ("AudioData", m_Data); | |||
if (m_GUICH->GetBool ("DataReady")) m_GUICH->GetData ("AudioData", m_Data); | |||
else memset (m_Data, 0, m_BufSize * sizeof (float)); | |||
// The min and max values are based on the whole buffer | |||
for (int c=0; c<m_BufSize; c++) { | |||
datum = m_Data[c]; | |||
@@ -35,15 +35,17 @@ string SpiralPlugin_GetGroupName() { return "Control"; } | |||
/////////////////////////////////////////////////////// | |||
ScopePlugin::ScopePlugin() | |||
ScopePlugin::ScopePlugin(): | |||
m_DataReady(false) | |||
{ | |||
m_PluginInfo.Name="Scope"; | |||
m_PluginInfo.Width=260; | |||
m_PluginInfo.Height=115; | |||
m_PluginInfo.NumInputs=1; | |||
m_PluginInfo.NumOutputs=1; | |||
m_PluginInfo.PortTips.push_back("Input"); | |||
m_PluginInfo.PortTips.push_back("Output"); | |||
m_PluginInfo.Name = "Scope"; | |||
m_PluginInfo.Width = 260; | |||
m_PluginInfo.Height = 115; | |||
m_PluginInfo.NumInputs = 1; | |||
m_PluginInfo.NumOutputs = 1; | |||
m_PluginInfo.PortTips.push_back("Input"); | |||
m_PluginInfo.PortTips.push_back("Output"); | |||
m_AudioCH->Register ("DataReady", &m_DataReady, ChannelHandler::OUTPUT); | |||
} | |||
ScopePlugin::~ScopePlugin() | |||
@@ -65,10 +67,10 @@ SpiralGUIType *ScopePlugin::CreateGUI() | |||
void ScopePlugin::Execute() { | |||
// Just copy the data through. | |||
m_DataReady = InputExists (0); | |||
if (GetOutputBuf (0)) GetOutputBuf (0)->Zero(); | |||
if (GetInput (0)) { | |||
if (m_DataReady) { | |||
GetOutputBuf (0)->Mix (*GetInput(0), 0); | |||
memcpy (m_Data, GetInput (0)->GetBuffer (), m_HostInfo->BUFSIZE * sizeof (float)); | |||
} | |||
} | |||
@@ -16,27 +16,24 @@ | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#include "../SpiralPlugin.h" | |||
#include <FL/Fl_Pixmap.H> | |||
#ifndef SCOPEPLUGIN | |||
#define SCOPEPLUGIN | |||
class ScopePlugin : public SpiralPlugin | |||
{ | |||
public: | |||
ScopePlugin(); | |||
virtual ~ScopePlugin(); | |||
virtual PluginInfo& Initialise(const HostInfo *Host); | |||
virtual SpiralGUIType* CreateGUI(); | |||
virtual void Execute(); | |||
virtual void StreamOut(std::ostream &s) {} | |||
virtual void StreamIn(std::istream &s) {} | |||
private: | |||
#include "../SpiralPlugin.h" | |||
#include <FL/Fl_Pixmap.H> | |||
float *m_Data; | |||
class ScopePlugin : public SpiralPlugin { | |||
public: | |||
ScopePlugin(); | |||
virtual ~ScopePlugin(); | |||
virtual PluginInfo& Initialise(const HostInfo *Host); | |||
virtual SpiralGUIType* CreateGUI(); | |||
virtual void Execute(); | |||
virtual void StreamOut(std::ostream &s) {} | |||
virtual void StreamIn(std::istream &s) {} | |||
private: | |||
float *m_Data; | |||
bool m_DataReady; | |||
}; | |||
#endif |
@@ -43,6 +43,8 @@ void ScopeWidget::draw() { | |||
int ho=h()/2; | |||
fl_color (color()); | |||
fl_rectf (x(), y(), w(), h()); | |||
fl_color (m_MarkColour); | |||
fl_line (x(), y()+ho, x()+w(), y()+ho); | |||
if (!m_Data) return; | |||
fl_push_clip (x(), y(), w(), h()); | |||
float Value=0, NextValue=0; | |||
@@ -63,9 +65,10 @@ ScopePluginGUI::ScopePluginGUI(int w, int h, SpiralPlugin *o, ChannelHandler *ch | |||
SpiralPluginGUI(w,h,o,ch), | |||
m_Bypass(false) | |||
{ | |||
m_Scope = new ScopeWidget(5, 20, 210, 85, "Scope", Info->BUFSIZE); | |||
m_BufSize = Info->BUFSIZE; | |||
m_Scope = new ScopeWidget(5, 20, 210, 85, "Scope", m_BufSize); | |||
m_Scope->color (Info->SCOPE_BG_COLOUR); | |||
m_Scope->SetWaveColour (Info->SCOPE_FG_COLOUR); | |||
m_Scope->SetColours (Info->SCOPE_MRK_COLOUR, Info->SCOPE_FG_COLOUR); | |||
m_Attenuation = new Fl_Knob (220, 10, 40, 40, "Attenuation"); | |||
m_Attenuation->color(Info->GUI_COLOUR); | |||
m_Attenuation->type(Fl_Knob::LINELIN); | |||
@@ -91,12 +94,6 @@ m_Bypass(false) | |||
end(); | |||
} | |||
void ScopePluginGUI::Display(const float *data) | |||
{ | |||
//m_Scope->m_Data=data; | |||
if (!m_Bypass) m_Scope->redraw(); | |||
} | |||
void ScopePluginGUI::Update() | |||
{ | |||
redraw(); | |||
@@ -104,11 +101,12 @@ void ScopePluginGUI::Update() | |||
void ScopePluginGUI::draw() | |||
{ | |||
SpiralGUIType::draw(); | |||
const float *data; | |||
//cerr<<"getting and drawing..."<<endl; | |||
m_GUICH->GetData("AudioData",(void*)m_Scope->m_Data); | |||
Display(data); | |||
SpiralGUIType::draw(); | |||
const float *data; | |||
//cerr<<"getting and drawing..."<<endl; | |||
if (m_GUICH->GetBool ("DataReady")) m_GUICH->GetData ("AudioData", (void*)m_Scope->m_Data); | |||
else memset ((void*)m_Scope->m_Data, 0, m_BufSize * sizeof (float)); | |||
if (!m_Bypass) m_Scope->redraw(); | |||
} | |||
void ScopePluginGUI::UpdateValues(SpiralPlugin* o) | |||
@@ -16,15 +16,15 @@ | |||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |||
*/ | |||
#ifndef SCOPEGUI | |||
#define SCOPEGUI | |||
#include <FL/Fl.H> | |||
#include <FL/Fl_Button.H> | |||
#include "../Widgets/Fl_Knob.H" | |||
#include "ScopePlugin.h" | |||
#include "../SpiralPluginGUI.h" | |||
#ifndef SCOPEGUI | |||
#define SCOPEGUI | |||
class ScopeWidget : public Fl_Widget | |||
{ | |||
public: | |||
@@ -32,14 +32,14 @@ class ScopeWidget : public Fl_Widget | |||
~ScopeWidget(); | |||
void draw(); | |||
//void SetNumChannels (int s) { m_Channels=s; } | |||
void SetWaveColour (unsigned c) { m_WaveColour=(Fl_Color)c; } | |||
void SetColours (unsigned m, unsigned f) { m_MarkColour=(Fl_Color)m; m_WaveColour=(Fl_Color)f; } | |||
void SetAttenuation (float c) { m_Attenuation=c; } | |||
void SetTimeBase (float c) { m_TimeBase=c; } | |||
const float *m_Data; | |||
//int m_Channels; | |||
private: | |||
//int m_GUIColour, m_GUIBGColour; | |||
Fl_Color m_WaveColour; | |||
Fl_Color m_MarkColour, m_WaveColour; | |||
float m_Attenuation, m_TimeBase; | |||
int m_Bufsize; | |||
}; | |||
@@ -52,11 +52,11 @@ class ScopePluginGUI : public SpiralPluginGUI | |||
virtual void UpdateValues (SpiralPlugin* o); | |||
virtual void Update(); | |||
virtual void draw(); | |||
void Display (const float *data); | |||
protected: | |||
const std::string GetHelpText (const std::string &loc); | |||
private: | |||
bool m_Bypass; | |||
int m_BufSize; | |||
// Fl_Button *Bypass; | |||
ScopeWidget *m_Scope; | |||
Fl_Knob *m_Attenuation, *m_TimeBase; | |||