Discussion:
[music-dsp] Playing a Square Wave
Theo Verelst
2018-06-13 10:59:37 UTC
Permalink
There's this preoccupation I have since the advent of going "digital", let's say since I
heard music being played on CD in the early 80s. I grew up with access to electronics
equipment that would generate "square waves" in some sorts of analogue fashion, including
originally "digital" chips, even driven from frequency stable crystals and so on. In fact
I built my own organ/synthesizer based on a top octave synthesizer chip around 1980 which
I gave CMOS divider chips to get well symmetrical, pure and pretty undistorted square
waves to a analog mixing rail construction, and I must say (I was a teenager) I recall the
different sounds. the feel if you like, of all those different square waves by themselves
and some the filter and modulation constructs I made quite well.

Now, like everybody else, I'm used to listening to a lot of audio in some form of digital
source format, ending up at one of the varying types of Digital to Analog Converters, to
enjoy digital music on for instance a smart phone, a HDMI based digital stream converted
by a TV/Monitor, a very high quality DIY kit based converter setup, standard computer and
bluray player outputs (both not bad) and known brand studio quality USB ADC/DAC units
(Lexicon, Yamaha, and a Burr Brown/TI chip based DIY kit) and finally from some variety of
digital music synthesizers (a.o. a Kurzweil and a Yamaha).

The simple question that forced itself on me often, as I"m sure some can relate, after
having been used to all those early signal sources including a host of analog synthesizers
I had in the past, and a lot of music in various analog forms from standard pop to G. Duke
and Rose Royce to mention a few of my favorites from an earlier era, is how can it be that
such a simple wave like the square wave, just two signal levels with a near instantaneous
jump between them, can be so hard to make digital, if you listen with a HiFi system and
some normal musical signal discernment ?

The answer is relatively simple: a digital square wave for musical application comes out
of all current standard DACs with imperfections that I recognize and have an immediate
form of musical dislike about. Not that a software synth can't be put on, played and
create some fun with square waves, I'm sure it can to some degree be fun and played with
in some music, but for sound enthusiasts, all that digital signal processing does come
across as often the same sounding and not as musical as I remember it can be by far.

Is it possible to do something about that? I'm an univ. EE so im y official background
knowledge, there's enough to understand some of the reasons for these sound limitations
easily. Solving all of them will prove to be very hard, given standard DSP and normal
current DACs, so there is that. To begin with the understanding *why* such a simple
"digital" square wave doesn't sound warm and nicely flutey from a digital system in many
cases: the wave as to be "rounded" to fit in the sample timing, and the DAC essentially
doesn't necessarily "know" how to create those up and down signal edges with accurate
timing. So for instance 1 standard 1kHz square wave coming out of a CD-rate (44.1e3
samples per second) DAC will have maximum up and down square wave edge timing errors in
the order of 1000/44100 * 100% ~= a few percent timing errors. Doesn't sound like much,
but all the harmonics might be involved, and for a High Fidelity system, and error of 1/10
of a percent nowadays just like in the early days of tube HiFi is considered quite
noticeable or even unacceptable.

Can a DAC do a better job ? Yes, but not by just feeding it a pure square wave, rounded to
the samples. One could make use of serious oversampling, and a much higher rate DAC, for
instance I've tested a very high quality DAC with adjustable type of built in
"oversampling" filter (low pass or short, hard window reconstruction) at almost 10 times
CD rate (384k s/s),and surely this makes the sound more acceptable. The monitoring and
pre-amplification as well as the analogue (electronics based) DAC filtering will matter
for the sound, too.

Now recently I've worked on quite a different type of problem, not important for this
sharing at the moment, which as one of it's (complicated) side effects can produce
components to a digital signal that try to use the (limited) DAC filtering, usually some
internal up-sampling ("oversampling") with either a built in DSP FIR (some short impulse
with at least some low-pass qualities) or IIR (some standard low pass response) to create
a purer sounding square wave approximation from a frequency limited digital wave source.

Anyone else worked on this to some extend ?

T.V.
STEFFAN DIEDRICHSEN
2018-06-13 11:14:25 UTC
Permalink
How about square waves made from BLITs? That’s a standard approach. To hear the difference, try the test oscillator in Logic Pro. It has an anti-alias option to switch between a naive square / pulse wave, which is useful in some cases, since it has only 2 values, and a BLIT version, which sounds nice at every frequency.

