The Lone Ryder

Danny_J's picture

Hey guys, so i've been working on quartz for a few months now and i've referred to you guys a few times. Honestly i have to say that i'm extermely enjoying myself. But unfortunetly i still feel lost in the fog. This is totally new to me, i've never done any kind of programming weather visual or text based. I went to school for photoshop, after effects, some 3D modeling and things of that nature. I do digital signage and my boss wants quartz to be the future for our digital signage network. So he throws me under the bus and tells me to learn it. Now i'm the only one working on quartz (i'm on a 9-man team) with very little help from a company called Helius.

So my question's are what exactly is quartz (what kind of programming is it), what prior experience should i have that might make things easier, smoother workflow. Are there any kind of quartz composer books or programming books that are similar to quartz. I've found some books about the developers tool kit or on the whole Xcode suite. Which is awesome but i'm not using all that for work and mentally i feel not ready for that amount of insane brainy work yet. I'm still trying to wrap my head around quartz. Are there any classes, workshops, seminars or anything that goes over quartz. Finally, would it be useful to know/learn other languages such as Cocoa, Ruby, Python.

I'm checking the wiki page now on it and wouldn't mind other peoples real world expierence. Thanks guys for all your help. I'll def be active on this forum since this now seems to be my job now lol.

cwright's picture
Re: The Lone Ryder

QC is getting more and more exposure to digital signage -- last year at NAB, it was just a pipedream that a few small groups were experimenting with, and in the past year it's grown to an actually-deployed technology in that arena. so your boss is probably right in his thinking (as far as QC+DS goes).

Don't worry about being the lone user on your team -- that gives you a great opportunity that you shouldn't back down from.

There aren't many books out on QC, and no tools that I'm aware of are similar enough to matter (vvvv, processing, and max/msp are "similar", but still very very different in lots of ways).

Don't bother with Ruby -- it has nothing to do with QC. Learning Cocoa can help you understand some "why"'s in QC. Python I'd advise avoiding for a number of reasons (it also has nothing to do with qc at this point). Learning GLSL, CoreImage, and Javascript will be valuable weapons, as they're used all over in QC, and can be amazingly powerful. Learning Xcode is nice for experimenting in Cocoa, but not too useful for QC in general.

As for technicalities, QC is a a hybird procedural/functional programming environment -- it can be completely functional (no state/mutable data), but stuff like Accumulators and JS can make it sort of procedural as well.

Going forward, here's my recipe:

  • browse over the developer examples. If you see one that's cool, try to figure out how it works. Then figure out why it works.
  • find simple problems you think QC can solve, and take a swing -- don't worry about having the best performance, or the most elegant design, worry about how you approach the problem, and how you apply QC fundamentals. If you get stuck, take it to the forums, or the QC dev list.
  • when possible, share your results (on the forums, on the list) to get feedback and insight for future work.
  • Play with things, and see what happens. Try to figure out why. There are Entirely Too Many Dweebs out there who are afraid to try things in QC. You never know what can happen.

Homework:

  • Make a sprite/sphere that follows the mouse location.
  • Use iterators to make a 10x10 sphere grid. Bonus points if you make a 10x10x10 3D grid.
  • Using 2 sprites, make a text scroller that seamlessly spans the screen (full width).
  • Make a composition that takes 2 images, and blends between them in various ways.

If you're interested in enrolling in Kineme University (non-accredited), please talk to our admissions department ;)

pixelnoizz's picture
Re: The Lone Ryder

university:) great.

Btw. i had the same problem: how to get closer with this basic things like arrays, booleans and logic stuff and many more. And javascript. My help was to read the basic processing book (A Programming Handbook for Visual Designers and Artists ) and i know, processing has nothing to do with qc, but many ways helped me to understand whats going on. yes, with some kind of basic visual programming skill, i was able, last week,to write my own javascript patch in QC, and it worked. Thats my opinion, and i think its individually. But i am still far.

cwright's picture
Re: The Lone Ryder

that's a great point, thanks for bringing that up -- Since I'm coming from a programming background (16-17 years experience[holy crap, my first "hello world" is old enough to drive! they grow up so fast...]), I think of stuff like Arrays, Boolean logic, etc, as "very simple, everyone knows that stuff". but for non-programmers, that stuff is probably pretty complicated.

