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

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

#include <Banks/BankableAddresses.hpp>

+ Inheritance diagram for ManyAddresses_Base:
+ Collaboration diagram for ManyAddresses_Base:

Public Member Functions

template<uint8_t NumBanks>
 ManyAddresses_Base (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 OutputBank & bank
 

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.

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 140 of file BankableAddresses.hpp.

Constructor & Destructor Documentation

◆ ManyAddresses_Base()

ManyAddresses_Base ( 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 151 of file BankableAddresses.hpp.

Member Function Documentation

◆ getRawBankSetting()

setting_t getRawBankSetting ( ) const
inlineinherited

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

Definition at line 26 of file BankableAddresses.hpp.

◆ getSelection()

setting_t 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 BankableAddresses.hpp.

◆ lock()

void 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 BankableAddresses.hpp.

◆ unlock()

void unlock ( )
inlineinherited

Unlock the bank setting.

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

Definition at line 55 of file BankableAddresses.hpp.

Member Data Documentation

◆ bank

const OutputBank& bank
protectedinherited

Definition at line 58 of file BankableAddresses.hpp.

◆ UNLOCKED

constexpr static setting_t UNLOCKED = NO_SETTING
staticconstexprprivateinherited

Definition at line 61 of file BankableAddresses.hpp.

◆ lockedSetting

setting_t lockedSetting = UNLOCKED
privateinherited

Definition at line 62 of file BankableAddresses.hpp.


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