I think Lua would be a great idea for implementing extension into QC. A lightweight scripting engine, that people with experience with JS,Python, etc can easily pickup, Wouldn't want to heavy of a scripting engine as the goal is to streamline the processing of the data, I have no desire to see noodles replaced by lines and lines of script code syntax debugging. :) used by WOW for game extensions already..
JTS On Sat, Jun 18, 2011 at 4:20 AM, George Toledo <[email protected]> wrote: > > > On Sat, Jun 18, 2011 at 12:06 AM, Alastair Leith > <[email protected]>wrote: > >> I agree with many of the comments including the contradictions. George and >> I have had this discussion in private and I'm much more for JS when state >> machine is an issue. I just described such a state machine on this Kineme >> thread<http://kineme.net/composition/mattgolsen/OnscreenKeyboard#comment-20970>. >> The more your widgets are interacting with each others state, like say a >> simple group of on screen radio buttons where, by definition, only one can >> be 'active' at one time, then the more Bang one gets out of going JS I >> think. >> > > Well, QC is a node based system that allows one to control the execution of > a graph, but that also potentially has the ability to offer one the > possibility of including your own scripting language in a patch, even in the > standard API. > > I think that if one is going to conceive of the graph as a type of visual > language, then needing to rely on javascript is a crutch, while being able > to use it, is a feature. People panning node based solutions when > programming in a node based language is weak. Many patch based languages can > result in some graphs that have many connections and are difficult to > follow, but to me, that's an asinine criticism. It's akin to complaining > that you can't understand a circuitboard after staring at it for 30 seconds. > Well, big surprise. > > By using the nodes in QC, one has the ability to sample or queue every data > type; this cannot be done with the javascript patch, though it does handle > many types. > >> 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! >> >> Agreed. I used to get into all that, making a Flip/Flop out of logic gates >> the way Feynman describes it in *Feynman Lectures on Computation* but in >> terms of serious reusable code involving state, logic and timing it's JS all >> the way for me. For some reason I never liked the Timelines patch either, it >> seems even more against the QC functional graph paradigm than grafting a MVC >> model on top to me. >> > > The timeline patch is one of the most underused, and undervalued patches in > QC, imo. There's no reason it couldn't be used in tandem with javascript as > well. > > I find the panning of using logic patches, math, etc., to be obnoxious. > > >> >> OS X said: >> >> Exception Type: EXC_BAD_ACCESS (SIGSEGV) >> >> Exception Codes: KERN_INVALID_ADDRESS at 0x00000000bbadbeef >> >> Crashed Thread: 0 Dispatch queue: com.apple.main-thread >> >> >> Thread 0 Crashed: Dispatch queue: com.apple.main-thread >> >> 0 com.apple.JavaScriptCore 0x00007fff85dbd7f9 >> JSC::Heap::makeUsableFromMultipleThreads() + 57 >> >> 1 com.apple.JavaScriptCore 0x00007fff85dbd2e4 >> JSGlobalContextCreateInGroup + 132 >> >> 2 ...QuartzComposer.ExtraPatches 0x0000000115882fbb 0x11587b000 + 32699 >> >> 3 com.apple.QuartzComposer 0x00007fff821d3189 >> -[QCProgrammablePatch recompileSourceOfType:] + 134 >> >> 4 com.apple.QuartzComposer 0x00007fff821d30b8 >> -[QCProgrammablePatch setSource:ofType:] + 295 >> 5 com.apple.QuartzComposer 0x00007fff821d2caf >> -[QCProgrammablePatch initWithIdentifier:] + 455 >> >> >> Don't know that one. User error?! haha just kidding, GT. Unknown runtime >> errors are disheartening... I didn't get the point you were making here: >> >> 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. >> >> >> > The point I'm making is while there's a love fest going on about how > awesome javascript in QC is, it has issues. The error above comes from > taking a javascript patch: > > var result = new Object(); > function (__structure vars) main (__number inputNumber[7]) > { > result.vars = new Object(); > result.vars.X = inputNumber[0]; > result.vars.Y = inputNumber[1]; > result.vars.Z = inputNumber[2]; > result.vars.R = inputNumber[3]; > result.vars.G = inputNumber[4]; > result.vars.B = inputNumber[5]; > result.vars.A = inputNumber[6]; > > return result; > } > > ... making multiples, and connecting to another patch: > > function (__structure vars) main (__structure inputStructure[100]) > { > var result = new Object(); > var array = new Array(); > > array[0] = inputStructure[0]; > array[1] = inputStructure[1]; > array[2] = inputStructure[2]; > array[3] = inputStructure[3]; > array[4] = inputStructure[4]; > array[5] = inputStructure[5]; > etc... > > > At a certain point, javascript starts barfing, and just fails. This was > found with a more complex setup and reduced to this. > > I'm not really taking away from anyone's personal experiences, just adding > mine to the mix. It's hard not to read some of the comments and think that > they're somewhat off base or skewed too far to one side, or remember how > much time I've wasted with the javascript patch in QC being flaky, or > shifting in QC versions. > > -gt > > >> >> On 17/06/2011, at 8:38 PM, Adrian Ward 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 >> >> >> _______________________________________________ >> >> 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/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/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/jsophrin%40gmail.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/archive%40mail-archive.com This email sent to [email protected]

