<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Spectral analysis with Fast Fourier Transform in Actionscript</title>
	<atom:link href="http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/feed/" rel="self" type="application/rss+xml" />
	<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/</link>
	<description>from the trenches of software development</description>
	<lastBuildDate>Fri, 17 Dec 2010 11:00:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: stephan</title>
		<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/comment-page-1/#comment-6205</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Tue, 14 Apr 2009 20:46:08 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.acidcats.nl/blog/?p=23#comment-6205</guid>
		<description>Sources are available, see &lt;a href=&quot;http://stephan.acidcats.nl/blog/2009/03/01/spectral-analysis-source-files/&quot; rel=&quot;nofollow&quot;&gt;this blog post&lt;/a&gt;. I haven&#039;t had time to look further into Alchemy yet, but it still is on my wanted list. Pixel Bender might be an option, but the lack of loops might make its use very limited, as that would make it only suitable for short samples. But it&#039;s worth looking at, sure!</description>
		<content:encoded><![CDATA[<p>Sources are available, see <a href="http://stephan.acidcats.nl/blog/2009/03/01/spectral-analysis-source-files/" rel="nofollow">this blog post</a>. I haven&#8217;t had time to look further into Alchemy yet, but it still is on my wanted list. Pixel Bender might be an option, but the lack of loops might make its use very limited, as that would make it only suitable for short samples. But it&#8217;s worth looking at, sure!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: jkozniewski</title>
		<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/comment-page-1/#comment-6201</link>
		<dc:creator>jkozniewski</dc:creator>
		<pubDate>Tue, 14 Apr 2009 18:56:37 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.acidcats.nl/blog/?p=23#comment-6201</guid>
		<description>Hi,

You&#039;ve mentioned Alchemy as an option of
computing FFT - have you made any tests if
it&#039;s much faster than pure as3 ?
I&#039;m wondering if PixelBender may be helpful here
i know that lack of loops support etc. would be a problem
but hm.... any thoughts on this :) ?
Are you planning to release sources any time soon ?
Regards !</description>
		<content:encoded><![CDATA[<p>Hi,</p>
<p>You&#8217;ve mentioned Alchemy as an option of<br />
computing FFT &#8211; have you made any tests if<br />
it&#8217;s much faster than pure as3 ?<br />
I&#8217;m wondering if PixelBender may be helpful here<br />
i know that lack of loops support etc. would be a problem<br />
but hm&#8230;. any thoughts on this <img src='http://stephan.acidcats.nl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ?<br />
Are you planning to release sources any time soon ?<br />
Regards !</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/comment-page-1/#comment-5698</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Sun, 01 Mar 2009 19:29:17 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.acidcats.nl/blog/?p=23#comment-5698</guid>
		<description>Hamming window is next on the todo list :) To do 2-way FFT (with fun stuff in the middle) you have to do overlapping Hamming windows, otherwise you get an extra sound that can be quite nasty. The frequency of that added sound is the same as that of the base frequency of the FFT, so usually around 50Hz, and shaped like a square or a pulse. So basically you get a low sharp buzz extra. Problem is only that this requires the double number of transforms, so it&#039;s twice as hard on the CPU. With my current findings that still leaves 20ms to do fun stuff. The Hamming window itself isn&#039;t hard on the processor, as the curve can be precalculated and applied in a single run over one buffer.</description>
		<content:encoded><![CDATA[<p>Hamming window is next on the todo list <img src='http://stephan.acidcats.nl/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  To do 2-way FFT (with fun stuff in the middle) you have to do overlapping Hamming windows, otherwise you get an extra sound that can be quite nasty. The frequency of that added sound is the same as that of the base frequency of the FFT, so usually around 50Hz, and shaped like a square or a pulse. So basically you get a low sharp buzz extra. Problem is only that this requires the double number of transforms, so it&#8217;s twice as hard on the CPU. With my current findings that still leaves 20ms to do fun stuff. The Hamming window itself isn&#8217;t hard on the processor, as the curve can be precalculated and applied in a single run over one buffer.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vFragosop</title>
		<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/comment-page-1/#comment-5697</link>
		<dc:creator>vFragosop</dc:creator>
		<pubDate>Sun, 01 Mar 2009 18:30:55 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.acidcats.nl/blog/?p=23#comment-5697</guid>
		<description>Hmm.. that&#039;s interesting..

I was talking to Ben Houston, the responsable for FFT algorithms in Math.NET library, and he suggested me the Hamming Function.

I don&#039;t if Adobe took one of those Window functions in care. It&#039;s an interesting topic anyway.

[Wiki has a great article about Hamming].</description>
		<content:encoded><![CDATA[<p>Hmm.. that&#8217;s interesting..</p>
<p>I was talking to Ben Houston, the responsable for FFT algorithms in Math.NET library, and he suggested me the Hamming Function.</p>
<p>I don&#8217;t if Adobe took one of those Window functions in care. It&#8217;s an interesting topic anyway.</p>
<p>[Wiki has a great article about Hamming].</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/comment-page-1/#comment-5693</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Thu, 26 Feb 2009 07:10:05 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.acidcats.nl/blog/?p=23#comment-5693</guid>
		<description>Actually that&#039;s not a mistake, but the standard way a Fourier Transform works. My code does exactly the same thing, except that it&#039;s more flexible in choice of resolution over time vs. frequency. The linear nature of the Fourier Transform (each &#039;slot&#039; takes up 1 frequency that is a multiple of the base frequency) is what makes it less suitable for accurately analysing audible content, as the human ear functions logarithmically. However it&#039;s not very difficult to change the code such that it groups frequencies, with larger groups towards the higher frequencies. It&#039;s basically a kind of post processing that is not very CPU-intensive. It does reduce the resolution in high frequencies, but as you say, that is already very high anyway. Unfortunately it doesn&#039;t increase the resolution in low frequencies.
One way to increase the resolution in low frequencies, is by increasing the sample size. As the base frequency is a factor of the sample size, it will get half for each doubling of the sample size. However, that implies also halving the time resolution. So the more we wish to know about which frequencies occur in a sound, the less we know about when those frequencies occur. It&#039;s a direct result of Heisenberg&#039;s Uncertainty Principle.
In mathematics there&#039;s another transform, called Wavelet Transform, that is a lot less well known than the Fourier Transform, but that does much better justice to the logarithmic nature of sound. There&#039;s a number of explanations about that on the net, but they&#039;re mostly quite mathematical, and haven&#039;t found much application outside of science yet. So it seems like we&#039;re stuck with Fourier for the time being.</description>
		<content:encoded><![CDATA[<p>Actually that&#8217;s not a mistake, but the standard way a Fourier Transform works. My code does exactly the same thing, except that it&#8217;s more flexible in choice of resolution over time vs. frequency. The linear nature of the Fourier Transform (each &#8217;slot&#8217; takes up 1 frequency that is a multiple of the base frequency) is what makes it less suitable for accurately analysing audible content, as the human ear functions logarithmically. However it&#8217;s not very difficult to change the code such that it groups frequencies, with larger groups towards the higher frequencies. It&#8217;s basically a kind of post processing that is not very CPU-intensive. It does reduce the resolution in high frequencies, but as you say, that is already very high anyway. Unfortunately it doesn&#8217;t increase the resolution in low frequencies.<br />
One way to increase the resolution in low frequencies, is by increasing the sample size. As the base frequency is a factor of the sample size, it will get half for each doubling of the sample size. However, that implies also halving the time resolution. So the more we wish to know about which frequencies occur in a sound, the less we know about when those frequencies occur. It&#8217;s a direct result of Heisenberg&#8217;s Uncertainty Principle.<br />
In mathematics there&#8217;s another transform, called Wavelet Transform, that is a lot less well known than the Fourier Transform, but that does much better justice to the logarithmic nature of sound. There&#8217;s a number of explanations about that on the net, but they&#8217;re mostly quite mathematical, and haven&#8217;t found much application outside of science yet. So it seems like we&#8217;re stuck with Fourier for the time being.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vFragosop</title>
		<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/comment-page-1/#comment-5690</link>
		<dc:creator>vFragosop</dc:creator>
		<pubDate>Thu, 26 Feb 2009 00:37:22 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.acidcats.nl/blog/?p=23#comment-5690</guid>
		<description>That&#039;s nice news! Thanks for reply.

One big mistake Adobe made, at least in my opinion, is dividing all the frequencies in 256 equal groups of N frequencies.
Normally, spectrum analyzers grows exponentially the N number of frequencies inside the groups.

0-20, 20-60, 60-100, 100-180, 180-320, 320-640... and so on..

This way, the graph looks more natural, since there&#039;s just a few low frequencies and thousands of high frequencies.</description>
		<content:encoded><![CDATA[<p>That&#8217;s nice news! Thanks for reply.</p>
<p>One big mistake Adobe made, at least in my opinion, is dividing all the frequencies in 256 equal groups of N frequencies.<br />
Normally, spectrum analyzers grows exponentially the N number of frequencies inside the groups.</p>
<p>0-20, 20-60, 60-100, 100-180, 180-320, 320-640&#8230; and so on..</p>
<p>This way, the graph looks more natural, since there&#8217;s just a few low frequencies and thousands of high frequencies.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: stephan</title>
		<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/comment-page-1/#comment-5689</link>
		<dc:creator>stephan</dc:creator>
		<pubDate>Mon, 23 Feb 2009 07:15:58 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.acidcats.nl/blog/?p=23#comment-5689</guid>
		<description>I haven&#039;t been adding much to it lately, but I&#039;ve cleaned up the code, so I can upload the sources. Stay tuned, coming up soon!</description>
		<content:encoded><![CDATA[<p>I haven&#8217;t been adding much to it lately, but I&#8217;ve cleaned up the code, so I can upload the sources. Stay tuned, coming up soon!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: vFragosop</title>
		<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/comment-page-1/#comment-5688</link>
		<dc:creator>vFragosop</dc:creator>
		<pubDate>Mon, 23 Feb 2009 05:15:58 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.acidcats.nl/blog/?p=23#comment-5688</guid>
		<description>Well, it&#039;s just what i&#039;m looking for.
Since computeSpectrum curves aren&#039;t precise, having a decent fft code would be really great.
Hoping you&#039;re still working on that. I could do it for myself, but my math skills are the same as an eight year old boy.
Please, let me know about any progress.</description>
		<content:encoded><![CDATA[<p>Well, it&#8217;s just what i&#8217;m looking for.<br />
Since computeSpectrum curves aren&#8217;t precise, having a decent fft code would be really great.<br />
Hoping you&#8217;re still working on that. I could do it for myself, but my math skills are the same as an eight year old boy.<br />
Please, let me know about any progress.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Shui</title>
		<link>http://stephan.acidcats.nl/blog/2008/12/04/spectral-analysis-with-fast-fourier-transform-in-actionscript/comment-page-1/#comment-5578</link>
		<dc:creator>Shui</dc:creator>
		<pubDate>Wed, 28 Jan 2009 09:57:48 +0000</pubDate>
		<guid isPermaLink="false">http://stephan.acidcats.nl/blog/?p=23#comment-5578</guid>
		<description>This is exactly what I was planning to do.
I&#039;m looking forward to your results.</description>
		<content:encoded><![CDATA[<p>This is exactly what I was planning to do.<br />
I&#8217;m looking forward to your results.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

