added original plugin

This commit is contained in:
2026-02-22 14:44:39 +03:00
parent 3c62b7755d
commit 939ce0a041
5 changed files with 64 additions and 1 deletions

View File

@@ -11,7 +11,7 @@ auto main() -> int
// setup.m_domain = hr::DOMAIN_PLUGIN::FREQUENSY;
setup.m_file = "./sin.wav";
auto r = hr::run<hr::plugins::magnitude>(setup);
auto r = hr::run<hr::plugins::original>(setup);
hack::log()("size:", r.m_data.size());
if (!r.empty())

View File

@@ -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

View File

@@ -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',
]

View File

@@ -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;
}
}

View File

@@ -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;
};
}