37 dsp::FileAudioSourceRegistry &file_audio_source_registry,
39 SampleRateGetter sr_getter);
58 -> FileAudioSourceUuidReference;
65 [[nodiscard]] fs::path
66 get_clip_path (
const dsp::FileAudioSource::Uuid &
id,
bool is_backup)
const;
120 std::unique_ptr<juce::PositionableAudioSource>
121 generate_audio_source (
const FileAudioSource::Uuid &
id)
const;
124 auto get_clip_ptrs ()
const
126 return std::views::transform (
127 clip_registry_.get_hash_map () | std::views::values,
128 [] (
const auto &clip) { return std::get<dsp::FileAudioSource *> (clip); });
132 friend void init_from (
137 static constexpr auto kClipsKey =
"clips"sv;
138 static constexpr auto kLastKnownFileHashesKey =
"lastKnownFileHashes"sv;
139 friend void to_json (nlohmann::json &j,
const AudioPool &pool)
141 j[AudioPool::kLastKnownFileHashesKey] = pool.last_known_file_hashes_;
143 friend void from_json (
const nlohmann::json &j, AudioPool &pool)
145 j.at (AudioPool::kLastKnownFileHashesKey)
146 .get_to (pool.last_known_file_hashes_);
150 SampleRateGetter sample_rate_getter_;
156 FileAudioSourceRegistry &clip_registry_;
160 boost::unordered::concurrent_flat_map<FileAudioSource::Uuid, utils::hash::HashT>
161 last_known_file_hashes_;
169 template <
typename FormatContext>
172 std::stringstream ss;
173 ss <<
"\nAudio Pool:\n";
174 for (
const auto &clip : pool.get_clip_ptrs ())
176 auto pool_path = pool.
get_clip_path (clip->get_uuid (),
false);
178 "[Clip {}] {}: {}\n", clip->get_uuid (), clip->get_name (), pool_path);
181 return fmt::formatter<std::string_view>::format (
182 fmt::format (
"{}", ss.str ()), ctx);