W3C home > Mailing lists > Public > public-audio@w3.org > July to September 2012

Re: Wavetable example?

From: Marcus Geelnard <mage@opera.com>
Date: Mon, 23 Jul 2012 09:34:01 +0200
To: "Peter van der Noord" <peterdunord@gmail.com>, "Ray Bellis" <ray@bellis.me.uk>
Cc: public-audio@w3.org
Message-ID: <op.whv1yzh4m77heq@mage-desktop>
Den 2012-07-22 20:17:06 skrev Ray Bellis <ray@bellis.me.uk>:

> On 22/07/2012 13:58, Peter van der Noord wrote:
>> Hmmm, my math knowledge isnt of the level that i have an immediate idea
>> about how that would work :)
>
> OK, here's a more concrete example.
>
> A square wave is defined as a series of the *odd* harmonics where the  
> contribution of each harmonic is inversely proportional to its harmonic  
> number.
>
> So the second, fourth, etc harmonics are all *zero*.
>
> The third harmonic is 1/3 the amplitude of the fundamental, and the  
> fifth is 1/5, etc.
>
> See http://en.wikipedia.org/wiki/Square_wave
>
> So the input "cos" table would just look like:
>
> [ 0, 1, 0, 1/3, 0, 1/5, 0, 1/7, 0, 1/9, ... ]
>
> The sin table for a square wave doesn't need any values because the  
> harmonics are all in phase.  So just use all zeroes.
>

That's right. Another way of thinking of it is that the WaveTable is  
essentially the Fourier transform of a time domain periodic signal. So, if  
you have a single period of a time domain signal that you want to use as a  
WaveTable, take the FFT of that signal and use the real portion as the cos  
table, and the imaginary portion as the sin table (haven't tried it, but  
it should work).

/Marcus

-- 
Marcus Geelnard
Core Graphics Developer
Opera Software ASA
Received on Monday, 23 July 2012 07:35:10 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 23 July 2012 07:35:11 GMT