Data Sonification via IFFT
8 views (last 30 days)
Show older comments
Hi, I'm trying to sonify a non audio histogram data (financial data), for an arts project. I am using sound=ifft(histogram) but the sounds I get all start very loud then drop exponentially, and then at the end rise sharply again, sounding very much like a "ding-woop". I understand the sound symmetry being expected as DFT being conjugate symmetric, and also the fact that IFFT just converts from the frequency domain to time domain. What I don't understand is what are the general properties of the histogram that give such sounds, and how I can condition/change the histogram so it will give me more uniform sounds. I've tried sound=ifft(exp(histogram)) but didn't improve much. Many thanks for your help...
0 Comments
Accepted Answer
Walter Roberson
on 22 Sep 2011
What you describe reminds me of something I encountered a few days ago: if you start with a linear slope and fft() it, and look at the real component (or, alternate, at the magnitude) of that, then it has a very sharp exponential at one end, becomes "nearly flat", and then at the end goes in to a sharp exponential again. For a simple slope, one of the exponentials will be negative and the other will be positive (the positions would flip around if you reversed the slope.)
My experiences thus suggests that if your histogram had something that approximated straight lines, then the ifft() would end up with the kind of exponentials you heard.
You can always plot the values to see. Keep in mind that the ifft() of arbitrary real data tends to end up as complex, so you will want to look at real() and imag() and abs() of the ifft.
4 Comments
Walter Roberson
on 27 Sep 2011
A staircase with a number of steps is a straight line when viewed from further away.
I suspect you want to be working with the transform of fftshift() of the data.
The transform of a rectangular pulse (such as the bar from a histogram) is a sinc pulse; since is sin(Pi*x)/(Pi*x); see http://en.wikipedia.org/wiki/Sinc_function . The transform of the sum of several rectangular pulses is thus the multiplication of several sinc pulses. If all of the rectangular pulses are positive then all of the sinc pulses will peak on the positive side, so multiplying those sinc together will tend to produce something that approximates a larger sinc function -- i.e., that tends to approximate what you saw. fftshift() your output to see the sinc pulse.
Thus, if you are working with data that is more or less a series of rectangular pulses, or more or less a straight line, you will end up with the output shape you have already observed -- probably not of particular interest.
More Answers (1)
See Also
Categories
Find more on Fourier Analysis and Filtering in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!