Line data Source code
1 : #pragma once
2 :
3 : #include <Banks/BankAddresses.hpp>
4 : #include <MIDI_Outputs/Bankable/Abstract/MIDIFilteredAnalog.hpp>
5 : #include <MIDI_Senders/ContinuousCCSender.hpp>
6 :
7 : BEGIN_CS_NAMESPACE
8 :
9 : namespace Bankable {
10 :
11 : /**
12 : * @brief A class of MIDIOutputElement%s that read the analog input from a
13 : * **potentiometer or fader**, and send out 7-bit MIDI **Control
14 : * Change** events.
15 : *
16 : * The analog input is filtered and hysteresis is applied for maximum
17 : * stability.
18 : * This version can be banked.
19 : *
20 : * @ingroup BankableMIDIOutputElements
21 : */
22 : class CCPotentiometer
23 : : public MIDIFilteredAnalog<SingleAddress, ContinuousCCSender> {
24 : public:
25 : /**
26 : * @brief Create a new Bankable CCPotentiometer object with the given
27 : * analog pin, controller number and channel.
28 : *
29 : * @param config
30 : * The bank configuration to use: the bank to add this element to,
31 : * and whether to change the address, channel or cable number.
32 : * @param analogPin
33 : * The analog input pin to read from.
34 : * @param address
35 : * The MIDI address containing the controller number [0, 119],
36 : * channel [Channel_1, Channel_16], and optional cable number
37 : * [Cable_1, Cable_16].
38 : */
39 1 : CCPotentiometer(OutputBankConfig<> config, pin_t analogPin,
40 : MIDIAddress address)
41 1 : : MIDIFilteredAnalog(SingleAddress {config, address}, analogPin, {}) {}
42 : };
43 :
44 : } // namespace Bankable
45 :
46 : END_CS_NAMESPACE
|