| @@ -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 = | ||||