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 1 : class CCPotentiometer 23 : : public MIDIFilteredAnalogAddressable<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 2 : : MIDIFilteredAnalogAddressable(SingleAddress{config, address}, 42 3 : analogPin, {}) {} 43 : }; 44 : 45 : } // namespace Bankable 46 : 47 : END_CS_NAMESPACE