Here's the book on Amazon: http://www.amazon.com/Processing-Programming-Handbook-Designers-Artists/...

Processing won't give you any hands-on stuff with QC, but it will teach fundamentals very well I'm sure.

Danny_J's picture
Re: The Lone Ryder

Oh man thanks so much!! :-) Honestly i could use that little boost you guys give.

With less then zero expierence in programming. But a few years in general graphics design. My journey has been more diffiuclt then a hobbit trying to get rid of a ring that rules them all, lol. So knowing the super ubber basics of programming would be awesome. Using quartz has kinda helped such as i know that a boolean only has two states, true or false. But i still really dont know what a boolean is.

I wont be back in front of a mac till friday, unless my roommate isnt playing WoW on his. So CWright i'll try to get that HW posted up ASAP. Also contact info for this university

cwright's picture
Re: The Lone Ryder

Some basic programming info stuff:

A Boolean (or Bool) is the smallest unit of information -- as you've noticed, it's either true, or false (yes or no, on or off) -- in physical-land, a Boolean is a single Bit. A Byte is a collection of 8 Bits. So while a Bit can have 2 states, a Byte can have 256 states (2^8).

For example, a 3-bit value could have 8 states, as follows:

  • 000
  • 001
  • 010
  • 011
  • 100
  • 101
  • 110
  • 111

(same for 8 bits, but a much longer and more boring table).

