fix some code
This commit is contained in:
@@ -16,9 +16,9 @@ namespace hr::plugins
|
|||||||
// заполняем градацию по частотам
|
// заполняем градацию по частотам
|
||||||
// тут не нужно делить на 2. получаем = 513 исходя из базового m_setup
|
// тут не нужно делить на 2. получаем = 513 исходя из базового m_setup
|
||||||
// т.к. реализация FFT (rdft) уже возвращает только уникальную часть спектра, а не полный симметричный массив из 1024 элементов.
|
// т.к. реализация FFT (rdft) уже возвращает только уникальную часть спектра, а не полный симметричный массив из 1024 элементов.
|
||||||
m_frames = m_setup.m_step_size + 1;
|
auto step = m_setup.m_step_size + 1;
|
||||||
m_result.m_grad.reserve(m_frames);
|
m_result.m_grad.reserve(step);
|
||||||
for (size_t i = 0; i < m_frames; ++i)
|
for (size_t i = 0; i < step; ++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);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -28,11 +28,13 @@ namespace hr::plugins
|
|||||||
|
|
||||||
void fft::process(cvec_t& fft, fvec_t& base, real_time timestamp)
|
void fft::process(cvec_t& fft, fvec_t& base, real_time timestamp)
|
||||||
{
|
{
|
||||||
|
auto step = fft.size();
|
||||||
|
|
||||||
result::bit b;
|
result::bit b;
|
||||||
b.m_name = "Amplitudes";
|
b.m_name = "Amplitudes";
|
||||||
b.m_duration = timestamp;
|
b.m_duration = timestamp;
|
||||||
b.m_values.reserve(m_frames);
|
b.m_values.reserve(step);
|
||||||
for (size_t i = 0; i < m_frames; ++i)
|
for (size_t i = 0; i < step; ++i)
|
||||||
{
|
{
|
||||||
// Конвертация в децибелы
|
// Конвертация в децибелы
|
||||||
auto v = fft.m_norm[i];
|
auto v = fft.m_norm[i];
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ namespace hr::plugins
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
result m_result;
|
result m_result;
|
||||||
std::size_t m_frames;
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void process(fvec_t& base, real_time timestamp) override;
|
void process(fvec_t& base, real_time timestamp) override;
|
||||||
|
|||||||
@@ -14,12 +14,14 @@ namespace hr
|
|||||||
{
|
{
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
real_time m_duration;
|
real_time m_duration;
|
||||||
|
|
||||||
// когда в расчете только одно значение. да может быть и нужно это использовать как
|
// когда в расчете только одно значение. да может быть и нужно это использовать как
|
||||||
// массив с индексом 0 типа m_values[0], но как-то вот так.
|
// массив с индексом 0 типа m_values[0], но как-то вот так.
|
||||||
// Потому как отрисовка графиков тот еще праздник...
|
// Потому как отрисовка графиков тот еще праздник...
|
||||||
// конечно в боевой задаче это можно и нужно оптимизировать, но в данном случае для вывода на экран и понимания процесса
|
// конечно в боевой задаче это можно и нужно оптимизировать, но в данном случае для вывода на экран и понимания процесса
|
||||||
// это можно опустить и использовать так как есть...
|
// это можно опустить и использовать так как есть...
|
||||||
base_t m_value;
|
base_t m_value;
|
||||||
|
|
||||||
// когда у тебя получается на один бин большой массив данных, типа расчет fft (см. комент выше)
|
// когда у тебя получается на один бин большой массив данных, типа расчет fft (см. комент выше)
|
||||||
std::vector<base_t> m_values;
|
std::vector<base_t> m_values;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user