@@ -54,14 +54,13 @@ m_WriteHeadPos(0) | |||
{ | |||
m_PluginInfo.Name="Delay"; | |||
m_PluginInfo.Width=120; | |||
m_PluginInfo.Height=110; | |||
m_PluginInfo.Height=112; | |||
m_PluginInfo.NumInputs=3; | |||
m_PluginInfo.NumOutputs=1; | |||
m_PluginInfo.PortTips.push_back("Input"); | |||
m_PluginInfo.PortTips.push_back("Delay CV"); | |||
m_PluginInfo.PortTips.push_back("ReadHead CV"); | |||
m_PluginInfo.PortTips.push_back("Input"); | |||
m_PluginInfo.PortTips.push_back("Delay CV"); | |||
m_PluginInfo.PortTips.push_back("ReadHead CV"); | |||
m_PluginInfo.PortTips.push_back("Output"); | |||
m_AudioCH->Register("Delay",&m_Delay); | |||
m_AudioCH->Register("Mix",&m_Mix); | |||
} | |||
@@ -71,8 +70,8 @@ DelayPlugin::~DelayPlugin() | |||
} | |||
PluginInfo &DelayPlugin::Initialise(const HostInfo *Host) | |||
{ | |||
PluginInfo& Info = SpiralPlugin::Initialise(Host); | |||
{ | |||
PluginInfo& Info = SpiralPlugin::Initialise(Host); | |||
m_Buffer.Allocate((int)(m_HostInfo->SAMPLERATE*MAX_DELAY)); | |||
return Info; | |||
} | |||
@@ -87,25 +86,25 @@ SpiralGUIType *DelayPlugin::CreateGUI() | |||
void DelayPlugin::Execute() | |||
{ | |||
int Delay; | |||
for (int n=0; n<m_HostInfo->BUFSIZE; n++) | |||
{ | |||
Delay=(int)((m_Delay+GetInput(1,n)*0.5f)*(float)m_HostInfo->SAMPLERATE); | |||
if (Delay>=MAX_DELAY*m_HostInfo->SAMPLERATE) | |||
if (Delay>=MAX_DELAY*m_HostInfo->SAMPLERATE) | |||
{ | |||
Delay=(int)(MAX_DELAY*m_HostInfo->SAMPLERATE)-1; | |||
Delay=(int)(MAX_DELAY*m_HostInfo->SAMPLERATE)-1; | |||
} | |||
if (Delay<0) Delay=0; | |||
if (m_ReadHeadPos<0 || m_ReadHeadPos>=MAX_DELAY*m_HostInfo->SAMPLERATE) | |||
if (m_ReadHeadPos<0 || m_ReadHeadPos>=MAX_DELAY*m_HostInfo->SAMPLERATE) | |||
cerr<<"read agh! "<<m_ReadHeadPos<<endl; | |||
if (m_WriteHeadPos<0 || m_WriteHeadPos>=MAX_DELAY*m_HostInfo->SAMPLERATE) | |||
if (m_WriteHeadPos<0 || m_WriteHeadPos>=MAX_DELAY*m_HostInfo->SAMPLERATE) | |||
cerr<<"write agh! "<<m_WriteHeadPos<<endl; | |||
// Read from the buffer | |||
SetOutput(0,n,m_Buffer[m_ReadHeadPos]+m_Mix*GetInput(0,n)); | |||
SetOutput(0,n,m_Buffer[m_ReadHeadPos]+m_Mix*GetInput(0,n)); | |||
// Write to the buffer | |||
m_Buffer.Set((int)m_WriteHeadPos,GetInput(0,n)); | |||
@@ -14,7 +14,7 @@ | |||
* 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 "DelayPluginGUI.h" | |||
#include <FL/fl_draw.h> | |||
@@ -26,50 +26,135 @@ static const int GUIBG2_COLOUR = 145; | |||
//////////////////////////////////////////// | |||
DelayPluginGUI::DelayPluginGUI(int w, int h,DelayPlugin *o,ChannelHandler *ch,const HostInfo *Info) : | |||
SpiralPluginGUI(w,h,o,ch) | |||
{ | |||
m_Delay = new Fl_Slider(15, 20, 20, 70, "Delay"); | |||
m_Delay->type(4); | |||
m_Delay->selection_color(GUI_COLOUR); | |||
m_Delay->labelsize(10); | |||
m_Delay->maximum(1); | |||
m_Delay->step(0.001); | |||
m_Delay->value(0.5); | |||
m_Delay->callback((Fl_Callback*)cb_Delay); | |||
m_Mix = new Fl_Knob(58, 28, 45, 45, "Mix"); | |||
m_Mix->color(GUI_COLOUR); | |||
m_Mix->type(Fl_Knob::DOTLIN); | |||
m_Mix->labelsize(10); | |||
m_Mix->maximum(1); | |||
m_Mix->step(0.01); | |||
m_Mix->value(0); | |||
m_Mix->callback((Fl_Callback*)cb_Mix); | |||
end(); | |||
DelayPluginGUI::DelayPluginGUI(int w, int h, DelayPlugin *o, ChannelHandler *ch, const HostInfo *Info) : | |||
SpiralPluginGUI (w, h, o, ch) | |||
{ | |||
m_TheTabs = new Fl_Tabs (2, 14, 118, 90, ""); | |||
m_TheTabs->box (FL_PLASTIC_DOWN_BOX); | |||
m_TheTabs->color (GUI_COLOUR); | |||
add (m_TheTabs); | |||
m_CtlGroup = new Fl_Group (2, 28, 118, 66, "Control"); | |||
m_CtlGroup->labelsize (10); | |||
m_TheTabs->add (m_CtlGroup); | |||
m_Delay = new Fl_Knob (12, 38, 45, 45, "Delay"); | |||
m_Delay->user_data ((void*)(this)); | |||
m_Delay->color (GUI_COLOUR); | |||
m_Delay->type (Fl_Knob::DOTLIN); | |||
m_Delay->labelsize (10); | |||
m_Delay->minimum (0); | |||
m_Delay->maximum (1); | |||
m_Delay->step (0.001); | |||
m_Delay->value (0.5); | |||
m_Delay->callback ((Fl_Callback*)cb_Delay); | |||
m_CtlGroup->add (m_Delay); | |||
m_Mix = new Fl_Knob (66, 38, 45, 45, "Mix"); | |||
m_Mix->user_data ((void*)(this)); | |||
m_Mix->color (GUI_COLOUR); | |||
m_Mix->type (Fl_Knob::DOTLIN); | |||
m_Mix->labelsize (10); | |||
m_Mix->maximum (1); | |||
m_Mix->step (0.01); | |||
m_Mix->value (0); | |||
m_Mix->callback ((Fl_Callback*)cb_Mix); | |||
m_CtlGroup->add (m_Mix); | |||
m_NumGroup = new Fl_Group (2, 28, 118, 66, "Numbers"); | |||
m_NumGroup->labelsize (10); | |||
m_TheTabs->add (m_NumGroup); | |||
m_NumDelay = new Fl_Counter (6, 36, 110, 20, "Delay (secs)"); | |||
m_NumDelay->user_data ((void*)(this)); | |||
m_NumDelay->labelsize (10); | |||
m_NumDelay->box (FL_PLASTIC_UP_BOX); | |||
m_NumDelay->color (GUI_COLOUR); | |||
m_NumDelay->maximum (m_Delay->maximum()); | |||
m_NumDelay->minimum (m_Delay->minimum()); | |||
m_NumDelay->step (m_Delay->step()); | |||
m_NumDelay->lstep (0.1); | |||
m_NumDelay->value (m_Delay->value()); | |||
m_NumDelay->callback ((Fl_Callback*)cb_NumDelay); | |||
m_NumGroup->add (m_NumDelay); | |||
m_NumMix = new Fl_Counter (6, 70, 110, 20, "Mix"); | |||
m_NumMix->user_data ((void*)(this)); | |||
m_NumMix->labelsize (10); | |||
m_NumMix->box (FL_PLASTIC_UP_BOX); | |||
m_NumMix->color (GUI_COLOUR); | |||
m_NumMix->maximum (m_Mix->maximum()); | |||
m_NumMix->minimum (m_Mix->minimum()); | |||
m_NumMix->step (m_Mix->step()); | |||
m_NumMix->lstep (0.1); | |||
m_NumMix->value (m_Mix->value()); | |||
m_NumMix->callback ((Fl_Callback*)cb_NumMix); | |||
m_NumGroup->add (m_NumMix); | |||
end(); | |||
} | |||
void DelayPluginGUI::UpdateValues(SpiralPlugin *o) | |||
{ | |||
DelayPlugin *Plugin = (DelayPlugin*)o; | |||
m_Delay->value(Plugin->GetDelay()-5.0f); | |||
m_Mix->value(Plugin->GetMix()); | |||
float value; | |||
DelayPlugin *Plugin = (DelayPlugin*)o; | |||
value = Plugin->GetDelay(); | |||
m_Delay->value (value); | |||
m_NumDelay->value (value); | |||
value = Plugin->GetMix(); | |||
m_Mix->value (value); | |||
m_NumMix->value (value); | |||
} | |||
inline void DelayPluginGUI::cb_Delay_i (Fl_Knob* o, void* v) | |||
{ | |||
float value = o->value(); | |||
m_NumDelay->value (value); | |||
m_GUICH->Set ("Delay", value); | |||
} | |||
inline void DelayPluginGUI::cb_Delay_i(Fl_Slider* o, void* v) | |||
{ | |||
float value=1.0f-o->value(); | |||
m_GUICH->Set("Delay",value); | |||
void DelayPluginGUI::cb_Delay (Fl_Knob* o, void* v) | |||
{ | |||
((DelayPluginGUI*)(o->user_data()))->cb_Delay_i (o, v); | |||
} | |||
void DelayPluginGUI::cb_Delay(Fl_Slider* o, void* v) | |||
{ ((DelayPluginGUI*)(o->parent()))->cb_Delay_i(o,v); } | |||
inline void DelayPluginGUI::cb_Mix_i(Fl_Knob* o, void* v) | |||
{ m_GUICH->Set("Mix",(float)o->value()); } | |||
void DelayPluginGUI::cb_Mix(Fl_Knob* o, void* v) | |||
{ ((DelayPluginGUI*)(o->parent()))->cb_Mix_i(o,v); } | |||
inline void DelayPluginGUI::cb_Mix_i (Fl_Knob* o, void* v) | |||
{ | |||
float value = o->value(); | |||
m_NumMix->value (value); | |||
m_GUICH->Set ("Mix", value); | |||
} | |||
void DelayPluginGUI::cb_Mix (Fl_Knob* o, void* v) | |||
{ | |||
((DelayPluginGUI*)(o->user_data()))->cb_Mix_i (o, v); | |||
} | |||
inline void DelayPluginGUI::cb_NumDelay_i (Fl_Counter* o, void* v) | |||
{ | |||
float value = o->value(); | |||
m_Delay->value (value); | |||
m_GUICH->Set ("Delay", value); | |||
} | |||
void DelayPluginGUI::cb_NumDelay (Fl_Counter* o, void* v) | |||
{ | |||
((DelayPluginGUI*)(o->user_data()))->cb_NumDelay_i (o, v); | |||
} | |||
inline void DelayPluginGUI::cb_NumMix_i (Fl_Counter* o, void* v) | |||
{ | |||
float value = o->value(); | |||
m_Mix->value (value); | |||
m_GUICH->Set ("Mix", value); | |||
} | |||
void DelayPluginGUI::cb_NumMix (Fl_Counter* o, void* v) | |||
{ | |||
((DelayPluginGUI*)(o->user_data()))->cb_NumMix_i (o, v); | |||
} | |||
const string DelayPluginGUI::GetHelpText(const string &loc){ | |||
return string("") | |||
@@ -14,43 +14,41 @@ | |||
* 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 <FL/Fl.H> | |||
#include <FL/Fl_Window.H> | |||
#include <FL/Fl_Group.H> | |||
#include <FL/Fl_Slider.H> | |||
#include "DelayPlugin.h" | |||
#include "../SpiralPluginGUI.h" | |||
#include <FL/Fl_Tabs.H> | |||
#include <FL/Fl_Counter.H> | |||
#include "../Widgets/Fl_Knob.H" | |||
#include "../SpiralPluginGUI.h" | |||
#include "DelayPlugin.h" | |||
#ifndef FilterGUI | |||
#define FilterGUI | |||
#ifndef DelayGUI | |||
#define DelayGUI | |||
class DelayPluginGUI : public SpiralPluginGUI | |||
{ | |||
public: | |||
DelayPluginGUI(int w, int h, DelayPlugin *o,ChannelHandler *ch,const HostInfo *Info); | |||
virtual void UpdateValues(SpiralPlugin *o); | |||
protected: | |||
const string GetHelpText(const string &loc); | |||
private: | |||
Fl_Slider *m_Delay; | |||
Fl_Knob *m_Mix; | |||
//// Callbacks //// | |||
inline void cb_Delay_i(Fl_Slider* o, void* v); | |||
static void cb_Delay(Fl_Slider*, void*); | |||
inline void cb_Mix_i(Fl_Knob* o, void* v); | |||
static void cb_Mix(Fl_Knob* o, void* v); | |||
public: | |||
DelayPluginGUI (int w, int h, DelayPlugin *o, ChannelHandler *ch, const HostInfo *Info); | |||
virtual void UpdateValues (SpiralPlugin *o); | |||
protected: | |||
const string GetHelpText (const string &loc); | |||
private: | |||
Fl_Tabs *m_TheTabs; | |||
Fl_Group *m_CtlGroup, *m_NumGroup; | |||
Fl_Knob *m_Delay, *m_Mix; | |||
Fl_Counter *m_NumDelay, *m_NumMix; | |||
//// Callbacks //// | |||
inline void cb_Delay_i (Fl_Knob* o, void* v); | |||
static void cb_Delay (Fl_Knob*, void* v); | |||
inline void cb_Mix_i (Fl_Knob* o, void* v); | |||
static void cb_Mix (Fl_Knob* o, void* v); | |||
inline void cb_NumDelay_i (Fl_Counter* o, void* v); | |||
static void cb_NumDelay (Fl_Counter*, void* v); | |||
inline void cb_NumMix_i (Fl_Counter* o, void* v); | |||
static void cb_NumMix (Fl_Counter* o, void* v); | |||
}; | |||
#endif |
@@ -14,7 +14,7 @@ | |||
* 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 "EchoPlugin.h" | |||
#include "EchoPluginGUI.h" | |||
#include <FL/Fl_Button.h> | |||
@@ -47,85 +47,85 @@ string SpiralPlugin_GetGroupName() | |||
/////////////////////////////////////////////////////// | |||
EchoPlugin::EchoPlugin() : | |||
m_Delay(0.75), | |||
m_Feedback(0.4), | |||
m_HeadPos(0) | |||
m_Delay (0.75), | |||
m_Feedback (0.4), | |||
m_Bounce (false), | |||
m_HeadPos (0), | |||
m_Buf0 (0), | |||
m_Buf1 (1) | |||
{ | |||
m_PluginInfo.Name="Echo"; | |||
m_PluginInfo.Width=120; | |||
m_PluginInfo.Height=110; | |||
m_PluginInfo.NumInputs=3; | |||
m_PluginInfo.NumOutputs=1; | |||
m_PluginInfo.PortTips.push_back("Input"); | |||
m_PluginInfo.PortTips.push_back("Delay CV"); | |||
m_PluginInfo.PortTips.push_back("Feedback CV"); | |||
m_PluginInfo.PortTips.push_back("Output"); | |||
m_AudioCH->Register("Delay",&m_Delay); | |||
m_AudioCH->Register("Feedback",&m_Feedback); | |||
m_Version = 2; | |||
m_PluginInfo.Name = "Echo"; | |||
m_PluginInfo.Width = 120; | |||
m_PluginInfo.Height = 132; | |||
m_PluginInfo.NumInputs = 3; | |||
m_PluginInfo.NumOutputs = 2; | |||
m_PluginInfo.PortTips.push_back ("Input"); | |||
m_PluginInfo.PortTips.push_back ("Delay CV"); | |||
m_PluginInfo.PortTips.push_back ("Feedback CV"); | |||
m_PluginInfo.PortTips.push_back ("Left/Mono Out"); | |||
m_PluginInfo.PortTips.push_back ("Right Out"); | |||
m_AudioCH->Register ("Delay", &m_Delay); | |||
m_AudioCH->Register ("Feedback", &m_Feedback); | |||
m_AudioCH->Register ("Bounce", &m_Bounce); | |||
} | |||
EchoPlugin::~EchoPlugin() | |||
{ | |||
} | |||
PluginInfo &EchoPlugin::Initialise(const HostInfo *Host) | |||
{ | |||
PluginInfo& Info = SpiralPlugin::Initialise(Host); | |||
m_Buffer.Allocate((int)(m_HostInfo->SAMPLERATE*MAX_DELAY)); | |||
PluginInfo &EchoPlugin::Initialise (const HostInfo *Host) | |||
{ | |||
PluginInfo& Info = SpiralPlugin::Initialise (Host); | |||
m_Buffer[0].Allocate ((int)(m_HostInfo->SAMPLERATE * MAX_DELAY)); | |||
m_Buffer[1].Allocate ((int)(m_HostInfo->SAMPLERATE * MAX_DELAY)); | |||
return Info; | |||
} | |||
SpiralGUIType *EchoPlugin::CreateGUI() | |||
{ | |||
return new EchoPluginGUI(m_PluginInfo.Width, | |||
m_PluginInfo.Height, | |||
this,m_AudioCH,m_HostInfo); | |||
return new EchoPluginGUI (m_PluginInfo.Width, m_PluginInfo.Height, this, m_AudioCH, m_HostInfo); | |||
} | |||
void EchoPlugin::Execute() | |||
{ | |||
float Delay; | |||
for (int n=0; n<m_HostInfo->BUFSIZE; n++) | |||
{ | |||
Delay=(m_Delay+GetInput(1,n)*0.5)*(float)m_HostInfo->SAMPLERATE-1; | |||
if (Delay>=MAX_DELAY*m_HostInfo->SAMPLERATE) | |||
{ | |||
Delay=(MAX_DELAY*m_HostInfo->SAMPLERATE)-1; | |||
} | |||
if (Delay<0) Delay=0; | |||
if (m_HeadPos>Delay) | |||
{ | |||
m_HeadPos=0; | |||
} | |||
// Write to the buffer | |||
m_Buffer.Set(m_HeadPos,GetInput(0,n)+(m_Buffer[m_HeadPos]*(m_Feedback+GetInput(2,n)))); | |||
// Read from the buffer | |||
SetOutput(0,n,m_Buffer[m_HeadPos]); | |||
m_HeadPos++; | |||
} | |||
} | |||
void EchoPlugin::Randomise() | |||
{ | |||
float Delay; | |||
for (int n=0; n<m_HostInfo->BUFSIZE; n++) { | |||
Delay=( m_Delay+GetInput (1,n)*0.5 ) * (float)m_HostInfo->SAMPLERATE-1; | |||
if (Delay >= MAX_DELAY*m_HostInfo->SAMPLERATE) | |||
Delay = (MAX_DELAY*m_HostInfo->SAMPLERATE)-1; | |||
if (Delay<0) Delay=0; | |||
if (m_HeadPos>Delay) m_HeadPos=0; | |||
if (m_Bounce && m_HeadPos==0) { | |||
int c=m_Buf0; | |||
m_Buf0=m_Buf1; | |||
m_Buf1=c; | |||
} | |||
// Write to the buffer | |||
m_Buffer[m_Buf0].Set (m_HeadPos, GetInput (0,n)+(m_Buffer[m_Buf0][m_HeadPos]*(m_Feedback+GetInput (2,n)))); | |||
if (!m_Bounce) m_Buffer[m_Buf1].Set (m_HeadPos, 0); | |||
// Read from the buffer | |||
SetOutput(0, n, m_Buffer[m_Buf0][m_HeadPos]); | |||
SetOutput(1, n, m_Buffer[m_Buf1][m_HeadPos]); | |||
m_HeadPos++; | |||
} | |||
} | |||
//void EchoPlugin::Randomise() | |||
//{ | |||
//} | |||
void EchoPlugin::StreamOut(ostream &s) | |||
{ | |||
s<<m_Version<<" "<<m_Delay<<" "<<m_Feedback<<" "; | |||
s << m_Version << " " << m_Delay << " " << m_Feedback << " " << m_Bounce << " "; | |||
} | |||
void EchoPlugin::StreamIn(istream &s) | |||
{ | |||
{ | |||
int version; | |||
s>>version; | |||
s>>m_Delay>>m_Feedback; | |||
s >> version; | |||
s >> m_Delay >> m_Feedback; | |||
if (version>1) s >> m_Bounce; else m_Bounce = false; | |||
} | |||
@@ -24,31 +24,28 @@ | |||
class EchoPlugin : public SpiralPlugin | |||
{ | |||
public: | |||
public: | |||
EchoPlugin(); | |||
virtual ~EchoPlugin(); | |||
virtual PluginInfo &Initialise(const HostInfo *Host); | |||
virtual PluginInfo &Initialise (const HostInfo *Host); | |||
virtual SpiralGUIType *CreateGUI(); | |||
virtual void Execute(); | |||
virtual void StreamOut(ostream &s); | |||
virtual void StreamIn(istream &s); | |||
float GetDelay() { return m_Delay; } | |||
virtual void StreamOut (ostream &s); | |||
virtual void StreamIn (istream &s); | |||
float GetDelay() { return m_Delay; } | |||
float GetFeedback() { return m_Feedback; } | |||
void Randomise(); | |||
private: | |||
float m_Delay; | |||
float m_Feedback; | |||
int m_HeadPos; | |||
Sample m_Buffer; | |||
bool GetBounce () { return m_Bounce; } | |||
//void Randomise(); | |||
private: | |||
float m_Delay, m_Feedback; | |||
bool m_Bounce; | |||
int m_HeadPos, m_Buf0, m_Buf1; | |||
//Sample m_Buffer1, m_Buffer2; | |||
Sample m_Buffer[2]; | |||
friend istream &operator>>(istream &s, EchoPlugin &o); | |||
friend ostream &operator<<(ostream &s, EchoPlugin &o); | |||
}; | |||
istream &operator>>(istream &s, EchoPlugin &o); | |||
ostream &operator<<(ostream &s, EchoPlugin &o); | |||
@@ -14,7 +14,7 @@ | |||
* 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 "EchoPluginGUI.h" | |||
#include <FL/fl_draw.h> | |||
@@ -26,117 +26,158 @@ static const int GUIBG2_COLOUR = 145; | |||
//////////////////////////////////////////// | |||
EchoPluginGUI::EchoPluginGUI(int w, int h,EchoPlugin *o,ChannelHandler *ch,const HostInfo *Info) : | |||
SpiralPluginGUI(w,h,o,ch) | |||
{ | |||
m_Delay = new Fl_Slider(15, 20, 20, 70, "Delay"); | |||
m_Delay->type(4); | |||
m_Delay->selection_color(GUI_COLOUR); | |||
m_Delay->labelsize(10); | |||
m_Delay->maximum(1); | |||
m_Delay->step(0.001); | |||
m_Delay->value(0.5); | |||
m_Delay->callback((Fl_Callback*)cb_Delay); | |||
m_Feedback = new Fl_Slider(75, 20, 20, 70, "Feedback"); | |||
m_Feedback->type(4); | |||
m_Feedback->selection_color(GUI_COLOUR); | |||
m_Feedback->labelsize(10); | |||
m_Feedback->maximum(1.1); | |||
m_Feedback->step(0.01); | |||
m_Feedback->value(0.4); | |||
m_Feedback->callback((Fl_Callback*)cb_Feedback); | |||
m_pop = new Fl_Button(1,h-14, 13, 13, "@>"); | |||
m_pop->type(1); | |||
m_pop->box(FL_FLAT_BOX); | |||
m_pop->down_box(FL_FLAT_BOX); | |||
m_pop->labeltype(FL_SYMBOL_LABEL); | |||
m_pop->labelsize(10); | |||
m_pop->labelcolor(25); | |||
m_pop->callback((Fl_Callback*)cb_pop); | |||
m_out_delay = new Fl_Output(50, h+5, 55, 15, "Delay"); | |||
m_out_delay->box(FL_ENGRAVED_BOX); | |||
m_out_delay->color(16); | |||
m_out_delay->labelsize(10); | |||
m_out_delay->textsize(10); | |||
m_out_delay->hide(); | |||
m_out_delay->set_output(); | |||
m_out_feedback = new Fl_Output(50, h+22, 55, 15, "Feedback"); | |||
m_out_feedback->box(FL_ENGRAVED_BOX); | |||
m_out_feedback->color(16); | |||
m_out_feedback->labelsize(10); | |||
m_out_feedback->textsize(10); | |||
m_out_feedback->hide(); | |||
m_out_feedback->set_output(); | |||
end(); | |||
} | |||
EchoPluginGUI::EchoPluginGUI(int w, int h, EchoPlugin *o, ChannelHandler *ch, const HostInfo *Info) : | |||
SpiralPluginGUI (w, h, o, ch) | |||
{ | |||
m_TheTabs = new Fl_Tabs (2, 14, 118, 90, ""); | |||
m_TheTabs->box (FL_PLASTIC_DOWN_BOX); | |||
m_TheTabs->color (GUI_COLOUR); | |||
add (m_TheTabs); | |||
m_CtlGroup = new Fl_Group (2, 28, 118, 66, "Control"); | |||
m_CtlGroup->labelsize (10); | |||
m_TheTabs->add (m_CtlGroup); | |||
m_Delay = new Fl_Knob (12, 38, 45, 45, "Delay"); | |||
m_Delay->user_data ((void*)(this)); | |||
m_Delay->color (GUI_COLOUR); | |||
m_Delay->type (Fl_Knob::DOTLIN); | |||
m_Delay->labelsize (10); | |||
m_Delay->minimum (0); | |||
m_Delay->maximum (1); | |||
m_Delay->step (0.001); | |||
m_Delay->value (0.5); | |||
m_Delay->callback ((Fl_Callback*)cb_Delay); | |||
m_CtlGroup->add (m_Delay); | |||
m_Feedback = new Fl_Knob (66, 38, 45, 45, "Feedback"); | |||
m_Feedback->user_data ((void*)(this)); | |||
m_Feedback->color (GUI_COLOUR); | |||
m_Feedback->type (Fl_Knob::DOTLIN); | |||
m_Feedback->labelsize (10); | |||
m_Feedback->maximum (1.1); | |||
m_Feedback->step (0.01); | |||
m_Feedback->value (0.4); | |||
m_Feedback->callback ((Fl_Callback*)cb_Feedback); | |||
m_CtlGroup->add (m_Feedback); | |||
extern "C" int sprintf(char *,const char *,...); | |||
m_NumGroup = new Fl_Group (2, 28, 118, 66, "Numbers"); | |||
m_NumGroup->labelsize (10); | |||
m_TheTabs->add (m_NumGroup); | |||
void EchoPluginGUI::UpdateValues(SpiralPlugin *o) | |||
m_NumDelay = new Fl_Counter (6, 36, 110, 20, "Delay (secs)"); | |||
m_NumDelay->user_data ((void*)(this)); | |||
m_NumDelay->labelsize (10); | |||
m_NumDelay->box (FL_PLASTIC_UP_BOX); | |||
m_NumDelay->color (GUI_COLOUR); | |||
m_NumDelay->maximum (m_Delay->maximum()); | |||
m_NumDelay->minimum (m_Delay->minimum()); | |||
m_NumDelay->step (m_Delay->step()); | |||
m_NumDelay->lstep (0.1); | |||
m_NumDelay->value (m_Delay->value()); | |||
m_NumDelay->callback ((Fl_Callback*)cb_NumDelay); | |||
m_NumGroup->add (m_NumDelay); | |||
m_NumFeedback = new Fl_Counter (6, 70, 110, 20, "Feedback"); | |||
m_NumFeedback->user_data ((void*)(this)); | |||
m_NumFeedback->labelsize (10); | |||
m_NumFeedback->box (FL_PLASTIC_UP_BOX); | |||
m_NumFeedback->color (GUI_COLOUR); | |||
m_NumFeedback->maximum (m_Feedback->maximum()); | |||
m_NumFeedback->minimum (m_Feedback->minimum()); | |||
m_NumFeedback->step (m_Feedback->step()); | |||
m_NumFeedback->lstep (0.1); | |||
m_NumFeedback->value (m_Feedback->value()); | |||
m_NumFeedback->callback ((Fl_Callback*)cb_NumFeedback); | |||
m_NumGroup->add (m_NumFeedback); | |||
m_Bounce = new Fl_LED_Button (62, 106, 23, 23, "Bounce"); | |||
m_Bounce->labelsize (10); | |||
m_Bounce->callback ((Fl_Callback*)cb_Bounce); | |||
add (m_Bounce); | |||
end(); | |||
} | |||
void EchoPluginGUI::UpdateValues (SpiralPlugin *o) | |||
{ | |||
EchoPlugin *Plugin = (EchoPlugin*)o; | |||
m_Delay->value(1.0f-Plugin->GetDelay()); | |||
m_Feedback->value(1.1f-Plugin->GetFeedback()); | |||
char str[10]; | |||
sprintf(str,"%5.3f s", Plugin->GetDelay()); | |||
m_out_delay->value(str); | |||
sprintf(str,"%5.1f %%", 100*Plugin->GetFeedback()); | |||
m_out_feedback->value(str); | |||
m_Delay->value (Plugin->GetDelay()); | |||
m_NumDelay->value (m_Delay->value()); | |||
m_Feedback->value (Plugin->GetFeedback()); | |||
m_NumFeedback->value (m_Feedback->value()); | |||
m_Bounce->value (Plugin->GetBounce()); | |||
} | |||
// Button Callbacks | |||
inline void EchoPluginGUI::cb_Bounce_i (Fl_LED_Button* o, void* v) | |||
{ | |||
m_GUICH->Set ("Bounce", o->value()); | |||
} | |||
void EchoPluginGUI::cb_Bounce (Fl_LED_Button* o, void* v) | |||
{ | |||
((EchoPluginGUI*)(o->parent()))->cb_Bounce_i (o, v); | |||
} | |||
inline void EchoPluginGUI::cb_Delay_i(Fl_Slider* o, void* v) | |||
// Knob Callbacks | |||
inline void EchoPluginGUI::cb_Delay_i (Fl_Knob* o, void* v) | |||
{ | |||
char str[10]; | |||
float value=1.0f-o->value(); | |||
m_GUICH->Set("Delay",value); | |||
sprintf(str,"%5.3f s", value); | |||
m_out_delay->value(str); | |||
float value = o->value(); | |||
m_NumDelay->value (value); | |||
m_GUICH->Set ("Delay", value); | |||
} | |||
void EchoPluginGUI::cb_Delay(Fl_Slider* o, void* v) | |||
{ ((EchoPluginGUI*)(o->parent()))->cb_Delay_i(o,v); } | |||
void EchoPluginGUI::cb_Delay (Fl_Knob* o, void* v) | |||
{ | |||
((EchoPluginGUI*)(o->user_data()))->cb_Delay_i (o, v); | |||
} | |||
inline void EchoPluginGUI::cb_Feedback_i(Fl_Slider* o, void* v) | |||
inline void EchoPluginGUI::cb_Feedback_i(Fl_Knob* o, void* v) | |||
{ | |||
char str[10]; | |||
m_GUICH->Set("Feedback",(float)(1.1f-o->value())); | |||
sprintf(str,"%5.1f %%", 100*(1.1f-o->value())); | |||
m_out_feedback->value(str); | |||
float value = o->value(); | |||
m_NumFeedback->value (value); | |||
m_GUICH->Set ("Feedback", value); | |||
} | |||
void EchoPluginGUI::cb_Feedback(Fl_Slider* o, void* v) | |||
{ ((EchoPluginGUI*)(o->parent()))->cb_Feedback_i(o,v); } | |||
inline void EchoPluginGUI::cb_pop_i(Fl_Button *o, void*) { | |||
if (o->value()) | |||
{ | |||
o->label("@2>"); | |||
m_out_delay->show(); | |||
m_out_feedback->show(); | |||
redraw(); | |||
} | |||
else | |||
{ | |||
o->label("@>"); | |||
m_out_delay->hide(); | |||
m_out_feedback->hide(); | |||
redraw(); | |||
parent()->redraw(); | |||
} | |||
void EchoPluginGUI::cb_Feedback(Fl_Knob* o, void* v) | |||
{ | |||
((EchoPluginGUI*)(o->user_data()))->cb_Feedback_i(o,v); | |||
} | |||
// Counter Callbacks | |||
inline void EchoPluginGUI::cb_NumDelay_i (Fl_Counter* o, void* v) | |||
{ | |||
float value = o->value(); | |||
m_NumDelay->value (value); | |||
m_GUICH->Set ("Delay", value); | |||
} | |||
void EchoPluginGUI::cb_pop(Fl_Button* o, void* v) { | |||
((EchoPluginGUI*)(o->parent()))->cb_pop_i(o,v); | |||
void EchoPluginGUI::cb_NumDelay (Fl_Counter* o, void* v) | |||
{ | |||
((EchoPluginGUI*)(o->user_data()))->cb_NumDelay_i (o, v); | |||
} | |||
inline void EchoPluginGUI::cb_NumFeedback_i(Fl_Counter* o, void* v) | |||
{ | |||
float value = o->value(); | |||
m_Feedback->value (value); | |||
m_GUICH->Set ("Feedback", value); | |||
} | |||
void EchoPluginGUI::cb_NumFeedback(Fl_Counter* o, void* v) | |||
{ | |||
((EchoPluginGUI*)(o->user_data()))->cb_NumFeedback_i (o, v); | |||
} | |||
const string EchoPluginGUI::GetHelpText(const string &loc){ | |||
return string("") | |||
+ "This plugin is a fully operational delay with feedback\n" | |||
+ "- providing a no-frills echo effect. The delay and\n" | |||
+ "feedback controls can be modulated via CV inputs.\n"; | |||
+ "feedback controls can be modulated via CV inputs.\n\n" | |||
+ "Bounce mode makes the echo bounce to-and-fro between\n" | |||
+ "the 2 (stereo) outputs.\n"; | |||
} |
@@ -14,50 +14,45 @@ | |||
* 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. | |||
*/ | |||
*/ | |||
#ifndef EchoGUI | |||
#define EchoGUI | |||
#include <FL/Fl.H> | |||
#include <FL/Fl_Window.H> | |||
#include <FL/Fl_Group.H> | |||
#include <FL/Fl_Slider.H> | |||
#include <FL/Fl_Output.H> | |||
#include <FL/Fl_Button.H> | |||
#include <FL/Fl_Box.H> | |||
#include "EchoPlugin.h" | |||
#include "../SpiralPluginGUI.h" | |||
#include <FL/Fl_Tabs.H> | |||
#include <FL/Fl_Counter.H> | |||
#include "../Widgets/Fl_Knob.H" | |||
#ifndef FilterGUI | |||
#define FilterGUI | |||
#include "../Widgets/Fl_LED_Button.H" | |||
#include "../SpiralPluginGUI.h" | |||
#include "EchoPlugin.h" | |||
class EchoPluginGUI : public SpiralPluginGUI | |||
{ | |||
public: | |||
EchoPluginGUI(int w, int h, EchoPlugin *o,ChannelHandler *ch,const HostInfo *Info); | |||
virtual void UpdateValues(SpiralPlugin *o); | |||
protected: | |||
const string GetHelpText(const string &loc); | |||
private: | |||
Fl_Slider *m_Delay; | |||
Fl_Slider *m_Feedback; | |||
Fl_Button *m_pop; | |||
Fl_Output *m_out_delay; | |||
Fl_Output *m_out_feedback; | |||
//// Callbacks //// | |||
inline void cb_Delay_i(Fl_Slider* o, void* v); | |||
static void cb_Delay(Fl_Slider*, void*); | |||
inline void cb_Feedback_i(Fl_Slider* o, void* v); | |||
static void cb_Feedback(Fl_Slider* o, void* v); | |||
inline void cb_pop_i(Fl_Button* o, void*); | |||
static void cb_pop(Fl_Button* o, void*); | |||
public: | |||
EchoPluginGUI (int w, int h, EchoPlugin *o, ChannelHandler *ch, const HostInfo *Info); | |||
virtual void UpdateValues (SpiralPlugin *o); | |||
protected: | |||
const string GetHelpText (const string &loc); | |||
private: | |||
Fl_Tabs *m_TheTabs; | |||
Fl_Group *m_CtlGroup, *m_NumGroup; | |||
Fl_Knob *m_Delay, *m_Feedback; | |||
Fl_Counter *m_NumDelay, *m_NumFeedback; | |||
Fl_LED_Button *m_Bounce; | |||
//// Callbacks //// | |||
inline void cb_Delay_i (Fl_Knob* o, void* v); | |||
static void cb_Delay (Fl_Knob* o, void* v); | |||
inline void cb_Feedback_i (Fl_Knob* o, void* v); | |||
static void cb_Feedback (Fl_Knob* o, void* v); | |||
inline void cb_NumDelay_i (Fl_Counter* o, void* v); | |||
static void cb_NumDelay (Fl_Counter* o, void* v); | |||
inline void cb_NumFeedback_i (Fl_Counter* o, void* v); | |||
static void cb_NumFeedback (Fl_Counter* o, void* v); | |||
inline void cb_Bounce_i (Fl_LED_Button* o, void* v); | |||
static void cb_Bounce (Fl_LED_Button* o, void* v); | |||
}; | |||
#endif |
@@ -45,6 +45,7 @@ HEADERS = ../SpiralPlugin.h \ | |||
../SpiralPluginGUI.h \ | |||
../../ChannelHandler.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_DragBar.H \ | |||
../../Sample.h \ | |||
EchoPlugin.h \ | |||
@@ -53,6 +54,7 @@ SOURCES = ../SpiralPlugin.C \ | |||
../SpiralPluginGUI.C \ | |||
../../ChannelHandler.C \ | |||
../Widgets/Fl_Knob.cxx \ | |||
../Widgets/Fl_LED_Button.cxx \ | |||
../Widgets/Fl_DragBar.cxx \ | |||
../../Sample.C \ | |||
EchoPlugin.C \ | |||
@@ -62,15 +64,16 @@ OBJECTS = ../SpiralPlugin.o \ | |||
../../ChannelHandler.o \ | |||
../Widgets/Fl_Knob.o \ | |||
../Widgets/Fl_DragBar.o \ | |||
../Widgets/Fl_LED_Button.o \ | |||
../../Sample.o \ | |||
EchoPlugin.o \ | |||
EchoPluginGUI.o | |||
INTERFACES = | |||
UICDECLS = | |||
UICIMPLS = | |||
SRCMOC = | |||
OBJMOC = | |||
DIST = | |||
INTERFACES = | |||
UICDECLS = | |||
UICIMPLS = | |||
SRCMOC = | |||
OBJMOC = | |||
DIST = | |||
TARGET = EchoPlugin.so | |||
####### Implicit rules | |||
@@ -97,7 +100,7 @@ TARGET = EchoPlugin.so | |||
all: $(TARGET) | |||
$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) | |||
$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) | |||
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) | |||
moc: $(SRCMOC) | |||
@@ -131,12 +134,17 @@ install: | |||
../SpiralPluginGUI.o: ../SpiralPluginGUI.C \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../SpiralPlugin.h \ | |||
../../Sample.h | |||
../Widgets/Fl_Knob.o: ../Widgets/Fl_Knob.cxx \ | |||
../Widgets/Fl_Knob.H | |||
../Widgets/Fl_LED_Button.o: ../Widgets/Fl_LED_Button.cxx \ | |||
../Widgets/Fl_LED_Button.H | |||
../Widgets/Fl_DragBar.o: ../Widgets/Fl_DragBar.cxx \ | |||
../Widgets/Fl_DragBar.H | |||
@@ -153,6 +161,7 @@ EchoPlugin.o: EchoPlugin.C \ | |||
EchoPluginGUI.h \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_Knob.H \ | |||
SpiralIcon.xpm | |||
@@ -165,6 +174,7 @@ EchoPluginGUI.o: EchoPluginGUI.C \ | |||
../../Sample.h \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_Knob.H | |||
../../ChannelHandler.o: ../../ChannelHandler.C \ | |||
@@ -73,23 +73,25 @@ SpiralPluginGUI(w,h,o,ch) | |||
m_MakerLabel->labelsize(12); | |||
add(m_MakerLabel); | |||
m_Tab = new Fl_Tabs(5,60,490,255,""); | |||
m_Tab = new Fl_Tabs (5, 60, 490, 250, ""); | |||
m_Tab->box (FL_PLASTIC_DOWN_BOX); | |||
m_Tab->callback((Fl_Callback *)cb_TabChange); | |||
add(m_Tab); | |||
m_ControlGroup = new Fl_Group(0,80,490,255,"Control"); | |||
m_ControlGroup = new Fl_Group (5, 80, 490, 230, "Control"); | |||
m_ControlGroup->box (FL_PLASTIC_UP_BOX); | |||
m_ControlGroup->labelsize(12); | |||
m_ControlScroll = new Fl_Scroll(10,85,480,210,""); | |||
m_ControlScroll = new Fl_Scroll (10, 85, 480, 220, ""); | |||
m_ControlScroll->align(FL_ALIGN_TOP_LEFT); | |||
m_ControlScroll->type(Fl_Scroll::VERTICAL); | |||
m_ControlScroll->box(FL_DOWN_BOX); | |||
m_ControlGroup->add(m_ControlScroll); | |||
m_ControlPack = new Fl_Pack(5,90,460,50,""); | |||
m_ControlPack = new Fl_Pack (10, 85, 480, 220, ""); | |||
m_ControlScroll->add(m_ControlPack); | |||
m_SetupGroup = new Fl_Group(0,80,490,255,"Setup"); | |||
m_SetupGroup = new Fl_Group (5, 80, 490, 230, "Setup"); | |||
m_SetupGroup->box (FL_PLASTIC_UP_BOX); | |||
m_SetupGroup->labelsize(12); | |||
m_Browser = new Fl_Choice(50,85,440,22,"Plugin:"); | |||
@@ -98,7 +100,7 @@ SpiralPluginGUI(w,h,o,ch) | |||
m_Browser->callback((Fl_Callback *)cb_Select); | |||
m_Browser->add("(None)"); | |||
for (vector<LADSPAInfo::PluginEntry>::iterator i=m_PluginList.begin(); | |||
i!=m_PluginList.end(); i++) | |||
{ | |||
@@ -168,7 +170,7 @@ SpiralPluginGUI(w,h,o,ch) | |||
m_PortLabel->labelsize(12); | |||
m_SetupGroup->add(m_PortLabel); | |||
m_UpdateInputs = new Fl_Check_Button(10,282,120,25,"Update input values?"); | |||
m_UpdateInputs = new Fl_LED_Button (10, 282, 25, 25, "Update input values?"); | |||
m_UpdateInputs->labelsize(12); | |||
m_UpdateInputs->value(true); | |||
m_UpdateInputs->callback((Fl_Callback *)cb_UpdateInputs); | |||
@@ -298,7 +300,7 @@ const string LADSPAPluginGUI::GetHelpText(const string &loc) | |||
+ "Value\n" | |||
+ " The value being input to the port from a connection.\n" | |||
+ "Default\n" | |||
+ " The value used as input if there is no connection. If" | |||
+ " The value used as input if there is no connection. If\n" | |||
+ " the port is connected, the default will use the value.\n" | |||
+ " Upon disconnection, it will retain the last value\n" | |||
+ " received.\n" | |||
@@ -307,8 +309,8 @@ const string LADSPAPluginGUI::GetHelpText(const string &loc) | |||
+ " assuming the signal is in the range -1.0 to +1.0.\n" | |||
+ "Clamp\n" | |||
+ " Whether to scale inputs - if unchecked, the input is\n" | |||
+ " not scaled." | |||
+ "Port Name" | |||
+ " not scaled.\n" | |||
+ "Port Name\n" | |||
+ " The name of the port, as supplied by the plugin.\n" | |||
+ "\n" | |||
+ "The Control tab will display a control knob for each port\n" | |||
@@ -630,14 +632,14 @@ void LADSPAPluginGUI::cb_Select(Fl_Choice* o) | |||
((LADSPAPluginGUI*)(o->parent()->parent()->parent()))->cb_Select_i(o); | |||
} | |||
inline void LADSPAPluginGUI::cb_UpdateInputs_i(Fl_Check_Button* o) | |||
inline void LADSPAPluginGUI::cb_UpdateInputs_i(Fl_LED_Button* o) | |||
{ | |||
m_UpdateInputState = (bool)(o->value()); | |||
m_GUICH->SetData("SetUpdateInputs", &m_UpdateInputState); | |||
m_GUICH->SetCommand(LADSPAPlugin::SETUPDATEINPUTS); | |||
} | |||
void LADSPAPluginGUI::cb_UpdateInputs(Fl_Check_Button* o) | |||
void LADSPAPluginGUI::cb_UpdateInputs(Fl_LED_Button* o) | |||
{ // Group Tab GUI | |||
((LADSPAPluginGUI*)(o->parent()->parent()->parent()))->cb_UpdateInputs_i(o); | |||
} | |||
@@ -14,7 +14,7 @@ | |||
* 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. | |||
*/ | |||
*/ | |||
#ifndef __ladspa_plugin_gui_h__ | |||
#define __ladspa_plugin_gui_h__ | |||
@@ -32,6 +32,7 @@ | |||
#include <FL/Fl_Box.H> | |||
#include <FL/Fl_Output.H> | |||
#include "../Widgets/Fl_Knob.H" | |||
#include "../Widgets/Fl_LED_Button.H" | |||
#include <vector> | |||
#include <string> | |||
@@ -89,7 +90,7 @@ private: | |||
Fl_Scroll *m_InputScroll; | |||
Fl_Pack *m_InputPack; | |||
Fl_Check_Button *m_UpdateInputs; | |||
Fl_LED_Button *m_UpdateInputs; | |||
std::vector<Fl_Output*> m_PortValue; | |||
std::vector<Fl_Input*> m_PortMin; | |||
std::vector<Fl_Input*> m_PortMax; | |||
@@ -122,8 +123,8 @@ private: | |||
static void cb_TabChange(Fl_Tabs *o); | |||
inline void cb_Select_i(Fl_Choice* o); | |||
static void cb_Select(Fl_Choice* o); | |||
inline void cb_UpdateInputs_i(Fl_Check_Button* o); | |||
static void cb_UpdateInputs(Fl_Check_Button* o); | |||
inline void cb_UpdateInputs_i(Fl_LED_Button* o); | |||
static void cb_UpdateInputs(Fl_LED_Button* o); | |||
inline void cb_Default_i(Fl_Input* o); | |||
static void cb_Default(Fl_Input* o); | |||
inline void cb_Min_i(Fl_Input* o); | |||
@@ -45,6 +45,7 @@ HEADERS = ../SpiralPlugin.h \ | |||
../SpiralPluginGUI.h \ | |||
../../ChannelHandler.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_DragBar.H \ | |||
../../Sample.h \ | |||
LADSPAPlugin.h \ | |||
@@ -54,6 +55,7 @@ SOURCES = ../SpiralPlugin.C \ | |||
../SpiralPluginGUI.C \ | |||
../../ChannelHandler.C \ | |||
../Widgets/Fl_Knob.cxx \ | |||
../Widgets/Fl_LED_Button.cxx \ | |||
../Widgets/Fl_DragBar.cxx \ | |||
../../Sample.C \ | |||
LADSPAPlugin.C \ | |||
@@ -63,6 +65,7 @@ OBJECTS = ../SpiralPlugin.o \ | |||
../SpiralPluginGUI.o \ | |||
../../ChannelHandler.o \ | |||
../Widgets/Fl_Knob.o \ | |||
../Widgets/Fl_LED_Button.o \ | |||
../Widgets/Fl_DragBar.o \ | |||
../../Sample.o \ | |||
LADSPAPlugin.o \ | |||
@@ -137,12 +140,17 @@ install: | |||
../SpiralPluginGUI.o: ../SpiralPluginGUI.C \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_Knob.H \ | |||
../SpiralPlugin.h \ | |||
../../Sample.h | |||
../Widgets/Fl_Knob.o: ../Widgets/Fl_Knob.cxx \ | |||
../Widgets/Fl_Knob.H | |||
../Widgets/Fl_LED_Button.o: ../Widgets/Fl_LED_Button.cxx \ | |||
../Widgets/Fl_LED_Button.H | |||
../Widgets/Fl_DragBar.o: ../Widgets/Fl_DragBar.cxx \ | |||
../Widgets/Fl_DragBar.H | |||
@@ -157,8 +165,9 @@ LADSPAPlugin.o: LADSPAPlugin.C \ | |||
../../SpiralInfo.h \ | |||
../../Sample.h \ | |||
LADSPAPluginGUI.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_DragBar.H \ | |||
LADSPAInfo.h \ | |||
SpiralIcon.xpm | |||
@@ -172,6 +181,8 @@ LADSPAPluginGUI.o: LADSPAPluginGUI.C \ | |||
../../SpiralInfo.h \ | |||
../../Sample.h \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_DragBar.H | |||
../../ChannelHandler.o: ../../ChannelHandler.C \ | |||
@@ -43,8 +43,8 @@ m_TableLength (DEFAULT_TABLE_LEN) { | |||
m_CyclePos = 0; | |||
m_Note = 0; | |||
m_PluginInfo.Name = "LFO"; | |||
m_PluginInfo.Width = 165; | |||
m_PluginInfo.Height = 150; | |||
m_PluginInfo.Width = 160; | |||
m_PluginInfo.Height = 112; | |||
m_PluginInfo.NumInputs = 0; | |||
m_PluginInfo.NumOutputs = 3; | |||
m_PluginInfo.PortTips.push_back ("Output"); | |||
@@ -124,161 +124,178 @@ static unsigned char *image_Saw[] = { | |||
(unsigned char*)" ", | |||
(unsigned char*)" "}; | |||
LFOPluginGUI::LFOPluginGUI(int w, int h,LFOPlugin *o,ChannelHandler *ch,const HostInfo *Info) : | |||
SpiralPluginGUI(w,h,o,ch), | |||
pixmap_Sine(image_Sine), | |||
pixmap_Tri(image_Tri), | |||
pixmap_Square(image_Square), | |||
pixmap_Saw(image_Saw) { | |||
ShapeSine = new Fl_Check_Button (5, 15, 55, 30); | |||
ShapeSine->type (FL_RADIO_BUTTON); | |||
ShapeSine->down_box (FL_DIAMOND_DOWN_BOX); | |||
ShapeSine->selection_color (GUI_COLOUR); | |||
pixmap_Sine.label (ShapeSine); | |||
ShapeSine->set(); | |||
ShapeSine->callback ((Fl_Callback*)cb_Sine); | |||
ShapeTri = new Fl_Check_Button (5, 46, 55, 30); | |||
ShapeTri->type (FL_RADIO_BUTTON); | |||
ShapeTri->down_box (FL_DIAMOND_DOWN_BOX); | |||
ShapeTri->selection_color (GUI_COLOUR); | |||
pixmap_Tri.label (ShapeTri); | |||
ShapeTri->callback ((Fl_Callback*)cb_Tri); | |||
ShapeSquare = new Fl_Check_Button (5, 77, 55, 30); | |||
ShapeSquare->type (FL_RADIO_BUTTON); | |||
ShapeSquare->down_box (FL_DIAMOND_DOWN_BOX); | |||
ShapeSquare->selection_color (GUI_COLOUR); | |||
pixmap_Square.label (ShapeSquare); | |||
ShapeSquare->callback ((Fl_Callback*)cb_Square); | |||
ShapeSaw = new Fl_Check_Button (5, 108, 55, 30); | |||
ShapeSaw->type (FL_RADIO_BUTTON); | |||
ShapeSaw->down_box (FL_DIAMOND_DOWN_BOX); | |||
ShapeSaw->selection_color (GUI_COLOUR); | |||
pixmap_Saw.label (ShapeSaw); | |||
ShapeSaw->callback ((Fl_Callback*)cb_Saw); | |||
Perd = new Fl_Knob (75, 15, 60, 60, ""); | |||
Perd->color (GUI_COLOUR); | |||
Perd->type (Fl_Knob::LINELIN); | |||
Perd->labelsize (10); | |||
Perd->scaleticks (20); | |||
Perd->maximum (120); | |||
Perd->minimum (0.1); | |||
Perd->step (0.001); | |||
Perd->value (10); | |||
Perd->callback ((Fl_Callback*)cb_Perd); | |||
NumPerd = new Fl_Counter (50, 80, 110, 20, "Period (Secs)"); | |||
NumPerd->textsize (10); | |||
NumPerd->labelsize (10); | |||
NumPerd->value (Perd->value()); | |||
NumPerd->step (Perd->step()); | |||
NumPerd->lstep (0.1); | |||
NumPerd->maximum (Perd->maximum()); | |||
NumPerd->minimum (Perd->minimum()); | |||
NumPerd->callback ((Fl_Callback*)cb_NumPerd); | |||
NumFreq = new Fl_Counter (50, 115, 110, 20, "Freq (Hz)"); | |||
NumFreq->textsize (10); | |||
NumFreq->labelsize (10); | |||
NumFreq->value (1 / Perd->value()); | |||
NumFreq->step (0.001); | |||
NumFreq->lstep (0.1); | |||
NumFreq->maximum (1 / Perd->minimum()); | |||
NumFreq->minimum (1 / Perd->maximum()); | |||
NumFreq->callback ((Fl_Callback*)cb_NumFreq); | |||
LFOPluginGUI::LFOPluginGUI (int w, int h, LFOPlugin *o, ChannelHandler *ch, const HostInfo *Info) : | |||
SpiralPluginGUI (w, h, o, ch), | |||
m_PixmapSine (image_Sine), | |||
m_PixmapTri (image_Tri), | |||
m_PixmapSquare (image_Square), | |||
m_PixmapSaw (image_Saw) { | |||
m_ShapeSine = new Fl_LED_Button (0, 15, 23, 23); | |||
m_ShapeSine->type (FL_RADIO_BUTTON); | |||
m_PixmapSine.label (m_ShapeSine); | |||
m_ShapeSine->set(); | |||
m_ShapeSine->callback ((Fl_Callback*)cb_Sine); | |||
m_ShapeTri = new Fl_LED_Button (0, 35, 23, 23); | |||
m_ShapeTri->type (FL_RADIO_BUTTON); | |||
m_PixmapTri.label (m_ShapeTri); | |||
m_ShapeTri->callback ((Fl_Callback*)cb_Tri); | |||
m_ShapeSquare = new Fl_LED_Button (0, 55, 23, 23); | |||
m_ShapeSquare->type (FL_RADIO_BUTTON); | |||
m_PixmapSquare.label (m_ShapeSquare); | |||
m_ShapeSquare->callback ((Fl_Callback*)cb_Square); | |||
m_ShapeSaw = new Fl_LED_Button (0, 75, 23, 23); | |||
m_ShapeSaw->type (FL_RADIO_BUTTON); | |||
m_PixmapSaw.label (m_ShapeSaw); | |||
m_ShapeSaw->callback ((Fl_Callback*)cb_Saw); | |||
m_TheTabs = new Fl_Tabs (40, 14, 119, 90, ""); | |||
m_TheTabs->box (FL_PLASTIC_DOWN_BOX); | |||
m_TheTabs->color (GUI_COLOUR); | |||
add (m_TheTabs); | |||
m_CtlGroup = new Fl_Group (40, 28, 119, 66, "Control"); | |||
m_CtlGroup->labelsize (10); | |||
m_TheTabs->add (m_CtlGroup); | |||
m_Perd = new Fl_Knob (70, 30, 60, 60, "Period"); | |||
m_Perd->user_data ((void*)(this)); | |||
m_Perd->color (GUI_COLOUR); | |||
m_Perd->type (Fl_Knob::LINELIN); | |||
m_Perd->labelsize (10); | |||
m_Perd->scaleticks (20); | |||
m_Perd->maximum (120); | |||
m_Perd->minimum (0.1); | |||
m_Perd->step (0.001); | |||
m_Perd->value (10); | |||
m_Perd->callback ((Fl_Callback*)cb_Perd); | |||
m_CtlGroup->add (m_Perd); | |||
m_NumGroup = new Fl_Group (40, 28, 119, 66, "Numbers"); | |||
m_NumGroup->labelsize (10); | |||
m_TheTabs->add (m_NumGroup); | |||
m_NumPerd = new Fl_Counter (45, 35, 110, 20, "Period (Secs)"); | |||
m_NumPerd->user_data ((void*)(this)); | |||
m_NumPerd->textsize (10); | |||
m_NumPerd->labelsize (10); | |||
m_NumPerd->box (FL_PLASTIC_UP_BOX); | |||
m_NumPerd->color (GUI_COLOUR); | |||
m_NumPerd->value (m_Perd->value()); | |||
m_NumPerd->step (m_Perd->step()); | |||
m_NumPerd->lstep (0.1); | |||
m_NumPerd->maximum (m_Perd->maximum()); | |||
m_NumPerd->minimum (m_Perd->minimum()); | |||
m_NumPerd->callback ((Fl_Callback*)cb_NumPerd); | |||
m_NumGroup->add (m_NumPerd); | |||
m_NumFreq = new Fl_Counter (45, 70, 110, 20, "Freq (Hz)"); | |||
m_NumFreq->user_data ((void*)(this)); | |||
m_NumFreq->textsize (10); | |||
m_NumFreq->labelsize (10); | |||
m_NumFreq->box (FL_PLASTIC_UP_BOX); | |||
m_NumFreq->color (GUI_COLOUR); | |||
m_NumFreq->value (1 / m_Perd->value()); | |||
m_NumFreq->step (0.001); | |||
m_NumFreq->lstep (0.1); | |||
m_NumFreq->maximum (1 / m_Perd->minimum()); | |||
m_NumFreq->minimum (1 / m_Perd->maximum()); | |||
m_NumFreq->callback ((Fl_Callback*)cb_NumFreq); | |||
m_NumGroup->add (m_NumFreq); | |||
end(); | |||
} | |||
void LFOPluginGUI::UpdateValues(SpiralPlugin *o) { | |||
LFOPlugin* Plugin = (LFOPlugin*)o; | |||
void LFOPluginGUI::UpdateValues (SpiralPlugin *o) { | |||
ShapeSine->value (0); | |||
ShapeTri->value (0); | |||
ShapeSquare->value (0); | |||
ShapeSaw->value (0); | |||
LFOPlugin* Plugin = (LFOPlugin*)o; | |||
m_ShapeSine->value (0); | |||
m_ShapeTri->value (0); | |||
m_ShapeSquare->value (0); | |||
m_ShapeSaw->value (0); | |||
switch (Plugin->GetType()) { | |||
case LFOPlugin::SINE : ShapeSine->value (1); break; | |||
case LFOPlugin::TRIANGLE : ShapeTri->value (1); break; | |||
case LFOPlugin::SQUARE : ShapeSquare->value (1); break; | |||
case LFOPlugin::SAW : ShapeSaw->value (1); break; | |||
case LFOPlugin::SINE : m_ShapeSine->value (1); break; | |||
case LFOPlugin::TRIANGLE : m_ShapeTri->value (1); break; | |||
case LFOPlugin::SQUARE : m_ShapeSquare->value (1); break; | |||
case LFOPlugin::SAW : m_ShapeSaw->value (1); break; | |||
} | |||
float x = Plugin->GetFreq(); | |||
NumFreq->value (x); | |||
m_NumFreq->value (x); | |||
x = 1 / x; | |||
Perd->value (x); | |||
NumPerd->value (x); | |||
m_Perd->value (x); | |||
m_NumPerd->value (x); | |||
} | |||
// Callbacks for knobs and counters | |||
// Callbacks for Knob | |||
inline void LFOPluginGUI::cb_Perd_i (Fl_Knob* o, void* v) { | |||
NumPerd->value ((double)o->value()); | |||
m_NumPerd->value ((double)o->value()); | |||
float f = 1.0f / o->value(); | |||
NumFreq->value (f); | |||
m_NumFreq->value (f); | |||
m_GUICH->Set ("Freq", f); | |||
} | |||
void LFOPluginGUI::cb_Perd (Fl_Knob* o, void* v) { | |||
((LFOPluginGUI*)(o->parent()))->cb_Perd_i (o, v); | |||
((LFOPluginGUI*)(o->user_data()))->cb_Perd_i (o, v); | |||
} | |||
// Callbacks for Counters | |||
inline void LFOPluginGUI::cb_NumPerd_i (Fl_Knob* o, void* v) { | |||
Perd->value (o->value()); | |||
m_Perd->value (o->value()); | |||
float f = 1.0f / o->value(); | |||
NumFreq->value (f); | |||
m_NumFreq->value (f); | |||
m_GUICH->Set ("Freq", f); | |||
} | |||
void LFOPluginGUI::cb_NumPerd (Fl_Knob* o, void* v) { | |||
((LFOPluginGUI*)(o->parent()))->cb_NumPerd_i (o, v); | |||
((LFOPluginGUI*)(o->user_data()))->cb_NumPerd_i (o, v); | |||
} | |||
inline void LFOPluginGUI::cb_NumFreq_i (Fl_Knob* o, void* v) { | |||
float p = 1.0f / o->value(); | |||
Perd->value (p); | |||
NumPerd->value (p); | |||
m_Perd->value (p); | |||
m_NumPerd->value (p); | |||
m_GUICH->Set ("Freq", (float)(o->value())); | |||
} | |||
void LFOPluginGUI::cb_NumFreq (Fl_Knob* o, void* v) { | |||
((LFOPluginGUI*)(o->parent()))->cb_NumFreq_i (o, v); | |||
((LFOPluginGUI*)(o->user_data()))->cb_NumFreq_i (o, v); | |||
} | |||
// Callbacks for waveform buttons | |||
inline void LFOPluginGUI::cb_Sine_i (Fl_Check_Button* o, void* v) { | |||
m_GUICH->Set("Type",(char)(LFOPlugin::SINE)); | |||
inline void LFOPluginGUI::cb_Sine_i (Fl_LED_Button* o, void* v) { | |||
m_GUICH->Set("Type", (char)(LFOPlugin::SINE)); | |||
} | |||
void LFOPluginGUI::cb_Sine(Fl_Check_Button* o, void* v) { | |||
void LFOPluginGUI::cb_Sine(Fl_LED_Button* o, void* v) { | |||
((LFOPluginGUI*)(o->parent()))->cb_Sine_i (o, v); | |||
} | |||
inline void LFOPluginGUI::cb_Tri_i (Fl_Check_Button* o, void* v) { | |||
inline void LFOPluginGUI::cb_Tri_i (Fl_LED_Button* o, void* v) { | |||
m_GUICH->Set("Type",(char)(LFOPlugin::TRIANGLE)); | |||
} | |||
void LFOPluginGUI::cb_Tri (Fl_Check_Button* o, void* v) { | |||
void LFOPluginGUI::cb_Tri (Fl_LED_Button* o, void* v) { | |||
((LFOPluginGUI*)(o->parent()))->cb_Tri_i (o, v); | |||
} | |||
inline void LFOPluginGUI::cb_Square_i (Fl_Check_Button* o, void* v) { | |||
inline void LFOPluginGUI::cb_Square_i (Fl_LED_Button* o, void* v) { | |||
m_GUICH->Set("Type",(char)(LFOPlugin::SQUARE)); | |||
} | |||
void LFOPluginGUI::cb_Square (Fl_Check_Button* o, void* v) { | |||
void LFOPluginGUI::cb_Square (Fl_LED_Button* o, void* v) { | |||
((LFOPluginGUI*)(o->parent()))->cb_Square_i (o, v); | |||
} | |||
inline void LFOPluginGUI::cb_Saw_i (Fl_Check_Button* o, void* v) { | |||
inline void LFOPluginGUI::cb_Saw_i (Fl_LED_Button* o, void* v) { | |||
m_GUICH->Set("Type",(LFOPlugin::SAW)); | |||
} | |||
void LFOPluginGUI::cb_Saw (Fl_Check_Button* o, void* v) { | |||
void LFOPluginGUI::cb_Saw (Fl_LED_Button* o, void* v) { | |||
((LFOPluginGUI*)(o->parent()))->cb_Saw_i (o, v); | |||
} | |||
@@ -19,10 +19,11 @@ | |||
#ifndef LFOGUI | |||
#define LFOGUI | |||
#include <FL/Fl_Check_Button.H> | |||
#include <FL/Fl_Pixmap.H> | |||
#include <FL/Fl_Tabs.H> | |||
#include <FL/Fl_Counter.H> | |||
#include "../Widgets/Fl_Knob.H" | |||
#include "../Widgets/Fl_LED_Button.H" | |||
#include "../SpiralPluginGUI.h" | |||
#include "LFOPlugin.h" | |||
@@ -30,36 +31,30 @@ class LFOPluginGUI : public SpiralPluginGUI { | |||
public: | |||
LFOPluginGUI(int w, int h, LFOPlugin *o,ChannelHandler *ch,const HostInfo *Info); | |||
virtual void UpdateValues(SpiralPlugin *o); | |||
protected: | |||
const string GetHelpText(const string &loc); | |||
private: | |||
Fl_Check_Button* ShapeSine; | |||
Fl_Pixmap pixmap_Sine; | |||
Fl_Check_Button* ShapeTri; | |||
Fl_Pixmap pixmap_Tri; | |||
Fl_Check_Button* ShapeSquare; | |||
Fl_Pixmap pixmap_Square; | |||
Fl_Check_Button* ShapeSaw; | |||
Fl_Pixmap pixmap_Saw; | |||
Fl_Knob* Perd; | |||
Fl_Counter* NumFreq; | |||
Fl_Counter* NumPerd; | |||
inline void cb_Perd_i (Fl_Knob* o, void* v); | |||
static void cb_Perd (Fl_Knob* o, void* v); | |||
inline void cb_NumFreq_i (Fl_Knob* o, void* v); | |||
static void cb_NumFreq (Fl_Knob* o, void* v); | |||
inline void cb_NumPerd_i (Fl_Knob* o, void* v); | |||
static void cb_NumPerd (Fl_Knob* o, void* v); | |||
inline void cb_Sine_i (Fl_Check_Button* o, void* v); | |||
static void cb_Sine (Fl_Check_Button* o, void* v); | |||
inline void cb_Tri_i (Fl_Check_Button* o, void* v); | |||
static void cb_Tri (Fl_Check_Button* o, void* v); | |||
inline void cb_Square_i (Fl_Check_Button* o, void* v); | |||
static void cb_Square (Fl_Check_Button*, void*); | |||
inline void cb_Saw_i (Fl_Check_Button* o, void* v); | |||
static void cb_Saw (Fl_Check_Button*, void*); | |||
protected: | |||
const string GetHelpText(const string &loc); | |||
private: | |||
Fl_Tabs *m_TheTabs; | |||
Fl_Group *m_CtlGroup, *m_NumGroup; | |||
Fl_LED_Button *m_ShapeSine, *m_ShapeTri, *m_ShapeSquare, *m_ShapeSaw; | |||
Fl_Pixmap m_PixmapSine, m_PixmapTri, m_PixmapSquare, m_PixmapSaw; | |||
Fl_Knob *m_Perd; | |||
Fl_Counter *m_NumFreq, *m_NumPerd; | |||
// callbacks | |||
inline void cb_Perd_i (Fl_Knob *o, void *v); | |||
static void cb_Perd (Fl_Knob *o, void *v); | |||
inline void cb_NumFreq_i (Fl_Knob *o, void *v); | |||
static void cb_NumFreq (Fl_Knob *o, void *v); | |||
inline void cb_NumPerd_i (Fl_Knob *o, void *v); | |||
static void cb_NumPerd (Fl_Knob *o, void *v); | |||
inline void cb_Sine_i (Fl_LED_Button *o, void *v); | |||
static void cb_Sine (Fl_LED_Button *o, void *v); | |||
inline void cb_Tri_i (Fl_LED_Button *o, void *v); | |||
static void cb_Tri (Fl_LED_Button *o, void *v); | |||
inline void cb_Square_i (Fl_LED_Button *o, void *v); | |||
static void cb_Square (Fl_LED_Button *o, void *v); | |||
inline void cb_Saw_i (Fl_LED_Button *o, void *v); | |||
static void cb_Saw (Fl_LED_Button *o, void *v); | |||
}; | |||
#endif |
@@ -45,6 +45,7 @@ HEADERS = ../SpiralPlugin.h \ | |||
../SpiralPluginGUI.h \ | |||
../../ChannelHandler.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_DragBar.H \ | |||
../../Sample.h \ | |||
LFOPlugin.h \ | |||
@@ -53,6 +54,7 @@ SOURCES = ../SpiralPlugin.C \ | |||
../SpiralPluginGUI.C \ | |||
../../ChannelHandler.C \ | |||
../Widgets/Fl_Knob.cxx \ | |||
../Widgets/Fl_LED_Button.cxx \ | |||
../Widgets/Fl_DragBar.cxx \ | |||
../../Sample.C \ | |||
LFOPlugin.C \ | |||
@@ -61,16 +63,17 @@ OBJECTS = ../SpiralPlugin.o \ | |||
../SpiralPluginGUI.o \ | |||
../../ChannelHandler.o \ | |||
../Widgets/Fl_Knob.o \ | |||
../Widgets/Fl_LED_Button.o \ | |||
../Widgets/Fl_DragBar.o \ | |||
../../Sample.o \ | |||
LFOPlugin.o \ | |||
LFOPluginGUI.o | |||
INTERFACES = | |||
UICDECLS = | |||
UICIMPLS = | |||
SRCMOC = | |||
OBJMOC = | |||
DIST = | |||
INTERFACES = | |||
UICDECLS = | |||
UICIMPLS = | |||
SRCMOC = | |||
OBJMOC = | |||
DIST = | |||
TARGET = LFOPlugin.so | |||
####### Implicit rules | |||
@@ -97,7 +100,7 @@ TARGET = LFOPlugin.so | |||
all: $(TARGET) | |||
$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) | |||
$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) | |||
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) | |||
moc: $(SRCMOC) | |||
@@ -112,7 +115,7 @@ dist: | |||
clean: | |||
-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) $(TARGET) | |||
-rm -f *~ core | |||
install: | |||
$(INSTALL) $(TARGET) $(libdir)/SpiralPlugins | |||
@@ -131,12 +134,17 @@ install: | |||
../SpiralPluginGUI.o: ../SpiralPluginGUI.C \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_Knob.H \ | |||
../SpiralPlugin.h \ | |||
../../Sample.h | |||
../Widgets/Fl_Knob.o: ../Widgets/Fl_Knob.cxx \ | |||
../Widgets/Fl_Knob.H | |||
../Widgets/Fl_LED_Button.o: ../Widgets/Fl_LED_Button.cxx \ | |||
../Widgets/Fl_LED_Button.H | |||
../Widgets/Fl_DragBar.o: ../Widgets/Fl_DragBar.cxx \ | |||
../Widgets/Fl_DragBar.H | |||
@@ -152,6 +160,7 @@ LFOPlugin.o: LFOPlugin.C \ | |||
../../Sample.h \ | |||
LFOPluginGUI.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
SpiralIcon.xpm | |||
@@ -159,6 +168,7 @@ LFOPlugin.o: LFOPlugin.C \ | |||
LFOPluginGUI.o: LFOPluginGUI.C \ | |||
LFOPluginGUI.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
LFOPlugin.h \ | |||
@@ -161,7 +161,7 @@ m_LastPatSeqLight(0) | |||
m_Octave->value(0); | |||
m_Octave->callback((Fl_Callback*)cb_Octave); | |||
add(m_Octave); | |||
m_CopyBtn = new Fl_Button (5, 150, 40, 20, "Copy"); | |||
m_CopyBtn->labelsize (10); | |||
m_CopyBtn->callback ((Fl_Callback*)cb_CopyBtn); | |||
@@ -34,49 +34,57 @@ m_Bypass (false) | |||
m_Data = new float[m_BufSize]; | |||
// Create the widgets and stuff! | |||
Bypass = new Fl_Button (2, 18, 54, 20, "Bypass"); | |||
Bypass -> labelsize (10); | |||
Bypass -> type (1); | |||
Bypass -> callback ((Fl_Callback*)cb_Bypass); | |||
Bypass->labelsize (10); | |||
Bypass->type (FL_TOGGLE_BUTTON); | |||
Bypass->box (FL_PLASTIC_UP_BOX); | |||
Bypass->color (GUI_COLOUR); | |||
Bypass->selection_color (GUI_COLOUR); | |||
Bypass->callback ((Fl_Callback*)cb_Bypass); | |||
add (Bypass); | |||
VUMode = new Fl_Check_Button (86, 18, 54, 20, "VU"); | |||
VUMode = new Fl_Button (118, 18, 54, 20, "VU"); | |||
VUMode->type (FL_RADIO_BUTTON); | |||
VUMode->down_box (FL_DIAMOND_DOWN_BOX); | |||
VUMode->box (FL_PLASTIC_UP_BOX); | |||
VUMode->color (GUI_COLOUR); | |||
VUMode->selection_color (GUI_COLOUR); | |||
VUMode->labelsize (10); | |||
VUMode->callback ((Fl_Callback*)cb_Mode); | |||
VUMode->set(); | |||
add (VUMode); | |||
MMMode = new Fl_Check_Button (142, 18, 54, 20, "Min/Max"); | |||
MMMode = new Fl_Button (174, 18, 54, 20, "Min/Max"); | |||
MMMode->type (FL_RADIO_BUTTON); | |||
MMMode->down_box (FL_DIAMOND_DOWN_BOX); | |||
MMMode->box (FL_PLASTIC_UP_BOX); | |||
MMMode->color (GUI_COLOUR); | |||
MMMode->selection_color (GUI_COLOUR); | |||
MMMode->labelsize (10); | |||
MMMode->callback ((Fl_Callback*)cb_Mode); | |||
add (MMMode); | |||
for (int display=0; display<8; display++) { | |||
Digits[display] = new Fl_SevenSeg ((display*28)+2, 40, 28, 40); | |||
Digits[display] -> bar_width (4); | |||
Digits[display] -> color (FL_WHITE); | |||
Digits[display] -> color2 (GUI_COLOUR); | |||
Digits[display]->bar_width (4); | |||
Digits[display]->color (FL_BLACK); | |||
Digits[display]->color2 (FL_GRAY); | |||
add (Digits[display]); | |||
} | |||
MinBox = new Fl_Output (2, 104, 84, 20); | |||
MinBox -> box (FL_ENGRAVED_BOX); | |||
MinBox -> color (16); | |||
MinBox -> set_output(); | |||
MinBox->box (FL_PLASTIC_DOWN_BOX); | |||
MinBox->set_output(); | |||
add (MinBox); | |||
Reset = new Fl_Button (88, 104, 54, 20, "Reset"); | |||
Reset -> labelsize (10); | |||
Reset -> type (0); | |||
Reset -> callback ((Fl_Callback*)cb_Reset); | |||
Reset->labelsize (10); | |||
Reset->type (0); | |||
Reset->box (FL_PLASTIC_UP_BOX); | |||
Reset->color (GUI_COLOUR); | |||
Reset->selection_color (GUI_COLOUR); | |||
Reset->callback ((Fl_Callback*)cb_Reset); | |||
add (Reset); | |||
MaxBox = new Fl_Output (144, 104, 84, 20); | |||
MaxBox->set_output(); | |||
MaxBox->box (FL_ENGRAVED_BOX); | |||
MaxBox->color (16); | |||
MaxBox->box (FL_PLASTIC_DOWN_BOX); | |||
add (MaxBox); | |||
Meter = new Fl_VU_Meter (2, 82, 226, 20); | |||
Meter->color (FL_BLACK); | |||
Meter->vu_mode (true); | |||
cb_Reset_i (Reset, NULL); | |||
add (Reset); | |||
end (); | |||
DoReset (); | |||
} | |||
@@ -153,7 +161,7 @@ void MeterPluginGUI::cb_Bypass (Fl_Button* o, void* v) { | |||
} | |||
void MeterPluginGUI::DoReset (void) { | |||
MaxBox->color (16); | |||
MaxBox->color (MinBox->color()); | |||
SetMinMax (10, -10); // Yes, I know that LOOKS the wrong way round, but it isn't! | |||
} | |||
@@ -165,13 +173,14 @@ void MeterPluginGUI::cb_Reset (Fl_Button* o, void* v) { | |||
((MeterPluginGUI*)(o->parent()))->cb_Reset_i (o, v); | |||
} | |||
void MeterPluginGUI::cb_Mode_i (Fl_Check_Button* o, void* v) { | |||
void MeterPluginGUI::cb_Mode_i (Fl_Button* o, void* v) { | |||
DoReset (); | |||
if (o==VUMode) m_GUICH->SetCommand (MeterPlugin::SETVU); | |||
else m_GUICH->SetCommand (MeterPlugin::SETMM); | |||
Meter->vu_mode (o==VUMode); | |||
} | |||
void MeterPluginGUI::cb_Mode (Fl_Check_Button* o, void* v) { | |||
void MeterPluginGUI::cb_Mode (Fl_Button* o, void* v) { | |||
((MeterPluginGUI*)(o->parent()))->cb_Mode_i (o, v); | |||
} | |||
@@ -23,7 +23,6 @@ | |||
#include "../Widgets/Fl_VU_Meter.h" | |||
#include "../Widgets/Fl_SevenSeg.H" | |||
#include <FL/Fl_Button.H> | |||
#include <FL/Fl_Check_Button.H> | |||
#include <FL/Fl_Output.H> | |||
#include "MeterPlugin.h" | |||
#include "../SpiralPluginGUI.h" | |||
@@ -44,15 +43,14 @@ class MeterPluginGUI : public SpiralPluginGUI { | |||
inline void DoReset (void); | |||
Fl_SevenSeg *Digits[8]; | |||
Fl_Output *MaxBox, *MinBox; | |||
Fl_Button *Reset, *Bypass; | |||
Fl_Check_Button *VUMode, *MMMode; | |||
Fl_Button *Reset, *Bypass, *VUMode, *MMMode; | |||
Fl_VU_Meter *Meter; | |||
inline void cb_Reset_i (Fl_Button* o, void* v); | |||
static void cb_Reset (Fl_Button* o, void* v); | |||
inline void cb_Bypass_i (Fl_Button* o, void* v); | |||
static void cb_Bypass (Fl_Button* o, void* v); | |||
inline void cb_Mode_i (Fl_Check_Button* o, void* v); | |||
static void cb_Mode (Fl_Check_Button* o, void* v); | |||
inline void cb_Mode_i (Fl_Button* o, void* v); | |||
static void cb_Mode (Fl_Button* o, void* v); | |||
}; | |||
#endif |
@@ -35,6 +35,9 @@ SpiralPluginGUI (w, h, o, ch) | |||
m_Chans = new Fl_Counter (5, 20, 40, 20, "Channels"); | |||
m_Chans->labelsize (10); | |||
m_Chans->type (FL_SIMPLE_COUNTER); | |||
m_Chans->box (FL_PLASTIC_UP_BOX); | |||
m_Chans->color (GUI_COLOUR); | |||
m_Chans->selection_color (GUI_COLOUR); | |||
m_Chans->step (1); | |||
m_Chans->value (2); | |||
m_Chans->callback ((Fl_Callback*) cb_Chans); | |||
@@ -43,6 +46,9 @@ SpiralPluginGUI (w, h, o, ch) | |||
m_Switch = new Fl_Counter (49, 20, 40, 20, "Select"); | |||
m_Switch->labelsize (10); | |||
m_Switch->type (FL_SIMPLE_COUNTER); | |||
m_Switch->box (FL_PLASTIC_UP_BOX); | |||
m_Switch->color (GUI_COLOUR); | |||
m_Switch->selection_color (GUI_COLOUR); | |||
m_Switch->step (1); | |||
m_Switch->value (1); | |||
m_Switch->callback ((Fl_Callback*) cb_Switch); | |||
@@ -41,9 +41,15 @@ SpiralPluginGUI(w,h,o,ch) | |||
m_Buttons->type (FL_HORIZONTAL); | |||
add (m_Buttons); | |||
m_Delete = new Fl_Button (2, 0, 20, 20, "-"); | |||
m_Delete->box (FL_PLASTIC_UP_BOX); | |||
m_Delete->color (GUI_COLOUR); | |||
m_Delete->selection_color (GUI_COLOUR); | |||
m_Delete->callback ((Fl_Callback*)cb_Delete); | |||
m_Buttons->add (m_Delete); | |||
m_Add = new Fl_Button (24, 0, 20, 20, "+"); | |||
m_Add->box (FL_PLASTIC_UP_BOX); | |||
m_Add->color (GUI_COLOUR); | |||
m_Add->selection_color (GUI_COLOUR); | |||
m_Add->callback ((Fl_Callback*)cb_Add); | |||
m_Buttons->add (m_Add); | |||
} | |||
@@ -52,6 +58,7 @@ void MixerPluginGUI::AddChan (bool SendData, bool ResizeIt) { | |||
Fl_Slider *NewSlide = new Fl_Slider (0, 0, 20, 100, ""); | |||
NewSlide->type (4); | |||
NewSlide->selection_color (GUI_COLOUR); | |||
NewSlide->box (FL_PLASTIC_DOWN_BOX); | |||
NewSlide->labelsize (10); | |||
NewSlide->maximum (2); | |||
NewSlide->step (0.01); | |||
@@ -1,22 +1,19 @@ | |||
############################################################################# | |||
# Makefile for building NoisePlugin.so | |||
# Generated by tmake at 22:13, 2001/09/17 | |||
# Project: NoisePlugin | |||
# Template: app | |||
############################################################################# | |||
####### Compiler, tools and options | |||
CC = gcc | |||
CXX = g++ | |||
CFLAGS = @CFLAGS@ | |||
CXXFLAGS= @CXXFLAGS@ | |||
CFLAGS = @CFLAGS@ | |||
CXXFLAGS= @CXXFLAGS@ | |||
INCPATH = -I/usr/X11R6/include | |||
LINK = g++ -shared | |||
LFLAGS = | |||
LFLAGS = | |||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||
MOC = moc | |||
UIC = | |||
UIC = | |||
TAR = tar -cf | |||
GZIP = gzip -9f | |||
@@ -44,7 +41,7 @@ mandir = @mandir@ | |||
HEADERS = ../SpiralPlugin.h \ | |||
../SpiralPluginGUI.h \ | |||
../../ChannelHandler.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../Widgets/Fl_DragBar.H \ | |||
../../Sample.h \ | |||
NoisePlugin.h \ | |||
@@ -52,7 +49,7 @@ HEADERS = ../SpiralPlugin.h \ | |||
SOURCES = ../SpiralPlugin.C \ | |||
../SpiralPluginGUI.C \ | |||
../../ChannelHandler.C \ | |||
../Widgets/Fl_Knob.cxx \ | |||
../Widgets/Fl_LED_Button.cxx \ | |||
../Widgets/Fl_DragBar.cxx \ | |||
../../Sample.C \ | |||
NoisePlugin.C \ | |||
@@ -60,17 +57,17 @@ SOURCES = ../SpiralPlugin.C \ | |||
OBJECTS = ../SpiralPlugin.o \ | |||
../SpiralPluginGUI.o \ | |||
../../ChannelHandler.o \ | |||
../Widgets/Fl_Knob.o \ | |||
../Widgets/Fl_LED_Button.o \ | |||
../Widgets/Fl_DragBar.o \ | |||
../../Sample.o \ | |||
NoisePlugin.o \ | |||
NoisePluginGUI.o | |||
INTERFACES = | |||
UICDECLS = | |||
UICIMPLS = | |||
SRCMOC = | |||
OBJMOC = | |||
DIST = | |||
INTERFACES = | |||
UICDECLS = | |||
UICIMPLS = | |||
SRCMOC = | |||
OBJMOC = | |||
DIST = | |||
TARGET = NoisePlugin.so | |||
####### Implicit rules | |||
@@ -97,7 +94,7 @@ TARGET = NoisePlugin.so | |||
all: $(TARGET) | |||
$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) | |||
$(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) | |||
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) | |||
moc: $(SRCMOC) | |||
@@ -112,7 +109,7 @@ dist: | |||
clean: | |||
-rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) $(TARGET) | |||
-rm -f *~ core | |||
install: | |||
$(INSTALL) $(TARGET) $(libdir)/SpiralPlugins | |||
@@ -131,11 +128,12 @@ install: | |||
../SpiralPluginGUI.o: ../SpiralPluginGUI.C \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../SpiralPlugin.h \ | |||
../../Sample.h | |||
../Widgets/Fl_Knob.o: ../Widgets/Fl_Knob.cxx \ | |||
../Widgets/Fl_Knob.H | |||
../Widgets/Fl_LED_Button.o: ../Widgets/Fl_LED_Button.cxx \ | |||
../Widgets/Fl_LED_Button.H | |||
../Widgets/Fl_DragBar.o: ../Widgets/Fl_DragBar.cxx \ | |||
../Widgets/Fl_DragBar.H | |||
@@ -151,14 +149,14 @@ NoisePlugin.o: NoisePlugin.C \ | |||
../../SpiralInfo.h \ | |||
../../Sample.h \ | |||
NoisePluginGUI.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
SpiralIcon.xpm | |||
NoisePluginGUI.o: NoisePluginGUI.C \ | |||
NoisePluginGUI.h \ | |||
../Widgets/Fl_Knob.H \ | |||
../Widgets/Fl_LED_Button.H \ | |||
../SpiralPluginGUI.h \ | |||
../Widgets/Fl_DragBar.H \ | |||
NoisePlugin.h \ | |||
@@ -14,7 +14,7 @@ | |||
* 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 "NoisePluginGUI.h" | |||
#include <FL/fl_draw.h> | |||
@@ -26,22 +26,18 @@ static const int GUIBG2_COLOUR = 145; | |||
NoisePluginGUI::NoisePluginGUI(int w, int h,NoisePlugin *o,ChannelHandler *ch,const HostInfo *Info) : | |||
SpiralPluginGUI(w,h,o,ch) | |||
{ | |||
White = new Fl_Check_Button(15, 15, 55, 30, "White"); | |||
White->type(102); | |||
White->labelsize(10); | |||
White->down_box(FL_DIAMOND_DOWN_BOX); | |||
White->selection_color(GUI_COLOUR); | |||
White->set(); | |||
White->callback((Fl_Callback*)cb_White); | |||
Pink = new Fl_Check_Button(15, 35, 55, 30, "Pink"); | |||
Pink->type(102); | |||
Pink->labelsize(10); | |||
Pink->down_box(FL_DIAMOND_DOWN_BOX); | |||
Pink->selection_color(GUI_COLOUR); | |||
Pink->callback((Fl_Callback*)cb_Pink); | |||
end(); | |||
{ | |||
White = new Fl_LED_Button (15, 12, 55, 20, "White"); | |||
White->type (FL_RADIO_BUTTON); | |||
White->labelsize (10); | |||
White->set (); | |||
White->callback ((Fl_Callback*)cb_White); | |||
Pink = new Fl_LED_Button (15, 34, 55, 20, "Pink"); | |||
Pink->type (FL_RADIO_BUTTON); | |||
Pink->labelsize (10); | |||
Pink->callback ((Fl_Callback*)cb_Pink); | |||
end(); | |||
} | |||
void NoisePluginGUI::UpdateValues(SpiralPlugin *o) | |||
@@ -54,21 +50,24 @@ void NoisePluginGUI::UpdateValues(SpiralPlugin *o) | |||
case NoisePlugin::PINK : Pink->value(1); break; | |||
} | |||
} | |||
//// Callbacks //// | |||
inline void NoisePluginGUI::cb_White_i(Fl_Check_Button* o, void* v) | |||
inline void NoisePluginGUI::cb_White_i(Fl_LED_Button* o, void* v) | |||
{ m_GUICH->Set("Type",(char)NoisePlugin::WHITE); } | |||
void NoisePluginGUI::cb_White(Fl_Check_Button* o, void* v) | |||
void NoisePluginGUI::cb_White(Fl_LED_Button* o, void* v) | |||
{ ((NoisePluginGUI*)(o->parent()))->cb_White_i(o,v); } | |||
inline void NoisePluginGUI::cb_Pink_i(Fl_Check_Button* o, void* v) | |||
inline void NoisePluginGUI::cb_Pink_i(Fl_LED_Button* o, void* v) | |||
{ m_GUICH->Set("Type",(char)NoisePlugin::PINK); } | |||
void NoisePluginGUI::cb_Pink(Fl_Check_Button* o, void* v) | |||
void NoisePluginGUI::cb_Pink(Fl_LED_Button* o, void* v) | |||
{ ((NoisePluginGUI*)(o->parent()))->cb_Pink_i(o,v); } | |||
const string NoisePluginGUI::GetHelpText(const string &loc){ | |||
return string("") | |||
return string("") | |||
+ "Makes noise, white noise is just raw randomness, pink noise\n" | |||
+ "is white noise filtered to contain equal amounts of each\n" | |||
+ "frequency, it should sound more natural and be more useful\n" | |||
@@ -14,13 +14,12 @@ | |||
* 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 <FL/Fl_Check_Button.H> | |||
#include <FL/Fl_Box.H> | |||
#include <FL/Fl_Button.H> | |||
#include "../SpiralPluginGUI.h" | |||
#include "../Widgets/Fl_LED_Button.H" | |||
#include "NoisePlugin.h" | |||
#ifndef PLUGINGUI | |||
@@ -28,24 +27,18 @@ | |||
class NoisePluginGUI : public SpiralPluginGUI | |||
{ | |||
public: | |||
NoisePluginGUI(int w, int h, NoisePlugin *o,ChannelHandler *ch,const HostInfo *Info); | |||
public: | |||
NoisePluginGUI(int w, int h, NoisePlugin *o, ChannelHandler *ch, const HostInfo *Info); | |||
virtual void UpdateValues(SpiralPlugin *o); | |||
protected: | |||
const string GetHelpText(const string &loc); | |||
private: | |||
Fl_Check_Button *White; | |||
Fl_Check_Button *Pink; | |||
//// Callbacks //// | |||
inline void cb_White_i(Fl_Check_Button* o, void* v); | |||
static void cb_White(Fl_Check_Button*, void*); | |||
inline void cb_Pink_i(Fl_Check_Button* o, void* v); | |||
static void cb_Pink(Fl_Check_Button*, void*); | |||
protected: | |||
const string GetHelpText(const string &loc); | |||
private: | |||
Fl_LED_Button *White, *Pink; | |||
//// Callbacks //// | |||
inline void cb_White_i (Fl_LED_Button* o, void* v); | |||
static void cb_White (Fl_LED_Button* o, void*); | |||
inline void cb_Pink_i (Fl_LED_Button* o, void* v); | |||
static void cb_Pink (Fl_LED_Button* o, void*); | |||
}; | |||
#endif |
@@ -35,6 +35,9 @@ SpiralPluginGUI (w, h, o, ch) | |||
m_Chans = new Fl_Counter (5, 20, 40, 20, "Channels"); | |||
m_Chans->labelsize (10); | |||
m_Chans->type (FL_SIMPLE_COUNTER); | |||
m_Chans->box (FL_PLASTIC_UP_BOX); | |||
m_Chans->color (GUI_COLOUR); | |||
m_Chans->selection_color (GUI_COLOUR); | |||
m_Chans->step (1); | |||
m_Chans->value (2); | |||
m_Chans->callback ((Fl_Callback*) cb_Chans); | |||
@@ -43,6 +46,9 @@ SpiralPluginGUI (w, h, o, ch) | |||
m_Switch = new Fl_Counter (49, 20, 40, 20, "Select"); | |||
m_Switch->labelsize (10); | |||
m_Switch->type (FL_SIMPLE_COUNTER); | |||
m_Switch->box (FL_PLASTIC_UP_BOX); | |||
m_Switch->color (GUI_COLOUR); | |||
m_Switch->selection_color (GUI_COLOUR); | |||
m_Switch->step (1); | |||
m_Switch->value (1); | |||
m_Switch->callback ((Fl_Callback*) cb_Switch); | |||