@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl -pthread | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl -pthread | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -1,4 +1,3 @@ | |||||
# Generated automatically from Makefile.in by configure. | |||||
############################################################################# | ############################################################################# | ||||
# Makefile for building LFOPlugin.so | # Makefile for building LFOPlugin.so | ||||
# Generated by tmake at 22:13, 2001/09/17 | # Generated by tmake at 22:13, 2001/09/17 | ||||
@@ -15,7 +14,7 @@ CXXFLAGS= -pipe -Wall -O3 -ffast-math -DNO_DEBUG -Wno-unused -fPIC -fPIC | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib -lfltk -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib -L/usr/X11R6/lib -lfltk -lGL -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -1,4 +1,3 @@ | |||||
# Generated automatically from Makefile.in by configure. | |||||
############################################################################# | ############################################################################# | ||||
# Makefile for building MeterPlugin.so | # Makefile for building MeterPlugin.so | ||||
############################################################################# | ############################################################################# | ||||
@@ -12,7 +11,7 @@ CXXFLAGS= -pipe -Wall -O3 -ffast-math -DNO_DEBUG -Wno-unused -fPIC -fPIC | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib -lfltk -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib -L/usr/X11R6/lib -lfltk -lGL -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -15,7 +15,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -70,10 +70,17 @@ m_Mode(PLAYM) | |||||
m_StreamDesc.TriggerUp = true; | m_StreamDesc.TriggerUp = true; | ||||
m_StreamDesc.SampleRate = 44100; | m_StreamDesc.SampleRate = 44100; | ||||
m_StreamDesc.Stereo = false; | m_StreamDesc.Stereo = false; | ||||
m_AudioCH->Register("Volume",&m_StreamDesc.Volume); | |||||
m_AudioCH->Register("Pitch",&m_StreamDesc.PitchMod,ChannelHandler::INPUT); | |||||
m_AudioCH->RegisterData("FileName",ChannelHandler::INPUT,&m_FileNameArg,sizeof(m_FileNameArg)); | |||||
m_AudioCH->Register("Time",&m_TimeArg); | |||||
m_AudioCH->Register("TimeOut",&m_TimeOut,ChannelHandler::OUTPUT); | |||||
} | } | ||||
StreamPlugin::~StreamPlugin() | StreamPlugin::~StreamPlugin() | ||||
{ | { | ||||
cerr << "I'm deleted" << endl; | |||||
} | } | ||||
PluginInfo &StreamPlugin::Initialise(const HostInfo *Host) | PluginInfo &StreamPlugin::Initialise(const HostInfo *Host) | ||||
@@ -84,11 +91,9 @@ PluginInfo &StreamPlugin::Initialise(const HostInfo *Host) | |||||
SpiralGUIType *StreamPlugin::CreateGUI() | SpiralGUIType *StreamPlugin::CreateGUI() | ||||
{ | { | ||||
m_GUI = new StreamPluginGUI(m_PluginInfo.Width, | |||||
m_PluginInfo.Height, | |||||
this,m_HostInfo); | |||||
m_GUI->hide(); | |||||
return m_GUI; | |||||
return new StreamPluginGUI(m_PluginInfo.Width, | |||||
m_PluginInfo.Height, | |||||
this,m_AudioCH,m_HostInfo); | |||||
} | } | ||||
void StreamPlugin::Execute() | void StreamPlugin::Execute() | ||||
@@ -137,8 +142,29 @@ void StreamPlugin::Execute() | |||||
m_GlobalPos+=m_StreamDesc.PitchMod+CVPitch; | m_GlobalPos+=m_StreamDesc.PitchMod+CVPitch; | ||||
} | } | ||||
if (((StreamPluginGUI*)m_GUI)->visible()) | |||||
((StreamPluginGUI*)m_GUI)->SetTime(GetTime()); | |||||
//if (((StreamPluginGUI*)m_GUI)->visible()) | |||||
// ((StreamPluginGUI*)m_GUI)->SetTime(GetTime()); | |||||
//Joe must fix this. | |||||
m_TimeOut=GetTime(); | |||||
} | |||||
} | |||||
void StreamPlugin::ExecuteCommands() | |||||
{ | |||||
if (m_AudioCH->IsCommandWaiting()) | |||||
{ | |||||
switch(m_AudioCH->GetCommand()) | |||||
{ | |||||
case (LOAD) : OpenStream(m_FileNameArg); break; | |||||
case (RESTART) : Restart(); break; | |||||
case (STOP) : Stop(); break; | |||||
case (PLAY) : Play(); break; | |||||
case (HALF) : m_StreamDesc.PitchMod/=2; break; | |||||
case (RESET) : m_StreamDesc.PitchMod=1; break; | |||||
case (DOUBLE) : m_StreamDesc.PitchMod*=2; break; | |||||
case (NUDGE) : Nudge(); break; | |||||
case (SET_TIME) : SetTime(m_TimeArg); break; | |||||
} | |||||
} | } | ||||
} | } | ||||
@@ -195,9 +221,10 @@ void StreamPlugin::OpenStream(const string &Name) | |||||
if (m_StreamDesc.Stereo) | if (m_StreamDesc.Stereo) | ||||
{ | { | ||||
m_StreamDesc.Pitch*=2; | m_StreamDesc.Pitch*=2; | ||||
((StreamPluginGUI*)m_GUI)->SetMaxTime(GetLength()); | |||||
//((StreamPluginGUI*)m_GUI)->SetMaxTime(GetLength()); | |||||
} | } | ||||
else ((StreamPluginGUI*)m_GUI)->SetMaxTime(GetLength()/2); | |||||
//else ((StreamPluginGUI*)m_GUI)->SetMaxTime(GetLength()/2); | |||||
//Joe this must use the chanel handler | |||||
} | } | ||||
@@ -44,12 +44,15 @@ class StreamPlugin : public SpiralPlugin | |||||
public: | public: | ||||
enum Mode{PLAYM,STOPM}; | enum Mode{PLAYM,STOPM}; | ||||
enum GUICommands{LOAD,RESTART,STOP,PLAY,HALF,RESET,DOUBLE,NUDGE,SET_TIME}; | |||||
StreamPlugin(); | StreamPlugin(); | ||||
virtual ~StreamPlugin(); | virtual ~StreamPlugin(); | ||||
virtual PluginInfo &Initialise(const HostInfo *Host); | virtual PluginInfo &Initialise(const HostInfo *Host); | ||||
virtual SpiralGUIType *CreateGUI(); | virtual SpiralGUIType *CreateGUI(); | ||||
virtual void Execute(); | virtual void Execute(); | ||||
virtual void ExecuteCommands(); | |||||
virtual void StreamOut(ostream &s); | virtual void StreamOut(ostream &s); | ||||
virtual void StreamIn(istream &s); | virtual void StreamIn(istream &s); | ||||
@@ -85,6 +88,10 @@ private: | |||||
float m_GlobalPos; | float m_GlobalPos; | ||||
float m_Pitch; | float m_Pitch; | ||||
Mode m_Mode; | Mode m_Mode; | ||||
char m_FileNameArg[256]; | |||||
float m_TimeArg; | |||||
float m_TimeOut; | |||||
}; | }; | ||||
#endif | #endif |
@@ -26,15 +26,21 @@ static const int GUIBG_COLOUR = 144; | |||||
static const int GUIBG2_COLOUR = 145; | static const int GUIBG2_COLOUR = 145; | ||||
char PitchLabel[256]; | char PitchLabel[256]; | ||||
bool StreamPluginGUI::TimerSet=false; | |||||
vector<StreamPluginGUI*> StreamPluginGUI::PluginList; | |||||
//////////////////////////////////////////// | //////////////////////////////////////////// | ||||
StreamPluginGUI::StreamPluginGUI(int w, int h,StreamPlugin *o,const HostInfo *Info) : | |||||
SpiralPluginGUI(w,h,o) | |||||
StreamPluginGUI::StreamPluginGUI(int w, int h,StreamPlugin *o,ChannelHandler *ch,const HostInfo *Info) : | |||||
SpiralPluginGUI(w,h,o,ch) | |||||
{ | { | ||||
m_Plugin=o; | |||||
StartTimer(this); | |||||
int Width=20; | int Width=20; | ||||
int Height=100; | int Height=100; | ||||
//What are Width and Height for. | |||||
m_PitchValue=1.0f; | |||||
m_Load = new Fl_Button(2, 130, 30, 30, "Load"); | m_Load = new Fl_Button(2, 130, 30, 30, "Load"); | ||||
m_Load->labelsize(9); | m_Load->labelsize(9); | ||||
@@ -158,8 +164,17 @@ SpiralPluginGUI(w,h,o) | |||||
end(); | end(); | ||||
} | } | ||||
void StreamPluginGUI::SetTime(float t) | |||||
StreamPluginGUI::~StreamPluginGUI() | |||||
{ | |||||
cerr << "~StreamPluginGUI" << endl; | |||||
StopTimer(this); | |||||
} | |||||
void StreamPluginGUI::SetTime() | |||||
{ | { | ||||
cerr << "foo" << endl; | |||||
float t=m_GUICH->GetFloat("TimeOut"); | |||||
m_Pos->value(t); | m_Pos->value(t); | ||||
m_Display[5]->value((int)(t*100)%10); | m_Display[5]->value((int)(t*100)%10); | ||||
@@ -174,11 +189,13 @@ void StreamPluginGUI::SetTime(float t) | |||||
} | } | ||||
void StreamPluginGUI::UpdateValues() | |||||
void StreamPluginGUI::UpdateValues(SpiralPlugin *o) | |||||
{ | { | ||||
m_Volume->value(m_Plugin->GetVolume()); | |||||
m_Pitch->value(m_Plugin->GetPitch()+10); | |||||
m_Loop->value(m_Plugin->GetLoop()); | |||||
StreamPlugin *Plugin = (StreamPlugin*)o; | |||||
m_Volume->value(Plugin->GetVolume()); | |||||
m_Pitch->value(Plugin->GetPitch()+10); | |||||
m_Loop->value(Plugin->GetLoop()); | |||||
} | } | ||||
inline void StreamPluginGUI::cb_Load_i(Fl_Button* o, void* v) | inline void StreamPluginGUI::cb_Load_i(Fl_Button* o, void* v) | ||||
@@ -187,33 +204,36 @@ inline void StreamPluginGUI::cb_Load_i(Fl_Button* o, void* v) | |||||
if (fn && fn!='\0') | if (fn && fn!='\0') | ||||
{ | { | ||||
m_Plugin->OpenStream(fn); | |||||
strcpy(m_TextBuf,fn); | |||||
m_GUICH->Set("FileName",m_TextBuf); | |||||
m_GUICH->SetCommand(StreamPlugin::LOAD); | |||||
} | } | ||||
} | } | ||||
void StreamPluginGUI::cb_Load(Fl_Button* o, void* v) | void StreamPluginGUI::cb_Load(Fl_Button* o, void* v) | ||||
{ ((StreamPluginGUI*)(o->parent()))->cb_Load_i(o,v);} | { ((StreamPluginGUI*)(o->parent()))->cb_Load_i(o,v);} | ||||
inline void StreamPluginGUI::cb_Volume_i(Fl_Knob* o, void* v) | inline void StreamPluginGUI::cb_Volume_i(Fl_Knob* o, void* v) | ||||
{ m_Plugin->SetVolume(o->value()); } | |||||
{ m_GUICH->Set("Volume",(float)o->value()); } | |||||
void StreamPluginGUI::cb_Volume(Fl_Knob* o, void* v) | void StreamPluginGUI::cb_Volume(Fl_Knob* o, void* v) | ||||
{ ((StreamPluginGUI*)(o->parent()))->cb_Volume_i(o,v);} | { ((StreamPluginGUI*)(o->parent()))->cb_Volume_i(o,v);} | ||||
inline void StreamPluginGUI::cb_Pitch_i(Fl_Slider* o, void* v) | inline void StreamPluginGUI::cb_Pitch_i(Fl_Slider* o, void* v) | ||||
{ | { | ||||
m_Plugin->SetPitch(o->value()-10); | |||||
m_GUICH->Set("Pitch",(float)o->value()-10); | |||||
sprintf(PitchLabel,"%1.3f ",o->value()-10); | sprintf(PitchLabel,"%1.3f ",o->value()-10); | ||||
m_Pitch->label(PitchLabel); | m_Pitch->label(PitchLabel); | ||||
m_PitchValue=o->value()-10; | |||||
} | } | ||||
void StreamPluginGUI::cb_Pitch(Fl_Slider* o, void* v) | void StreamPluginGUI::cb_Pitch(Fl_Slider* o, void* v) | ||||
{ ((StreamPluginGUI*)(o->parent()))->cb_Pitch_i(o,v);} | { ((StreamPluginGUI*)(o->parent()))->cb_Pitch_i(o,v);} | ||||
inline void StreamPluginGUI::cb_Loop_i(Fl_Button* o, void* v) | |||||
inline void StreamPluginGUI::cb_Loop_i(Fl_Button* o, void* v) //Why is this function named so. | |||||
{ | { | ||||
float p=m_Plugin->GetPitch()*2; | |||||
m_Plugin->SetPitch(p); | |||||
sprintf(PitchLabel,"%1.3f ",p); | |||||
m_PitchValue*=2.0f; | |||||
m_GUICH->SetCommand(StreamPlugin::DOUBLE); | |||||
sprintf(PitchLabel,"%1.3f ",m_PitchValue); | |||||
m_Pitch->label(PitchLabel); | m_Pitch->label(PitchLabel); | ||||
m_Pitch->value(p+10); | |||||
m_Pitch->value(m_PitchValue+10); | |||||
redraw(); | redraw(); | ||||
} | } | ||||
void StreamPluginGUI::cb_Loop(Fl_Button* o, void* v) | void StreamPluginGUI::cb_Loop(Fl_Button* o, void* v) | ||||
@@ -221,37 +241,38 @@ void StreamPluginGUI::cb_Loop(Fl_Button* o, void* v) | |||||
inline void StreamPluginGUI::cb_Div_i(Fl_Button* o, void* v) | inline void StreamPluginGUI::cb_Div_i(Fl_Button* o, void* v) | ||||
{ | { | ||||
float p=m_Plugin->GetPitch()/2.0f; | |||||
m_Plugin->SetPitch(p); | |||||
sprintf(PitchLabel,"%1.3f ",p); | |||||
m_PitchValue/=2.0f; | |||||
m_GUICH->SetCommand(StreamPlugin::HALF); | |||||
sprintf(PitchLabel,"%1.3f ",m_PitchValue); | |||||
m_Pitch->label(PitchLabel); | m_Pitch->label(PitchLabel); | ||||
m_Pitch->value(p+10); | |||||
m_Pitch->value(m_PitchValue+10); | |||||
redraw(); | redraw(); | ||||
} | } | ||||
void StreamPluginGUI::cb_Div(Fl_Button* o, void* v) | void StreamPluginGUI::cb_Div(Fl_Button* o, void* v) | ||||
{ ((StreamPluginGUI*)(o->parent()))->cb_Div_i(o,v);} | { ((StreamPluginGUI*)(o->parent()))->cb_Div_i(o,v);} | ||||
inline void StreamPluginGUI::cb_ToStart_i(Fl_Button* o, void* v) | inline void StreamPluginGUI::cb_ToStart_i(Fl_Button* o, void* v) | ||||
{ m_Plugin->Restart(); } | |||||
{ m_GUICH->SetCommand(StreamPlugin::RESTART); } | |||||
void StreamPluginGUI::cb_ToStart(Fl_Button* o, void* v) | void StreamPluginGUI::cb_ToStart(Fl_Button* o, void* v) | ||||
{ ((StreamPluginGUI*)(o->parent()))->cb_ToStart_i(o,v);} | { ((StreamPluginGUI*)(o->parent()))->cb_ToStart_i(o,v);} | ||||
inline void StreamPluginGUI::cb_Stop_i(Fl_Button* o, void* v) | inline void StreamPluginGUI::cb_Stop_i(Fl_Button* o, void* v) | ||||
{ m_Plugin->Stop(); } | |||||
{ m_GUICH->SetCommand(StreamPlugin::STOP); } | |||||
void StreamPluginGUI::cb_Stop(Fl_Button* o, void* v) | void StreamPluginGUI::cb_Stop(Fl_Button* o, void* v) | ||||
{ ((StreamPluginGUI*)(o->parent()))->cb_Stop_i(o,v);} | { ((StreamPluginGUI*)(o->parent()))->cb_Stop_i(o,v);} | ||||
inline void StreamPluginGUI::cb_Play_i(Fl_Button* o, void* v) | inline void StreamPluginGUI::cb_Play_i(Fl_Button* o, void* v) | ||||
{ m_Plugin->Play(); } | |||||
{ m_GUICH->SetCommand(StreamPlugin::PLAY); } | |||||
void StreamPluginGUI::cb_Play(Fl_Button* o, void* v) | void StreamPluginGUI::cb_Play(Fl_Button* o, void* v) | ||||
{ ((StreamPluginGUI*)(o->parent()))->cb_Play_i(o,v);} | { ((StreamPluginGUI*)(o->parent()))->cb_Play_i(o,v);} | ||||
inline void StreamPluginGUI::cb_Reset_i(Fl_Button* o, void* v) | inline void StreamPluginGUI::cb_Reset_i(Fl_Button* o, void* v) | ||||
{ | { | ||||
m_Plugin->SetPitch(1); | |||||
m_GUICH->SetCommand(StreamPlugin::RESET); | |||||
sprintf(PitchLabel,"%1.3f ",1.0); | sprintf(PitchLabel,"%1.3f ",1.0); | ||||
m_Pitch->label(PitchLabel); | m_Pitch->label(PitchLabel); | ||||
m_Pitch->value(11); | m_Pitch->value(11); | ||||
m_PitchValue=1.0f; | |||||
redraw(); | redraw(); | ||||
} | } | ||||
void StreamPluginGUI::cb_Reset(Fl_Button* o, void* v) | void StreamPluginGUI::cb_Reset(Fl_Button* o, void* v) | ||||
@@ -259,13 +280,50 @@ void StreamPluginGUI::cb_Reset(Fl_Button* o, void* v) | |||||
inline void StreamPluginGUI::cb_Nudge_i(Fl_Button* o, void* v) | inline void StreamPluginGUI::cb_Nudge_i(Fl_Button* o, void* v) | ||||
{ | { | ||||
m_Plugin->Nudge(); | |||||
m_GUICH->SetCommand(StreamPlugin::NUDGE); | |||||
} | } | ||||
void StreamPluginGUI::cb_Nudge(Fl_Button* o, void* v) | void StreamPluginGUI::cb_Nudge(Fl_Button* o, void* v) | ||||
{ ((StreamPluginGUI*)(o->parent()))->cb_Nudge_i(o,v);} | { ((StreamPluginGUI*)(o->parent()))->cb_Nudge_i(o,v);} | ||||
inline void StreamPluginGUI::cb_Pos_i(Fl_Slider* o, void* v) | inline void StreamPluginGUI::cb_Pos_i(Fl_Slider* o, void* v) | ||||
{ m_Plugin->SetTime(o->value()); } | |||||
{ | |||||
m_GUICH->Set("Time",(float)o->value()); | |||||
m_GUICH->SetCommand(StreamPlugin::SET_TIME); | |||||
} | |||||
void StreamPluginGUI::cb_Pos(Fl_Slider* o, void* v) | void StreamPluginGUI::cb_Pos(Fl_Slider* o, void* v) | ||||
{ ((StreamPluginGUI*)(o->parent()))->cb_Pos_i(o,v);} | { ((StreamPluginGUI*)(o->parent()))->cb_Pos_i(o,v);} | ||||
//The timer stuff | |||||
#define TIME_OUT_DURATION 0.01 | |||||
//This is temparary, should use a variable, and let it be set from the command line ore something. | |||||
void StreamPluginGUI::StartTimer(StreamPluginGUI* p) | |||||
{ | |||||
if (!TimerSet) | |||||
{ | |||||
Fl::add_timeout(TIME_OUT_DURATION,&StreamPluginGUI::TimerCallBack); | |||||
TimerSet=True; | |||||
} | |||||
PluginList.push_back(p); | |||||
} | |||||
void StreamPluginGUI::StopTimer(StreamPluginGUI* p) | |||||
{ | |||||
cerr << "StopTimer" << endl; | |||||
for (vector<StreamPluginGUI*>::iterator i=PluginList.begin();i!=PluginList.end();i++) | |||||
if ((*i)==p) | |||||
i=PluginList.erase(i); | |||||
} | |||||
//If Spiral synth modular unloaded the .so file this is in, the timeout | |||||
//would probably cause a problem | |||||
void StreamPluginGUI::TimerCallBack(void* x) | |||||
{ | |||||
/*for(vector<const StreamPluginGUI*>::iterator i=PluginList.begin(); | |||||
i!=PluginList.end();i++) | |||||
{*/ | |||||
for (vector<StreamPluginGUI*>::iterator i=PluginList.begin();i!=PluginList.end();i++) | |||||
(*i)->SetTime(); | |||||
Fl::add_timeout(TIME_OUT_DURATION,&StreamPluginGUI::TimerCallBack); | |||||
} |
@@ -32,18 +32,40 @@ | |||||
#ifndef MixerGUI | #ifndef MixerGUI | ||||
#define MixerGUI | #define MixerGUI | ||||
class StreamPluginGUI; | |||||
/*struct Compare_thingy | |||||
{ | |||||
bool operator() (const StreamPluginGUI* s1,const StreamPluginGUI* s2) const | |||||
{ | |||||
return s1<s2; | |||||
} | |||||
};*/ | |||||
class StreamPluginGUI : public SpiralPluginGUI | class StreamPluginGUI : public SpiralPluginGUI | ||||
{ | { | ||||
public: | public: | ||||
StreamPluginGUI(int w, int h, StreamPlugin *o,const HostInfo *Info); | |||||
StreamPluginGUI(int w, int h, StreamPlugin *o,ChannelHandler *ch,const HostInfo *Info); | |||||
virtual ~StreamPluginGUI(); | |||||
virtual void UpdateValues(); | |||||
virtual SpiralPlugin* GetPlugin() { return m_Plugin; } | |||||
void SetTime(float t); | |||||
virtual void UpdateValues(SpiralPlugin *o); | |||||
void SetTime(); | |||||
void SetMaxTime(float t) { m_Pos->maximum(t); } | void SetMaxTime(float t) { m_Pos->maximum(t); } | ||||
StreamPlugin *m_Plugin; | |||||
//Stuff for the timer | |||||
static bool TimerSet; | |||||
/*static struct Compare_thingy | |||||
{ | |||||
bool operator() (const StreamPluginGUI* s1,const StreamPluginGUI* s2) const | |||||
{ | |||||
return s1<s2; | |||||
} | |||||
};*/ | |||||
//static set<const StreamPluginGUI*,Compare_thingy> PluginList; | |||||
static vector<StreamPluginGUI*> PluginList; | |||||
static void StartTimer(StreamPluginGUI* p); | |||||
static void StopTimer(StreamPluginGUI* p); | |||||
static void TimerCallBack(void* x); | |||||
private: | private: | ||||
Fl_Button* m_Load; | Fl_Button* m_Load; | ||||
@@ -62,6 +84,10 @@ private: | |||||
Fl_SevenSeg* m_Display[6]; | Fl_SevenSeg* m_Display[6]; | ||||
Fl_Slider* m_Pos; | Fl_Slider* m_Pos; | ||||
char m_TextBuf[256]; | |||||
float m_PitchValue; | |||||
//// Callbacks //// | //// Callbacks //// | ||||
inline void cb_Load_i(Fl_Button* o, void* v); | inline void cb_Load_i(Fl_Button* o, void* v); | ||||
@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||
@@ -14,7 +14,7 @@ CXXFLAGS= @CXXFLAGS@ | |||||
INCPATH = -I/usr/X11R6/include | INCPATH = -I/usr/X11R6/include | ||||
LINK = g++ -shared | LINK = g++ -shared | ||||
LFLAGS = | LFLAGS = | ||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -lm -ldl | |||||
LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
MOC = moc | MOC = moc | ||||
UIC = | UIC = | ||||