Steffan
Post by Theo Verelst
Anyone else worked on this to some extend ?
p***@synth.net
2018-06-13 12:35:27 UTC
Permalink
Comments in line.
Post by Theo Verelst
There's this preoccupation I have since the advent of going "digital",
let's say since I heard music being played on CD in the early 80s. I
grew up with access to electronics equipment that would generate
"square waves" in some sorts of analogue fashion, including originally
"digital" chips, even driven from frequency stable crystals and so on.
Correct, though most analogue synthesisers generate a sawtooth or a
triangle and then use a comparator to turn that into a square wave.
So, square isn't the only waveform.
Post by Theo Verelst
In fact I built my own organ/synthesizer based on a top octave
synthesizer chip around 1980 which I gave CMOS divider chips to get
well symmetrical, pure and pretty undistorted square waves to a analog
mixing rail construction, and I must say (I was a teenager) I recall
the different sounds. the feel if you like, of all those different
square waves by themselves and some the filter and modulation
constructs I made quite well.
The other REALLY important thing to mention is that you can pretty much
guarantee that not all 12 waves were perfectly in tune relative to each
other.
This subtle detuning, or beating, makes a huge difference to the feel of
"analogue" Vs Digital, but it can be replicated
Post by Theo Verelst
Now, like everybody else, I'm used to listening to a lot of audio in
some form of digital source format, ending up at one of the varying
types of Digital to Analog Converters, to enjoy digital music on for
instance a smart phone, a HDMI based digital stream converted by a
TV/Monitor, a very high quality DIY kit based converter setup,
standard computer and bluray player outputs (both not bad) and known
brand studio quality USB ADC/DAC units (Lexicon, Yamaha, and a Burr
Brown/TI chip based DIY kit) and finally from some variety of digital
music synthesizers (a.o. a Kurzweil and a Yamaha).
Though, remember these are mass market products, they will use the
appropriate part for a given price point.
Now, if you want a GORGEOUS sounding DAC, go play with a synclavier.
These are discrete DACs and sound like NOTHING I've ever heard before..
just utterly amazing.
Post by Theo Verelst
The simple question that forced itself on me often, as I"m sure some
can relate, after having been used to all those early signal sources
including a host of analog synthesizers I had in the past, and a lot
of music in various analog forms from standard pop to G. Duke and Rose
Royce to mention a few of my favorites from an earlier era, is how can
it be that such a simple wave like the square wave, just two signal
levels with a near instantaneous jump between them, can be so hard to
make digital, if you listen with a HiFi system and some normal musical
signal discernment ?
because, what digital gives you is a "perfect" result, Analogue can
never do that, even the slopes will be slightly shaped and there will be
frequency drift and RARELY would the squarewave be precisely 50/50 duty
cycle.
Post by Theo Verelst
The answer is relatively simple: a digital square wave for musical
application comes out of all current standard DACs with imperfections
that I recognize and have an immediate form of musical dislike about.
I think it's the wrong way round, they have the perfections you don't
like :)
Post by Theo Verelst
Not that a software synth can't be put on, played and create some fun
with square waves, I'm sure it can to some degree be fun and played
with in some music, but for sound enthusiasts, all that digital signal
processing does come across as often the same sounding and not as
musical as I remember it can be by far.
Again, remember there is more than just a square wave to play with.
Post by Theo Verelst
Is it possible to do something about that? I'm an univ. EE so im y
official background knowledge, there's enough to understand some of
the reasons for these sound limitations easily. Solving all of them
will prove to be very hard, given standard DSP and normal current
DACs, so there is that. To begin with the understanding *why* such a
simple "digital" square wave doesn't sound warm and nicely flutey from
a digital system in many cases: the wave as to be "rounded" to fit in
the sample timing, and the DAC essentially doesn't necessarily "know"
how to create those up and down signal edges with accurate timing.
actually, a lot of good "analogue synth" flute sounds were based on a
tirangle wave, rather than a square.
Post by Theo Verelst
Can a DAC do a better job ? Yes, but not by just feeding it a pure
square wave, rounded to the samples. One could make use of serious
oversampling, and a much higher rate DAC, for instance I've tested a
very high quality DAC with adjustable type of built in "oversampling"
filter (low pass or short, hard window reconstruction) at almost 10
times CD rate (384k s/s),and surely this makes the sound more
acceptable. The monitoring and pre-amplification as well as the
analogue (electronics based) DAC filtering will matter for the sound,
too.
This is what I mean, you're creating imperfections from a perfect
source.
Post by Theo Verelst
Now recently I've worked on quite a different type of problem, not
important for this sharing at the moment, which as one of it's
(complicated) side effects can produce components to a digital signal
that try to use the (limited) DAC filtering, usually some internal
up-sampling ("oversampling") with either a built in DSP FIR (some
short impulse with at least some low-pass qualities) or IIR (some
standard low pass response) to create a purer sounding square wave
approximation from a frequency limited digital wave source.
Anyone else worked on this to some extend ?
I would suggest considering variable sample rate playback systems rather
than fixed rate playback.
I also think there's a lot more looking at examples of the signals you
like that needs to be done, i.e. measuring drift, duty cycle, etc.

Paula
Niels Dettenbach
2018-06-13 13:01:11 UTC
Permalink
Post by Theo Verelst
Is it possible to do something about that? I'm an univ. EE so im y
official background knowledge, there's enough to understand some of
the reasons for these sound limitations easily. Solving all of them
will prove to be very hard, given standard DSP and normal current
DACs, so there is that. To begin with the understanding *why* such a
simple "digital" square wave doesn't sound warm and nicely flutey from
a digital system in many cases: the wave as to be "rounded" to fit in
the sample timing, and the DAC essentially doesn't necessarily "know"
how to create those up and down signal edges with accurate timing.
I recommend to take a look at oscilloscope / - graph images from "square"
waves out of different types of sources -i.e. digital and analog (synths and
other generator types/sources).

By theory, any square wave could be constructed by a infinite number of
(sinus) signals, while many of that images seems like produced from a finite
number of such "signal parts". this means - if i think correctly - a really
perfect square would have "infinite energy" required (pls correct me, if i'm
wrong here).

A lot of the "subtile timbre" of a synths square wave could be "found" in the
(by tech limits / physics always a bit imperfect) "edges" of the squares. i
assume if you want to reproduce such "analogish" square in digital, the
resulution of the sampling and reproduction at this stage should be
important.

sorry for possible tech imperfections -my view onto this is more one from a
synth user then a DSP specialist.


just my .02


