29 void SetUp ()
override
31 temp_dir_obj_ = utils::io::make_tmp_dir ();
33 utils::Utf8String::from_qstring (temp_dir_obj_->path ()).to_path ();
35 hw_interface_ = std::make_unique<ThreadedMockHardwareAudioInterface> ();
37 plugin_format_manager_ = std::make_shared<juce::AudioPluginFormatManager> ();
38 juce::addDefaultFormatsToManager (*plugin_format_manager_);
40 auto settings_backend = std::make_unique<InMemorySettingsBackend> ();
42 std::make_unique<utils::AppSettings> (std::move (settings_backend));
44 registry_ = std::make_unique<utils::ObjectRegistry> (
nullptr);
45 monitor_fader_ = utils::make_qobject_unique<dsp::Fader> (
46 *registry_, dsp::PortType::Audio,
50 [] (
bool fader_solo_status) {
return false; });
52 juce::AudioSampleBuffer emphasis_sample (2, 512);
53 juce::AudioSampleBuffer normal_sample (2, 512);
54 metronome_ = utils::make_qobject_unique<dsp::Metronome> (
55 *registry_, emphasis_sample, normal_sample,
true, 1.0f,
nullptr);
58 void TearDown ()
override
65 std::unique_ptr<structure::project::Project> create_minimal_project (
66 structure::tracks::TrackRecordingCallback recording_callback =
72 std::optional<structure::tracks::TrackProcessor::ConstStereoPortPair>,
73 units::sample_u32_t) { })
75 using namespace zrythm::structure::project;
76 using namespace zrythm::plugins;
78 Project::ProjectDirectoryPathProvider path_provider =
79 [
this] (
bool for_backup) {
80 return for_backup ? project_dir_ /
"backups" : project_dir_;
83 PluginHostWindowFactory window_factory =
84 [] (
Plugin &) -> std::unique_ptr<IPluginHostWindow> {
return nullptr; };
86 auto project = std::make_unique<Project> (
87 *app_settings_, path_provider, *hw_interface_, midi_interface_,
88 plugin_format_manager_, window_factory, *metronome_, *monitor_fader_);
89 project->install_recording_callback (std::move (recording_callback));
93 std::unique_ptr<QTemporaryDir> temp_dir_obj_;
94 std::filesystem::path project_dir_;
95 std::unique_ptr<dsp::IHardwareAudioInterface> hw_interface_;
97 std::shared_ptr<juce::AudioPluginFormatManager> plugin_format_manager_;
98 std::unique_ptr<utils::AppSettings> app_settings_;
99 std::unique_ptr<utils::ObjectRegistry> registry_;