20class ArrangerObjectCreator :
public QObject
24 QML_UNCREATABLE (
"One instance per project")
27 explicit ArrangerObjectCreator (
32 QObject * parent =
nullptr)
33 : QObject (parent), arranger_object_factory_ (arranger_object_factory),
34 snap_grid_timeline_ (snap_grid_timeline),
35 snap_grid_editor_ (snap_grid_editor), undo_stack_ (undo_stack)
48 structure::arrangement::TempoObject::CurveType curveType,
52 addTimeSignatureObject (
68 arranger_object_factory_
71 .build_in_registry ();
81 addEmptyAutomationRegion (
97 dsp::FileAudioSourceUuidReference clip_id,
100 auto obj_ref = arranger_object_factory_.create_audio_region_with_clip (
101 std::move (clip_id), start_ticks);
102 add_laned_object (track, lane, obj_ref);
112 arranger_object_factory_
114 .with_start_ticks (start_ticks)
115 .with_scale (std::move (scale))
116 .build_in_registry ();
131 arranger_object_factory_.create_empty_audio_region_for_recording (
132 num_channels, clip_name, start_ticks);
133 add_laned_object (track, lane, region_ref);
140 const QString &absPath,
143 auto ar_ref = arranger_object_factory_.create_audio_region_from_file (
144 absPath, startTicks);
145 add_laned_object (*track, *lane, ar_ref);
149 Q_INVOKABLE structure::arrangement::AudioRegion *
150 addAudioRegionToClipSlotFromFile (
151 structure::tracks::Track * track,
152 structure::scenes::ClipSlot * clipSlot,
153 const QString &absPath);
154 Q_INVOKABLE structure::arrangement::AudioRegion *
155 addMidiRegionToClipSlotFromFile (
156 structure::tracks::Track * track,
157 structure::scenes::ClipSlot * clipSlot,
158 const QString &absPath);
164 Q_INVOKABLE structure::arrangement::MidiRegion *
182 const QString &absolutePath,
197 return add_editor_object (*region, startTicks, value);
203 const int chordIndex)
206 return add_editor_object (*region, startTicks, chordIndex);
213 void add_laned_object (
216 structure::arrangement::ArrangerObjectUuidReference obj_ref);
218 void add_object_to_clip_slot (
221 structure::arrangement::ArrangerObjectUuidReference obj_ref);
231 template <structure::arrangement::RegionObject RegionT>
232 auto add_editor_object (
235 std::variant<int, double> value) -> RegionT::ArrangerObjectChildType *
236 requires (!std::is_same_v<RegionT, structure::arrangement::AudioRegion>)
238 using ChildT =
typename RegionT::ArrangerObjectChildType;
243 auto obj = obj_ref.template get_object_as<ChildT> ();
Q_INVOKABLE structure::arrangement::MidiRegion * addMidiRegionFromMidiFile(structure::tracks::Track *track, structure::tracks::TrackLane *lane, const QString &absolutePath, double startTicks, int midiTrackIndex)
Creates a MIDI region at lane from MIDI file path abs_path starting at startTicks.
Q_INVOKABLE structure::arrangement::MidiRegion * addMidiRegionFromChordDescriptor(structure::tracks::Track *track, structure::tracks::TrackLane *lane, const dsp::ChordDescriptor &descr, double startTicks)
Creates a MIDI region at lane from the given descr starting at startTicks.