Line data Source code
1 : #pragma once
2 :
3 : #include <MIDI_Outputs/Abstract/MIDIIncrementDecrementButtons.hpp>
4 : #include <MIDI_Senders/DigitalNoteSender.hpp>
5 : #include <MIDI_Senders/RelativeCCSender.hpp>
6 :
7 : BEGIN_CS_NAMESPACE
8 :
9 : /**
10 : * @brief A class of MIDIOutputElement%s that read the input of **two
11 : * momentary push buttons** to increment or decrement a **relative
12 : * setting** using relative MIDI **Control Change** events.
13 : * An optional note number can be provided to reset the setting.
14 : *
15 : * This version cannot be banked.
16 : *
17 : * @ingroup MIDIOutputElements
18 : */
19 : class CCIncrementDecrementButtons
20 : : public MIDIIncrementDecrementButtons<RelativeCCSender,
21 : DigitalNoteSender> {
22 : public:
23 : /**
24 : * @brief Construct a new CCIncrementDecrementButtons object.
25 : *
26 : * @param buttons
27 : * The pins with the increment and decrement buttons connected.
28 : * The internal pull-up resistors will be enabled.
29 : * @param address
30 : * The address to use for the relative events, containing the
31 : * controller number [0, 119], channel [Channel_1, Channel_16], and
32 : * optional cable number [Cable_1, Cable_16].
33 : * @param multiplier
34 : * The multiplier for the relative events. When setting it to 2,
35 : * it will scroll twice as fast, for example.
36 : * @param resetNote
37 : * The MIDI address to use to reset the setting, containing the
38 : * note number [0, 119], channel [Channel_1, Channel_16], and
39 : * optional cable number [Cable_1, Cable_16].
40 : * It will be triggered when the increment and decrement buttons
41 : * are pressed simultaneously.
42 : * @param relativeSender
43 : * The MIDI sender to use for the relative events.
44 : * @param resetSender
45 : * The MIDI sender to use for reset events.
46 : */
47 1 : CCIncrementDecrementButtons(const AH::IncrementDecrementButtons &buttons,
48 : MIDIAddress address, uint8_t multiplier = 1,
49 : MIDIAddress resetNote = MIDIAddress::invalid(),
50 : const RelativeCCSender &relativeSender = {},
51 : const DigitalNoteSender &resetSender = {})
52 1 : : MIDIIncrementDecrementButtons(buttons, address, multiplier, resetNote,
53 1 : relativeSender, resetSender) {}
54 : };
55 :
56 : END_CS_NAMESPACE
|