Hi all,
Is there a reasonably stright-forward way in pd-proper (I mean, without externals) to do either of the following two things?
returning the rest of the message 2) Prepending a symbol or number to a message
But I mean: this must work with ANY message, without knowing its "composition" (whether it starts with a number or symbol, how many "elements" and of what type it has, etc.)
For example, let's say I get a message which is [foo 1 2 3( Removing the first element should give me [1 2 3( But if the message is [1 foo 3 4 5 bar( it must give me [foo 3 4 5 bar( and so on.
I will omit examples for the "prepend" thing :p
Solving problem 1 would indeed allow solving problem 2 (not so "stright forward" though:) Not viceversa, as far as I can see.
I came up with a rather tricky solution for (1) but it involves "scripting" (dynamically adding and connecting objects in a canvas by sending it messages) and I'm finding out that PD is quite buggy when you start using that sort of things. When trying to use it to solve problem 2, I ended up with a patch that makes pd crash (but it shouldn't). However, I'm still trying to isolate the bug before I submit it to the bug tracker. Furthermore, the solution to (1) alone works fine but generates some errors in the pd output (because I intentionally use "unpack s" and "unpack f" at the same time so that only one of them matches and produces output).
Which by the way raises a secondary question: is there a way to turn off/on error reporting?
Also I found an almost as tricky (and not elegant) solution to problem 2 alone, without "scripting" but which requieres the message not to exceed a fixed maximum length (number of "elements"). And it generates "unpack mismatch" error messages too.
If anyone is interested I can share the mentioned patches, but first I was wondering if I am missing a much simpler solution.
I know there are externals that do this sort of things, but I like doing things natively in pd whenever I can, and this is also a speculative curiosity.
Thanks M.
On Thu, Feb 08, 2007 at 02:25:56AM +0100, Matteo Sisti Sette wrote:
Is there a reasonably stright-forward way in pd-proper (I mean, without externals) to do either of the following two things?
- Removing the first element of a message (NOT necessarily a list) and
returning the rest of the message 2) Prepending a symbol or number to a message
It doesn't matter if it's a list or not, you can still use [list] to turn it into a list, do a pre-pending or pre-unpending and then use [list trim] to turn it back into a message.
Best,
Chris.
chris@mccormick.cx http://mccormick.cx
Check out the [list] object, it'll do what you want.
.hc
On Feb 7, 2007, at 8:25 PM, Matteo Sisti Sette wrote:
Hi all,
Is there a reasonably stright-forward way in pd-proper (I mean,
without externals) to do either of the following two things?
- Removing the first element of a message (NOT necessarily a list)
and returning the rest of the message 2) Prepending a symbol or number to a message
But I mean: this must work with ANY message, without knowing its "composition" (whether it starts with a number or symbol, how many "elements" and of what type it has, etc.)
For example, let's say I get a message which is [foo 1 2 3( Removing the first element should give me [1 2 3( But if the message is [1 foo 3 4 5 bar( it must give me [foo 3 4 5
bar( and so on.I will omit examples for the "prepend" thing :p
Solving problem 1 would indeed allow solving problem 2 (not so
"stright forward" though:) Not viceversa, as far as I can see.I came up with a rather tricky solution for (1) but it involves
"scripting" (dynamically adding and connecting objects in a canvas by sending it messages) and I'm finding out that PD is quite buggy when you start
using that sort of things. When trying to use it to solve problem 2, I
ended up with a patch that makes pd crash (but it shouldn't). However, I'm
still trying to isolate the bug before I submit it to the bug tracker. Furthermore, the solution to (1) alone works fine but generates
some errors in the pd output (because I intentionally use "unpack s" and
"unpack f" at the same time so that only one of them matches and produces output).Which by the way raises a secondary question: is there a way to
turn off/on error reporting?Also I found an almost as tricky (and not elegant) solution to
problem 2 alone, without "scripting" but which requieres the message not to
exceed a fixed maximum length (number of "elements"). And it generates "unpack mismatch" error messages too.If anyone is interested I can share the mentioned patches, but
first I was wondering if I am missing a much simpler solution.I know there are externals that do this sort of things, but I like
doing things natively in pd whenever I can, and this is also a speculative curiosity.Thanks M.
PD-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/ listinfo/pd-list
"[W]e have invented the technology to eliminate scarcity, but we are
deliberately throwing it away to benefit those who profit from
scarcity." -John Gilmore
Hallo, Matteo Sisti Sette hat gesagt: // Matteo Sisti Sette wrote:
Is there a reasonably stright-forward way in pd-proper (I mean, without externals) to do either of the following two things?
- Removing the first element of a message (NOT necessarily a list) and
returning the rest of the message
[list split 1]
- Prepending a symbol or number to a message
[list prepend]
But I mean: this must work with ANY message, without knowing its "composition" (whether it starts with a number or symbol, how many "elements" and of what type it has, etc.)
Above examples *do* work with any message.
Not that *you* need to decide what you want to get afterwards: list-messages or meta-messages. Search the archive for the differences between both. You can convert any list-message that starts with a symbol to a meta-message with [list trim]
Frank Barknecht _ ______footils.org_ __goto10.org__