Control Surface  1.1.0
MIDI Control Surface library for Arduino
NoteChordButton.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 NoteChordButton : public MIDIChordButton<DigitalNoteSender> {
20  public:
21  /**
22  * @brief Create a new Bankable NoteChordButton object with the given pin,
23  * address and chord.
24  *
25  * @param pin
26  * The digital input pin with the button connected.
27  * The internal pull-up resistor will be enabled.
28  * @param address
29  * The MIDI address of the base note, containing the note
30  * number [0, 127], channel [CHANNEL_1, CHANNEL_16], and optional
31  * cable number [0, 15].
32  * @param chord
33  * The chord containing the intervals of the other notes to play.
34  * @param velocity
35  * The velocity of the MIDI Note events.
36  *
37  * @tparam N
38  * The number of notes in the chord.
39  */
40  template <uint8_t N>
42  const Chord<N> &chord, uint8_t velocity = 0x7F)
44  pin,
45  address,
46  chord,
47  {velocity},
48  } {}
49 
50  /// Set the velocity of the MIDI Note events.
51  void setVelocity(uint8_t velocity) { this->sender.setVelocity(velocity); }
52  /// Get the velocity of the MIDI Note events.
53  uint8_t getVelocity() const { return this->sender.getVelocity(); }
54 };
55 
Chord
Definition: Chords.hpp:16
MIDIChordButton.hpp
MIDIChordButton< DigitalNoteSender >::chord
AH::UniquePtr< const IChord > chord
Definition: Abstract/MIDIChordButton.hpp:78
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:10
NoteChordButton::getVelocity
uint8_t getVelocity() const
Get the velocity of the MIDI Note events.
Definition: NoteChordButton.hpp:53
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
NoteChordButton
A class of MIDIOutputElements that read the input of a momentary push button or switch,...
Definition: NoteChordButton.hpp:19
DigitalNoteSender.hpp
DigitalNoteSender
Definition: DigitalNoteSender.hpp:7
DigitalNoteSender::setVelocity
void setVelocity(uint8_t velocity)
Definition: DigitalNoteSender.hpp:17
NoteChordButton::setVelocity
void setVelocity(uint8_t velocity)
Set the velocity of the MIDI Note events.
Definition: NoteChordButton.hpp:51
NoteChordButton::NoteChordButton
NoteChordButton(pin_t pin, const MIDICNChannelAddress &address, const Chord< N > &chord, uint8_t velocity=0x7F)
Create a new Bankable NoteChordButton object with the given pin, address and chord.
Definition: NoteChordButton.hpp:41
MIDIChordButton
An abstract class for momentary push buttons that send multiple MIDI events.
Definition: Abstract/MIDIChordButton.hpp:20
MIDIChordButton< DigitalNoteSender >::address
const MIDICNChannelAddress address
Definition: Abstract/MIDIChordButton.hpp:77
MIDIChordButton< DigitalNoteSender >::sender
DigitalNoteSender sender
Definition: Abstract/MIDIChordButton.hpp:82