Control Surface
main
MIDI Control Surface library for Arduino
Toggle main menu visibility
Loading...
Searching...
No Matches
src
MIDI_Outputs
Bankable
Bankable/ProgramChanger.hpp
Go to the documentation of this file.
1
#pragma once
2
3
#include <
Banks/BankableAddresses.hpp
>
4
#include <
Control_Surface/Control_Surface_Class.hpp
>
5
#include <
Def/Def.hpp
>
6
#include <
Selectors/Selectable.hpp
>
7
8
BEGIN_CS_NAMESPACE
9
10
namespace
Bankable
{
11
12
template
<setting_t N>
13
class
ProgramChanger
:
public
Selectable
<N> {
14
public
:
15
ProgramChanger
(
OutputBankConfig<>
bank
,
const
Array<uint8_t, N>
&
programs
,
16
MIDIChannelCable
channelCN
)
17
:
bank
(
bank
),
programs
(
programs
),
channelCN
(
channelCN
) {}
18
19
void
select
(
setting_t
setting)
override
{
20
setting = this->
validateSetting
(setting);
21
MIDIAddress
addr {
programs
[setting],
channelCN
};
22
Control_Surface
.sendProgramChange(addr +
bank
.getAddressOffset());
23
}
24
25
private
:
26
OutputBankableMIDIAddress
bank
;
27
Array<uint8_t, N>
programs
;
28
MIDIChannelCable
channelCN
;
29
};
30
31
}
// namespace Bankable
32
33
END_CS_NAMESPACE
BankableAddresses.hpp
Control_Surface
Control_Surface_ & Control_Surface
A predefined instance of the Control Surface to use in the Arduino sketches.
Definition
Control_Surface_Class.cpp:338
Control_Surface_Class.hpp
Def.hpp
setting_t
uint8_t setting_t
The type used for Selectors.
Definition
Def.hpp:53
Selectable.hpp
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:14
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition
Settings/NamespaceSettings.hpp:11
Bankable::ProgramChanger::ProgramChanger
ProgramChanger(OutputBankConfig<> bank, const Array< uint8_t, N > &programs, MIDIChannelCable channelCN)
Definition
Bankable/ProgramChanger.hpp:15
Bankable::ProgramChanger::bank
OutputBankableMIDIAddress bank
Definition
Bankable/ProgramChanger.hpp:26
Bankable::ProgramChanger::select
void select(setting_t setting) override
Definition
Bankable/ProgramChanger.hpp:19
Bankable::ProgramChanger::channelCN
MIDIChannelCable channelCN
Definition
Bankable/ProgramChanger.hpp:28
Bankable::ProgramChanger::programs
Array< uint8_t, N > programs
Definition
Bankable/ProgramChanger.hpp:27
MIDIAddress
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
Definition
MIDIAddress.hpp:145
MIDIChannelCable
A class for saving a MIDI channel and cable number.
Definition
MIDIAddress.hpp:24
OutputBankableMIDIAddress
A base class for all MIDIOutputElements that can be banked.
Definition
BankableAddresses.hpp:85
Selectable::Selectable
Selectable(setting_t initialSelection=0)
Definition
Selectable.hpp:13
Selectable::validateSetting
static setting_t validateSetting(setting_t setting)
Definition
Selectable.hpp:19
Bankable
A namespace for MIDI elements that can be added to a Bank, to change their address or channel.
Definition
BankAddresses.hpp:7
AH::Array
An array wrapper for easy copying, comparing, and iterating.
Definition
Array.hpp:32
OutputBankConfig
Definition
BankConfig.hpp:79
Generated by
1.17.0