[pd-ot] electric circuits in software
Christian Klippel
ck at mamalala.de
Fri Apr 28 04:39:54 CEST 2006
hi,
Am Freitag, 28. April 2006 03:21 schrieb Chris McCormick:
> On Thu, Apr 27, 2006 at 02:13:17AM -0400, Mathieu Bouchard wrote:
> > On Thu, 27 Apr 2006, Chris McCormick wrote:
> > > representation of two waveforms at Nyquist; if you have a squarewave
> > > and a sawtooth wave, both sampled at 44100 and playing at a frequency
> > > of 22050, these waves will both be represented by two samples each,
> > > correct? So when they are sent back into the analogue domain, won't
> > > these two waveforms look identical? Wouldn't they look like exactly the
> > > same sound? On analogue gear, wouldn't it be the case that the exact
> > > shape of the waveforms would be more accurately represented (e.g. a
> > > sawtooth and a squarewave at 22050 would look like such)?
> >
> > yeah, it would be more accurate, but are ears capable of hearing the
> > difference? If the resonance of each sensor of the ear is linear, then
> > each sensor can only react to one frequency band, and so if the smallest
> > sensor's frequency is about 20000 Hz, then the ear is incapable of
> > discerning.
>
> This sounds a bit speculative to me - too many assumptions. It's probably
> not wise to be so quick to dismiss the viewpoint of "analogue cultism"
> until we have concrete research that confirms that humans are unable to
> perceive such differences.
>
here are some attempts to explain why analog sounds analog .....
lets take the example of a square wave ..... you have two frequencies at once
here: for one, the fundamental frequency of the waveform, and then the
frequency resulting from the rise/fall time of the wave. since the latter is
probably much higher than the fundamental one, you can never ever reproduce
that with a dac (unless, of course, you are sampling in the mhz range).
on analog equipment, to the contrary, that compnent is preserved, maybe even
shaped by the filters.
another example, the sine wave .... on analog equipment, you have an infinite
number of different levels forming the sine. on a dac, you only have discrete
values. the filtering after the dac shapes the waveform into something that
should closely resemble the original wave, but only close (like, a square
comming out as sine at all). since you have to jump between discrete levels,
that again adds some harmonics, which need to get filtered out, effectively
modifying the overall frequency response.
if you have purely digital generated sounds (for example, oscillators), they
are far too perfect. in fact, each osc~ sounds the same. this is never the
case in the analog world. you can have 100 osc circuits, all built the same,
but you will never ever find two osc's that have an exact identical output.
just 1 cm more wire makes a difference. each and every connection between
analog equipment is some kind of a filter: you have the capacitance of the
wire-pair, plus its resistance, plus the source's or sink's impedance.
of course all these differencies are very, very subtle, and you may not be
able to hear the difference between two single elements. but if you now mix &
combine all that together, the many non-linearities add up as well, giving a
much wider spectrum (number of active frequencies) than what you would have
with digital stuff.
oh, and last but not least: noise and distortion. every analog source has some
noise, and maybe a small level of distortion. each part/wire adds some more
noise. of course, the noise is part of the final sound as we hear it. many
people complain that digital sound is too "sterile" ... thats why ...
something is missing.
you can do a quick test yourself: create an osc~ object (copy the existing
one, for example). inside the dsp routine, at the end, add some noise to the
signal (sample[x] = sample[x] + ((1000 / random(1000)) * noise_level) or the
like (thats probably non-working code above ;)... create some synth with
these osc~'s and compare the generated sound against the standard osc~'s ....
try with higher/lower noise_level settings. take it even further and add the
same stuff to the used *~, +~, etc ..... if you multiply somewhere with a
fixed number, make that number fluctuate a little as well. same for filter
parameters, etc..... do that sample-by-sample, and not just reusing one
single random value over the whole block ....
you will be surprised by the difference! (and of course, by the increase of
cpu load as well ;-)
> Best,
>
> Chris.
>
greets,
chris
> -------------------
> chris at mccormick.cx
> http://mccormick.cx
>
> _______________________________________________
> PD-ot mailing list
> PD-ot at iem.at
> http://lists.puredata.info/listinfo/pd-ot
More information about the PD-ot
mailing list