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 : * [0, 15]. 38 : * @param sender 39 : * The MIDI sender to use. 40 : */ 41 1 : CCPotentiometer(const OutputBankConfig &config, pin_t analogPin, 42 : const MIDICNChannelAddress &address, 43 : const ContinuousCCSender &sender = {}) 44 1 : : MIDIFilteredAnalogAddressable(SingleAddress{config, address}, analogPin, sender) {} 45 : }; 46 : 47 : } // namespace Bankable 48 : 49 : END_CS_NAMESPACE