Control Surface
main
MIDI Control Surface library for Arduino
Toggle main menu visibility
Loading...
Searching...
No Matches
src
MIDI_Outputs
Abstract
Abstract/MIDIIncrementDecrementButtons.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <
AH/Hardware/IncrementDecrementButtons.hpp
>
4
#include <
Def/Def.hpp
>
5
#include <
MIDI_Outputs/Abstract/MIDIOutputElement.hpp
>
6
7
#include <
MIDI_Senders/DigitalNoteSender.hpp
>
8
9
BEGIN_CS_NAMESPACE
10
14
template
<
class
RelativeSender,
class
ResetSender>
15
class
MIDIIncrementDecrementButtons
:
public
MIDIOutputElement
{
16
protected
:
22
MIDIIncrementDecrementButtons
(
const
AH::IncrementDecrementButtons
&
buttons
,
23
MIDIAddress
address
, uint8_t
multiplier
,
24
MIDIAddress
resetAddress
,
25
const
RelativeSender &
relativeSender
,
26
const
ResetSender &
resetSender
)
27
:
buttons
(
buttons
),
address
(
address
),
multiplier
(
multiplier
),
28
resetAddress
(
resetAddress
),
relativeSender
(
relativeSender
),
29
resetSender
(
resetSender
) {}
30
31
public
:
32
void
begin
()
override
{
buttons
.begin(); }
33
34
void
update
()
override
{
35
using
IncrDecrButtons =
AH::IncrementDecrementButtons
;
36
switch
(
buttons
.update()) {
37
case
IncrDecrButtons::Nothing:
break
;
38
case
IncrDecrButtons::IncrementShort:
// fallthrough
39
case
IncrDecrButtons::IncrementLong:
// fallthrough
40
case
IncrDecrButtons::IncrementHold:
41
send
(
multiplier
,
address
);
42
break
;
43
case
IncrDecrButtons::DecrementShort:
// fallthrough
44
case
IncrDecrButtons::DecrementLong:
// fallthrough
45
case
IncrDecrButtons::DecrementHold:
46
send
(-
multiplier
,
address
);
47
break
;
48
case
IncrDecrButtons::Reset:
reset
();
break
;
49
default
:
break
;
50
}
51
}
52
53
void
send
(
long
delta,
MIDIAddress
address
) {
54
relativeSender
.send(delta,
address
);
55
}
56
57
void
reset
() {
58
if
(
resetAddress
) {
59
resetSender
.sendOn(
resetAddress
);
60
resetSender
.sendOff(
resetAddress
);
61
}
62
}
63
65
void
invert
() {
buttons
.invert(); }
66
67
AH::IncrementDecrementButtons::State
getButtonsState
()
const
{
68
return
buttons
.getState();
69
}
70
72
MIDIAddress
getAddress
()
const
{
return
this->
address
; }
74
void
setAddress
(
MIDIAddress
address
) { this->address =
address
; }
75
77
MIDIAddress
getResetAddress
()
const
{
return
this->
resetAddress
; }
79
void
setResetAddress
(
MIDIAddress
address
) { this->
resetAddress
=
address
; }
80
81
private
:
82
AH::IncrementDecrementButtons
buttons
;
83
MIDIAddress
address
;
84
uint8_t
multiplier
;
85
MIDIAddress
resetAddress
;
86
87
public
:
88
RelativeSender
relativeSender
;
89
ResetSender
resetSender
;
90
};
91
92
END_CS_NAMESPACE
Def.hpp
DigitalNoteSender.hpp
IncrementDecrementButtons.hpp
MIDIOutputElement.hpp
MIDIOutputElement
AH::Updatable<> MIDIOutputElement
Definition
MIDIOutputElement.hpp:9
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:14
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:11
AH::IncrementDecrementButtons
A class for buttons that increment and decrement some counter or setting.
Definition
IncrementDecrementButtons.hpp:22
AH::IncrementDecrementButtons::State
State
An enumeration of the different actions to be performed by the counter.
Definition
IncrementDecrementButtons.hpp:49
MIDIAddress
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
Definition
MIDIAddress.hpp:145
MIDIIncrementDecrementButtons::address
MIDIAddress address
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:83
MIDIIncrementDecrementButtons::setAddress
void setAddress(MIDIAddress address)
Set the MIDI address.
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:74
MIDIIncrementDecrementButtons::multiplier
uint8_t multiplier
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:84
MIDIIncrementDecrementButtons::resetSender
ResetSender resetSender
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:89
MIDIIncrementDecrementButtons::getButtonsState
AH::IncrementDecrementButtons::State getButtonsState() const
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:67
MIDIIncrementDecrementButtons::update
void update() override
Update this updatable.
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:34
MIDIIncrementDecrementButtons::MIDIIncrementDecrementButtons
MIDIIncrementDecrementButtons(const AH::IncrementDecrementButtons &buttons, MIDIAddress address, uint8_t multiplier, MIDIAddress resetAddress, const RelativeSender &relativeSender, const ResetSender &resetSender)
Construct a new MIDIIncrementDecrementButtons.
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:22
MIDIIncrementDecrementButtons::begin
void begin() override
Initialize this updatable.
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:32
MIDIIncrementDecrementButtons::setResetAddress
void setResetAddress(MIDIAddress address)
Set the MIDI address of the reset action.
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:79
MIDIIncrementDecrementButtons::invert
void invert()
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:65
MIDIIncrementDecrementButtons::buttons
AH::IncrementDecrementButtons buttons
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:82
MIDIIncrementDecrementButtons::getAddress
MIDIAddress getAddress() const
Get the MIDI address.
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:72
MIDIIncrementDecrementButtons::getResetAddress
MIDIAddress getResetAddress() const
Get the MIDI address of the reset action.
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:77
MIDIIncrementDecrementButtons::send
void send(long delta, MIDIAddress address)
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:53
MIDIIncrementDecrementButtons::reset
void reset()
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:57
MIDIIncrementDecrementButtons::resetAddress
MIDIAddress resetAddress
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:85
MIDIIncrementDecrementButtons::relativeSender
RelativeSender relativeSender
Definition
Abstract/MIDIIncrementDecrementButtons.hpp:88
Generated by
1.17.0