Well when I tried to move it below 22050, by changing value in code you send me, it wouldn't go past 22050. It can make Bela work on any frequency from 22050 to 44100 (didn't tested above 44100), but when I set it like 11025 the CPU stays the same as it was on 22050, also I was testing it on uploaded WAV file which is recorded on 44100Hz. It sounds normal when Bela is set on 44100Hz, but when it's like 35kHz then it sounds like slower version, and that's okay and it works as expected until 22050Hz, but after that sound doesn't become slower it's the same as it is on 22050Hz.
Well for FIR filters, I'm running basic for loop:
for(unsigned int i=0; i<N3;i++){
y+=w *x1_array[((gWritePointer1-i)+N3)%N3];
}
where x1_array is input signal which changes as new samples comes from microphone so I realized it as circular buffer and w is the adaptive filter . his coefficients changes every new iteration.So that's it.