Browse Source

Added Patrick's helptext and reduce the wire redraw rate.

master
nebogeo 22 years ago
parent
commit
9dd738599f
31 changed files with 236 additions and 57 deletions
  1. +51
    -52
      GUI/Widgets/Fl_Canvas.C
  2. +4
    -1
      GUI/Widgets/Fl_Canvas.h
  3. +7
    -0
      SpiralSound/Plugins/AmpPlugin/AmpPluginGUI.C
  4. +3
    -0
      SpiralSound/Plugins/AmpPlugin/AmpPluginGUI.h
  5. +10
    -0
      SpiralSound/Plugins/ControllerPlugin/ControllerPluginGUI.C
  6. +4
    -1
      SpiralSound/Plugins/ControllerPlugin/ControllerPluginGUI.h
  7. +18
    -0
      SpiralSound/Plugins/DelayPlugin/DelayPluginGUI.C
  8. +4
    -1
      SpiralSound/Plugins/DelayPlugin/DelayPluginGUI.h
  9. +7
    -0
      SpiralSound/Plugins/EchoPlugin/EchoPluginGUI.C
  10. +3
    -0
      SpiralSound/Plugins/EchoPlugin/EchoPluginGUI.h
  11. +0
    -1
      SpiralSound/Plugins/Edit.sh
  12. +11
    -0
      SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPluginGUI.C
  13. +3
    -0
      SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPluginGUI.h
  14. +16
    -0
      SpiralSound/Plugins/EnvelopePlugin/EnvelopePluginGUI.C
  15. +3
    -0
      SpiralSound/Plugins/EnvelopePlugin/EnvelopePluginGUI.h
  16. +7
    -0
      SpiralSound/Plugins/MixerPlugin/MixerPluginGUI.C
  17. +3
    -0
      SpiralSound/Plugins/MixerPlugin/MixerPluginGUI.h
  18. +5
    -0
      SpiralSound/Plugins/NoteSnapPlugin/NoteSnapPluginGUI.C
  19. +3
    -0
      SpiralSound/Plugins/NoteSnapPlugin/NoteSnapPluginGUI.h
  20. +10
    -0
      SpiralSound/Plugins/RingModPlugin/RingModPluginGUI.C
  21. +3
    -0
      SpiralSound/Plugins/RingModPlugin/RingModPluginGUI.h
  22. +8
    -1
      SpiralSound/Plugins/SampleHoldPlugin/SampleHoldPluginGUI.C
  23. +3
    -0
      SpiralSound/Plugins/SampleHoldPlugin/SampleHoldPluginGUI.h
  24. +8
    -0
      SpiralSound/Plugins/ScopePlugin/ScopePluginGUI.C
  25. +3
    -0
      SpiralSound/Plugins/ScopePlugin/ScopePluginGUI.h
  26. +15
    -0
      SpiralSound/Plugins/SmoothPlugin/SmoothPluginGUI.C
  27. +3
    -0
      SpiralSound/Plugins/SmoothPlugin/SmoothPluginGUI.h
  28. +6
    -0
      SpiralSound/Plugins/SplitterPlugin/SplitterPluginGUI.C
  29. +3
    -0
      SpiralSound/Plugins/SplitterPlugin/SplitterPluginGUI.h
  30. +9
    -0
      SpiralSound/Plugins/StereoMixerPlugin/StereoMixerPluginGUI.C
  31. +3
    -0
      SpiralSound/Plugins/StereoMixerPlugin/StereoMixerPluginGUI.h

+ 51
- 52
GUI/Widgets/Fl_Canvas.C View File

@@ -22,11 +22,9 @@
#include <iostream>
#include "../../SpiralSynthModularInfo.h"

//#define IMG_BACKGROUND

#ifdef IMG_BACKGROUND
#include <png.h>
#endif
// no of calls to handle when dragged, before the widget is redrawn
// to allow the wire (connection currently being made) to be redrawn
static const int UPDATE_TICKS = 5;

////////////////////////////////////////////////////////////////////////

