Browse Source

Lots of helptext, streamplugin ported

master
nebogeo 23 years ago
parent
commit
5b5846a375
28 changed files with 213 additions and 95 deletions
  1. +9
    -0
      SpiralSound/Plugins/DiskWriterPlugin/DiskWriterPluginGUI.C
  2. +4
    -1
      SpiralSound/Plugins/DiskWriterPlugin/DiskWriterPluginGUI.h
  3. +0
    -1
      SpiralSound/Plugins/JackPlugin/JackPlugin.h
  4. +18
    -0
      SpiralSound/Plugins/JackPlugin/JackPluginGUI.C
  5. +3
    -0
      SpiralSound/Plugins/JackPlugin/JackPluginGUI.h
  6. +1
    -1
      SpiralSound/Plugins/JackPlugin/Makefile.in
  7. +10
    -0
      SpiralSound/Plugins/KeyboardPlugin/KeyboardPluginGUI.C
  8. +3
    -0
      SpiralSound/Plugins/KeyboardPlugin/KeyboardPluginGUI.h
  9. +6
    -0
      SpiralSound/Plugins/LFOPlugin/LFOPluginGUI.C
  10. +3
    -0
      SpiralSound/Plugins/LFOPlugin/LFOPluginGUI.h
  11. +27
    -0
      SpiralSound/Plugins/MatrixPlugin/MatrixPluginGUI.C
  12. +3
    -0
      SpiralSound/Plugins/MatrixPlugin/MatrixPluginGUI.h
  13. +0
    -1
      SpiralSound/Plugins/MidiPlugin/MidiPlugin.C
  14. +23
    -0
      SpiralSound/Plugins/MidiPlugin/MidiPluginGUI.C
  15. +3
    -0
      SpiralSound/Plugins/MidiPlugin/MidiPluginGUI.h
  16. +12
    -0
      SpiralSound/Plugins/OutputPlugin/OutputPluginGUI.C
  17. +3
    -0
      SpiralSound/Plugins/OutputPlugin/OutputPluginGUI.h
  18. +18
    -0
      SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.C
  19. +3
    -0
      SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.h
  20. +11
    -0
      SpiralSound/Plugins/SeqSelectorPlugin/SeqSelectorPluginGUI.C
  21. +3
    -0
      SpiralSound/Plugins/SeqSelectorPlugin/SeqSelectorPluginGUI.h
  22. +1
    -1
      SpiralSound/Plugins/SpiralPluginGUI.C
  23. +10
    -18
      SpiralSound/Plugins/StreamPlugin/StreamPlugin.C
  24. +2
    -1
      SpiralSound/Plugins/StreamPlugin/StreamPlugin.h
  25. +30
    -69
      SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C
  26. +4
    -0
      SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.h
  27. +1
    -0
      SpiralSynthModularInfo.C
  28. +2
    -2
      configure.in

+ 9
- 0
SpiralSound/Plugins/DiskWriterPlugin/DiskWriterPluginGUI.C View File

@@ -82,3 +82,12 @@ inline void DiskWriterPluginGUI::cb_Record_i(Fl_Button* o, void* v)
} }
void DiskWriterPluginGUI::cb_Record(Fl_Button* o, void* v) void DiskWriterPluginGUI::cb_Record(Fl_Button* o, void* v)
{ ((DiskWriterPluginGUI*)(o->parent()))->cb_Record_i(o,v); } { ((DiskWriterPluginGUI*)(o->parent()))->cb_Record_i(o,v); }

const string DiskWriterPluginGUI::GetHelpText(const string &loc){
return string("")
+ "One way of recording your creations to disk. First open a file\n"
+ "you wish to save to, then hit record to start recording.\n"
+ "You are able to stop and restart recording without closing the\n"
+ "file, which should make life a little easier if you are doing\n"
+ "things like recording lots of little samples.";
}

+ 4
- 1
SpiralSound/Plugins/DiskWriterPlugin/DiskWriterPluginGUI.h View File

@@ -36,7 +36,10 @@ public:
DiskWriterPluginGUI(int w, int h, SpiralPlugin *o, ChannelHandler *ch, const HostInfo *Info); DiskWriterPluginGUI(int w, int h, SpiralPlugin *o, ChannelHandler *ch, const HostInfo *Info);
virtual void UpdateValues(SpiralPlugin *o); virtual void UpdateValues(SpiralPlugin *o);

protected:
const string GetHelpText(const string &loc);
private: private:


Fl_Button *Open; Fl_Button *Open;


+ 0
- 1
SpiralSound/Plugins/JackPlugin/JackPlugin.h View File

@@ -20,7 +20,6 @@
#include "../../RiffWav.h" #include "../../RiffWav.h"
#include <FL/Fl_Pixmap.H> #include <FL/Fl_Pixmap.H>
#include <map> #include <map>
#include <glib.h>
#include <jack/jack.h> #include <jack/jack.h>


