• porres

    @ddw_music said:

    I made a concrete example -- with scores!

    which one exactly do you mean?

    posted in technical issues 15 days agoread more
  • porres

    @oid said:

    @porres No help file, usage notes in asStream.pd, this thread is the documentation.

    You see, I'm interested in this thread, I suggested that it would be created. I'm interested in the problem and how to make it work in Pd. I read the thread. This that you're sharing is not enough for me. I get that you may be satisfied and that you worked a lot and just about as much as you care on this, but I just wanted to make this clear. Ok, I know, I could do more of my homework, but I'm born and bred in Pd-land, all this just sounds way too complicated and like explaining 'snow' to me, who's also born and bred in a tropical country (I was at the beach yesterday by the way), so more help would be appreciated.

    I have brought myself into such Pd x SC challenge other times, it's not the first time that things don't get too conclusive. I hear that it's impossible to do something "x", or too hard, and I hear about complex programming paradigms, and then it comes down to a simple solution like using [value]. My idea is to maybe try and expand Pd to improve it and open it up to what some people that come from elsewhere struggle with, and maybe offer a new object in my ELSE library... but all I'm getting so far from this thread is that you can share the index of an array with [value] in multiple subpatches or abstractions.

    I was interested in studying this abstraction and see if maybe I could add it if I really got what it did and what it is for, but for now it's just quite abstract and over my head.

    cheers

    posted in technical issues 16 days agoread more
  • porres

    @oid said:

    Added some usage notes in the patch

    don't see it, where are the help files?

    posted in technical issues 16 days agoread more
  • porres

    Also thought of [v]

    posted in technical issues 17 days agoread more
  • porres

    @ddw_music said:

    If your primary frame of reference is patching, then this is going to seem a bit vague or weird.

    Give us a working patch in SuperCollider with an example, not too complicated thoufh :)

    I guess I'll have to build it out in Pd for this to make any sense, but I can't do it right now.

    I could build it too, but give us a patch that actually makes sound please. Again, try to be as minimal as you can

    If I get it, you got one sequence and 3 independent playing from this sequence. I can envision a simple [clone] with 3 instances...

    posted in technical issues 18 days agoread more
  • porres

    I gotta say I'm kinda lost :)

    posted in technical issues 18 days agoread more
  • porres

    for a compiled external solution, see else/receiver

    posted in abstract~ 18 days agoread more
  • porres

    @ddw_music said:

    anArray.do { |item| ... some operations... } vs

    Well, if you're gonna use Vanilla objects, live's definitely gonna be harder, but I say life's too short to stick with Vanilla. Being someone who is about to reach 600 objects in his library soon, you may assume what my view is. Pd with just the vanilla objects is simply not a complete set of tools for computer music, nor enough... I don't doubt that. Pd Vanilla is simply the bare minimum at best. But even so, you can build a list iteration object with your patch above just fine and use it as an object. Or use [else/iterate] :) and [else/loop] like I said....

    A concrete weakness of patching is when you have a
    stateful object that needs to be accessed in multiple places.

    I don't think I know what you mean here, really. How is this not like using [value]? Or the "send" message to "float". Anyway, I bet one can think of an external solution for this. I'd like to try it if I get it. I also think of [else/retrieve]...

    Anyway, your examples are not clear to me, but the discussion interest me. I wanna get what is deal with recursiveness, for instance, but hey, we're hijacking the thread :)

    Feature request for sfload: provide file statistics
    (sample rate, number of frames etc.) upon completion.

    new version already does that

    I wouldn't trust doing that on the fly.

    no, Pd is not for Live Coding (something else i don't care for)

    Maybe in a different thread...

    sure, go ahead please

    posted in technical issues 21 days agoread more
  • porres

    @oid said:

    I really hate doing documentation.

    It's not easy and sometimes it's quite the nightmare. I don't know why I like it :)

    posted in technical issues 21 days agoread more
  • porres

    Miller is working on this, check it out

    "To Pd announce:

    A very preliminary version (0.1) of a VST3 plugin named PureVST is
    available on msp.ucsd.edu/tools/purevst . As the name suggests, it runs
    Pd within a VST host such as your favorite DAW.

    I'm releasing it, so far, as source code and as a packaged VST3 plug-in
    for MacOS (Apple silicon) . It compiles fine for linux and (I think)
    for MacOS/Intel - somebody brave might want to see if it can work on
    Microsoft Windows too :)

    I'm sure there will be plenty of problems/questions/comments. Perhaps
    for now it's appropriate to write these to the Pd mailing list, although
    it might someday be worth setting up a different forum for that.

    cheers
    Miller"

    posted in news 22 days agoread more
  • porres

    @mic said:

    The catch here is that LibPd can only use Vanilla.

    You can use externals with LibPd though. The ELSE library runs in PlugData via LibPd.

    [else/xmod2~] is the same as [xfm~]. I see the module is just a wrapper on top of. Do you really need all of these modules? It's also easy to build a cross modulation FM/PM patch in Vanilla. I show how to do it in my tutorial

    I

    posted in technical issues 22 days agoread more
  • porres

    @ddw_music I hear a lot about what SC can do that Pd can't, but that was not the discussion, far from it, as it was actually about how Pd is so much more complicated, or one might say complex, when I think it is not at all the case :) and sure, SC being more complex and complicated should give people something in exchange of that steep learning curve.

    Not for me though.

    I don't care for live coding, for instance. I never needed scripting in Pd as well. Having said that, I'd love to be challenged in offering a "pd solution" to some of its things.

    You know, I stole a lot from SuperCollider into ELSE, I'm interested.

    In Pd, loading a big audio file can glitch the audio so you need a workflow where everything is laid out in advance and that's just what you're working with

    This can be solved with an external, and [else/sfload] can load big files without choking Pd by having a multi-thread mechanism.

    that's not even mentioning regex matching

    MAX has a [regex[ object and I thought about having something like that as an external, I just never needed, but I just see that you can offer some alternatives with externals.

    Don't even try; Pd does not have the string tools.

    let me try, I wanna have a better idea of what you mean

    if you put a hundred Pd users in a room and asked them
    to make a for loop with an index, a majority wouldn't be
    able to (not really their fault, because nobody really teaches
    how to write a for loop)

    Did you really run that test though? :) and well, not sure if I know what you mean, because if it's what I think, it this seems like a pretty basic lesson for Pd. It's on the control examples, I have it in my tutorial, tell people to check them ;) I always teach my students. It's a pretty simple operation and task. ELSE also has the [loop] object...

    posted in technical issues 22 days agoread more
  • porres

    @oid said:

    any object which accepts the float selector also has a corresponding float method?

    yup, which is the function that deals with it, and float, symbol, bang, list and pointer are special methods, with predefined macros to add them, others have to be specified manually. Check the source code of any object, it'll be clear.

    it never tells us what a method is and how selectors relate to methods

    that section does not, and the manual doesn't say much about it other than one mere usage of the term. I agree we could have some more and I could add that... it's nice to better explain what the "no method" error is... but hey, this is not being "overly technical", on the contrary, mentioning about "method" here could be arguably an unnecessary technicality in that subsection.

    posted in technical issues 22 days agoread more
  • porres

    @porres said:

    I guess this subpatch that I referenced to earlier has more examples and makes things clearer?

    Well, that's in "Fig. 2.4.2 Different selectors", so I put there as well in the manual, so I wonder what is not clear about all this.

    posted in technical issues 22 days agoread more
  • porres

    you can also use [else/xmod2~] if you want/have it.

    and what modules are you using? I am working on some eurorack inspired objects and I'm also looking into what DIY2 has, it was a nice thing when it came out.

    posted in technical issues 22 days agoread more
  • porres

    @gentleclockdivider said:

    So It's not implicit but c3 is a symbol .

    c3 is a symbol, the message type is not a symbol, not implicitly a symbol message type. The type of message is 'c3', the actual message is 'd3 e3', so this 'c3' message has two arguments: 'd3' and 'e3'.

    I bring this up , because this is the topic

    I meant I didn't understand the confusion about it.

    posted in technical issues 23 days agoread more
  • porres

    I think pure data is a million times more complex than supercollider

    Oh, don't get me started with SuperCollider :) geez, that thing is what I call a nightmare :)

    Thee whole syntax of Pd is so damn simple, I can teach it quickly in a single class. The syntax of SuperCollider, on the other hand... damn,... what a PITA

    There are really a couple of tricky things to learn about Pd's syntax, like the dollar sign deal, and how to deal with selectors, and that's it. And the deal is that the first thing (symbol) in a message sets the message type (feels simple, clear and straightforward to me), and you have some special data types. I really cannot see the complexity in here! I guess it becomes simple once it's all clear to you.

    And I hope it is clear now

    cheers

    posted in technical issues 23 days agoread more
  • porres

    I guess this subpatch that I referenced to earlier has more examples and makes things clearer? Should I bring some of this into the manual?

    Screenshot 2025-04-06 at 03.07.41.png

    Anyway, thanks for checking the docs and letting me know if they can be improved

    posted in technical issues 23 days agoread more
  • porres

    @gentleclockdivider said:

    The message c3 f3 a3 , the first selector is c3 and thus this message is an implicit symbol , correct ?

    nope, there are no implicit symbols in Pd. Symbols are defines with the "symbol" selector, and can take only one argument, quote from the manual "The symbol selector can only have one symbol argument"

    It's not a list because the list gatom does not understand it ., neither does the symbol gatom , so is it an unindentified message ?

    nope, it is a defined message, with a defined selector

    @oid said:

    We have three selectors; float, symbol and list

    No. that's wrong, we have "infinite" selectors. The selector is a symbol that defines the data type (as the manual says). So, any symbol that comes first in a message is the selector. There some special selectors alright, but they are not just three, but five! Another quote from the manual: These special types are: "float", "symbol", "list", "bang" and "pointer"

    if it lacks one of those selectors it treats it as a method like 'set' so your [list store]

    The "set" IS the selector. What you refer as a "method" is if the object understands that message selector. So it means it has a function (or "method") to deal with it. If it does not, it will say "no method for set", but it can also say "no method for symbol/float/bang", so it's the same for the special selectors as is with any other general selector. (I see you asked me to chime in later about this, well, here it is).

    @gentleclockdivider said:

    But the manual clearly states that the first atom in a message
    is the selector , and for mesage c3 d3 e3 , the first atom is c3 .
    Isn't c3 a symbol , it starts with the letter C ?

    Yes, it is a symbol, hence, it is the selector of the message, so "c3 d3 e3" is a message whose selector is "c3" and the actual message is "d3 e3".

    When the message is separated by commas , and send though a list ,
    the console clearly shows these are seperate symbols , why then ?

    they are separated because you're using commas, and commas separate the atoms. And if you sent it to print, you wouldn't see the symbol selector. But since you're passing them through [list] they are gaining a list selector. But since lists need to have two or more elements, one-length lists are converted to a symbol or float message (I think we discussed this on this thread already, and the help file of [list] discusses that).

    Now, to be honest, I don't understand why you brought this up here, and why do you ask. I don't see the relation. Just let it be clear that you have 3 messages with just a symbol, and that these are selectors! What is the message then? No message, just selectors. The manual exemplifies something like this when it says about the "stop" message, let me quote it: "If a message contains only one symbol, like "stop", it is considered a selector with no actual message (i.e., no arguments) attached."

    I guess the manual could have more examples of generic selectors maybe? I don't know what is exactly not clear in the manual, please let me know so I can see if I can improve it.

    @oid said:

    I think that excerpt from the manual kind of gets overly technical

    Why do you say that? :) it's telling it as it is...

    posted in technical issues 23 days agoread more
  • porres

    @oid said:

    Lists were simpler things in the early days of pd with [pack] being the primary list object, there was no [list], so an object just to trim the selector would seem somewhat useless with how lists could be used and [route] doing the trim would be sensible. Quick look and [list] did not get added to pd until 0.39. Possibly a lack of foresight/planing or possibly things evolved differently than planned.

    hmmm, I see, and yeah, I get that a lot with my library, which keeps growing and growing. And a lot of bad decisions I face is when I add more objects, or different objects, or want to add new features...

    If I never added objects it would be much more stable and I wouldn't break things so much. It's hard to know before hand what you will want to do in the future :) anyway, that makes sense indeed, thanks

    posted in technical issues 23 days agoread more
Internal error.

Oops! Looks like something went wrong!