@@ -35,7 +33,8 @@ Fl_Group(x,y,w,h,name),
cb_Connection(NULL),
cb_Unconnect(NULL),
cb_AddDevice(NULL),
m_ToolMenu(false)
m_ToolMenu(false),
m_UpdateTimer(0)
{
m_IncompleteWire.OutputChild=-1;
m_IncompleteWire.OutputPort=-1;
@@ -44,55 +43,16 @@ m_ToolMenu(false)
m_BG=NULL;
m_BGData=NULL;
#ifdef IMG_BACKGROUND
if (SpiralSynthModularInfo::BGIMG=="None") return;
FILE *fp=fopen(SpiralSynthModularInfo::BGIMG.c_str(),"rb");
if (!fp)
{
SpiralInfo::Alert("Couldn't open image ["+SpiralSynthModularInfo::BGIMG+"]");
}
else
{
png_structp png_ptr;
png_infop info_ptr;
png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
info_ptr = png_create_info_struct(png_ptr);
png_init_io(png_ptr, fp);
png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);
fclose(fp);
m_BGData = new char[png_ptr->rowbytes*png_ptr->height];
int p=0;
for (unsigned int row = 0; row < png_ptr->height; row++)
{
for (unsigned int i=0; i<png_ptr->rowbytes; i++)
{
m_BGData[p]=(char)info_ptr->row_pointers[row][i];
p++;
}
}
#if FL_MAJOR_VERSION == 1 && FL_MINOR_VERSION == 0
m_BG = new Fl_Image((unsigned char*)m_BGData,
(int)png_ptr->width,
(int)png_ptr->height,(int)png_ptr->rowbytes/(int)png_ptr->width);
#else
m_BG = new Fl_RGB_Image((unsigned char*)m_BGData,(int)png_ptr->width,(int)png_ptr->height);
#endif
png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
}
#endif
}

////////////////////////////////////////////////////////////////////////

Fl_Canvas::~Fl_Canvas()
{
#ifdef IMG_BACKGROUND
if (m_BGData) delete[] m_BGData;
#endif
}

////////////////////////////////////////////////////////////////////////

void Fl_Canvas::draw()
{
Fl_Widget*const* a = array();
@@ -185,15 +145,22 @@ void Fl_Canvas::draw()
}
}

////////////////////////////////////////////////////////////////////////

void Fl_Canvas::Poll()
{
// bit of a workaround...
if(m_IncompleteWire.InputChild!=-1 || m_IncompleteWire.OutputChild!=-1)
// bit of a workaround...
if (UserMakingConnection()) m_UpdateTimer++;
if (m_UpdateTimer>UPDATE_TICKS)
{
m_UpdateTimer=0;
redraw();
}
}

////////////////////////////////////////////////////////////////////////

void Fl_Canvas::DrawWires()
{
for(vector<CanvasWire>::iterator i=m_WireVec.begin();
@@ -233,6 +200,20 @@ void Fl_Canvas::DrawWires()
DestDevice->GetPortY(i->InputPort));
}
DrawIncompleteWire();
}

////////////////////////////////////////////////////////////////////////

bool Fl_Canvas::UserMakingConnection()
{
return (m_IncompleteWire.InputChild!=-1 || m_IncompleteWire.OutputChild!=-1);
}

////////////////////////////////////////////////////////////////////////

void Fl_Canvas::DrawIncompleteWire()
{
// draw the wire we are currently connecting
if(m_IncompleteWire.InputChild!=-1)
{
@@ -290,6 +271,9 @@ void Fl_Canvas::DrawWires()
Fl::event_y());
}
}

////////////////////////////////////////////////////////////////////////

void Fl_Canvas::ClearIncompleteWire()
{
// Turn off both ports
@@ -306,6 +290,8 @@ void Fl_Canvas::ClearIncompleteWire()
m_IncompleteWire.Clear();
}

////////////////////////////////////////////////////////////////////////

int Fl_Canvas::handle(int event)
{
if (Fl_Group::handle(event)) return 1;
@@ -313,6 +299,7 @@ int Fl_Canvas::handle(int event)
if (event==FL_PUSH)
{
ClearIncompleteWire();
redraw();
}
if (Fl::event_button()==3)
@@ -325,7 +312,7 @@ int Fl_Canvas::handle(int event)
redraw();
}
if (event==FL_DRAG) redraw();
if (event==FL_DRAG) redraw();
if (event==FL_RELEASE && Fl::event_button()==3)
{
@@ -345,6 +332,8 @@ int Fl_Canvas::handle(int event)
return 1;
}
////////////////////////////////////////////////////////////////////////

