Browse Source

Mix and Split Switch bug fixes Streamer Play btn bug fix

master
edgeeffect 22 years ago
parent
commit
516ef96633
6 changed files with 62 additions and 53 deletions
  1. +1
    -2
      SpiralSound/Plugins/MixSwitchPlugin/MixSwitchPlugin.C
  2. +1
    -3
      SpiralSound/Plugins/SplitSwitchPlugin/SplitSwitchPlugin.C
  3. +38
    -14
      SpiralSound/Plugins/StreamPlugin/StreamPlugin.C
  4. +8
    -14
      SpiralSound/Plugins/StreamPlugin/StreamPlugin.h
  5. +9
    -9
      SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C
  6. +5
    -11
      SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.h

+ 1
- 2
SpiralSound/Plugins/MixSwitchPlugin/MixSwitchPlugin.C View File

@@ -45,7 +45,6 @@ m_Triggered (false)
m_PluginInfo.Width = 80;
m_PluginInfo.Height = 80;
CreatePorts ();
// Channels
m_AudioCH->Register ("Chans", &m_GUIArgs.Chans);
m_AudioCH->Register ("Switch", &m_GUIArgs.Switch);
m_AudioCH->Register ("Echo", &m_GUIArgs.Echo, ChannelHandler::OUTPUT);
@@ -115,7 +114,7 @@ void MixSwitchPlugin::Execute() {
for (n=0; n<m_HostInfo->BUFSIZE; n++) {
if (InputExists (0)) {
// Check the Switch Pos CV Value
m_SwitchPos = int (GetInput (0, n)-1) % NumChans;
m_SwitchPos = abs (int (GetInput (0, n) - 1)) % NumChans;
}
else if (InputExists (1)) {
// Check the trigger CV value


+ 1
- 3
SpiralSound/Plugins/SplitSwitchPlugin/SplitSwitchPlugin.C View File

@@ -46,11 +46,9 @@ m_Triggered (false)
m_PluginInfo.Height = 80;
m_PluginInfo.NumInputs = 3;
m_PluginInfo.NumOutputs = 3;
// Inputs
m_PluginInfo.PortTips.push_back ("CV");
m_PluginInfo.PortTips.push_back ("Clock");
m_PluginInfo.PortTips.push_back ("In");
// Outputs
m_PluginInfo.PortTips.push_back ("CV");
m_PluginInfo.PortTips.push_back ("Out 1");
m_PluginInfo.PortTips.push_back ("Out 2");
@@ -108,7 +106,7 @@ void SplitSwitchPlugin::Execute() {
for (n=0; n<m_HostInfo->BUFSIZE; n++) {
if (InputExists (0)) {
// Check the Switch Pos CV Value
m_SwitchPos = int (GetInput (0, n)-1) % NumChans;
m_SwitchPos = abs (int (GetInput (0, n) - 1)) % NumChans;
}
else if (InputExists (1)) {
// Check the trigger CV value


+ 38
- 14
SpiralSound/Plugins/StreamPlugin/StreamPlugin.C View File

@@ -71,7 +71,8 @@ m_Mode(STOPM)
m_PluginInfo.PortTips.push_back ("Right Out");
m_PluginInfo.PortTips.push_back ("Finish Trigger");
m_GUIArgs.Volume = 1.0f;
m_GUIArgs.PitchMod = 1.0f;
m_GUIArgs.PitchMod = 1.0f;
m_GUIArgs.PlayOut = false;
m_AudioCH->Register ("Volume", &m_GUIArgs.Volume);
m_AudioCH->Register ("Pitch", &m_GUIArgs.PitchMod, ChannelHandler::INPUT);
m_AudioCH->RegisterData ("FileName", ChannelHandler::INPUT,
@@ -79,6 +80,7 @@ m_Mode(STOPM)
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);
m_AudioCH->Register ("Playing", &m_GUIArgs.PlayOut, ChannelHandler::OUTPUT);
}

StreamPlugin::~StreamPlugin()
@@ -100,8 +102,13 @@ void StreamPlugin::Execute() {
for (int n=0; n<m_HostInfo->BUFSIZE; n++) {
bool FinTrig = false;
float CVPitch = GetInput(0, n)*10.0f;
if (GetInput (1, n) > 0) Play();
if (GetInput (2, n) > 0) Stop();
if (GetInput (1, n) > 0) m_Mode = PLAYM;
if (GetInput (2, n) > 0) {
m_Mode = STOPM;
m_Pos = 0;
m_GlobalPos = 0;
m_StreamPos = 0;
}
if (m_Pos<0) {
m_Pos = m_SampleSize - 1;
m_StreamPos -= m_SampleSize;
@@ -124,26 +131,43 @@ void StreamPlugin::Execute() {
m_File.SeekToChunk (m_StreamPos);
m_File.LoadChunk (m_SampleSize, m_SampleL, m_SampleR);
}
SetOutput (0, n, m_SampleL[m_Pos] * m_GUIArgs.Volume);
SetOutput (1, n, m_SampleR[m_Pos] * m_GUIArgs.Volume);
if (FinTrig) SetOutput (2, n, 1); else SetOutput (2, n, 0);
if (FinTrig) SetOutput (2, n, 1);
else SetOutput (2, n, 0);
if (m_Mode==PLAYM) {
m_Pos += m_GUIArgs.PitchMod + CVPitch;
m_GlobalPos += m_GUIArgs.PitchMod + CVPitch;
SetOutput (0, n, m_SampleL[m_Pos] * m_GUIArgs.Volume);
SetOutput (1, n, m_SampleR[m_Pos] * m_GUIArgs.Volume);
m_Pos += m_GUIArgs.PitchMod + CVPitch;
m_GlobalPos += m_GUIArgs.PitchMod + CVPitch;
}
else {
SetOutput (0, n, 0);
SetOutput (1, n, 0);
}
}
m_GUIArgs.TimeOut = GetTime();
m_GUIArgs.TimeOut = m_GlobalPos / (float)m_SampleRate;
m_GUIArgs.PlayOut = m_Mode==PLAYM;
}
}

void StreamPlugin::ExecuteCommands() {
if (m_AudioCH->IsCommandWaiting()) {
switch (m_AudioCH->GetCommand()) {
case SET_TIME: SetTime(); break;
case LOAD: OpenStream(); break;
case RESTART: Restart(); break;
case STOP: Stop(); break;
case PLAY: Play(); break;
case SET_TIME:
SetTime();
break;
case LOAD:
OpenStream();
break;
case RESTART:
m_StreamPos = 0;
m_GlobalPos = 0;
break;
case STOP:
m_Mode = STOPM;
break;
case PLAY:
m_Mode = PLAYM;
break;
}
}
}


+ 8
- 14
SpiralSound/Plugins/StreamPlugin/StreamPlugin.h View File

@@ -35,34 +35,28 @@ class StreamPlugin : public SpiralPlugin {
virtual void StreamIn (istream &s);
enum GUICommands { NONE, SET_TIME, LOAD, RESTART, STOP, PLAY };
// has to be defined in the plugin
virtual void UpdateGUI() { Fl::check(); }
//virtual void UpdateGUI() { Fl::check(); }
float GetVolume (void) { return m_GUIArgs.Volume; }
float GetPitch (void) { return m_GUIArgs.PitchMod; }
private:
WavFile m_File;
Sample m_SampleL, m_SampleR;
int m_SampleRate, m_SampleSize, m_StreamPos;
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;
};
GUIArgs m_GUIArgs;
WavFile m_File;
Sample m_SampleL, m_SampleR;
int m_SampleRate, m_SampleSize, m_StreamPos;
float m_GlobalPos, m_Pitch, m_SamplePos, m_Pos;
enum Mode { PLAYM, STOPM };
Mode m_Mode;
// Internal functions
float GetTime (void) { return m_GlobalPos / (float)m_SampleRate; }
} m_GUIArgs;
float GetLength (void);
// Commands
void SetTime (void);
void OpenStream (void);
void Restart (void) { m_StreamPos = 0; m_GlobalPos = 0; }
void Stop (void) { m_Mode = STOPM; }
void Play (void) { m_Mode = PLAYM; }
};

#endif

+ 9
- 9
SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.C View File

@@ -155,6 +155,7 @@ void StreamPluginGUI::Update() {
m_Display[0]->value ((int)(t/600) % 10);
redraw();
SetMaxTime (m_GUICH->GetFloat ("MaxTime"));
if (m_Playing != m_GUICH->GetBool ("Playing")) UpdatePlayStatus ();
}

// Update GUI on load
@@ -242,16 +243,15 @@ void StreamPluginGUI::cb_ToStart (Fl_Button* o, void* v) {

// play

inline void StreamPluginGUI::cb_Play_i (Fl_Button* o, void* v) {
if (m_Playing) {
m_Play->label ("@>");
m_GUICH->SetCommand (StreamPlugin::STOP);
}
else {
m_Play->label ("@||");
m_GUICH->SetCommand (StreamPlugin::PLAY);
}
void StreamPluginGUI::UpdatePlayStatus (void) {
m_Playing = ! m_Playing;
if (m_Playing) m_Play->label ("@||");
else m_Play->label ("@>");
}

inline void StreamPluginGUI::cb_Play_i (Fl_Button* o, void* v) {
if (m_Playing) m_GUICH->SetCommand (StreamPlugin::STOP);
else m_GUICH->SetCommand (StreamPlugin::PLAY);
}

void StreamPluginGUI::cb_Play (Fl_Button* o, void* v) {


+ 5
- 11
SpiralSound/Plugins/StreamPlugin/StreamPluginGUI.h View File

@@ -42,18 +42,12 @@ class StreamPluginGUI : public SpiralPluginGUI {
char m_TextBuf[256], m_PitchLabel[256];
void SetMaxTime (float t) { m_Pos->maximum(t); }
void UpdatePitch (bool UpdateIt = true, bool DrawIt = true, bool SendIt = true);
void UpdatePlayStatus (void);
// Widgets
Fl_SevenSeg* m_Display[6];
Fl_Knob* m_Volume;
Fl_Slider* m_Pitch;
Fl_Slider* m_Pos;
Fl_Button* m_Load;
Fl_Button* m_ToStart;
Fl_Button* m_Play;
Fl_Button* m_Reset;
Fl_Button* m_Rev;
Fl_Button* m_Div;
Fl_Button* m_Dbl;
Fl_SevenSeg *m_Display[6];
Fl_Knob *m_Volume;
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;
//// Callbacks ////
inline void cb_Volume_i (Fl_Knob* o, void* v);


Loading…
Cancel
Save