An Index in QC is the same as an Int (or Integer) in most programming languages. Ints are usually 32 bits (4 bytes) long (meaning the can hold up to ~4billion values, though in QC they're actually limited to ~2billion). they can store integers only (not fractional values, like 3.5, or 2.1, or 42.999). These are nice because they're fast, and exactly accurate.

A Number in QC is the same as a Double in most programming languages -- they store non-integer values (like 4.2, 27.9, etc). They have a huge range, but they suffer from rounding errors, so math on them isn't always exact. It's usually close enough to be fine, but there are certain cases where it's not. A Double is stored in 64bits (8 bytes).

Numbers and Integers all follow usual math stuff, like addition, subtraction, multiplication, division, etc. Bools can do those too, but it can be weird. Usually, "Boolean Logic" operations are performed on Bools instead. These are as follows:

  • And
  • Or
  • Not
  • Xor

And will provide a True output if all inputs are True -- if any single one is False, it returns False. In the Math Expression patch, this is represented by the "&" symbol.

Or will provide a True output if any input is True -- if all outputs are False, then it returns false. In the Math Expression patch, this is represented by the "|" (pipe, just below the delete key) symbol.

Not will invert a value -- True becomes False, False becomes True. This is represented by the "!" symbol.

Xor (eXclusive Or) will return true if both inputs are Different (one is True, the other is False) -- if both are True, or both are False, it returns False. In the Math Expression patch, this represented by the "!&" symbols.

you can apply these Boolean operations on integers too to get interesting results -- a number And 1 (x&1) will return True when x is odd, and False when x is even. This is pretty simple, but it would take some time to explain -- if you're interested, just ask, and I'll post how that works.

gtoledo3's picture
Re: The Lone Ryder

The suggestions about Processing are good ones; my personal "QC adventure" came out of having used Processing for a decent amount of time (and I STILL did bonehead javascript things for a long time after that)... and somehow stumbling on some QC stuff.

Chris's recent wiki in the "using QC" section really does cover many of the really pertinent uses of javascript in QC. I've also found "Javascript:The Missing Manual" to be useful, though it does delve into internet/ajax stuff.

However, you can do a million and one things without javascript, so don't overwhelm yourself on the front end.

Google is your friend. So, you're working on a composition, and somehow "boolean" comes up, you don't know what it means... immediately look it up.

Chris's "recipe" is THE recipe.

When you go through the developer examples, sit there and tweak every darn parameter. Replace renderer patches. DO stuff. Make stuff crash! (Oh, I'm sure Chris loves me saying that).

While you are in the developer folder, take a look at this...

Developer/Extras/Core Image/CI Filter Browser.wdgt

Go ahead and put that in your dashboard. Look at it when you are bored, or interested in studying. There are many things that can be achieved with CI that people bend over backwards trying to achieve through other means. There is an article on the Apple Developer website that has much of this info, but I found the widget to be a quick and easy reference.

Down the line, after you've looked at all of the developer example stuff, Apple has some more interesting material that can be found here:

http://developer.apple.com/samplecode/GraphicsImaging/index-date.html#do...

I went ahead and posted the link for all Graphics and Imaging topics, sample code only... you can narrow or expand your search. There are some decent qtz examples within this group, and other peripherally related things that may be interesting to look at as well. Take a look at the QC Fundamentals DMG, and perhaps other ones labelled with Quartz Composer (some of them are about integrating QC into applications, which may not be useful to you right now).

In addition to the developer examples, look through the stuff at quartzcompositions.com . Those tend to use all standard Apple QC patches, and outline many basic principles. There are some great "utility" type of examples.

The Quartz Composer developer list mail archives have a ton of useful discussion. This is uber-dorky, but I've looked through the "history" of the list a several times probably... on the front end, you might not understand some of the subjects that are addressed. Later on, when you go back through, the "light bulb" will inevitably turn on with subjects you may not have understood the first time.

After that... again, do some web searches. There are a ton of qtz files out there. Checkout what other people are doing. Futurismo at one time (and still does?) have a kind useful study "lab" that had some example qtz files that illustrate some interesting approaches. Kineme has a great deal of interesting example files with some of the plugins that have concepts that can be applied to other situations besides that particular qtz.

When you have trouble with something, or want to get some feedback...at least plop a few patches on the editor, and dig in a bit. Then post the qtz wherever you can "get it to", and ask for some advice at that point. That even extends beyond the world of QC, and into many other realms. (Digression- In the world of audio there are many people that will spend hours theorizing if they should use a U47 with an M7 capsule or a KK47 or whatever, or if the Telefunken USA re-issue is just a piece of garbage, and it's like JUST TRY IT DARN IT... and you are thinking "great, dude has a gig recording Mariah Carey and he's asking on an audio board what he should use.... doesn't inspire helpful attitudes).

People are always more willing to help polish than to whip up a complex example from scratch. That's more of a "netiquette" thing. With me, it depends on if I've had enough coffee yet, as to how willing I am to plop down involved files from scratch :o)

Don't take anything as "bible" either. There are things that people do that they do for various reasons... that may not be as valid in your world, or for your particular application. That might be harder to determine at the beginning, but if you get those "feelings" down the line, don't be afraid to depart from whatever seems to be the norm if it works.

Do Chris's checklist. Hint, look at the first step in the recipe for some help on that :o)

And thanks for making me feel like an old fart by talking about WoW. ;o) Uhm, Super Mario World anybody....?

leegrosbauer's picture
Re: The Lone Ryder

gtoledo3 wrote:
While you are in the developer folder, take a look at this...

Developer/Extras/Core Image/CI Filter Browser.wdgt

Go ahead and put that in your dashboard.

Thanks for that tip! I was pleased to discover that the CI filter browser widget also displays abundant information regarding any installed Noise Industries Units. This is a big plus for anyone who may have installed those items, because the QC Patch Creator does not seem to display any information at all (other than the image unit name) for installed NI Units.

That said .. now I'm wondering how it does that! lol.

mattgolsen's picture
Re: The Lone Ryder

This whole thread is full of win. I'm in a somewhat similar position as the OP. I'm a fairly technical guy, but for some reason I've never delved into programming. I'm also an artistic person, so I've been having trouble making the two sides of my brain mesh with QC.

Perhaps we could build this stuff (as a community) into the wiki for other beginners? An actively developed intro to QC wiki would be great.

leegrosbauer's picture
Re: The Lone Ryder

Me three, Matt.

What I've begun to do lately is to vote (just below the point box located at the upper left of each post) for those comments which seem to be meaningfully instructive to me from my perspective a non-programming QC user. Seems like as good a way as any to indicate perceived value.

Chris has commented in the past that, for unknown reasons, the voting mechanism isn't being utilized in proportion to the actual visitor count to the site. So ... for your suggested Intro To QC pages, there may well be a significant audience which is already present and hovering at the portal, but that's just a hunch on my part.

mattgolsen's picture
Re: The Lone Ryder

man and here I thought I could save my points up for fabulous Kineme prizes! :D

yeah I definitely vote for useful posts, unfortunately I usually end up missing stuff :(

cwright's picture
Re: The Lone Ryder

There are actually cases of users winning fabulous prizes ;) (franz "won" a t-shirt by being the most active non-kosada user for 18-24 months running or someting a few months back)

Voting doesn't deplete points (as far as I know? -- maybe mistaken) -- in a much anticipated (internally) upgrade to the kineme.net site software, we're planning on driving the search results in part from the voting results, so higher-voted posts/comments wind up closer to the top. We might also use the tag mechanism for similar purposes.

cwright's picture
Re: The Lone Ryder

I love the idea of a wiki area for this -- there's a steep curve to using QC, so anything to help walk people through that will be wonderful.

Lots of potential with that, but also lots of hours. I'd be excited to flesh out such a section as occasion permits, but I'm probably not a good person to lead such an endeavor.

jersmi's picture
Re: The Lone Ryder

so this is like the beginnings of the equivalent to the processing manual (i was just scanning that book the other day and said hmm)... or are books passe? :) seriously, this is a great post for someone like me-- i have an MFA in painting, for chrissakes! imagine if someone actually put together a book in the spirit of this post?

