A Kalman Filter is great if you don't know all of the states of the system, in actuality it's an adaptive or observer type control system that uses state estimation to fill in gaps left by noise.
Kalman or Luenberger state estimators are great for well defined, high noise, systems where certain states can be observed and essentially whittled down to what they "should be" if all states of the system were observable.
So for your system, as long as you aren't aliasing your inputs with the FFT you shouldn't need any of the more crazy filters and can probably go with a PID control system using an FIR or IIR.
Further, since you aren't entirely sure of what the system is that you're modelling it would be a good idea to make sure that your signal isn't getting Borked by the FFT and try to make that signal as clean as possible as an input before even going into filtering out noise and disturbances, that way you're making your controls/signal processing job as easy as possible on yourself.
ADDENDUM: Just read TomL's answer, and it has a grain of truth in it. Matlab and Simulink are great for this kind of problem, with Matlab's built in DSP toolbox you can easily build out most easy to intermediate signal processing jobs and with their new HDL toolbox if you're using VHDL or Verilog you can even get the code spit out for you. As well, once that IP block is built you can push it into a Simulink simulation with a/your FFT and signal setup so you can quickly and easily test the overall validity of different filtering types and methods without having to resort to testing different builds in whatever language/stack you're currently working on. So once you pick whatever method you can easily mock it up for yourself, your investors, or your higher ups. Adding this to any controls/signal processing stack makes your life so much easier in the long run that it's what I start any of my jobs/projects with now.
Using a high level approach first will allow you to be able to break your system down into its more basic 30,000 ft view blocks that you can then push into whatever control system fits those blocks best.
TL;DR: Make sure your signals as good as it can get and you aren't breaking it in your FFT, model how you want the signal processed, fit a filter to the model (Kalman probably won't be it).