added raw data plugin

This commit is contained in:
2026-02-22 15:11:42 +03:00
parent 939ce0a041
commit e1641eb810
7 changed files with 37 additions and 50 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::original>(setup);
auto r = hr::run<hr::plugins::raw_data>(setup);
hack::log()("size:", r.m_data.size());
if (!r.empty())

View File

@@ -9,7 +9,7 @@
#include "utils/workers/result.hpp"
#include "adapter/adapter.hpp"
#include "plugins/original/original.hpp" // IWYU pragma: keep
#include "plugins/raw_data/raw_data.hpp" // IWYU pragma: keep
#include "plugins/magnitude/magnitude.hpp" // IWYU pragma: keep
namespace hr

View File

@@ -14,7 +14,7 @@ headers = [
'utils/windows/hann/hann.hpp',
# plugins
'plugins/original/original.hpp',
'plugins/raw_data/raw_data.hpp',
'plugins/magnitude/magnitude.hpp',
'harmonica.hpp'
@@ -28,7 +28,7 @@ sources = [
'utils/windows/hann/hann.cpp',
# plugins
'plugins/original/original.cpp',
'plugins/raw_data/raw_data.cpp',
'plugins/magnitude/magnitude.cpp',
]

View File

@@ -8,10 +8,6 @@ namespace hr::plugins
void magnitude::process(fvec_t& base, real_time timestamp)
{
result::bit b;
b.m_value = base;
b.m_duration = timestamp;
m_result.set_bit(b);
}
void magnitude::process(cvec_t& fft, fvec_t& base, real_time timestamp)

View File

@@ -1,39 +0,0 @@
#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,30 @@
#include "raw_data.hpp"
namespace hr::plugins
{
// Этот плагин ни чего не делает и предназначен при сохранении единственности интерфейса просто
// передавать сырые необработанные данные. Например дял отрисовки базового сигнала.
// Он не работает в частотной области
raw_data::raw_data(const setup& st) : plugin{ st }
{
if (st.m_domain != DOMAIN_PLUGIN::TIME)
hack::error()("Этот плагин работает только во временной области!");
}
void raw_data::process(fvec_t& base, real_time timestamp)
{
result::bit b;
b.m_value = base;
b.m_duration = timestamp;
m_result.set_bit(b);
}
void raw_data::process(cvec_t& fft, fvec_t& base, real_time timestamp)
{
}
result raw_data::get_result()
{
return m_result;
}
}

View File

@@ -4,11 +4,11 @@
namespace hr::plugins
{
class original : public plugin
class raw_data : public plugin
{
public:
original(const setup& st);
virtual ~original() = default;
raw_data(const setup& st);
virtual ~raw_data() = default;
private:
result m_result;