To Analyze, Generate

Dec 31, 2014
• Chris Riddoch

A couple days before Christmas, after meeting up with a friend, I found
myself feeling like I had a lot of pieces of information in my head that
I knew were very connected, but hadn’t managed to glue together.
This is going to be technical.

We’d been talking about radio and electronics and signal processing. This
is stuff that I felt I mostly understood from the perspective of audio analysis,
but I’d not really wrapped my head around the big picture of signal processing.
I’ve known about fourier analysis, and DCT, and speech formants, and
so forth for a very long time, but I was always hopelessly confused when trying
to read datasheets for analog-to-digital converters, and not really
conceptualizing some things that really seemed like they should be very simple
to understand.

It’s funny how gaps in knowledge work. In retrospect, associations are
perfectly obvious. I’ll present some of what I already knew, and then what I
figured out.

A wifi adapter for a computer is somehow able to deal with a really, really
high frequency wave - in the
2.4 GHz range. That’s really fast. I mean, that’s faster than the CPUs in my
laptop. Two issues have come to mind that I’d never really gotten around to
asking anyone: how can a wifi adapter sample 2.4 billion times a second, and
somehow keep up with decoding everything in a reasonable amount of time? That’s
a lot of data. Also, how could the actual data rates of wifi be so low,
in comparison? It’s not like I can transfer 2.4 billion bits in a second,
or even a small fraction of that, over wifi.

It’s not really carrying that much data, of course. It’s not one wave, it’s
a wave layered on top of a wave - ripples on the side of an ocean swell. That
part made sense, as did the idea that you need to be sampling an analog source
at least twice as fast as the fastest wave or you can’t tell the fastest wave
is there (nyquist frequency).

It wasn’t until I turned the question around, and thinking from the perspective
of generating waves that things started to fall into place. Here’s a
metaphor I’ve come up with: if you’re driving 65 miles an hour down the highway,
it’s pretty easy to tell when someone else is driving 67, or 60, because the
difference from your current speed isn’t all that much. If you’re standing
still looking at the highway, it’s a little harder to tell much besides the
fact that everyone’s going really fast.

Generate a wave at one frequency, and then compare. Somehow, I already knew
that from fourier analysis, but that fact hadn’t really sunk in and connected
with the idea of 'carrier wave'. Strangely enough, it had already connected
in my mind with the idea of a voice’s fundamental frequency.

I was given a little book for Christmas on using 555 timers, among other things.
I’d only vaguely heard of a 555 timer before, maybe in the lab for a digital
logic class I once took. In that class, pretty much every lesson started with,
"Over here is your clock signal, and here’s your input lines…​" without ever
explaining anything about the clock signal to begin with.

Shortly after Christmas, I was given the chance to breadboard a circuit that
used a 555 timer to produce a square wave at 1 kHz into a little speaker. It
worked, and it made a noise, and then I made a noise. Yes, it’s exciting when
something works.

Way back when I was working at a little ISP copying floppy disks so people could
install Netscape and use the internet, I remember people older and wiser than me
trying to explain to me how the marketing around modems was deceptive by saying,
"Remember, the baud rate isn’t the same as bit rate." Beyond that, all
explanation went completely over my head - I hadn’t even learned what a sine
wave was at the time.

I started thinking about clocks and comparators in the same idea, and then once
one more concept was added, feedback, a lot more began to make sense. If the
output of something is looped back around and combined with the input going back
into it, you get compounding effects. Which then promptly made an association
with recurrence relations, which I’d learned in the context of software -
recursive functions - but hadn’t really realized the relationship to feedback.

It feels like lots of little bits of information I’ve known for a long time are
finally beginning to fit together into a coherent model. And now, I think I
understand signal processing a lot better than I did a few weeks ago.

To an electrical engineer, I’m sure this sounds a little like figuring out
that if a + b = c, then c - a = b. But I’m just learning this stuff because
I’m curious about it, and I expect I’ll probably use this more in the context
of working with audio than other media. I’m having fun with it, anyway.

This morning, though, I put together another few pieces of information I
already knew, and made sense of it. I’d already decided that I’d like to be
writing at least one thing of this sort (I hesitate to use the word 'blog',
though) each week in the new year.

Writing about things always has a way of helping me understand them better.