-Acts as timebase master, providing JACK with BPM info (useful with Masha / Ducka etc)

main
Harry van Haaren 2013-11-02 14:15:50 +00:00
parent f09515d8a5
commit 13b0172555
2 changed files with 12 additions and 7 deletions

View File

@ -155,6 +155,8 @@ Jack::Jack() :
masterMeter = new DBMeter( buffers.samplerate );
inputMeter = new DBMeter( buffers.samplerate );
buffers.transportPosition = 0;
/// setup JACK callbacks
if ( jack_set_process_callback( client,
static_process,
@ -164,7 +166,7 @@ Jack::Jack() :
}
if ( jack_set_timebase_callback(client,
1, //0, 0 == must be master, 1 == conditional
0, //0, 0 == must be master, 1 == conditional
(JackTimebaseCallback)static_timebase,
static_cast<void*>(this)) )
{
@ -494,8 +496,8 @@ int Jack::timebase(jack_transport_state_t state,
int newPos)
{
// fill buffers with data, then pass to timeManager
//buffers.transportPosition = pos;
//buffers.transportState =&state;
buffers.transportPosition = pos;
buffers.transportState =&state;
return 0;
}

View File

@ -196,7 +196,7 @@ void TimeManager::process(Buffers* buffers)
/*
int tick = int( (beatFloat - beat) * 1920 );
buffers->transportPosition->valid = (JackPositionBBT | JackTransportPosition);
buffers->transportPosition->valid = (JackPositionBBT); | JackTransportPosition);
buffers->transportPosition->tick += (buffers->nframes / buffers->samplerate);
@ -207,8 +207,11 @@ void TimeManager::process(Buffers* buffers)
*/
int bpm = ( samplerate * 60) / fpb;
//LUPPP_NOTE("BPM = %i " , bpm );
//buffers->transportPosition->beats_per_minute = bpm;
if ( buffers->transportPosition )
{
//LUPPP_NOTE("BPM = %i " , bpm );
buffers->transportPosition->valid = (JackPositionBBT);
buffers->transportPosition->beats_per_minute = bpm;
}
}