Vimeo Channels

cwright's picture

As more and more people discover Quartz Composer, I get more and more questions about how to do things in it. Since I generally work at a very technical level, I'm not very helpful to those just getting started.

To help get started with Quartz Composer and Kineme, I've decided to make some Vimeo channels with video how-to's for various QC-related things. I'm not entirely sure how frequently I'll be able to make videos for it, but I'll also accept submissions from others if anyone would like to contribute.

Right now, the channel can be found at - it's empty at the moment, so don't hurry yet :)

Any ideas on what kinds of topics we should cover with this?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

alexbeim's picture
Iterator (is that what it is?)

I would like to have somebody explain how the iterator works (if that is how it is done).

I wan to create a lot of objects and then I want to do colour transitions between them.

This is a good example of something like that

I have even looked at the files but I still can't understand it.


franz's picture
it is what it is

Futurismo's files aer probably the best QTZ files around. I would recommend downloading all quartz files from his site and make a deeper study of it. While QC's iterator paradigm isn't the clearest to understand, keep in mind that it is just a copy (of what's inside) whose parameters can be altered (and slightly differenciated) according to an Iterator Variables patch. Place this patch inside an iterator, and then you have access to the current' iteration index. There are alsoo some good examples at about iterators (which is, generally, a better website for entry-level info, albeit a "not-so-active" forum)

tobyspark's picture
momo the monster has put

momo the monster has put already and plans to do more qc tutorials online, possibly through create digital motion. i think the important thing is for this site to stay focused on the tools, but its not for me to say... but yep, certainly qc use is on the up

cwright's picture
oblig link

here's the link to momo's stuff:

franz's picture

how do you actually find the time to make a "How to install" tutorial... ? ( i'm still rotfl ...)

cwright's picture

I've just whipped out a bunch of code over the past week for a few projects, so I'm taking a bit of a vacation from code for a day or two. That video only took me 2 takes, so maybe 5 or 7 minutes total; nothing too crazy.

I'm trying to pick questions that I get most often, along with some that I've received more recently as well (the iterators one has been asked a couple times, and the plug-in installation question gets asked all the time still...)

I'm glad it made you laugh :)

alexbeim's picture
Those are great but the more

Those are great but the more the merrier I think. This site can still focus on the tools but some of us need help to use them :)

franz's picture
apple's fault ,

too bad apple didn't make any entry-level USEFULL docs. however, i think the bundled examples are pretty straighforward. (apart from the oterator stuff -that also took me some time to digest- )

mattgolsen's picture
This is a phenomenal idea. I

This is a phenomenal idea. I love Quartz Composer, and I'm in awe of a lot of the stuff that I see you guys do, but unfortunately I don't quite have the grasp to accomplish what I want. Personally some of the things I'd like to understand more would be the Modifier and Tool patches. I'd also like a quick run down on creating a stand alone application that can be made full screen ( I followed the Apple Dev article on creating a QC app, but I haven't been able to wrap my head around the coding for making a full screen one), or creating a .saver from a qtz file.

I guess some of those are more advanced than a simple tutorial, so maybe just an explanation of the different kind of patches, and examples that show a bit more than the typical rss feeds, or spinning globe demos.

franz's picture

"examples that show a bit more than the typical rss feeds, or spinning globe demos" you should definetly have a look a developer/examples/quartzcomposer/compositions/ there are plenty of comps really interesting (esp. in the conceptual folder, very good for beginners -- double checked: even the iterator example is nice) for a fullscrenn app, look for QCperformer in the same folder branch.

psonice's picture

I found the best way to learn was through practice - just set up a test, and try to fit each of the patches in, and see how they work.

When I looked around on the net last, there didn't seem to be much in the way of active QC sites, which i guess is why people gravitate to here.. at least there's some sign of life :D

Speaking of which, thanks to everyone who's answered my questions over the past month or two. It hasn't been in vain, my demo gets released at breakpoint tomorrow =) I'd offer to release the .qtz parts, but having looked it ended up at 2,521 patches, it's undocumented, and it's a real labyrinth of macros and spaghetti. It'd probably take a few days to figure out where things are :/

Maybe I can strip out some examples though - I've used pretty much everything, nested iterators, GLSL and CI filters, javascript, render in image, ... Oh, and some really evil timers - I ended up with a huge network just to handle the time. A huge hint for anyone working with audio - make a custom timer, multiplying the audio time by the length of a beat (BPM/60), and all your signals, timelines etc. are based on 1 unit = 1 beat. Synchronising stuff is sooo easy after that!

tobyspark's picture
Behold the voice of CWRIGHT: And lo! it was KineMEH!

...and there was me always calling it 'Kineeeem' not 'Kinemeh'!


cwright's picture