niels.
--
---
Niels Dettenbach
((db))
dettenbach audio
http://dettenbach.com
PGP: https://syndicat.com/pub_key.asc
---
Sound of L.A. Music and Audio
2018-06-14 14:24:27 UTC
Permalink
Post by Niels Dettenbach
By theory, any square wave could be constructed by a infinite number of
(sinus) signals, while many of that images seems like produced from a finite
number of such "signal parts". this means - if i think correctly - a really
perfect square would have "infinite energy" required (pls correct me, if i'm
wrong here).
To get a good sqare, it is nearly impossible to get this by sinus
overlay, since this does not converge well enough. You might get an
impression here, where I show some additive synthesis:

But:

regarding the ear and hearing up to only 20kHz it is very well possible
to synthesize a "sqare like" sound with only harmonics up to 20kHz. This
works even better, since the filters in our system to not have to be
neutral against the very high frequencies coming with a digital square
wave.

so, what we hear when using real squares from a digital pin is mainly
the summed up artifacts caused by the filters, the transmission and
finally the loudspeakers.

What we also have to take into account when comparing waves:

Somtimes we can hear even ultrasonic waves, since they do have an impact
on the membrane and littel bones in our ear. it is a kind of masking at
high levels, so the sound impression is sightly different with / without
utrasonic waves.

So in theory it should be right to generally provide frequencies of the
real live up to 50kHz and above when replaying sound, but practically
this required other hardware to do so.

I always recommend to limit the specttru down to 16-18kHz.

On the other hand: Feed hard squares into the filters might be used in
sound synthesis for intended effects:

As you pointed out, more harmonics mean "more energy" and the non
linearity and imperfectnes of all filters and systems will definitly
cause impact on the final sound - also in der audible region.

Jürgen
Sound of L.A. Music and Audio
2018-06-14 14:56:06 UTC
Permalink
Hi Paula and all
Post by p***@synth.net
Though, remember these are mass market products, they will use the
appropriate part for a given price point.
Right, wherey according to my exoeriences, the exisiting DACs Chips of
the higher price reagion we have nowadays really do a very good job
since the make use of dithering, oversamping and pre distortion to drive
the analog AA filters perfectly. Also the chip technology progressed
that way, that it is possible to integrate perfectly working analog 7
pol elyptic filters into the chips leading to an incredible precision.

So it is more a question to get this out into the PCB. EMI, shielding
and analog signal treatment is more important. If people e.g. are using
unbalanced analog out with chinch and such, you can forget this.

But again: This only speaks for the audible spectrum where these chips
are designed for.
Post by p***@synth.net
Now, if you want a GORGEOUS sounding DAC, go play with a synclavier.
These are discrete DACs and sound like NOTHING I've ever heard before..
just utterly amazing.
Regarding the different approaches of DACs trying to overcome
Delta-Sigma-DACs I mostly observed an increased brilliance caused by
exactely this unintend harmonics we have, when not performing filtering
correctly. We did a lot of research on DACs in our ultrasonic projects
and usually THIS is the big difference, and as stated above, the
specific way the in audible alias harmonics trigger the subsequent
analog elektronic and mechanic makes the sound. And there is much room
for "design" and optimization.

I very well admit and expect that people have designed nice sounding
equipment, but this is nothing else then sound design having not much to
do with authentic wave replaying what we need in recording cases. And
again: The particular loudspeaker has a strong impact, when it's
internal filters are fed with harmonics >20kHz. The parts rejected at an
inductance will cause a ping pong reflection pattern showin up elsewhre
and that part passed through will cause audible harmonics at all non
linear components. Then we have saturation effects and partital movement
of the loudspeaker membrane. Beeing involved in a project to reduce
these artifacts be actively controlling the membrane, I observed that
all sound of music became less harsch, up to "boring". Brilliance was lost!

So maybe an synth-DAC might be differently designed, than a HIFI-DAC
possibly, such es a techno loudspeaker ist different from those for
acoustical music.

Anyway: I had a look at the mentioned synclavier: It seems to have used
a higher sample rate of 100kHz. This makes sense, when using only 16 bit
and trying to modulate the waves like required in a synth. The higher
the incoming material, the less artifacts you will get because of the
resampling which is required when interplating the waves and moving the
to another pitch. So this is clear to me that this instrument ust have
had a better smoothed sound with eg vibrato and such..


Jürgen
Sound of L.A. Music and Audio
2018-06-13 13:38:02 UTC
Permalink
Hello Theo

same as me :-) I played electronic organ sind 1982 and quicky started to
modify it with own electronics. Later, I started with GALs and PLDs to
create an own organ. The first concept was like this:

http://96khz.org/htm/pldmodularorgan.htm

A coarse DDS created from a digitally devided oscillator and then
filtered the analog way (light blue box lower left corner)

Later I used 12 optimized OSC crystals to create the required 11
fundamental frequencies and thus shunning the DDS issues caused by
"gaps" and "hops" in the table / synth maths.

When then coming to FPGAs, I thought of a method to tune these
frequencies in one chip and came to this solution:

http://96khz.org/oldpages/frequencyshifter.htm

It is possible to tune frequencies down to some 0,001% of an incoming
frequency. With that concept it is possible to get all freqs out of one
chip and one oszillator only and make use of FPGAs with less than 11
clock capable inputs.

What I would suggest with todays electronics (and if there is enough
time any money :-) ):

Use 11 Crystals/PLL and an FPGA to create a very high resolution vector
for DDS and drive 11 wave tables from Block-RAMs. Then you get all notes
perfectly trimmed without DDS issues. This is they way were are doing in
an audio meassurement system.

