#include "aubio_cpp.hpp" #include #include #include #include namespace aubio { std::optional onset_detector::detect(const std::vector& samples) { std::unique_ptr out{new_fvec(2), del_fvec}; std::vector input; std::ranges::transform(samples, std::back_inserter(input), [](const sf::Int16 i) -> float { return static_cast(i) / std::numeric_limits::max(); }); fvec_t _input = { .length=static_cast(input.size()), .data=input.data(), }; aubio_onset_do(this->get(), &_input, out.get()); if (out->data[0] != 0) { return aubio_onset_get_last(this->get()); } else { return {}; } } }