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