On Tue, 2007-10-23 at 14:37 +0200, Jeff Rose wrote:
Whoah, great! Thanks a lot for the tips Frank and Jamie. footils.org looks like a treasure trove of interesting stuff to learn from. I think with this info I can put together the wind and birds patch.
I'd kind of like to dig a little more into the dynamic patch question though. It seems like a pretty fundamental design decision or constraint to not handle dynamic creation and deletion of objects within the synthesis engine. Is this just not an easy thing to do in a visual programming environment, or are there architectural reasons? In NetPD, which is incredibly fun, there are number of things you can do dynamically, like load instruments and effects, generate new rhythm sequences etc. I thought this seemed like a pretty nice way to do things, although I haven't looked into it yet to see if it requires some special extensions or something. Anyways, it would be great to hear what experienced people have to say about dynamicity in PD.
dynamic patching in pd is done by sending messages to canvasses (patches, subpatches or abstractions). you don't need any externals for dynamic patching.
though netpd uses dynamic patching a lot, it is actually not _that_ much recommended in pd. as frank pointed out, it seems that it is not officially supported by miller, which is probably also the reason, why it is not documented in the pd-docu (but i think it is documented in 'pd-msg' tutorial, that should be included in pd-extended). the main problem with dynamic patching is, that it is very likely, that it causes audio drop-outs. especially when creating ~-objects, the dsp graph needs to be recompiled, which requires some cpu power. another issue with dynamic patching is, that it is much easier to create objects, but it is not that easy to delete them again. if you want to connect and disconnect objects dynamically, then it is most probably going to be very painstaking. pd-objects don't have a unique identifier, but they are just counted by their creation order. when a certain objects is removed, all subsequently created objects change their address. because of this, most (all?) dynamic netpd-patches just do create abstractions into empty canvasses and most of the time they are just removed by sending a 'clear' message to the canvas in order to workaround all issues, that are introduced by dynamically connect and disconnect objects. this introduces unfortunately further implications. for instance, when you want to send an audio signal to a dynamically created abstraction and receive the resulting signal, the signal is delayed by one block, because, regarding the second [send~]/[receive~] pair, the [receive~] is created first. this is the case in mx, if you use aux-fx, since these are dynamically created. to sum it up: dynamic patching in pd is certainly doable, but has its implications.
roman
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de