| @@ -22,16 +22,15 @@ | |||||
| #include "SpiralIcon.xpm" | #include "SpiralIcon.xpm" | ||||
| extern "C" { | extern "C" { | ||||
| SpiralPlugin* SpiralPlugin_CreateInstance() { return new LFOPlugin; } | SpiralPlugin* SpiralPlugin_CreateInstance() { return new LFOPlugin; } | ||||
| char** SpiralPlugin_GetIcon() { return SpiralIcon_xpm; } | char** SpiralPlugin_GetIcon() { return SpiralIcon_xpm; } | ||||
| int SpiralPlugin_GetID() { return 124; } | int SpiralPlugin_GetID() { return 124; } | ||||
| string SpiralPlugin_GetGroupName() | |||||
| { | |||||
| return "Oscillators"; | |||||
| } | |||||
| string SpiralPlugin_GetGroupName() { return "Oscillators"; } | |||||
| } | } | ||||
| /////////////////////////////////////////////////////// | /////////////////////////////////////////////////////// | ||||
| @@ -50,9 +49,8 @@ m_TableLength (DEFAULT_TABLE_LEN) { | |||||
| m_PluginInfo.PortTips.push_back ("Output"); | m_PluginInfo.PortTips.push_back ("Output"); | ||||
| m_PluginInfo.PortTips.push_back ("'Cosine' Output"); | m_PluginInfo.PortTips.push_back ("'Cosine' Output"); | ||||
| m_PluginInfo.PortTips.push_back ("Inverted Output"); | m_PluginInfo.PortTips.push_back ("Inverted Output"); | ||||
| m_AudioCH->Register("Freq",&m_Freq); | |||||
| m_AudioCH->Register("Type",(char*)&m_Type); | |||||
| m_AudioCH->Register("Freq", &m_Freq); | |||||
| m_AudioCH->Register("Type", (char*)&m_Type); | |||||
| } | } | ||||
| LFOPlugin::~LFOPlugin() { | LFOPlugin::~LFOPlugin() { | ||||
| @@ -34,17 +34,13 @@ class LFOPlugin : public SpiralPlugin { | |||||
| virtual void Execute(); | virtual void Execute(); | ||||
| virtual void StreamOut (ostream &s); | virtual void StreamOut (ostream &s); | ||||
| virtual void StreamIn (istream &s); | virtual void StreamIn (istream &s); | ||||
| typedef char Type; | |||||
| enum {SINE, TRIANGLE, SQUARE, SAW}; | |||||
| //typedef char Type; | |||||
| enum Type {SINE, TRIANGLE, SQUARE, SAW}; | |||||
| void WriteWaves(); | void WriteWaves(); | ||||
| void NoteTrigger (int V, int s, int v); | void NoteTrigger (int V, int s, int v); | ||||
| float GetFreq() { return m_Freq; } | float GetFreq() { return m_Freq; } | ||||
| Type GetType() { return m_Type; } | Type GetType() { return m_Type; } | ||||
| private: | private: | ||||
| float AdjustPos (float pos); | float AdjustPos (float pos); | ||||
| // Voice specific parameter | // Voice specific parameter | ||||
| int m_Note; | int m_Note; | ||||
| @@ -169,7 +169,7 @@ void LFOPluginGUI::cb_NumFreq (Fl_Knob* o, void* v) { | |||||
| // Callbacks for waveform buttons | // Callbacks for waveform buttons | ||||
| inline void LFOPluginGUI::cb_Sine_i (Fl_LED_Button* o, void* v) { | inline void LFOPluginGUI::cb_Sine_i (Fl_LED_Button* o, void* v) { | ||||
| m_GUICH->Set("Type", (char)(LFOPlugin::SINE)); | |||||
| m_GUICH->Set("Type", LFOPlugin::SINE); | |||||
| } | } | ||||
| void LFOPluginGUI::cb_Sine(Fl_LED_Button* o, void* v) { | void LFOPluginGUI::cb_Sine(Fl_LED_Button* o, void* v) { | ||||
| ((LFOPluginGUI*)(o->parent()))->cb_Sine_i (o, v); | ((LFOPluginGUI*)(o->parent()))->cb_Sine_i (o, v); | ||||
| @@ -177,7 +177,7 @@ void LFOPluginGUI::cb_Sine(Fl_LED_Button* o, void* v) { | |||||
| inline void LFOPluginGUI::cb_Tri_i (Fl_LED_Button* o, void* v) { | inline void LFOPluginGUI::cb_Tri_i (Fl_LED_Button* o, void* v) { | ||||
| m_GUICH->Set("Type",(char)(LFOPlugin::TRIANGLE)); | |||||
| m_GUICH->Set("Type", LFOPlugin::TRIANGLE); | |||||
| } | } | ||||
| void LFOPluginGUI::cb_Tri (Fl_LED_Button* o, void* v) { | void LFOPluginGUI::cb_Tri (Fl_LED_Button* o, void* v) { | ||||
| ((LFOPluginGUI*)(o->parent()))->cb_Tri_i (o, v); | ((LFOPluginGUI*)(o->parent()))->cb_Tri_i (o, v); | ||||
| @@ -185,7 +185,7 @@ void LFOPluginGUI::cb_Tri (Fl_LED_Button* o, void* v) { | |||||
| inline void LFOPluginGUI::cb_Square_i (Fl_LED_Button* o, void* v) { | inline void LFOPluginGUI::cb_Square_i (Fl_LED_Button* o, void* v) { | ||||
| m_GUICH->Set("Type",(char)(LFOPlugin::SQUARE)); | |||||
| m_GUICH->Set("Type", LFOPlugin::SQUARE); | |||||
| } | } | ||||
| void LFOPluginGUI::cb_Square (Fl_LED_Button* o, void* v) { | void LFOPluginGUI::cb_Square (Fl_LED_Button* o, void* v) { | ||||
| ((LFOPluginGUI*)(o->parent()))->cb_Square_i (o, v); | ((LFOPluginGUI*)(o->parent()))->cb_Square_i (o, v); | ||||
| @@ -193,7 +193,7 @@ void LFOPluginGUI::cb_Square (Fl_LED_Button* o, void* v) { | |||||
| inline void LFOPluginGUI::cb_Saw_i (Fl_LED_Button* o, void* v) { | inline void LFOPluginGUI::cb_Saw_i (Fl_LED_Button* o, void* v) { | ||||
| m_GUICH->Set("Type",(LFOPlugin::SAW)); | |||||
| m_GUICH->Set("Type", LFOPlugin::SAW); | |||||
| } | } | ||||
| void LFOPluginGUI::cb_Saw (Fl_LED_Button* o, void* v) { | void LFOPluginGUI::cb_Saw (Fl_LED_Button* o, void* v) { | ||||
| ((LFOPluginGUI*)(o->parent()))->cb_Saw_i (o, v); | ((LFOPluginGUI*)(o->parent()))->cb_Saw_i (o, v); | ||||
| @@ -16,8 +16,8 @@ | |||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | */ | ||||
| #ifndef LFOGUI | |||||
| #define LFOGUI | |||||
| #ifndef LFO_GUI_H | |||||
| #define LFO_GUI_H | |||||
| #include <FL/Fl_Pixmap.H> | #include <FL/Fl_Pixmap.H> | ||||
| #include <FL/Fl_Tabs.H> | #include <FL/Fl_Tabs.H> | ||||
| @@ -29,10 +29,10 @@ | |||||
| class LFOPluginGUI : public SpiralPluginGUI { | class LFOPluginGUI : public SpiralPluginGUI { | ||||
| public: | public: | ||||
| LFOPluginGUI(int w, int h, LFOPlugin *o,ChannelHandler *ch,const HostInfo *Info); | |||||
| virtual void UpdateValues(SpiralPlugin *o); | |||||
| LFOPluginGUI (int w, int h, LFOPlugin *o, ChannelHandler *ch, const HostInfo *Info); | |||||
| virtual void UpdateValues (SpiralPlugin *o); | |||||
| protected: | protected: | ||||
| const string GetHelpText(const string &loc); | |||||
| const string GetHelpText (const string &loc); | |||||
| private: | private: | ||||
| Fl_Tabs *m_TheTabs; | Fl_Tabs *m_TheTabs; | ||||
| Fl_Group *m_CtlGroup, *m_NumGroup; | Fl_Group *m_CtlGroup, *m_NumGroup; | ||||
| @@ -27,13 +27,13 @@ char** SpiralPlugin_GetIcon() { return SpiralIcon_xpm; } | |||||
| int SpiralPlugin_GetID() { return 123; } | int SpiralPlugin_GetID() { return 123; } | ||||
| string SpiralPlugin_GetGroupName() | |||||
| { | |||||
| return "Control"; | |||||
| } | |||||
| string SpiralPlugin_GetGroupName() { return "Control"; } | |||||
| } | } | ||||
| MeterPlugin::MeterPlugin() { | |||||
| MeterPlugin::MeterPlugin(): | |||||
| m_Data (NULL) | |||||
| { | |||||
| m_PluginInfo.Name = "Meter"; | m_PluginInfo.Name = "Meter"; | ||||
| m_PluginInfo.Width = 230; | m_PluginInfo.Width = 230; | ||||
| m_PluginInfo.Height = 128; | m_PluginInfo.Height = 128; | ||||
| @@ -41,7 +41,6 @@ MeterPlugin::MeterPlugin() { | |||||
| m_PluginInfo.NumOutputs = 1; | m_PluginInfo.NumOutputs = 1; | ||||
| m_PluginInfo.PortTips.push_back ("Input"); | m_PluginInfo.PortTips.push_back ("Input"); | ||||
| m_PluginInfo.PortTips.push_back ("Output"); | m_PluginInfo.PortTips.push_back ("Output"); | ||||
| m_Data = NULL; | |||||
| } | } | ||||
| MeterPlugin::~MeterPlugin() { | MeterPlugin::~MeterPlugin() { | ||||
| @@ -16,11 +16,10 @@ | |||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | */ | ||||
| #include "../SpiralPlugin.h" | |||||
| //#include <FL/Fl_Pixmap.H> | |||||
| #ifndef MIXER_PLUGIN_H | |||||
| #define MIXER_PLUGIN_H | |||||
| #ifndef MixerPLUGIN | |||||
| #define MixerPLUGIN | |||||
| #include "../SpiralPlugin.h" | |||||
| static const int MAX_CHANNELS = 16; | static const int MAX_CHANNELS = 16; | ||||
| @@ -0,0 +1,162 @@ | |||||
| ############################################################################# | |||||
| # Makefile for building MousePlugin.so | |||||
| ############################################################################# | |||||
| ####### Compiler, tools and options | |||||
| CC = gcc | |||||
| CXX = g++ | |||||
| CFLAGS = @CFLAGS@ | |||||
| CXXFLAGS= @CXXFLAGS@ | |||||
| INCPATH = -I/usr/X11R6/include | |||||
| LINK = g++ -shared | |||||
| LFLAGS = | |||||
| LIBS = -L/usr/X11R6/lib @FLTK_LIBS@ -lGL -lXext -lX11 -ldl | |||||
| MOC = moc | |||||
| UIC = | |||||
| TAR = tar -cf | |||||
| GZIP = gzip -9f | |||||
| INSTALL = @INSTALL@ | |||||
| ###### Autoconf variables | |||||
| prefix = @prefix@ | |||||
| exec_prefix = @exec_prefix@ | |||||
| bindir = @bindir@ | |||||
| sbindir = @sbindir@ | |||||
| libexecdir = @libexecdir@ | |||||
| datadir = @datadir@ | |||||
| sysconfdir = @sysconfdir@ | |||||
| sharedstatedir = @sharedstatedir@ | |||||
| localstatedir = @localstatedir@ | |||||
| libdir = @libdir@ | |||||
| infodir = @infodir@ | |||||
| mandir = @mandir@ | |||||
| ####### Files | |||||
| HEADERS = ../SpiralPlugin.h \ | |||||
| ../SpiralPluginGUI.h \ | |||||
| MousePlugin.h \ | |||||
| MousePluginGUI.h \ | |||||
| ../../Sample.h \ | |||||
| ../../ChannelHandler.h \ | |||||
| ../../../GUI/Widgets/SpiralGUI.H \ | |||||
| scratch.h | |||||
| SOURCES = ../SpiralPlugin.C \ | |||||
| ../SpiralPluginGUI.C \ | |||||
| MousePlugin.C \ | |||||
| MousePluginGUI.C \ | |||||
| ../../Sample.C \ | |||||
| ../../ChannelHandler.C \ | |||||
| ../../../GUI/Widgets/SpiralGUI.C \ | |||||
| scratch.C | |||||
| OBJECTS = ../SpiralPlugin.o \ | |||||
| ../SpiralPluginGUI.o \ | |||||
| MousePlugin.o \ | |||||
| MousePluginGUI.o \ | |||||
| ../../Sample.o \ | |||||
| ../../ChannelHandler.o \ | |||||
| ../../../GUI/Widgets/SpiralGUI.o \ | |||||
| scratch.o | |||||
| INTERFACES = | |||||
| UICDECLS = | |||||
| UICIMPLS = | |||||
| SRCMOC = | |||||
| OBJMOC = | |||||
| DIST = | |||||
| TARGET = MousePlugin.so | |||||
| ####### Implicit rules | |||||
| .SUFFIXES: .cpp .cxx .cc .C .c | |||||
| .cpp.o: | |||||
| $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< | |||||
| .cxx.o: | |||||
| $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< | |||||
| .cc.o: | |||||
| $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< | |||||
| .C.o: | |||||
| $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $< | |||||
| .c.o: | |||||
| $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $< | |||||
| ####### Build rules | |||||
| all: $(TARGET) | |||||
| $(TARGET): $(UICDECLS) $(OBJECTS) $(OBJMOC) | |||||
| $(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJMOC) $(LIBS) | |||||
| moc: $(SRCMOC) | |||||
| dist: | |||||
| $(TAR) MousePlugin.tar $(SOURCES) $(HEADERS) $(INTERFACES) $(DIST) | |||||
| $(GZIP) MousePlugin.tar | |||||
| clean: | |||||
| -rm -f $(OBJECTS) $(OBJMOC) $(SRCMOC) $(UICIMPLS) $(UICDECLS) $(TARGET) | |||||
| -rm -f *~ core | |||||
| install: | |||||
| $(INSTALL) $(TARGET) $(libdir)/SpiralPlugins | |||||
| ####### Sub-libraries | |||||
| ###### Combined headers | |||||
| ####### Compile | |||||
| ../SpiralPlugin.o: ../SpiralPlugin.C \ | |||||
| ../SpiralPlugin.h \ | |||||
| ../../Sample.h | |||||
| ../SpiralPluginGUI.o: ../SpiralPluginGUI.C \ | |||||
| ../SpiralPlugin.h \ | |||||
| ../SpiralPluginGUI.h \ | |||||
| ../../../GUI/Widgets/SpiralGUI.H \ | |||||
| ../../Sample.h | |||||
| ../../../GUI/Widgets/SpiralGUI.o: ../../../GUI/Widgets/SpiralGUI.C \ | |||||
| ../../../GUI/Widgets/SpiralGUI.H | |||||
| ../../Sample.o: ../../Sample.C \ | |||||
| ../../Sample.h \ | |||||
| ../../SpiralInfo.h | |||||
| MousePlugin.o: MousePlugin.C \ | |||||
| MousePlugin.h \ | |||||
| MousePluginGUI.h \ | |||||
| ../SpiralPlugin.h \ | |||||
| ../SpiralPluginGUI.h \ | |||||
| ../../SpiralInfo.h \ | |||||
| ../../Sample.h \ | |||||
| scratch.h \ | |||||
| SpiralIcon.xpm | |||||
| MousePluginGUI.o: MousePluginGUI.C \ | |||||
| MousePluginGUI.h \ | |||||
| MousePlugin.h \ | |||||
| ../SpiralPluginGUI.h \ | |||||
| ../SpiralPlugin.h \ | |||||
| ../../../GUI/Widgets/SpiralGUI.H \ | |||||
| ../../SpiralInfo.h \ | |||||
| ../../Sample.h \ | |||||
| scratch.h | |||||
| ../../ChannelHandler.o: ../../ChannelHandler.C \ | |||||
| ../../ChannelHandler.h | |||||
| scratch.o: scratch.C \ | |||||
| scratch.h | |||||
| @@ -0,0 +1,123 @@ | |||||
| /* MousePlugin | |||||
| * Copyleft (C) 2002 Dan Bethell <dan@pawfal.org> | |||||
| * Dave Griffiths <dave@pawfal.org> | |||||
| * | |||||
| * This program is free software; you can redistribute it and/or modify | |||||
| * it under the terms of the GNU General Public License as published by | |||||
| * the Free Software Foundation; either version 2 of the License, or | |||||
| * (at your option) any later version. | |||||
| * | |||||
| * This program is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| * GNU General Public License for more details. | |||||
| * | |||||
| * 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. | |||||
| */ | |||||
| #define SCRATCH_DEVICE "/dev/ttyS1" | |||||
| #include "MousePlugin.h" | |||||
| #include "MousePluginGUI.h" | |||||
| #include "SpiralIcon.xpm" | |||||
| extern "C" { | |||||
| SpiralPlugin* SpiralPlugin_CreateInstance() { return new MousePlugin; } | |||||
| char** SpiralPlugin_GetIcon() { return SpiralIcon_xpm; } | |||||
| int SpiralPlugin_GetID() { return 300; } | |||||
| string SpiralPlugin_GetGroupName() { return "InputOutput"; } | |||||
| } | |||||
| /////////////////////////////////////////////////////// | |||||
| //static const HostInfo* host; | |||||
| MousePluginSingleton* MousePluginSingleton::m_Singleton = NULL; | |||||
| int MousePlugin::m_RefCount=0; | |||||
| /////////////////////////////////////////////////////// | |||||
| MousePluginSingleton::MousePluginSingleton() { | |||||
| scr = new scratch(SCRATCH_DEVICE); // create scratch object | |||||
| } | |||||
| MousePluginSingleton::~MousePluginSingleton() { | |||||
| if (scr!=NULL) { | |||||
| delete scr; | |||||
| } | |||||
| } | |||||
| /////////////////////////////////////////////////////// | |||||
| MousePlugin::MousePlugin(): | |||||
| m_Data (0.0) | |||||
| { | |||||
| m_RefCount++; | |||||
| m_PluginInfo.Name = "Mouse"; | |||||
| m_PluginInfo.Width = 70; | |||||
| m_PluginInfo.Height = 125; | |||||
| m_PluginInfo.NumInputs = 1; | |||||
| m_PluginInfo.NumOutputs = 1; | |||||
| m_PluginInfo.PortTips.push_back ("Trigger"); | |||||
| m_PluginInfo.PortTips.push_back ("Output"); | |||||
| } | |||||
| MousePlugin::~MousePlugin() { | |||||
| m_RefCount--; | |||||
| if (m_RefCount==0) { | |||||
| MousePluginSingleton::PackUpAndGoHome(); | |||||
| } | |||||
| } | |||||
| PluginInfo &MousePlugin::Initialise (const HostInfo *Host) { | |||||
| PluginInfo& Info = SpiralPlugin::Initialise (Host); | |||||
| m_AudioCH->Register ("Data", &m_Data, ChannelHandler::OUTPUT); | |||||
| return Info; | |||||
| } | |||||
| SpiralGUIType *MousePlugin::CreateGUI() { | |||||
| return new MousePluginGUI (m_PluginInfo.Width, m_PluginInfo.Height, this, m_AudioCH, m_HostInfo); | |||||
| } | |||||
| void MousePlugin::Execute() { | |||||
| float trigger = 1.0; | |||||
| if (GetOutputBuf(0)) { | |||||
| if (InputExists(0)) { | |||||
| trigger = GetInput(0,0); | |||||
| } | |||||
| char c = MousePluginSingleton::Get()->getScr()->getData(); | |||||
| if (c!=0x0) { | |||||
| float val; | |||||
| int ch = (int)c; | |||||
| val = (float)(ch / 127.00); | |||||
| if (val>1) val=1; | |||||
| if (val<-1) val=-1; | |||||
| if (trigger>0) { | |||||
| GetOutputBuf(0)->Set (val); | |||||
| m_Data = val; | |||||
| } else { | |||||
| GetOutputBuf(0)->Set (m_Data); | |||||
| } | |||||
| } else { | |||||
| GetOutputBuf(0)->Set (m_Data); | |||||
| } | |||||
| } | |||||
| } | |||||
| void MousePlugin::StreamOut (ostream &s) { | |||||
| s << m_Version; | |||||
| } | |||||
| void MousePlugin::StreamIn (istream &s) { | |||||
| int Version; | |||||
| s >> Version; | |||||
| } | |||||
| @@ -0,0 +1,67 @@ | |||||
| /* MousePlugin | |||||
| * Copyleft (C) 2002 Dan Bethell <dan@pawfal.org> | |||||
| * Dave Griffiths <dave@pawfal.org> | |||||
| * | |||||
| * This program is free software; you can redistribute it and/or modify | |||||
| * it under the terms of the GNU General Public License as published by | |||||
| * the Free Software Foundation; either version 2 of the License, or | |||||
| * (at your option) any later version. | |||||
| * | |||||
| * This program is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| * GNU General Public License for more details. | |||||
| * | |||||
| * 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 MousePlugin_H | |||||
| #define MousePlugin_H | |||||
| #include "../SpiralPlugin.h" | |||||
| #include "scratch.h" | |||||
| class MousePluginSingleton { | |||||
| public: | |||||
| static MousePluginSingleton *Get() { | |||||
| if (!m_Singleton) m_Singleton = new MousePluginSingleton; | |||||
| return m_Singleton; | |||||
| } | |||||
| static void PackUpAndGoHome() { | |||||
| if (m_Singleton) { | |||||
| delete m_Singleton; | |||||
| m_Singleton=NULL; | |||||
| } | |||||
| } | |||||
| ~MousePluginSingleton(); | |||||
| scratch *getScr() { return scr; } | |||||
| private: | |||||
| MousePluginSingleton(); | |||||
| scratch *scr; | |||||
| static MousePluginSingleton* m_Singleton; | |||||
| int count; | |||||
| }; | |||||
| class MousePlugin : public SpiralPlugin { | |||||
| public: | |||||
| MousePlugin(); | |||||
| virtual ~MousePlugin(); | |||||
| virtual PluginInfo& Initialise (const HostInfo *Host); | |||||
| virtual SpiralGUIType* CreateGUI(); | |||||
| virtual void Execute(); | |||||
| virtual void StreamOut (ostream &s); | |||||
| virtual void StreamIn (istream &s); | |||||
| //float getData() { return data; } | |||||
| private: | |||||
| static int m_RefCount; | |||||
| float m_Data; | |||||
| friend istream &operator>> (istream &s, MousePlugin &o); | |||||
| friend ostream &operator<< (ostream &s, MousePlugin &o); | |||||
| }; | |||||
| istream &operator>> (istream &s, MousePlugin &o); | |||||
| ostream &operator<< (ostream &s, MousePlugin &o); | |||||
| #endif | |||||
| @@ -0,0 +1,68 @@ | |||||
| /* MousePlugin | |||||
| * Copyleft (C) 2002 Dan Bethell <dan@pawfal.org> | |||||
| * Dave Griffiths <dave@pawfal.org> | |||||
| * | |||||
| * This program is free software; you can redistribute it and/or modify | |||||
| * it under the terms of the GNU General Public License as published by | |||||
| * the Free Software Foundation; either version 2 of the License, or | |||||
| * (at your option) any later version. | |||||
| * | |||||
| * This program is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| * GNU General Public License for more details. | |||||
| * | |||||
| * 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 "MousePluginGUI.h" | |||||
| #include <FL/fl_draw.h> | |||||
| #include <FL/fl_draw.H> | |||||
| static const int GUI_COLOUR = 154; | |||||
| static const int GUIBG_COLOUR = 144; | |||||
| static const int GUIBG2_COLOUR = 145; | |||||
| ScratchWidget::ScratchWidget (int x, int y, int w, int h, const char *l, int BUFSIZE) : | |||||
| Fl_Widget (x, y, w, h, l), | |||||
| m_Data (0.0), | |||||
| m_Channels (1), | |||||
| m_Bufsize (BUFSIZE) | |||||
| { | |||||
| } | |||||
| void ScratchWidget::draw() { | |||||
| fl_color (GUIBG_COLOUR); | |||||
| fl_rectf (x(), y(), w(), h()); | |||||
| fl_push_clip (x(), y(), w(), h()); | |||||
| int val = (int)(((m_Data * -1) + 1) * (h() / 2.0)); | |||||
| fl_color (FL_WHITE); | |||||
| fl_rectf (x(), y() + val, w(), h()); | |||||
| fl_pop_clip(); | |||||
| } | |||||
| //////////////////////////////////////////// | |||||
| MousePluginGUI::MousePluginGUI (int w, int h, MousePlugin *o, ChannelHandler *ch, const HostInfo *Info) : | |||||
| SpiralPluginGUI (w, h, o, ch) | |||||
| { | |||||
| m_Scope = new ScratchWidget (5, 20, 60, 100, "Scratch", Info->BUFSIZE); | |||||
| end(); | |||||
| } | |||||
| void MousePluginGUI::Update () { | |||||
| m_Scope->m_Data = m_GUICH->GetFloat ("Data"); | |||||
| m_Scope->redraw(); | |||||
| } | |||||
| // Update GUI on Load | |||||
| void MousePluginGUI::UpdateValues (SpiralPlugin* o) { | |||||
| } | |||||
| const string MousePluginGUI::GetHelpText (const string &loc) { | |||||
| return string("") | |||||
| + "\n" | |||||
| + "\n"; | |||||
| } | |||||
| @@ -0,0 +1,55 @@ | |||||
| /* MousePlugin | |||||
| * Copyleft (C) 2002 Dan Bethell <dan@pawfal.org> | |||||
| * Dave Griffiths <dave@pawfal.org> | |||||
| * | |||||
| * This program is free software; you can redistribute it and/or modify | |||||
| * it under the terms of the GNU General Public License as published by | |||||
| * the Free Software Foundation; either version 2 of the License, or | |||||
| * (at your option) any later version. | |||||
| * | |||||
| * This program is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| * GNU General Public License for more details. | |||||
| * | |||||
| * 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 MouseGUI_H | |||||
| #define MouseGUI_H | |||||
| #include <FL/Fl.H> | |||||
| #include "MousePlugin.h" | |||||
| #include "../SpiralPluginGUI.h" | |||||
| class ScratchWidget : public Fl_Widget { | |||||
| public: | |||||
| ScratchWidget (int x, int y, int w, int h, const char *l, int BUFSIZE); | |||||
| void draw(); | |||||
| void SetNumChannels (int s) { m_Channels = s; } | |||||
| float m_Data; | |||||
| int m_Channels; | |||||
| private: | |||||
| int m_GUIColour; | |||||
| int m_GUIBGColour; | |||||
| int m_Bufsize; | |||||
| }; | |||||
| class MousePluginGUI : public SpiralPluginGUI { | |||||
| public: | |||||
| MousePluginGUI (int w, int h, MousePlugin *o, ChannelHandler *ch, const HostInfo *Info); | |||||
| virtual void UpdateValues (SpiralPlugin *o); | |||||
| virtual void Update (); | |||||
| protected: | |||||
| const string GetHelpText (const string &loc); | |||||
| private: | |||||
| // virtual void draw(); | |||||
| // void Display(float data); | |||||
| // virtual SpiralPlugin* GetPlugin() { return m_Plugin; } | |||||
| // MousePlugin *m_Plugin; | |||||
| ScratchWidget *m_Scope; | |||||
| }; | |||||
| #endif | |||||
| @@ -0,0 +1,43 @@ | |||||
| /* XPM */ | |||||
| static char * SpiralIcon_xpm[] = { | |||||
| "36 36 4 1", | |||||
| " c None", | |||||
| ". c #000000", | |||||
| "+ c #6E6E6E", | |||||
| "@ c #FFFFFF", | |||||
| " ", | |||||
| " ", | |||||
| " ", | |||||
| " ............................. ", | |||||
| " ............................. ", | |||||
| " ............................. ", | |||||
| " ...+++++++++++++++++++++++... ", | |||||
| " ...+++++++++++++++++++++++... ", | |||||
| " ...+++++++++++++++++++++++... ", | |||||
| " ...+++++++++++++++++++++++... ", | |||||
| " ...+++++++++++++++++++++++... ", | |||||
| " ...++++++@@@@@@@@@@@@@@+++... ", | |||||
| " ...++++++@@@@@@@++++++++++... ", | |||||
| " ...++++++@@@@@@@++++++++++... ", | |||||
| " ...++++++++@++++++++++++++... ", | |||||
| " ...++...................++... ", | |||||
| " ...+++++++++++++++++++++++... ", | |||||
| " ...+++++++++++++++++++++++... ", | |||||
| " ...+++++++++++++++++++++++... ", | |||||
| " ...+++++++++++++++++++++++... ", | |||||
| " ............................. ", | |||||
| " ............................. ", | |||||
| " ............................. ", | |||||
| " ........ ", | |||||
| " ........ ", | |||||
| " ........ ", | |||||
| " ........ ", | |||||
| " ........ ", | |||||
| " ............................. ", | |||||
| " ............................. ", | |||||
| " ............................. ", | |||||
| " ............................. ", | |||||
| " ............................. ", | |||||
| " ............................. ", | |||||
| " ", | |||||
| " "}; | |||||
| @@ -0,0 +1,133 @@ | |||||
| /* MousePlugin | |||||
| * Copyleft (C) 2002 Dan Bethell <dan@pawfal.org> | |||||
| * Dave Griffiths <dave@pawfal.org> | |||||
| * | |||||
| * This program is free software; you can redistribute it and/or modify | |||||
| * it under the terms of the GNU General Public License as published by | |||||
| * the Free Software Foundation; either version 2 of the License, or | |||||
| * (at your option) any later version. | |||||
| * | |||||
| * This program is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| * GNU General Public License for more details. | |||||
| * | |||||
| * 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 "scratch.h" | |||||
| #define BAUDRATE B1200 | |||||
| #define _POSIX_SOURCE 1 /* POSIX compliant source */ | |||||
| #define FALSE 0 | |||||
| #define TRUE 1 | |||||
| int c, res; | |||||
| int count, total; | |||||
| volatile int STOP=FALSE; | |||||
| int fd; // the serial port device | |||||
| struct termios oldtio,newtio; | |||||
| unsigned char buf[3]; | |||||
| char *MODEMDEVICE; | |||||
| scratch::scratch(char *dev) | |||||
| { | |||||
| openSerialPort(dev); | |||||
| pthread_mutex_init( &mutex, NULL); | |||||
| pthread_create( &scratch_thread, NULL, (void *(*)(void *))listen, this); | |||||
| } | |||||
| scratch::~scratch() | |||||
| { | |||||
| closeSerialPort(); | |||||
| } | |||||
| void scratch::setData(char c) | |||||
| { | |||||
| pthread_mutex_lock( &mutex ); | |||||
| data = c; | |||||
| pthread_mutex_unlock( &mutex ); | |||||
| } | |||||
| char scratch::getData() | |||||
| { | |||||
| char result; | |||||
| pthread_mutex_lock( &mutex ); | |||||
| result = data; | |||||
| pthread_mutex_unlock( &mutex ); | |||||
| return result; | |||||
| } | |||||
| void scratch::stop() | |||||
| { | |||||
| pthread_mutex_lock( &mutex ); | |||||
| STOP=TRUE; | |||||
| pthread_mutex_unlock( &mutex ); | |||||
| } | |||||
| void openSerialPort(char *dev) | |||||
| { | |||||
| char *MODEMDEVICE = dev; | |||||
| fd = open(MODEMDEVICE, O_RDWR | O_NOCTTY ); | |||||
| if (fd <0) | |||||
| { | |||||
| perror(MODEMDEVICE); exit(-1); | |||||
| } | |||||
| tcgetattr(fd,&oldtio); /* save current port settings */ | |||||
| bzero(&newtio, sizeof(newtio)); | |||||
| newtio.c_cflag = BAUDRATE | CS7 | CLOCAL | CREAD; | |||||
| newtio.c_iflag = IGNPAR; | |||||
| newtio.c_oflag = 0; | |||||
| /* set input mode (non-canonical, no echo,...) */ | |||||
| newtio.c_lflag = 0; | |||||
| newtio.c_cc[VTIME] = 0; /* inter-character timer unused */ | |||||
| newtio.c_cc[VMIN] = 3; /* blocking read until 5 chars received */ | |||||
| tcflush(fd, TCIFLUSH); | |||||
| tcsetattr(fd,TCSANOW,&newtio); | |||||
| } | |||||
| void closeSerialPort() | |||||
| { | |||||
| tcsetattr(fd,TCSANOW,&oldtio); // reset serial port settings | |||||
| close(fd); // close pipe to serial port | |||||
| } | |||||
| void listen(scratch *scr) | |||||
| { | |||||
| while (STOP==FALSE) | |||||
| { /* loop for input */ | |||||
| res = read(fd,buf,3); /* returns after 3 chars have been input */ | |||||
| if (buf[0]>>6&1) | |||||
| { | |||||
| char c; | |||||
| c = ((buf[0]&12)<<4)|(buf[2]&63); | |||||
| if (c!=0x0) { | |||||
| scr->setData(c); | |||||
| // some random logging stuff | |||||
| /* | |||||
| total += (int)c; | |||||
| count ++; | |||||
| if (count%20==0) { | |||||
| FILE *ptr = fopen("/tmp/EYEMUSH.log", "a+"); | |||||
| fprintf(ptr, "EYEMUSH LOG:\tScratch\n"); | |||||
| fclose(ptr); | |||||
| } | |||||
| */ | |||||
| } | |||||
| } | |||||
| else | |||||
| { | |||||
| read(fd,buf,1); | |||||
| } | |||||
| } | |||||
| } | |||||
| @@ -0,0 +1,54 @@ | |||||
| /* MousePlugin | |||||
| * Copyleft (C) 2002 Dan Bethell <dan@pawfal.org> | |||||
| * Dave Griffiths <dave@pawfal.org> | |||||
| * | |||||
| * This program is free software; you can redistribute it and/or modify | |||||
| * it under the terms of the GNU General Public License as published by | |||||
| * the Free Software Foundation; either version 2 of the License, or | |||||
| * (at your option) any later version. | |||||
| * | |||||
| * This program is distributed in the hope that it will be useful, | |||||
| * but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
| * GNU General Public License for more details. | |||||
| * | |||||
| * 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 SCRATCH_H | |||||
| #define SCRATCH_H | |||||
| #include <sys/types.h> | |||||
| #include <sys/stat.h> | |||||
| #include <fcntl.h> | |||||
| #include <unistd.h> | |||||
| #include <string.h> | |||||
| #include <termios.h> | |||||
| #include <stdio.h> | |||||
| #include <iostream.h> | |||||
| #include <pthread.h> | |||||
| class scratch | |||||
| { | |||||
| public: | |||||
| scratch(char *dev); | |||||
| ~scratch(); | |||||
| void setData(char c); | |||||
| char getData(); | |||||
| void stop(); | |||||
| private: | |||||
| pthread_t scratch_thread; | |||||
| pthread_mutex_t mutex; | |||||
| char data; | |||||
| }; | |||||
| void openSerialPort(char *dev); | |||||
| void closeSerialPort(); | |||||
| void listen(scratch *scr); | |||||
| #endif | |||||
| @@ -25,6 +25,7 @@ | |||||
| StreamPluginGUI::StreamPluginGUI(int w, int h,StreamPlugin *o,ChannelHandler *ch,const HostInfo *Info) : | StreamPluginGUI::StreamPluginGUI(int w, int h,StreamPlugin *o,ChannelHandler *ch,const HostInfo *Info) : | ||||
| SpiralPluginGUI(w,h,o,ch), | SpiralPluginGUI(w,h,o,ch), | ||||
| m_Playing (false), | |||||
| m_PitchValue (1.0f) | m_PitchValue (1.0f) | ||||
| { | { | ||||
| // 7 seg displays | // 7 seg displays | ||||
| @@ -56,7 +57,6 @@ m_PitchValue (1.0f) | |||||
| m_Pitch->box (FL_PLASTIC_DOWN_BOX); | m_Pitch->box (FL_PLASTIC_DOWN_BOX); | ||||
| m_Pitch->maximum (20); | m_Pitch->maximum (20); | ||||
| m_Pitch->step (0.001); | m_Pitch->step (0.001); | ||||
| UpdatePitch (true, false, false); | |||||
| m_Pitch->callback ((Fl_Callback*)cb_Pitch); | m_Pitch->callback ((Fl_Callback*)cb_Pitch); | ||||
| add (m_Pitch); | add (m_Pitch); | ||||
| // position indicator | // position indicator | ||||
| @@ -85,17 +85,8 @@ m_PitchValue (1.0f) | |||||
| m_ToStart->selection_color (Info->GUI_COLOUR); | m_ToStart->selection_color (Info->GUI_COLOUR); | ||||
| m_ToStart->callback ((Fl_Callback*)cb_ToStart); | m_ToStart->callback ((Fl_Callback*)cb_ToStart); | ||||
| add (m_ToStart); | add (m_ToStart); | ||||
| // stop btn | |||||
| m_Stop = new Fl_Button (62, 130, 30, 30, "@||"); | |||||
| m_Stop->labelsize (10); | |||||
| m_Stop->labeltype (FL_SYMBOL_LABEL); | |||||
| m_Stop->box (FL_PLASTIC_UP_BOX); | |||||
| m_Stop->color (Info->GUI_COLOUR); | |||||
| m_Stop->selection_color (Info->GUI_COLOUR); | |||||
| m_Stop->callback ((Fl_Callback*)cb_Stop); | |||||
| add (m_Stop); | |||||
| // play btn | // play btn | ||||
| m_Play = new Fl_Button (92, 130, 30, 30, "@>"); | |||||
| m_Play = new Fl_Button (62, 130, 30, 30, "@>"); | |||||
| m_Play->labelsize (10); | m_Play->labelsize (10); | ||||
| m_Play->labeltype (FL_SYMBOL_LABEL); | m_Play->labeltype (FL_SYMBOL_LABEL); | ||||
| m_Play->box (FL_PLASTIC_UP_BOX); | m_Play->box (FL_PLASTIC_UP_BOX); | ||||
| @@ -103,22 +94,31 @@ m_PitchValue (1.0f) | |||||
| m_Play->selection_color (Info->GUI_COLOUR); | m_Play->selection_color (Info->GUI_COLOUR); | ||||
| m_Play->callback ((Fl_Callback*)cb_Play); | m_Play->callback ((Fl_Callback*)cb_Play); | ||||
| add (m_Play); | add (m_Play); | ||||
| // 1/2 speed btn | |||||
| m_Div = new Fl_Button (122, 130, 30, 30, "/2"); | |||||
| m_Div->labelsize (9); | |||||
| m_Div->box (FL_PLASTIC_UP_BOX); | |||||
| m_Div->color (Info->GUI_COLOUR); | |||||
| m_Div->selection_color (Info->GUI_COLOUR); | |||||
| m_Div->callback ((Fl_Callback*)cb_Div); | |||||
| add (m_Div); | |||||
| // normal speed btn | // normal speed btn | ||||
| m_Reset = new Fl_Button (152, 130, 30, 30, "Reset"); | |||||
| m_Reset = new Fl_Button (92, 130, 30, 30, "Reset"); | |||||
| m_Reset->labelsize (9); | m_Reset->labelsize (9); | ||||
| m_Reset->box (FL_PLASTIC_UP_BOX); | m_Reset->box (FL_PLASTIC_UP_BOX); | ||||
| m_Reset->color (Info->GUI_COLOUR); | m_Reset->color (Info->GUI_COLOUR); | ||||
| m_Reset->selection_color (Info->GUI_COLOUR); | m_Reset->selection_color (Info->GUI_COLOUR); | ||||
| m_Reset->callback ((Fl_Callback*)cb_Reset); | m_Reset->callback ((Fl_Callback*)cb_Reset); | ||||
| add (m_Reset); | add (m_Reset); | ||||
| // Reverse Button | |||||
| m_Rev = new Fl_Button (122, 130, 30, 30, "@<-"); | |||||
| m_Rev->labelsize (10); | |||||
| m_Rev->labeltype (FL_SYMBOL_LABEL); | |||||
| m_Rev->box (FL_PLASTIC_UP_BOX); | |||||
| m_Rev->color (Info->GUI_COLOUR); | |||||
| m_Rev->selection_color (Info->GUI_COLOUR); | |||||
| m_Rev->callback ((Fl_Callback*)cb_Rev); | |||||
| add (m_Rev); | |||||
| // 1/2 speed btn | |||||
| m_Div = new Fl_Button (152, 130, 30, 30, "/2"); | |||||
| m_Div->labelsize (9); | |||||
| m_Div->box (FL_PLASTIC_UP_BOX); | |||||
| m_Div->color (Info->GUI_COLOUR); | |||||
| m_Div->selection_color (Info->GUI_COLOUR); | |||||
| m_Div->callback ((Fl_Callback*)cb_Div); | |||||
| add (m_Div); | |||||
| // dbl speed btn | // dbl speed btn | ||||
| m_Dbl = new Fl_Button (182, 130, 30, 30, "X2"); | m_Dbl = new Fl_Button (182, 130, 30, 30, "X2"); | ||||
| m_Dbl->labelsize (9); | m_Dbl->labelsize (9); | ||||
| @@ -135,6 +135,8 @@ m_PitchValue (1.0f) | |||||
| m_Nudge->selection_color (Info->GUI_COLOUR); | m_Nudge->selection_color (Info->GUI_COLOUR); | ||||
| m_Nudge->callback ((Fl_Callback*)cb_Nudge); | m_Nudge->callback ((Fl_Callback*)cb_Nudge); | ||||
| add (m_Nudge); | add (m_Nudge); | ||||
| end (); | |||||
| UpdatePitch (true, false, false); | |||||
| } | } | ||||
| StreamPluginGUI::~StreamPluginGUI () { | StreamPluginGUI::~StreamPluginGUI () { | ||||
| @@ -177,8 +179,14 @@ void StreamPluginGUI::cb_Volume (Fl_Knob* o, void* v) { | |||||
| // pitch | // pitch | ||||
| void StreamPluginGUI::UpdatePitch (bool UpdateIt, bool DrawIt, bool SendIt) { | void StreamPluginGUI::UpdatePitch (bool UpdateIt, bool DrawIt, bool SendIt) { | ||||
| if (m_PitchValue<0) m_Pitch->align (FL_ALIGN_INSIDE | FL_ALIGN_LEFT); | |||||
| else m_Pitch->align (FL_ALIGN_INSIDE | FL_ALIGN_RIGHT); | |||||
| if (m_PitchValue<0) { | |||||
| m_Pitch->align (FL_ALIGN_INSIDE | FL_ALIGN_LEFT); | |||||
| m_Rev->label ("@->"); | |||||
| } | |||||
| else { | |||||
| m_Pitch->align (FL_ALIGN_INSIDE | FL_ALIGN_RIGHT); | |||||
| m_Rev->label ("@<-"); | |||||
| } | |||||
| sprintf (m_PitchLabel, " %1.3f ", m_PitchValue); | sprintf (m_PitchLabel, " %1.3f ", m_PitchValue); | ||||
| if (UpdateIt) m_Pitch->value (m_PitchValue+10); | if (UpdateIt) m_Pitch->value (m_PitchValue+10); | ||||
| if (DrawIt) redraw(); | if (DrawIt) redraw(); | ||||
| @@ -232,46 +240,55 @@ 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); | ||||
| } | } | ||||
| // stop | |||||
| // play | |||||
| inline void StreamPluginGUI::cb_Stop_i (Fl_Button* o, void* v) { | |||||
| m_GUICH->SetCommand (StreamPlugin::STOP); | |||||
| inline void StreamPluginGUI::cb_Play_i (Fl_Button* o, void* v) { | |||||
| if (m_Playing) { | |||||
| m_Play->label ("@>"); | |||||
| m_GUICH->SetCommand (StreamPlugin::STOP); | |||||
| } | |||||
| else { | |||||
| m_Play->label ("@||"); | |||||
| m_GUICH->SetCommand (StreamPlugin::PLAY); | |||||
| } | |||||
| m_Playing = ! m_Playing; | |||||
| } | } | ||||
| void StreamPluginGUI::cb_Stop (Fl_Button* o, void* v) { | |||||
| ((StreamPluginGUI*)(o->parent ()))->cb_Stop_i (o, v); | |||||
| void StreamPluginGUI::cb_Play (Fl_Button* o, void* v) { | |||||
| ((StreamPluginGUI*)(o->parent ()))->cb_Play_i (o, v); | |||||
| } | } | ||||
| // play | |||||
| // reset | |||||
| inline void StreamPluginGUI::cb_Play_i (Fl_Button* o, void* v) { | |||||
| m_GUICH->SetCommand (StreamPlugin::PLAY); | |||||
| inline void StreamPluginGUI::cb_Reset_i (Fl_Button* o, void* v) { | |||||
| m_PitchValue = 1.0f; | |||||
| UpdatePitch (); | |||||
| } | } | ||||
| void StreamPluginGUI::cb_Play (Fl_Button* o, void* v) { | |||||
| ((StreamPluginGUI*)(o->parent ()))->cb_Play_i (o, v); | |||||
| void StreamPluginGUI::cb_Reset (Fl_Button* o, void* v) { | |||||
| ((StreamPluginGUI*)(o->parent ()))->cb_Reset_i (o, v); | |||||
| } | } | ||||
| // div 2 | |||||
| // Rev | |||||
| inline void StreamPluginGUI::cb_Div_i (Fl_Button* o, void* v) { | |||||
| m_PitchValue /= 2.0f; | |||||
| inline void StreamPluginGUI::cb_Rev_i (Fl_Button* o, void* v) { | |||||
| m_PitchValue = -m_PitchValue; | |||||
| UpdatePitch (); | UpdatePitch (); | ||||
| } | } | ||||
| void StreamPluginGUI::cb_Div (Fl_Button* o, void* v) { | |||||
| ((StreamPluginGUI*)(o->parent()))->cb_Div_i (o, v); | |||||
| void StreamPluginGUI::cb_Rev (Fl_Button* o, void* v) { | |||||
| ((StreamPluginGUI*)(o->parent ()))->cb_Rev_i (o, v); | |||||
| } | } | ||||
| // reset | |||||
| // div 2 | |||||
| inline void StreamPluginGUI::cb_Reset_i (Fl_Button* o, void* v) { | |||||
| m_PitchValue = 1.0f; | |||||
| inline void StreamPluginGUI::cb_Div_i (Fl_Button* o, void* v) { | |||||
| m_PitchValue /= 2.0f; | |||||
| UpdatePitch (); | UpdatePitch (); | ||||
| } | } | ||||
| void StreamPluginGUI::cb_Reset (Fl_Button* o, void* v) { | |||||
| ((StreamPluginGUI*)(o->parent ()))->cb_Reset_i (o, v); | |||||
| void StreamPluginGUI::cb_Div (Fl_Button* o, void* v) { | |||||
| ((StreamPluginGUI*)(o->parent()))->cb_Div_i (o, v); | |||||
| } | } | ||||
| // mul 2 | // mul 2 | ||||
| @@ -16,6 +16,9 @@ | |||||
| * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||||
| */ | */ | ||||
| #ifndef StreamGUI | |||||
| #define StreamGUI | |||||
| #include <FL/Fl.H> | #include <FL/Fl.H> | ||||
| #include <FL/Fl_Slider.H> | #include <FL/Fl_Slider.H> | ||||
| #include <FL/Fl_Repeat_Button.H> | #include <FL/Fl_Repeat_Button.H> | ||||
| @@ -25,9 +28,6 @@ | |||||
| #include "../Widgets/Fl_SevenSeg.H" | #include "../Widgets/Fl_SevenSeg.H" | ||||
| #include "../Widgets/Fl_Knob.H" | #include "../Widgets/Fl_Knob.H" | ||||
| #ifndef StreamGUI | |||||
| #define StreamGUI | |||||
| class StreamPluginGUI : public SpiralPluginGUI { | class StreamPluginGUI : public SpiralPluginGUI { | ||||
| public: | public: | ||||
| StreamPluginGUI(int w, int h, StreamPlugin *o, ChannelHandler *ch, const HostInfo *Info); | StreamPluginGUI(int w, int h, StreamPlugin *o, ChannelHandler *ch, const HostInfo *Info); | ||||
| @@ -37,6 +37,7 @@ class StreamPluginGUI : public SpiralPluginGUI { | |||||
| protected: | protected: | ||||
| const string GetHelpText (const string &loc); | const string GetHelpText (const string &loc); | ||||
| private: | private: | ||||
| bool m_Playing; | |||||
| float m_PitchValue; | float m_PitchValue; | ||||
| char m_TextBuf[256], m_PitchLabel[256]; | char m_TextBuf[256], m_PitchLabel[256]; | ||||
| void SetMaxTime (float t) { m_Pos->maximum(t); } | void SetMaxTime (float t) { m_Pos->maximum(t); } | ||||
| @@ -48,10 +49,10 @@ class StreamPluginGUI : public SpiralPluginGUI { | |||||
| Fl_Slider* m_Pos; | Fl_Slider* m_Pos; | ||||
| Fl_Button* m_Load; | Fl_Button* m_Load; | ||||
| Fl_Button* m_ToStart; | Fl_Button* m_ToStart; | ||||
| Fl_Button* m_Stop; | |||||
| Fl_Button* m_Play; | Fl_Button* m_Play; | ||||
| Fl_Button* m_Div; | |||||
| Fl_Button* m_Reset; | Fl_Button* m_Reset; | ||||
| Fl_Button* m_Rev; | |||||
| Fl_Button* m_Div; | |||||
| Fl_Button* m_Dbl; | Fl_Button* m_Dbl; | ||||
| Fl_Repeat_Button* m_Nudge; | Fl_Repeat_Button* m_Nudge; | ||||
| //// Callbacks //// | //// Callbacks //// | ||||
| @@ -65,14 +66,14 @@ class StreamPluginGUI : public SpiralPluginGUI { | |||||
| static void cb_Load (Fl_Button* o, void* v); | static void cb_Load (Fl_Button* o, void* v); | ||||
| inline void cb_ToStart_i (Fl_Button* o, void* v); | inline void cb_ToStart_i (Fl_Button* o, void* v); | ||||
| static void cb_ToStart (Fl_Button* o, void* v); | static void cb_ToStart (Fl_Button* o, void* v); | ||||
| inline void cb_Stop_i (Fl_Button* o, void* v); | |||||
| static void cb_Stop (Fl_Button* o, void* v); | |||||
| inline void cb_Play_i (Fl_Button* o, void* v); | inline void cb_Play_i (Fl_Button* o, void* v); | ||||
| static void cb_Play (Fl_Button* o, void* v); | static void cb_Play (Fl_Button* o, void* v); | ||||
| inline void cb_Div_i (Fl_Button* o, void* v); | |||||
| static void cb_Div (Fl_Button* o, void* v); | |||||
| inline void cb_Reset_i (Fl_Button* o, void* v); | inline void cb_Reset_i (Fl_Button* o, void* v); | ||||
| static void cb_Reset (Fl_Button* o, void* v); | static void cb_Reset (Fl_Button* o, void* v); | ||||
| inline void cb_Rev_i (Fl_Button* o, void* v); | |||||
| static void cb_Rev (Fl_Button* o, void* v); | |||||
| inline void cb_Div_i (Fl_Button* o, void* v); | |||||
| static void cb_Div (Fl_Button* o, void* v); | |||||
| inline void cb_Dbl_i (Fl_Button* o, void* v); | inline void cb_Dbl_i (Fl_Button* o, void* v); | ||||
| static void cb_Dbl (Fl_Button* o, void* v); | static void cb_Dbl (Fl_Button* o, void* v); | ||||
| inline void cb_Nudge_i (Fl_Button* o, void* v); | inline void cb_Nudge_i (Fl_Button* o, void* v); | ||||