Control Surface  1.1.0
MIDI Control Surface library for Arduino
ManyAddresses/CCIncrementDecrementButtons.hpp
Go to the documentation of this file.
1 #pragma once
2 
6 
8 
9 namespace Bankable {
10 namespace ManyAddresses {
11 /**
12  * @brief A class of MIDIOutputElement%s that read the input of **two
13  * momentary push buttons** to increment or decrement a **relative
14  * setting** using relative MIDI **Control Change** events.
15  * An optional note number can be provided to reset the setting.
16  *
17  * This version can be banked using an arbitrary list of alternative
18  * addresses.
19  *
20  * @tparam N
21  * The number of variants/alternative addresses the element has.
22  *
23  * @ingroup ManyAddressesMIDIOutputElements
24  */
25 template <setting_t N>
28  TwoManyAddresses<N>, RelativeCCSender, DigitalNoteSender> {
29  public:
30  /**
31  * @brief Construct a new Bankable CCIncrementDecrementButtons object.
32  *
33  * @param config
34  * The bank configuration to use: the bank to add this element to,
35  * and whether to change the address, channel or cable number.
36  * @param buttons
37  * The pins with the increment and decrement buttons connected.
38  * The internal pull-up resistors will be enabled.
39  * @param addresses
40  * The list of MIDI addresses to use for the relative events,
41  * containing the controller number [0, 119], channel [CHANNEL_1,
42  * CHANNEL_16], and optional cable number [0, 15].
43  * @param multiplier
44  * The multiplier for the relative events. When setting it to 2,
45  * it will scroll twice as fast, for example.
46  * @param resetNotes
47  * The list of MIDI addresses to use to reset the setting,
48  * containing the note number [0, 127], channel [CHANNEL_1,
49  * CHANNEL_16], and optional cable number [0, 15]. It will be
50  * triggered when the increment and decrement buttons are pressed
51  * simultaneously.
52  * @param relativeSender
53  * The MIDI sender to use for the relative events.
54  * @param resetSender
55  * The MIDI sender to use for reset events.
56  */
58  const OutputBankConfig &config,
61  const Array<MIDICNChannelAddress, N> &resetNotes = {},
62  const RelativeCCSender &relativeSender = {},
63  const DigitalNoteSender &resetSender = {})
64  : MIDIIncrementDecrementButtons<TwoManyAddresses<N>, RelativeCCSender,
66  {config, {addresses, resetNotes}}, buttons, multiplier,
68 };
69 } // namespace ManyAddresses
70 } // namespace Bankable
71 
MIDIIncrementDecrementButtons.hpp
Bankable::MIDIIncrementDecrementButtons< TwoManyAddresses< N >, RelativeCCSender, DigitalNoteSender >::addresses
TwoManyAddresses< N > addresses
Definition: Bankable/Abstract/MIDIIncrementDecrementButtons.hpp:71
Bankable
A namespace for MIDI elements that can be added to a Bank, to change their address or channel.
Definition: BankAddresses.hpp:7
AH::IncrementDecrementButtons
A class for buttons that increment and decrement some counter or setting.
Definition: IncrementDecrementButtons.hpp:25
Bankable::ManyAddresses::CCIncrementDecrementButtons::CCIncrementDecrementButtons
CCIncrementDecrementButtons(const OutputBankConfig &config, const AH::IncrementDecrementButtons &buttons, const Array< MIDICNChannelAddress, N > &addresses, uint8_t multiplier=1, const Array< MIDICNChannelAddress, N > &resetNotes={}, const RelativeCCSender &relativeSender={}, const DigitalNoteSender &resetSender={})
Construct a new Bankable CCIncrementDecrementButtons object.
Definition: ManyAddresses/CCIncrementDecrementButtons.hpp:57
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
BankAddresses.hpp
Bankable::MIDIIncrementDecrementButtons< TwoManyAddresses< N >, RelativeCCSender, DigitalNoteSender >::buttons
AH::IncrementDecrementButtons buttons
Definition: Bankable/Abstract/MIDIIncrementDecrementButtons.hpp:72
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:10
MIDIIncrementDecrementButtons
An abstract class for two buttons that send incremental MIDI events.
Definition: Abstract/MIDIIncrementDecrementButtons.hpp:15
Bankable::MIDIIncrementDecrementButtons< TwoManyAddresses< N >, RelativeCCSender, DigitalNoteSender >::relativeSender
RelativeCCSender relativeSender
Definition: Bankable/Abstract/MIDIIncrementDecrementButtons.hpp:76
AH::Array
An array wrapper for easy copying, comparing, and iterating.
Definition: Array.hpp:36
Bankable::MIDIIncrementDecrementButtons
An abstract class for two buttons that send incremental MIDI events.
Definition: Bankable/Abstract/MIDIIncrementDecrementButtons.hpp:20
Bankable::MIDIIncrementDecrementButtons< TwoManyAddresses< N >, RelativeCCSender, DigitalNoteSender >::multiplier
const uint8_t multiplier
Definition: Bankable/Abstract/MIDIIncrementDecrementButtons.hpp:73
RelativeCCSender.hpp
DigitalNoteSender
Definition: DigitalNoteSender.hpp:7
RelativeCCSender
Definition: RelativeCCSender.hpp:65
OutputBankConfig
A struct for selecting the bank of BankableMIDIOutputs and the bank type.
Definition: BankConfig.hpp:50
Bankable::ManyAddresses::CCIncrementDecrementButtons
A class of MIDIOutputElements that read the input of two momentary push buttons to increment or decre...
Definition: ManyAddresses/CCIncrementDecrementButtons.hpp:26
Bankable::MIDIIncrementDecrementButtons< TwoManyAddresses< N >, RelativeCCSender, DigitalNoteSender >::resetSender
DigitalNoteSender resetSender
Definition: Bankable/Abstract/MIDIIncrementDecrementButtons.hpp:77