* Grant Edwards:
On 2010-01-14, Alf P. Steinbach <al...@start.no> wrote:

It's not clear to me that you can approximate any waveform
with a suitable combination of square waves,
Oh. It's simple to prove. At least conceptually! :-)

[...]

With the goal of just a rough approximation you can go about
it like this:

   1. Divide a full cycle of the sine wave into n intervals.
      With sine wave frequency f this corresponds to n*f
      sample rate for digital representation.

   2. Each interval will be approximated by a rectangular bar
      extending up to or down to the sine wave. As it happens
      this (the bar's height) is the sample value in a digital
      representation.

   3. In the first half of the cycle, for each bar create that
      bar as a square wave of frequency f, amplitude half the
      bar's height, and phase starting at the bar's left, plus
      same square wave with negative sign (inverted amplitude)
      and phase starting at the bar's right. And voil?, not
      only this bar generated but also the corresponding
      other-way bar in second half of cycle.

   4. Sum all the square waves from step 3.

   5. Let n go to infinity for utter perfectness! :-)

And likewise for any other waveform.

After all, it's the basis of digital representation of sound!

Huh?  I've only studied basic DSP, but I've never heard/seen
that as the basis of digital represention of sound.

Oh, you have... The end result above (for finite n) is a sequence of sample values of a sine wave. Ordinary digital representation of sound is exactly the same, a sequence of sample values.


I've also never seen that representation used anywhere.

Yes, you have. A sequence of sample values is the representation used in any direct wave file. Like [.wav] and, I believe, [.aiff].


 Can you provide any references?

I don't have any references for the above procedure, it's sort of trivial. Probably could find some references with an hour of googling. But no point.


Cheers & hth.,

- Alf


PS: To extend the above to a non-symmetric waveform, just first decompose that waveform into sine waves (Fourier transform), then add up the square wave representations of each sine wave. :-)
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to