Back when the project was named (several years ago), we always pronounced it "kinemé" ('kin-uh-may' in American English) -- it was only later that we discovered "kineme" (basic unit of body language, "kin-eem") like "phoneme" (basic unit of speech, "fo-neem'). So perhaps we should add an accent mark to clarify it :)

And then there are the people who think it's two words, "kine" (cow) and "me" ... not touching that one ;)

cwright's picture

I've not personally spent much time in the examples folder, but whenever I do, I realize just how much is really there. Despite the lack of written docs, there's a good amount to learn from that folder; sometimes it's a bit tricky to find things though (that goes for the developer examples too -- some technologies don't really have obvious demos, so you have to explore a lot to find what you're looking for).

DanieleCiabba's picture
Can you post an example of

Can you post an example of timingsync? thanks

cwright's picture

I've also come across some more demos/tutorials by shakinda here:

Pretty slick, and he uses a transparent black terminal too, just like me, so he must know what he's talking about ;)

nobbystylus's picture
Thanks alot for these QC

Thanks alot for these QC tutorials. I think there is a pent up demand for decent video based tutorials for QC, especially as apple's stuff is seemingly aimed at developers and not really 'end users' (people making ART, VJ stuff etc etc).

Keep em coming!

alexbeim's picture
Input splitter

Can you do a quick tutorial on the use of the input splitter?

psonice's picture
input splitters

I've not got the facilities here to make a proper tutorial, but i'll explain how I use them, it might be helpful enough.

If you've not figured out exactly what they're for yet, all they do is split one of the lines between patches into two, so you can connect it to 2 different inputs. Of course, you can do that anyway, by just connecting the output directly to the 2 inputs, but there's a few places where they're invaluable. There's 3 cases where I tend to use them:

  1. Tidying up spaghetti. This is the most obvious use - you have a patch right on the left side of the editor that connects to a few things. There's 3 patches that need a connection to it right on the far right side. Put an input splitter over on the right, and you only need one wire going all the way across, plus three short ones to connect the splitter to the inputs.
  2. Macros and published inputs. This is more useful. You have a macro with several patches inside, and they all take an input from outside the macro. Instead of publishing the input of each patch, and connecting them all separately, use an input splitter inside the macro and connect them all to that. Then just publish the input of the splitter and connect that. Much tidier.
  3. Getting rid of those annoying rotary knobs. QC has lots of those annoying knobs that you have to spin round with the mouse, which are really fiddly. You can make them nice and usable with input splitters. All you do is add an input splitter to the parameter you want to adjust. Go to the settings of the splitter, you'll see the min/max values. Set those to the min/max you're likely to need for this input. Now that nasty knob has turned into a convenient slider that goes between the values you set.

toneburst's picture
Re. Point 3

There's been some discussion on the rotary controls on the official Quartz Composer Developer list. Lots of people chimed in and said they found them annoying, and at least one has filed a report on the Apple Bug Tracker, so hopefully Apple will sort this out at some point. I've incidentally also filed my own Bug Report about the bottom pane of the Inputs & Outputs Inspector panel not being resized when you resize the Inspector (which really bugs me).

As psonice says, it's usually best to use an Input Splitter to set the usable ranges for controls. I find it helpful to do this fairly early on. I also find the Interpolation patch invaluable when it comes to scaling controls. If you right-click it, and set Timebase to External in the contextual menu, you can then connect a Splitter to the Patch Time input. Set the range of the Splitter to 0>1, then you can set Start and End values in the Interpolation patch. This way, you can set end values that are higher than the start value (reversing the action of the control), and also set different curves for the control. This is really useful, for example, with zoom controls, where an Exponential control-curve looks much more natural.


Quartz Composer Blog:

Music Site:

psonice's picture
Nice idea!

I hadn't thought of doing that, but I think i'll be adding it for the camera zoom on my current project. Nifty!

toneburst's picture

It's especially handy for zooms, because with a straight linear control, objects always appear to zoom out faster the further away they get. It's an optical illusion, I think, but making the control exponential fixes it nicely (can't remember off the top of my head if it's Exponential In or Out, but it's pretty easy to tell). You can even make your own custom curves if you like, which I've found useful on a couple of occasions.


Quartz Composer Blog:

Music Site:

cwright's picture

this reminds me of an experimental composition I made with the Field of View patch (from GL Tools, not the built-in one) that would simultaneously shrink the FoV while moving the camera away to create the vertigo effect (also called contrazoom or Hitchcock zoom). Fun stuff, that :)

toneburst's picture
I nearly fell over, just

I nearly fell over, just thinking about it... ;)


Quartz Composer Blog:

Music Site:

jersmi's picture

I am putting together my first patches and right away I went on a tangent to understand how to replace the knob with the slider as often as possible... great tip!

psonice's picture
Tidy sliders

If you use the input splitter for sliders a lot, making a macro is a good idea.

Say you have a patch with 5 inputs you've converted to sliders, you now have a mess of 6 patches. Select them all, and make them into a macro. Depending on how your patch is connected, you may need to publish the inputs. You now have one patch, with all the inputs you need as sliders (you also get rid of inputs you don't need, making it even tidier!)

Edit: forgot to mention, i've suggested a better way of dealing with this on the QC mailing list, by adding a new pane to the patch parameters for setting ranges (like the settings of the input splitter, but for each input of a patch). Hopefully apple will get that or some other way of getting more useful inputs into a future version.