void Fl_Canvas::PortClicked(Fl_DeviceGUI* Device, int Type, int Port, bool Value)
{
// find out which child this comes from.
@@ -461,6 +450,8 @@ void Fl_Canvas::PortClicked(Fl_DeviceGUI* Device, int Type, int Port, bool Value
}
}

////////////////////////////////////////////////////////////////////////

void Fl_Canvas::ClearConnections(Fl_DeviceGUI* Device)
{
// find out which child this comes from.
@@ -507,6 +498,8 @@ void Fl_Canvas::ClearConnections(Fl_DeviceGUI* Device)
}
}
}

////////////////////////////////////////////////////////////////////////
void Fl_Canvas::RemoveDevice(Fl_DeviceGUI* Device)
{
@@ -538,6 +531,8 @@ void Fl_Canvas::RemoveDevice(Fl_DeviceGUI* Device)
remove(child(ChildNum));
redraw();
}

////////////////////////////////////////////////////////////////////////
void Fl_Canvas::Clear()
{
@@ -554,6 +549,8 @@ void Fl_Canvas::Clear()
redraw();
}


////////////////////////////////////////////////////////////////////////
istream &operator>>(istream &s, Fl_Canvas &o)
@@ -587,6 +584,8 @@ istream &operator>>(istream &s, Fl_Canvas &o)
return s;
}

////////////////////////////////////////////////////////////////////////

ostream &operator<<(ostream &s, Fl_Canvas &o)
{
s<<o.m_WireVec.size()<<endl;


+ 4
- 1
GUI/Widgets/Fl_Canvas.h View File

@@ -82,7 +82,9 @@ private:

void DrawWires();
void ClearIncompleteWire();

void DrawIncompleteWire();
bool UserMakingConnection();
Fl_Image *m_BG;
char *m_BGData;
@@ -98,6 +100,7 @@ private:
vector< pair<string,int> > m_PluginNameList;

GraphSort m_Graph;
int m_UpdateTimer;

friend istream &operator>>(istream &s, Fl_Canvas &o);
friend ostream &operator<<(ostream &s, Fl_Canvas &o);


+ 7
- 0
SpiralSound/Plugins/AmpPlugin/AmpPluginGUI.C View File

@@ -136,3 +136,10 @@ void AmpPluginGUI::cb_pop(Fl_Button* o, void* v) {
((AmpPluginGUI*)(o->parent()))->cb_pop_i(o,v);
}
const string AmpPluginGUI::GetHelpText(const string &loc){
return string("")
+ "A CV controlled amplifer. You also can use this device to modify\n"
+ "the signal's DC offset (the up or down in the range of values).\n\n"
+ "Handy for fine tuning CV's by hand, or modulating complex\n"
+ "controls.";
}

+ 3
- 0
SpiralSound/Plugins/AmpPlugin/AmpPluginGUI.h View File

@@ -39,6 +39,9 @@ public:
virtual SpiralPlugin* GetPlugin() { return m_Plugin; }
AmpPlugin *m_Plugin;
protected:
const string GetHelpText(const string &loc);
private:
Fl_Group *GUIFilterGroup;


+ 10
- 0
SpiralSound/Plugins/ControllerPlugin/ControllerPluginGUI.C View File

@@ -270,3 +270,13 @@ void ControllerPluginGUI::StreamOut(ostream &s)
s<<(*i)->m_Chan->value()<<endl;
}
}

const string ControllerPluginGUI::GetHelpText(const string &loc){
return string("")
+ "This is a simple plugin to allow you to generate CV values\n"
+ "interatively with sliders in the plugin window. Useful if you\n"
+ "can't use Midi, or for controlling LADSPA plugins. The slider\n"
+ "ranges can be set, and titles can be given to each slider.\n"
+ "You can add or delete sliders from the plugin using the\n"
+ "+ or - buttons.\n";
}

+ 4
- 1
SpiralSound/Plugins/ControllerPlugin/ControllerPluginGUI.h View File

@@ -42,7 +42,10 @@ public:
void StreamIn(istream &s);
void StreamOut(ostream &s);

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

void Clear();


+ 18
- 0
SpiralSound/Plugins/DelayPlugin/DelayPluginGUI.C View File

