---------------------------- Original Message ----------------------------

Subject: Re: [music-dsp] Playing a Square Wave

From: "Uli Brueggemann" <uli.brueggem...@gmail.com>

Date: Wed, June 13, 2018 4:57 pm

To: "robert bristow-johnson" <r...@audioimagination.com>

"A discussion list for music-related DSP" <music-dsp@music.columbia.edu>


> 75th or 150th harmonics?

i said for middle C (261 Hz) for the 75th harmonic.� and an octave below (131 
Hz) for 150 harmonics.
didn't say that nor mean that for an 8 kHz note.� (that's barely on the MIDI 
spectrum and is way above the top note of an 88-key piano.)

> 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

> shape.
yes.� the whole idea of using wavetable synthesis to do "classic" waveforms (or 
any other waveforms, including those extracted from "real" acoustic 
instruments) is to have different wavetables for different ranges (or "splits") 
of the
keyboard.� but, unlike a discrete split, you would be mixing synchronous 
wavetables in the region of the note played.� with Fs = 48 kHz and a top limit 
of 19 kHz, one can show that two wavetables per octave is good enough.� but 
there's nothing magic about 2 per octave.� you could
have another split every 5 semitones, if you want.
r b-j


> 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

Reply via email to