added raw data plugin
This commit is contained in:
@@ -11,7 +11,7 @@ auto main() -> int
|
|||||||
// setup.m_domain = hr::DOMAIN_PLUGIN::FREQUENSY;
|
// setup.m_domain = hr::DOMAIN_PLUGIN::FREQUENSY;
|
||||||
setup.m_file = "./sin.wav";
|
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());
|
hack::log()("size:", r.m_data.size());
|
||||||
|
|
||||||
if (!r.empty())
|
if (!r.empty())
|
||||||
|
|||||||
@@ -9,7 +9,7 @@
|
|||||||
#include "utils/workers/result.hpp"
|
#include "utils/workers/result.hpp"
|
||||||
#include "adapter/adapter.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
|
#include "plugins/magnitude/magnitude.hpp" // IWYU pragma: keep
|
||||||
|
|
||||||
namespace hr
|
namespace hr
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ headers = [
|
|||||||
'utils/windows/hann/hann.hpp',
|
'utils/windows/hann/hann.hpp',
|
||||||
|
|
||||||
# plugins
|
# plugins
|
||||||
'plugins/original/original.hpp',
|
'plugins/raw_data/raw_data.hpp',
|
||||||
'plugins/magnitude/magnitude.hpp',
|
'plugins/magnitude/magnitude.hpp',
|
||||||
|
|
||||||
'harmonica.hpp'
|
'harmonica.hpp'
|
||||||
@@ -28,7 +28,7 @@ sources = [
|
|||||||
'utils/windows/hann/hann.cpp',
|
'utils/windows/hann/hann.cpp',
|
||||||
|
|
||||||
# plugins
|
# plugins
|
||||||
'plugins/original/original.cpp',
|
'plugins/raw_data/raw_data.cpp',
|
||||||
'plugins/magnitude/magnitude.cpp',
|
'plugins/magnitude/magnitude.cpp',
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|||||||
@@ -8,10 +8,6 @@ namespace hr::plugins
|
|||||||
|
|
||||||
void magnitude::process(fvec_t& base, real_time timestamp)
|
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)
|
void magnitude::process(cvec_t& fft, fvec_t& base, real_time timestamp)
|
||||||
|
|||||||
@@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
30
src/plugins/raw_data/raw_data.cpp
Normal file
30
src/plugins/raw_data/raw_data.cpp
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,11 +4,11 @@
|
|||||||
|
|
||||||
namespace hr::plugins
|
namespace hr::plugins
|
||||||
{
|
{
|
||||||
class original : public plugin
|
class raw_data : public plugin
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
original(const setup& st);
|
raw_data(const setup& st);
|
||||||
virtual ~original() = default;
|
virtual ~raw_data() = default;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
result m_result;
|
result m_result;
|
||||||
Reference in New Issue
Block a user