Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
pulp::music Namespace Reference

Namespaces

namespace  detail

Classes

struct  ChordCompatibilityEntry
class  ChordFormula
class  Chord
struct  DiatonicChord
struct  RecognitionScore
struct  ChordRecognition
class  ChordRecognitionList
class  PreparedMarkovModel
class  BinaryPattern
struct  PatternResult
struct  EuclideanPatternRecipe
class  PatternWalker
struct  MutationChance
struct  ShiftRegisterResult
struct  PatternEvent
 One uniquely identified onset in a development pattern. More...
class  DevelopmentPattern
 Fixed-capacity, onset-ordered collection used by development operations. More...
struct  PatternDevelopmentResult
 Pattern-development output paired with an explicit result code. More...
struct  DensitySelection
 Parameters for deterministic density selection. More...
struct  RegionalFillSelection
 Parameters for deterministic replacement within a half-open region. More...
struct  PatternMorphSelection
 Parameters for deterministic interpolation between two patterns. More...
class  PitchClassSet
struct  ScaleCompatibilityEntry
class  Scale
struct  RhythmDrawCoordinate
struct  RhythmRelationshipConfig
struct  RhythmRelationshipResult
struct  SpelledPitchClass
class  SpelledChord
struct  MidiRange
struct  VoicingConstraints
class  Voicing

Typedefs

using PatternEventId = std::uint64_t
 Stable, nonzero identity for an event across pattern transformations.

Enumerations

enum class  ChordQuality : std::uint8_t {
  major = 0 , minor = 1 , diminished = 2 , augmented = 3 ,
  dominant7 = 4 , major7 = 5 , minor7 = 6 , half_diminished7 = 7 ,
  suspended2 = 8 , suspended4 = 9 , power = 10 , octave = 11
}
enum class  ChordExtension : std::uint8_t { ninth = 0 , eleventh = 1 , thirteenth = 2 }
enum class  ChordSuspension : std::uint8_t { second = 0 , fourth = 1 }
enum class  ChordAlteration : std::uint8_t {
  flat_fifth = 0 , sharp_fifth = 1 , flat_ninth = 2 , sharp_ninth = 3 ,
  sharp_eleventh = 4 , flat_thirteenth = 5
}
enum class  MarkovError : std::uint8_t {
  none = 0 , empty_model , capacity_exceeded , weight_count_mismatch ,
  empty_transition_row
}
enum class  PatternError : std::uint8_t {
  none = 0 , empty_pattern , capacity_exceeded , pulses_exceed_steps ,
  invalid_probability , invalid_mode , unsupported_recipe_version
}
enum class  PatternWalkerMode : std::uint8_t { forward = 0 , reverse , ping_pong , random }
enum class  CellularBoundary : std::uint8_t { fixed_off = 0 , wrap }
enum class  PatternEventRole : std::uint8_t { anchor = 0 , primary , ornament , fill }
 Describes how an event participates in density, fill, and morph operations. More...
enum class  PatternDevelopmentError : std::uint8_t {
  none = 0 , capacity_exceeded , zero_event_id , duplicate_event_id ,
  duplicate_onset , invalid_role , accent_out_of_range , invalid_set_operation ,
  conflicting_event , density_out_of_range , density_below_anchor_count , invalid_region ,
  morph_amount_out_of_range
}
 Result codes returned by bounded pattern-development operations. More...
enum class  PatternSetOperation : std::uint8_t { set_union = 0 , intersection , difference , symmetric_difference }
 Supported onset-keyed set operations. More...
