diff --git a/src/plugins/fft/fft.cpp b/src/plugins/fft/fft.cpp index 240f32f..9cd9c12 100644 --- a/src/plugins/fft/fft.cpp +++ b/src/plugins/fft/fft.cpp @@ -16,9 +16,9 @@ namespace hr::plugins // заполняем градацию по частотам // тут не нужно делить на 2. получаем = 513 исходя из базового m_setup // т.к. реализация FFT (rdft) уже возвращает только уникальную часть спектра, а не полный симметричный массив из 1024 элементов. - m_frames = m_setup.m_step_size + 1; - m_result.m_grad.reserve(m_frames); - for (size_t i = 0; i < m_frames; ++i) + auto step = m_setup.m_step_size + 1; + m_result.m_grad.reserve(step); + for (size_t i = 0; i < step; ++i) m_result.m_grad.push_back(static_cast(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) { + auto step = fft.size(); + result::bit b; b.m_name = "Amplitudes"; b.m_duration = timestamp; - b.m_values.reserve(m_frames); - for (size_t i = 0; i < m_frames; ++i) + b.m_values.reserve(step); + for (size_t i = 0; i < step; ++i) { // Конвертация в децибелы auto v = fft.m_norm[i]; diff --git a/src/plugins/fft/fft.hpp b/src/plugins/fft/fft.hpp index 2ab2f76..3b50bda 100644 --- a/src/plugins/fft/fft.hpp +++ b/src/plugins/fft/fft.hpp @@ -12,7 +12,6 @@ namespace hr::plugins private: result m_result; - std::size_t m_frames; public: void process(fvec_t& base, real_time timestamp) override; diff --git a/src/utils/workers/result.hpp b/src/utils/workers/result.hpp index 712a412..bc9d80f 100644 --- a/src/utils/workers/result.hpp +++ b/src/utils/workers/result.hpp @@ -14,13 +14,15 @@ namespace hr { std::string m_name; real_time m_duration; + // когда в расчете только одно значение. да может быть и нужно это использовать как // массив с индексом 0 типа m_values[0], но как-то вот так. // Потому как отрисовка графиков тот еще праздник... // конечно в боевой задаче это можно и нужно оптимизировать, но в данном случае для вывода на экран и понимания процесса // это можно опустить и использовать так как есть... base_t m_value; - // когда у тебя получается на один бин большоймассив данных, типа расчет fft (см. комент выше) + + // когда у тебя получается на один бин большой массив данных, типа расчет fft (см. комент выше) std::vector m_values; };