The other way is extremely high sample frequency and very large RAMs
using common DDS. This also makes it possible to perform vibrato without
issues.

Regarding the perfect square:

With common DACs this is hardly possible, since they all use dithering
and filtering as well as band width limiting on order not to generate
ultra sonic frequencies and alias as you decribed. With industrial squre
waves, We do not use DACs at all. Instead there is high frequency design
and rapid gating with GAS-Transistors to e.g. produce GHz-pulses from
FPGAs and tune them in the range of some 50ps in phase. For one of my
customers I built a system with a double DDS tuneably in MHz-region and
beeing able to trim the wave at 20ps only.

Coming back to audio:

From my point of view, this is finally a matter of the edge frequency:
In my 768kHz systems driving a PDM->Analog Filter, it is no problem to
generate a pulse with harmonics up to 50...100 khz having an edge
frequency in that region for the analog filter. Therewith there should
be no audible difference anymore between this and a perfect squre. This
wals also prooved by some tests we did in the field of medical ultra
sonic wave generation and processing. But keep in mind, we need special
"loud speakers" for this to produce these waves in real air :-)
And, starting from 10kHz, the distance to your speaker becomes relevant.
There is a significant samping caused by the air. Frequencies in the
range of 50kHz are significantly reduced in a larger distance, so you
need a kind of emphasis possibly.

Regarding the methods of filtering:

FIR can and cannot be a good choice to prepare the signals for DACs
because of pre-ringing. This all depends on the analog filter design and
the response. The best perfect pulse in theory can be obtained by
sending the response of a DIRAC, namly the standard filter coefficiants
of a low pass filter into such a low pass filter with an edge frequency
meeting that of the FIR coefficient. This is the best trade off between
steepness and overshot.

Jürgen
Post by Theo Verelst
There's this preoccupation I have since the advent of going "digital",
let's say since I heard music being played on CD in the early 80s.
r***@raito.com
2018-06-13 14:50:59 UTC
Permalink
Theo,

My tl;dr answer to your question is it's difficult because even if it's
digital, it's not digital. Ever. It's always analog.

Like you, I'm a university EE (and Comp. Sci.) because I wanted to go into
chip design. This was back in the early 80's. So maybe my classwork was
different than yours. It was always amusing to deal with my computer
science classmates when something that dealt with the inherent analogness
of even digital logic came up.

In the late 70's, when I was in high school, I also tried to build an
organ. But back then, I had few resources, monetary or otherwise. I didn't
know about top octave chips or anything. So what I used were TTL inverter
circuits to make square wave oscillators, and fed those into J/K
flip-flops for dividers (a bit overkill, that). I also used some other TTL
logic to take those square waves and make some very steppy sawtooth waves
(which I then filtered to make them smoother.)

Currently, I emulate one of those old MOSTEK chips + dividers on an FPGA.
I'm not using much of the FPGA, but since I need oodles of output pins, I
have to use something fairly stout. No DACs necessary. I may try a version
sometime that mixes the signals internally to a single bus, then use a DAC
on that, but I fear I won't get it to sound as nice.

Neil Gilmore
Post by Theo Verelst
There's this preoccupation I have since the advent of going "digital", let's say since I
heard music being played on CD in the early 80s. I grew up with access to electronics
equipment that would generate "square waves" in some sorts of analogue fashion, including
originally "digital" chips, even driven from frequency stable crystals and so on. In fact
I built my own organ/synthesizer based on a top octave synthesizer chip around 1980 which
I gave CMOS divider chips to get well symmetrical, pure and pretty undistorted square
waves to a analog mixing rail construction, and I must say (I was a teenager) I recall the
different sounds. the feel if you like, of all those different square waves by themselves
and some the filter and modulation constructs I made quite well.
Now, like everybody else, I'm used to listening to a lot of audio in some form of digital
source format, ending up at one of the varying types of Digital to Analog Converters, to
enjoy digital music on for instance a smart phone, a HDMI based digital stream converted
by a TV/Monitor, a very high quality DIY kit based converter setup, standard computer and
bluray player outputs (both not bad) and known brand studio quality USB ADC/DAC units
(Lexicon, Yamaha, and a Burr Brown/TI chip based DIY kit) and finally from some variety of
digital music synthesizers (a.o. a Kurzweil and a Yamaha).
The simple question that forced itself on me often, as I"m sure some can relate, after
having been used to all those early signal sources including a host of analog synthesizers
I had in the past, and a lot of music in various analog forms from standard pop to G. Duke
and Rose Royce to mention a few of my favorites from an earlier era, is how can it be that
such a simple wave like the square wave, just two signal levels with a near instantaneous
jump between them, can be so hard to make digital, if you listen with a HiFi system and
some normal musical signal discernment ?
The answer is relatively simple: a digital square wave for musical application comes out
of all current standard DACs with imperfections that I recognize and have an immediate
form of musical dislike about. Not that a software synth can't be put on, played and
create some fun with square waves, I'm sure it can to some degree be fun and played with
in some music, but for sound enthusiasts, all that digital signal processing does come
across as often the same sounding and not as musical as I remember it can be by far.
Is it possible to do something about that? I'm an univ. EE so im y official background
knowledge, there's enough to understand some of the reasons for these sound limitations
easily. Solving all of them will prove to be very hard, given standard DSP and normal
current DACs, so there is that. To begin with the understanding *why* such a simple
"digital" square wave doesn't sound warm and nicely flutey from a digital system in many
cases: the wave as to be "rounded" to fit in the sample timing, and the DAC essentially
doesn't necessarily "know" how to create those up and down signal edges with accurate
timing. So for instance 1 standard 1kHz square wave coming out of a CD-rate (44.1e3
samples per second) DAC will have maximum up and down square wave edge timing errors in
the order of 1000/44100 * 100% ~= a few percent timing errors. Doesn't sound like much,
but all the harmonics might be involved, and for a High Fidelity system, and error of 1/10
of a percent nowadays just like in the early days of tube HiFi is considered quite
noticeable or even unacceptable.
Can a DAC do a better job ? Yes, but not by just feeding it a pure square wave, rounded to
the samples. One could make use of serious oversampling, and a much higher rate DAC, for
instance I've tested a very high quality DAC with adjustable type of built in
"oversampling" filter (low pass or short, hard window reconstruction) at almost 10 times
CD rate (384k s/s),and surely this makes the sound more acceptable. The monitoring and
pre-amplification as well as the analogue (electronics based) DAC filtering will matter
for the sound, too.
Now recently I've worked on quite a different type of problem, not important for this
sharing at the moment, which as one of it's (complicated) side effects can produce
components to a digital signal that try to use the (limited) DAC filtering, usually some
internal up-sampling ("oversampling") with either a built in DSP FIR (some short impulse
with at least some low-pass qualities) or IIR (some standard low pass response) to create
a purer sounding square wave approximation from a frequency limited digital wave source.
Anyone else worked on this to some extend ?
T.V.
_______________________________________________
dupswapdrop: music-dsp mailing list
https://lists.columbia.edu/mailman/listinfo/music-dsp
Neil Goldman
2018-06-13 15:16:57 UTC
Permalink
Post by Theo Verelst
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.

