picture home | art | events | music | rack extensions | downloads | pixel blog

omino pixel blog

pixels, motion, and scripting
david van brink // Sat 2012.09.22 00:10 // {after effects}

AE: omino_python Updated!

Omino Plug-in Suite has been updated!

Most importantly… it installs correctly for AE CS6. (*yawn*. Sorry for the delay.)

Put most excitingly, scripts for omino_python now let you name the parameters. Earlier versions just named parameters like “float 0” and “color 2”. Now, each script can define the names of the parameters it uses.


Which is a bit overwhelming. Most of those parameters don’t do anything.

But now, by including a second callback ompy_params(d), you can show only the parameters you use, named as you like:

def ompy_main(c):
    ctx = c.layer_out_context
    ctx.set_source_rgb(c.colors[0].r, c.colors[0].g, c.colors[0].b)
    ctx.move_to(c.points[0].x, c.points[0].y)
    ctx.rotate(c.floats[1] / 57.29577951)

def ompy_params(d):
    d.floatDescs[0].name = "font size"
    d.floatDescs[1].name = "rotation"
    d.floatDescs[2].name = "value to print"
    d.pointDescs[0].name = "print position"
    d.colorDescs[0].name = "print color"


Download the Omino Plug-in Suite (for Mac OS X only, alas) absolutely free at Omino.

oh, i dont know. what do you think?

david van brink // Sat 2012.01.7 18:22 // {after effects}

AE: A Silly MIDI Trick

For amusement purposes only… after importing a MIDI file as keyframes (see earlier post), I rendered it back out using After Effects as a synthesizer, with the provided Tone audio effect.

This was done by setting the Tone frequency expressions to reconstruct the appropriate musical pitch:

on = effect("ch_1_vel")("Slider").value ? 1 : 0;
note = effect("ch_1_pitch")("Slider");
on * 440 * Math.pow(2, (note-57)/12)

You could change 12 to something else, to hear it performed in some alternate equal-tempered scale. 8 and 17 sound kind-of interesting…

And here’s the self-contained CS5 project to download.

Ariel // Mon 2012.04.16 23:5611:56 pm

Hi, I was wondering if there’s a way of processing an Image (in a layer) in after effects.
reading pixel by pixel color value. can u’r python script provide answer? thanks

oh, i dont know. what do you think?

david van brink // Thu 2012.01.5 22:47 // {after effects}

AE: Omino Snake

A quick note about one of the plug-ins in the omino suite: Omino Snake!

It was written late one night for a specific purpose. I was doing some promotional animations for my friends’ Science Tarot deck, and got to “High Priestess, Benzene Dream” in which Friedrich August Kekule von Stradonitz dreams of a snake eating its tail. And this was the mystery of the benzene ring-shaped molecule.

I wanted the snake to follow along a path. So, Omino Snake wraps any layer along a mask path, like so:

The results can be a little bit “chunky”; Omino Snake just dices the source image into thin triangles and spreads them out. You can adjust the “draw step” parameter to step in smaller amounts to help smooth it.

You could do the same thing, more or less, by animating with the Puppet tool, but it would be a bit tedious.

And here’s a little demo of it in action.

oh, i dont know. what do you think?

david van brink // Wed 2011.12.28 19:16 // {after effects}

AE: Omino Python, All Free

The Mac OS X version of Omino Python has been updated. An installer for it — and all my other After Effects plug-ins are in the downloads section here.

For anyone just tuning in, Omino Python is an After Effects plug-in that lets you write scripts to draw into a layer of an After Effects composition. It’s a lot like writing BASIC on your old Apple ][.

Changes to the plug-in are primarily:

  • Fixed a sporadic crash that could happen during text rendering.
  • No longer install any files in /opt/local or /usr/local. All gone.
  • Completely unlocked (no license needed for full use). Enjoy!

Here’s a frame from one of the example animations. This is a couple of for-loops in action.

And here’s the animation it came from.

And here’s the python source code.

ChrisG // Sun 2012.01.29 19:327:32 pm

Hi. Been a long time since I started messing around with this plugin (and then left it alone because I had other things to deal with). Well, now I’m back on it. And I have found some really interesting things. However, I’m wondering if you are ever going to be able to add the feature of getting something OUT of the plugin — a property that can be used in an expression but goes in the opposite direction of what exists now. In other words, something that changes by the py script, but is updated by the script as a property (as opposed to the other way around, which is how all the props work now). Is this possible? Just putting one “out” integer property would be AWESOME. Thanks in advance for any response (and thanks again for the cool plugin).

david van brink // Sun 2012.01.29 20:018:01 pm

Hi Chris —
There is a way! It’s a bit strange but will work. Render out a square of some color made of values R, G, B, say at (0,0,10,10). Then in an expression, use layer.sampleImage, to read it back. Something like sampleImage([5,5], radius = [.5, .5], postEffect=true, t=time).

You can use as many color-regions as desired to pass more value triplets out. (And probably want to clip your work so these “utility areas” aren’t on the final tape…)

ChrisG // Sun 2012.01.29 20:068:06 pm

Haha. I’ve already done that. I’d like less of a kludge.

ChrisG // Sun 2012.01.29 20:158:15 pm

Sorry. Should’ve made mention of that in my original comment. But is it possible to add that to the plugin?

ChrisG // Sun 2012.01.29 20:168:16 pm

Oh, and while I’m here … what is the correct syntax to set_hint_metrics?

oh, i dont know. what do you think?

(c) 2003-2023 omino.com / contact poly@omino.com