Adding Additional Programability to Studio Artist

There's been a lot of discussion recently in this other thread about whether we should add more user programability to Studio Artist. So i thought it made sense to start a specific discussion here in the feature request group about this topic. So let's try to move that conversation here, as opposed to a general thread on data visualization.

…...

One thing that was brought up in that other discussion was the notion of adding text based programming options to Studio Artist. Specifically text based scripting of some type. Two examples of other systems mentioned were the following

CINEMA4D-C.O.F.F.E.E

MAYA-MEL

…..

My quick take on the 2 options mentioned above is as follows:

COFFEE looks like a proprietary textural scripting language with high level programming features features similar to java or c or perl. Implemented using an interpreter (as opposed to being a compiled language).

Mel looks more like a way to specify something like a MSG preset using a script as opposed to having to use an editor to do it. When you look at it from a Studio Artist standpoint.

…..

MSG presets actually are a kind of programming system in a sense. That are already available within Studio Artist, and extremely underutilized in my opinion by our users. And they can be used to provide user definable extensibility to other Studio Artist effects like the paint synthesizer.

They are user configurable modular image processing effects, and you can configure basically an unlimited number of effects out of the hundreds of image processing modules available there. But you use an editor to program them as opposed to a text script.

Now we could potentially add a text script way of building them. But i'm not sure if that is something advantageous to do with our limited development resources or not.

Feel free to pipe in with your opinions about that.

…..

I'll post a more long winded explanation of the philosophy behind the development of MSG here tomorrow, to put the existing MSG design in context. Like everything, there are strengths and weaknesses to different approaches to building systems.  The strengths of the MSG based approach maybe aren't obvious to people requesting that we develop text scripting systems, so i want to spell that out. Why we made certain choices as opposed to others.

…..

I guess one thing i'd be interested in is if you have strong feelings that we should be spending more development efforts on adding additional user programability that is scripting oriented, then i'd really like to hear some specific examples what you would do with that capability. From the standpoint of using Studio Artist features.

I say that, because i want to figure out if we really need text based scripting to pull it off, or if it could just be done with extending additional modulation options we may already have in development. Or just by using existing user programability and customization features like MSG that already exist in the program.

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

Join Studio Artist

Email me when people reply –