I also don't know the answer but agree with the guess that it's probably
analog imperfections that make it sound good, rather than analog perfection.

Cheers,
Neil
Post by Theo Verelst
Theo,
My tl;dr answer to your question is it's difficult because even if it's
digital, it's not digital. Ever. It's always analog.
Like you, I'm a university EE (and Comp. Sci.) because I wanted to go into
chip design. This was back in the early 80's. So maybe my classwork was
different than yours. It was always amusing to deal with my computer
science classmates when something that dealt with the inherent analogness
of even digital logic came up.
In the late 70's, when I was in high school, I also tried to build an
organ. But back then, I had few resources, monetary or otherwise. I didn't
know about top octave chips or anything. So what I used were TTL inverter
circuits to make square wave oscillators, and fed those into J/K
flip-flops for dividers (a bit overkill, that). I also used some other TTL
logic to take those square waves and make some very steppy sawtooth waves
(which I then filtered to make them smoother.)
Currently, I emulate one of those old MOSTEK chips + dividers on an FPGA.
I'm not using much of the FPGA, but since I need oodles of output pins, I
have to use something fairly stout. No DACs necessary. I may try a version
sometime that mixes the signals internally to a single bus, then use a DAC
on that, but I fear I won't get it to sound as nice.
Neil Gilmore
Post by Theo Verelst
There's this preoccupation I have since the advent of going "digital",
let's say since I
heard music being played on CD in the early 80s. I grew up with access to electronics
equipment that would generate "square waves" in some sorts of analogue
fashion, including
originally "digital" chips, even driven from frequency stable crystals
and
Post by Theo Verelst
so on. In fact
I built my own organ/synthesizer based on a top octave synthesizer chip
around 1980 which
I gave CMOS divider chips to get well symmetrical, pure and pretty undistorted square
waves to a analog mixing rail construction, and I must say (I was a
teenager) I recall the
different sounds. the feel if you like, of all those different square
waves by themselves
and some the filter and modulation constructs I made quite well.
Now, like everybody else, I'm used to listening to a lot of audio in some
form of digital
source format, ending up at one of the varying types of Digital to Analog
Converters, to
enjoy digital music on for instance a smart phone, a HDMI based digital
stream converted
by a TV/Monitor, a very high quality DIY kit based converter setup,
standard computer and
bluray player outputs (both not bad) and known brand studio quality USB ADC/DAC units
(Lexicon, Yamaha, and a Burr Brown/TI chip based DIY kit) and finally
from
Post by Theo Verelst
some variety of
digital music synthesizers (a.o. a Kurzweil and a Yamaha).
The simple question that forced itself on me often, as I"m sure some can relate, after
having been used to all those early signal sources including a host of
analog synthesizers
I had in the past, and a lot of music in various analog forms from
standard pop to G. Duke
and Rose Royce to mention a few of my favorites from an earlier era, is
how can it be that
such a simple wave like the square wave, just two signal levels with a
near instantaneous
jump between them, can be so hard to make digital, if you listen with a HiFi system and
some normal musical signal discernment ?
The answer is relatively simple: a digital square wave for musical
application comes out
of all current standard DACs with imperfections that I recognize and have an immediate
form of musical dislike about. Not that a software synth can't be put on, played and
create some fun with square waves, I'm sure it can to some degree be fun
and played with
in some music, but for sound enthusiasts, all that digital signal processing does come
across as often the same sounding and not as musical as I remember it can be by far.
Is it possible to do something about that? I'm an univ. EE so im y official background
knowledge, there's enough to understand some of the reasons for these sound limitations
easily. Solving all of them will prove to be very hard, given standard
DSP
Post by Theo Verelst
and normal
current DACs, so there is that. To begin with the understanding *why*
such
Post by Theo Verelst
a simple
"digital" square wave doesn't sound warm and nicely flutey from a digital
system in many
cases: the wave as to be "rounded" to fit in the sample timing, and the DAC essentially
doesn't necessarily "know" how to create those up and down signal edges with accurate
timing. So for instance 1 standard 1kHz square wave coming out of a CD-rate (44.1e3
samples per second) DAC will have maximum up and down square wave edge timing errors in
the order of 1000/44100 * 100% ~= a few percent timing errors. Doesn't sound like much,
but all the harmonics might be involved, and for a High Fidelity system,
and error of 1/10
of a percent nowadays just like in the early days of tube HiFi is considered quite
noticeable or even unacceptable.
Can a DAC do a better job ? Yes, but not by just feeding it a pure square
wave, rounded to
the samples. One could make use of serious oversampling, and a much
higher
Post by Theo Verelst
rate DAC, for
instance I've tested a very high quality DAC with adjustable type of
built
Post by Theo Verelst
in
"oversampling" filter (low pass or short, hard window reconstruction) at
almost 10 times
CD rate (384k s/s),and surely this makes the sound more acceptable. The monitoring and
pre-amplification as well as the analogue (electronics based) DAC filtering will matter
for the sound, too.
Now recently I've worked on quite a different type of problem, not important for this
sharing at the moment, which as one of it's (complicated) side effects
can
Post by Theo Verelst
produce
components to a digital signal that try to use the (limited) DAC
filtering, usually some
internal up-sampling ("oversampling") with either a built in DSP FIR
(some short impulse
with at least some low-pass qualities) or IIR (some standard low pass
response) to create
a purer sounding square wave approximation from a frequency limited
digital wave source.
Anyone else worked on this to some extend ?
T.V.
_______________________________________________
dupswapdrop: music-dsp mailing list
https://lists.columbia.edu/mailman/listinfo/music-dsp
_______________________________________________
dupswapdrop: music-dsp mailing list
https://lists.columbia.edu/mailman/listinfo/music-dsp
Theo Verelst
2018-06-13 16:06:15 UTC
Permalink
Post by Theo Verelst
Post by Theo Verelst
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....
Even assuming a magically perfect and noiseless analog square wave generator, at the very
least your speaker cones can't teleport between two positions.
Sure, there's a lot of stuff not just happening with speakers, but with acoustics of
any kind as well, always very audible.

