Praxis LIVE v2 - request for testers / input

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.

PL 140830

Praxis LIVE features include -

  • Live intuitive visual patcher - make changes on the fly.
  • Embedded javac - edit component (Processing) code, and inject it back into the running patch. Longer term plan is that all provided components are based on this and fork-able.
  • Not just one "sketch" - use as many components as you like within a patch, with minimal overhead.
  • Also live-code GLSL shaders (exported shaders should work within other Processing projects).
  • Code editor with syntax highlighting, code completion, error marking, etc. (from the NetBeans IDE)
  • Use annotations to mark up variables as controls / ports, and control them from other components, GUI, MIDI, OSC, etc.
  • Also - custom audio patches with low latency & JACK support, TinkerForge bindings for working with sensors, servos, etc.

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 !

  • edited August 2014

    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 ?

    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 -

    @ In(1) PImage in1;
    @ In(2) PImage in2;
    @ In(3) PImage in3;
    

    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

  • edited August 2014

    it appears this forum tries to turn annotations in code into profile links...

    Insert a space between the @ and the Annotation:

    @ In(1) PImage in1;
    @ Override String toString() {}
    

    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 :-)

  • edited August 2014

    "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.

  • edited September 2014

    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 @rbrauer

    There 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.

    distributed_hubs_sm

    Download | Release notes | Source

    More info on how to use the distributed hubs support in this blog post.

Sign In or Register to comment.