Control Surface  1.1.0
MIDI Control Surface library for Arduino
Bankable/NoteButtonLatching.hpp
Go to the documentation of this file.
1 #pragma once
2 
6 
8 
9 namespace Bankable {
10 
11 /**
12  * @brief A class of MIDIOutputElement%s that read the input of a **latching
13  * push button or toggle switch**, and send out MIDI **Note** events.
14  *
15  * When the switch changes state, two MIDI Note events are sent: first
16  * a Note On event, followed immediately by a Note Off event.
17  * The switch is debounced in software.
18  * This version can be banked.
19  *
20  * @ingroup BankableMIDIOutputElements
21  */
23  : public MIDIButtonLatching<SingleAddress, DigitalNoteSender> {
24  public:
25  /**
26  * @brief Create a new Bankable NoteButtonLatching object with the given
27  * pin, note number and channel.
28  *
29  * @param config
30  * The bank configuration to use: the bank to add this element to,
31  * and whether to change the address, channel or cable number.
32  * @param pin
33  * The digital input pin to read from.
34  * The internal pull-up resistor will be enabled.
35  * @param address
36  * The MIDI address containing the note number [0, 127],
37  * channel [CHANNEL_1, CHANNEL_16], and optional cable number
38  * [0, 15].
39  * @param velocity
40  * The velocity of the MIDI Note events.
41  */
44  uint8_t velocity = 0x7F)
46  {config, address},
47  pin,
48  {velocity},
49  } {}
50 
51  /// Set the velocity of the MIDI Note events.
52  void setVelocity(uint8_t velocity) { this->sender.setVelocity(velocity); }
53  /// Get the velocity of the MIDI Note events.
54  uint8_t getVelocity() const { return this->sender.getVelocity(); }
55 };
56 
57 } // namespace Bankable
58 
Bankable::NoteButtonLatching::getVelocity
uint8_t getVelocity() const
Get the velocity of the MIDI Note events.
Definition: Bankable/NoteButtonLatching.hpp:54
Bankable
A namespace for MIDI elements that can be added to a Bank, to change their address or channel.
Definition: BankAddresses.hpp:7
Bankable::NoteButtonLatching
A class of MIDIOutputElements that read the input of a latching push button or toggle switch,...
Definition: Bankable/NoteButtonLatching.hpp:22
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
BankAddresses.hpp
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:10
Bankable::MIDIButtonLatching< SingleAddress, DigitalNoteSender >::sender
DigitalNoteSender sender
Definition: Bankable/Abstract/MIDIButtonLatching.hpp:55
Bankable::NoteButtonLatching::setVelocity
void setVelocity(uint8_t velocity)
Set the velocity of the MIDI Note events.
Definition: Bankable/NoteButtonLatching.hpp:52
Bankable::MIDIButtonLatching< SingleAddress, DigitalNoteSender >::address
SingleAddress address
Definition: Bankable/Abstract/MIDIButtonLatching.hpp:51
MIDICNChannelAddress
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
Definition: MIDICNChannelAddress.hpp:82
MIDIButtonLatching.hpp
Bankable::NoteButtonLatching::NoteButtonLatching
NoteButtonLatching(const OutputBankConfig &config, pin_t pin, const MIDICNChannelAddress &address, uint8_t velocity=0x7F)
Create a new Bankable NoteButtonLatching object with the given pin, note number and channel.
Definition: Bankable/NoteButtonLatching.hpp:42
AH::pin_t
uint16_t pin_t
The type for Arduino pins (and ExtendedIOElement pins).
Definition: Hardware-Types.hpp:17
Bankable::SingleAddress
Definition: BankAddresses.hpp:9
DigitalNoteSender::getVelocity
uint8_t getVelocity() const
Definition: DigitalNoteSender.hpp:18
DigitalNoteSender.hpp
DigitalNoteSender
Definition: DigitalNoteSender.hpp:7
DigitalNoteSender::setVelocity
void setVelocity(uint8_t velocity)
Definition: DigitalNoteSender.hpp:17
OutputBankConfig
A struct for selecting the bank of BankableMIDIOutputs and the bank type.
Definition: BankConfig.hpp:50
Bankable::MIDIButtonLatching
A class for latching buttons and switches that send MIDI events.
Definition: Bankable/Abstract/MIDIButtonLatching.hpp:20