typedef jack_default_audio_sample_t sample_t; typedef jack_default_audio_sample_t sample_t;


+ 18
- 0
SpiralSound/Plugins/JackPlugin/JackPluginGUI.C View File

@@ -229,3 +229,21 @@ inline void JackPluginGUI::cb_InputConnect_i(Fl_Button* o, void* v)
} }
void JackPluginGUI::cb_InputConnect(Fl_Button* o, void* v) void JackPluginGUI::cb_InputConnect(Fl_Button* o, void* v)
{ ((JackPluginGUI*)(o->parent()))->cb_InputConnect_i(o,v);} { ((JackPluginGUI*)(o->parent()))->cb_InputConnect_i(o,v);}

const string JackPluginGUI::GetHelpText(const string &loc){
return string("")
+ "JACK is the Jack Audio Connection Kit, and allows multiple Linux audio\n"
+ "apps to be connected together and run simultaneously in a low latency.\n"
+ "environment.\n\n"
+ "This plugin allows you to connect up to 8 inputs and outputs to other\n"
+ "JACK apps (providing a server is running)\n"
+ "You can use the JackPlugin to connect the ports, or a external program\n"
+ "such as the excellent qjackconnect app. Be aware however that if you\n"
+ "connect from an external app, the port GUI does not update itself yet.\n"
+ "Another problem yet to be fixed is that ssm will get confused if more\n"
+ "than one JackPlugin is being used. It's best to use one central\n"
+ "JackPlugin at this time.\n\n"
+ "When using JACK, make sure the buffer size and samplerate are set to\n"
+ "match the JACK server, otherwise glitchy playback, and/or crashes may\n"
+ "result";
}

+ 3
- 0
SpiralSound/Plugins/JackPlugin/JackPluginGUI.h View File

@@ -39,6 +39,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o); virtual void UpdateValues(SpiralPlugin *o);
virtual void Update(); virtual void Update();
protected:
const string GetHelpText(const string &loc);
private: private:




+ 1
- 1
SpiralSound/Plugins/JackPlugin/Makefile.in View File

@@ -11,7 +11,7 @@ CC = gcc
CXX = g++ CXX = g++
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
CXXFLAGS= @CXXFLAGS@ CXXFLAGS= @CXXFLAGS@
INCPATH = -I/usr/X11R6/include -I/usr/lib/glib/include/
INCPATH = -I/usr/X11R6/include
LINK = g++ -shared LINK = g++ -shared
LFLAGS = LFLAGS =
LIBS = -L/usr/X11R6/lib -L/usr/local/lib/ @FLTK_LIBS@ -lGL -lXext -lX11 -ldl -ljack -lpthread LIBS = -L/usr/X11R6/lib -L/usr/local/lib/ @FLTK_LIBS@ -lGL -lXext -lX11 -ldl -ljack -lpthread


+ 10
- 0
SpiralSound/Plugins/KeyboardPlugin/KeyboardPluginGUI.C View File

@@ -188,3 +188,13 @@ inline void KeyboardPluginGUI::cb_Key_i(Fl_Button* o, void* v)
} }
void KeyboardPluginGUI::cb_Key(Fl_Button* o, void* v) void KeyboardPluginGUI::cb_Key(Fl_Button* o, void* v)
{ ((KeyboardPluginGUI*)(o->parent()->user_data()))->cb_Key_i(o,v);} { ((KeyboardPluginGUI*)(o->parent()->user_data()))->cb_Key_i(o,v);}

const string KeyboardPluginGUI::GetHelpText(const string &loc){
return string("")
+ "This plugin provides you with a soft-keyboard if you don't have midi.\n"
+ "You can either use the mouse to play the keyboard GUI, or it will also\n"
+ "pick up PC keyboard presses in the ssm window.\n\n"
+ "The keyboard map follows the SoundTracker standard - i.e:\n"
+ "z=C4 s=C#4 x=D4 ... q=C5 2=C#5 w=D5...\n"
+ "The function keys change the octave.";
}

+ 3
- 0
SpiralSound/Plugins/KeyboardPlugin/KeyboardPluginGUI.h View File

@@ -41,6 +41,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o); virtual void UpdateValues(SpiralPlugin *o);
virtual void Update(); virtual void Update();
protected:
const string GetHelpText(const string &loc);
private: private:
int m_Num[NUM_KEYS]; int m_Num[NUM_KEYS];
Fl_Button* m_Key[NUM_KEYS]; Fl_Button* m_Key[NUM_KEYS];


+ 6
- 0
SpiralSound/Plugins/LFOPlugin/LFOPluginGUI.C View File

