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@mccormick.cx http://mccormick.cx
PD-ot mailing list PD-ot@iem.at http://lists.puredata.info/listinfo/pd-ot