On Tue, 15 Sep 2009, Derek Holzer wrote:
as you probably discovered, you need to use a send~/receive~ pair or other type of one-block delay to make any kind of feedback in Pd
You don't need it to be one block...?
For one, feedback in the digital realm is never instantaneous,
Instantaneousness is a myth. It does not exist in nature. If you ever wondered why computer clock speeds stopped increasing recently... well, that's the reason. but in the audio world, in which everything is in kHz, you wouldn't notice that often, because the scale of hearing is much larger than the scale of signal propagation.
because no code can compute it's output using that exact same output as its input (discrete/sampled time).
Use Mathematica. You will find out that it can figure out simultaneity equations using algebraïc manipulation, which is a digital-only concept. The only way you can compute actual instantaneous equations in analogue gear is if you use your analogue gear to build enough digital gear to be able to run Mathematica. But for audio, a straight mapping of signal theory might appear instantaneous in almost all cases... due to scale.
In the analog realm, as in real life, things can and do simultaneously affect each other (continuous time).
This analog realm, just like this real life, are completely foreign to the physics of the last 100 years.
This makes sense since a filter is in fact a small feedback system of it's own which cancels out or reinforces various phases of a wave!
Not all filters are feedback systems... for example, [rpole~] uses feedback, but [rzero~] doesn't.
So this was the second turn-off from digital feedback systems--that I couldn't always rely on them to work!
Ow, I don't know how you can rely on your analogue gear to work... I suppose you keep room temperature very close to constant, and you put the whole thing in a huge faraday cage, etc. One big reason for using digital gear is that it's so much more predictable.
Most filters or delays in Pd, for example, throw a "nan" error at that point and the signal chain breaks down.
If it does a NaN in the digital realm, it does a NaN also in signal theory, which means it does a NaN in Maxwell theory, which means Maxwell theory can't explain it, yet something happens. Therefore Maxwell theory is at least a bit off from the real world, and so this is another example of why you shouldn't confuse signal theory and real world.
I figured this out in grade 13 when they showed us Maxwell equations and there were derivatives of things like resistance, but while you plug a wire, the resistance changes suddenly, and this causes a NaN in the derivative, and Maxwell theory offers no way to figure out what will happen at that time. Obviously, the teacher and the book both conveniently worked around those hurdles by ignoring them... provided no-one asks how to compute the voltage of the spark that comes out by plugging a certain wire in a certain circuit.
Frank Barknecht posted a waveshaper to do soft clipping somewhere in the archives once, that might be an interesting patch to look at, since what it does is gradually "taper off" values as they approach the max/min values, instead of "hard clipping" them as the [clip~] object would.
I mention [expr~ tanh($v1)] rather often (?), and I'm not the first one to use it. I suspect that it's rather close to how capacitors saturate, but still somewhat off... (I think I recall capacitors saturate more like negative exponentials...)
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard, Montréal, Québec. téléphone: +1.514.383.3801