template<typename T>
T plugin,
std::string_view parameterName,
float parameterValue,
std::string_view programName,
uint32_t stepSize,
uint32_t blockSize,
uint64_t nsec
) {
{ T::outputCount } -> std::convertible_to<uint32_t>;
{ T::meta } -> std::convertible_to<typename T::Meta>;
requires (!HasParameters<T> || requires {
{ plugin.getParameter(parameterName) } -> std::same_as<std::optional<float>>;
{ plugin.setParameter(parameterName, parameterValue) } -> std::same_as<bool>;
});
requires (!HasPrograms<T> || requires {
{ plugin.getCurrentProgram() } -> std::same_as<std::string_view>;
{ plugin.selectProgram(programName) } -> std::same_as<bool>;
});
{ plugin.getPreferredStepSize() } -> std::same_as<uint32_t>;
{ plugin.getPreferredBlockSize() } -> std::same_as<uint32_t>;
{ plugin.getOutputDescriptors() } -> std::same_as<std::array<PluginBase::OutputDescriptor, T::outputCount>>;
{ plugin.initialise(stepSize, blockSize) } -> std::same_as<bool>;
{ plugin.reset() } -> std::same_as<void>;
{ plugin.process(buffer, nsec) } -> std::convertible_to<const std::array<PluginBase::Feature, T::outputCount>&>;
}
std::variant< TimeDomainBuffer, FrequencyDomainBuffer > InputBuffer
Input domain variant.
Definition Plugin.hpp:64
Definition Plugin.hpp:149