jersmi's picture
Re: The Lone Ryder

gtoledo3 wrote:
People are always more willing to help polish than to whip up a complex example from scratch. That's more of a "netiquette" thing. With me, it depends on if I've had enough coffee yet, as to how willing I am to plop down involved files from scratch :o)

But we never know what more experienced folks are working on or have lying around and are willing to share, for that matter, so it never hurts to ask! ;)

gtoledo3's picture
Re: The Lone Ryder

I hope it's not too off task to say that an ongoing podcast is being planned, which should have some real gems, and supplementary examples (the first should be approximately a month from now). As has been noted, there is a dearth of material out there, and this will help fill the void. The podcast should also feature tips and design philosophy/strategy of various QC programmers.

It seems to me that it wouldn't be a hard step to transfer some of that into a published form after a bit. Chris hates paper, so I don't know ;o)

gtoledo3's picture
Re: The Lone Ryder

OH yeah!!! I'm with you on that :o) Nothing wrong with asking for the moon!

I'm just saying that said examples are more likely to come out of the woodwork when the poster seems to have spent more than the time it took to type the post ;o)

Two REALLY good ideas, which I violate all of the time, and it's not a BIG deal, but still:

1- When you want to solve a QC problem, give a look through the developer folder examples, and make sure none of them answer your question.

2- If one does kind of seem to fit into your general idea, just try "doing stuff" to it.

Doing that before you post, and posting an example file will get you much better results from people. It's just human nature to feel more compelled to help someone who is helping themselves!

At the same time... hey... as I say, never feel afraid to ask for the moon, because as you say "you never know" :o)

The flipside of it is that when you are in the middle of messing around like that, you are going to learn the most, even if you eventually end up asking because you can't "get it". You will also tend to learn other tricks along the way.

gtoledo3's picture
Re: The Lone Ryder

No prob Lee! Whenever anyone emails me to ask about stuff like this (haha, that looks funny to write, but believe it or not, at this point I am finding I am starting to spend a heck of a lot of time managing correspondence on people asking about how to do a certain technique, or what are good starting points, etc.)... I always point out that darn widget at some point. It's "flash cards" for your CI filters.

Notice that the widget will say "this filter comes from an image unit" when you look at any of the NI things. If you have NI installed it will be in a folder labelled "Image Units" inside of one of your Library/Graphics folders. That is a bit of an interesting question as to "how"... I would imagine that somewhere in the code of the widget, it's setup to look in all of the Graphics folders. Wild speculation on my part, I haven't ever looked at it, other than in my dashboard :o)

The one caveat about the widget is that it doesn't show the hidden filters.

franz's picture
tee