@@ -282,3 +282,9 @@ void LFOPluginGUI::cb_Saw (Fl_Check_Button* o, void* v) {
((LFOPluginGUI*)(o->parent()))->cb_Saw_i (o, v); ((LFOPluginGUI*)(o->parent()))->cb_Saw_i (o, v);
} }
const string LFOPluginGUI::GetHelpText(const string &loc){
return string("")
+ "A very low frequency oscillator. Also produces inverted and \"cosine\"\n"
+ "outputs (output phase shifted by 180 degrees)\n"
+ "Period length goes down to 2 minutes :]\n";
}

+ 3
- 0
SpiralSound/Plugins/LFOPlugin/LFOPluginGUI.h View File

@@ -31,6 +31,9 @@ class LFOPluginGUI : public SpiralPluginGUI {
LFOPluginGUI(int w, int h, LFOPlugin *o,ChannelHandler *ch,const HostInfo *Info); LFOPluginGUI(int w, int h, LFOPlugin *o,ChannelHandler *ch,const HostInfo *Info);
virtual void UpdateValues(SpiralPlugin *o); virtual void UpdateValues(SpiralPlugin *o);
protected:
const string GetHelpText(const string &loc);
private: private:
Fl_Check_Button* ShapeSine; Fl_Check_Button* ShapeSine;
Fl_Pixmap pixmap_Sine; Fl_Pixmap pixmap_Sine;


+ 27
- 0
SpiralSound/Plugins/MatrixPlugin/MatrixPluginGUI.C View File

@@ -415,3 +415,30 @@ void MatrixPluginGUI::cb_TransDnBtn (Fl_Button* o, void* v)
{ {
((MatrixPluginGUI*)(o->parent())) -> cb_TransDnBtn_i (o, v); ((MatrixPluginGUI*)(o->parent())) -> cb_TransDnBtn_i (o, v);
} }

const string MatrixPluginGUI::GetHelpText(const string &loc){
return string("")
+ "This is a matrix style step sequencer for techno purists. Great for\n"
+ "drum programming, but also capable of robotic bass and melodies.\n\n"
+ "Note events are turned on and off by activating the 64*32 grid of\n"
+ "toggle buttons on the GUI. The speed and octave of the notes can be\n"
+ "set. The length of the pattern in notes and note cut are also\n"
+ "present. The current play position is indicated by the row of LED's\n"
+ "along the top of the plugin window. You can copy and paste between\n"
+ "different patterns and transpose the notes\n\n"
+ "16 triggers are supplied for simultaneous triggering of samples in the\n"
+ "sampler plugin (for instance).\n\n"
+ "Each Matrix plugin can contain up to 16 different patterns, these are\n"
+ "selectable on the plugin GUI, and triggerable by the play trigger CV.\n"
+ "This CV input takes a note frequency CV rather than just a trigger,\n"
+ "and the bottom 16 notes on the midi scale trigger the 16 patterns.\n"
+ "This means that a matrix can trigger another matrix, if set to a much\n"
+ "lower speed, and (set to octave 0) the notes trigger the differnt\n"
+ "patterns in the slave matrix.\n\n"
+ "The external clock input is an important alternative to the matrixes\n"
+ "internal clock, it allows you to have multiple matrixes powered from one\n"
+ "oscillator clock. To allow you to sync these matrixes, the matrix is\n"
+ "provided with a Reset Trigger, which when plugged into the Play Trigger\n"
+ "of another matrix, will synch the two so they start at the same clock\n"
+ "pulse.";
}

+ 3
- 0
SpiralSound/Plugins/MatrixPlugin/MatrixPluginGUI.h View File

@@ -71,6 +71,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o); virtual void UpdateValues(SpiralPlugin *o);
virtual void Update(); virtual void Update();
protected:
const string GetHelpText(const string &loc);
private: private:
void UpdateMatrix(); void UpdateMatrix();


+ 0
- 1
SpiralSound/Plugins/MidiPlugin/MidiPlugin.C View File

@@ -310,4 +310,3 @@ void MidiPlugin::StreamIn(istream &s)
} }
} }
} }


+ 23
- 0
SpiralSound/Plugins/MidiPlugin/MidiPluginGUI.C View File

@@ -283,3 +283,26 @@ inline void MidiPluginGUI::cb_RemoveControl_i(Fl_Button* o, void* v)
} }
void MidiPluginGUI::cb_RemoveControl(Fl_Button* o, void* v) void MidiPluginGUI::cb_RemoveControl(Fl_Button* o, void* v)
{ ((MidiPluginGUI*)(o->parent()))->cb_RemoveControl_i(o,v);} { ((MidiPluginGUI*)(o->parent()))->cb_RemoveControl_i(o,v);}

