29 DEFINE_ARRANGER_OBJECT_OWNER_QML_PROPERTIES (
33 DEFINE_ARRANGER_OBJECT_OWNER_QML_PROPERTIES (
42 using ScaleObjectPtr = ScaleObject *;
43 using NotePitchToPitchesFunc = std::function<
44 std::optional<dsp::ChordDescriptor::ChordPitches> (
midi_byte_t)>;
66 midi_byte_t velocity = dsp::ChordAuditionState::kDefaultVelocity);
74 int duration_ms = 400);
78 std::optional<dsp::ChordDescriptor::ChordPitches>
79 note_pitch_to_pitches (
midi_byte_t note_pitch)
const
81 assert (note_pitch_to_pitches_.has_value ());
82 return std::invoke (*note_pitch_to_pitches_, note_pitch);
87 void set_note_pitch_to_pitches_func (NotePitchToPitchesFunc func)
89 note_pitch_to_pitches_ = func;
92 ScaleObject * get_scale_at (
size_t index)
const;
110 const NotePitchToPitchesFunc ¬e_to_pitches,
112 std::pair<units::sample_u32_t, units::sample_u32_t> range);
130 Q_INVOKABLE ChordObject * chordAtTicks (
double ticks)
const;
131 Q_INVOKABLE ScaleObject * scaleAtTicks (
double ticks)
const;
133 friend void init_from (
135 const ChordTrack &other,
139 get_field_name_for_serialization (
const ChordRegion *)
const override
144 get_field_name_for_serialization (
const ScaleObject *)
const override
150 friend void to_json (nlohmann::json &j,
const ChordTrack &track)
152 to_json (j,
static_cast<const Track &
> (track));
153 to_json (j,
static_cast<const ArrangerObjectOwner<ChordRegion> &
> (track));
154 to_json (j,
static_cast<const ArrangerObjectOwner<ScaleObject> &
> (track));
156 friend void from_json (
const nlohmann::json &j, ChordTrack &track)
158 from_json (j,
static_cast<Track &
> (track));
159 from_json (j,
static_cast<ArrangerObjectOwner<ChordRegion> &
> (track));
160 from_json (j,
static_cast<ArrangerObjectOwner<ScaleObject> &
> (track));
165 dsp::ChordAuditionState audition_state_;
168 dsp::ChordDescriptor::ChordPitches previewing_pitches_;
169 utils::QObjectUniquePtr<QTimer> preview_timer_;
173 std::optional<NotePitchToPitchesFunc> note_pitch_to_pitches_;
static void transform_chord_and_append(dsp::MidiEventBuffer &dest, const dsp::MidiEventBuffer &src, const NotePitchToPitchesFunc ¬e_to_pitches, midi_byte_t velocity, std::pair< units::sample_u32_t, units::sample_u32_t > range)
Transforms note-on/off events into chord events.
Q_INVOKABLE void auditionChord(const zrythm::dsp::ChordDescriptor *descriptor, bool on, midi_byte_t velocity=dsp::ChordAuditionState::kDefaultVelocity)
Start or stop auditioning a chord.
Track(Type type, std::optional< PortType > in_signal_type, std::optional< PortType > out_signal_type, TrackFeatures enabled_features, BaseTrackDependencies dependencies)
Constructor to be used by subclasses.