enum class  PitchClass : std::uint8_t {
  c = 0 , c_sharp = 1 , d = 2 , d_sharp = 3 ,
  e = 4 , f = 5 , f_sharp = 6 , g = 7 ,
  g_sharp = 8 , a = 9 , a_sharp = 10 , b = 11
}
enum class  NamedScale : std::uint8_t {
  major = 0 , natural_minor = 1 , dorian = 2 , phrygian = 3 ,
  lydian = 4 , mixolydian = 5 , harmonic_minor = 6 , melodic_minor = 7 ,
  major_pentatonic = 8 , minor_pentatonic = 9 , locrian = 10 , chromatic = 11 ,
  blues = 12 , whole_tone = 13
}
enum class  RhythmRelationship : std::uint8_t { coincident = 0 , complementary , independent }
enum class  RhythmLengthMapping : std::uint8_t { wrap = 0 , proportional }
enum class  RhythmCollisionPolicy : std::uint8_t { allow_source_overlap = 0 , avoid_source_overlap }
enum class  RhythmDensityPolicy : std::uint8_t { preserve_candidates = 0 , exact_onsets }
enum class  RhythmRelationshipError : std::uint8_t {
  none = 0 , empty_source , empty_target , capacity_exceeded ,
  invalid_relationship , invalid_length_mapping , invalid_collision_policy , invalid_density_policy ,
  insufficient_candidates
}
enum class  NoteLetter : std::uint8_t {
  c = 0 , d = 1 , e = 2 , f = 3 ,
  g = 4 , a = 5 , b = 6
}
enum class  AccidentalPolicy : std::uint8_t { prefer_sharps = 0 , prefer_flats = 1 , minimize_accidentals = 2 }
enum class  VoicingMode : std::uint8_t {
  closed = 0 , open = 1 , drop2 = 2 , drop3 = 3 ,
  spread = 4
}

Functions

constexpr std::optional< DiatonicChord > diatonic_chord (const Scale &scale, std::size_t degree, std::size_t tone_count=3) noexcept
constexpr std::optional< ChordRecognitionList > recognize_chord (PitchClassSet pitch_classes, std::optional< PitchClass > bass=std::nullopt)
constexpr std::optional< ChordRecognitionList > recognize_chord (std::span< const int > midi_pitches) noexcept
template<std::size_t MaxSteps = 64>
constexpr PatternResult< MaxSteps > euclidean_pattern (std::size_t steps, std::size_t pulses, std::int64_t rotation=0) noexcept
template<std::size_t MaxSteps = 64>
constexpr PatternResult< MaxSteps > materialize_pattern (EuclideanPatternRecipe recipe) noexcept
template<std::size_t MaxSteps = 64>
constexpr PatternResult< MaxSteps > cellular_evolve (const BinaryPattern< MaxSteps > &input, std::uint8_t rule, CellularBoundary boundary=CellularBoundary::wrap) noexcept
template<std::size_t MaxSteps = 64>
constexpr ShiftRegisterResult< MaxSteps > looping_shift_register (const BinaryPattern< MaxSteps > &input, MutationChance chance, std::uint64_t random_word) noexcept
constexpr PatternEventId make_pattern_event_id (std::uint64_t seed, timebase::RandomCoordinate coordinate) noexcept
 Produces a stable nonzero ID from a seed and musical coordinate.
template<std::size_t MaxEvents = 64>
constexpr PatternDevelopmentResult< MaxEvents > pattern_set (const DevelopmentPattern< MaxEvents > &lhs, const DevelopmentPattern< MaxEvents > &rhs, PatternSetOperation operation) noexcept
 Applies an onset-keyed set operation to two patterns.
template<std::size_t MaxEvents = 64>
constexpr PatternDevelopmentResult< MaxEvents > select_pattern_density (const DevelopmentPattern< MaxEvents > &source, DensitySelection selection) noexcept
 Selects an exact event count while retaining every anchor.
template<std::size_t MaxEvents = 64>
constexpr PatternDevelopmentResult< MaxEvents > apply_regional_fill (const DevelopmentPattern< MaxEvents > &base, const DevelopmentPattern< MaxEvents > &candidates, RegionalFillSelection selection) noexcept
 Applies candidate events within a selected half-open region.