@@ -70,3 +70,21 @@ inline void DelayPluginGUI::cb_Mix_i(Fl_Knob* o, void* v)
{ m_GUICH->Set("Mix",(float)o->value()); }
void DelayPluginGUI::cb_Mix(Fl_Knob* o, void* v)
{ ((DelayPluginGUI*)(o->parent()))->cb_Mix_i(o,v); }

const string DelayPluginGUI::GetHelpText(const string &loc){
return string("")
+ "The delay plugins delays the input signal, and can\n"
+ "mix the current signal into the output, the amount\n"
+ "is set by the dial in the plugin window.\n"
+ "\n"
+ "The delay time and read head position can be modified\n"
+ "by input CV's. The read head is the place in the buffer\n"
+ "the output sample is taken from, relative to the write\n"
+ "head.\n"
+ "\n"
+ "This plugin can be used as the base of a number of effects,\n"
+ "such as phasers, flangers and complex echos. If the output\n"
+ "is fed back into the input, you get a similar effect\n"
+ "to the echo, but you can add cool effects by routing\n"
+ "the signal back through a lowpass filter (for example).\n";
}

+ 4
- 1
SpiralSound/Plugins/DelayPlugin/DelayPluginGUI.h View File

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

protected:
const string GetHelpText(const string &loc);
private:
Fl_Slider *m_Delay;


+ 7
- 0
SpiralSound/Plugins/EchoPlugin/EchoPluginGUI.C View File

@@ -133,3 +133,10 @@ inline void EchoPluginGUI::cb_pop_i(Fl_Button *o, void*) {
void EchoPluginGUI::cb_pop(Fl_Button* o, void* v) {
((EchoPluginGUI*)(o->parent()))->cb_pop_i(o,v);
}

const string EchoPluginGUI::GetHelpText(const string &loc){
return string("")
+ "This plugin is a fully operational delay with feedback\n"
+ "- providing a no-frills echo effect. The delay and\n"
+ "feedback controls can be modulated via CV inputs.\n";
}

+ 3
- 0
SpiralSound/Plugins/EchoPlugin/EchoPluginGUI.h View File

@@ -38,6 +38,9 @@ public:
EchoPluginGUI(int w, int h, EchoPlugin *o,ChannelHandler *ch,const HostInfo *Info);
virtual void UpdateValues(SpiralPlugin *o);

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


+ 0
- 1
SpiralSound/Plugins/Edit.sh View File

@@ -4,7 +4,6 @@ for file in `cat PluginList.txt`
do
echo $file
cd $file/
cvs edit Makefile.in
nedit Makefile.in
cd ..
done

+ 11
- 0
SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPluginGUI.C View File

@@ -70,3 +70,14 @@ inline void EnvFollowerPluginGUI::cb_Attack_i(Fl_Knob* o, void* v)
{ m_GUICH->Set("Attack",o->value()); }
void EnvFollowerPluginGUI::cb_Attack(Fl_Knob* o, void* v)
{ ((EnvFollowerPluginGUI*)(o->parent()))->cb_Attack_i(o,v);}

const string EnvFollowerPluginGUI::GetHelpText(const string &loc){
return string("")
+ "The Envelope Follower takes an audio signal input and\n"
+ "attempts to recreate the envelope that shaped it. This\n"
+ "is particually useful for extracting information from\n"
+ "samples, for use in a vocoder for example.\n"
+ "\n"
+ "The sensitivity of the EnvFollower can be set with the\n"
+ "Attack and Decay controls on the plugin window.\n";
}

+ 3
- 0
SpiralSound/Plugins/EnvFollowerPlugin/EnvFollowerPluginGUI.h View File

@@ -37,6 +37,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o);

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

Fl_Knob* m_Attack;


+ 16
- 0
SpiralSound/Plugins/EnvelopePlugin/EnvelopePluginGUI.C View File

@@ -273,3 +273,19 @@ void EnvelopePluginGUI::cb_pop(Fl_Button* o, void* v) {
((EnvelopePluginGUI*)(o->parent()))->cb_pop_i(o,v);
}

