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