77 void noteOff (
int noteNumber,
int midiChannel = -1);
83 bool isLegacy =
false;
84 std::unique_ptr<MPEZoneLayout::Zone> zone;
85 int channelIncrement, numChannels, firstChannel, lastChannel, midiChannelLastAssigned;
91 int lastNotePlayed = -1;
92 bool isFree()
const noexcept {
return notes.
isEmpty(); }
94 std::array<MidiChannel, 17> midiChannels;
97 int findMidiChannelPlayingClosestNonequalNote (
int noteNumber)
noexcept;
130 void reset() noexcept;
141 int channelIncrement;
142 int firstChannel, lastChannel;
144 uint32 sourceAndChannel[17];
149 bool applyRemapIfExisting (
int channel, uint32 sourceAndChannelID,
MidiMessage& m) noexcept;
150 int getBestChanToReuse() const noexcept;
155 bool messageIsNoteData (const
MidiMessage& m) {
return (*m.getRawData() & 0xf0) != 0xf0; }
bool isEmpty() const noexcept
int findMidiChannelForExistingNote(int initialNoteOnNumber) noexcept
MPEChannelAssigner(MPEZoneLayout::Zone zoneToUse)
int findMidiChannelForNewNote(int noteNumber) noexcept
void noteOff(int noteNumber, int midiChannel=-1)
void remapMidiChannelIfNeeded(MidiMessage &message, uint32 mpeSourceID) noexcept
static const uint32 notMPE
void clearChannel(int channel) noexcept
void clearSource(uint32 mpeSourceID)
MPEChannelRemapper(MPEZoneLayout::Zone zoneToRemap)