-Updated Looper to 0 its buffers, and APC support is improved
parent
44396b5ed9
commit
1120f3782b
|
@ -31,8 +31,9 @@ void AkaiAPC::clipSelect(int t, int clip, ClipMode cm)
|
||||||
case CLIP_MODE_PLAYING: data[2] = 1; break;
|
case CLIP_MODE_PLAYING: data[2] = 1; break;
|
||||||
case CLIP_MODE_PLAY_QUEUED: data[2] = 2; break;
|
case CLIP_MODE_PLAY_QUEUED: data[2] = 2; break;
|
||||||
case CLIP_MODE_RECORDING: data[2] = 3; break;
|
case CLIP_MODE_RECORDING: data[2] = 3; break;
|
||||||
// case flashing red light?: data[2] = 4; break;
|
case CLIP_MODE_RECORD_QUEUED: data[2] = 4; break;
|
||||||
case CLIP_MODE_LOADED: data[2] = 5; break;
|
case CLIP_MODE_LOADED: data[2] = 5; break;
|
||||||
|
case CLIP_MODE_STOP_QUEUED: data[2] = 6; break;
|
||||||
}
|
}
|
||||||
|
|
||||||
jack->writeApcOutput( &data[0] );
|
jack->writeApcOutput( &data[0] );
|
||||||
|
|
|
@ -15,12 +15,13 @@ class Controller
|
||||||
*/
|
*/
|
||||||
|
|
||||||
enum ClipMode {
|
enum ClipMode {
|
||||||
|
CLIP_MODE_EMPTY,
|
||||||
CLIP_MODE_PLAYING,
|
CLIP_MODE_PLAYING,
|
||||||
CLIP_MODE_PLAY_QUEUED,
|
CLIP_MODE_PLAY_QUEUED,
|
||||||
CLIP_MODE_LOADED,
|
CLIP_MODE_LOADED,
|
||||||
|
CLIP_MODE_STOP_QUEUED,
|
||||||
CLIP_MODE_RECORDING,
|
CLIP_MODE_RECORDING,
|
||||||
CLIP_MODE_RECORD_QUEUED,
|
CLIP_MODE_RECORD_QUEUED,
|
||||||
CLIP_MODE_EMPTY,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Controller(){};
|
Controller(){};
|
||||||
|
|
|
@ -20,6 +20,9 @@ Looper::Looper(int t) :
|
||||||
playPoint (0),
|
playPoint (0),
|
||||||
lastWrittenSampleIndex(0)
|
lastWrittenSampleIndex(0)
|
||||||
{
|
{
|
||||||
|
// pre-zero the internal sample
|
||||||
|
memset( &sample[0], 0, SAMPLE_SIZE );
|
||||||
|
|
||||||
// init faust pitch shift variables
|
// init faust pitch shift variables
|
||||||
fSamplingFreq = 44100;
|
fSamplingFreq = 44100;
|
||||||
IOTA = 0;
|
IOTA = 0;
|
||||||
|
@ -48,7 +51,7 @@ void Looper::midi(unsigned char* data)
|
||||||
{
|
{
|
||||||
case 48: setState( STATE_RECORD_QUEUED ); break;
|
case 48: setState( STATE_RECORD_QUEUED ); break;
|
||||||
case 53: setState( STATE_PLAY_QUEUED ); break;
|
case 53: setState( STATE_PLAY_QUEUED ); break;
|
||||||
case 52: setState( STATE_STOPPED ); break;
|
case 52: setState( STATE_STOP_QUEUED ); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ( data[0] - 128 == track )
|
else if ( data[0] - 128 == track )
|
||||||
|
@ -62,7 +65,7 @@ void Looper::midi(unsigned char* data)
|
||||||
{
|
{
|
||||||
switch ( data[1] )
|
switch ( data[1] )
|
||||||
{
|
{
|
||||||
case 7: gain = int(data[2])/127.f; break;
|
case 7: gain = int(data[2])/127.f; break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -111,7 +114,7 @@ void Looper::updateControllers()
|
||||||
|
|
||||||
if (state == STATE_STOP_QUEUED )
|
if (state == STATE_STOP_QUEUED )
|
||||||
{
|
{
|
||||||
jack->getControllerUpdater()->clipSelect(track, currentClip, Controller::CLIP_MODE_LOADED);
|
jack->getControllerUpdater()->clipSelect(track, currentClip, Controller::CLIP_MODE_STOP_QUEUED);
|
||||||
}
|
}
|
||||||
else if ( state == STATE_STOPPED )
|
else if ( state == STATE_STOPPED )
|
||||||
{
|
{
|
||||||
|
@ -193,7 +196,7 @@ void Looper::bar()
|
||||||
endPoint = 0;
|
endPoint = 0;
|
||||||
lastWrittenSampleIndex = 0;
|
lastWrittenSampleIndex = 0;
|
||||||
}
|
}
|
||||||
if ( state == STATE_PLAY_QUEUED )
|
if ( state == STATE_STOP_QUEUED )
|
||||||
{
|
{
|
||||||
EventGuiPrint e( "Looper Q->Stopped" );
|
EventGuiPrint e( "Looper Q->Stopped" );
|
||||||
writeToGuiRingbuffer( &e );
|
writeToGuiRingbuffer( &e );
|
||||||
|
|
|
@ -8,6 +8,8 @@
|
||||||
#include "buffers.hxx"
|
#include "buffers.hxx"
|
||||||
#include "observer/observer.hxx"
|
#include "observer/observer.hxx"
|
||||||
|
|
||||||
|
#define SAMPLE_SIZE 44100*60
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
class Looper : public Observer // for notifications
|
class Looper : public Observer // for notifications
|
||||||
|
@ -50,7 +52,7 @@ class Looper : public Observer // for notifications
|
||||||
|
|
||||||
int endPoint, lastWrittenSampleIndex;
|
int endPoint, lastWrittenSampleIndex;
|
||||||
float playPoint;
|
float playPoint;
|
||||||
float sample[44100*60];
|
float sample[SAMPLE_SIZE];
|
||||||
|
|
||||||
// Pitch Shifting
|
// Pitch Shifting
|
||||||
void pitchShift(int count, float* input, float* output);
|
void pitchShift(int count, float* input, float* output);
|
||||||
|
|
Loading…
Reference in New Issue