const string MidiPluginGUI::GetHelpText(const string &loc){
return string("")
+ "A plugin that converts midi signals into SSM's CVs. The midi plugin\n"
+ "outputs a Frequency CV, which comes from the last note pressed and\n"
+ "Trigger CV which lets you know the timing and the velocity of the\n"
+ "event.\n"
+ "It also detects pitchbend, channel pressure and aftertouch information,\n"
+ "and outputs these as continuous CV data.\n\n"
+ "You can select the Midi device used with the selector. Devices 0-16 are\n"
+ "valid Midi channels. You can run multiple Midi plugins simultaneously\n"
+ "to get data from different device numbers to make an externally\n"
+ "controlled song.\n\n"
+ "The note frequency CV can optionally be switched into \"Note Cut\" mode,\n"
+ "where the frequecy is set to zero when the key is released. This is\n"
+ "useful for a number of things, including retriggering samples from\n"
+ "frequency information (see sampler).\n"
+ "Extra ports can be added to handle the 128 controller messages. Click\n"
+ "add control, and you will get a menu window to pick the controller you\n"
+ "need.\n"
+ "The MidiPlugin also supports midi note output to external devices";
}


+ 3
- 0
SpiralSound/Plugins/MidiPlugin/MidiPluginGUI.h View File

@@ -40,6 +40,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o); virtual void UpdateValues(SpiralPlugin *o);
protected:
const string GetHelpText(const string &loc);
private: private:
Fl_Counter* m_DeviceNum; Fl_Counter* m_DeviceNum;


+ 12
- 0
SpiralSound/Plugins/OutputPlugin/OutputPluginGUI.C View File

@@ -131,3 +131,15 @@ inline void OutputPluginGUI::cb_OpenWrite_i(Fl_Button* o, void* v)
} }
void OutputPluginGUI::cb_OpenWrite(Fl_Button* o, void* v) void OutputPluginGUI::cb_OpenWrite(Fl_Button* o, void* v)
{ ((OutputPluginGUI*)(o->parent()))->cb_OpenWrite_i(o,v); } { ((OutputPluginGUI*)(o->parent()))->cb_OpenWrite_i(o,v); }


const string OutputPluginGUI::GetHelpText(const string &loc){
return string("")
+ "Your basic OSS i/o plugin, It opens the OSS sound driver, and outputs\n"
+ "whatever is passed into it's inputs to the soundcard. It works in stereo,\n"
+ "so you have seperate left and right inputs.\n\n"
+ "There are three modes of operation: read, write and duplex. You can select\n"
+ "read to record/process sound from your soundcard, write to play sound\n"
+ "(default) and if your card supports it - duplex, to play and record \n"
+ "simultaneously.";
}

+ 3
- 0
SpiralSound/Plugins/OutputPlugin/OutputPluginGUI.h View File

@@ -37,6 +37,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o); virtual void UpdateValues(SpiralPlugin *o);
protected:
const string GetHelpText(const string &loc);
private: private:


Fl_Group *GUIMixGroup; Fl_Group *GUIMixGroup;


+ 18
- 0
SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.C View File

@@ -675,3 +675,21 @@ inline void PoshSamplerPluginGUI::cb_ZoomOut_i(Fl_Button* o, void* v)
} }
void PoshSamplerPluginGUI::cb_ZoomOut(Fl_Button* o, void* v) void PoshSamplerPluginGUI::cb_ZoomOut(Fl_Button* o, void* v)
{ ((PoshSamplerPluginGUI*)(o->parent()))->cb_ZoomOut_i(o,v);} { ((PoshSamplerPluginGUI*)(o->parent()))->cb_ZoomOut_i(o,v);}

const string PoshSamplerPluginGUI::GetHelpText(const string &loc){
return string("")
+ "A sampler that allows simple sample editing (cut copy paste etc),\n"
+ "dirty time stretching (by modulating the start pos + retriggering +\n"
+ "modulating pitch) and loop start/end points with ping pong loop mode.\n"
+ "Also implementations of controls, such as continuous pitch changing,\n"
+ "so you can add portmento to samples, trigger velocity sets sample\n"
+ "volume.\n\n"
+ "Can records input data too.\n\n"
+ "Controls:\n"
+ "lmb: Select region\n"
+ "mmb: Move view\n"
+ "rmb: Draws samples at full zoom.\n\n"
+ "Left mouse also drags loop points. The Loop end marker defaults to the\n"
+ "end of the sample.\n\n"
+ "Note: The loading and saving of samples is not yet realtime safe";
}

+ 3
- 0
SpiralSound/Plugins/PoshSamplerPlugin/PoshSamplerPluginGUI.h View File

@@ -81,6 +81,9 @@ public:
void SetPlayPos(long s) { m_Display->SetPlayPos(s); } void SetPlayPos(long s) { m_Display->SetPlayPos(s); }
int GetCurrentSample() { return (int)m_SampleNum->value(); } int GetCurrentSample() { return (int)m_SampleNum->value(); }
protected:
const string GetHelpText(const string &loc);
private: private:


