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/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to