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