For me when I started building musical circuits of the kinds I described, in high school,
there were perfect enough squares available: electronics "function generators" would offer
near perfect square waves with rise times orders of magnitude faster than an audio circuit
would normally require, and crystal oscillators would keep jitter pretty low for
creating square tones.

It's true the imperfections I mean are the "digitally created" ones, which includes the
exact filtering in the DAC, the linearity of it, which filter components have been (and
not been) used like for DC coupling and analogue (mean IIR automatically) anti-aliasing
filtering. The converter chip I use often at the moment (a PCM5102A DAC with up to 50MHz
very low jitter and ground separated clock) is analog filtered with a single high quality
component analog filter, DC coupled with a very high quality OPA627 OpAmp, with no
subsequent electrolytic capacitors in the signal path. On my big monitoring or studio
headphones it should be able to be very accurate.

It's hard to explain, but it's possible to take the given filtering inside a DAC (to begin
with the standard "oversampling" digital one) and try to invert it to the extend that the
streaming filter inversion allows you to control the signal at oversampling clock speed to
some level of accuracy. This might cost headroom: some inversions might take a lot of
amplitude which is lost in the out coming signal, but nevertheless there are a few ways to
try to do this.

So taking a square wave with a given limitation of zero harmonics above a certain
frequency (like can be created with additive synthesis) approximating the "perfect
reconstruction" at the output of the DAC oversampling filter output is a real possibility.
Unfortunately inversion of such a FIR or IIR filter with near bit-accuracy
at the streaming signal output might not be easy, is hard to verify (unless you have
and accurate model of the filter) and requires also a signal example (the required output)
which is up sampled or otherwise known to or at the over sample frequency.

Now if you've got that, for the DAC being used, you could indeed worry about if the "all
harmonics up to Niquist" is perfect and good sounding. And certainly: do I want to
include some sort of analogue filter simulation in the signal path for better sound, etc.

I've got a (very complicated) setup that certainly will work with pre-inversions of DAC
reconstruction/anti-alias/oversampling filtering, which IMO is absolutely necessary to
get the quality I want, but mainly the kind of processing prepares signals to sound
alright in *any* normal, small or big, damped or reverberating, acoustic space. And I
found a lot of high quality recorded (commercial) music contains preparations for that
principle of letting acoustics not get in the way of music enjoyment. Probably a domain
Lexicon has been one of the main players in, and indeed my Lexicon digital reverberation
unit almost cries and sings when these "signal preparations" start to sound good.

I'm sure a lot of modern speakers are very prepared for use with digital signals, and
often, I wish they would be more neutral and the reconstruction filters in DAC better.

TV
Ethan Duni
2018-06-13 21:53:12 UTC
Permalink
Post by Theo Verelst
The simple question that forced itself on me often, as I"m sure some can
relate,
Post by Theo Verelst
after having been used to all those early signal sources including a host
of analog
Post by Theo Verelst
synthesizers I had in the past, and a lot of music in various analog forms
from standard
Post by Theo Verelst
pop to G. Duke and Rose Royce to mention a few of my favorites from an
earlier era,
Post by Theo Verelst
is how can it be that such a simple wave like the square wave, just two
signal levels
Post by Theo Verelst
with a near instantaneous jump between them, can be so hard to make
digital, if you
Post by Theo Verelst
listen with a HiFi system and some normal musical signal discernment ?
I think this is less of a DAC issue than the various quirks of the analog
VCO designs. Like the classic function-generator style ones that start with
a sawtooth oscillator, then use comparators to generate a pulse wave,
full-wave rectifier to get triangle output, and wave shaping on triangle to
generate a sinusoidal output. Do VA people simulate these circuits
explicitly? Most of what I recall has been BLIT based stuff, or for digital
synthesis of specific waveform types the wavetable approach described by
RBJ is pretty straightforward and compelling.

