fix fft size

This commit is contained in:
2026-04-15 13:51:50 +03:00
parent 3afccda759
commit 39b62d6ccb
4 changed files with 6 additions and 5 deletions

View File

@@ -9,15 +9,16 @@ auto main() -> int
// Передается по ссылке и заполняется необходимыми данными
hr::setup setup;
setup.m_domain = hr::DOMAIN_PLUGIN::FREQUENSY;
setup.m_file = "./sin.wav";
setup.m_file = "/mnt/raid/projects/dsp/songs/base/MakSim: Знаешь ли ты?.mp3";
auto r = hr::run<hr::plugins::fft>(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_values);
hack::log()(p[10].m_values);
}
}

View File

@@ -1,6 +1,6 @@
executable(
meson.project_name(),
'main.raw_data.cpp',
'main.fft.cpp',
dependencies : deps,
cpp_args: args,
include_directories : inc

View File

@@ -18,7 +18,6 @@ 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);
}
@@ -43,6 +42,7 @@ namespace hr::plugins
m_result.set_min_max(v);
}
m_result.set_bit(0, b);
++m_result.m_size;
}
result fft::get_result()

View File

@@ -69,7 +69,7 @@ namespace hr
// в данном случае вы сами решаете, что для вас значит размер
// это может быть размер всего массива m_data или размер массива данных хранящихся в каждом бине
// или этот же массив но помноженный на размер m_data
// или этот же массив, но помноженный на размер m_data
std::size_t m_size = 0;
// иногда нужна градуировка одна и тажа для всех бинов