OpenShot Library | libopenshot-audio 0.2.0
juce::MPEChannelAssigner Class Reference

This class handles the assignment of new MIDI notes to member channels of an active MPE zone. More...

#include <juce_MPEUtils.h>

Public Member Functions

 MPEChannelAssigner (MPEZoneLayout::Zone zoneToUse)
 Constructor.
 
 MPEChannelAssigner (Range< int > channelRange=Range< int >(1, 17))
 Legacy mode constructor.
 
int findMidiChannelForNewNote (int noteNumber) noexcept
 This method will use a set of rules recommended in the MPE specification to determine which member channel the specified MIDI note should be assigned to and will return this channel number.
 
void noteOff (int noteNumber)
 You must call this method for all note-offs that you receive so that this class can keep track of the currently playing notes internally.
 
void allNotesOff ()
 Call this to clear all currently playing notes.
 

Detailed Description

This class handles the assignment of new MIDI notes to member channels of an active MPE zone.

To use it, create an instance passing in the MPE zone that it should operate on and then call use the findMidiChannelForNewNote() method for all note-on messages and the noteOff() method for all note-off messages.

Definition at line 41 of file juce_MPEUtils.h.

Constructor & Destructor Documentation

◆ MPEChannelAssigner() [1/2]

juce::MPEChannelAssigner::MPEChannelAssigner ( MPEZoneLayout::Zone  zoneToUse)

Constructor.

This will assign channels within the range of the specified MPE zone.

Definition at line 26 of file juce_MPEUtils.cpp.

◆ MPEChannelAssigner() [2/2]

juce::MPEChannelAssigner::MPEChannelAssigner ( Range< int channelRange = Range<int> (1, 17))

Legacy mode constructor.

This will assign channels within the specified range.

Definition at line 38 of file juce_MPEUtils.cpp.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::isEmpty().

Member Function Documentation

◆ findMidiChannelForNewNote()

int juce::MPEChannelAssigner::findMidiChannelForNewNote ( int  noteNumber)
noexcept

This method will use a set of rules recommended in the MPE specification to determine which member channel the specified MIDI note should be assigned to and will return this channel number.

The rules have the following precedence:

  • find a free channel on which the last note played was the same as the one specified
  • find the next free channel in round-robin assignment
  • find the channel number that is currently playing the closest note (but not the same)
Parameters
noteNumberthe MIDI note number to be assigned to a channel
Returns
the zone's member channel that this note should be assigned to

Definition at line 50 of file juce_MPEUtils.cpp.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::add().

◆ noteOff()

void juce::MPEChannelAssigner::noteOff ( int  noteNumber)

You must call this method for all note-offs that you receive so that this class can keep track of the currently playing notes internally.

Definition at line 87 of file juce_MPEUtils.cpp.

References juce::Array< ElementType, TypeOfCriticalSectionToUse, minimumAllocatedSize >::removeAllInstancesOf().

◆ allNotesOff()


The documentation for this class was generated from the following files: