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. That's a
paradigm shift! I'm not sure on the winning LUA point of difference,
although I did get excited by the patch when I first checked it out.
My main interest was it's perceived speed over JS, which turned out to
be not so much. And I guess OpenCL is there for that kind of thing
now. Is it JS's perceived flakiness that's the major issue or the fact
that it is line based code unlike most of the self contained QC
patches? You seem to be having a dig both ways. But then so is
CoreImage Filter patch and shader patch using written code and they
are intrinsically part of what QC is there for in OS X.
The circuit board analogy is a good one. I'm not going to write state
machine code in JS to pulse the blinking of the LEDs on my front
panel, I'm going to send a high logic signal out of my JS patch and
have an LFO patch do the blinking for me. Just like circuit boards can
be 100% analogue and awesome, at some point a 555 timer is a saver of
time, space on the circuit board and easier to control than a bunch of
transistors and resistors etc. Then step up to programmable
controllers, custom chips, microprocessors & LSIC. As long as the
greater complexity makes getting to the goal ultimately simpler or
more subtle, then it's justifiable. It's not a love-in so much as a
relief, GT!
I would liken the JS patch to a digital chip on an otherwise analogue
circuit board, it's not going to do everything you want to do by any
means, but what it does do is dam neat, as evidenced by the digital
circuit revolution. I don't see why QC has to be some kind of steam-
punk 'purist' venture, no text-based coding allowed. It's all
underpinned with written code in the first place so what's the big
deal if for certain logic and semantic tasks we use more code. The
benefits are there for those who prefer to work that way and nobody
cares if you are the best QC programmer and never use JS patch — more
power to you.
I'm just encouraging those discouraged by the JS patch hair-pulling
that is part of the learning curve (I was first to admit that I
believe) to persevere there is light at the end of the tunnel, I'm
proof of the light, it gets a whole lot easier!
If someone is bringing in 200 inputs to JS input ports somebody needs
to learn about using QC structures and perhaps Kineme Structure Maker
I would suggest, for one thing it's probably going to slow the JS
patch down but that's just my assumption that all that polling is
going to be slow.
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
_______________________________________________
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
_______________________________________________
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]