1#ifndef MCC_PITCH_ACCIDENTAL_H
2#define MCC_PITCH_ACCIDENTAL_H
4#include <MCC_BuildSettings.h>
45 constexpr explicit Accidental(int32_t semitones) noexcept
46 : _semitones(IsInRange(semitones)
47 ?
static_cast<int8_t
>(semitones)
89 constexpr int8_t
Semitones() const noexcept {
return _semitones; }
108 return a._semitones == b._semitones;
117 return a._semitones < b._semitones;
133 static constexpr bool IsInRange(int32_t semitones)
noexcept {
Chromatic alteration of a letter, from -4 (quadruple flat) to +4 (quadruple sharp).
Definition Accidental.h:20
static constexpr Accidental Natural() noexcept
Returns the natural (0).
Definition Accidental.h:66
static constexpr Accidental Invalid() noexcept
Returns the invalid accidental.
Definition Accidental.h:51
static constexpr Accidental QuadrupleSharp() noexcept
Returns the quadruple sharp (+4).
Definition Accidental.h:78
static constexpr Accidental TripleFlat() noexcept
Returns the triple flat (-3).
Definition Accidental.h:57
static constexpr Accidental Sharp() noexcept
Returns the sharp (+1).
Definition Accidental.h:69
constexpr int8_t Semitones() const noexcept
Returns the alteration in semitones, or InvalidValue for the invalid accidental (SPEC-ERR-7).
Definition Accidental.h:89
static constexpr int8_t Minimum
Lowest supported alteration (quadruple flat).
Definition Accidental.h:23
static constexpr int8_t InvalidValue
Sentinel returned by Semitones() for the invalid value (SPEC-ERR-7). Do not rely on it; check IsValid...
Definition Accidental.h:32
friend constexpr bool operator==(Accidental a, Accidental b) noexcept
Equality; all invalid accidentals are equal (SPEC-ERR-6).
Definition Accidental.h:107
static constexpr Accidental DoubleFlat() noexcept
Returns the double flat (-2).
Definition Accidental.h:60
static constexpr Accidental DoubleSharp() noexcept
Returns the double sharp (+2).
Definition Accidental.h:72
constexpr bool IsValid() const noexcept
Returns true unless this is the invalid accidental.
Definition Accidental.h:81
MCC_CONSTEXPR14 Accidental Altered(int32_t semitones) const noexcept
Returns this accidental altered by semitones.
Definition Accidental.h:97
friend constexpr bool operator<(Accidental a, Accidental b) noexcept
Orders by semitones; invalid sorts last.
Definition Accidental.h:116
static constexpr Accidental TripleSharp() noexcept
Returns the triple sharp (+3).
Definition Accidental.h:75
constexpr Accidental(int32_t semitones) noexcept
Creates the accidental semitones; values outside [Minimum, Maximum] produce the invalid value (SPEC-E...
Definition Accidental.h:45
constexpr Accidental() noexcept
Creates the invalid accidental (SPEC-ERR-2).
Definition Accidental.h:39
static constexpr Accidental Flat() noexcept
Returns the flat (-1).
Definition Accidental.h:63
static constexpr Accidental QuadrupleFlat() noexcept
Returns the quadruple flat (-4).
Definition Accidental.h:54
static constexpr int8_t Maximum
Highest supported alteration (quadruple sharp).
Definition Accidental.h:26
Music Composition Core public namespace.
Definition Version.h:4