Control Surface
main
MIDI Control Surface library for Arduino
Toggle main menu visibility
Loading...
Searching...
No Matches
src
MIDI_Outputs
Abstract
Abstract/MIDIButtons.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <
AH/Hardware/Button.hpp
>
4
#include <
Def/Def.hpp
>
5
#include <
MIDI_Outputs/Abstract/MIDIOutputElement.hpp
>
6
7
BEGIN_CS_NAMESPACE
8
16
template
<
class
Sender, u
int
8_t NumButtons>
17
class
MIDIButtons
:
public
MIDIOutputElement
{
18
protected
:
24
MIDIButtons
(
const
Array<AH::Button, NumButtons>
&
buttons
,
25
MIDIAddress
baseAddress
,
RelativeMIDIAddress
incrementAddress
,
26
const
Sender &
sender
)
27
:
buttons
(
buttons
),
baseAddress
(
baseAddress
),
28
incrementAddress
(
incrementAddress
),
sender
(
sender
) {}
29
30
public
:
31
void
begin
() final
override
{
32
for
(
auto
&button :
buttons
)
33
button.begin();
34
}
35
void
update
() final
override
{
36
MIDIAddress
address =
baseAddress
;
37
for
(
auto
&button :
buttons
) {
38
AH::Button::State
state = button.update();
39
if
(state ==
AH::Button::Falling
) {
40
sender
.sendOn(address);
41
}
else
if
(state ==
AH::Button::Rising
) {
42
sender
.sendOff(address);
43
}
44
address +=
incrementAddress
;
45
}
46
}
47
48
AH::Button::State
getButtonState
(
size_t
index)
const
{
49
return
buttons
[index].getState();
50
}
51
53
MIDIAddress
getBaseAddress
()
const
{
return
this->
baseAddress
; }
57
void
setBaseAddressUnsafe
(
MIDIAddress
address) {
58
this->
baseAddress
= address;
59
}
60
61
RelativeMIDIAddress
getIncrementAddress
()
const
{
62
return
this->
incrementAddress
;
63
}
64
67
void
setIncrementAddressUnsafe
(
RelativeMIDIAddress
address) {
68
this->
incrementAddress
= address;
69
}
70
72
void
invert
() {
73
for
(
auto
&button :
buttons
)
74
button.invert();
75
}
76
77
private
:
78
Array<AH::Button, NumButtons>
buttons
;
79
MIDIAddress
baseAddress
;
80
RelativeMIDIAddress
incrementAddress
;
81
82
public
:
83
Sender
sender
;
84
};
85
86
END_CS_NAMESPACE
Button.hpp
Def.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::Button::State
State
An enumeration of the different states a button can be in.
Definition
Button.hpp:47
AH::Button::Rising
@ Rising
Input went from low to high (0,1).
Definition
Button.hpp:51
AH::Button::Falling
@ Falling
Input went from high to low (1,0).
Definition
Button.hpp:50
MIDIAddress
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
Definition
MIDIAddress.hpp:145
MIDIButtons::incrementAddress
RelativeMIDIAddress incrementAddress
Definition
Abstract/MIDIButtons.hpp:80
MIDIButtons::getButtonState
AH::Button::State getButtonState(size_t index) const
Definition
Abstract/MIDIButtons.hpp:48
MIDIButtons::setBaseAddressUnsafe
void setBaseAddressUnsafe(MIDIAddress address)
Set the MIDI base address.
Definition
Abstract/MIDIButtons.hpp:57
MIDIButtons::sender
Sender sender
Definition
Abstract/MIDIButtons.hpp:83
MIDIButtons::getBaseAddress
MIDIAddress getBaseAddress() const
Get the MIDI base address.
Definition
Abstract/MIDIButtons.hpp:53
MIDIButtons::invert
void invert()
Definition
Abstract/MIDIButtons.hpp:72
MIDIButtons::buttons
Array< AH::Button, NumButtons > buttons
Definition
Abstract/MIDIButtons.hpp:78
MIDIButtons::begin
void begin() final override
Initialize this updatable.
Definition
Abstract/MIDIButtons.hpp:31
MIDIButtons::baseAddress
MIDIAddress baseAddress
Definition
Abstract/MIDIButtons.hpp:79
MIDIButtons::MIDIButtons
MIDIButtons(const Array< AH::Button, NumButtons > &buttons, MIDIAddress baseAddress, RelativeMIDIAddress incrementAddress, const Sender &sender)
Construct a new MIDIButtons.
Definition
Abstract/MIDIButtons.hpp:24
MIDIButtons::setIncrementAddressUnsafe
void setIncrementAddressUnsafe(RelativeMIDIAddress address)
Set the MIDI increment address.
Definition
Abstract/MIDIButtons.hpp:67
MIDIButtons::getIncrementAddress
RelativeMIDIAddress getIncrementAddress() const
Get the MIDI increment address.
Definition
Abstract/MIDIButtons.hpp:61
MIDIButtons::update
void update() final override
Update this updatable.
Definition
Abstract/MIDIButtons.hpp:35
RelativeMIDIAddress
A class for saving an offset to a MIDI address.
Definition
MIDIAddress.hpp:113
AH::Array
An array wrapper for easy copying, comparing, and iterating.
Definition
Array.hpp:32
Generated by
1.17.0