For those who don't recall from undergrad EE lab:

The sawtooth oscillator is, basically, a variable current source feeding a
capacitor, which dumps when its voltage reaches a constant (say 1V). So you
get a linear rise (constant current feeding constant capacitance) and
control the frequency by altering the input current. The capacitor has to
drain through a non-zero resistor, so there is some finite discharge time
to reset, and also temperature compensation is required on the current
source, etc. You probably also put a DC-blocking cap at the output, so
there is some fixed highpass characteristic built in there (but maybe not
if this is an LFO). You can implement hard sync with another oscillator by
dumping the cap whenever the master oscillator hits some level.

To get the pulse output, you run this through a comparator circuit, with
the comparison voltage determining the pulse width (0V for square wave,
assuming a +/-1V sawtooth).

To get a triangle wave output, you full-wave rectify the sawtooth (and then
need to add another DC blocker)

To get a sinusoidal output, you use some diodes or other nonlinear
components to do an approximate instantaneous wave shaping on the triangle.

The fun bit in a modular synth is that all these synchronized outputs are
available simultaneously, and can be run through different
filter/modulation paths downstream, etc.

E
Post by Theo Verelst
Post by Theo Verelst
Post by Theo Verelst
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....
Even assuming a magically perfect and noiseless analog square wave generator, at the very
least your speaker cones can't teleport between two positions.
Sure, there's a lot of stuff not just happening with speakers, but with acoustics of
any kind as well, always very audible.
For me when I started building musical circuits of the kinds I described, in high school,
there were perfect enough squares available: electronics "function
generators" would offer near perfect square waves with rise times orders of
magnitude faster than an audio circuit would normally require, and crystal
oscillators would keep jitter pretty low for
creating square tones.
It's true the imperfections I mean are the "digitally created" ones, which
includes the exact filtering in the DAC, the linearity of it, which filter
components have been (and not been) used like for DC coupling and analogue
(mean IIR automatically) anti-aliasing filtering. The converter chip I use
often at the moment (a PCM5102A DAC with up to 50MHz very low jitter and
ground separated clock) is analog filtered with a single high quality
component analog filter, DC coupled with a very high quality OPA627 OpAmp,
with no subsequent electrolytic capacitors in the signal path. On my big
monitoring or studio headphones it should be able to be very accurate.
It's hard to explain, but it's possible to take the given filtering inside
a DAC (to begin with the standard "oversampling" digital one) and try to
invert it to the extend that the streaming filter inversion allows you to
control the signal at oversampling clock speed to some level of accuracy.
This might cost headroom: some inversions might take a lot of amplitude
which is lost in the out coming signal, but nevertheless there are a few
ways to try to do this.
So taking a square wave with a given limitation of zero harmonics above a
certain frequency (like can be created with additive synthesis)
approximating the "perfect reconstruction" at the output of the DAC
oversampling filter output is a real possibility. Unfortunately inversion
of such a FIR or IIR filter with near bit-accuracy
at the streaming signal output might not be easy, is hard to verify (unless you have
and accurate model of the filter) and requires also a signal example (the
required output) which is up sampled or otherwise known to or at the over
sample frequency.
Now if you've got that, for the DAC being used, you could indeed worry
about if the "all harmonics up to Niquist" is perfect and good sounding.
And certainly: do I want to
include some sort of analogue filter simulation in the signal path for better sound, etc.
I've got a (very complicated) setup that certainly will work with pre-inversions of DAC
reconstruction/anti-alias/oversampling filtering, which IMO is absolutely necessary to
get the quality I want, but mainly the kind of processing prepares signals to sound
alright in *any* normal, small or big, damped or reverberating, acoustic space. And I
found a lot of high quality recorded (commercial) music contains preparations for that
principle of letting acoustics not get in the way of music enjoyment. Probably a domain
Lexicon has been one of the main players in, and indeed my Lexicon digital reverberation
unit almost cries and sings when these "signal preparations" start to sound good.
I'm sure a lot of modern speakers are very prepared for use with digital signals, and
often, I wish they would be more neutral and the reconstruction filters in DAC better.
TV
_______________________________________________
dupswapdrop: music-dsp mailing list
https://lists.columbia.edu/mailman/listinfo/music-dsp
Theo Verelst
2018-06-17 16:20:10 UTC
Permalink
First, let me agree with the notion that through interference of the supersonic elements,
audible artifacts through reverberation can come into existence. The early reverb can
easily transfer some energy into the audio band and the (partially non-linear) reverb tail
of any non-dead listening space will even out frequencies (measuring supersonic components
as well) and will easily concentrate mid-long reverb components in standing waves, which
can be driven by higher than 20kHz harmonics as well.