Replies

  • Thinking about Foran's Programing requests and looking at some of the specifics in the last post on the other thread, I believe that much of what is wanted is not so much a scripting language as access to the UI to customize what is available via shortcut/hotkeys.

    I do like the suggestion that the Paint Synth, or for that matter any of the mode's, internal variable parameters be available for adjusting while a loop or gallery show is running. I also am pretty sure that making all of the parameters available- by which I mean 1 click or hotkey away vs buried in the interface-- would be unwieldy. However, if the user could assign actions to a slider bank or even have a quick way to call a parameter that could then be adjusted via the arrow keys this would be huge HUGE for live performance.

    We have elsewhere discussed adding sound and other external inputs as variable adjusters to these parameters- maybe then it would be possible to have an external device that could be manipulated in real time to adjust the parameters.

    • That's why i'm being a little hard on him and asking the questions i'm asking, because i want to get at what is really wanted from a higher feature level. If someone wants to build dynamic paintings from atomic bits, which is the analogy to doing it with raw c or java code, there is nothing stopping them, there are plenty of tools available that are c and java compilers, or tools like Processing which is basically a java interpreter with some pre-built in graphics oriented apis you can call as opposed to writing them your self in bits and atoms.

      So have at it people. And good luck. And i hope you have a lot of time on your hands. And a really high level math and engineering background. Because you're going to need it.

      Now as to your main idea above, that what people really want is more flexible modulation of existing parameters available within Studio Artist. Yes, that's a key insight. One we've been thinking about for a long time. I whip myself daily (metaphorically) for not have that in place already. And we have all kinds of plans for how to extend the existing interface to add it.

      And when i was kind of obnoxious and pushed Foran for a specific example, it seemed to me that what he was really asking for was Midi modulation of parameters in Studio Artist. Because he wants to control the program from a midi keyboard (or at least that's what it sounded like to me). Jump in and correct me if i'm mis-interpreting that.

      And adding a java interpreter (or something like that) to do that would be the absolute worst way to do it, in my opinion. There are other ways to add that advanced modulation functionality that are much more straightforward and intuitive ways to do it, and they fit in with both our existing interface as well as our whole underlying synthesizer metaphor much better.

    • Right so get to it John. Not that I want to be hard or obnoxious towards you, but we hear a lot about "we have all kinds of plans for how to extend the existing interface to add it" and a lot less about a schedule for when that might be done.

      quick recap::

      completely re-write vector (b-spline) handling so that drawing and using paths is as much fun as the rest of the program

      Add in external input as a parameter variable to all variables in SA. (SND being a key input)

      Make PASeqs nestable-(compiled)

      create a new class of action steps -- in this class would be "repeat last action step n times" "equals mouse down" and any other command that might be useful in manipulating the actions inside a PASeq

      Make everything faster 64 bit and GPU aware

      Add more access to the UI for Live performance mods --which also adds to ease of use for non live performance uses. 

      create a player so that people can share dynamic art with others who might not be inclined to buy a program for making art.

      Extend the SA Magic to 3D - via point cloud modeling.

      Find a way to offer the results of resizable layers

      oh and can we have all this before Christmas 2014 Please!!  ;-)

    • Believe me, no one is more aware of how long it takes to get things done sometimes than me. And the last 5% seems to take longer than the first 95%. Sometimes unanticipated things get in the way. Like life. Or the computer manufacturers we develop for, who sometimes seem to be working against us rather than working with us to help move things forward into the future.

      Let's take GPUs for example. Now if we only shipped Studio Artist for one specific GPU card, then we could do all kinds of wonderful things relatively straightforwardly. But that's the last thing we want to do, only ship for one GPU card. And every new mac model uses a different GPU. And we're cross platform to boot, so we need to do whatever we do in a cross platform way in addition to a cross GPU vender way. While every GPU vender and every computer manufacturer is going out of their way to try and prevent developers from doing the kind of thing we want to do. To write things once and then have them work cross platform.

      And i could go on and on, but i won't. So sometimes behind the scenes things like that slow down or sidetrack us from where we would like to be.

  • Some maths, abs(x)+abs(y)+abs(z)-2 and the result

    2472677580?profile=original

    • John,

      Speaking directly to the idea of more programability in SA, there is something I would like to see added. This element would add some programming like ability to the real world use of SA for performance or Living art  pieces. Specifically and "initiate PASeq" command that would be able to be triggered by changes in the source image.

      How do i see this working?

      So currently we can have the Gallery show run through presets or a folder of PASeqs either in sequence or at random based on a time element. What if the trigger to switch was based on elements in the source image - hue texture lum or even a threshold measure of movement in the case of using a live feed.

      So sticking with the live feed example the gallery show might continue to run a single preset or PASeq until something moved in front of the camera, then it might continue with the new/next preset/Action Sequence until either the movement dropped below the programed threshold or a different trigger initiated a different sequence. For example maybe one trigger might be x% of the source field contained a defined red hue (more likely a range of values in the red spectrum). So if a person or group walks in front of the camera wearing red jackets a new preset/action sequence might start.

      This could just as easily work for a folder of images (well except for the motion bit). Still, the point is image or sound or external input variables being used to initiate action sequences would be very cool.

      I guess this would actually be an addition to the Gallery show features. Though there might be some sort of interactive  tag at the beginning of a preset/action sequence that could identify the init trigger associated with that sequence. All of this would be even more interesting with complied or nested PASeqs. Maybe too the trigger might come from the generated image(canvas). So for example if the canvas went all blue or all black etc the next sequence might be initiated...  Lots of possibilities.

    • What i really like about this style of bantering ideas around is that it really helps to focus my thinking. So at the end of my long reply to Foran about my personal viewpoints on various issues he brought up, i got into the territory of dynamic art being a new historical development. And yes, you kind of have to make that style of new dynamic art now days using very low level programing. But having higher level tools to do it would be a really cool new thing to have access to.

      So i'm with you on thinking that this would be a very interesting areas to explore.

      In some sense, gallery show was supposed to be an approach to doing this. At least that was the original thinking for gallery show. Not that anyone has really taken it there i think. Where it was originally intended to go to.

      You might ague that didn't happen because there wasn't a 'player' available for it.

      But i'm not aware of anyone who has used it in an art gallery situation to make a dynamic art exhibit. Which you could do the way it works now without any additional player feature. Please set me straight if someone out there has used gallery show for what it was originally intended for.

      It's interesting how users immediately picked up on other ways Gallery Show could be used instead, and that's kind of how it's developed and been used over time.

      So people use it to make large sets of new mutated presets to sort through. To find keepers.

      Or they use it to churn out folders of finished artwork that they cull through to find keepers.

      Or they use it to help visualize the range of capabilities of a specific studio artist effect, like a specific ip op effect of example. That use never occurred to me until i watched it in action, and then i realized how extremely useful it was.

      Because i was watching it randomly mutate a specific ip op effect i wrote, and it was generating all kinds of different effects i had never seen it make. Because it had never occurred to me to set it's controls the ways the random mutation was setting them. So i learned something by watching it run that way.

      We've been beefing up gallery show with all kinds of new features. I'll think about the suggesions you made above. And please feel free to suggest more. i run gallery show every night now while i eat dinner, or watch a tv show, and watch it work. And i learn so much as it does that. As i watch it run automatically.

      Anyone who has been following my personal art blog has noticed that has been my primary focus for posts there recently. Exploring what gallery show can do, and expanding those abilities. I guess sick gallows humor has also been another recent focus there, but that's another story.

    • John

      I use looping dual mode to set up living artworks. These are real-time dynamic ever changing visuals. Dual mode loop is a bit problematic with Gallery show. So if you could sort that out it would be great. Dynamic Masking is available but there are vector presets and regional starts that obliterate the mask buffer- so that would be something to look at.

      I could use a command that simulated a mouse down (click) event, and a way to specify coordinates for the click. I do not mean via x,y value but rather something dynamically related to the canvas image (and of course random). Why?-- in Dual Mode loops one can get nice variation by mouse clicks that re-orient the center of the second operation's transformations. If I am doing a live performance then this is my role, but if I am creating a dynamic living work that will continue without my presence I would need the mouse click simulacrum.

      If I want to dream- being able to do 2 dual mode looping paints - in separate layers and have them composite (usual choices) would be fab too. Maybe movie layers is a work around for this that I have not sussed out yet?

    • There are dual mode techniques in gallery show now in V5. I can take another look at it, because there might be things we could do to make it more flexible. There's a build Dual Mode from Current Favorites option node.

      So that can be used to randomly build new ever evolving dual mode effects by being clever about what you put in your current Favorities folder. Because those presets don't need to be dual mode preset, they could just be paint and MSG presets for example, and it will continuously shuffle new dual mode presets together out of that raw material.

      There are also some new loop action gallery show techniques as well. Including one that builds dual mode presets on the fly. You set a Max Loop, just like you do for Max # paint strokes.

      Running 2 dual mode presets at the same time is an interesting idea. Maybe because you have the high core mac pro you feel that way. I get a lot of comments about dual mode from people where they don't use it because they think it's too slow on their old  or slow computer.

      In some sense what i do with start and end cycle processing mixed into the overall gallery show cycle processing is kind of an alternative way of building a dual mode kind of effect.

  • Also, as we discussed here about MSG too, direct SVG and EPS export (without using a PASeq) for import in 3D software ?

This reply was deleted.