eurorack/midi2cv/part.h

69 lines
1.3 KiB
C++

#ifndef MIDI2CV_PART_H
#define MIDI2CV_PART_H
enum MIDIThruMode { OFF,
ON,
POLYCHAIN };
enum BiOutputType {
BI_OFF = 0,
BI_PITCH_UNI,
BI_PITCH_BI,
BI_SAWTOOTH,
BI_SQUARE,
BI_SINE,
BI_TRIANGLE
};
enum UniOutputType {
UNI_OFF = 0,
UNI_PITCH,
UNI_VELOCITY,
UNI_MODULATION,
UNI_AFTERTOUCH,
UNI_BREATH,
UNI_EXP,
UNI_GATE
};
enum GateOutputType {
GATE_OFF = 0,
GATE_GATE,
GATE_TRIGGER
};
class Part {
public:
Part()
: poly_voice_count(1)
, output_column_count(1)
, midi_filter_channel_enabled(true)
, midi_filter_channel(1)
, midi_filter_lowest_note(0)
, midi_filter_highest_note(127)
, midi_thru_mode(OFF)
{
for (int i = 0; i < 4; 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;
}
}
void ProcessMidiInput(/* TODO: Inputs */);
private:
uint8_t poly_voice_count;
uint8_t output_column_count;
bool midi_filter_channel_enabled;
uint8_t midi_filter_channel;
uint8_t midi_filter_lowest_note;
uint8_t midi_filter_highest_note;
MIDIThruMode midi_thru_mode;
BiOutputType output_type_row_0[4];
UniOutputType output_type_row_1[4];
UniOutputType output_type_row_2[4];
GateOutputType output_type_row_3[4];
};
#endif