2013-04-20 11:37:36 +01:00
|
|
|
|
|
|
|
#ifndef LUPPP_EVENT_H
|
|
|
|
#define LUPPP_EVENT_H
|
|
|
|
|
|
|
|
#include <stdint.h>
|
|
|
|
|
|
|
|
/*
|
|
|
|
event.hxx
|
|
|
|
|
|
|
|
This file provides declarations for each type of event that the engine uses.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
2013-05-13 22:04:12 +01:00
|
|
|
#include "looper.hxx"
|
|
|
|
|
2013-04-20 11:37:36 +01:00
|
|
|
namespace Event
|
|
|
|
{
|
|
|
|
enum {
|
|
|
|
LOAD_SAMPLE = 0,
|
|
|
|
PLAY_SAMPLE,
|
|
|
|
MASTER_VOL,
|
|
|
|
RECORD,
|
2013-05-13 22:04:12 +01:00
|
|
|
|
|
|
|
LOOPER_STATE,
|
2013-05-16 13:38:46 +01:00
|
|
|
LOOPER_PROGRESS,
|
2013-05-16 01:38:11 +01:00
|
|
|
LOOPER_LOOP_LENGTH,
|
|
|
|
|
2013-05-15 23:27:31 +01:00
|
|
|
METRONOME_ACTIVE,
|
2013-05-16 15:17:49 +01:00
|
|
|
|
2013-05-16 17:16:18 +01:00
|
|
|
TIME_BPM,
|
|
|
|
|
2013-05-16 15:17:49 +01:00
|
|
|
GUI_PRINT,
|
2013-04-20 11:37:36 +01:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
using namespace Event;
|
|
|
|
|
|
|
|
class AudioBuffer;
|
|
|
|
|
|
|
|
class EventBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
virtual ~EventBase() {}
|
|
|
|
|
|
|
|
virtual int type() = 0;
|
|
|
|
virtual uint32_t size() = 0;
|
|
|
|
};
|
|
|
|
|
|
|
|
class EventMasterVol : public EventBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int type() { return int(MASTER_VOL); }
|
|
|
|
uint32_t size() { return sizeof(EventMasterVol); }
|
|
|
|
float vol;
|
|
|
|
|
|
|
|
EventMasterVol(float v)
|
|
|
|
{
|
|
|
|
vol = v;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2013-05-13 22:04:12 +01:00
|
|
|
class EventLooperState : public EventBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int type() { return int(LOOPER_STATE); }
|
|
|
|
uint32_t size() { return sizeof(EventLooperState); }
|
|
|
|
|
2013-05-15 02:17:08 +01:00
|
|
|
int track;
|
2013-05-13 22:04:12 +01:00
|
|
|
Looper::State state;
|
|
|
|
EventLooperState(){}
|
2013-05-15 02:17:08 +01:00
|
|
|
EventLooperState(int t, Looper::State s) : track(t), state(s){}
|
2013-05-13 22:04:12 +01:00
|
|
|
};
|
|
|
|
|
2013-05-16 13:38:46 +01:00
|
|
|
class EventLooperProgress : public EventBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int type() { return int(LOOPER_PROGRESS); }
|
|
|
|
uint32_t size() { return sizeof(EventLooperProgress); }
|
|
|
|
|
|
|
|
int track;
|
|
|
|
float progress;
|
|
|
|
EventLooperProgress(){}
|
|
|
|
EventLooperProgress(int t, float p) : track(t), progress(p) {}
|
|
|
|
};
|
|
|
|
|
2013-05-16 01:38:11 +01:00
|
|
|
class EventLooperLoopLength : public EventBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int type() { return int(LOOPER_LOOP_LENGTH); }
|
|
|
|
uint32_t size() { return sizeof(EventLooperLoopLength); }
|
|
|
|
|
|
|
|
int track;
|
|
|
|
float scale; // multiply length by this
|
|
|
|
EventLooperLoopLength(){}
|
|
|
|
EventLooperLoopLength(int t, float s) : track(t), scale(s){}
|
|
|
|
};
|
|
|
|
|
2013-04-20 11:37:36 +01:00
|
|
|
class EventLoadSample : public EventBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int type() { return int(LOAD_SAMPLE); }
|
|
|
|
uint32_t size() { return sizeof(EventLoadSample); }
|
|
|
|
|
|
|
|
AudioBuffer* audioBufferPtr;
|
|
|
|
|
|
|
|
EventLoadSample(AudioBuffer* a)
|
|
|
|
{
|
|
|
|
audioBufferPtr = a;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
|
|
|
class EventPlaySample : public EventBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int type() { return int(PLAY_SAMPLE); }
|
|
|
|
uint32_t size() { return sizeof(EventPlaySample); }
|
|
|
|
|
|
|
|
int track, bufferID;
|
|
|
|
|
|
|
|
EventPlaySample(int t, int id)
|
|
|
|
{
|
|
|
|
track = t;
|
|
|
|
bufferID = id;
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2013-05-15 23:27:31 +01:00
|
|
|
class EventMetronomeActive : public EventBase
|
2013-04-20 11:37:36 +01:00
|
|
|
{
|
|
|
|
public:
|
2013-05-15 23:27:31 +01:00
|
|
|
int type() { return int(METRONOME_ACTIVE); }
|
|
|
|
uint32_t size() { return sizeof(EventMetronomeActive); }
|
2013-04-20 11:37:36 +01:00
|
|
|
|
2013-05-15 23:27:31 +01:00
|
|
|
bool active;
|
2013-04-20 11:37:36 +01:00
|
|
|
|
2013-05-15 23:27:31 +01:00
|
|
|
EventMetronomeActive() : active(false) {}
|
|
|
|
EventMetronomeActive(bool a) : active(a) {}
|
2013-04-20 11:37:36 +01:00
|
|
|
};
|
|
|
|
|
2013-05-16 17:16:18 +01:00
|
|
|
class EventTimeBPM : public EventBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int type() { return int(TIME_BPM); }
|
|
|
|
uint32_t size() { return sizeof(EventTimeBPM); }
|
|
|
|
|
|
|
|
float bpm;
|
|
|
|
|
|
|
|
EventTimeBPM(){}
|
|
|
|
EventTimeBPM(float b) : bpm(b) {}
|
|
|
|
};
|
|
|
|
|
2013-04-20 11:37:36 +01:00
|
|
|
|
2013-05-16 15:17:49 +01:00
|
|
|
// prints the string S in the GUI console
|
|
|
|
class EventGuiPrint : public EventBase
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
int type() { return int(GUI_PRINT); }
|
|
|
|
uint32_t size() { return sizeof(EventGuiPrint); }
|
|
|
|
|
|
|
|
char stringArray[50];
|
|
|
|
|
|
|
|
EventGuiPrint(){}
|
|
|
|
EventGuiPrint(const char* s)
|
|
|
|
{
|
|
|
|
if ( strlen( s ) > 50 )
|
|
|
|
{
|
|
|
|
// this will be called from an RT context, and should be removed from
|
|
|
|
// production code. It is here for the programmer to notice when they
|
|
|
|
// are using code which causes too long a message.
|
|
|
|
cout << "EventGuiPrint() error! Size of string too long!" << endl;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
// move the sting into this event
|
|
|
|
strcpy( &stringArray[0], s );
|
|
|
|
}
|
|
|
|
}
|
|
|
|
char* getMessage()
|
|
|
|
{
|
|
|
|
return &stringArray[0];
|
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2013-04-20 11:37:36 +01:00
|
|
|
#endif // LUPPP_EVENT_H
|
|
|
|
|