• svanya

    I found once and have been reminding myself ever since...

    When I start to get really bent out of shape as to whether I have "included all of the features" my app should have (self-talk),

    I take a second, remember to breathe, relax, and slow down.

    And remind myself that even Miller(!) is only at version 0.5x.

    And even he probably doesn't even know "where all this is going". :-)

    Aka.

    Don't beat yourself up to much, when your project comes toward its end and you start the "final" leg of the brainstorming, feature request part of the process.

    The project will include them in time, if it were meant that they should be included.

    And instead: get to work on what you Do know.

    p.s. There is Always version 2.0.

    p.p.s. on the other hand (:-)) as long as it's fun, just keep doing it.

    I hope this may help you in some way. Or ease the angst about whether your project is "as good as it should be".

    Peace Thru Sharing.
    Love Thru Music.
    And Fantasy...
    Thru Gem.

    peace through sharing love through music-f-small.jpg

    posted in Off topic read more
  • svanya

    If one organizes their abstractions in such a manner that [f $1] always refers to that abstractions "index", one can:

    1. more powerfully clone that object as

    [clone object 12]

    1. add both dynamic sends and receives based on that index:

    loadbang
    |
    f $1
    |
    [symbol objectname-$1(
    |
    [s]

    and

    [r objectname-$1]
    |

    So each object can then
    not only get its [all( and [by-idx( messages but also its [r & s] messages outside of the clone thread, ie external from the clone messages, ex. from a gui, hid, OSC, etc., as [s objectname-$1].

    Esp. because, I don't know if you've noticed, but working inside clones can be tricky and is prone to losing changes if you don't save the clone's changes before closing.

    1. further, one can then create "2nd level" objects at

    [clone parentobject 12 childobject]

    Such that inside parent is

    [f $1] and [symbol $2].

    and all $2's are instances of "childobject".

    The benefits of this are:

    1. greater cloning flexibility because one can swap out out which clone is used merely by changing the name.

    Ex.

    1. go into the clone
    2. open the child
    3. edit the child
    4. save it as "child2"
    5. exit the clone
    6. change [clone parent 12 child] to
      [clone parent 12 child2]
      and all of the clone thread will be updated accordingly.

    Afterward:

    I have yet to find a way to send messages into the clone without editing it, though that feature would be enormously beneficial, esp. as it applies to changing the clone's objects and parameters.

    p.s. I hope this benefits your creative process in some way. Happy PD-ing!

    The more ideas there are to play with, the more fun there is to be had.

    posted in tutorials read more
  • svanya

    @Il-pleut
    Thanks, alot for the pointer and lead. I really appreciate it.

    peace through sharing love through music-f-small.jpg

    posted in technical issues read more
  • svanya

    Thank you, @Jona and @whale-av for the pointers.

    Yes. I want to be able to change the operators, etc. . So for instance the multiply in [expr $f1*$f2] to a plus while the Gem stream is running.

    Two options I have tried are assembling an expr clone with all of its operators as type-selectable by idx, so an expr router of sorts. Where one could assemble the pieces by list(functypeID#) and variables. But that fails because it's just too clumsy.

    The option below is the best, I've come up with so far.

    And if, as you say whale-av, the expr itself is written at runtime (until the feature gets added sometime in the future :-)) probably the best way to go.

    Should say something, I learned there is no way to pass it in as a symbol [expr $1`], where $1 is a creationarg symbol because expr interprets it as a desire to create an array.

    One option may be using iemguts and dynamic patching. If I look into it, will try and let you know what I find out.

    Seems sending it a list is something that should be added.

    Would help a lot for patches where dynamically changing formulas in real-time streams (like a GEM or ~) best suit their design.

    Thanks, again, @jona and @whale-av. Really appreciate your response and the timeliness with which you replied,

    Happy PD-ing.

    Here's the way I will probably go with: Popping the subwindow where all the expressions are then closing it when I'm done,

    Screenshot.jpg

    posted in technical issues read more
  • svanya

    At this point I think it just better if I ask.

    UseCase:

    A [clone] where values inside each clone are calculated based on the index within the set of clones

    And

    I would like for the user to be able to set (for all and per clone) what that function(clone-idx) /expr that calculates the value is.

    Would love your thoughts on the matter.

    Ran into dead-ends on all the fronts I have explored so far.

    Peace Thru Sharing.
    And
    Love Thru Music...
    Or
    GEM.

    p.s. only within the last month, actually tried to learn GEM and am, at this point, what I feel like is only ankle-deep in all that it has to offer. ::smiley:

    posted in technical issues read more
  • svanya

    I have been feeling the itch to share something for a while and this just sort of came to me this morning.

    As to practical purposes? That's not for me to decide. :-)

    But I can say...The notion of binary operations has always sort of frustrated me. Limiting itself to only a duality.

    I hope this may serve some purpose to you. If nothing else, but to give you a giggle or put a smile on your face.

    May your day be a fantastic one. Keep caring.

    trinary-operator.zip

    Screenshot.jpg

    and inside the abs:

    Screenshot(1).jpg

    peace through sharing love through music-f-small.jpg

    posted in abstract~ read more
  • svanya

    Mockingbird is the current anti-music synth patch I am working on. Intended to feel more like dialog than "music".

    posted in output~ read more
  • svanya

    Improv experiment using a 4-d MobMuPlat OSC app to control Jupiter.

    posted in output~ read more
  • svanya

    extendexample.zip

    I've seen this idea come up quite a bit recently, so i thought I would throw out what I learned from making Virgo.

    One way to dynamically create creation arguments is to pass the name of the abstraction you want, an id (identifying the parent abstraction), and the number of times you want to create it to a container abstraction all as creation arguments.

    Then inside the container, clone that main abstraction that many times using the id as the third argument.

    So...[clone absname numTimes Id] or put more specifically\

    [clone $1 $2 $3]

    then inside the abs clone add:

    loadbang
    f $1 (the clone index)
    f $2 (the main object id)

    and a named dynamic send such that

    |
    pack f f
    |
    [$2-$1-name(

    So, on receiving, you get all of the sends as

    the id - the idx of the clone - and the name.

    If you do it this way, writing the names (though standardized) for sends such catch~ or throw~ become available.

    For example see the attached zip.

    Stay healthy.

    p.s. if this doesn't help...or just makes you scratch your head as to why you would do this, perhaps if nothing else it will trigger some fresh ideas for you.

    peace through sharing love through music-f-small.jpg

    posted in this forum read more

Internal error.

Oops! Looks like something went wrong!