Control Surface  1.1.0
MIDI Control Surface library for Arduino
Bankable/CCButton.hpp
Go to the documentation of this file.
1 #pragma once
2 
6 
8 
9 /** @brief A namespace for MIDI elements that can be added to a Bank,
10  * to change their address or channel.
11  */
12 namespace Bankable {
13 
14 /**
15  * @brief A class of MIDIOutputElement%s that read the input of a **momentary
16  * push button or switch**, and send out MIDI **Control Change**
17  * events.
18  *
19  * A value of 0x7F is sent when the button is pressed, and a value of
20  * 0x00 is sent when the button is released.
21  * The button is debounced in software.
22  * This version can be banked.
23  *
24  * @ingroup BankableMIDIOutputElements
25  */
26 class CCButton : public MIDIButton<SingleAddress, DigitalCCSender> {
27  public:
28  /**
29  * @brief Create a new Bankable CCButton object with the given bank
30  * configuration, button pin, and address.
31  *
32  * @param config
33  * The bank configuration to use: the bank to add this element to,
34  * and whether to change the address, channel or cable number.
35  * @param pin
36  * The digital input pin with the button connected.
37  * The internal pull-up resistor will be enabled.
38  * @param address
39  * The MIDI address containing the controller number [0, 119],
40  * channel [CHANNEL_1, CHANNEL_16], and optional cable number
41  * [0, 15].
42  * @param sender
43  * The MIDI sender to use.
44  */
45  CCButton(const OutputBankConfig &config, pin_t pin,
47  const DigitalCCSender &sender = {})
48  : MIDIButton{{config, address}, pin, sender} {}
49 };
50 
51 } // namespace Bankable
52 
MIDIButton.hpp
Bankable::MIDIButton< SingleAddress, DigitalCCSender >::address
SingleAddress address
Definition: Bankable/Abstract/MIDIButton.hpp:55
Bankable::CCButton::CCButton
CCButton(const OutputBankConfig &config, pin_t pin, const MIDICNChannelAddress &address, const DigitalCCSender &sender={})
Create a new Bankable CCButton object with the given bank configuration, button pin,...
Definition: Bankable/CCButton.hpp:45
Bankable
A namespace for MIDI elements that can be added to a Bank, to change their address or channel.
Definition: BankAddresses.hpp:7
DigitalCCSender.hpp
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
Bankable::MIDIButton
An abstract class for momentary push buttons that send MIDI events.
Definition: Bankable/Abstract/MIDIButton.hpp:20
BankAddresses.hpp
DigitalCCSender
Definition: DigitalCCSender.hpp:7
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
AH::pin_t
uint16_t pin_t
The type for Arduino pins (and ExtendedIOElement pins).
Definition: Hardware-Types.hpp:17
Bankable::MIDIButton< SingleAddress, DigitalCCSender >::sender
DigitalCCSender sender
Definition: Bankable/Abstract/MIDIButton.hpp:59
Bankable::CCButton
A class of MIDIOutputElements that read the input of a momentary push button or switch,...
Definition: Bankable/CCButton.hpp:26
OutputBankConfig
A struct for selecting the bank of BankableMIDIOutputs and the bank type.
Definition: BankConfig.hpp:50