template<std::size_t MaxEvents = 64>
constexpr PatternDevelopmentResult< MaxEvents > morph_patterns (const DevelopmentPattern< MaxEvents > &a, const DevelopmentPattern< MaxEvents > &b, PatternMorphSelection selection) noexcept
 Morphs two patterns using exact integer interpolation and stable thresholds.
constexpr bool is_valid (PitchClass pitch_class) noexcept
constexpr std::optional< PitchClass > pitch_class_from_index (int index) noexcept
constexpr PitchClass wrap_pitch_class (int index) noexcept
constexpr PitchClass transpose (PitchClass pitch_class, int semitones) noexcept
constexpr std::optional< PitchClassSet > scale_intervals (NamedScale scale) noexcept
template<std::size_t MaxSteps = 64>
constexpr RhythmRelationshipResult< MaxSteps > derive_rhythm_relationship (const BinaryPattern< MaxSteps > &source, const RhythmRelationshipConfig &config) noexcept
constexpr std::string_view spelling_name (SpelledPitchClass spelling) noexcept
constexpr std::optional< SpelledPitchClass > spell_pitch_class (PitchClass pitch_class, AccidentalPolicy policy) noexcept
constexpr std::optional< SpelledChord > spell_chord (PitchClass root, const ChordFormula &formula, AccidentalPolicy policy)
constexpr std::optional< SpelledChord > spell_chord (const Chord &chord, AccidentalPolicy policy) noexcept
std::optional< Voicing > voice_chord (int root_midi, const ChordFormula &formula, VoicingConstraints constraints={})
std::optional< Voicing > minimum_motion_voice_leading (std::span< const int > previous, PitchClass target_root, const ChordFormula &formula, MidiRange range={})

Variables

constexpr std::size_t kChordQualityCount = 12
constexpr std::array< ChordCompatibilityEntry, 10 > kPulpTimelineChordQualities
constexpr std::array< ChordCompatibilityEntry, 11 > kForgeChordQualities
constexpr std::uint16_t euclidean_pattern_recipe_version = 1
constexpr int kPitchClassesPerOctave = 12
constexpr std::uint16_t kPitchClassMask = 0x0FFFu
constexpr std::size_t kNamedScaleCount = 14
constexpr std::array< ScaleCompatibilityEntry, 10 > kPulpSignalScales
constexpr std::array< ScaleCompatibilityEntry, 10 > kPulpTimelineScales
constexpr std::array< ScaleCompatibilityEntry, 10 > kForgeRuntimeScales
constexpr std::array< ScaleCompatibilityEntry, 14 > kForgePrimitiveScales

Typedef Documentation

◆ PatternEventId

using pulp::music::PatternEventId = std::uint64_t

Stable, nonzero identity for an event across pattern transformations.

Enumeration Type Documentation

◆ AccidentalPolicy

enum class pulp::music::AccidentalPolicy : std::uint8_t
strong
Enumerator
prefer_sharps 
prefer_flats 
minimize_accidentals 

◆ CellularBoundary

enum class pulp::music::CellularBoundary : std::uint8_t
strong
Enumerator
fixed_off 
wrap 

◆ ChordAlteration

enum class pulp::music::ChordAlteration : std::uint8_t
strong
Enumerator
flat_fifth 
sharp_fifth 
flat_ninth 
sharp_ninth 
sharp_eleventh 
flat_thirteenth 

◆ ChordExtension

enum class pulp::music::ChordExtension : std::uint8_t
strong
Enumerator
ninth 
eleventh 
thirteenth 

◆ ChordQuality

enum class pulp::music::ChordQuality : std::uint8_t
strong
Enumerator
major 
minor 
diminished 
augmented 
dominant7 
major7 
minor7 
half_diminished7 
suspended2 
suspended4 
power 
octave 

◆ ChordSuspension

enum class pulp::music::ChordSuspension : std::uint8_t
strong
Enumerator
second 
fourth 

◆ MarkovError

enum class pulp::music::MarkovError : std::uint8_t
strong
Enumerator
none 
empty_model 
capacity_exceeded 
weight_count_mismatch 
empty_transition_row 

