Control Surface  1.1.0
MIDI Control Surface library for Arduino
Bankable/CCButtons.hpp
Go to the documentation of this file.
3 
5 
6 namespace Bankable {
7 
8 /**
9  * @brief A class of MIDIOutputElement%s that read the input of **a collection
10  * of momentary push buttons or switches**, and send out MIDI **Control
11  * Change** events.
12  *
13  * A value of 0x7F is sent when a button is pressed, and a value of 0x00 is sent
14  * when a button is released.
15  * The buttons are debounced in software.
16  * This version can be banked.
17  *
18  * @tparam NUMBER_OF_BUTTONS
19  * The number of buttons in the collection.
20  *
21  * @ingroup BankableMIDIOutputElements
22  */
23 template <uint8_t NUMBER_OF_BUTTONS>
24 class CCButtons : public MIDIButtons<DigitalCCSender, NUMBER_OF_BUTTONS> {
25  public:
26  /**
27  * @brief Create a new Bankable CCButtons object with the given pins,
28  * the given controller number and channel.
29  *
30  * @param config
31  * The bank configuration to use: the bank to add this element to,
32  * and whether to change the address, channel or cable number.
33  * @param buttons
34  * An list of digital input pins with the buttons connected.
35  * The internal pull-up resistors will be enabled.
36  * @param baseAddress
37  * The MIDI address of the first button, containing the controller
38  * number [0, 119], channel [CHANNEL_1, CHANNEL_16], and optional
39  * cable number [0, 15].
40  * @param incrementAddress
41  * The number of addresses to increment for each next button.
42  * E.g. if `baseAddress` is 8, and `incrementAddress` is 2,
43  * then the first button will send on address 8, the second
44  * button will send on address 10, button three on address 12, etc.
45  * @param sender
46  * The MIDI sender to use.
47  */
48  CCButtons(const OutputBankConfig &config,
52  const DigitalCCSender &sender = {})
55 };
56 
57 } // namespace Bankable
58 
Bankable
A namespace for MIDI elements that can be added to a Bank, to change their address or channel.
Definition: BankAddresses.hpp:7
Bankable::MIDIButtons< DigitalCCSender, NUMBER_OF_BUTTONS >::baseAddress
const MIDICNChannelAddress baseAddress
Definition: Bankable/Abstract/MIDIButtons.hpp:78
Bankable::MIDIButtons< DigitalCCSender, NUMBER_OF_BUTTONS >::buttons
Array< AH::Button, NUMBER_OF_BUTTONS > buttons
Definition: Bankable/Abstract/MIDIButtons.hpp:77
Bankable::MIDIButtons< DigitalCCSender, NUMBER_OF_BUTTONS >::incrementAddress
const RelativeMIDICNChannelAddress incrementAddress
Definition: Bankable/Abstract/MIDIButtons.hpp:79
DigitalCCSender.hpp
Bankable::CCButtons::CCButtons
CCButtons(const OutputBankConfig &config, const Array< AH::Button, NUMBER_OF_BUTTONS > &buttons, const MIDICNChannelAddress &baseAddress, const RelativeMIDICNChannelAddress &incrementAddress, const DigitalCCSender &sender={})
Create a new Bankable CCButtons object with the given pins, the given controller number and channel.
Definition: Bankable/CCButtons.hpp:48
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
RelativeMIDICNChannelAddress
A class for saving an offset to a MIDI address.
Definition: MIDICNChannelAddress.hpp:58
DigitalCCSender
Definition: DigitalCCSender.hpp:7
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:10
MIDIButtons.hpp
Bankable::MIDIButtons< DigitalCCSender, NUMBER_OF_BUTTONS >::sender
DigitalCCSender sender
Definition: Bankable/Abstract/MIDIButtons.hpp:83
MIDICNChannelAddress
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
Definition: MIDICNChannelAddress.hpp:82
AH::Array
An array wrapper for easy copying, comparing, and iterating.
Definition: Array.hpp:36
OutputBankConfig
A struct for selecting the bank of BankableMIDIOutputs and the bank type.
Definition: BankConfig.hpp:50
Bankable::CCButtons
A class of MIDIOutputElements that read the input of a collection of momentary push buttons or switch...
Definition: Bankable/CCButtons.hpp:24
Bankable::MIDIButtons
An abstract class for momentary push buttons that send MIDI events.
Definition: Bankable/Abstract/MIDIButtons.hpp:23