Control Surface main
MIDI Control Surface library for Arduino
Loading...
Searching...
No Matches
Abstract/MIDIButtonLatching.hpp
Go to the documentation of this file.
1#pragma once
2
4#include <Def/Def.hpp>
6
8
16template <class Sender>
18 protected:
30 MIDIButtonLatching(pin_t pin, MIDIAddress address, const Sender &sender)
31 : button(pin), address(address), sender(sender) {}
32
33 public:
34 void begin() override { button.begin(); }
35 void update() override {
37 if (state == AH::Button::Falling || state == AH::Button::Rising) {
38 sender.sendOn(address);
39 sender.sendOff(address);
40 }
41 }
42
44
46 MIDIAddress getAddress() const { return this->address; }
48 void setAddress(MIDIAddress address) { this->address = address; }
49
50 private:
53
54 public:
55 Sender sender;
56};
57
#define END_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
A class for reading and debouncing buttons and switches.
Definition Button.hpp:15
State update()
Read the button and return its new state.
Definition Button.cpp:11
State
An enumeration of the different states a button can be in.
Definition Button.hpp:45
@ Rising
Input went from low to high (0,1)
Definition Button.hpp:49
@ Falling
Input went from high to low (1,0)
Definition Button.hpp:48
State getState() const
Get the state of the button, without updating it.
Definition Button.cpp:32
void begin()
Initialize (enable the internal pull-up resistor).
Definition Button.cpp:7
A super class for object that have to be updated regularly.
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
A class for latching buttons and switches that send MIDI events.
void setAddress(MIDIAddress address)
Set the MIDI address.
MIDIButtonLatching(pin_t pin, MIDIAddress address, const Sender &sender)
Construct a new MIDIButtonLatching.
AH::Button::State getButtonState() const
void update() override
Update this updatable.
void begin() override
Initialize this updatable.
MIDIAddress getAddress() const
Get the MIDI address.