Moreover, the speaker will have a big impact on the sound of the square wave: the long
horizontal parts will be strongly influenced by how low you sub-woofer goes and how
straight it is, the rise time will be influenced by the amplifier, the impedance of the
tweeter and it's physical properties. In my case for instance I use a ribbon tweeter with
fast enough rise time very neutral amplifier, with a separation filter at 8kHz, so that
essentially it reproduces the top octave of the audible frequencies only. The mids must
be very straight to make the rest of a "perfect" input square come out your speakers
neutrally, which especially digitally is hard to do (the reconstruction filter will at
the very least show lag of phases in the mid frequency range) unless you know how to
prevent that.

The limiting of the frequency components in order to prevent aliasing is kind of needed
per the definition of the reconstruction theory, *how* you do that is of course another
discussion. For instance you could add all harmonics with high mathematical accuracy
according to the curve of a perfect 2 order filter, and then cut off all the harmonics
above a little under half the sampling frequency (so including natural looking phase shift
above a certain frequency) which might look more natural.

*How* you're going to, lets say right at the output of your chosen DAC, make sure your
digital square + DAC preparation is going to be as close to a "normally pure" square as
possible isn't really the issue, but if you do nothing but a simple curve, my statement
is that you might not get harmonic distortion down as far as I would deem needed for HiFi
response.

T.

robert bristow-johnson
2018-06-13 18:40:41 UTC
Permalink
---------------------------- Original Message ----------------------------

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

From: "Neil Goldman" <***@gmail.com>

Date: Wed, June 13, 2018 11:16 am

To: ***@raito.com

music-***@music.columbia.edu

--------------------------------------------------------------------------
Post by Neil Goldman
Post by Theo Verelst
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                         ***@audioimagination.com



"Imagination is more important than knowledge."

 
 
 
 
Uli Brueggemann
2018-06-13 20:57:21 UTC
Permalink
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
shape.

- Uli
Post by robert bristow-johnson
---------------------------- Original Message ----------------------------
Subject: Re: [music-dsp] Playing a Square Wave
Date: Wed, June 13, 2018 11:16 am
--------------------------------------------------------------------------
Post by Neil Goldman
Post by Theo Verelst
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
Post by Neil Goldman
positions. And I'm no electrical engineer but the circuitry must also
have
Post by Neil Goldman
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
Post by Neil Goldman
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
Post by Neil Goldman
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.
--
"Imagination is more important than knowledge."
_______________________________________________
dupswapdrop: music-dsp mailing list
https://lists.columbia.edu/mailman/listinfo/music-dsp
robert bristow-johnson
2018-06-13 21:13:17 UTC
Permalink
---------------------------- Original Message ----------------------------

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

From: "Uli Brueggemann" <***@gmail.com>

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

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

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

--------------------------------------------------------------------------
Post by Uli Brueggemann
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.)
Post by Uli Brueggemann
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
Post by Uli Brueggemann
Post by robert bristow-johnson
---------------------------- Original Message ----------------------------
Subject: Re: [music-dsp] Playing a Square Wave
Date: Wed, June 13, 2018 11:16 am
--------------------------------------------------------------------------
Post by Neil Goldman
Post by Theo Verelst
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
Post by Neil Goldman
positions. And I'm no electrical engineer but the circuitry must also
have
Post by Neil Goldman
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
Post by Neil Goldman
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
Post by Neil Goldman
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                         ***@audioimagination.com



"Imagination is more important than knowledge."

 
 
 
 
Neil Goldman
2018-06-13 21:15:57 UTC
Permalink
* 8 kHz is already outside of the bandwidth.

Well the example used was Middle C, which is 261.6 Hz. And would have 75 or
so harmonics before reaching the limit.
Post by Uli Brueggemann
This means that the basic frequency must be pretty low to get a square
wave shape.

Yeah, but that's exactly what I mean. At any frequency, you lose the upper
harmonics that make it perfectly square. So at what point do we cross the
threshold of it being square enough, or near-perfect enough. When is it
considered a square or not?

If you record that 8khz square and your result is a signal with 3
harmonics, did you not actually record a square? Record a 1hz square, it
will look square... until you zoom in far enough. You'll still get some
very tiny ripple because you only keep the highest 44k harmonics and not
all infinity harmonics. And if you don't get a ripple, you're probably
aliasing.

So my point is I think it's incorrect to assume it needs to look like a
square shape to be considered a square wave. Because no matter what, if you
zoom in enough a correct square stops looking like a square.

We can try to debate the threshold at which is looks or sounds squarey
enough, but that's more of a philosophical debate than a technical one.

Neil
Post by Uli Brueggemann
75th or 150th harmonics?
8 kHz is already outside of the bandwidth.
This means that the basic frequency must be pretty low to get a square
wave shape.
- Uli
2018-06-13 20:40 GMT+02:00 robert bristow-johnson <
Post by robert bristow-johnson
---------------------------- Original Message ----------------------------
Subject: Re: [music-dsp] Playing a Square Wave
Date: Wed, June 13, 2018 11:16 am
--------------------------------------------------------------------------
Post by Neil Goldman
Post by Theo Verelst
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
Post by Neil Goldman
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
Post by Neil Goldman
positions. And I'm no electrical engineer but the circuitry must also
have
Post by Neil Goldman
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
Post by Neil Goldman
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
Post by Neil Goldman
in theory, and it's more useful to define it by its harmonic series.
And at
Post by Neil Goldman
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.
--
"Imagination is more important than knowledge."
_______________________________________________
dupswapdrop: music-dsp mailing list
https://lists.columbia.edu/mailman/listinfo/music-dsp
_______________________________________________
dupswapdrop: music-dsp mailing list
https://lists.columbia.edu/mailman/listinfo/music-dsp
Loading...