◆ NamedScale

enum class pulp::music::NamedScale : std::uint8_t
strong
Enumerator
major 
natural_minor 
dorian 
phrygian 
lydian 
mixolydian 
harmonic_minor 
melodic_minor 
major_pentatonic 
minor_pentatonic 
locrian 
chromatic 
blues 
whole_tone 

◆ NoteLetter

enum class pulp::music::NoteLetter : std::uint8_t
strong
Enumerator
c 
d 
e 
f 
g 
a 
b 

◆ PatternDevelopmentError

enum class pulp::music::PatternDevelopmentError : std::uint8_t
strong

Result codes returned by bounded pattern-development operations.

Enumerator
none 

The operation completed successfully.

capacity_exceeded 

The result would exceed the pattern's fixed capacity.

zero_event_id 

An event used the reserved zero identity.

duplicate_event_id 

Two events used the same identity.

duplicate_onset 

Two events occupied the same onset.

invalid_role 

An event role was outside the declared enumeration.

accent_out_of_range 

An event accent exceeded 1000.

invalid_set_operation 

A set operation was outside the declared enumeration.

conflicting_event 

Two inputs disagreed about the event at one identity or onset.

density_out_of_range 

A requested density exceeded the available event count.

density_below_anchor_count 

A requested density could not retain every anchor.

invalid_region 

A regional operation used an empty or reversed half-open interval.

morph_amount_out_of_range 

A morph amount exceeded 1000.

◆ PatternError

enum class pulp::music::PatternError : std::uint8_t
strong
Enumerator
none 
empty_pattern 
capacity_exceeded 
pulses_exceed_steps 
invalid_probability 
invalid_mode 
unsupported_recipe_version 

◆ PatternEventRole

enum class pulp::music::PatternEventRole : std::uint8_t
strong

Describes how an event participates in density, fill, and morph operations.

Enumerator
anchor 

Mandatory structural event that density operations always retain.

primary 

Ordinary event eligible for deterministic selection.

ornament 

Decorative event eligible for deterministic selection.

fill 

Event intended to supply regional variation.

◆ PatternSetOperation

enum class pulp::music::PatternSetOperation : std::uint8_t
strong

Supported onset-keyed set operations.

Enumerator
set_union 

Include events found in either input.

intersection 

Include events found in both inputs.

difference 

Include events found only in the left input.

symmetric_difference 

Include events found in exactly one input.

◆ PatternWalkerMode

enum class pulp::music::PatternWalkerMode : std::uint8_t
strong
Enumerator
forward 
reverse 
ping_pong 
random 

◆ PitchClass

enum class pulp::music::PitchClass : std::uint8_t
strong
Enumerator
c 
c_sharp 
d 
d_sharp 
e 
f 
f_sharp 
g 
g_sharp 
a 
a_sharp 
b 

◆ RhythmCollisionPolicy

enum class pulp::music::RhythmCollisionPolicy : std::uint8_t
strong
Enumerator
allow_source_overlap 
avoid_source_overlap 

◆ RhythmDensityPolicy

enum class pulp::music::RhythmDensityPolicy : std::uint8_t
strong
Enumerator
preserve_candidates 
exact_onsets 

◆ RhythmLengthMapping

enum class pulp::music::RhythmLengthMapping : std::uint8_t
strong
Enumerator
wrap 
proportional 

◆ RhythmRelationship

enum class pulp::music::RhythmRelationship : std::uint8_t
strong
Enumerator
coincident 
complementary 
independent 

◆ RhythmRelationshipError

enum class pulp::music::RhythmRelationshipError : std::uint8_t
strong
Enumerator
none 
empty_source 
empty_target 
capacity_exceeded 
invalid_relationship 
invalid_length_mapping 
invalid_collision_policy 
invalid_density_policy 
insufficient_candidates 

◆ VoicingMode

enum class pulp::music::VoicingMode : std::uint8_t
strong
Enumerator
closed 
open 
drop2 
drop3 
spread 