yep, now that i've got my Tshirt, i'm keeping quite. (and i'm wearing it today, incidentally ;)

leegrosbauer's picture
Re: The Lone Ryder

Well, off task or not ... I'd say that the concept of a Kineme podcast deserves a vote of encouragement. Done.

Danny_J's picture
Re: The Lone Ryder

Agreed on everything that was posted on this topic. Having a wiki actually explain what/how patchs sre/work would be great. I've seen some simple tutorials that tell you how to make something. But what they don't tell you is why they did it like that or how to apply said technique to another projects. Plus i've got a 160gb iPod thats dying for some QTZPodcast.

mradcliffe's picture
Re: The Lone Ryder

I think the first helpful steps for me was watching you make video cubes at Electro 2008 in Kingston, TN. In particular seeing you progress from a single cube to a cube with images to an iteration of n cubes to an iteration of n cubes moving to audio input. Hey I wonder where that video went?

It always helps that sometimes I can ask "Hey Chris why isn't this stupid thing that I think should have desired output X really Y?"

Looking back at the 9 months I've had a macbook...

date file desc
2008.08.16 cube.qtz simple random size changing cube, earned a remark from Chris that he did something similar to start with.
2008.08.18 ki-particle-kill-radcliffe-1.qtz first audio resizing particle thingy
2008.08.19 ki-particle-kill-radcliffe-2.qtz second one, changing colors and positions
2008.08.21 ki-particle-kill-radcliffe-3.qtz more of the same
2008.08.28 ki-particle-kill-radcliffe-4.qtz ...
2008.08.29 ki-particle-kill-radcliffe-4a.qtz ... better audio input
2008.09.05 ki-particle-kill-radcliffe-5.qtz now with vortex!
2008.10.18 ki-gl-kill-radcliffe-1.qtz trying to replicate BVE trainsim rail 3d object
2008.10.24 thecubesohgod.qtz cubes playing a bastille day that dance to an audio, usually manna manna, learning iterators and LFO
2009.02.18 ki-particle-kill-radcliffe-6.qtz vortex spinning sparkling particle painter
2009.03.09 ki-particle-kill-radcliffe-7.qtz 2d pinball (radcliffeball), wip

I really need to get the hang of LFO and iterators a bit more. And delve into GL (chris and steve "oh no!").

cwright's picture
Re: The Lone Ryder

You're right -- we should find that video and post it sometime (nudges smokris ;)

Thanks for your notes on this -- you've got some fresh experience in this too (just about 6-7 months now), so you can remember the bumps and bruises better than I can.

"Kill Radcliffe" is an inside joke -- radcliffe and I were charged with modifying some manufacturing plant management software; if we made changes that broke things, we ran the risk of destroying thousands of dollars worth of products + getting a bazillion phone calls, so we'd mark our changes with "Kill cwright" or "kill radcliffe" so we'd know who needed to die if something exploded :)

(now it's mostly used to indicate who to kill after the 9 thousandth repetition of "manna manna" when we're trying to get work done ;)

gtoledo3's picture
Re: The Lone Ryder

Danny_J wrote:
But what they don't tell you is why they did it like that or how to apply said technique to another projects. Plus i've got a 160gb iPod thats dying for some QTZPodcast.

It's affirming for you to write that. This is EXACTLY what the idea is... to not just give a qtz and go "this is how you do this".

Expect...problem solving, backwards engineering ideas, addressing pulling off techniques done with similar platforms, showing how a technique can be applied to more than one scenario (as you mention), techniques that CAN be done but that are basically untapped with QC, they "why"'s as well as the "how"'s... thought process stuff... and also getting the perspectives from a variety of QC programmers.

gtoledo3's picture
Re: The Lone Ryder

manna manna... hilarious... You guys are definitely painting a picture here.

mattgolsen's picture
Re: The Lone Ryder

I'd like to donate any webspace or bandwidth needed. I currently have an unlimited plan for both through Dreamhost since they're such swell guys.

I also have Darwin Streaming Server setup on there too, if that could be of any help. Even if it's just offloading storage to it

All free for the QC community!

usefuldesign.au's picture
Re: The Lone Ryder

