Articles

Advanced Max: FFTs, Part 5

This edition of the Advanced Max series on FFTs is a swan dive off the high board - we’re going to use the Max SDK to create a pair of Max externals that will make FFT Processing easier. This 52-minute video will walk you through the development process for creating an object to normalize FFT values, and to convert FFT data from MSP signals to lists. Pull up a chair!

Since this video does the walkthrough using Xcode on a Macintosh, I've included a special bonus video for Windows users that details the differences in the development environment.

  • Download the package of source code, help patcher, and built externals for both platforms used in this tutorial.

All the tutorials in this series: Part 1, Part 2, Part 3, Part 4, Part 5, Part 6, Part 7.

by Timothy Place on 2017年5月9日 17:53

Timothy Place's icon

Timothy Place

6月 13 2017 | 8:42 午後

I discovered a bug in the code we wrote in the video. I just uploaded an updated version that fixes this bug. If you've downloaded previously you might want to re-download now.

The bug was on line 162 of fft.list~.c where we copy the imaginary output. Except in the video we were copying the real output to the imaginary instead of the imaginary. Oops!

You'll get to see me discover the bug in the next video in this series!

alessandroguerri's icon

alessandroguerri

8月 06 2017 | 3:26 午後

Hi Timothy,that's great.
Just want to know which is the min-max range of phase values comin out of fft.list,in order to correctly visualize them on a multislider.
Thanks for what you are doing

Matteo Traverso's icon

Matteo Traverso

11月 25 2023 | 4:57 午後

Hi, thank you so much for this tutorial. For who is interested I've made the porting of fft.normalize~ and fft.list~ for m1's (and later) Mac.
I hope this can help :)

fft.list~.mxo.zip
application/zip 8.98 KB

fft.normalize~.mxo.zip
application/zip 7.98 KB

ddgg's icon

ddgg

7月 08 2024 | 6:44 午後

Hey @Matteo concerning the fft.list~ object, did you have to change something in your source code? I followed the tutorial and even though I can compile the external for arm64, the output list contains a lot of `<unknow>`s (or `???` in a message box). This also happens if I compile the project shared by Timothy (for arm64)

By the way @Timothy: amazing tutorial