Function Documentation

◆ apply_regional_fill()

template<std::size_t MaxEvents = 64>
PatternDevelopmentResult< MaxEvents > pulp::music::apply_regional_fill ( const DevelopmentPattern< MaxEvents > & base,
const DevelopmentPattern< MaxEvents > & candidates,
RegionalFillSelection selection )
nodiscardconstexprnoexcept

Applies candidate events within a selected half-open region.

Outside [begin, end) the base is unchanged. Inside it, base anchors are mandatory and the union of base and candidate events is density-selected.

◆ cellular_evolve()

template<std::size_t MaxSteps = 64>
PatternResult< MaxSteps > pulp::music::cellular_evolve ( const BinaryPattern< MaxSteps > & input,
std::uint8_t rule,
CellularBoundary boundary = CellularBoundary::wrap )
nodiscardconstexprnoexcept

◆ derive_rhythm_relationship()

template<std::size_t MaxSteps = 64>
RhythmRelationshipResult< MaxSteps > pulp::music::derive_rhythm_relationship ( const BinaryPattern< MaxSteps > & source,
const RhythmRelationshipConfig & config )
nodiscardconstexprnoexcept

◆ diatonic_chord()

std::optional< DiatonicChord > pulp::music::diatonic_chord ( const Scale & scale,
std::size_t degree,
std::size_t tone_count = 3 )
constexprnoexcept

◆ euclidean_pattern()

template<std::size_t MaxSteps = 64>
PatternResult< MaxSteps > pulp::music::euclidean_pattern ( std::size_t steps,
std::size_t pulses,
std::int64_t rotation = 0 )
nodiscardconstexprnoexcept

◆ is_valid()

bool pulp::music::is_valid ( PitchClass pitch_class)
constexprnoexcept

◆ looping_shift_register()

template<std::size_t MaxSteps = 64>
ShiftRegisterResult< MaxSteps > pulp::music::looping_shift_register ( const BinaryPattern< MaxSteps > & input,
MutationChance chance,
std::uint64_t random_word )
nodiscardconstexprnoexcept

◆ make_pattern_event_id()

PatternEventId pulp::music::make_pattern_event_id ( std::uint64_t seed,
timebase::RandomCoordinate coordinate )
nodiscardconstexprnoexcept

Produces a stable nonzero ID from a seed and musical coordinate.

Callers remain responsible for choosing distinct coordinates within one pattern.

◆ materialize_pattern()

template<std::size_t MaxSteps = 64>
PatternResult< MaxSteps > pulp::music::materialize_pattern ( EuclideanPatternRecipe recipe)
nodiscardconstexprnoexcept

◆ minimum_motion_voice_leading()

std::optional< Voicing > pulp::music::minimum_motion_voice_leading ( std::span< const int > previous,
PitchClass target_root,
const ChordFormula & formula,
MidiRange range = {} )
inlinenoexcept

◆ morph_patterns()

template<std::size_t MaxEvents = 64>
PatternDevelopmentResult< MaxEvents > pulp::music::morph_patterns ( const DevelopmentPattern< MaxEvents > & a,
const DevelopmentPattern< MaxEvents > & b,
PatternMorphSelection selection )
nodiscardconstexprnoexcept

Morphs two patterns using exact integer interpolation and stable thresholds.

Shared IDs interpolate onsets and accents. Events unique to a disappear and events unique to b appear at coordinate-keyed thresholds.

◆ pattern_set()

template<std::size_t MaxEvents = 64>
PatternDevelopmentResult< MaxEvents > pulp::music::pattern_set ( const DevelopmentPattern< MaxEvents > & lhs,
const DevelopmentPattern< MaxEvents > & rhs,
PatternSetOperation operation )
nodiscardconstexprnoexcept

Applies an onset-keyed set operation to two patterns.

Intersection and difference retain the left record. Union rejects two different records at one onset so stable IDs and roles are never silently rewritten.

◆ pitch_class_from_index()