void UpdateSampleDisplay(int num); void UpdateSampleDisplay(int num);


+ 11
- 0
SpiralSound/Plugins/SeqSelectorPlugin/SeqSelectorPluginGUI.C View File

@@ -287,3 +287,14 @@ inline void SeqSelectorPluginGUI::cb_UseRange_i(Fl_Button* o, void* v)
} }
void SeqSelectorPluginGUI::cb_UseRange(Fl_Button* o, void* v) void SeqSelectorPluginGUI::cb_UseRange(Fl_Button* o, void* v)
{ ((SeqSelectorPluginGUI*)(o->parent()))->cb_UseRange_i(o,v); } { ((SeqSelectorPluginGUI*)(o->parent()))->cb_UseRange_i(o,v); }

const string SeqSelectorPluginGUI::GetHelpText(const string &loc){
return string("")
+ "The SeqSelector is designed to allow you to syncronise and select up\n"
+ "to 8 Sequencer or Matrix patterns into tracks. When the SeqSelector\n"
+ "recieves a trigger (which could come from a master pattern, or a clock\n"
+ "oscillator) it will briefly flash the next set of values to its outputs,\n"
+ "triggering the next patterns on it's slave sequencers or matrix plugins.\n\n"
+ "You can also specify a loop, which will be used if the \"use range\"\n"
+ "button is activated. This is useful for auditioning sections of a track.";
}

+ 3
- 0
SpiralSound/Plugins/SeqSelectorPlugin/SeqSelectorPluginGUI.h View File

@@ -72,6 +72,9 @@ public:
void StreamOut(ostream &s); void StreamOut(ostream &s);
void StreamIn(istream &s); void StreamIn(istream &s);
protected:
const string GetHelpText(const string &loc);
private: private:
int m_LastLight; int m_LastLight;


+ 1
- 1
SpiralSound/Plugins/SpiralPluginGUI.C View File

@@ -83,7 +83,7 @@ inline void SpiralPluginGUI::cb_Help_i(Fl_Button* o, void* v)
{ {
if (m_HelpWin==NULL) if (m_HelpWin==NULL)
{ {
int w=300,h=200;
int w=330,h=200;
m_HelpWin = new Fl_Double_Window(w,h,"Help"); m_HelpWin = new Fl_Double_Window(w,h,"Help");


Fl_Text_Display* text = new Fl_Text_Display(0,0,10,10); Fl_Text_Display* text = new Fl_Text_Display(0,0,10,10);


+ 10
- 18
SpiralSound/Plugins/StreamPlugin/StreamPlugin.C View File

@@ -76,11 +76,11 @@ m_Mode(STOPM)
m_AudioCH->RegisterData("FileName",ChannelHandler::INPUT,&m_FileNameArg,sizeof(m_FileNameArg)); m_AudioCH->RegisterData("FileName",ChannelHandler::INPUT,&m_FileNameArg,sizeof(m_FileNameArg));
m_AudioCH->Register("Time",&m_TimeArg); m_AudioCH->Register("Time",&m_TimeArg);
m_AudioCH->Register("TimeOut",&m_TimeOut,ChannelHandler::OUTPUT); m_AudioCH->Register("TimeOut",&m_TimeOut,ChannelHandler::OUTPUT);
m_AudioCH->Register("MaxTime",&m_MaxTime,ChannelHandler::OUTPUT);
} }


StreamPlugin::~StreamPlugin() StreamPlugin::~StreamPlugin()
{ {
cerr << "I'm deleted" << endl;
} }


PluginInfo &StreamPlugin::Initialise(const HostInfo *Host) PluginInfo &StreamPlugin::Initialise(const HostInfo *Host)
@@ -141,10 +141,7 @@ void StreamPlugin::Execute()
m_Pos+=m_StreamDesc.PitchMod+CVPitch; m_Pos+=m_StreamDesc.PitchMod+CVPitch;
m_GlobalPos+=m_StreamDesc.PitchMod+CVPitch; m_GlobalPos+=m_StreamDesc.PitchMod+CVPitch;
} }
//if (((StreamPluginGUI*)m_GUI)->visible())
// ((StreamPluginGUI*)m_GUI)->SetTime(GetTime());
//Joe must fix this.

