Control Surface  1.1.0
MIDI Control Surface library for Arduino
Bankable/NoteChordButton.hpp
Go to the documentation of this file.
1 #pragma once
2 
5 
7 
8 namespace Bankable {
9 
10 /**
11  * @brief A class of MIDIOutputElement%s that read the input of a **momentary
12  * push button or switch**, and send out MIDI **Note** events.
13  *
14  * A Note On event is sent when the button is pressed, and a Note Off
15  * event is sent when the button is released.
16  * The button is debounced in software.
17  * This version can be banked.
18  *
19  * @ingroup BankableMIDIOutputElements
20  */
21 class NoteChordButton : public MIDIChordButton<DigitalNoteSender> {
22  public:
23  /**
24  * @brief Create a new Bankable NoteChordButton object with the given pin,
25  * note number, channel and chord.
26  *
27  * @param config
28  * The bank configuration to use: the bank to add this element to,
29  * and whether to change the address, channel or cable number.
30  * @param pin
31  * The digital input pin with the button connected.
32  * The internal pull-up resistor will be enabled.
33  * @param address
34  * The MIDI address of the base note, containing the note
35  * number [0, 127], channel [CHANNEL_1, CHANNEL_16], and optional
36  * cable number [0, 15].
37  * @param chord
38  * The chord containing the intervals of the other notes to play.
39  * @param velocity
40  * The velocity of the MIDI Note events.
41  *
42  * @tparam N
43  * The number of notes in the chord.
44  */
45  template <uint8_t N>
48  uint8_t velocity = 0x7F)
50  config, pin, address, chord, {velocity},
51  } {}
52 
53  /// Set the velocity of the MIDI Note events.
54  void setVelocity(uint8_t velocity) { this->sender.setVelocity(velocity); }
55  /// Get the velocity of the MIDI Note events.
56  uint8_t getVelocity() const { return this->sender.getVelocity(); }
57 };
58 
59 } // namespace Bankable
60 
Bankable::NoteChordButton::setVelocity
void setVelocity(uint8_t velocity)
Set the velocity of the MIDI Note events.
Definition: Bankable/NoteChordButton.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
Chord
Definition: Chords.hpp:16
Bankable::NoteChordButton
A class of MIDIOutputElements that read the input of a momentary push button or switch,...
Definition: Bankable/NoteChordButton.hpp:21
Bankable::NoteChordButton::getVelocity
uint8_t getVelocity() const
Get the velocity of the MIDI Note events.
Definition: Bankable/NoteChordButton.hpp:56
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
Bankable::MIDIChordButton< DigitalNoteSender >::chord
AH::UniquePtr< const IChord > chord
Definition: Bankable/Abstract/MIDIChordButton.hpp:84
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:10
MIDICNChannelAddress
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
Definition: MIDICNChannelAddress.hpp:82
Bankable::MIDIChordButton
An abstract class for momentary push buttons that send multiple MIDI events.
Definition: Bankable/Abstract/MIDIChordButton.hpp:23
Bankable::MIDIChordButton< DigitalNoteSender >::address
SingleAddress address
Definition: Bankable/Abstract/MIDIChordButton.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
Bankable::NoteChordButton::NoteChordButton
NoteChordButton(const OutputBankConfig &config, pin_t pin, const MIDICNChannelAddress &address, const Chord< N > &chord, uint8_t velocity=0x7F)
Create a new Bankable NoteChordButton object with the given pin, note number, channel and chord.
Definition: Bankable/NoteChordButton.hpp:46
Bankable::MIDIChordButton< DigitalNoteSender >::sender
DigitalNoteSender sender
Definition: Bankable/Abstract/MIDIChordButton.hpp:88
DigitalNoteSender.hpp
DigitalNoteSender
Definition: DigitalNoteSender.hpp:7
MIDIChordButton.hpp
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