diff --git a/SpiralSound/Plugins/MatrixPlugin/MatrixPlugin.C b/SpiralSound/Plugins/MatrixPlugin/MatrixPlugin.C index 74b200a..12fee5f 100644 --- a/SpiralSound/Plugins/MatrixPlugin/MatrixPlugin.C +++ b/SpiralSound/Plugins/MatrixPlugin/MatrixPlugin.C @@ -70,7 +70,7 @@ m_PatReset(false) m_PluginInfo.Width=600; m_PluginInfo.Height=270; m_PluginInfo.NumInputs=5; - m_PluginInfo.NumOutputs=19; + m_PluginInfo.NumOutputs=19; m_PluginInfo.PortTips.push_back("Play Trigger"); m_PluginInfo.PortTips.push_back("StepTime CV"); m_PluginInfo.PortTips.push_back("Input Pitch CV"); @@ -110,15 +110,15 @@ m_PatReset(false) m_Matrix[n].Matrix[x][y]=false; m_Matrix[n].Volume[x][y]=1; } - + m_TriggerLevel[n]=0; } - + for (int n=0; nRegister("NoteCut",&m_NoteCut,ChannelHandler::INPUT); m_AudioCH->Register("Volume",&m_GUIArgs.Volume,ChannelHandler::INPUT); m_AudioCH->Register("Current",&m_GUICurrent,ChannelHandler::INPUT); @@ -131,6 +131,7 @@ m_PatReset(false) m_AudioCH->Register("Octave",&m_GUIArgs.Octave,ChannelHandler::INPUT); m_AudioCH->Register("Step",&m_Step,ChannelHandler::OUTPUT); m_AudioCH->Register("PatSeqStep",&m_CurPatSeq,ChannelHandler::OUTPUT); + m_AudioCH->Register("EchoCur", &m_Current, ChannelHandler::OUTPUT); m_AudioCH->RegisterData("Matrix",ChannelHandler::OUTPUT_REQUEST,&m_Matrix,sizeof(m_Matrix)); } diff --git a/SpiralSound/Plugins/MatrixPlugin/MatrixPluginGUI.C b/SpiralSound/Plugins/MatrixPlugin/MatrixPluginGUI.C index 6d03254..e86058f 100644 --- a/SpiralSound/Plugins/MatrixPlugin/MatrixPluginGUI.C +++ b/SpiralSound/Plugins/MatrixPlugin/MatrixPluginGUI.C @@ -142,7 +142,7 @@ m_LastPatSeqLight(0) m_Speed->labelsize(10); m_Speed->maximum(200); m_Speed->step(0.01); - m_Speed->value(1.0); + m_Speed->value(1.0); m_Speed->callback((Fl_Callback*)cb_Speed); add(m_Speed); @@ -270,48 +270,50 @@ void MatrixPluginGUI::Update() m_Flash[Light]->value(1); m_Flash[m_LastLight]->value(0); m_LastLight=Light; - + + m_PlayPattern->value (m_GUICH->GetInt("EchoCur")); + int PatSeqLight=m_GUICH->GetInt("PatSeqStep"); if (PatSeqLight!=m_LastPatSeqLight) { m_PatSeqFlash[PatSeqLight]->value(1); m_PatSeqFlash[m_LastPatSeqLight]->value(0); m_LastPatSeqLight=PatSeqLight; - } + } } } void MatrixPluginGUI::UpdateValues(SpiralPlugin *o) { MatrixPlugin *Plugin = (MatrixPlugin*)o; - + m_Pattern->value(Plugin->GetCurrent()); m_Length->value(Plugin->GetPattern()->Length); m_Speed->value(Plugin->GetPattern()->Speed*8); m_SpeedVal->value((int)m_Speed->value()); m_Octave->value(Plugin->GetPattern()->Octave); - + for(int x=0; xvalue(Plugin->GetPattern()->Matrix[x][y]); m_Matrix[x][y]->SetVolume(Plugin->GetPattern()->Volume[x][y]); } - + for(int n=0; nvalue(Plugin->GetPatSeq(n)); } } - + void MatrixPluginGUI::UpdateMatrix() { m_GUICH->Wait(); m_GUICH->RequestChannelAndWait("Matrix"); m_GUICH->GetData("Matrix",(void*)m_GUIMatrix); - + Pattern *p=&m_GUIMatrix[(int)m_Pattern->value()]; - + m_Length->value(p->Length); m_Speed->value(p->Speed*8); m_SpeedVal->value((int)m_Speed->value()); @@ -322,25 +324,25 @@ void MatrixPluginGUI::UpdateMatrix() { m_Matrix[x][y]->value(p->Matrix[x][y]); m_Matrix[x][y]->SetVolume(p->Volume[x][y]); - } + } } inline void MatrixPluginGUI::cb_NoteCut_i(Fl_Button* o, void* v) -{ +{ m_GUICH->Set("NoteCut",o->value()); } void MatrixPluginGUI::cb_NoteCut(Fl_Button* o, void* v) { ((MatrixPluginGUI*)(o->parent()))->cb_NoteCut_i(o,v);} inline void MatrixPluginGUI::cb_Matrix_i(Fl_Button* o, void* v) -{ +{ m_GUICH->Set("X",*(int*)v/MATY); m_GUICH->Set("Y",*(int*)v%MATY); if (o->value()) m_GUICH->SetCommand(MatrixPlugin::MAT_ACTIVATE); else m_GUICH->SetCommand(MatrixPlugin::MAT_DEACTIVATE); - + m_GUICH->Wait(); } void MatrixPluginGUI::cb_Matrix(Fl_Button* o, void* v)