m_TimeOut=GetTime(); m_TimeOut=GetTime();
} }
} }
@@ -155,14 +152,11 @@ void StreamPlugin::ExecuteCommands()
{ {
switch(m_AudioCH->GetCommand()) 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 (LOAD) : OpenStream(m_FileNameArg); break;
case (RESTART) : Restart(); break;
case (STOP) : Stop(); break;
case (PLAY) : Play(); break;
case (NUDGE) : Nudge(); break;
case (SET_TIME) : SetTime(m_TimeArg); break; case (SET_TIME) : SetTime(m_TimeArg); break;
} }
} }
@@ -220,12 +214,10 @@ void StreamPlugin::OpenStream(const string &Name)
m_StreamDesc.Pitch = m_StreamDesc.SampleRate/(float)m_HostInfo->SAMPLERATE; m_StreamDesc.Pitch = m_StreamDesc.SampleRate/(float)m_HostInfo->SAMPLERATE;
if (m_StreamDesc.Stereo) if (m_StreamDesc.Stereo)
{ {
m_StreamDesc.Pitch*=2;
//((StreamPluginGUI*)m_GUI)->SetMaxTime(GetLength());
m_StreamDesc.Pitch*=2;
m_MaxTime=GetLength();
} }
//else ((StreamPluginGUI*)m_GUI)->SetMaxTime(GetLength()/2);
//Joe this must use the chanel handler
else m_MaxTime=GetLength()/2;
} }


void StreamPlugin::Restart() void StreamPlugin::Restart()


+ 2
- 1
SpiralSound/Plugins/StreamPlugin/StreamPlugin.h View File

@@ -44,7 +44,7 @@ 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};
enum GUICommands{NONE,LOAD,RESTART,STOP,PLAY,HALF,RESET,DOUBLE,NUDGE,SET_TIME};


StreamPlugin(); StreamPlugin();
virtual ~StreamPlugin(); virtual ~StreamPlugin();
@@ -92,6 +92,7 @@ private:
char m_FileNameArg[256]; char m_FileNameArg[256];
float m_TimeArg; float m_TimeArg;
float m_TimeOut; float m_TimeOut;
float m_MaxTime;
}; };


#endif #endif

+ 30
- 69
SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C View File

@@ -32,13 +32,9 @@ char PitchLabel[256];
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)
{ {

//int Width=20;
//int Height=100;
//What are Width and Height for.

m_PitchValue=1.0f; m_PitchValue=1.0f;
m_TempPitch=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);
m_Load->callback((Fl_Callback*)cb_Load); m_Load->callback((Fl_Callback*)cb_Load);
@@ -84,9 +80,6 @@ SpiralPluginGUI(w,h,o,ch)
m_Nudge->callback((Fl_Callback*)cb_Nudge); m_Nudge->callback((Fl_Callback*)cb_Nudge);
add(m_Nudge); add(m_Nudge);
// Andy Preston changed
// m_Volume = new Fl_Knob(170, 15, 50, 50, "Volume");
// to
m_Volume = new Fl_Knob (180, 15, 50, 50, "Volume"); m_Volume = new Fl_Knob (180, 15, 50, 50, "Volume");
m_Volume->color(GUI_COLOUR); m_Volume->color(GUI_COLOUR);
m_Volume->type(Fl_Knob::LINELIN); m_Volume->type(Fl_Knob::LINELIN);
@@ -110,40 +103,7 @@ SpiralPluginGUI(w,h,o,ch)
m_Pitch->callback((Fl_Callback*)cb_Pitch); m_Pitch->callback((Fl_Callback*)cb_Pitch);
add(m_Pitch); add(m_Pitch);


// Andy Preston changed
// int k=4;
// m_Display[0] = new Fl_SevenSeg(10, 20, 30, 60);
// m_Display[0]->bar_width(k);
// m_Display[0]->color(FL_WHITE);
// m_Display[0]->color2(GUI_COLOUR);
// add(m_Display[0]);
// m_Display[1] = new Fl_SevenSeg(30, 20, 30, 60);
// m_Display[1]->bar_width(k);
// m_Display[1]->color(FL_WHITE);
// m_Display[1]->color2(GUI_COLOUR);
// add(m_Display[1]);
// m_Display[2] = new Fl_SevenSeg(60, 20, 30, 60);
// m_Display[2]->bar_width(k);
// m_Display[2]->color(FL_WHITE);
// m_Display[2]->color2(GUI_COLOUR);
// add(m_Display[2]);
// m_Display[3] = new Fl_SevenSeg(80, 20, 30, 60);
// m_Display[3]->bar_width(k);
// m_Display[3]->color(FL_WHITE);
// m_Display[3]->color2(GUI_COLOUR);
// add(m_Display[3]);
// m_Display[4] = new Fl_SevenSeg(110, 20, 30, 60);
// m_Display[4]->bar_width(k);
// m_Display[4]->color(FL_WHITE);
// m_Display[4]->color2(GUI_COLOUR);
// add(m_Display[4]);
// m_Display[5] = new Fl_SevenSeg(130, 20, 30, 60);
// m_Display[5]->bar_width(k);
// m_Display[5]->color(FL_WHITE);
// m_Display[5]->color2(GUI_COLOUR);
// add(m_Display[5]);
// to
for (int dis=0; dis<6; dis++) {
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, 20, 28, 60);
m_Display[dis] -> bar_width (4); m_Display[dis] -> bar_width (4);
m_Display[dis] -> color (FL_WHITE); m_Display[dis] -> color (FL_WHITE);
@@ -163,7 +123,6 @@ SpiralPluginGUI(w,h,o,ch)


StreamPluginGUI::~StreamPluginGUI() StreamPluginGUI::~StreamPluginGUI()
{ {
cerr << "~StreamPluginGUI" << endl;
} }


void StreamPluginGUI::Update() void StreamPluginGUI::Update()
@@ -182,26 +141,9 @@ void StreamPluginGUI::Update()
m_Display[0]->value((int)(t/600)%10); m_Display[0]->value((int)(t/600)%10);
redraw(); redraw();


}

