25 DEFINE_ARRANGER_OBJECT_OWNER_QML_PROPERTIES (
29 DEFINE_ARRANGER_OBJECT_OWNER_QML_PROPERTIES (
38 using ScaleObjectPtr = ScaleObject *;
39 using NotePitchToChordDescriptorFunc =
40 dsp::MidiEventVector::NotePitchToChordDescriptorFunc;
51 note_pitch_to_chord_descriptor (
midi_byte_t note_pitch)
const
53 assert (note_pitch_to_descriptor_.has_value ());
54 return std::invoke (*note_pitch_to_descriptor_, note_pitch);
59 void set_note_pitch_to_descriptor_func (NotePitchToChordDescriptorFunc func)
61 note_pitch_to_descriptor_ = func;
64 ScaleObject * get_scale_at (
size_t index)
const;
78 friend void init_from (
80 const ChordTrack &other,
84 get_field_name_for_serialization (
const ChordRegion *)
const override
89 get_field_name_for_serialization (
const ScaleObject *)
const override
95 friend void to_json (nlohmann::json &j,
const ChordTrack &track)
97 to_json (j,
static_cast<const Track &
> (track));
98 to_json (j,
static_cast<const ArrangerObjectOwner<ChordRegion> &
> (track));
99 to_json (j,
static_cast<const ArrangerObjectOwner<ScaleObject> &
> (track));
101 friend void from_json (
const nlohmann::json &j, ChordTrack &track)
103 from_json (j,
static_cast<Track &
> (track));
104 from_json (j,
static_cast<ArrangerObjectOwner<ChordRegion> &
> (track));
105 from_json (j,
static_cast<ArrangerObjectOwner<ScaleObject> &
> (track));
112 std::optional<dsp::MidiEventVector::NotePitchToChordDescriptorFunc>
113 note_pitch_to_descriptor_;
Track(Type type, PortType in_signal_type, PortType out_signal_type, TrackFeatures enabled_features, BaseTrackDependencies dependencies)
Constructor to be used by subclasses.