30class MelodicInstrument :
public Instrument {
32 explicit MelodicInstrument(OutputType newType) : Instrument(newType) {}
37 int16_t
const* mpeValues, int32_t fromMIDIChannel = MIDI_CHANNEL_NONE, uint8_t velocity = 64,
38 uint32_t sampleSyncLength = 0, int32_t ticksLate = 0, uint32_t samplesLate = 0) = 0;
42 bool writeMelodicInstrumentAttributesToFile(
Serializer& writer,
Clip* clipForSavingOutputOnly,
Song* song);
43 void writeMelodicInstrumentTagsToFile(
Serializer& writer,
Clip* clipForSavingOutputOnly,
Song* song);
44 bool readTagFromFile(
Deserializer& reader,
char const* tagName)
override;
47 int32_t channel, int32_t note, int32_t velocity,
bool shouldRecordNotes,
48 bool* doingMidiThru)
override;
50 MIDIMatchType match, int32_t note, int32_t velocity,
bool shouldRecordNotes,
bool* doingMidiThru);
52 uint8_t channel, uint8_t data1, uint8_t data2,
bool* doingMidiThru)
override;
54 MIDIMatchType match, uint8_t channel, uint8_t data1, uint8_t data2,
bool* doingMidiThru);
56 uint8_t channel, uint8_t ccNumber, uint8_t value,
bool* doingMidiThru)
override;
58 uint8_t channel, uint8_t ccNumber, uint8_t value,
bool* doingMidiThru);
60 int32_t channel, int32_t value, int32_t noteCode,
bool* doingMidiThru)
override;
62 MIDIMatchType match, int32_t channel, int32_t value, int32_t noteCode,
bool* doingMidiThru);
64 bool isNoteRowStillAuditioningAsLinearRecordingEnded(
NoteRow* noteRow)
final;
65 void stopAnyAuditioning(
ModelStack* modelStack)
final;
66 bool isNoteAuditioning(int32_t noteCode);
67 bool isAnyAuditioningHappening()
final;
68 void beginAuditioningForNote(
ModelStack* modelStack, int32_t note, int32_t velocity, int16_t
const* mpeValues,
69 int32_t fromMIDIChannel = MIDI_CHANNEL_NONE, uint32_t sampleSyncLength = 0);
70 void endAuditioningForNote(
ModelStack* modelStack, int32_t note, int32_t velocity = kDefaultLiftValue);
73 void processParamFromInputMIDIChannel(int32_t cc, int32_t newValue,
77 int32_t expressionDimension, int32_t channelOrNoteNumber,
78 MIDICharacteristic whichCharacteristic);
81 virtual void polyphonicExpressionEventOnChannelOrNote(int32_t newValue, int32_t expressionDimension,
82 int32_t channelOrNoteNumber,
83 MIDICharacteristic whichCharacteristic) = 0;
85 void offerBendRangeUpdate(
ModelStack* modelStack,
MIDICable& cable, int32_t channelOrZone, int32_t whichBendRange,
86 int32_t bendSemitones)
override;
92 bool still_active =
false;
95 deluge::fast_map<int16_t, EarlyNoteInfo> earlyNotes;
96 deluge::fast_map<int16_t, EarlyNoteInfo> notesAuditioned;
100 bool affectEntire,
bool useMenuStack)
override;
103 void possiblyRefreshAutomationEditorGrid(int32_t ccNumber);
Definition model_stack.h:231