eurorack/midi2cv/part.h

92 lines
1.8 KiB
C
Raw Normal View History

2019-10-04 07:29:45 +00:00
#ifndef MIDI2CV_PART_H
#define MIDI2CV_PART_H
#define PART_COUNT 4
2019-10-04 07:29:45 +00:00
#define TOTAL_COLUMN_COUNT 4
typedef enum { MIDI_THRU_OFF,
MIDI_THRU_ON,
MIDI_THRU_POLYCHAIN } MIDIThruMode_t;
typedef enum {
BI_OFF = 0,
BI_PITCH_UNI,
BI_PITCH_BI,
BI_SAWTOOTH,
BI_SQUARE,
BI_SINE,
BI_TRIANGLE
} BiOutputType_t;
2019-10-04 07:29:45 +00:00
typedef enum {
UNI_OFF = 0,
UNI_PITCH,
UNI_VELOCITY,
UNI_MODULATION,
UNI_AFTERTOUCH,
UNI_BREATH,
UNI_EXP,
UNI_GATE
} UniOutputType_t;
2019-10-04 07:29:45 +00:00
typedef enum {
GATE_OFF = 0,
GATE_GATE,
GATE_TRIGGER
} GateOutputType_t;
typedef enum {
VOICE_COUNT_1 = 1,
VOICE_COUNT_2 = 2,
VOICE_COUNT_3 = 3,
VOICE_COUNT_4 = 4
} PartVoiceCount_t;
typedef enum {
VOICE_DETAIL_S,
VOICE_DETAIL_M,
VOICE_DETAIL_L,
VOICE_DETAIL_XL
} PartVoiceDetail_t;
2019-10-04 07:29:45 +00:00
class Part {
public:
Part()
: part_voice_count(VOICE_COUNT_1)
, part_voice_detail(VOICE_DETAIL_S)
2019-10-04 07:29:45 +00:00
, midi_filter_channel_enabled(true)
, midi_filter_channel(1)
, midi_filter_lowest_note(0)
, midi_filter_highest_note(127)
, midi_thru_mode(MIDI_THRU_OFF)
2019-10-04 07:29:45 +00:00
{
for (int i = 0; i < TOTAL_COLUMN_COUNT; i++) {
output_type_row_0[i] = BI_OFF;
output_type_row_1[i] = UNI_OFF;
output_type_row_2[i] = UNI_OFF;
output_type_row_3[i] = GATE_OFF;
}
2019-10-04 07:29:45 +00:00
}
void ProcessMidiInput(/* TODO: Inputs */);
uint8_t RequiredColumns();
2019-10-04 07:29:45 +00:00
private:
PartVoiceCount_t part_voice_count;
PartVoiceDetail_t part_voice_detail;
2019-10-04 07:29:45 +00:00
bool midi_filter_channel_enabled;
uint8_t midi_filter_channel;
uint8_t midi_filter_lowest_note;
uint8_t midi_filter_highest_note;
MIDIThruMode_t midi_thru_mode;
BiOutputType_t output_type_row_0[TOTAL_COLUMN_COUNT];
UniOutputType_t output_type_row_1[TOTAL_COLUMN_COUNT];
UniOutputType_t output_type_row_2[TOTAL_COLUMN_COUNT];
GateOutputType_t output_type_row_3[TOTAL_COLUMN_COUNT];
2019-10-04 07:29:45 +00:00
};
extern Part parts[];
2019-10-04 07:29:45 +00:00
#endif