18 private juce::MidiKeyboardStateListener
25 virtual void closeDevice() = 0;
27 void setEnabled (
bool)
override;
28 bool isMidi()
const override {
return true; }
30 MidiChannel getChannelToUse()
const noexcept {
return channelToUse; }
31 void setChannelToUse (
int);
33 int getProgramToUse()
const noexcept {
return programToUse; }
34 void setProgramToUse (
int);
36 void setBankToUse (
int);
37 int getBankToUse()
const {
return bankToUse; }
39 void setChannelAllowed (
int midiChannel,
bool);
40 bool isChannelAllowed (
int midiChannel)
const {
return ! disallowedChannels[midiChannel - 1]; }
44 int startNote = 0, endNote = 128;
46 void set (
int start,
int end)
52 bool isAllNotes()
const {
return startNote == 0 && endNote == 128; }
58 void setOverridingNoteVelocities (
bool);
59 bool isOverridingNoteVelocities()
const {
return overrideNoteVels; }
61 void setManualAdjustmentMs (
double);
62 double getManualAdjustmentMs()
const {
return manualAdjustMs; }
64 void setMinimumLengthMs (
double);
65 double getMinimumLengthMs()
const {
return minimumLengthMs; }
72 void connectionStateChanged();
80 void addInstance (MidiInputDeviceInstanceBase*);
81 void removeInstance (MidiInputDeviceInstanceBase*);
83 virtual void loadProps() = 0;
85 bool mergeRecordings =
true;
86 bool recordingEnabled =
true;
87 bool replaceExistingClips =
false;
88 bool recordToNoteAutomation =
false;
89 QuantisationType quantisation;
91 enum class MergeMode { always, never, optional };
93 Clip* addMidiAsTransaction (Edit&, EditItemID targetID,
95 TimeRange markedRange, MergeMode, MidiChannel);
102 RetrospectiveMidiBuffer* getRetrospectiveMidiBuffer()
const {
return retrospectiveBuffer.get(); }
103 void updateRetrospectiveBufferLength (
double length)
override;
104 double getAdjustSecs()
const {
return adjustSecs; }
108 MidiChannel getMidiChannelFor (
int rawChannelNumber)
const;
109 MidiMessageArray::MPESourceID getMPESourceID()
const {
return midiSourceID; }
131 class MidiEventSnifferNode;
132 class NoteDispatcher;
135 double manualAdjustMs = 0;
136 double minimumLengthMs = 0;
137 bool overrideNoteVels =
false, eventReceivedFromDevice =
false;
140 int programToUse = 0;
142 NoteFilterRange noteFilterRange;
144 MidiMessageArray::MPESourceID midiSourceID = MidiMessageArray::createUniqueMPESourceID();
150 bool keysDown[128], keysUp[128];
151 uint8_t keyDownVelocities[128];
161 void timerCallback()
override;