hi all
thanks for you thoughts and concerns.
dyn~ is nice for specific problems... maybe if one needs dynamic amount of voices of a synth. if it should work with every patch / abs i would need to write a translator since the syntax is quite different from a pd-file (please, correct me if i'm wrong)
i hoped threadlib (by georg holzmann?) would solve all my problems :-) tried it with [; pd open patch-name.pd path( and [; pd-subpatchname obj 10 10 abstraction-name args( one didn't work (i think pd open) and the other one gave me weird sounding dropouts.
attached my newest version which should also work with DS. except 11.array.controls.pd crashes pd when i load it via slowlyopen.pd
an other problem is if a tabread~ was created before its [table] so for a short while it can't find it and gives errors. but besides that arrays should now work fine.
the dsp chain needs to be rebuild whenever the dsp graph is changed, which causes audio dropouts if your patch has a certain complexity...
tim: i'm not sure about the dsp-chain problem and how to test it.
when i dynamically create abs like this: [; pd-subpatchname obj 10 10 abstraction-name args( dsp seems not to be updated unless i create a ~ obj in an other subpatch and clear it afterwards. (again workaroundism :)
but when i dynamically create objects i never had dsp-chain problems so far.
On Sam Jan 20 15:25 , Roman Haefeli sent:
hello
personally, i think it is not worth that much effort. unfortunately creating a patch dynamically is NOT the same as 'executing' each line of the pd-file.
you are totally right, but i guess you didn't check the patch at all. basically it creates the patch line by line, but if a subpatch starts "#N canvas", it will search for its restore line "#X restore". there are important infos like subpatch position and the full name.
it checks the level of the subpatch so i don't have problems to create subpatches in subpatches.
this makes slow dynamic creation much more complicated than necessary. also, in order to follow your rule to do EVERYTHIN slowly, you would have to turn every instance of an abstraction into an subpatch and therefore you would need to parse all dollararguments and convert them to their appropriate values.
actually my focus is mainly on abstractions. replace dollar-arguments (only in objects, not in msgs) is implemented in the attached patch.
recursively turning every instance of an abstraction into a subpatch would be possible if we knew the abstraction names. that could be done with [pd abslist] but that's too netpd specific for the moment.
probably there are many problems more, which don't come to mind right now.
i have some:
usually i ignore the first line of a patch "#N canvas". i think these values stands for window position and size and maybe fontsize.
in 4.data.structures patches begin with 1 or more "#N struct" lines before the first "#N canvas". but i don't get it what these "#N struct" lines do. the docs seems to work fine when i ignore these lines (like i do it with the first "#N canvas"). but i don't know DS very well. does someone have more information about "#N struct" lines at the beginning?
this approach is like netpd started in the beginning, but it turned out, that this adds too much complexity.
anyway, i think that these kind of problems shouldn't be solved in the userspace, but in pd itself, since that is a general problem. it would be interesting, if there is ever a chance, that pd loads patches without dropouts or if this is impossible by design.
yeah would be nice if pd could do that, but for the moment i have this need and i can't really do anything else than search for a userspace-solution, which i'm quite close (i think).
i guess if i can do it in userspace, it is possible in pd itself.
there are other similar problems, that cause dropouts, which might be easier to solve like dropouts on full network buffer or writing and reading files.
yes indeed. can we hire somebody to fix maxlib/netclient (+server) maybe we should begin with collection money?
cheers enrique
On Sat, 2007-01-20 at 11:56 +0100, Enrique Erne wrote:
hi list
i'd like to open patches or dynamically create abstractions during a performance without having dropouts. that's why i'm trying to build a system that slowly loads a patch.
instead [; pd open patch-name.pd path( or [; pd-subpatchname obj 10 10 abstraction-name args( it reads the patch with [textfile] and creates the objects slowly line by line.
a problem was to rebuild the exact order of the subpatches. as far as i tested it works now. if a patch doesn't load correctly please let me know and send it to me.
to identify subpatches and place the objects in the right place it adds a number in front of the sub-patch name like this: [pd *id*-subpatchname]. -- just found out there is a msg [; pd-subpatchname rename newname(, after renaming the sub-patch to it's original names the is no visual update, besides that it works fine.
an other problem was with the array from Menu / Put / Array. it loads now even with content.
any comments are welcome.
eni
___________________________________________________________ Der frühe Vogel fängt den Wurm. Hier gelangen Sie zum neuen Yahoo! Mail: http://mail.yahoo.de
Enrique Erne a écrit :
hi all
thanks for you thoughts and concerns.
Hello, this look awsome, but anyway, none of the patches I've tested are correctly built, any patch.
___________________________________________________________________________ Yahoo! Mail réinvente le mail ! Découvrez le nouveau Yahoo! Mail et son interface révolutionnaire. http://fr.mail.yahoo.com
Hallo!
i hoped threadlib (by georg holzmann?) would solve all my problems :-) tried it with [; pd open patch-name.pd path( and [; pd-subpatchname obj 10 10 abstraction-name args( one didn't work (i think pd open) and the other one gave me weird sounding dropouts.
You could try to make all your stuff after a [detach], but I guess it won't work ... and if it will work, you can expect crashes, because PD is not threadsafe ...
LG Georg
hi all
On Fri, 2007-01-26 at 09:40 +0100, Enrique Erne wrote:
but when i dynamically create objects i never had dsp-chain problems so far.
i believe you as long as you don't create heavy abs. (though, if you convert all abs to subpatches, that is not an issue anymore)
On Sam Jan 20 15:25 , Roman Haefeli sent:
hello
personally, i think it is not worth that much effort. unfortunately creating a patch dynamically is NOT the same as 'executing' each line of the pd-file.
you are totally right, but i guess you didn't check the patch at all.
yes, you are right (sorry, if i said something, that i wouldn't have said after reading your patch).
basically it creates the patch line by line, but if a subpatch starts "#N canvas", it will search for its restore line "#X restore". there are important infos like subpatch position and the full name.
yeah, i know and in the beginning of netpd, i also messed around with this. possibly i would find nicer solutions now to handle 'deepness' of subpatches, particularly since [list] was introduced. but still, it is much work to do and i wanted to drop the question, if it is worth that much effort. of course, everyone has to decide him/herself if that is the case.
it checks the level of the subpatch so i don't have problems to create subpatches in subpatches.
yes, it is a solveable issue, nice that you solved it already.
this makes slow dynamic creation much more complicated than necessary. also, in order to follow your rule to do EVERYTHIN slowly, you would have to turn every instance of an abstraction into an subpatch and therefore you would need to parse all dollararguments and convert them to their appropriate values.
actually my focus is mainly on abstractions. replace dollar-arguments (only in objects, not in msgs) is implemented in the attached patch.
recursively turning every instance of an abstraction into a subpatch would be possible if we knew the abstraction names. that could be done with [pd abslist] but that's too netpd specific for the moment.
i see. or you could imitate the pd-behaviour: some search-pathes need to be defined, and your parser could check for each object, if it finds the code of it in one of the searchpathes. of course, that would introduce the need of an external ([getdirlist], or what is its name?).
probably there are many problems more, which don't come to mind right now.
i have some:
usually i ignore the first line of a patch "#N canvas". i think these values stands for window position and size and maybe fontsize.
unfortunately, i also don't know of a way to set window-position and -size, when dynamically creating subpatches.
this approach is like netpd started in the beginning, but it turned out, that this adds too much complexity.
anyway, i think that these kind of problems shouldn't be solved in the userspace, but in pd itself, since that is a general problem. it would be interesting, if there is ever a chance, that pd loads patches without dropouts or if this is impossible by design.
yeah would be nice if pd could do that, but for the moment i have this need and i can't really do anything else than search for a userspace-solution, which i'm quite close (i think).
nice to hear. what about the other reasons for drop-outs? how do you deal with them?
i guess if i can do it in userspace, it is possible in pd itself.
possible is almost everything with software, but how much effort does it need? rewriting pd? though i am not too much a techie myself, i hear voices saying, that despite the upcoming multicore-processor, pd won't be able to do threading in the near future (which would be necessary in order to make use of the additional calculating power). from my understanding of things, i'd say, that in order to avoid drop-outs on patch-load (or file/audiosample-load), pd would require threading (please someone correct me, if i am totally mistaken). afaik, pd-dev does already some of it (e.g. when reading a soundfile into an array).
there are other similar problems, that cause dropouts, which might be easier to solve like dropouts on full network buffer or writing and reading files.
yes indeed. can we hire somebody to fix maxlib/netclient (+server) maybe we should begin with collection money?
hm... i wouldn't want to involve money in that issue. let's ask the community first, shouldn't we?
cheers enrique
yo, mate. get inspired by the spirit of the closeness to the nirvana in goa. peace and a deep pd-ooooooohhhm!
roman
Telefonate ohne weitere Kosten vom PC zum PC: http://messenger.yahoo.de
On Fri, 2007-01-26 at 11:38 +0100, Roman Haefeli wrote:
i guess if i can do it in userspace, it is possible in pd itself.
possible is almost everything with software, but how much effort does it need? rewriting pd? though i am not too much a techie myself, i hear voices saying, that despite the upcoming multicore-processor, pd won't be able to do threading in the near future (which would be necessary in order to make use of the additional calculating power). from my understanding of things, i'd say, that in order to avoid drop-outs on patch-load (or file/audiosample-load), pd would require threading (please someone correct me, if i am totally mistaken). afaik, pd-dev does already some of it (e.g. when reading a soundfile into an array).
all threaded implementations of the soundfiler/sndfiler have the problem, that the dsp chain needs to be resorted after loading a file to a table ... so, an audio dropout will occur, when the dsp chain is resorted.
tim
-- tim@klingt.org ICQ: 96771783 http://www.mokabar.tk
I must say I find television very educational. The minute somebody turns it on, I go to the library and read a good book. Groucho Marx
Tim Blechmann wrote:
all threaded implementations of the soundfiler/sndfiler have the problem, that the dsp chain needs to be resorted after loading a file to a table ... so, an audio dropout will occur, when the dsp chain is resorted.
This would be easy to prevent, assuming the output device is sufficiently decoupled from the DSP chain. When the DSP chain has to be resorted, render out an extra couple of blocks of audio using the unsorted chain into a larger-than-normal output buffer, resort the chain, then pick up where the old chain left off. So long as the resort-DSP-chain code is vaguely aware of what's going on in the stuff-buffer-into-DAC code, this should work.
How does one get dev access to the PD source? I'd love to get my hands dirty..
Damian Stewart a écrit :
How does one get dev access to the PD source? I'd love to get my hands dirty..
hello, You don't need dev access to modify the source, the cvs is anonymous:
http://www.puredata.org/dev/cvs
pC
___________________________________________________________________________ Yahoo! Mail réinvente le mail ! Découvrez le nouveau Yahoo! Mail et son interface révolutionnaire. http://fr.mail.yahoo.com
On Fri, 2007-01-26 at 09:40 +0100, Enrique Erne wrote:
the dsp chain needs to be rebuild whenever the dsp graph is changed, which causes audio dropouts if your patch has a certain complexity...
tim: i'm not sure about the dsp-chain problem and how to test it.
when i dynamically create abs like this: [; pd-subpatchname obj 10 10 abstraction-name args( dsp seems not to be updated unless i create a ~ obj in an other subpatch and clear it afterwards. (again workaroundism :)
but when i dynamically create objects i never had dsp-chain problems so far.
it depends on how complicated your patch is dsp-wise (number of objects and number of connections) ... in my own performance patch, it's not possible to connect/disconnect dsp objects without an audio dropout.
it's a problem, that doesn't occur with trivial patches, though ...
tim
-- tim@klingt.org ICQ: 96771783 http://www.mokabar.tk
Cheat your landlord if you can and must, but do not try to shortchange the Muse. It cannot be done. You can't fake quality any more than you can fake a good meal. William S. Burroughs