Some Processing work

Some tests of using processing.

Processing is sort of a high level graphics language that compiles into java applets.

Note: These links all contain java applets, and have been known to crash a browser or two.

Processing seems nice. It’s very high level, with a C/java style syntax. Theres a simple bare bones IDE included. I like how it calls source files “sketches”. Kind of a nice semantic touch. It’s also open source.

See processing work at adrianlikins.com

order please

You know you are in a room of geeks, when someone describes something using the term “orders of magnitude” and specifies that is decimal orders of magnitude.

islands in the stream

I know a couple of people that read this are up on osx audio, and/or icecast and such, so…

I was reading loopers-delight, and one of the posters detailed a setup they used to stream a live set to the net. Not the newest idea in the world, but I’d never really given it much thought as something I could do if I happened to be playing a show in a venue with some wireless access.

Anyone using icecast or similar tech under osx? I’d probably be running the sound into cubase or Ableton Live to record, so would probably need to stream it from there (perhaps after some basic compression, etc). Anyone done anything like that?

All the phasmatodea stuff is freely licensed anyway. I don’t really expect anyone to listen in, but it would be something interesting to try anyway. Geek value.

Though the idea of adding a big pile of software to the already complex setup I have is probably asking for trouble, I might give it a try one day anyway.

If anyone has any experience doing this under linux, I’d be interested in hearing about it as well. I can always bring along the linux laptop as well.

Some info on doing this via icecast someone from the loopers list posted.

huh. How about that.

Apparently, part of the sounds for Microsoft Windows Vista is going to be by…

Robert Fripp.

See here.

That makes my brain hurt. I suppose Eno did do the win95 startup sound, so theres at least some precedent
of sorts. But still. One of my favorite guitarists… doing the windows sound? Weird.

Of course, if I had to hire someone to make a sound that represents a crash, I’d say fripp would be high on the list.

direct link to the video

gimp-a-thon continues

So, after not making much process on two different patches ( my C skills are so sad…), I decided to try to write something useful
to folks, including windows users.

So that meant script-fu. Which means relearning the not-even-close-to-even-a-minimal-Scheme implementation. I quickly remembered why I stopped writing script-fu scripts. The language implementation is horrendous, impossible to debug, and solely lacking in useful features (like say, file i/o, string handling, etc).

So, I wrote something, and stumbled across an error I couldn’t figure out. So I google “script-fu debugging”.

The first result is a link to a page I wrote. Ouch.

Whats worse, after reading it, it helped. Double ouch.

Anyway, I wrote a script to convert “image packs” to a set of brushes. It can be found at http://www.adrianlikins.com/misc/gimp.
It’s called images-to-brushes.scm.

gimp brush ideas and whatnot

A couple folks who read this over at layers.gimp.org and pixels.gimp.org and/or #gimp mentioned that I should let people know the various
works in progress I have going on, regardless of there current state.

So aside from the stuff at adrian.gimp.org/patches, I have a couple other
projects.

1. Adding support for rotating brush maps into the brushcore.

    This isn’t too hard actually. Just add some support for rotating temp-bufs (the structure that the brush masks are stored in, basically just a traditional “char *” pixmap plus some meta info.). Then plug it into gimpbrushcore at the approriate places. For the most part, this means finding the places we scale, and adding support for rotation as well. Then a couple ui things to add it to the dialogs. One interesting thing is the transformed brush cache can potentially get pretty big, since you can scale and rotate a brush, making for lots of things to cache.

    Now if your a graphics person, your probably saying “you have scale already, and your talking about adding rotation support, which not just add arbitrary affine transforms?”. Yup, why not?

    So, what the heck do rotated brushes buy you anyway? Well, since you can rotate based on the angle of the brush strokes, you can “align” the brush with the stroke. Some of the image hoses already do this to interesting effect.

    I have partial code for this somewhere.

2. Support for sampling the “background” image and computing the average color to use

    A very simple trick to make something look “impressionistic” is to average a groups of pixel’d colors, and replace all the pixels in the group with that color. With the right shaped “group”, it looks pretty cool. So, the idea is to choose the color to paint a brush stroke color with by averaging the colors under the brush stroke, and painting with that color. Add in scaling brushes, or brushes that follow the stroke direction, and you can get very interesting effects.

    An interesting question of course, is how to “average” colors. Just average the RGB colors is one approach. But converting the colors to HSV or HSL or CIE colorspaces might produce better results (I suspect CIE in particular, since thats a non linear transformation into a colorspace designed to similuate how the human eye actually works). But once the basic bits are there, thats all easy enough to changes. It would also be easy to add in computing average hue/sat/val, or “hottest” color, or most popular or dominate color (kind of an on the fly artistic color quantization). But mainly, I think it would look cool.

    Only issue from what I recall was figuring out which pixels are actually under the brush mask, and not just the brush bounding box. Also, how to weight in the alpha channel. Probably just premultiplying the mask into the background, and skipping fully transparent pixels is good enough.

    I have partial code for this somewhere.

3. A tool options/presets selector

    A given tool in Gimp has a lot of options, plus a “context” which includes the brush, colors, paint mode, etc. Starting in 2.2 or so, theres the option of saving “presets” of tool options. So you can recall say “chunky black brush with low opacity” and “single pixel brush with colors from gradient ‘foobar'”. However, the UI for doing this kind of sucks. Namely, you have to change to the tool, and then select the preset.

    I want a dialog with a list of tool options for all tools that I can oranize as I see fit. So that it is one click to switch from the crop tool with weird settings, to the brush you use for removing zits, to the smudge you use to curl hair. I think it would make the tool options presets much easier to use.

    I had some code for this, but it vanished in a reinstall at some point. I doubt much of the patch would apply to current gimp anyway.


An example of what you can do in my tree atm, which does not include any of the above ideas yet.