2013-08-01 20:58:26 +02:00
|
|
|
|
|
|
|
#include "gridlogic.hxx"
|
|
|
|
|
2013-08-02 04:16:56 +02:00
|
|
|
#include "jack.hxx"
|
|
|
|
|
|
|
|
extern Jack* jack;
|
2013-08-01 20:58:26 +02:00
|
|
|
|
|
|
|
GridLogic::GridLogic()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void GridLogic::pressed( int track, int scene )
|
|
|
|
{
|
2013-08-07 01:16:27 +02:00
|
|
|
//printf("before press state = %s\n", StateString[ int(state[track*NTRACKS + scene]) ] );
|
2013-08-06 23:42:04 +02:00
|
|
|
|
2013-08-07 00:19:56 +02:00
|
|
|
if ( state[track*NSCENES + scene] == STATE_EMPTY )
|
|
|
|
state[track*NSCENES + scene] = STATE_RECORD_QUEUED;
|
2013-08-06 23:42:04 +02:00
|
|
|
|
2013-08-07 00:19:56 +02:00
|
|
|
if ( state[track*NSCENES + scene] == STATE_LOADED )
|
|
|
|
state[track*NSCENES + scene] = STATE_PLAY_QUEUED;
|
2013-08-06 23:42:04 +02:00
|
|
|
|
2013-08-07 00:19:56 +02:00
|
|
|
if ( state[track*NSCENES + scene] == STATE_PLAYING )
|
|
|
|
state[track*NSCENES + scene] = STATE_STOP_QUEUED;
|
2013-08-06 23:42:04 +02:00
|
|
|
|
2013-08-07 00:19:56 +02:00
|
|
|
if ( state[track*NSCENES + scene] == STATE_RECORDING )
|
|
|
|
state[track*NSCENES + scene] = STATE_STOP_QUEUED;
|
2013-08-06 23:42:04 +02:00
|
|
|
|
2013-08-07 01:16:27 +02:00
|
|
|
//printf("after press state = %s\n", StateString[ int(state[track*NSCENES + scene]) ] );
|
2013-08-06 23:42:04 +02:00
|
|
|
|
2013-08-07 00:19:56 +02:00
|
|
|
jack->getControllerUpdater()->setSceneState(track, scene, state[track*NSCENES + scene]);
|
2013-08-01 20:58:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void GridLogic::released( int track, int scene )
|
|
|
|
{
|
2013-08-07 00:19:56 +02:00
|
|
|
jack->getControllerUpdater()->setSceneState(track, scene, state[track*NSCENES + scene] );
|
2013-08-01 20:58:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2013-08-02 04:16:56 +02:00
|
|
|
void GridLogic::updateState()
|
2013-08-01 20:58:26 +02:00
|
|
|
{
|
2013-08-07 00:19:56 +02:00
|
|
|
printf("GridLogic::updateState() stub" );
|
2013-08-04 19:04:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void GridLogic::bar()
|
|
|
|
{
|
|
|
|
printf("GridLogic::bar()\n" );
|
|
|
|
|
2013-08-06 23:42:04 +02:00
|
|
|
/// iterate over all clips, if they're set to QUEUED, set to the next state
|
2013-08-04 19:04:26 +02:00
|
|
|
for( int i = 0; i < NTRACKS*NSCENES; i++ )
|
|
|
|
{
|
2013-08-07 01:16:27 +02:00
|
|
|
int track = i / NSCENES;
|
|
|
|
int scene = i - track * NSCENES;
|
2013-08-04 19:04:26 +02:00
|
|
|
bool change = false;
|
|
|
|
|
|
|
|
if ( state[i] == STATE_PLAY_QUEUED )
|
|
|
|
{
|
|
|
|
state[i] = STATE_PLAYING;
|
2013-08-07 01:16:27 +02:00
|
|
|
jack->getLooper( track )->setRecord( scene, false);
|
2013-08-07 01:33:38 +02:00
|
|
|
jack->getLooper( track )->play( scene, true);
|
2013-08-04 19:04:26 +02:00
|
|
|
change = true;
|
|
|
|
}
|
|
|
|
else if ( state[i] == STATE_STOP_QUEUED )
|
|
|
|
{
|
|
|
|
state[i] = STATE_LOADED;
|
2013-08-07 01:16:27 +02:00
|
|
|
jack->getLooper( track )->setRecord( scene, false);
|
2013-08-07 01:33:38 +02:00
|
|
|
jack->getLooper( track )->play( scene, false);
|
2013-08-04 19:04:26 +02:00
|
|
|
change = true;
|
|
|
|
}
|
|
|
|
else if ( state[i] == STATE_RECORD_QUEUED )
|
|
|
|
{
|
|
|
|
state[i] = STATE_RECORDING;
|
2013-08-07 01:16:27 +02:00
|
|
|
jack->getLooper( track )->setRecord( scene, true);
|
2013-08-07 01:33:38 +02:00
|
|
|
jack->getLooper( track )->play( scene, false);
|
2013-08-04 19:04:26 +02:00
|
|
|
change = true;
|
|
|
|
}
|
|
|
|
|
|
|
|
if ( change )
|
|
|
|
{
|
2013-08-07 00:19:56 +02:00
|
|
|
jack->getControllerUpdater()->setSceneState(track, scene, state[track*NSCENES + scene] );
|
2013-08-07 01:16:27 +02:00
|
|
|
//printf("GridLogic::bar(), i = %i, track %i, scene %i\n", i, track, scene );
|
2013-08-04 19:04:26 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void GridLogic::beat()
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
}
|