const string EnvelopePluginGUI::GetHelpText(const string &loc){
return string("")
+ "An ADSR envelope. This plugin also has a built in\n"
+ "amplifier for signals, so data fed through the Input\n"
+ "and Output are amplified according to the envelope value.\n"
+ "The envelope is triggered with an input CV, and the output\n"
+ "CV is the value of the envelope at that time. The signal\n"
+ "level needed to trigger the envelope can be set using\n"
+ "the \"T\" slider, also the volume level of the output can\n"
+ "be set with the \"V\" slider.\n\n"
+ "This envelope can be used to mimic audio triggered effects\n"
+ "units, by feeding the audio signal into the trigger CV.\n"
+ "In fact, the envelope plugin itself can be made into a\n"
+ "compressor, by feeding the audio signal into both inputs,\n"
+ "and tweaking the ADSR values. \n";
}

+ 3
- 0
SpiralSound/Plugins/EnvelopePlugin/EnvelopePluginGUI.h View File

@@ -38,6 +38,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o);

protected:
const string GetHelpText(const string &loc);
private:
Fl_Slider *Thresh;


+ 7
- 0
SpiralSound/Plugins/MixerPlugin/MixerPluginGUI.C View File

@@ -69,3 +69,10 @@ inline void MixerPluginGUI::cb_Chan_i(Fl_Slider* o, void* v)

void MixerPluginGUI::cb_Chan(Fl_Slider* o, void* v)
{ ((MixerPluginGUI*)(o->parent()))->cb_Chan_i(o,v);}

const string MixerPluginGUI::GetHelpText(const string &loc){
return string("")
+ "A general purpose 4 channel mixer, not much else to say\n"
+ "really. Useful for mixing CV values as well as mono audio\n"
+ "signals. \n";
}

+ 3
- 0
SpiralSound/Plugins/MixerPlugin/MixerPluginGUI.h View File

@@ -35,6 +35,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o);

protected:
const string GetHelpText(const string &loc);
private:
int Numbers[NUM_CHANNELS];


+ 5
- 0
SpiralSound/Plugins/NoteSnapPlugin/NoteSnapPluginGUI.C View File

@@ -38,3 +38,8 @@ void NoteSnapPluginGUI::UpdateValues(SpiralPlugin *o)
{
}
const string NoteSnapPluginGUI::GetHelpText(const string &loc){
return string("")
+ "Quantises the input value into a note frequency\n"
+ "(using the midi note data).\n";
}

+ 3
- 0
SpiralSound/Plugins/NoteSnapPlugin/NoteSnapPluginGUI.h View File

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

private:

//// Callbacks ////


+ 10
- 0
SpiralSound/Plugins/RingModPlugin/RingModPluginGUI.C View File

@@ -53,3 +53,13 @@ inline void RingModPluginGUI::cb_Amount_i(Fl_Knob* o, void* v)
}
void RingModPluginGUI::cb_Amount(Fl_Knob* o, void* v)
{ ((RingModPluginGUI*)(o->parent()))->cb_Amount_i(o,v); }

const string RingModPluginGUI::GetHelpText(const string &loc){
return string("")
+ "A ring modulator, multiplies two inputs together.\n"
+ "An extra dial sets the amount of modulation. The\n"
+ "ring modulation effect creates an extra harmonic\n"
+ "in the signal, although this is often out of tune\n"
+ "with the other signals, its useful for creating bell\n"
+ "or struck metallic sounds.\n";
}

+ 3
- 0
SpiralSound/Plugins/RingModPlugin/RingModPluginGUI.h View File

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

private:
Fl_Group *GUIFilterGroup;


+ 8
- 1
SpiralSound/Plugins/SampleHoldPlugin/SampleHoldPluginGUI.C View File

@@ -37,4 +37,11 @@ SpiralPluginGUI(w,h,o,ch)
void SampleHoldPluginGUI::UpdateValues(SpiralPlugin *o)
{
}

const string SampleHoldPluginGUI::GetHelpText(const string &loc){
return string("")
+ "Holds the input value until the clock input is triggered.\n"
+ "Useful for wacky 60's computer sounds...\n"
+ "\n"
+ "Author: Yves Usson\n";
}

+ 3
- 0
SpiralSound/Plugins/SampleHoldPlugin/SampleHoldPluginGUI.h View File

@@ -37,6 +37,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o);

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

private:

//// Callbacks ////


+ 8
- 0
SpiralSound/Plugins/ScopePlugin/ScopePluginGUI.C View File

