75th or 150th harmonics?
A bandlimited squarewave of 8 kHz @ 44.1 kHz samplerate is a sinewave. 3 *
8 kHz is already outside of the bandwidth.
This means that the basic frequency must be pretty low to get a square wave

- Uli

2018-06-13 20:40 GMT+02:00 robert bristow-johnson <r...@audioimagination.com>

> ---------------------------- Original Message ----------------------------
> Subject: Re: [music-dsp] Playing a Square Wave
> From: "Neil Goldman" <neilgoldman...@gmail.com>
> Date: Wed, June 13, 2018 11:16 am
> To: ra...@raito.com
> music-dsp@music.columbia.edu
> --------------------------------------------------------------------------
> >> such a simple wave like the square wave, just two signal levels with a
> >> near instantaneous jump between them
> >
> > I think I disagree with this definition of a square wave. This is what a
> > perfect, ideal one would look like, but even in reality I don't think any
> > system (digital or analog) can exactly produce a perfect square and the
> > infinite bandwidth it takes for the infinite number of harmonics.
> >
> > Even assuming a magically perfect and noiseless analog square wave
> > generator, at the very least your speaker cones can't teleport between
> two
> > positions. And I'm no electrical engineer but the circuitry must also
> have
> > some kind of damping effect on the extreme ranges? I mean even the
> > infinitesimally faint harmonics that will exist in the Mhz range, Ghz
> > range, etc up to infinity.
> >
> > If you remove or dampen any of those higher harmonics, even ones well
> > beyond the range of human hearing, this perfect square shape takes on a
> bit
> > of a ripple shape. At what point is it no longer a "true" square wave?
> >
> > So I would argue that a perfect square wave doesn't exist anywhere except
> > in theory, and it's more useful to define it by its harmonic series. And
> at
> > that point it doesn't look easier or more complex than any other common
> > waveshape.
> Neil here hits it pretty much spot on.  Theo's equipment and Theo's
> hearing does not have infinite bandwidth.  i sorta doubt that he would be
> able to discern the difference between a "perfect" square wave and the same
> waveform passed through a nearly perfect brickwall filter with the upper
> edge at 20 kHz.  they'll sound the same.
> so then the task to generate this square wave digitally is to generate a
> bandlimited representation keeping all of the harmonics up to our limit of
> hearing.  for a square wave at middle C, you need to break it down to
> harmonics (say, using Fourier Series), keep all of the harmonics up to the
> 75th harmonic (about 20 kHz), ditch the rest, and then digitally reproduce
> that waveform.
> there is BLIT (or integrating a BLIT to get a square wave), but those
> BLITs are stored in some kinda wavetable, and i don't see why not just
> represent the bandlimited waveform itself in a wavetable.
> so using an FFT of a large size.  let's say N=64K points.  in that 64K
> buffer, draw out a single cycle of the analog waveform you seek; square,
> saw, triangle, PWM, sync-saw, sync-square, or even a single cycle of a
> recorded waveform.
> FFT the bastard.  bin 0 will have DC.  bin 1 and bin N-1 will have the
> amplitude and phase of the 1st harmonic.  bins 2 and N-2 have the 2nd
> harmonic (the evens should be zero for a square wave), etc.
> then for middle C, go up to the 76th bin and zero all of them up to the
> (N-76)th bin.  that will bandlimit your waveform.
> then inverse FFT the thing.
> the waveform you have left in 64K points is a bandlimited square wave that
> will sound just fine for around middle C.  you can reduce the size of that
> waveform by decimating (or down-sampling) down to about a 256-point
> waveform for storage.  but for wavetable synth playback, you really want
> that waveform represented with more points than 256.  i would recommend
> 2048 or 4096 points.
> then you have to do this again for square waves at other pitches.  say one
> octave lower, then you need to keep 150 harmonics.  or an octave higher
> than middle C, you need to bandlimit it to 37 harmonics.
> then, in keeping with wavetable synthesis, you keep all of these
> bandlimited square waves (say 2048 points per waveform) in memory and you
> mix them proportionately as the note goes up and down the keyboard.  i
> think that two waveforms per octave is generally good enough.  but maybe
> you want 3 or 4.
> so BLIT, wavetable, or some other mathematical algorithm to generate a
> bandlimited square on the fly (i did something like that for Kurzweil, but
> i ain't saying what it was, and i don't recommend it anyway).  that's how
> you do these things.
> --
> r b-j                         r...@audioimagination.com
> "Imagination is more important than knowledge."
> _______________________________________________
> dupswapdrop: music-dsp mailing list
> music-dsp@music.columbia.edu
> https://lists.columbia.edu/mailman/listinfo/music-dsp
dupswapdrop: music-dsp mailing list

Reply via email to