From 939ce0a041f7b79f71ef631bd10fbfec83e70898 Mon Sep 17 00:00:00 2001 From: chatlanin Date: Sun, 22 Feb 2026 14:44:39 +0300 Subject: [PATCH] added original plugin --- bin/main.cpp | 2 +- src/harmonica.hpp | 1 + src/meson.build | 2 ++ src/plugins/original/original.cpp | 39 +++++++++++++++++++++++++++++++ src/plugins/original/original.hpp | 21 +++++++++++++++++ 5 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 src/plugins/original/original.cpp create mode 100644 src/plugins/original/original.hpp diff --git a/bin/main.cpp b/bin/main.cpp index 5284173..22f7f4e 100644 --- a/bin/main.cpp +++ b/bin/main.cpp @@ -11,7 +11,7 @@ auto main() -> int // setup.m_domain = hr::DOMAIN_PLUGIN::FREQUENSY; setup.m_file = "./sin.wav"; - auto r = hr::run(setup); + auto r = hr::run(setup); hack::log()("size:", r.m_data.size()); if (!r.empty()) diff --git a/src/harmonica.hpp b/src/harmonica.hpp index 69e265b..558d5f0 100644 --- a/src/harmonica.hpp +++ b/src/harmonica.hpp @@ -9,6 +9,7 @@ #include "utils/workers/result.hpp" #include "adapter/adapter.hpp" +#include "plugins/original/original.hpp" // IWYU pragma: keep #include "plugins/magnitude/magnitude.hpp" // IWYU pragma: keep namespace hr diff --git a/src/meson.build b/src/meson.build index 80bcacb..ccefd78 100644 --- a/src/meson.build +++ b/src/meson.build @@ -14,6 +14,7 @@ headers = [ 'utils/windows/hann/hann.hpp', # plugins + 'plugins/original/original.hpp', 'plugins/magnitude/magnitude.hpp', 'harmonica.hpp' @@ -27,6 +28,7 @@ sources = [ 'utils/windows/hann/hann.cpp', # plugins + 'plugins/original/original.cpp', 'plugins/magnitude/magnitude.cpp', ] diff --git a/src/plugins/original/original.cpp b/src/plugins/original/original.cpp new file mode 100644 index 0000000..fa86f06 --- /dev/null +++ b/src/plugins/original/original.cpp @@ -0,0 +1,39 @@ +#include "original.hpp" + +// Простой плагин, котоорый нужен для отрисовки базового сигнала +// в частотной области все усредняется и во временной тоже. +namespace hr::plugins +{ + original::original(const setup& st) : plugin{ st } + { + } + + void original::process(fvec_t& base, real_time timestamp) + { + std::size_t bins = base.size(); + base_t s = 0.f; + for (std::size_t i = 0; i < bins; ++i) s += base[i]; + s /= bins; + result::bit b; + b.m_value.push_back(s); + b.m_duration = timestamp; + m_result.set_bit(b); + } + + void original::process(cvec_t& fft, fvec_t& base, real_time timestamp) + { + std::size_t frames = fft.size(); + base_t m = 0.f; + for (std::size_t i = 0; i < frames; ++i) m += fft.m_norm[i]; + m /= frames; + result::bit b; + b.m_value.push_back(m); + b.m_duration = timestamp; + m_result.set_bit(b); + } + + result original::get_result() + { + return m_result; + } +} diff --git a/src/plugins/original/original.hpp b/src/plugins/original/original.hpp new file mode 100644 index 0000000..49e6812 --- /dev/null +++ b/src/plugins/original/original.hpp @@ -0,0 +1,21 @@ +#pragma once + +#include "utils/workers/plugin.hpp" + +namespace hr::plugins +{ + class original : public plugin + { + public: + original(const setup& st); + virtual ~original() = default; + + private: + result m_result; + + public: + void process(fvec_t& base, real_time timestamp) override; + void process(cvec_t& fft, fvec_t& base, real_time timestamp) override; + result get_result() override; + }; +}