fix fft size
This commit is contained in:
@@ -9,15 +9,16 @@ auto main() -> int
|
|||||||
// Передается по ссылке и заполняется необходимыми данными
|
// Передается по ссылке и заполняется необходимыми данными
|
||||||
hr::setup setup;
|
hr::setup setup;
|
||||||
setup.m_domain = hr::DOMAIN_PLUGIN::FREQUENSY;
|
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);
|
auto r = hr::run<hr::plugins::fft>(setup);
|
||||||
hack::log()("grad:", r.m_grad);
|
hack::log()("grad:", r.m_grad);
|
||||||
hack::log()("min:", r.m_min, "max:", r.m_max);
|
hack::log()("min:", r.m_min, "max:", r.m_max);
|
||||||
|
hack::log()("size:", r.m_size);
|
||||||
|
|
||||||
if (!r.empty())
|
if (!r.empty())
|
||||||
{
|
{
|
||||||
for (auto& p : r.m_data)
|
for (auto& p : r.m_data)
|
||||||
hack::log()(p[0].m_values);
|
hack::log()(p[10].m_values);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
executable(
|
executable(
|
||||||
meson.project_name(),
|
meson.project_name(),
|
||||||
'main.raw_data.cpp',
|
'main.fft.cpp',
|
||||||
dependencies : deps,
|
dependencies : deps,
|
||||||
cpp_args: args,
|
cpp_args: args,
|
||||||
include_directories : inc
|
include_directories : inc
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ 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);
|
||||||
}
|
}
|
||||||
@@ -43,6 +42,7 @@ namespace hr::plugins
|
|||||||
m_result.set_min_max(v);
|
m_result.set_min_max(v);
|
||||||
}
|
}
|
||||||
m_result.set_bit(0, b);
|
m_result.set_bit(0, b);
|
||||||
|
++m_result.m_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
result fft::get_result()
|
result fft::get_result()
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ namespace hr
|
|||||||
|
|
||||||
// в данном случае вы сами решаете, что для вас значит размер
|
// в данном случае вы сами решаете, что для вас значит размер
|
||||||
// это может быть размер всего массива m_data или размер массива данных хранящихся в каждом бине
|
// это может быть размер всего массива m_data или размер массива данных хранящихся в каждом бине
|
||||||
// или этот же массив но помноженный на размер m_data
|
// или этот же массив, но помноженный на размер m_data
|
||||||
std::size_t m_size = 0;
|
std::size_t m_size = 0;
|
||||||
|
|
||||||
// иногда нужна градуировка одна и тажа для всех бинов
|
// иногда нужна градуировка одна и тажа для всех бинов
|
||||||
|
|||||||
Reference in New Issue
Block a user