std::optional< PitchClass > pulp::music::pitch_class_from_index ( int index)
constexprnoexcept

◆ recognize_chord() [1/2]

std::optional< ChordRecognitionList > pulp::music::recognize_chord ( PitchClassSet pitch_classes,
std::optional< PitchClass > bass = std::nullopt )
constexprnoexcept

◆ recognize_chord() [2/2]

std::optional< ChordRecognitionList > pulp::music::recognize_chord ( std::span< const int > midi_pitches)
constexprnoexcept

◆ scale_intervals()

std::optional< PitchClassSet > pulp::music::scale_intervals ( NamedScale scale)
constexprnoexcept

◆ select_pattern_density()

template<std::size_t MaxEvents = 64>
PatternDevelopmentResult< MaxEvents > pulp::music::select_pattern_density ( const DevelopmentPattern< MaxEvents > & source,
DensitySelection selection )
nodiscardconstexprnoexcept

Selects an exact event count while retaining every anchor.

Every non-anchor has one coordinate-derived rank, so selecting k events is an exact subset of selecting k + 1 with the same recipe.

◆ spell_chord() [1/2]

std::optional< SpelledChord > pulp::music::spell_chord ( const Chord & chord,
AccidentalPolicy policy )
constexprnoexcept

◆ spell_chord() [2/2]

std::optional< SpelledChord > pulp::music::spell_chord ( PitchClass root,
const ChordFormula & formula,
AccidentalPolicy policy )
constexprnoexcept

◆ spell_pitch_class()

std::optional< SpelledPitchClass > pulp::music::spell_pitch_class ( PitchClass pitch_class,
AccidentalPolicy policy )
constexprnoexcept

◆ spelling_name()

std::string_view pulp::music::spelling_name ( SpelledPitchClass spelling)
constexprnoexcept

◆ transpose()

PitchClass pulp::music::transpose ( PitchClass pitch_class,
int semitones )
constexprnoexcept

◆ voice_chord()

std::optional< Voicing > pulp::music::voice_chord ( int root_midi,
const ChordFormula & formula,
VoicingConstraints constraints = {} )
inlinenoexcept

◆ wrap_pitch_class()

PitchClass pulp::music::wrap_pitch_class ( int index)
constexprnoexcept

Variable Documentation

◆ euclidean_pattern_recipe_version

std::uint16_t pulp::music::euclidean_pattern_recipe_version = 1
inlineconstexpr

◆ kChordQualityCount

std::size_t pulp::music::kChordQualityCount = 12
inlineconstexpr

◆ kForgeChordQualities

std::array<ChordCompatibilityEntry, 11> pulp::music::kForgeChordQualities
inlineconstexpr
Initial value:
{{
{"power", ChordQuality::power},
{"octave", ChordQuality::octave},
}}
@ diminished
Definition chord.hpp:19
@ suspended2
Definition chord.hpp:25
@ suspended4
Definition chord.hpp:26
@ power
Definition chord.hpp:27
@ augmented
Definition chord.hpp:20
@ octave
Definition chord.hpp:28
@ minor7
Definition chord.hpp:23
@ dominant7
Definition chord.hpp:21
@ minor
Definition chord.hpp:18
@ major7
Definition chord.hpp:22
@ major
Definition chord.hpp:17

◆ kForgePrimitiveScales

