После вашего БПФ и фильтра вам нужно сделать обратное БПФ, чтобы вернуть данные во временную область. Затем вы хотите добавить этот набор семплов в ваш файл .WAV.
Что касается создания самого файла, то формат широко задокументирован (поиск в «формате .WAV» должен дать больше результатов, чем вы когда-либо использовали), и довольно простой. По сути, это простой заголовок (называемый «чанк»), который говорит, что это файл .WAV (или фактически файл «RIFF»). Затем есть блок «fmt», который сообщает о формате выборок (биты на выборку, выборки в секунду, количество каналов и т. Д.). Затем есть блок «данных», который содержит сами выборки.
Поскольку звучит так, как будто вы собираетесь делать это в режиме реального времени, я бы посоветовал вам забыть о выполнении вашего FFT, фильтра и iFFT. КИХ-фильтр даст практически те же результаты, но, как правило, намного быстрее. Основная идея КИХ-фильтра заключается в том, что вместо преобразования ваших данных в частотную область, фильтрации, а затем обратного преобразования во временную область вы преобразуете свои коэффициенты фильтра во временную область и применяете их (справедливо) непосредственно к входным данным. Здесь DSP зарабатывают на себе: почти все из них имеют инструкции с многократным накоплением, которые могут реализовать большую часть КИХ-фильтра в одной инструкции. Однако даже без этого получение FIR-фильтра, работающего в режиме реального времени на современном процессоре, не потребует никаких реальных уловок, если вы не выполните действительно быструю выборку. В любом случае гораздо проще заставить FFT / filter / iFFT работать с той же скоростью.