From 005d4fbab888650b12601b8f4de7502d5b6dac09 Mon Sep 17 00:00:00 2001 From: edgeeffect Date: Sat, 27 Mar 2004 07:42:12 +0000 Subject: [PATCH] Stream GUI upgrades, SndFile Dialogs, Jack tidy --- SpiralSound/Plugins/GUI/WaveChooser.C | 49 +++++++++++++++++++ SpiralSound/Plugins/GUI/WaveChooser.h | 24 +++++++++ .../Plugins/JackPlugin/JackPluginGUI.C | 6 +-- .../Plugins/PoshSamplerPlugin/Makefile.in | 6 +++ .../PoshSamplerPlugin/PoshSamplerPluginGUI.C | 26 +++++----- .../Plugins/SpiralLoopPlugin/Makefile.in | 8 ++- .../SpiralLoopPlugin/SpiralLoopPluginGUI.C | 7 ++- SpiralSound/Plugins/StreamPlugin/Makefile.in | 6 +++ .../Plugins/StreamPlugin/StreamPlugin.C | 48 +++++++++--------- .../Plugins/StreamPlugin/StreamPlugin.h | 10 ++-- .../Plugins/StreamPlugin/StreamPluginGUI.C | 45 +++++++++++------ .../Plugins/StreamPlugin/StreamPluginGUI.h | 2 + 12 files changed, 170 insertions(+), 67 deletions(-) create mode 100644 SpiralSound/Plugins/GUI/WaveChooser.C create mode 100644 SpiralSound/Plugins/GUI/WaveChooser.h diff --git a/SpiralSound/Plugins/GUI/WaveChooser.C b/SpiralSound/Plugins/GUI/WaveChooser.C new file mode 100644 index 0000000..b60213a --- /dev/null +++ b/SpiralSound/Plugins/GUI/WaveChooser.C @@ -0,0 +1,49 @@ +/* SpiralSound + * Copyleft (C) 2001 David Griffiths + * + * 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 "WaveChooser.h" +#include +#include +#include "../../../config.h" + +#ifdef USE_LIBSNDFILE +#include +#endif + +char *WaveFileName (void) { + string AvailFmt; +#ifdef USE_LIBSNDFILE + string FmtName; + SF_FORMAT_INFO info; + int major_count, m, p; + sf_command (NULL, SFC_GET_FORMAT_MAJOR_COUNT, &major_count, sizeof (int)); + for (m = 0 ; m < major_count ; m++) { + info.format = m; + sf_command (NULL, SFC_GET_FORMAT_MAJOR, &info, sizeof (info)); + FmtName = info.name; + while ((p=FmtName.find ('(')) >= 0 ) FmtName.replace (p, 1, '['); + while ((p=FmtName.find (')')) >= 0 ) FmtName.replace (p, 1, ']'); + if (!AvailFmt.empty()) AvailFmt += '\t'; + AvailFmt += (string)FmtName + (string)" (*." + (string)info.extension + ')'; + } +#else + AvailFmt = "{*.wav,*.WAV}"; +#endif + char *fn=fl_file_chooser("Load a sample", AvailFmt.c_str(), NULL); + return fn; +} diff --git a/SpiralSound/Plugins/GUI/WaveChooser.h b/SpiralSound/Plugins/GUI/WaveChooser.h new file mode 100644 index 0000000..70dd654 --- /dev/null +++ b/SpiralSound/Plugins/GUI/WaveChooser.h @@ -0,0 +1,24 @@ +/* SpiralSound + * Copyleft (C) 2001 David Griffiths + * + * 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 WaveChooser +#define WaveChooser + +char *WaveFileName (void); + +#endif diff --git a/SpiralSound/Plugins/JackPlugin/JackPluginGUI.C b/SpiralSound/Plugins/JackPlugin/JackPluginGUI.C index 747f310..578a518 100644 --- a/SpiralSound/Plugins/JackPlugin/JackPluginGUI.C +++ b/SpiralSound/Plugins/JackPlugin/JackPluginGUI.C @@ -89,16 +89,16 @@ SpiralPluginGUI(w,h,o,ch) m_Remove->box (FL_PLASTIC_UP_BOX); m_Remove->color (m_GUIColour); m_Remove->type(0); - m_Remove->labelsize(2); + m_Remove->labelsize (10); m_Remove->selection_color (m_GUIColour); m_Remove->callback((Fl_Callback*)cb_Remove, this); add(m_Remove); - + m_Add = new Fl_Button(30,15,25,25,"+"); m_Add->box (FL_PLASTIC_UP_BOX); m_Add->color (m_GUIColour); m_Add->type(0); - m_Add->labelsize(2); + m_Add->labelsize (10); m_Add->selection_color (m_GUIColour); m_Add->callback((Fl_Callback*)cb_Add, this); add(m_Add); diff --git a/SpiralSound/Plugins/PoshSamplerPlugin/Makefile.in b/SpiralSound/Plugins/PoshSamplerPlugin/Makefile.in index ebade45..bae8e1d 100644 --- a/SpiralSound/Plugins/PoshSamplerPlugin/Makefile.in +++ b/SpiralSound/Plugins/PoshSamplerPlugin/Makefile.in @@ -45,6 +45,7 @@ HEADERS = PoshSamplerPlugin.h \ ../../ChannelHandler.h \ ../../Sample.h \ ../../RiffWav.h \ + ../GUI/WaveChooser.h \ ../Widgets/Fl_Knob.H \ ../../../GUI/Widgets/SpiralGUI.H SOURCES = PoshSamplerPlugin.C \ @@ -54,6 +55,7 @@ SOURCES = PoshSamplerPlugin.C \ ../../ChannelHandler.C \ ../../Sample.C \ ../../RiffWav.C \ + ../GUI/WaveChooser.C \ ../Widgets/Fl_Knob.cxx \ ../../../GUI/Widgets/SpiralGUI.C OBJECTS = PoshSamplerPlugin.o \ @@ -63,6 +65,7 @@ OBJECTS = PoshSamplerPlugin.o \ ../../ChannelHandler.o \ ../../Sample.o \ ../../RiffWav.o \ + ../GUI/WaveChooser.o \ ../Widgets/Fl_Knob.o \ ../../../GUI/Widgets/SpiralGUI.o INTERFACES = @@ -148,6 +151,9 @@ install: ../../RiffWav.h \ ../../Sample.h +../GUI/WaveChooser.o: ../GUI/WaveChooser.C \ + ../GUI/WaveChooser.h + PoshSamplerPlugin.o: PoshSamplerPlugin.C \ PoshSamplerPlugin.h \ PoshSamplerPluginGUI.h \ diff --git a/SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.C b/SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.C index 87495ec..fc8f639 100644 --- a/SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.C +++ b/SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.C @@ -19,6 +19,7 @@ #include "PoshSamplerPluginGUI.h" #include #include +#include "../GUI/WaveChooser.h" #include using namespace std; @@ -196,7 +197,7 @@ int Fl_WaveDisplay::handle(int event) case 5: m_LoopEnd=MousePos; break; } } - + if (Mousebutton==2) { int Dist=(DragX-xx)*((m_ViewEnd-m_ViewStart)/w()); @@ -489,28 +490,27 @@ void PoshSamplerPluginGUI::UpdateValues(SpiralPlugin *o) m_Volume->value(Plugin->GetVolume((int)m_SampleNum->value())); m_Pitch->value(Plugin->GetPitch((int)m_SampleNum->value())); - m_Note->value(Plugin->GetNote((int)m_SampleNum->value())); - m_Loop->value(Plugin->GetLoop((int)m_SampleNum->value())); + m_Note->value(Plugin->GetNote((int)m_SampleNum->value())); + m_Loop->value(Plugin->GetLoop((int)m_SampleNum->value())); m_UpdateMe=true; - m_Display->SetPlayStart(Plugin->GetPlayStart((int)m_SampleNum->value())); - m_Display->SetLoopStart(Plugin->GetLoopStart((int)m_SampleNum->value())); - m_Display->SetLoopEnd(Plugin->GetLoopEnd((int)m_SampleNum->value())); + m_Display->SetPlayStart(Plugin->GetPlayStart((int)m_SampleNum->value())); + m_Display->SetLoopStart(Plugin->GetLoopStart((int)m_SampleNum->value())); + m_Display->SetLoopEnd(Plugin->GetLoopEnd((int)m_SampleNum->value())); m_Display->redraw(); } - + inline void PoshSamplerPluginGUI::cb_Load_i(Fl_Button* o, void* v) -{ - char *fn=fl_file_chooser("Load a sample", "{*.wav,*.WAV}", NULL); - +{ + char *fn=WaveFileName (); if (fn && fn!='\0') { strcpy(m_TextBuf,fn); m_GUICH->SetData("Name",m_TextBuf); m_GUICH->Set("Num",(int)m_SampleNum->value()); m_GUICH->SetCommand(PoshSamplerPlugin::LOAD); - + m_GUICH->Wait(); // wait for the sample to load - + UpdateSampleDisplay((int)m_SampleNum->value()); m_Display->redraw(); redraw(); @@ -524,7 +524,7 @@ inline void PoshSamplerPluginGUI::cb_Save_i(Fl_Button* o, void* v) char *fn=fl_file_chooser("Save sample", "{*.wav,*.WAV}", NULL); if (fn && fn!='\0') - { + { strcpy(m_TextBuf,fn); m_GUICH->Set("Name",m_TextBuf); m_GUICH->Set("Num",(int)m_SampleNum->value()); diff --git a/SpiralSound/Plugins/SpiralLoopPlugin/Makefile.in b/SpiralSound/Plugins/SpiralLoopPlugin/Makefile.in index 5c0fb2c..0286e0f 100644 --- a/SpiralSound/Plugins/SpiralLoopPlugin/Makefile.in +++ b/SpiralSound/Plugins/SpiralLoopPlugin/Makefile.in @@ -47,7 +47,8 @@ HEADERS = SpiralLoopPlugin.h \ ../../RiffWav.h \ Fl_Loop.h \ Fl_Trigger.h \ - ../Widgets/Fl_Knob.H \ + ../GUI/WaveChooser.h \ + ../Widgets/Fl_Knob.H \ ../Widgets/Fl_LED_Button.H \ ../../../GUI/Widgets/SpiralGUI.H SOURCES = SpiralLoopPlugin.C \ @@ -59,6 +60,7 @@ SOURCES = SpiralLoopPlugin.C \ ../../RiffWav.C \ Fl_Loop.C \ Fl_Trigger.C \ + ../GUI/WaveChooser.C \ ../Widgets/Fl_Knob.cxx \ ../Widgets/Fl_LED_Button.cxx \ ../../../GUI/Widgets/SpiralGUI.C @@ -71,6 +73,7 @@ OBJECTS = SpiralLoopPlugin.o \ ../../RiffWav.o \ Fl_Loop.o \ Fl_Trigger.o \ + ../GUI/WaveChooser.o \ ../Widgets/Fl_Knob.o \ ../Widgets/Fl_LED_Button.o \ ../../../GUI/Widgets/SpiralGUI.o @@ -163,6 +166,9 @@ Fl_Trigger.o: Fl_Trigger.C \ Fl_Trigger.h \ Fl_Loop.h +../GUI/WaveChooser.o: ../GUI/WaveChooser.C \ + ../GUI/WaveChooser.h + SpiralLoopPlugin.o: SpiralLoopPlugin.C \ SpiralLoopPlugin.h \ ../SpiralPlugin.h \ diff --git a/SpiralSound/Plugins/SpiralLoopPlugin/SpiralLoopPluginGUI.C b/SpiralSound/Plugins/SpiralLoopPlugin/SpiralLoopPluginGUI.C index fddd7b8..86f0a75 100644 --- a/SpiralSound/Plugins/SpiralLoopPlugin/SpiralLoopPluginGUI.C +++ b/SpiralSound/Plugins/SpiralLoopPlugin/SpiralLoopPluginGUI.C @@ -20,6 +20,7 @@ #include #include #include +#include "../GUI/WaveChooser.h" using namespace std; @@ -348,8 +349,7 @@ void SpiralLoopPluginGUI::cb_OverDub(Fl_Button* o, void* v) inline void SpiralLoopPluginGUI::cb_Load_i(Fl_Button* o, void* v) { - char *fn=fl_file_chooser("Load a sample", "{*.wav,*.WAV}", NULL); - + char *fn=WaveFileName (); if (fn && fn!='\0') { strcpy(m_TextBuf,fn); @@ -367,13 +367,12 @@ void SpiralLoopPluginGUI::cb_Load(Fl_Button* o, void* v) inline void SpiralLoopPluginGUI::cb_Save_i(Fl_Button* o, void* v) { char *fn=fl_file_chooser("Load a sample", "{*.wav,*.WAV}", NULL); - if (fn && fn!='\0') { strcpy(m_TextBuf,fn); m_GUICH->SetData("Name",m_TextBuf); m_GUICH->SetCommand(SpiralLoopPlugin::SAVE); - } + } } void SpiralLoopPluginGUI::cb_Save(Fl_Button* o, void* v) { ((SpiralLoopPluginGUI*)(o->parent()->parent()))->cb_Save_i(o,v); } diff --git a/SpiralSound/Plugins/StreamPlugin/Makefile.in b/SpiralSound/Plugins/StreamPlugin/Makefile.in index 302d8fb..17ba306 100644 --- a/SpiralSound/Plugins/StreamPlugin/Makefile.in +++ b/SpiralSound/Plugins/StreamPlugin/Makefile.in @@ -47,6 +47,7 @@ HEADERS = StreamPlugin.h \ ../../RiffWav.h \ ../Widgets/Fl_Knob.H \ ../Widgets/Fl_SevenSeg.H \ + ../GUI/WaveChooser.h \ ../../../GUI/Widgets/SpiralGUI.H SOURCES = StreamPlugin.C \ StreamPluginGUI.C \ @@ -57,6 +58,7 @@ SOURCES = StreamPlugin.C \ ../../RiffWav.C \ ../Widgets/Fl_Knob.cxx \ ../Widgets/Fl_SevenSeg.cxx \ + ../GUI/WaveChooser.C \ ../../../GUI/Widgets/SpiralGUI.C OBJECTS = StreamPlugin.o \ StreamPluginGUI.o \ @@ -67,6 +69,7 @@ OBJECTS = StreamPlugin.o \ ../../RiffWav.o \ ../Widgets/Fl_Knob.o \ ../Widgets/Fl_SevenSeg.o \ + ../GUI/WaveChooser.o \ ../../../GUI/Widgets/SpiralGUI.o INTERFACES = UICDECLS = @@ -137,6 +140,9 @@ install: ../../ChannelHandler.h \ ../../../GUI/Widgets/SpiralGUI.H +../GUI/WaveChooser.o: ../GUI/WaveChooser.C \ + ../GUI/WaveChooser.h + ../Widgets/Fl_Knob.o: ../Widgets/Fl_Knob.cxx \ ../Widgets/Fl_Knob.H diff --git a/SpiralSound/Plugins/StreamPlugin/StreamPlugin.C b/SpiralSound/Plugins/StreamPlugin/StreamPlugin.C index 15397f7..3c439b2 100644 --- a/SpiralSound/Plugins/StreamPlugin/StreamPlugin.C +++ b/SpiralSound/Plugins/StreamPlugin/StreamPlugin.C @@ -21,38 +21,27 @@ #include "SpiralIcon.xpm" #include "../../NoteTable.h" #include - #include "../../RiffWav.h" using namespace std; -static const float TRIG_THRESH = 0.1; -static const float BUFSECONDS = 1.0f; - extern "C" { -SpiralPlugin* SpiralPlugin_CreateInstance() -{ - return new StreamPlugin; -} -char** SpiralPlugin_GetIcon() -{ - return SpiralIcon_xpm; -} +SpiralPlugin* SpiralPlugin_CreateInstance() { return new StreamPlugin; } -int SpiralPlugin_GetID() -{ - return 0x0119; -} +char** SpiralPlugin_GetIcon() { return SpiralIcon_xpm; } + +int SpiralPlugin_GetID() { return 0x0119; } + +string SpiralPlugin_GetGroupName() { return "Delay/Sampling"; } -string SpiralPlugin_GetGroupName() -{ - return "Delay/Sampling"; -} } /////////////////////////////////////////////////////// +static const float TRIG_THRESH = 0.1; +static const float BUFSECONDS = 1.0f; + StreamPlugin::StreamPlugin() : m_SampleRate (44100), m_SampleSize (256), @@ -65,22 +54,26 @@ m_Mode(STOPM) { m_PluginInfo.Name = "Stream"; m_PluginInfo.Width = 245; - m_PluginInfo.Height = 165; + m_PluginInfo.Height = 160; m_PluginInfo.NumInputs = 3; - m_PluginInfo.NumOutputs = 3; + m_PluginInfo.NumOutputs = 4; m_PluginInfo.PortTips.push_back ("Pitch CV"); m_PluginInfo.PortTips.push_back ("Play Trigger"); m_PluginInfo.PortTips.push_back ("Stop Trigger"); m_PluginInfo.PortTips.push_back ("Left Out"); m_PluginInfo.PortTips.push_back ("Right Out"); m_PluginInfo.PortTips.push_back ("Finish Trigger"); + m_PluginInfo.PortTips.push_back ("Playing Trigger"); m_GUIArgs.Volume = 1.0f; m_GUIArgs.PitchMod = 1.0f; m_GUIArgs.PlayOut = false; + strcpy (m_GUIArgs.FileName, ""); m_AudioCH->Register ("Volume", &m_GUIArgs.Volume); m_AudioCH->Register ("Pitch", &m_GUIArgs.PitchMod, ChannelHandler::INPUT); m_AudioCH->RegisterData ("FileName", ChannelHandler::INPUT, &m_GUIArgs.FileName, sizeof (m_GUIArgs.FileName)); + m_AudioCH->RegisterData ("EchoFileName", ChannelHandler::OUTPUT, + &m_GUIArgs.FileName, sizeof (m_GUIArgs.FileName)); m_AudioCH->Register ("Time", &m_GUIArgs.Time); m_AudioCH->Register ("TimeOut", &m_GUIArgs.TimeOut, ChannelHandler::OUTPUT); m_AudioCH->Register ("MaxTime", &m_GUIArgs.MaxTime, ChannelHandler::OUTPUT); @@ -123,7 +116,7 @@ void StreamPlugin::Execute() { m_StreamPos = 0; } - if (m_Pos<0) { + if (m_Pos<0) { m_Pos = m_SampleSize - 1; m_StreamPos -= m_SampleSize; FinTrig = m_StreamPos < 0; @@ -136,7 +129,7 @@ void StreamPlugin::Execute() { if ((m_File.GetSize() - m_StreamPos) < 256) m_SampleSize = m_File.GetSize() - m_StreamPos; else - m_SampleSize = 256; + m_SampleSize = 256; m_File.LoadChunk (m_SampleSize, m_SampleL, m_SampleR); } @@ -153,22 +146,27 @@ void StreamPlugin::Execute() { if ((m_File.GetSize() - m_StreamPos) < 256) m_SampleSize = m_File.GetSize() - m_StreamPos; else - m_SampleSize = 256; + m_SampleSize = 256; m_File.LoadChunk (m_SampleSize, m_SampleL, m_SampleR); } + // finished trigger if (FinTrig) SetOutput (2, n, 1); else SetOutput (2, n, 0); if (m_Mode==PLAYM) { + // left and right outputs SetOutput (0, n, m_SampleL[m_Pos] * m_GUIArgs.Volume); SetOutput (1, n, m_SampleR[m_Pos] * m_GUIArgs.Volume); + // play trigger + SetOutput (3, n, 1); m_Pos += m_GUIArgs.PitchMod + CVPitch; m_GlobalPos += m_GUIArgs.PitchMod + CVPitch; } else { SetOutput (0, n, 0); SetOutput (1, n, 0); + SetOutput (3, n, 0); } } m_GUIArgs.TimeOut = m_GlobalPos / (float)m_SampleRate; diff --git a/SpiralSound/Plugins/StreamPlugin/StreamPlugin.h b/SpiralSound/Plugins/StreamPlugin/StreamPlugin.h index ca6eabc..0b7cec0 100644 --- a/SpiralSound/Plugins/StreamPlugin/StreamPlugin.h +++ b/SpiralSound/Plugins/StreamPlugin/StreamPlugin.h @@ -47,13 +47,9 @@ class StreamPlugin : public SpiralPlugin { float m_GlobalPos, m_Pitch, m_SamplePos, m_Pos; enum Mode { PLAYM, STOPM } m_Mode; struct GUIArgs { - float Volume; - float PitchMod; - char FileName[256]; - float Time; - float TimeOut; - bool PlayOut; - float MaxTime; + float Volume, PitchMod, Time, TimeOut, MaxTime; + char FileName[256]; + bool PlayOut; } m_GUIArgs; float GetLength (void); // Commands diff --git a/SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C b/SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C index 9a8eb54..e64f61f 100644 --- a/SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C +++ b/SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C @@ -19,7 +19,7 @@ #include "StreamPluginGUI.h" #include #include -#include +#include "../GUI/WaveChooser.h" using namespace std; @@ -30,9 +30,10 @@ SpiralPluginGUI(w,h,o,ch), m_Playing (false), m_PitchValue (1.0f) { + strcpy (m_TextBuf, ""); // 7 seg displays for (int dis=0; dis<6; dis++) { - m_Display[dis] = new Fl_SevenSeg (5 + 28*dis, 20, 28, 60); + m_Display[dis] = new Fl_SevenSeg (5 + 28*dis, 15, 28, 38); m_Display[dis] -> bar_width (4); m_Display[dis] -> color (Info->SCOPE_FG_COLOUR); m_Display[dis] -> color2 (Info->SCOPE_BG_COLOUR); @@ -40,7 +41,7 @@ m_PitchValue (1.0f) add (m_Display[dis]); } // volume control - m_Volume = new Fl_Knob (180, 15, 50, 50, "Volume"); + m_Volume = new Fl_Knob (180, 10, 50, 50, "Volume"); m_Volume->color (Info->GUI_COLOUR); m_Volume->type (Fl_Knob::LINELIN); m_Volume->labelsize (10); @@ -49,8 +50,15 @@ m_PitchValue (1.0f) m_Volume->value (1); m_Volume->callback ((Fl_Callback*)cb_Volume); add (m_Volume); + // filename display + m_FileName = new Fl_Input (5, 55, 170, 20, ""); + m_FileName->type (FL_NORMAL_OUTPUT); + m_FileName->textsize (8); + m_FileName->box (FL_PLASTIC_UP_BOX); + m_FileName->value ("Nothing Loaded"); + m_FileName->tooltip (m_TextBuf); // pitch indicator - m_Pitch = new Fl_Slider (5, 85, 235, 20, ""); + m_Pitch = new Fl_Slider (5, 78, 235, 20, ""); m_Pitch->type (FL_HORIZONTAL); m_Pitch->labelsize (10); m_Pitch->labelcolor (Info->GUI_COLOUR); @@ -62,7 +70,7 @@ m_PitchValue (1.0f) m_Pitch->callback ((Fl_Callback*)cb_Pitch); add (m_Pitch); // position indicator - m_Pos = new Fl_Slider (5, 108, 235, 20, ""); + m_Pos = new Fl_Slider (5, 100, 235, 20, ""); m_Pos->type (FL_HORIZONTAL); m_Pos->box (FL_PLASTIC_DOWN_BOX); m_Pos->labelcolor (Info->GUI_COLOUR); @@ -71,7 +79,7 @@ m_PitchValue (1.0f) m_Pos->callback ((Fl_Callback*)cb_Pos); add (m_Pos); // load btn - m_Load = new Fl_Button (2, 130, 30, 30, "Load"); + m_Load = new Fl_Button (2, 124, 30, 30, "Load"); m_Load->labelsize (9); m_Load->box (FL_PLASTIC_UP_BOX); m_Load->color (Info->GUI_COLOUR); @@ -79,7 +87,7 @@ m_PitchValue (1.0f) m_Load->callback ((Fl_Callback*)cb_Load); add (m_Load); // reset btn - m_ToStart = new Fl_Button (32, 130, 30, 30, "@|<"); + m_ToStart = new Fl_Button (32, 124, 30, 30, "@|<"); m_ToStart->labelsize (10); m_ToStart->labeltype (FL_SYMBOL_LABEL); m_ToStart->box (FL_PLASTIC_UP_BOX); @@ -88,7 +96,7 @@ m_PitchValue (1.0f) m_ToStart->callback ((Fl_Callback*)cb_ToStart); add (m_ToStart); // play btn - m_Play = new Fl_Button (62, 130, 30, 30, "@>"); + m_Play = new Fl_Button (62, 124, 30, 30, "@>"); m_Play->labelsize (10); m_Play->labeltype (FL_SYMBOL_LABEL); m_Play->box (FL_PLASTIC_UP_BOX); @@ -97,7 +105,7 @@ m_PitchValue (1.0f) m_Play->callback ((Fl_Callback*)cb_Play); add (m_Play); // normal speed btn - m_Reset = new Fl_Button (92, 130, 30, 30, "Reset"); + m_Reset = new Fl_Button (92, 124, 30, 30, "Reset"); m_Reset->labelsize (9); m_Reset->box (FL_PLASTIC_UP_BOX); m_Reset->color (Info->GUI_COLOUR); @@ -105,7 +113,7 @@ m_PitchValue (1.0f) m_Reset->callback ((Fl_Callback*)cb_Reset); add (m_Reset); // Reverse Button - m_Rev = new Fl_Button (122, 130, 30, 30, "@<-"); + m_Rev = new Fl_Button (122, 124, 30, 30, "@<-"); m_Rev->labelsize (10); m_Rev->labeltype (FL_SYMBOL_LABEL); m_Rev->box (FL_PLASTIC_UP_BOX); @@ -114,7 +122,7 @@ m_PitchValue (1.0f) 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 = new Fl_Button (152, 124, 30, 30, "/2"); m_Div->labelsize (9); m_Div->box (FL_PLASTIC_UP_BOX); m_Div->color (Info->GUI_COLOUR); @@ -122,7 +130,7 @@ m_PitchValue (1.0f) m_Div->callback ((Fl_Callback*)cb_Div); add (m_Div); // dbl speed btn - m_Dbl = new Fl_Button (182, 130, 30, 30, "X2"); + m_Dbl = new Fl_Button (182, 124, 30, 30, "X2"); m_Dbl->labelsize (9); m_Dbl->box (FL_PLASTIC_UP_BOX); m_Dbl->color (Info->GUI_COLOUR); @@ -130,7 +138,7 @@ m_PitchValue (1.0f) m_Dbl->callback ((Fl_Callback*)cb_Dbl); add (m_Dbl); // nudge btn - m_Nudge = new Fl_Repeat_Button (212, 130, 30, 30, "Nudge"); + m_Nudge = new Fl_Repeat_Button (212, 124, 30, 30, "Nudge"); m_Nudge->labelsize (9); m_Nudge->box (FL_PLASTIC_UP_BOX); m_Nudge->color (Info->GUI_COLOUR); @@ -158,6 +166,15 @@ void StreamPluginGUI::Update() { redraw(); SetMaxTime (m_GUICH->GetFloat ("MaxTime")); if (m_Playing != m_GUICH->GetBool ("Playing")) UpdatePlayStatus (); + m_GUICH->GetData ("EchoFileName", (void*)m_TextBuf); + if (*m_TextBuf == 0) { + m_FileName->value ("Nothing Loaded"); + m_FileName->position (0); + } + else { + m_FileName->value (m_TextBuf); + m_FileName->position (strlen (m_TextBuf)-1); + } } // Update GUI on load @@ -219,7 +236,7 @@ void StreamPluginGUI::cb_Pos (Fl_Slider* o, void* v) { // load inline void StreamPluginGUI::cb_Load_i (Fl_Button* o, void* v) { - char *fn=fl_file_chooser("Load a sample", "{*.wav,*.WAV}", NULL); + char *fn=WaveFileName (); if (fn && fn!='\0') { strcpy (m_TextBuf, fn); m_GUICH->SetData ("FileName", (void*)m_TextBuf); diff --git a/SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.h b/SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.h index d6b2c2c..5cdd8e8 100644 --- a/SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.h +++ b/SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.h @@ -21,6 +21,7 @@ #include #include +#include #include #include #include "StreamPlugin.h" @@ -46,6 +47,7 @@ class StreamPluginGUI : public SpiralPluginGUI { // Widgets Fl_SevenSeg *m_Display[6]; Fl_Knob *m_Volume; + Fl_Input *m_FileName; Fl_Slider *m_Pitch, *m_Pos; Fl_Button *m_Load, *m_ToStart, *m_Play, *m_Reset, *m_Rev, *m_Div, *m_Dbl; Fl_Repeat_Button* m_Nudge;