Control Surface  1.1.0
MIDI Control Surface library for Arduino
NoteButton.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 **momentary
10  * push button or switch**, and send out MIDI **Note** events.
11  *
12  * A Note On event is sent when the button is pressed, and a Note Off
13  * event is sent when the button is released.
14  * The button is debounced in software.
15  * This version cannot be banked.
16  *
17  * @ingroup MIDIOutputElements
18  */
19 class NoteButton : public MIDIButton<DigitalNoteSender> {
20  public:
21  /**
22  * @brief Create a new NoteButton object with the given pin, note number
23  * 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)
37  : MIDIButton{
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 
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
NoteButton::setVelocity
void setVelocity(uint8_t velocity)
Set the velocity of the MIDI Note events.
Definition: NoteButton.hpp:44
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:10
NoteButton::getVelocity
uint8_t getVelocity() const
Get the velocity of the MIDI Note events.
Definition: NoteButton.hpp:46
MIDIButton< DigitalNoteSender >::sender
DigitalNoteSender sender
Definition: Abstract/MIDIButton.hpp:55
MIDIButton
An abstract class for momentary push buttons that send MIDI events.
Definition: Abstract/MIDIButton.hpp:17
MIDIButton< DigitalNoteSender >::address
const MIDICNChannelAddress address
Definition: Abstract/MIDIButton.hpp:52
MIDICNChannelAddress
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
Definition: MIDICNChannelAddress.hpp:82
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
MIDIButton.hpp
DigitalNoteSender.hpp
DigitalNoteSender::setVelocity
void setVelocity(uint8_t velocity)
Definition: DigitalNoteSender.hpp:17
NoteButton
A class of MIDIOutputElements that read the input of a momentary push button or switch,...
Definition: NoteButton.hpp:19
NoteButton::NoteButton
NoteButton(pin_t pin, const MIDICNChannelAddress &address, uint8_t velocity=0x7F)
Create a new NoteButton object with the given pin, note number and channel.
Definition: NoteButton.hpp:35