35 using SampleRateGetter = std::function<units::sample_rate_t ()>;
38 dsp::FileAudioSourceRegistry &file_audio_source_registry,
40 SampleRateGetter sr_getter);
59 -> FileAudioSourceUuidReference;
66 [[nodiscard]] fs::path
67 get_clip_path (
const dsp::FileAudioSource::Uuid &
id,
bool is_backup)
const;
121 std::unique_ptr<juce::PositionableAudioSource>
122 generate_audio_source (
const FileAudioSource::Uuid &
id)
const;
125 auto get_clip_ptrs ()
const
127 return std::views::transform (
128 clip_registry_.get_hash_map () | std::views::values,
129 [] (
const auto &clip) { return std::get<dsp::FileAudioSource *> (clip); });
133 friend void init_from (
138 static constexpr auto kClipsKey =
"clips"sv;
139 static constexpr auto kLastKnownFileHashesKey =
"lastKnownFileHashes"sv;
140 friend void to_json (nlohmann::json &j,
const AudioPool &pool)
142 j[AudioPool::kLastKnownFileHashesKey] = pool.last_known_file_hashes_;
144 friend void from_json (
const nlohmann::json &j, AudioPool &pool)
146 j.at (AudioPool::kLastKnownFileHashesKey)
147 .get_to (pool.last_known_file_hashes_);
151 SampleRateGetter sample_rate_getter_;
157 FileAudioSourceRegistry &clip_registry_;
161 boost::unordered::concurrent_flat_map<FileAudioSource::Uuid, utils::hash::HashT>
162 last_known_file_hashes_;
170 template <
typename FormatContext>
173 std::stringstream ss;
174 ss <<
"\nAudio Pool:\n";
175 for (
const auto &clip : pool.get_clip_ptrs ())
177 auto pool_path = pool.
get_clip_path (clip->get_uuid (),
false);
179 "[Clip {}] {}: {}\n", clip->get_uuid (), clip->get_name (), pool_path);
182 return fmt::formatter<std::string_view>::format (
183 fmt::format (
"{}", ss.str ()), ctx);