/*void StreamPluginGUI::SetTime()
{
cerr << "foo" << endl;
float t=m_GUICH->GetFloat("TimeOut");

m_Pos->value(t);

m_Display[5]->value((int)(t*100)%10);
m_Display[4]->value((int)(t*10)%10);

m_Display[3]->value((int)t%10);
m_Display[2]->value((int)(t/10)%6);

m_Display[1]->value((int)(t/60)%10);
m_Display[0]->value((int)(t/600)%10);
redraw();
}*/
SetMaxTime(m_GUICH->GetFloat("MaxTime"));


}


void StreamPluginGUI::UpdateValues(SpiralPlugin *o) void StreamPluginGUI::UpdateValues(SpiralPlugin *o)
{ {
@@ -219,8 +161,10 @@ inline void StreamPluginGUI::cb_Load_i(Fl_Button* o, void* v)
if (fn && fn!='\0') if (fn && fn!='\0')
{ {
strcpy(m_TextBuf,fn); strcpy(m_TextBuf,fn);
m_GUICH->Set("FileName",m_TextBuf);
m_GUICH->SetData("FileName",(void*)m_TextBuf);
m_GUICH->SetCommand(StreamPlugin::LOAD); m_GUICH->SetCommand(StreamPlugin::LOAD);
m_GUICH->Wait();
SetMaxTime(m_GUICH->GetFloat("MaxTime"));
} }
} }
void StreamPluginGUI::cb_Load(Fl_Button* o, void* v) void StreamPluginGUI::cb_Load(Fl_Button* o, void* v)
@@ -244,7 +188,7 @@ void StreamPluginGUI::cb_Pitch(Fl_Slider* o, void* v)
inline void StreamPluginGUI::cb_Loop_i(Fl_Button* o, void* v) //Why is this function named so. inline void StreamPluginGUI::cb_Loop_i(Fl_Button* o, void* v) //Why is this function named so.
{ {
m_PitchValue*=2.0f; m_PitchValue*=2.0f;
m_GUICH->SetCommand(StreamPlugin::DOUBLE);
m_GUICH->Set("Pitch",m_PitchValue);
sprintf(PitchLabel,"%1.3f ",m_PitchValue); sprintf(PitchLabel,"%1.3f ",m_PitchValue);
m_Pitch->label(PitchLabel); m_Pitch->label(PitchLabel);
m_Pitch->value(m_PitchValue+10); m_Pitch->value(m_PitchValue+10);
@@ -256,7 +200,7 @@ 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)
{ {
m_PitchValue/=2.0f; m_PitchValue/=2.0f;
m_GUICH->SetCommand(StreamPlugin::HALF);
m_GUICH->Set("Pitch",m_PitchValue);
sprintf(PitchLabel,"%1.3f ",m_PitchValue); sprintf(PitchLabel,"%1.3f ",m_PitchValue);
m_Pitch->label(PitchLabel); m_Pitch->label(PitchLabel);
m_Pitch->value(m_PitchValue+10); m_Pitch->value(m_PitchValue+10);
@@ -271,18 +215,25 @@ 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_GUICH->SetCommand(StreamPlugin::STOP); }
{
m_TempPitch=m_PitchValue;
m_PitchValue=0;
m_GUICH->Set("Pitch",m_PitchValue);
}
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_GUICH->SetCommand(StreamPlugin::PLAY); }
{
m_PitchValue=m_TempPitch;
m_GUICH->Set("Pitch",m_PitchValue);
}
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_GUICH->SetCommand(StreamPlugin::RESET);
m_GUICH->Set("Pitch",1.0f);
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);
@@ -307,3 +258,13 @@ inline void StreamPluginGUI::cb_Pos_i(Fl_Slider* o, void* v)
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);}


