Control Surface  1.1.0
MIDI Control Surface library for Arduino
Public Member Functions | Protected Attributes | Private Attributes | Static Private Attributes | List of all members
ManyAddressesMIDIOutput Class Reference

A base class for all MIDIOutputElements that can have one of many addresses. More...

#include <BankableMIDIOutput.hpp>

Inheritance diagram for ManyAddressesMIDIOutput:
Collaboration diagram for ManyAddressesMIDIOutput:

Public Member Functions

template<uint8_t NumBanks>
 ManyAddressesMIDIOutput (const Bank< NumBanks > &bank)
 Constructor. More...
 
setting_t getRawBankSetting () const
 Get the actual bank setting (no matter whether the element is locked or not). More...
 
setting_t getSelection () const
 Get the bank setting. More...
 
void lock ()
 Lock the bank setting. More...
 
void unlock ()
 Unlock the bank setting. More...
 

Protected Attributes

const OutputBankbank
 

Private Attributes

setting_t lockedSetting = UNLOCKED
 

Static Private Attributes

constexpr static setting_t UNLOCKED = NO_SETTING
 

Detailed Description

A base class for all MIDIOutputElements that can have one of many addresses.

The bank setting determines the address that's being used.

Template Parameters
NThe number of addresses the element has.
Note
To prevent 'sticky' notes (i.e. a button is pressed, a note on is sent, the bank is changed, the button is released, and the note off is sent to a different address, causing the first note to keep on playing indefinitely), there must be a way to lock the bank setting while a note is playing. Then when it is no longer playing, the bank setting is unlocked.
Invariant
getSelection and getRawBankSetting always return a number in the half-open interval \( \left[0, \mathrm{bank.getNumberOfBanks()}\right) \cap \mathbb{N} \).

Definition at line 146 of file BankableMIDIOutput.hpp.

Constructor & Destructor Documentation

◆ ManyAddressesMIDIOutput()

template<uint8_t NumBanks>
ManyAddressesMIDIOutput::ManyAddressesMIDIOutput ( const Bank< NumBanks > &  bank)
inline

Constructor.

Parameters
bankThe bank to add this element to.
Template Parameters
NumBanksThe number of bank settings bank has.

Definition at line 157 of file BankableMIDIOutput.hpp.

Member Function Documentation

◆ getRawBankSetting()

setting_t BankableMIDIOutput_Base::getRawBankSetting ( ) const
inlineinherited

Get the actual bank setting (no matter whether the element is locked or not).

Definition at line 26 of file BankableMIDIOutput.hpp.

◆ getSelection()

setting_t BankableMIDIOutput_Base::getSelection ( ) const
inlineinherited

Get the bank setting.

If the element is locked, the bank setting from the moment it was locked is returned.

Definition at line 34 of file BankableMIDIOutput.hpp.

◆ lock()

void BankableMIDIOutput_Base::lock ( )
inlineinherited

Lock the bank setting.

As long as it's locked, getSelection will return the current setting, independent from the actual bank setting.

Definition at line 44 of file BankableMIDIOutput.hpp.

◆ unlock()

void BankableMIDIOutput_Base::unlock ( )
inlineinherited

Unlock the bank setting.

After unlocking, getSelection will return the actual bank setting again.

Definition at line 55 of file BankableMIDIOutput.hpp.

Member Data Documentation

◆ bank

const OutputBank& BankableMIDIOutput_Base::bank
protectedinherited

Definition at line 58 of file BankableMIDIOutput.hpp.

◆ UNLOCKED

constexpr static setting_t BankableMIDIOutput_Base::UNLOCKED = NO_SETTING
staticconstexprprivateinherited

Definition at line 61 of file BankableMIDIOutput.hpp.

◆ lockedSetting

setting_t BankableMIDIOutput_Base::lockedSetting = UNLOCKED
privateinherited

Definition at line 62 of file BankableMIDIOutput.hpp.


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