I'm not appointed by Flowstone. Could you please describe your special FFT requirements? I went reading a few posts from you on the Flowstone forum, including that particular one about the first FFT bin actually representing the DC component. Are you fluent with FFT, now?
A very good source about FFT is "The Scientist and Engineer's Guide to Digital Signal Processing" by Steven W. Smith. You can access the book online freely at
http://www.dspguide.com/pdfbook.htm In March 2008, I tried implementing a dual-channel FFT Analyzer using Synthmaker.
This was in the context of making a Synthmaker-based Lipshitz-Vanderkooy loudspeaker crossover, the subtractive one that's relying on a delay line matching the lowpass group delay.
http://synthmaker.co.uk/forum/viewtopic.php?f=5&t=5450Thanks to Synthmaker, I managed to do the Lipshitz-Vanderkooy loudspeaker crossover in a matter of minutes.
Unfortunately, as there is no bridge between the Windows audio mixer and the Synthmaker audio input (being ASIO or DSound), such loudspeaker crossover is not for unexperieced users. One need to fiddle with VAC (Virtual Audio cable for persuading ASIO reading the Windows audio mixer), and ASIO4ALL (for converting the ubiquitous HD Audio soundcard into an 6-chan ASIO output).
For the dual-channel FFT analyzer, I based on the
Sambean Analysis Kit dating back from May 2006.
http://synthmaker.co.uk/forum/viewtopic.php?t=2409Unfortunately, the frequency axis was LIN, and I needed LOG.
Unfortuately, the FFT was single-channel, and I needed dual-channel for plotting the FFT as a ratio, as a transfer function.
On top of this I needed a guaranteed synch between the channels, at the audio data grabber stage.
There were difficulties caused by the absence of a "guaranteed synched" dual audio channel grabber, and the absence of a "Float by Float Division". It was quite a deception for me, to see Synthmaker needing a complicated signal schema for something as trivial as a dual-channel FFT analyzer. The deception went deeper, when realizing that plotting the graph on screen with a LOG frequency scale, was far from trivial. I received valuable hints and examples from
MyCo and
Alisant. Alisant provided the solution for an effective LOG frequency representation. However, I went discouraged. I went discouraged because I feared that anybody fluent with signal analysis, anybody willing to audit the program code, would have rejected Flowstone as trustable platform, looking the kind of complicated gestures you - as software programmer - need to exercise, for getting dots and lines on the PC screen, that are actually related to the audio signal.
In Feb 2011, when
Dozius Analysis Kit went published on Synthmaker forum, I missed it.
http://synthmaker.co.uk/forum/viewtopic.php?f=7&t=10208Can somebody tell us if Dosius is active on Flowstone?
Would be great to have the Dosius Analysis Kit, revamped using Ruby.
Dozius Analysis kit is not a dual-channel FFT analyzer (it implicitely relies on a Dirac pulse as reference signal), and there are no dB nor Hz scales showing on the graph.
Despite this, Dozius Analysis kit is a great tool for quickly and effectively checking filters.
Today in June 2013, I'm running Flowstone as registered, paying user.
http://www.dsprobotics.com/support/viewtopic.php?f=3&t=1487You'll find a realtime FFT analyzer over there with triangular windowing and LOG frequency scale, graphing the frequency response of a FIR.
I still feel uncomfortable with the graph part, which is coming from the Synthmaker era, missing the dB labels on the vertical axis.
A possibiity is to rely on the
Admin Oscilloscope, which is incorporating Ruby.
http://www.dsprobotics.com/support/viewtopic.php?f=11&t=1136&p=3442 By the way, from a Scientist and Engineer's point of view, there are a few ideas coming into my mind.
Currently, the Flowstone FFT module is outputting the frequency domain data in polar coordinates (magnitude, phase). I fear that for long FFTs (say 256 samples, and beyond) there will be a severe performance penalty in converting the FFT output into (real, imag) coordinates using Ruby.
It could be more efficient, from a Scientist and Engineer's point of view, to have :
- the Flowstone FFT module renamed FFT_MP, outputting the frequency domain data in (magnitude, phase)
- a Flowstone FFT module named FFT_RI, outputting the frequency domain data in (real, imag)
- a Flowstone I2P (imaginary to polar) conversion module, running fast, able to run on the two Float arrays
- a Flowstone P2I (polar to imaginary) conversion module, running fast, able to run on the two Float arrays
Please tell me if this makes sense.