On Sun, Jun 19, 2011 at 8:21 AM, Alastair Leith <[email protected]>wrote:
> > On 19/06/2011, at 3:48 AM, George Toledo wrote: > > > > On Sat, Jun 18, 2011 at 11:17 AM, Alastair Leith > <[email protected]>wrote: > >> It would also be *excellent* to see LUA incorporated as a standard >> alternative to javascript, ala Paolo Manna's work. >> >> >> So replace one scripting patch with another scripting patch. >> > > No, no no. > > My point it that, if we're talking about "state machines", the possible > arena of discussion within QC is larger than javascript vs. "built in QC > patches". It's advantageous to have more choices available, and it's even > more advantageous for them to be built into the system as a stock patch. > > Yeah fine but the discussion started about advantage of writing procedural > code to do state machines > Woah, this discussion has taken on a life of it's own. It started out as a discussion about setting up transitions for strings, and then potentially images. > vs. a noodle soup of concurrency that at some point gets overwhelmingly > difficult for me to modify, expand, debug or refactor. Let alone revisit in > a months time! > > One can make notes for each step in a Quartz Composer patch, just the same way that one can comment in-line code. Reading some people's code is inscrutable in both worlds. It is possible to write poorly organized, bad, hard to read code, that has no notation, either way. Even well organized code can be a bit to take in with a complex project. In the QC javascript editor, one might have something setup, not wrongly or in bad form, that has conditional statements where parenthesis close pages below where they start, and QC doesn't even have automatic highlighting to show you the match. That's not exactly easy to read either. I just don't think tools improve unless you really nitpick at what's also wrong with them, while acknowledging the good points as well. I also don't think it does newbies who may read the list any good to not consider flexibility in their approaches. > > You seem to be having a dig both ways. >> > > I'm just trying to be realistic. It could use some work. Why can it pass > image and not mesh, for instance? Why not interaction? The implementation is > either abandoned or arbitrary. However, some of the built in patches, > actually can handle those things (while maybe having their own issues in > some contexts). > > Does that matter to you if JS is doing what you want it to? Like you said > play to patches' strengths. > It does, because it marginalizes QC's usefulness as a tool, and leads users towards scenarios where something would work if there was only that "one extra thing" that you cannot seem to accomplish. The heavy reliance on pre-established types is already an issue, so inconsistent implementations of that already small group contribute to it being a more niche tool. > > > I don't see why QC has to be some kind of steam-punk 'purist' venture, no >> text-based coding allowed. >> > > Me either. > > Good :-) > > > >> >> If someone is bringing in 200 inputs to JS input ports somebody needs to >> learn about using QC structures >> > > What does that mean? > > What if a user needs those 200 options to be accessible via a GUI? > > We can handle 400 GUI buttons with just *three* inputs MouseX, MouseY, > LMB_Down. > No. Parameter controls connect to QC ports. A mouse just targets the compiled app parameter window, I don't understand the comment about three inputs MouseX, Y, down. It has no bearing. One can't get a large amount of parameters, create grouped structures, and then create a master structure past a certain point. This was more of a minor point in tandem with my other points about disliking the implementation of the patch. We can assign UI logic to the buttons too them like exclusivity amongst > groups, disable when others active too. All in a very simple JS script. > Are you talking about doing a GUI *in QC* or something? That's kind of fundamentally broken because of window focus problems 10.6+, if you rely on key up/key down state. Sometimes one doesn't have leeway to shift aspects of a project anyway... the argument is very n/a. Each vector value needed to be published and accessible via parameters. QC javascript fail. > > > >> and perhaps Kineme Structure Maker I would suggest, >> > > Which takes minutes to load, or doesn't load at all, because of a bug that > causes load time to increase with port count. > > > I load 100 items (as 10x10 element named structure maker patches) at >= > 50fps on the oldest Mac on this list. That's honestly a new one to me. > One cannot load things at a frame rate. A composition has a load time. This was more elements, and the bug is confirmed. > > > >> for one thing it's probably going to slow the JS patch down >> > > Again, what does that mean? What if a user needs that many controls? > > Refer to answer 2 above. > I don't get it. > > > But hey why not write state-machines in machine code, it's closer to the >> metal than nodes even! > > > Why not have the ability to drop down to machine code? The inability to > drop down is a major weakness of QC. It would be very advantageous to be > able to open up the loaded patches, edit, make custom versions, or use the > code as basis for our own custom patches. > > Access to the Apple CIFilter code in stock filters would be nice to learn > from but as we've discussed they've possibly got Obj-C code not just the > kernal code we get to write in CIFilter patch. Dropping down to C would neat > if it meant speed bumps. > Doing non-trivial things, and making your own custom data types, etc., would be the potential implication of this. You'd still be making patches that run in QC, just like the built ins which are sometimes speedy sometimes slow. It's just that one would have a more complete system, hypothetically. > > > >> On 18/06/2011, at 4:17 AM, George Toledo wrote: >> >> I don't think there's anything wrong with using the conditional and logic >> patches in QC, fwiw, and I don't think that using them has to create an >> impossible messy noodle heaven. >> >> When one configures a javascript patch above a certain input count, the >> whole qtz becomes unstable and often results in error when trying to >> duplicate macro. Sometimes it's more about using the right golf club. I >> think the correct path depends on the criteria of that particular project. >> >> I think one thing that is an impediment in some of the logic/conditional >> patch oriented stuff that I see is that sometimes people lose track of the >> fact that the chain in QC starts with "Enable" on a Consumer, and that it >> can be odd for people to conceptualize looping sometimes. >> >> I tend to think that the javascript is a crutch in QC for having sometimes >> incomplete paradigms for execution of graphs. >> >> It would also be *excellent* to see LUA incorporated as a standard >> alternative to javascript, ala Paolo Manna's work. >> >> On Fri, Jun 17, 2011 at 6:52 AM, Charlie Francis < >> [email protected]> wrote: >> >>> It's posts like this that make me glad I'm on this mailing list! >>> >>> Personally I haven't been developing in QC for that long, well about a >>> year, but I don't see that as a long time compared to the rest of you guys. >>> When I first started I did exactly what Ade described. Creating an >>> impossibly messy noodle heaven, with Math patches, Logic Patches, String >>> Compare, Structure Count and anything else I could find! I'm slowly making >>> the switch to using JS to create manageable Compositions, but still >>> struggling even though I come from a strong JS background of Web >>> Development. >>> >>> It's always best to sit down and think about what you want to create >>> first, before opening a New Comp and just "going at it". For your string >>> switcher, I have previously used these patches to create a fade in fade out >>> effect. Smooth, Fade and the Sample and Hold patch. Watch for when the >>> string switches, then Smooth the Fade value to 0, switch on Sampling for the >>> Sample and Hold Patch and then Sooth the Fade value back to 1. >>> >>> Regards, >>> Charlie >>> >>> On 17 June 2011 11:38, Adrian Ward <[email protected]> wrote: >>> >>>> >>>> I'm just going to chip in and say that building a central state machine >>>> using the JavaScript Patch has been absolutely critical for us, and this is >>>> what sits at the heart of every interactive AV we've ever made in QC - >>>> without it you'll just get messy unmanageable noodles, no matter how clean >>>> you are with your macro patching and connection routing. >>>> >>>> It also helps to enforce an MVC paradigm on your project, which is a bit >>>> of an unusual approach within the QC ecosystem but I'm convinced is utterly >>>> crucial when making anything ambitious. >>>> >>>> Quite possibly my darkest, most sinking moments as a developer are when >>>> I see a myriad of XOR, NAND and OR logic patches tangled up with Math >>>> patches, Counters and other logic type things trying to control disparate >>>> elements that would be much easier achieved with a single cleanly written >>>> JS >>>> patch that spits out nice neat state values. People - Embrace the JS! It is >>>> your friend! >>>> >>>> >>>> Ade. >>>> >>>> >>>> On 17 Jun 2011, at 10:09, Alastair Leith wrote: >>>> >>>> I like Achims State machine, here's another approach I made years ago >>>> before my JS was useful. >>>> >>>> I've done this sort of thing where I have two registers and interpolate >>>> between them. The registers are the two most recent items in a queue, so a >>>> new item in pushes the registers if that makes sense. Can't find a >>>> composition for that method. >>>> >>>> Also I did it for a structure of 3D attitudes/orientations of an object. >>>> I have a comp for this. In this case the queue just track random index >>>> values, again causing the index at the registers to shift along each time a >>>> new one comes in. >>>> >>>> It's a juggling act that uses a pulsed timer (LFO sawtooth-ramp-up) to >>>> drive interpolation patches *and the* *queue*; here is a demo >>>> composition I dug out (minus the interesting bit that morphs a cube into a >>>> sphere and back). >>>> >>>> <Demo transitions between atitudes with a spinning cube.qtz> >>>> <Rotational Positions.plist> >>>> >>>> NB The rotation position.plist is an XML file that needs to be in the >>>> same folder as the comp to load. >>>> >>>> Best >>>> Alastair >>>> >>>> On 17/06/2011, at 5:09 PM, Rick Mann wrote: >>>> >>>> I've been doing these on-screen graphics for a web channel that covers >>>> space launches. We show a couple of different countdown clocks, as well as >>>> a >>>> block of ascent parameters. >>>> >>>> But for the last nine minutes of a shuttle launch, there's not much to >>>> show. I have a couple dozen events that occur at various times during the >>>> count. I want to display each one as it occurs. An event is just a text >>>> string describing the event ("APU Start," "Steering Test," etc.). >>>> >>>> My custom patch can either output each string on a output port, or >>>> output an array of structures that has the string and the associated time. >>>> The former is easier for me. >>>> >>>> How can I crossfade from the last event string to the next, especially >>>> when they come in rapid succession (perhaps more quickly than the crossfade >>>> duration)? >>>> >>>> I was doing a similar cross fade between a set of images, and it was a >>>> real pain to build the structure for it. >>>> >>>> Thanks for any suggestions, >>>> Rick >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Quartzcomposer-dev mailing list ( >>>> [email protected]) >>>> Help/Unsubscribe/Update your Subscription: >>>> >>>> http://lists.apple.com/mailman/options/quartzcomposer-dev/qc.student.au%40gmail.com >>>> >>>> This email sent to [email protected] >>>> >>>> >>>> *The machine does not isolate man from the great problems of nature >>>> but plunges him more deeply into them.** >>>> **Antoine de >>>> Saint-Exupery*<http://www.brainyquote.com/quotes/quotes/a/antoinedes131176.html> >>>> * * >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Quartzcomposer-dev mailing list ( >>>> [email protected]) >>>> Help/Unsubscribe/Update your Subscription: >>>> >>>> http://lists.apple.com/mailman/options/quartzcomposer-dev/adrian%40clayinteractive.co.uk >>>> >>>> This email sent to [email protected] >>>> >>>> >>>> >>>> _______________________________________________ >>>> Do not post admin requests to the list. They will be ignored. >>>> Quartzcomposer-dev mailing list ( >>>> [email protected]) >>>> Help/Unsubscribe/Update your Subscription: >>>> >>>> http://lists.apple.com/mailman/options/quartzcomposer-dev/charlief%40cellcastonline.com >>>> >>>> This email sent to [email protected] >>>> >>>> >>> >>> _______________________________________________ >>> Do not post admin requests to the list. They will be ignored. >>> Quartzcomposer-dev mailing list ([email protected] >>> ) >>> Help/Unsubscribe/Update your Subscription: >>> >>> http://lists.apple.com/mailman/options/quartzcomposer-dev/gtoledo3%40gmail.com >>> >>> This email sent to [email protected] >>> >>> >> >> >> -- >> George Toledo >> [email protected] >> www.georgetoledo.com >> >> >> _______________________________________________ >> Do not post admin requests to the list. They will be ignored. >> Quartzcomposer-dev mailing list ([email protected]) >> Help/Unsubscribe/Update your Subscription: >> >> http://lists.apple.com/mailman/options/quartzcomposer-dev/qc.student.au%40gmail.com >> >> This email sent to [email protected] >> >> >> *The machine does not isolate man from the great problems of nature but >> plunges him more deeply into them.** >> **Antoine de >> Saint-Exupery*<http://www.brainyquote.com/quotes/quotes/a/antoinedes131176.html> >> * * >> >> > > > -- > George Toledo > [email protected] > www.georgetoledo.com > > > > *The machine does not isolate man from the great problems of nature but > plunges him more deeply into them.** > **Antoine de > Saint-Exupery*<http://www.brainyquote.com/quotes/quotes/a/antoinedes131176.html> > * * > > -- George Toledo [email protected] www.georgetoledo.com
_______________________________________________ Do not post admin requests to the list. They will be ignored. Quartzcomposer-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: http://lists.apple.com/mailman/options/quartzcomposer-dev/archive%40mail-archive.com This email sent to [email protected]

