Hallo,
Darren Landrum hat gesagt: // Darren Landrum wrote:
Frank Barknecht wrote:
One thing with Pd is that it is a block-based
realtime system, so some
of the techniques you mentioned (i.e. those that involve feedback
delay lines) can be impossible to implement in Pd using only the
builtin objects (feedback delay lines always have a minimal delay time
of one block in Pd). But you can code these objects as C-externals or
with Faust for Pd.
Yes, I was wrestling with this logic back when my idea was to make a
Reaktor-alike for Linux. Reaktor handles this, I think, by having a
separate "core" layer that works sample by sample. In other words, when
you're using the Core objects, you're operating at the sample level, and
then when you use the objects you've made with Core, you're at the block
level. That's probably not a bad way to do it.
Note that working on a single-sample level is possible in Pd as well:
Just add a [block~ 1] object into a subpatch. This has an effect on
performance, so it should only be done in small subpatches. It's also no
problem to have a single-sample delay or even a zero sample delay with
Pd. There is a problem however as soon as feedback is involved, where the delay
writer gets part of its input from the delay reader which in turn gets
its input from the delay writer and so on. This is a loop and in Pd you
need to have at least one block (which can be as small as one
sample) delay to break free from the loop.
For details check out Miller's book in chapter:
http://crca.ucsd.edu/~msp/techniques/latest/book-html/node120.html ff.
Right now, though, I'm agonizing over a physics
class lab assignment due
today that I can't figure out, and running on 3 hours of sleep as a result.
Heh, good luck. ;)
I've just spent three days thinking about a self-made assignement which
involved calculating how to alter a delay reader's speed to get semitone
pitchshifting at the output. It's actually very simple, but sometimes
you just don't see the solution in front of you for a long time ...
Ciao
--
Frank