XJ music engine  1.9.6
In-game runtime engine for XJ music.
NotePicker.h
Go to the documentation of this file.
1 // Copyright (c) XJ Music Inc. (https://xjmusic.com) All Rights Reserved.
2 
3 #ifndef XJMUSIC_FABRICATOR_NOTE_PICKER_H
4 #define XJMUSIC_FABRICATOR_NOTE_PICKER_H
5 
6 #include <set>
7 
8 #include "xjmusic/music/Note.h"
10 #include "MarbleBag.h"
11 #include "RankedNote.h"
12 
13 namespace XJ {
14 
18  class NotePicker {
19  NoteRange targetRange;
20  std::set<Note> voicingNotes;
21  bool seekInversions;
22  NoteRange voicingRange;
23 
24  public:
25 
33  NotePicker(const NoteRange& targetRange, const std::set<Note>& voicingNotes, bool seekInversions);
34 
42  NotePicker(const NoteRange& targetRange, const std::vector<Note>& voicingNotes, bool seekInversions);
43 
47  Note pick(Note eventNote);
48 
53 
59  Note removePicked(Note picked);
60 
68  Note seekInversion(Note source, const NoteRange &range, const std::set<Note> &options) const;
69 
78  static std::optional<Note> pickRandom(std::set<Note> fromNotes);
79 
80  };
81 
82 }// namespace XJ
83 
84 #endif //XJMUSIC_FABRICATOR_NOTE_PICKER_H
Definition: NotePicker.h:18
NoteRange getTargetRange()
Definition: NotePicker.cpp:60
Note removePicked(Note picked)
Definition: NotePicker.cpp:65
Note pick(Note eventNote)
Definition: NotePicker.cpp:23
Note seekInversion(Note source, const NoteRange &range, const std::set< Note > &options) const
Definition: NotePicker.cpp:74
NotePicker(const NoteRange &targetRange, const std::set< Note > &voicingNotes, bool seekInversions)
Definition: NotePicker.cpp:8
static std::optional< Note > pickRandom(std::set< Note > fromNotes)
Definition: NotePicker.cpp:107
Definition: NoteRange.h:15
Definition: Note.h:19
Definition: ActiveAudio.h:11