I'd be happy to contribute to some kind of learning resource in any way I can. I've spoken to cwright about a book but I gather it's on a long list of nice-to-do's. I think it's a good idea to make the lessons conceptual/discursive as well as how-to/instructional so I like the sound of this thread.

When I was suggesting a book to cwright I gave example of my first electronics 150-in-1 (showing my age for the hundredth time on this forum). It was a great introduction to electronics. From complete 10 yo novice to gaining a real working knowledge of the components and more importantly how they could be combined in ways that you just wouldn't guess from playing around. QC wiki/ Podcast/Book could do well to emulate something like that. Must build from novice to advanced in a coherent way.

Also think it's a good idea to prepare the examples so they look good and inspire learning – especially if we are talking bookshelf appeal. There must be some reason I decided to start learning QC and not Processing, Nodebox, or C++,... and I guess it's the strong visuals from low code/patch base. Material should reflect this strength of QC.

As a Graphic Designer, the prospect of a book out of all this is tasty.

Danny_J's picture
Re: The Lone Ryder

usefuldesign.au wrote:
As a Graphic Designer, the prospect of a book out of all this is tasty.

I have to agree! Using mainly Adobe products i really love there "Classroom in a book" series. Goes over the basics plus advance learning. They provide a cd with working files and sometimes additional plugins or patches of any kind. Wiki page would be a close 2nd. It could even possibly host any podcast or extremely useful tutorials.

A little off topic but does anyone know what happen to quartzcompositions.com? I feel like its not really active and it took me almost a few weeks to get my account active.

cwright's picture
Re: The Lone Ryder

Danny_J wrote:
A little off topic but does anyone know what happen to quartzcompositions.com? I feel like its not really active and it took me almost a few weeks to get my account active.

The QuartzCompositions.com community was very active when QC-Tiger was in heavy use. It seemed like they started losing their edge around when QC-Leopard became available, and many users jumped on board here instead.

Looking at the last-update column, it looks like some things go months without new posts.

Their wiki is still full of fantastically useful information though.

gtoledo3's picture
Re: The Lone Ryder

Did/does Sam Kass run QuartzCompositions.com ? It seems like he mellowed out on his activities as well.

That website is a great resource, because it's all standard patch stuff, and the files that are hosted show many basic principles.

gtoledo3's picture
Re: The Lone Ryder

Years ago I was involved in "Mixing and Mastering for Cubase SX" by Craig Anderton, which is somewhat self explanatory in subject matter. I provided music content, for which re-mix examples were done and included with an extra media content CD that came with the book.

That really seemed to go over well... I can see where you are coming from.

The tricky thing about book publishing... doing it on a level like this, you have no idea what the demand will be until things get rolling. I would imagine the reception to a podcast will be a bit of an indicator. It wouldn't be great to have a box of a thousand books centered around Leopard sitting around, and then Snow comes out.

Baby steps :o)

tobyspark's picture
Re: The Lone Ryder

kineme university / podcast:

so... yep, if there's going to be a machine =]

usefuldesign.au's picture
Re: The Lone Ryder

Yes, gtoledo3, Baby Steps for sure. I've been around on the ground floor of a few designer apps over the years and can feel the ones with legs (I like to think!). I don't know if QC quiet measures up to the impact of Quark 1.0 (or Ready Set Go which I used) or Final Cut 1.0 but I have a feeling we are going to be living in a much more screen saturated culture pretty soon, in cities at least (hello blade runner).

Tools like QC that leverage IT and external devices as well image making are going to be more and more required by designers and developers. Developers will buy books if they can save time, money and frustration. Designers will buy books if they feel it can give them an edge or if it resonates with their interests. (And libraries will buy books because somebody with no idea thinks it looks cool/important/useful or was recommended.) Certainly wiki's seem to be taking the world at present. Is all this "wait for Snow Leopard" talk hinting or just sensible optimism???

The linearity of a book/podcast series can be an advantage for newbs (like me) over large wikis where prior knowledge level has to be assumed as novice or otherwise.

mattgolsen's picture
Re: The Lone Ryder

lulu.com? Print on demand would be the perfect answer for something like this.