@@ -104,3 +104,11 @@ void ScopePluginGUI::cb_Bypass_i(Fl_Button* o, void* v)
{m_Bypass=o->value();}
void ScopePluginGUI::cb_Bypass(Fl_Button* o, void* v)
{((ScopePluginGUI*)(o->parent()))->cb_Bypass_i(o,v);}

const string ScopePluginGUI::GetHelpText(const string &loc){
return string("")
+ "The Scope lets you see a visual representation of the\n"
+ "data flowing through it. It does nothing to the signal,\n"
+ "but its very useful for checking the layouts, looking at\n"
+ "CV value etc.\n";
}

+ 3
- 0
SpiralSound/Plugins/ScopePlugin/ScopePluginGUI.h View File

@@ -58,6 +58,9 @@ public:
virtual void draw();
void Display(const float *data);
protected:
const string GetHelpText(const string &loc);

private:

bool m_Bypass;


+ 15
- 0
SpiralSound/Plugins/SmoothPlugin/SmoothPluginGUI.C View File

@@ -73,3 +73,18 @@ inline void SmoothPluginGUI::cb_Up_i(Fl_Knob* o, void* v)

void SmoothPluginGUI::cb_Up(Fl_Knob* o, void* v)
{ ((SmoothPluginGUI*)(o->parent()))->cb_Up_i(o,v);}

const string SmoothPluginGUI::GetHelpText(const string &loc){
return string("")
+ "This device is used for smoothing out the signal fed\n"
+ "through it. It's primary use is for smoothing out the\n"
+ "frequency CV sent to the oscillator to achieve portmento\n"
+ "or sliding between notes.\n"
+ "It can also be used as a primitive filter for audio\n"
+ "signals, but its mainly used on CVs.\n"
+ "\n"
+ "The controls on the plugin window allow you to alter\n"
+ "the speed of the sliding, up and down are seperated,\n"
+ "so going up the keyboard can have a different effect\n"
+ "to going down :) \n";
}

+ 3
- 0
SpiralSound/Plugins/SmoothPlugin/SmoothPluginGUI.h View File

@@ -37,6 +37,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o);

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

private:

Fl_Knob* m_Up;


+ 6
- 0
SpiralSound/Plugins/SplitterPlugin/SplitterPluginGUI.C View File

@@ -38,3 +38,9 @@ void SplitterPluginGUI::UpdateValues(SpiralPlugin *o)
{
}
const string SplitterPluginGUI::GetHelpText(const string &loc){
return string("")
+ "The simplest plugin - the splitter simply takes the input,\n"
+ "and duplicates it into it's outputs. Simple, but difficult\n"
+ "to do without.\n";
}

+ 3
- 0
SpiralSound/Plugins/SplitterPlugin/SplitterPluginGUI.h View File

@@ -37,6 +37,9 @@ public:
virtual void UpdateValues(SpiralPlugin *o);

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

private:

//// Callbacks ////


+ 9
- 0
SpiralSound/Plugins/StereoMixerPlugin/StereoMixerPluginGUI.C View File

@@ -91,3 +91,12 @@ inline void StereoMixerPluginGUI::cb_Pan_i(Fl_Knob* o, void* v) {
void StereoMixerPluginGUI::cb_Pan(Fl_Knob* o, void* v) {
((StereoMixerPluginGUI*)(o->parent()))->cb_Pan_i(o,v);
}

const string StereoMixerPluginGUI::GetHelpText(const string &loc){
return string("")
+ "A more advanced version of the 4 channel mixer,\n"
+ "this one has a stereo output. CV's are provided\n"
+ "for control of the panning of each of the inputs.\n"
+ "The panning can also be set with the knobs on the\n"
+ "plugin window. \n";
}

+ 3
- 0
SpiralSound/Plugins/StereoMixerPlugin/StereoMixerPluginGUI.h View File

@@ -35,6 +35,9 @@ public:
StereoMixerPluginGUI(int w, int h, StereoMixerPlugin *o,ChannelHandler *ch,const HostInfo *Info);
virtual void UpdateValues(SpiralPlugin *o);
protected:
const string GetHelpText(const string &loc);

private:
int Numbers[NUM_CHANNELS];


Loading…
Cancel
Save