Algorithmic Drawing

I thought i'd open up a discussion directed at future features for algorithmic drawing in Studio Artist. Since Studio Artist is such a great paint engine, i'd like to open up control of that underlying paint engine more to interested users. So the open question is, what would be good ways to do that? We could of course just continue to expand the existing paint synthesizer path generation features. We could also add additional procedural path generation modules with editable slider controls. Another idea would be to add a scripting language to control Studio Artist. This could be very powerful, but perhaps most people would also be totally uninterested in this, since they would have to write script code to use it. Another tack is to focus on more interactive features to control drawing. We know everyone is already waiting for midi and osc support. Another idea here would be to provide some kind of indirection, so rather than pen movements directly generating paths they are used as modulators to procedural path generators (hope that made sense). Anyway, i wanted to open this up for discussion. I have my own ideas about what algorithmic drawing means and how i would want to use it if new features were made available. But there might be other people here with a very different take on how they would use it or what they would like to do. So feel free to speak up with any of your thoughts.

You need to be a member of Studio Artist to add comments!

Join Studio Artist

Email me when people reply –

Replies

  • Love the idea of scripting in SA! I use Processing a fair amount for "coded drawing," and I'd love to be able to do something like what can be do there within SA.
  • To expand on the Processing idea, and to just toss out ideas, what if you had something like the following:

    void setup(){
    patch myPatch = newPatch(34); // the patch data type maintains a list of all of the presets available as starting points, of which this 34 refers the 34th element in the list
    }

    void draw() {
    int x = 30;
    int y = 100;
    int strokes = random(100, 300);

    myPatch.paint(x, y, maxStroke strokes, pathAngle LUM); //paint with your patch, using keywords to modify the patch
    myPatch.paint(x + 10, 0, fillFrom UNDOIMAGE);

    }
  • also, keeping this idea distinct from the coding ideas below (or above), while as musician I think midi and osc would definitely be extremely cool, adding serial support would open everything up more directly to physical computing with microcontrollers. Now that the Arduino has come on the scene with a cheap and reasonably easy to understand way of taking data from sensors, etc, it would be very cool to be able to control SA by measuring presence in the room, or by how fast someone turns a kinetic sculpture, or whatever. Adding either midi or osc would make some kind of a bridge to the physical computing world possible, but it probably wouldn't be as direct...
  • "Another idea would be to add a scripting language to control Studio Artist. " - I would love that extremely!!!!!

    Maybe some kind of node-based visual programming window kind of like PureData or Quartz Composer for viewing Paint Synth routings?


    "We know everyone is already waiting for midi and osc support." - wonderful wonderful

    Yes, serial support would be great as Michael mentions, I want to hook my Arduino up to SA4 and Flash and go to interactive psychedelic paint heaven, and I think it could be done with OSC also.
    • Or, a node-based programming environment that let you drop down into, say, javascript when text-based programming is easier than connecting nodes...
  • My interest in a scripting option would be more along the lines of a control language for SA. Even just the option to add our own cmd-keys would be a start. I suppose that in essence the record history option and Paseq are already script writers, so what would be interesting is adding controls to features that are not included in the basic recording such as loop run.

    But I favor the addition of more interactive controls. A "left hand" device that could be programmed to certain activate features while one continued to draw, or a flir or gestures control either by camera or on a multi-touch device. In general I would prefer leaving the pen as a pen and adding the modulators on top of that via a different input.

    In the algorithmic vein I would like to see a genetic competition option so that mutations of imops or presets could be directed with certain parameters weighted rather than the current random distribution

    Here's a crazy notion.. not very SA in one sense but very SA in another.. how about a "learning" option for sketching. In this Idea the user turns on "learning" mode and sketches freehand for a bit. over an image maybe. the program intelligently analyzes the sketch in relation to the image and learns a sketch technique, which is then recorded as an imop. Perhaps this might be done even without the underlying drawing.
    • That notion is not so crazy. The original ideas for studio artist did include incorporating the notion of 'learning' sketch styles. Learning good settings probability distributions for different preset types is really another example of intelligent learning based on watching the behavior of a user.
      • yes that sounds very cool too
  • John,

    Maybe you could elaborate on what you mean by "algorithmic drawing" and what isn't accessible in the paint engine as is - but potentially could be.
    Thanks!
    • Sure. There's lots of different potential uses that could be addressed by opening up access to the Studio Artist drawing engine for control by some kind of algorithmic drawing process.

      One thing talked about above is a way to allow for some kind of scripting to control the drawing engine. So someone who understands how to write a script could write one that describes the path drawing associated with building some kind of image. Obviously the easier this scripting could be defined the more people could potentially use it. And i think different people would potentially use it in different ways.

      For me, one interesting use would be to allow for the generation of paintings that are not derived from a specific source image. These might be representational of some kind of virtual object or scene. Or they might be totally abstract.

      There's nothing currently in the paint synthesizer that allows it to be controlled by a user definable script.

      For example, suppose i want to paint an abstracted flower. Right now i could load a source image of a flower and built a paint preset or a paint action sequence to paint that source image in a million different ways. or i could build some set of image processing operations that transform a source image, abstracting it in some way (mildly or very severe) and then painting the abstracted source image, but the drawing itself is a function of a physical source image and how the paint synthesizer interacts with it. If i could control the paint synthesizer with a script then i could write a script that draws an algorithmic flower.

      Another example would be totally algorithmic painted abstract art. here's one example that was generated using the existing paint synthesizer functionality. So part of what we're talking about in this forum post are different approaches to doing this kind of thing. Extending the range of possibilities. Having a scripting language to control painting would really open up a lot of options for doing this kind of thing. Possibly adding new features to the paint synthesizer would be another option, but it's much more constrained while being much easier to use for non scripting oriented people.

      A lot of what we're talking about is abstracting the drawing process, so that paths are generated by some kind of algorithm or script. As opposed to being drawn manually or derived from a source image. So it doesn't necessarily have anything to do with interactive drawing. But there are other takes on algorithmic drawing that can be very interactive focused. Working with things like dual mode paint or live extend path shape in version 4 is one example. Both of these interactive painting features allow for a finished painting to be generated where there is a level of abstraction and indirection between what a user physically draws and what ends up as the final image. You could imagine other things like this where by interacting with a dynamic process you end up with a static image at the end of the interactive process.

      Now i could also imagine expanding this notion of a level of indirection between the physical drawing and what ends up on the canvas. So maybe the pen motion influences a semi-atonomous drawing system, or is mapped into some other ultimate path that is actually drawn. So maybe depending on how you wave the pen around it influences an automatic scribbling path generator. Or fills in a region with a hatching pattern where your pen movement defined the region area and hatching pattern. It's kind of very different from traditional drawing where the precision of your pen movement directly controls the precision of the final marks on the paper.
This reply was deleted.

Is anybody making a copy of all the material in the Tutorials Forum

Since the Forum is going away in June, has anyone started to make a copy of all the stuff in the Tutorials forum?I've made copies of some of the tutorial material on the main site, but haven't looked at the Tutorial Forum yet.I'm going to continue copying as much as I can for my own personal use anyway, but if anyone else is doing it, or has already started doing it, please let me know.Maybe we can co-ordinate our efforts. ps can't ..... believe John, would let this happen without so much as a…

Read more…
1 Reply · Reply by Thor Johnson Apr 13