[chuck-users] public class connections mystery

David Ogborn ogbornd at mcmaster.ca
Mon Mar 5 09:56:17 EST 2012


Hi Robert,

Yes, it does - and that's kind of the point - I want a style of programming where each shred has one "atomic" effect on a system that persists between and above the shreds...  (Although it does suggest one workaround - to allow the simple "atomic" shreds to persist for a very long time, piling up even when they aren't doing anything.)

Yours truly,
David

On 2012-02-27, at 3:32 PM, Robert Poor wrote:

> David O:
> 
> This is a shot in the dark: does the first shred terminate before you
> look at connections with the second?
> 
> - Rob
> 
> 2012/2/24 David Ogborn <ogbornd at mcmaster.ca>:
>> Hi Mike and Kas,
>> 
>> Mike, you asked what I am trying to do with this code: I am trying to create
>> a basis for doing live coding operations in Chuck with the added constraint
>> that every shred is at most 1 line of code - the kind of thing that could
>> easily be piped in from a terminal or over OSC.
>> 
>> In this sense, it is not necessarily a problem to have to go through a
>> 3-stage process:
>> 1. issue a shred that (using the public class) creates instances of the
>> Ugens
>> 2. issue a second shred that connects them (and, according to my
>> observations, seems to make the connections persistent)
>> 3. issue subsequent shreds that trigger behaviours from, send messages to,
>> etc, the "stored" ugens
>> 
>> It is just that it would be more elegant if it was a 2-stage process:
>> 1. issue a one-liner that creates and connects the Ugen instances
>> 2. issue subsequent one-liners that trigger behaviours, send messages, etc
>> 
>> I take your point (in a later email) about the Event orientation though - I
>> will reconsider to see if that could make things work for me!
>> 
>> Thanks all!
>> 
>> Yours truly,
>> David
>> 
>> On 2012-02-24, at 11:17 AM, mike clemow wrote:
>> 
>> Kas,
>> 
>> On Fri, Feb 24, 2012 at 4:59 AM, Kassen <signal.automatique at gmail.com>
>> wrote:
>> 
>> On Fri, Feb 24, 2012 at 12:07:49AM -0500, mike clemow wrote:
>> 
>> ...
>> 
>> In that case s will be disconnected from the dac (and should be
>> 
>> garbage collected, not sure that happens yet, fairly sure it doesn't).
>> 
>> 
>> *Lack* of garbage collection might be the problem here.  Maybe the
>> connections are collected, but the objects aren't?  The objects
>> actually *should* be collected but hang out due to an incomplete gc
>> implementation.  Could that be the case?
>> 
>> I guess that what we're saying is that the the original Cell object in
>> the function sinOsc should fall out of scope after the method returns.
>> Should the reference to that object in the static member cells[] hold
>> it in scope as David's code implies?
>> 
>> David, another thing to consider is that this approach may be
>> unhelpful to you for one reason or another; either the Chuck is not
>> complete enough to make it clear that this should not be possible, or
>> Chuck is broken enough to not let this be possible even if it should
>> be.  (This is a relatively common occurrence actually. ;)
>> 
>> Can I ask what it is that you want from this code?  It seems to me
>> that your goal is a publicly available Cell[] array.  Is that the
>> case?  Perhaps there's a better approach.  For instance, connections
>> can be made on-the-fly within the shred you're currently executing.  I
>> think that this is similar to the use of Kassen's snippet on the wiki
>> (correct me if I'm off-base here, Kas):
>> 
>> //increase the size of the array to get more channels
>> public class bus
>>   {
>>   static Gain @ chan[8];
>>   }
>> new Gain[8] @=> bus.chan;
>> 
>> Kassen runs this in one shred and then connects UGens to the busses
>> and the busses to other things on-the-fly in other shreds.
>> 
>> The Cell objects in Cell.cells[] are still available.  Connect them in
>> your "client" code from other shreds on the fly.  Alternatively, have
>> Cells.ad() call Cells.connect() internally.
>> 
>> I hope this helps.
>> 
>> -Mike
>> 
>> 
>> 
>> "s" should be disconnected because there are no longer any references
>> 
>> to it. More exactly; all connections from a UGen (to it doesn't
>> 
>> matter) that has no references any more should be removed once the
>> 
>> reference count reaches 0, regardless of what shred made those
>> 
>> connections.
>> 
>> 
>> Here the issue may well be that this mechanism somehow counts
>> 
>> references incorrectly. The algorithm was changed a few times, first
>> 
>> to stop double connections. That change was undone when it turned out
>> 
>> those were extremely useful for squaring signals using a Gain set to
>> 
>> multiply. That resulted in UGens with double connections potentially
>> 
>> keeping (at least) one of those when they went to 0 references. That
>> 
>> last bug was fixed, but the fix may have been too agressive, leading
>> 
>> to the current behaviour?
>> 
>> 
>> Yours,
>> 
>> Kas.
>> 
>> _______________________________________________
>> 
>> chuck-users mailing list
>> 
>> chuck-users at lists.cs.princeton.edu
>> 
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>> 
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>> 
>> 
>> -------------------------------------------------------------------
>> Dr. David Ogborn, Assistant Professor
>> Communication Studies & Multimedia
>> Director, Cybernetic Orchestra & ESP Studio
>> McMaster University, Hamilton, Canada
>> 
>> ogbornd --at-- mcmaster.ca
>> http://davidogborn.net
>> http://twitter.com/ogbornd
>> http://esp.mcmaster.ca (Cybernetic Orchestra)
>> 1-905-525-9140 ext 27603
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>> 
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users

-------------------------------------------------------------------
Dr. David Ogborn, Assistant Professor
Communication Studies & Multimedia
Director, Cybernetic Orchestra & ESP Studio
McMaster University, Hamilton, Canada

ogbornd --at-- mcmaster.ca
http://davidogborn.net
http://twitter.com/ogbornd
http://esp.mcmaster.ca (Cybernetic Orchestra)
1-905-525-9140 ext 27603





More information about the chuck-users mailing list