const string StreamPluginGUI::GetHelpText(const string &loc){
return string("")
+ "If you want to mix whole tracks and add effects etc, then this is the\n"
+ "way to do it. The StreamPlugin loads a wav in bit by bit, so it doesn't\n"
+ "use much memory. The track can be pitched for mixing.\n"
+ "Operates pretty much like a media player such as XMMS (only wav\n"
+ "format though).\n\n"
+ "Note: Not realtime safe, if you're using JACK, use a client such as\n"
+ "alsaplayer.";
}

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

@@ -45,6 +45,9 @@ public:
//void SetTime(); //void SetTime();
void SetMaxTime(float t) { m_Pos->maximum(t); } void SetMaxTime(float t) { m_Pos->maximum(t); }


protected:
const string GetHelpText(const string &loc);
private: private:
Fl_Button* m_Load; Fl_Button* m_Load;
@@ -67,6 +70,7 @@ private:
char m_TextBuf[256]; char m_TextBuf[256];


float m_PitchValue; float m_PitchValue;
float m_TempPitch;
//// Callbacks //// //// Callbacks ////
inline void cb_Load_i(Fl_Button* o, void* v); inline void cb_Load_i(Fl_Button* o, void* v);


+ 1
- 0
SpiralSynthModularInfo.C View File

@@ -100,6 +100,7 @@ SpiralSynthModularInfo::SpiralSynthModularInfo()
PLUGINVEC.push_back("XFadePlugin.so"); PLUGINVEC.push_back("XFadePlugin.so");
PLUGINVEC.push_back("DistributorPlugin.so"); PLUGINVEC.push_back("DistributorPlugin.so");
PLUGINVEC.push_back("SplitterPlugin.so"); PLUGINVEC.push_back("SplitterPlugin.so");
PLUGINVEC.push_back("StreamPlugin.so");
} }


void SpiralSynthModularInfo::StreamInPrefs(istream &s) void SpiralSynthModularInfo::StreamInPrefs(istream &s)


+ 2
- 2
configure.in View File

@@ -41,14 +41,14 @@ if test $ac_arg_jack = "Y" ; then
PLUGINLIST="AmpPlugin ControllerPlugin DelayPlugin EchoPlugin EnvFollowerPlugin \ PLUGINLIST="AmpPlugin ControllerPlugin DelayPlugin EchoPlugin EnvFollowerPlugin \
EnvelopePlugin FilterPlugin MatrixPlugin MidiPlugin MixerPlugin MoogFilterPlugin \ EnvelopePlugin FilterPlugin MatrixPlugin MidiPlugin MixerPlugin MoogFilterPlugin \
NoteSnapPlugin OscillatorPlugin OutputPlugin RingModPlugin SVFilterPlugin \ NoteSnapPlugin OscillatorPlugin OutputPlugin RingModPlugin SVFilterPlugin \
SampleHoldPlugin ScopePlugin SmoothPlugin SplitterPlugin StereoMixerPlugin\
SampleHoldPlugin ScopePlugin SmoothPlugin SplitterPlugin StereoMixerPlugin StreamPlugin\
WaveTablePlugin LADSPAPlugin XFadePlugin PoshSamplerPlugin SeqSelectorPlugin\ WaveTablePlugin LADSPAPlugin XFadePlugin PoshSamplerPlugin SeqSelectorPlugin\
DistributorPlugin LFOPlugin KeyboardPlugin DiskWriterPlugin JackPlugin" DistributorPlugin LFOPlugin KeyboardPlugin DiskWriterPlugin JackPlugin"
else else
PLUGINLIST="AmpPlugin ControllerPlugin DelayPlugin EchoPlugin EnvFollowerPlugin \ PLUGINLIST="AmpPlugin ControllerPlugin DelayPlugin EchoPlugin EnvFollowerPlugin \
EnvelopePlugin FilterPlugin MatrixPlugin MidiPlugin MixerPlugin MoogFilterPlugin \ EnvelopePlugin FilterPlugin MatrixPlugin MidiPlugin MixerPlugin MoogFilterPlugin \
NoteSnapPlugin OscillatorPlugin OutputPlugin RingModPlugin SVFilterPlugin \ NoteSnapPlugin OscillatorPlugin OutputPlugin RingModPlugin SVFilterPlugin \
SampleHoldPlugin ScopePlugin SmoothPlugin SplitterPlugin StereoMixerPlugin\
SampleHoldPlugin ScopePlugin SmoothPlugin SplitterPlugin StereoMixerPlugin StreamPlugin\
WaveTablePlugin LADSPAPlugin XFadePlugin PoshSamplerPlugin SeqSelectorPlugin\ WaveTablePlugin LADSPAPlugin XFadePlugin PoshSamplerPlugin SeqSelectorPlugin\
DistributorPlugin LFOPlugin KeyboardPlugin DiskWriterPlugin" DistributorPlugin LFOPlugin KeyboardPlugin DiskWriterPlugin"
fi fi


Loading…
Cancel
Save