FFT is a high-resolution audio analysis tool for the iPhone and iPod Touch. It uses the Fast Fourier Transform (see below) to analyze incoming audio, and displays a very detailed graph of amplitude vs. frequency.
Don't know if you should download FFT or RTA? Check out our comparison page for more information.
NOTE: If you plan to purchase iProMic or iAudioInterface, you should instead download AudioTools and buy this app as an in-app purchase.
This application has been designed for acoustics work, and so the bins have been normalized to octaves, to get a display that will show a flat line for pink noise. You can control both the level of graph smoothing and decay time, to get as much or as little detail as you require.
You can also control the dB resolution of the graph, as well as the frequency range that is displayed.
Using the built-in signal generator, you can generate sine waves, square waves (within limits), white noise, and pink noise, optionally in psuedo-balanced mode.
Move your finger across the screen to get a cursor to read out exact dB levels and frequencies.
When your analysis is complete, you can save the graph image to your photo roll to include in a report.
See the sections below for more information about running FFT.
Demo
We have a detailed video demo of FFT that shows the app in action. The demo is in two parts, this link takes you to part two. Click Here to see the new video that shows new features added since the original release of FFT. Note that some of these features have been added to version 1.5, which was submitted to Apple on May 7, 2009. We expect to see it in the store soon.
About the FFT Calculation
FFT stands for Fast Fourier Transform, which is a mathematical algorithm that breaks a signal into frequency bins. Each bin is the same size, in Hertz. The size of the FFT determines the width of the bins in Hertz. Bin width = sample rate / FFT size. Since we are running at the iPhone's maximum sample rate of 48000 samples/second, for a 1024 point fft each frequency bin would be 48 Hz wide. This is gives us great resolution at 10kHz, but poor resolution at 32 Hz.
We can run larger and larger FFTs, but since we first have to store up all the samples to fill the FFT, and then do the math, the lag time starts to increase and the display becomes less and less responsive.
In FFT, we provide the choice of FFT size, currently from 128 points to 8,192 points. In addition, we provide another mode, which we call Equal Points Per Octave (EPPO). In this mode, we run a fairly small FFT (currently 512 points), but we only use the top octave from this FFT. So, we get a resolution at 10kHz of about 93Hz. Another way to look at it is that we get about 120 data points in the top octave (think of it as 1/120th octave resolution, which is about right). Then, we decimate and filter to get the sample rate down to 24kHz, and then run another 512 point FFT. So again, we get 1/120th octave resolution. We continue this process right down to the lowest octave. The result is excellent resolution across the frequency spectrum. The cost is that each octave only updates half as quickly as the octave above it, so the low octaves update much more slowly. The upper octaves retain very quick response.
EPPO is best used with steady-state signals, such as pink noise, or to analyze constant noise signals. If you want to see the entire graph updating quickly, use 2048 or 4096 points. Note that due to the fact that there are individual FFTs running for each octave, you may see graphical anomalies in the noise floor -- for example, since the decimation filter cuts off frequencies above the nyquist frequency, the lower FFTs don't even get the higher frequencies, and so might have a lower noise floor than the upper FFTs. This is normal. You can adjust the graph to move the entire FFT noise floor off the bottom of the screen to get a cleaner looking graph.
All calculations are done in 64-bit floating point for the best accuracy and to get the lowest possible noise floor.
Examples
Analyze Speaker Response: Use Pink noise as the test signal, select Equal Points Per Octave, select 1/6 or 1/3 octave smoothing, select 1s Decay time.
Music Analysis: Signal generator off, select the 2048-point FFT, 0.5s Decay, 1/24th octave smoothing.
Operation
Smoothing
Select Octave, 1/3 octave, 1/6 octave, 1/12 octave, 1/24 octave, or none. Smoothing averages the FFT dB values around each graph point logarithmically.
Decay Mode
The decay times apply to the graph dB values. A decay time of one second will cause a point to decay at the rate of 20dB/second. Peak Hold holds the highest value received, and Average is a true linear average of all readings over the time of the average. To clear Peak or Average mode, select another mode momentarily and then go back to Peak or Average mode.
NOTE: In EPPO mode, the decay time on the lower octaves is the same as the upper octaves, but since they are not being refreshed as often, the will jump up and then decay back down.
FFT Size
Choose the size of your FFT on the setup screen. The larger the size of the FFT, the more resolution you will have, but the slower the response time. If you choose Equal Points Per Octave, each octave will have high resolution (equivalent to the upper half of a 512 point FFT), but the lower octaves will update much more slowly. Use this mode for steady-state sound inputs, such as pink noise. (See the section above for more information about FFT size).
Graph Scrolling
The graph will scroll up and down when you slide one finger up and down on the screen. Swiping left and right will bring up a cursor, which you can dismiss by swiping off the graph to the left. Use a two-finger vertical pinch to adjust the screen scale, to see more or less dB on the screen. Use a horizontal open-pinch gesture to spread out the screen and zoom in on the frequency axis. When the frequency scale is zoomed, you can use two fingers to move the graph horizontally.
The state of the graph is stored as you make changes, so the next time that you start the FFT app, the zoom and scale settings are restored.
Generator
Touch the sine wave icon to bring up the built-in generator. You can select your signal type, and for sine and square waves, the signal frequency. Note that digitally-produced square waves start to alias badly above about 2000 Hz, so you will get audio artifacts.
The generator frequencies always change smoothly, to prevent zipper noise, and turn on and off with soft muting.
Like the other calcluations, the generator waveforms are created digitally using 64-bit floating point math, and are very accurate and low-distortion. Note that we have found that running the headphone output 1 click below maximum yields the lowest distortion waveforms.
See the section below on using the psuedo-balanced output.
Overall dB Display
The overall, unweighted SPL level is shown at all times on the screen in the upper right-hand corner. This is the same value that is shown on the calibration screen.
Clipping
If clipping of the input occurs, the words "Clipping Detected" will be displayed above the graph in the upper left-hand corner in red for 1.5 seconds.
Peak Follower
If turned on in setup, the frequency of the highest peak on the currently displayed window will be shown. This is great for quickly finding the frequency of feedback. Note that if the frequency scale is zoomed, the peak detector is limited to the range of frequencies currently displayed. Since the peak detector value is computed in real time, whether or not the FFT is running, you can use the frequency range zooming to find peaks in different parts of the graph, by stopping the FFT and working with the frequency range and graph zooming.
Setup
Calibration
The dB field shows the current, unweighted, dB SPL level. The Trim dB amount is added to the input level. Change the Trim field by using the + / - buttons. Match the dB field level to a known accurate sound level meter in unweighted mode.
NOTE: We do NOT recommend calibrating to a Radio Shack sound level meter! Many do not have an "unweighted" setting, and most are not very accurate. Use for sanity-checking only.
Internal Mic / External Mic
Select Internal when you are using the iPhone's built-in microphone. This adds a compensation filter to the signal, to partially flatten the response of the iPhone mic. There are separate calibration trim constants for each microphone. External mode is designed to work with our measurement microphone, and does not invoke the compensation curve. See the iAudioInterface page for more details.
Audio Pass-Through
Turn on or off to allow audio that is coming in to the unit to be presented at the output. Turning on the generator overrides audio-pass through.
Balanced Output
When turned on, the signal going to the right channel is inverted in phase 180 degress with respect to the output in the left channel. This lets you use our iAudioInterface to get a psuedo-balanced output signal that is 6dB higher than the single-ended output signal. Balanced Output mode is not recommended for use with the speaker output, as you will get cancellation that is noticable as a drop in level of middle and upper frequencies.
Peak Follower
Turns peak following on and off, see above.
File Save and Recall
FFT allows you to save and recall 10 FFT graphs directly to the device. Touch the small square icon (meant to look like a photograph) to call up the Save / Recall screen.
File Information
This field shows the current text description that was stored for the currently seleted file number (See below). You can tap the field to edit the description, which will only be saved when you tap Store Graph (below).
File Number
Use this selector bar to choose one of the 10 available file positions. As you change the selection, the information in the File Information field and the date field change eto reflect the store file (if any).
Store
Touch this button to store the FFT data that for the graph that is currently on the main screen to the device. Note that all of the raw FFT data is stored, not just the currently visible graph data.
Recall
Tap this button to recall the FFT data from the currently selected file number. If no data is stored, nothing will happen.
Save to Photo Roll
Tap this button to store the actual graphical image from the main screen to the device's photo roll.
Difference Mode
This switch turns difference mode on and off. When turned on, the most recently recalled graph (if any) is used as a baseline for the FFT function. In other words, the recalled graph is subtracted from the current FFT graph.
You can use Difference Mode to compare speakers, or do a before and after comparision of an acoustic space.
iPhone Hardware
See our our page on iPhone hardware that explains the differences between hardware models, and the effects on performance of our apps.
