Select Git revision
looper.h 11.04 KiB
#pragma once
#include "luts.h"
namespace atoav {
enum RecPitchMode {
REC_PITCH_MODE_NORMAL,
REC_PITCH_MODE_UNPITCHED,
REC_PITCH_MODE_LAST,
};
enum RecStartMode {
REC_START_MODE_BUFFER,
REC_START_MODE_LOOP,
REC_START_MODE_PLAYHEAD,
REC_START_MODE_LAST,
};
enum PlaybackState {
PLAYBACK_STATE_STOPPED,
PLAYBACK_STATE_LOOP,
PLAYBACK_STATE_MULTILOOP,
PLAYBACK_STATE_MIDI,
PLAYBACK_STATE_LAST,
};
enum RecordingState {
REC_STATE_EMPTY,
REC_STATE_RECORDING,
REC_STATE_OVERDUBBING,
REC_STATE_ERASING,
REC_STATE_NONE,
REC_STATE_LAST,
};
// =================================================
// = H E A D =
// =================================================
class Head {
public:
Head();
void activate();
void deactivate();
bool isActive();
void setPosition(float value);
void reset();
void setIncrement(float value);
void incrementBy(float value);
void slowDown();
void reverse();
void speedUp();
void update();
float read();
float increment = 1.0f;
float variation = 0.0f;
float variation_amount = 0.0f;
float speed_multiplier = 1.0f;
private:
bool active = true;
float position = 0.0f;
};
Head::Head() {
variation = random(-0.1f, 0.1f);
}
void Head::activate() {
this->active = true;
}