std::array<ScaleCompatibilityEntry, 14> pulp::music::kForgePrimitiveScales
inlineconstexpr
Initial value:
{{
{"ionian", NamedScale::major},
{"dorian", NamedScale::dorian},
{"phrygian", NamedScale::phrygian},
{"lydian", NamedScale::lydian},
{"mixolydian", NamedScale::mixolydian},
{"locrian", NamedScale::locrian},
{"harmonic_minor", NamedScale::harmonic_minor},
{"melodic_minor", NamedScale::melodic_minor},
{"major_pentatonic", NamedScale::major_pentatonic},
{"minor_pentatonic", NamedScale::minor_pentatonic},
{"blues", NamedScale::blues},
{"whole_tone", NamedScale::whole_tone},
{"chromatic", NamedScale::chromatic},
}}
@ lydian
Definition pitch.hpp:152
@ minor_pentatonic
Definition pitch.hpp:157
@ natural_minor
Definition pitch.hpp:149
@ phrygian
Definition pitch.hpp:151
@ blues
Definition pitch.hpp:160
@ locrian
Definition pitch.hpp:158
@ melodic_minor
Definition pitch.hpp:155
@ whole_tone
Definition pitch.hpp:161
@ dorian
Definition pitch.hpp:150
@ chromatic
Definition pitch.hpp:159
@ mixolydian
Definition pitch.hpp:153
@ harmonic_minor
Definition pitch.hpp:154
@ major_pentatonic
Definition pitch.hpp:156
@ major
Definition pitch.hpp:148

◆ kForgeRuntimeScales

std::array<ScaleCompatibilityEntry, 10> pulp::music::kForgeRuntimeScales
inlineconstexpr
Initial value:
{{
{"major", NamedScale::major},
{"dorian", NamedScale::dorian},
{"phrygian", NamedScale::phrygian},
{"lydian", NamedScale::lydian},
{"mixolydian", NamedScale::mixolydian},
{"harmonic_minor", NamedScale::harmonic_minor},
{"pentatonic_major", NamedScale::major_pentatonic},
{"pentatonic_minor", NamedScale::minor_pentatonic},
{"chromatic", NamedScale::chromatic},
}}

◆ kNamedScaleCount

std::size_t pulp::music::kNamedScaleCount = 14
inlineconstexpr

◆ kPitchClassesPerOctave

int pulp::music::kPitchClassesPerOctave = 12
inlineconstexpr

◆ kPitchClassMask

std::uint16_t pulp::music::kPitchClassMask = 0x0FFFu
inlineconstexpr

◆ kPulpSignalScales

std::array<ScaleCompatibilityEntry, 10> pulp::music::kPulpSignalScales
inlineconstexpr
Initial value:
{{
{"major", NamedScale::major},
{"natural_minor", NamedScale::natural_minor},
{"dorian", NamedScale::dorian},
{"phrygian", NamedScale::phrygian},
{"lydian", NamedScale::lydian},
{"mixolydian", NamedScale::mixolydian},
{"harmonic_minor", NamedScale::harmonic_minor},
{"melodic_minor", NamedScale::melodic_minor},
{"major_pentatonic", NamedScale::major_pentatonic},
{"minor_pentatonic", NamedScale::minor_pentatonic},
}}

◆ kPulpTimelineChordQualities

std::array<ChordCompatibilityEntry, 10> pulp::music::kPulpTimelineChordQualities
inlineconstexpr
Initial value:
{{
{"major", ChordQuality::major},
{"minor", ChordQuality::minor},
{"diminished", ChordQuality::diminished},
{"augmented", ChordQuality::augmented},
{"dominant7", ChordQuality::dominant7},
{"major7", ChordQuality::major7},
{"minor7", ChordQuality::minor7},
{"half_diminished7", ChordQuality::half_diminished7},
{"suspended2", ChordQuality::suspended2},
{"suspended4", ChordQuality::suspended4},
}}
@ half_diminished7
Definition chord.hpp:24

◆ kPulpTimelineScales

std::array<ScaleCompatibilityEntry, 10> pulp::music::kPulpTimelineScales
inlineconstexpr
Initial value:
{{
{"major", NamedScale::major},
{"natural_minor", NamedScale::natural_minor},
{"harmonic_minor", NamedScale::harmonic_minor},
{"melodic_minor", NamedScale::melodic_minor},
{"dorian", NamedScale::dorian},
{"phrygian", NamedScale::phrygian},
{"lydian", NamedScale::lydian},
{"mixolydian", NamedScale::mixolydian},
{"locrian", NamedScale::locrian},
{"chromatic", NamedScale::chromatic},
}}