Browse Source

Stream GUI upgrades, SndFile Dialogs, Jack tidy

master
edgeeffect 21 years ago
parent
commit
005d4fbab8
12 changed files with 170 additions and 67 deletions
  1. +49
    -0
      SpiralSound/Plugins/GUI/WaveChooser.C
  2. +24
    -0
      SpiralSound/Plugins/GUI/WaveChooser.h
  3. +3
    -3
      SpiralSound/Plugins/JackPlugin/JackPluginGUI.C
  4. +6
    -0
      SpiralSound/Plugins/PoshSamplerPlugin/Makefile.in
  5. +13
    -13
      SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.C
  6. +7
    -1
      SpiralSound/Plugins/SpiralLoopPlugin/Makefile.in
  7. +3
    -4
      SpiralSound/Plugins/SpiralLoopPlugin/SpiralLoopPluginGUI.C
  8. +6
    -0
      SpiralSound/Plugins/StreamPlugin/Makefile.in
  9. +23
    -25
      SpiralSound/Plugins/StreamPlugin/StreamPlugin.C
  10. +3
    -7
      SpiralSound/Plugins/StreamPlugin/StreamPlugin.h
  11. +31
    -14
      SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C
  12. +2
    -0
      SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.h

+ 49
- 0
SpiralSound/Plugins/GUI/WaveChooser.C View File

@@ -0,0 +1,49 @@
/* SpiralSound
* Copyleft (C) 2001 David 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 "WaveChooser.h"
#include <string>
#include <FL/fl_file_chooser.h>
#include "../../../config.h"

#ifdef USE_LIBSNDFILE
#include <sndfile.h>
#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;
}

+ 24
- 0
SpiralSound/Plugins/GUI/WaveChooser.h View File

@@ -0,0 +1,24 @@
/* SpiralSound
* Copyleft (C) 2001 David 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 WaveChooser
#define WaveChooser

char *WaveFileName (void);

#endif

+ 3
- 3
SpiralSound/Plugins/JackPlugin/JackPluginGUI.C View File

@@ -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);


+ 6
- 0
SpiralSound/Plugins/PoshSamplerPlugin/Makefile.in View File

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


+ 13
- 13
SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.C View File

@@ -19,6 +19,7 @@
#include "PoshSamplerPluginGUI.h"
#include <FL/fl_draw.h>
#include <FL/fl_draw.H>
#include "../GUI/WaveChooser.h"
#include <FL/fl_file_chooser.h>

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());


+ 7
- 1
SpiralSound/Plugins/SpiralLoopPlugin/Makefile.in View File

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


+ 3
- 4
SpiralSound/Plugins/SpiralLoopPlugin/SpiralLoopPluginGUI.C View File

@@ -20,6 +20,7 @@
#include <FL/fl_draw.h>
#include <FL/fl_draw.H>
#include <FL/fl_file_chooser.h>
#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); }


+ 6
- 0
SpiralSound/Plugins/StreamPlugin/Makefile.in View File

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



+ 23
- 25
SpiralSound/Plugins/StreamPlugin/StreamPlugin.C View File

@@ -21,38 +21,27 @@
#include "SpiralIcon.xpm"
#include "../../NoteTable.h"
#include <stdio.h>

#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;


+ 3
- 7
SpiralSound/Plugins/StreamPlugin/StreamPlugin.h View File

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


+ 31
- 14
SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C View File

@@ -19,7 +19,7 @@
#include "StreamPluginGUI.h"
#include <FL/fl_draw.h>
#include <FL/fl_draw.H>
#include <FL/fl_file_chooser.h>
#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);


+ 2
- 0
SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.h View File

@@ -21,6 +21,7 @@

#include <FL/Fl.H>
#include <FL/Fl_Slider.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Repeat_Button.H>
#include <FL/Fl_Button.H>
#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;


Loading…
Cancel
Save