Control Surface  1.2.0
MIDI Control Surface library for Arduino
MIDIAddress.cpp
Go to the documentation of this file.
1 #include "MIDIAddress.hpp"
2 
4 
6  this->addresses.valid &= that.addresses.valid;
7  this->addresses.address += that.addresses.address;
8  this->addresses.channel += that.addresses.channel;
9  this->addresses.cableNumber += that.addresses.cableNumber;
10  return *this;
11 }
12 
14  this->addresses.valid &= rhs.addresses.valid;
15  this->addresses.address += rhs.addresses.address;
16  this->addresses.channel += rhs.addresses.channel;
17  this->addresses.cableNumber += rhs.addresses.cableNumber;
18  return *this;
19 }
20 
22  this->addresses.valid &= rhs.addresses.valid;
23  this->addresses.address -= rhs.addresses.address;
24  this->addresses.channel -= rhs.addresses.channel;
25  this->addresses.cableNumber -= rhs.addresses.cableNumber;
26  return *this;
27 }
28 
30  MIDIAddress copy = *this;
31  copy += rhs;
32  return copy;
33 }
34 
36  MIDIAddress copy = *this;
37  copy -= rhs;
38  return copy;
39 }
40 
42  const MIDIAddress &base) {
43  return base == toMatch;
44 }
45 
47  const MIDIAddress &base, uint8_t length) {
48  bool valid = base.addresses.valid && toMatch.addresses.valid;
49  bool addressInRange =
50  base.addresses.address <= toMatch.addresses.address &&
51  base.addresses.address + length > toMatch.addresses.address;
52  bool equalChannelAndCN =
53  base.addresses.channel == toMatch.addresses.channel &&
54  base.addresses.cableNumber == toMatch.addresses.cableNumber;
55  return valid && addressInRange && equalChannelAndCN;
56 }
57 
MIDIAddress::operator+
MIDIAddress operator+(const RelativeMIDIAddress &rhs) const
Add a relative offset.
Definition: MIDIAddress.cpp:29
MIDIAddress.hpp
MIDIAddress
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
Definition: MIDIAddress.hpp:91
MIDIAddress::operator-=
MIDIAddress & operator-=(const RelativeMIDIAddress &rhs)
Subtract a relative offset from this address.
Definition: MIDIAddress.cpp:21
RelativeMIDIAddress
A class for saving an offset to a MIDI address.
Definition: MIDIAddress.hpp:64
MIDIAddress::addresses
RawMIDIAddress addresses
Definition: MIDIAddress.hpp:298
BEGIN_CS_NAMESPACE
#define BEGIN_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:9
RelativeMIDIAddress::operator+=
RelativeMIDIAddress & operator+=(RelativeMIDIAddress that)
Compound addition.
Definition: MIDIAddress.cpp:5
END_CS_NAMESPACE
#define END_CS_NAMESPACE
Definition: Settings/NamespaceSettings.hpp:10
MIDIAddress::matchAddressInRange
static bool matchAddressInRange(const MIDIAddress &toMatch, const MIDIAddress &base, uint8_t length)
Check if an address falls within a range of MIDI addresses, starting with address base,...
Definition: MIDIAddress.cpp:46
MIDIAddress::operator+=
MIDIAddress & operator+=(const RelativeMIDIAddress &rhs)
Add a relative offset to this address.
Definition: MIDIAddress.cpp:13
MIDIAddress::matchSingle
static bool matchSingle(const MIDIAddress &toMatch, const MIDIAddress &base)
Check if two addresses match (are equal).
Definition: MIDIAddress.cpp:41
MIDIAddress::operator-
MIDIAddress operator-(const RelativeMIDIAddress &rhs) const
Subtract a relative offset.
Definition: MIDIAddress.cpp:35
RelativeMIDIAddress::addresses
RawMIDIAddress addresses
Definition: MIDIAddress.hpp:84