mirror of
https://github.com/vale981/openAV-Luppp
synced 2025-03-05 09:01:39 -05:00
-Updated ClipSelector code, working on LaunchScene support
This commit is contained in:
parent
a641fcd8d3
commit
6ad3a0e11b
8 changed files with 68 additions and 7 deletions
|
@ -79,7 +79,7 @@ class ClipSelector : public Fl_Button
|
|||
public:
|
||||
|
||||
|
||||
ClipSelector(int _x, int _y, int _w, int _h, const char *_label):
|
||||
ClipSelector(int _x, int _y, int _w, int _h, const char *_label, bool master = false):
|
||||
Fl_Button(_x, _y, _w, _h, _label)
|
||||
{
|
||||
x = _x;
|
||||
|
@ -88,6 +88,7 @@ class ClipSelector : public Fl_Button
|
|||
h = _h;
|
||||
|
||||
label = _label;
|
||||
_master = master;
|
||||
|
||||
highlight = false;
|
||||
mouseOver = false;
|
||||
|
@ -99,6 +100,7 @@ class ClipSelector : public Fl_Button
|
|||
static const int numClips = 10;
|
||||
ClipState clips[numClips];
|
||||
|
||||
bool _master;
|
||||
bool mouseOver;
|
||||
bool highlight;
|
||||
int x, y, w, h;
|
||||
|
@ -121,7 +123,7 @@ class ClipSelector : public Fl_Button
|
|||
clips[clipNum].setName();
|
||||
break;
|
||||
case GridLogic::STATE_STOPPED:
|
||||
clips[clipNum].setName();
|
||||
//clips[clipNum].setName();
|
||||
break;
|
||||
case GridLogic::STATE_EMPTY:
|
||||
case GridLogic::STATE_PLAYING:
|
||||
|
@ -285,6 +287,14 @@ class ClipSelector : public Fl_Button
|
|||
// handle right clicks: popup menu
|
||||
if ( Fl::event_state(FL_BUTTON3) )
|
||||
{
|
||||
if ( _master )
|
||||
{
|
||||
|
||||
redraw();
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
Fl_Menu_Item rclick_menu[] =
|
||||
{
|
||||
{ "Load" },
|
||||
|
@ -353,6 +363,14 @@ class ClipSelector : public Fl_Button
|
|||
}
|
||||
else
|
||||
{
|
||||
if ( _master )
|
||||
{
|
||||
EventGridLaunchScene e( clipNum );
|
||||
writeToDspRingbuffer( &e );
|
||||
redraw();
|
||||
return 1;
|
||||
}
|
||||
|
||||
// write "pressed" event for this track,scene
|
||||
EventGridEvent e( ID, clipNum, true );
|
||||
writeToDspRingbuffer( &e );
|
||||
|
|
|
@ -32,6 +32,7 @@ namespace Event
|
|||
|
||||
GRID_EVENT, // press / release events
|
||||
GRID_STATE, // state of one block
|
||||
GRID_LAUNCH_SCENE,
|
||||
|
||||
TRACK_SEND,
|
||||
TRACK_SIGNAL_LEVEL,
|
||||
|
@ -129,6 +130,18 @@ class EventGridState : public EventBase
|
|||
EventGridState(int t, int s, GridLogic::State st): track(t), scene(s), state(st) {}
|
||||
};
|
||||
|
||||
class EventGridLaunchScene : public EventBase
|
||||
{
|
||||
public:
|
||||
int type() { return int(GRID_LAUNCH_SCENE); }
|
||||
uint32_t size() { return sizeof(EventGridLaunchScene); }
|
||||
|
||||
int scene;
|
||||
|
||||
EventGridLaunchScene(){};
|
||||
EventGridLaunchScene(int s): scene(s){}
|
||||
};
|
||||
|
||||
class EventFxReverb : public EventBase
|
||||
{
|
||||
public:
|
||||
|
|
|
@ -52,6 +52,12 @@ void handleDspEvents()
|
|||
jack->getGridLogic()->released( ev.track, ev.scene );
|
||||
} break; }
|
||||
|
||||
case Event::GRID_LAUNCH_SCENE: {
|
||||
EventGridLaunchScene ev;
|
||||
jack_ringbuffer_read( rbToDsp, (char*)&ev, sizeof(EventGridLaunchScene) );
|
||||
jack->getGridLogic()->launchScene( ev.scene );
|
||||
break; }
|
||||
|
||||
case Event::LOOPER_LOAD: {
|
||||
if ( availableRead >= sizeof(EventLooperLoad) ) {
|
||||
EventLooperLoad ev;
|
||||
|
|
|
@ -26,6 +26,30 @@ GridLogic::GridLogic()
|
|||
}
|
||||
|
||||
|
||||
void GridLogic::launchScene( int scene )
|
||||
{
|
||||
for(unsigned int t = 0; t < NTRACKS; t++ )
|
||||
{
|
||||
for(unsigned int s = 0; s < NSCENES; s++ )
|
||||
{
|
||||
LooperClip* lc = jack->getLooper( t )->getClip( s );
|
||||
if ( s == scene )
|
||||
lc->queuePlay();
|
||||
//else
|
||||
//lc->queueStop();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
for(unsigned int s = 0; s < NSCENES; s++ )
|
||||
{
|
||||
jack->getControllerUpdater()->setSceneState( -1, s, s );
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void GridLogic::pressed( int track, int scene )
|
||||
{
|
||||
LooperClip* lc = jack->getLooper( track )->getClip( scene );
|
||||
|
|
|
@ -46,6 +46,9 @@ class GridLogic : public TimeObserver
|
|||
/// button release / click-release event
|
||||
void released( int track, int scene );
|
||||
|
||||
/// master controls, launches a horizontal scene with one event
|
||||
void launchScene( int scene );
|
||||
|
||||
/// GUI load event
|
||||
void load(int track, int scene, AudioBuffer* ab);
|
||||
|
||||
|
|
|
@ -282,7 +282,7 @@ void Jack::writeApcOutput( unsigned char* data )
|
|||
}
|
||||
else
|
||||
{
|
||||
EventGuiPrint e( "__FILE__ __LINE__ Buffer not valid" );
|
||||
EventGuiPrint e( "Jack::writeApcOutput(): Buffer full!" );
|
||||
writeToGuiRingbuffer( &e );
|
||||
}
|
||||
}
|
||||
|
|
|
@ -181,13 +181,12 @@ void LooperClip::queuePlay()
|
|||
{
|
||||
_queuePlay = true;
|
||||
_queueStop = false;
|
||||
_queueRecord = false;
|
||||
}
|
||||
|
||||
void LooperClip::queueStop()
|
||||
{
|
||||
_queueStop = true;
|
||||
_queuePlay = false;
|
||||
_queueRecord = false;
|
||||
}
|
||||
|
||||
void LooperClip::queueRecord()
|
||||
|
|
|
@ -20,8 +20,6 @@ TimeManager::TimeManager():
|
|||
tapTempo[0] = 0;
|
||||
tapTempo[1] = 0;
|
||||
tapTempo[2] = 0;
|
||||
|
||||
cout << "TimeManager() done" << endl;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue