53class Project final :
public QObject
65 clipPlaybackService CONSTANT FINAL)
73 tempoObjectManager CONSTANT FINAL)
77 using TrackUuid = structure::tracks::TrackUuid;
78 using PluginPtrVariant = plugins::PluginPtrVariant;
79 using ProjectDirectoryPathProvider =
80 std::function<std::filesystem::path (
bool for_backup)>;
97 ProjectDirectoryPathProvider project_directory_path_provider,
100 std::shared_ptr<juce::AudioPluginFormatManager> plugin_format_manager,
101 plugins::PluginHostWindowFactory plugin_host_window_provider,
104 QObject * parent =
nullptr);
105 ~Project ()
override;
106 Q_DISABLE_COPY_MOVE (Project)
127 auto * arrangerObjectFactory ()
const
129 return arranger_object_factory_.get ();
132 friend void init_from (
134 const Project &other,
149 return project_registry_;
152 const auto &tempo_map ()
const {
return tempo_map_; }
156 audio_input_selection_provider_ = std::move (provider);
159 const auto &audio_input_selection_provider ()
const
161 return audio_input_selection_provider_;
164 void set_midi_input_selection_provider (MidiInputSelectionProvider provider)
166 midi_input_selection_provider_ = std::move (provider);
169 const auto &midi_input_selection_provider ()
const
171 return midi_input_selection_provider_;
181 structure::tracks::TrackRecordingCallback callback);
184 static constexpr auto kTempoMapKey =
"tempoMap"sv;
185 static constexpr auto kRegistryKey =
"registry"sv;
186 static constexpr auto kTransportKey =
"transport"sv;
187 static constexpr auto kAudioPoolKey =
"audioPool"sv;
188 static constexpr auto kTracklistKey =
"tracklist"sv;
189 static constexpr auto kRegionLinkGroupManagerKey =
"regionLinkGroupManager"sv;
190 static constexpr auto kPortConnectionsManagerKey =
"portConnectionsManager"sv;
191 static constexpr auto kTempoObjectManagerKey =
"tempoObjectManager"sv;
192 static constexpr auto kClipLauncherKey =
"clipLauncher"sv;
193 friend void to_json (nlohmann::json &j,
const Project &project);
194 friend void from_json (
const nlohmann::json &j,
Project &project);
198 dsp::TempoMap tempo_map_;
201 plugins::PluginHostWindowFactory plugin_host_window_provider_;
205 ProjectDirectoryPathProvider project_directory_path_provider_;
210 std::shared_ptr<juce::AudioPluginFormatManager> plugin_format_manager_;
232 std::unique_ptr<dsp::AudioPool>
pool_;
250 std::vector<structure::tracks::Track *>
tracks_rt_;
255 clip_playback_service_;
257 std::unique_ptr<structure::arrangement::ArrangerObjectFactory>
258 arranger_object_factory_;
262 std::unique_ptr<structure::tracks::TrackFactory> track_factory_;
266 tempo_object_manager_;
272 MidiInputSelectionProvider midi_input_selection_provider_;
274 structure::tracks::TrackRecordingCallback track_recording_callback_;