Dual FFT analyzers..how to use SMAART

part 2: Getting to know dual FFT analyzers


Now we know that we need both magnitude and phase plots to describe the behaviour of our system under test.
So wouldn't it be nice to have some tool to measure these?
For some 20 years now our PC's are powerful enough to do the multiple, fast calculations we need to make use of mathematics developed by Jean Baptiste Fourier.
This clever guy proved that (within certain restrictions we will talk about later) you can also describe the behaviour of your system by looking at how it responses to a unity impulse (Dirac).
So we actually have two methods for analyses: one in the frequency domain (that's your bode plots), one in the time domain (that will be this impulse response).
And the mathematical system to go between these two domains is hence known as FastFourierTransform (FFT and iFFT for the reverse).

Enough of this math stuff which I also hardly understand, why dual FFT?

It's perfectly possible to do build a RTA (real time analyser, you know, these dancing light bars you find on every crappy audio device nowadays) with a single FFT.

I remember (back in the '70's!) staring at the dancing lights of that precious Klark Teknik DN60 while trying to do system tuning and thinking f... that, I can hear the EQ changes I apply before I see them on that thing.
Sorry friends no serious audio use for these toys!

Now for the dual FFT
Remember phase being a time related phenomena?
So if you want time information you need a reference point!
We will feed our dual FFT's machines with a reference signal as well as the measurement signal.
By mathematics (or magic if you are more inclined to the esoteric) the software will give you pictures like this:

This as a magnitude (above) and phase (lower) plot measured with Easera Systune.
But I am not biased, you may also prefer to use Smaart or Wavecapture or even Meyer SIM3 if you really want to fork out money. (I have been using all of these, I even used to own the very last working copy of MACFoH r.i.p. ;) )
There are also a zillion shareware utils out there ARTA or Holm being the more serious candidates. Linux people (like me) are not very lucky though..(2021 edit: got both Smaart and Systune to work under wine..)

Dual FFT performs a 'substrative' measurement, I will not go into the depth's of measurement techniques now but do realize that your measurement is relative to your reference signal.

Which can be anything!

So please stop the white noise terror: use your favourite music and everybody will be more happy.
Keep an eye on the coherence trace (the blue line in the picture above) as long as there is enough spectral content in your music source you're just fine.

Now how to set up a measurement?

I have seen people in (club) venues putting their measurement mic at some 20 meters away from a full blasting PA system (in stereo) pumping white noise into a reverberant room. What do you expect to measure?

Now surely, it is possible to exclude some reflections from your measurement by carefully trimming your measurement window.
But if you really want to make some scientifically viable measurements you will need to restrict the variables.
Think!
What's the wavelength of the lowest frequency you are investigating, how close is the closest reflecting wall/floor/ceiling, what part of the sound system am I investigating etc etc.

OK, your just set up fine now.
Let's assume you are trying to tune a loudspeaker X-over (hell, this was this tutorial about..)
At this instance I am developing filters for this ancient cabinet (Axys T89)

This is a full range measurement (with Smaart for a change) from the 12' horn loaded part of this cabinet.
For the moment I have left the measurement compensation delay snapped to the maximum of the IR (here you can read more about this)





This is the same measurement (of course I adjusted the gain setting) a bit further away. See the difference?


So practice, practice, practice in measuring as long as is needed to acquire pictures which will help you in doing:

next part 3: X-over adjustment



Measuring and adjusting a X-over

part 3 : actual X-over setup


Now we did acquire some dual FFT measurement tool and we did get some practice in measuring.
So it's time to dive into actual system tuning.

First we have to establish some design goals:

I think there will be no doubt that, at first instance, we will go for a flat magnitude response.
Sure, certainly in live audio there is a big preference for sloped responses.
Be it a smiley curve or more seriously a sloped curve towards the sub end. (upwards that is ;)
But imho this is part of a sound engineers 'artistic' input in a same way as EQ-ing a system to his/her preference is.
Other people (with whom I don't always agree :) have called this toning (as opposed to tuning) a system.

A bit more complicated design goal will be to try to achieve an even controlled response off axis as well.
Why?
Not only will there be (paying?) people listening off axis; anywhere you listen to music, in enclosed spaces, there will be acoustics.
So also sound radiated off axis will (at a certain point) reach your (on axis being) ears.

One way to achieve this is by using  the well known Linkwitz-Riley X-over tuning.
Acoustically that is!
So if we would be applying a 24dB LR x-over in the electrical domain doesn't this necessarily give us an acoustic LR behaviour!

A simple trick to see what a desired 24 dB filter would look like in your measurement.
Just connect the output of your X-over to the measurement input, select a desired X-over trace and presto:


Here you have it, 1600 Hz /24 dB X-over LR style as a target trace.
Don't get confused by the out of band nonsense, no coherence there so no viable measurement data. (actually should have faded this, now where's that button in Smaart, hmm)

Now let see if we can take that measurement from that previous 12' horn loaded cabinet and see if we can give it a LR alignment.


Seems reasonable, hein?
Now look closely and you will notice in the bottom corner the soundweb setting:
2800Hz / 12 dB bessel!
Didn't expect that to work out for an acoustic filter of 1600Hz / 24dB?

We can now continu to see if the 1' driver horn will combine in the same way.
Remember I am measuring everything with music so at the same time I am listening if it sounds anywhere near ok.



Again if you try to read the small figures:
2300Hz / 12 dB Bessel!
From the days I still had to do these things by ear I have a real preference for Bessel filters, 25 years later this finally seems to make sense  ;)
(actually I am going to set up this cab with 18 db Bessels but these are not implemented in SW9088)

Final picture?


Microphone is now further away so this is why things start to get more bumpie again.
(for educational purposes unfortunately also in the X-region, no, no, this not a x-over artefact ;)


Are we finished now?
No, but this is a start. We can now start to compare this with different solutions.

Am I anywhere cheating here?
No, but I' am not telling you the whole story (see, this is my business, remember ;)
There is a lot more to be said about adjusting delay, applying EQ at the right places etc etc

You can read in between the lines though...




Using ST32F4 series MCU as a loudspeaker processor

STM32F4

There's a lot of information out there on using MCU's like arduino or more upscale M4 arm-cortex chips like those manufactured by STM as a process controller.
Measuring stuff // Controlling stuff.
Just google STM32F4 and you will find all kind of howto's on how to manage i2c or spi data streams.

We as audio engineers being only interested in i2s are not that lucky.
Don't get confused by i2c versus i2s!
Also there is references for i2c and AD/DA but this will be about analog sensor data. Not Audio!

So, as a future reference, I am going to describe the long and arduous task of getting these things to process audio.
This is not going to be a step by step tutorial: you will need different places to get the required knowledge, but hopefully it will be of use for someone stumbling across.
Bare in mind that the whole process took me about 4 months....


First steps

These are microcontrollers. So they are not running an OS like a raspberry PI. They are also not DSP's, so you can't program them with some third-generation language  like SigmaStudio.
Think bare-metal programming..Think C..
So first thing to do: get some knowledge about (embedded) C coding. Make your first program. The mcu equivalent of 'Hello World' will be a blinking LED.
You could write your code in a text editor, but that will be really die-hard-old-skool. 
Nowadays one uses Integrated Development Environments like a helping hand .
Now do spend some time to pick an IDE that will serve the purpose!
There's quite some free stuff out there, check Platformio or Eclipse based applications.
One warning: these are all community supported and as there isn't a huge audio community active on these platforms you could find that not useful at all!
After unsuccessful trying everything on both Windows and Linux, I finally decide to use a commercial product:


That could cost you some substantial cash, but there is a limited demo version that might just be enough for your purpose.