We are about to switch to a new forum software. Until then we have removed the registration on this forum.
There were a few posts on the old forum about Praxis LIVE, an open-source patcher environment for audio & video - think Isadora, Quartz Composer, etc. Version 1 of Praxis LIVE included a live-coding custom component that provided a partial reimplementation of the Processing API. Over the last few months I've been working on Praxis LIVE v2, which has involved many major changes, not least of which means that Praxis LIVE now builds on top of Processing core, and uses it as the basis of its OpenGL rendering pipeline. Among other things, this means that it's now possible to live-code components with the (almost) full power of the Processing API.
If you, like me, are interested in a project that bridges live-coding, visual patching and Processing, I'd love to get your input. The second testing release of v2 is now available at www.praxislive.org Source code, etc. is on GitHub.
Praxis LIVE features include -
NOTE - custom code you write does not extend PApplet, but for obvious reasons a custom class that delegates to an offscreen PGraphics. Most suitable methods are delegated - anything that would halt the pipeline like resource loading isn't, though alternatives are or will be available. Two changes that will likely need to be made - remove the size() method and replace all mentions of float with double (CTRL-H is find & replace).
I hope some of you are as excited about this project as I am - to others, apologies for the noise! :D Best wishes, Neil
Comments
Hello ! Your tool looks very cool but as far as I can see (without trying) each node has only one input. Is it possible to build "function-node" with many arguments ?
I'll give a try soon. I 'm thinking about how building that kind of tool on ipad/tablet and I'm very interested by your project.
Thank you for sharing your work !
Thanks @fanthomas. I presume you mean multiple video inputs? Yes, you can! There are built-in components such as video:composite and video:xfader that have multiple inputs. The xfader also automatically switches off rendering on inputs that are not required.
Adding multiple video inputs in a custom component is as easy as adding fields like this -
The images are injected automatically, and you can use as many as you want (or your machine can handle). Custom code doesn't currently allow for dynamically switching off an input (like the xfader) but that will be added shortly.
EDIT - it appears this forum tries to turn annotations in code into profile links - hopefully you get the idea :-/ at-sign(1) PImage in1;
EDIT2 - fixing as per @GoToLoop
Insert a space between the
@
and the Annotation:A pity I can't post CoffeeScript codes in this forum. There are too many
@
in it! :o3"I presume you mean multiple video inputs?" this was not exactly what I was thinking about :)
For example, if you want to build a component that modify the RGB channels of the video with custom value (this is an example, I'm sure you probably already coded a such component). Is it possible to create a component with 3 input related to the custom red, custom green and custom blue ?
Anyway, I will try ! :)
@fanthomas - maybe I'm not understanding what you're wanting to do very well :-/ Most flexible way to achieve pixel manipulations would probably be via the video:gl:filter component which allows you to define custom GLSL operations on pixels. You get 8 controls which can be attached to uniforms in the code - eg. uniform float u1, u2; etc. See the two new example projects.
@GoToLoop - ah, yes. Not ideal but better than it was :-)
"Most flexible way to achieve pixel manipulations would probably be via the video:gl:filter component which allows you to define custom GLSL operations on pixels. You get 8 controls which can be attached to uniforms in the code - eg. uniform float u1, u2; etc. "
That's exactly what I was thinking about ! Great ! :D
Hmmm, finally maybe not... I thought about customizing a shader with a visual-node-tool, but it's code only (it's great anyway)
@fanthomas - yes, it's in code. I'm not a fan of using visual nodes for lower-level coding, hence the mix of code for low-level logic and visual patching for high-level structure. It may be feasible to achieve a node-based GLSL editor within the Praxis LIVE infrastructure, but it's unlikely that I personally would put the work into it. I find the current mix a better balance and a faster way to work.
Sorry for off topic, but I used this post to experiment with the at sign stuff.
@
is the HTML entity character reference for at sign. You should be able to use that with no spaces and avoid the automatic link / user notification stuff.@rbrauer
@rbrauerThere is a list of characters and their HTML entity references here:
http://www.freeformatter.com/html-entities.html
Hmm ... I guess it doesn't work in code blocks though. I should have thought of that before I posted.
Praxis LIVE v2.0a3 is now available, bringing support for distributed hubs - running a project across multiple processes either locally (eg. for better performance) or across a network.
Here's me live-editing Processing and GLSL code on one laptop as it runs on another.
Download | Release notes | Source
More info on how to use the distributed hubs support in this blog post.