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(
|
executable(
|
||||||
meson.project_name(),
|
meson.project_name(),
|
||||||
'main.cpp',
|
'main.raw_data.cpp',
|
||||||
dependencies : deps,
|
dependencies : deps,
|
||||||
cpp_args: args,
|
cpp_args: args,
|
||||||
include_directories : inc
|
include_directories : inc
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ namespace hr::plugins
|
|||||||
// т.к. реализация FFT (rdft) уже возвращает только уникальную часть спектра, а не полный симметричный массив из 1024 элементов.
|
// т.к. реализация FFT (rdft) уже возвращает только уникальную часть спектра, а не полный симметричный массив из 1024 элементов.
|
||||||
m_frames = m_setup.m_step_size + 1;
|
m_frames = m_setup.m_step_size + 1;
|
||||||
m_result.m_grad.reserve(m_frames);
|
m_result.m_grad.reserve(m_frames);
|
||||||
|
m_result.m_size = m_frames;
|
||||||
for (size_t i = 0; i < m_frames; ++i)
|
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);
|
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_value = v;
|
||||||
b.m_duration = timestamp;
|
b.m_duration = timestamp;
|
||||||
|
|
||||||
|
++m_result.m_size;
|
||||||
m_result.set_bit(0, b);
|
m_result.set_bit(0, b);
|
||||||
m_result.set_min_max(v);
|
m_result.set_min_max(v);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ namespace hr::plugins
|
|||||||
m_result.set_bit(0, b);
|
m_result.set_bit(0, b);
|
||||||
m_result.set_min_max(v);
|
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)
|
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_min = hack::math::min(m_min, v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// в данном случае вы сами решаете, что для вас значит размер
|
||||||
|
// это может быть размер всего массива m_data или размер массива данных хранящихся в каждом бине
|
||||||
|
// или этот же массив но помноженный на размер m_data
|
||||||
|
std::size_t m_size = 0;
|
||||||
|
|
||||||
// иногда нужна градуировка одна и тажа для всех бинов
|
// иногда нужна градуировка одна и тажа для всех бинов
|
||||||
std::vector<base_t> m_grad;
|
std::vector<base_t> m_grad;
|
||||||
|
|||||||
Reference in New Issue
Block a user