[LAD] audio function generator ?

fons at kokkinizita.net fons at kokkinizita.net
Sat Jan 30 23:05:08 UTC 2010


On Sat, Jan 30, 2010 at 10:18:50PM +0000, Folderol wrote:

> In the hardware world these are usually simply sine/triangle/square
> wave generators, but the posh ones also do frequency sweeps, and the
> very posh ones let you set up a range of mathematical functions that
> will produce a repeating waveshape and/or sweep of your choice.

Yep, I know these boxes !
 
> Theoretically this aught to be far easier to do entirely in software
> (and no, I don't have sufficient programming skill). I'm actually
> quite surprised that we aren't knee deep in the things :) 

Any of the synthesis packages (from Csound to AMS) would
be able to do this. They all have oscillators for sine,
square, triangle, sawtooth, etc. and the complexity of
combining them and making them sweep etc. is limited
only by your imagination. You probably want anti-aliased
oscillators in this case. 

It all depends on what the OP expects of this. With the
exception of a sine, all the 'classical' waveforms have 
infinite bandwidth. Analog generators usually will go up
to a few MHz (in bandwidth, not frequency) Any software
version is bandlimited to half the sample rate, and unless
you go to high sample rates and corresponding hardware that
can make a big difference to an analog one. For example a
square wave above 1/6 of the sample rate will look like a
sine wave, as will a sawtooth above 1/4 the sample rate.

And at lower frequencies, a perfectly bandlimited waveform
with discontinuities (sawtooth, square) will show significant
ringing at the edges. This is not an error, and trying to
remove the ringing will actually make the result less accurate.
But try and explain that to someone who doesn't grasp the theory
(been there, failed). Same but to a lesser extent for waveforms
that have a discontinuous first derivative (e.g. triangle).

Ciao,

-- 
FA

O tu, che porte, correndo si ?
E guerra e morte !



More information about the Linux-audio-dev mailing list