XJ music engine  1.9.6
In-game runtime engine for XJ music.
Public Member Functions | Static Public Member Functions | List of all members
XJ::NotePicker Class Reference

#include <NotePicker.h>

Public Member Functions

 NotePicker (const NoteRange &targetRange, const std::set< Note > &voicingNotes, bool seekInversions)
 
 NotePicker (const NoteRange &targetRange, const std::vector< Note > &voicingNotes, bool seekInversions)
 
Note pick (Note eventNote)
 
NoteRange getTargetRange ()
 
Note removePicked (Note picked)
 
Note seekInversion (Note source, const NoteRange &range, const std::set< Note > &options) const
 

Static Public Member Functions

static std::optional< NotepickRandom (std::set< Note > fromNotes)
 

Detailed Description

In order to pick exactly one optimal voicing note for each of the source event notes.

Constructor & Destructor Documentation

◆ NotePicker() [1/2]

NotePicker::NotePicker ( const NoteRange targetRange,
const std::set< Note > &  voicingNotes,
bool  seekInversions 
)

Build a NotePicker from the given optimal target range set

Parameters
targetRangeoptimally picks will be within
voicingNotesto pick from, at most once each
seekInversionswhether to seek inversions

◆ NotePicker() [2/2]

NotePicker::NotePicker ( const NoteRange targetRange,
const std::vector< Note > &  voicingNotes,
bool  seekInversions 
)

Build a NotePicker from the given optimal target range vector

Parameters
targetRangeoptimally picks will be within
voicingNotesto pick from, at most once each
seekInversionswhether to seek inversions

Member Function Documentation

◆ getTargetRange()

NoteRange NotePicker::getTargetRange ( )
Returns
range of picked notes (updated after picking)

◆ pick()

Note NotePicker::pick ( Note  eventNote)

Pick all voicing notes for event notes

◆ pickRandom()

std::optional< Note > NotePicker::pickRandom ( std::set< Note fromNotes)
static

Pick a random instrument note from the available notes in the voicing

Artist writing detail program expects 'X' note value to result in random selection from available Voicings https://github.com/xjmusic/xjmusic/issues/251

Parameters
fromNotesto pick from
Returns
a random note from the voicing

◆ removePicked()

Note NotePicker::removePicked ( Note  picked)

Pick a note, adding it to picked notes and removing it from voicing notes

Parameters
pickedto pick

◆ seekInversion()

Note NotePicker::seekInversion ( Note  source,
const NoteRange range,
const std::set< Note > &  options 
) const

Seek the inversion of the given note that is best contained within the given range

Parameters
sourcefor which to seek inversion
rangetowards which seeking will optimize
optionsfrom which to select better notes

The documentation for this class was generated from the following files: