add size impl
This commit is contained in:
24
bin/main.raw_data.cpp
Normal file
24
bin/main.raw_data.cpp
Normal file
@@ -0,0 +1,24 @@
|
||||
#include <hack/logger/logger.hpp>
|
||||
#include "harmonica.hpp"
|
||||
|
||||
auto main() -> int
|
||||
{
|
||||
// setup создается для каждого файла свой
|
||||
// т.к. при чтении данных из файла уже должен быть определен размер блока
|
||||
// данных для чтения m_block_size; см. установки по умолчанию.
|
||||
// Передается по ссылке и заполняется необходимыми данными
|
||||
hr::setup setup;
|
||||
setup.m_domain = hr::DOMAIN_PLUGIN::TIME;
|
||||
setup.m_file = "./sin.wav";
|
||||
|
||||
auto r = hr::run<hr::plugins::raw_data>(setup);
|
||||
hack::log()("grad:", r.m_grad);
|
||||
hack::log()("min:", r.m_min, "max:", r.m_max);
|
||||
hack::log()("size", r.m_size);
|
||||
|
||||
if (!r.empty())
|
||||
{
|
||||
for (auto& p : r.m_data)
|
||||
hack::log()(p[0].m_value);
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
executable(
|
||||
meson.project_name(),
|
||||
'main.cpp',
|
||||
'main.raw_data.cpp',
|
||||
dependencies : deps,
|
||||
cpp_args: args,
|
||||
include_directories : inc
|
||||
|
||||
@@ -18,6 +18,7 @@ namespace hr::plugins
|
||||
// т.к. реализация FFT (rdft) уже возвращает только уникальную часть спектра, а не полный симметричный массив из 1024 элементов.
|
||||
m_frames = m_setup.m_step_size + 1;
|
||||
m_result.m_grad.reserve(m_frames);
|
||||
m_result.m_size = m_frames;
|
||||
for (size_t i = 0; i < m_frames; ++i)
|
||||
m_result.m_grad.push_back(static_cast<float>(i) * m_setup.m_sample_rate / m_setup.m_block_size);
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ namespace hr::plugins
|
||||
b.m_value = v;
|
||||
b.m_duration = timestamp;
|
||||
|
||||
++m_result.m_size;
|
||||
m_result.set_bit(0, b);
|
||||
m_result.set_min_max(v);
|
||||
}
|
||||
|
||||
@@ -27,6 +27,7 @@ namespace hr::plugins
|
||||
m_result.set_bit(0, b);
|
||||
m_result.set_min_max(v);
|
||||
}
|
||||
m_result.m_size += base.size();
|
||||
}
|
||||
|
||||
void raw_data::process(cvec_t& fft, fvec_t& base, real_time timestamp)
|
||||
|
||||
@@ -67,6 +67,10 @@ namespace hr
|
||||
m_min = hack::math::min(m_min, v);
|
||||
}
|
||||
|
||||
// в данном случае вы сами решаете, что для вас значит размер
|
||||
// это может быть размер всего массива m_data или размер массива данных хранящихся в каждом бине
|
||||
// или этот же массив но помноженный на размер m_data
|
||||
std::size_t m_size = 0;
|
||||
|
||||
// иногда нужна градуировка одна и тажа для всех бинов
|
||||
std::vector<base_t> m_grad;
|
||||
|
||||
Reference in New Issue
Block a user