Praxis LIVE v2 - hybrid visual IDE for creative coding

Praxis LIVE is an open-source hybrid visual IDE for creative coding. It mixes a visual patching environment for audio/video (think Quartz Composer, Isadora, etc.) with coding in Java and GLSL. Everything is editable live, including code - an embedded compiler is used to inject Java code on-the-fly into a running project without missing a frame (or beat).

FEATURES

  • Real-time audio / video - Designed for live manipulation of audio & video. OpenGL graphics pipeline with accelerated video processing. Low-latency audio with optional JACK binding.
  • Intuitive graphical patching - Patcher-style editing for fast visual project building. Drag and drop components, draw in connections. Edit everything live - instant feedback without interrupting your creative flow.
  • Extend at runtime - Fork components on-the-fly, or create new ones from scratch, all without dropping a frame. Integrated editor for Java, Processing & GLSL. Export and share, or import from a growing library.
  • Custom controllers - Build control panels in the visual GUI editor - widgets automatically configure and sync themselves to properties. Map MIDI controllers or OSC addresses to any property.
  • Physical computing - Simple video components for analysing motion can be used to control other parameters. Use the TinkerForge bindings to access a range of sensors, or control motors, servos & other equipment.
  • Distributed by design - Built from the ground up for working with multiple media pipelines, using a distributed architecture. Option to run projects transparently across multiple processes (VMs) or machines.

DOWNLOADS

Installers for Windows, OSX and Linux available at www.praxislive.org

Various examples and a custom component repository are also available from the website. Contribution of examples or custom components is actively encouraged!

There’s an online manual (still in progress) at http://praxis-live.readthedocs.org

Source code is available at https://github.com/praxis-live/ To build you’ll require both the praxis and praxis-live repositories, and a copy of NetBeans (Praxis LIVE is a NetBeans platform application)

LATEST VERSION

The latest version is v2.2.0. The OpenGL pipeline is updated to Processing v3, and adds optional GStreamer 1.x support.

SCREENCASTS

Rough Cuts is a selection of uncut and uncommentated screencasts of Praxis LIVE in action. Recorded at 1080p and best viewed fullscreen on YouTube (hence not embedded) to follow what’s going on

WHAT CAN I USE IT FOR?

Or, is this relevant to game developers? :wink: Well, that slightly depends on how wide your view of “gaming” is - I personally use it for creating interactive play-things in public spaces, such as this. I know various people who’ve used it for VJing. You could use it as a live code sketchbook, playing with Java or GLSL.

GET INVOLVED

Interested in getting involved in the development of the project, or making examples / custom components - speak up below!

Saw this and just thought it looked awesome . Definitely going to use this.

Thanks! :smiley: Let me know how you get on. I didn’t publicise the first alpha beyond some known users, so be interesting to hear back on what does or doesn’t work for you, or what feels confusing. There is a manual for v1, but it’s not been updated for v2 yet - should still help get you started.

Ok thanks , ill have a play around with it when I wake up :slight_smile:

I downloaded the latest test build and it worked well.
Would be good if it came pre-loaded with a cool demo project that would play some music and make a video with GLSL just to show off the features.
Impressive for how you were able to borrow some code from netbeans. Was it difficult to integrate? I’ve also experimented with the swing code editor JSyntaxPane but found it to be unreliable and always wanted to know how hard it would be to borrow the editor from netbeans or eclipse.
Cheers,
Keith

PS: The older version 131206 didn’t work when I started it. Just an opening splash screen and then it died, with the process disappearing on the task manager. Windows 7, intel i7.
Also I tried downloading the example zip file (examples 120620.zip) but couldn’t figure out how to load it. When I did import project from zip, it popped an error dialog saying “entry anImageFileName already exists. Replace, change…”. Then it failed to add the project. Unzipping it manually and trying to load as a project didn’t work either since it wouldn’t let me select the unzipped examples folder or any sub folder.

Great, thanks, good to know.

Agreed(ish). Some more up-to-date and more exciting examples are definitely needed. I’m less sure about packaging them in the install unless I can make some without many resources - the installer for the new version will be big enough already.

I presume you tried the New Custom and Smoky 3D examples on the Resources page?

Praxis LIVE is based on the NetBeans platform (in fact, it’s in the showcase) so integrating the editor wasn’t too difficult, though connecting everything up so that it treats the in-memory class body as an actual Java file was fun! :persecutioncomplex: If you’re not building on top of the NetBeans RCP, I’m not sure I’d even attempt to use the editor - there used to be a separate library available but not for some time. Not sure how usable the Eclipse editor is outside its platform either.

In the depths of time I used JSyntaxPane too, but for the last few years the editor in Praxis LIVE was RSyntaxTextArea. I’d recommend it if you’re looking for a lightweight code editor component, and it has some additional code completion support (though not as good as a full IDE editor, hence my switch).

But I bet not Java 7! :wink: Unfortunately 131206 is not compatible with Java 8. Not my fault - there’s a bug in NetBeans platform 7.2 - that version of the IDE doesn’t work with Java 8 either. I’ll be glad when I can consider Praxis LIVE v2 stable enough to remove the 131206 download.

After unzipping externally it should recognise all the subfolders (01 Hello World, etc.) as projects which can be opened. ??? Also, in case you got this far, remember to restart the hub (red circular arrow) between trying to run each example.

The project zip / unzip menu items are from the underlying platform, and may be more trouble than they’re worth at the moment. I’ll do some testing with them prior to the next release, and if they’re not proving that useful will hide them.

Thanks for your input, Neil

Aha! cool, yep the examples work now that I open them as projects. The video input and blob examples were cool, they grabbed the video from my laptop camera just fine. How did you do that? What java lib can get access to the video camera so easily?
Thanks for letting me know about RSyntaxPane, it looks much better than JSyntaxPane 8)
I couldn’t figure out how to edit the code in the ‘live coding project’, there wasn’t any button next to the properties of the code element.
The GLSL example just showed a blank window, but I couldn’t turn on the openGL pipeline since only the ‘Software Renderer’ was available in Tools/Options/Video.
New Custom and Smoky 3D were good. Would be nice to see a demo with an animation of flashing lights or something which is sync’ed with the bass of a song.
Cheers,
Keith

That’s GStreamer with the GStreamer-Java bindings. There’s an old thread on here somewhere with code to use GStreamer with LWJGL (GstLwjgl) - you appear to have appreciated it at the time! :wink:

Ah, that’s a change in this alpha release - to edit code now you need to right-click on the component (header) in the graph window and choose Edit code from the popup menu. You can edit shader code the same way. The code will open in a separate editor tab - every time you save the code file it will be re-compiled. Quite a few of the components in the new examples can have code edited in that way - eventually it will be possible to edit the code of most of the built-in components.

You can also double-click components to open properties in a separate window, if you haven’t found that yet - useful to keep them accessible while editing code.

Another change in v2. There should be a message showing at the bottom of that option window. Renderer setting has been moved into the ‘root’ settings for the video patch. Open that project, click build (you can’t change renderer while it’s running), open the video.pxr file in the graph, click the button next to play in the editor toolbar to open the ‘root’ properties, and change the renderer there.

Yes, I’ll put something together - in fact, the logo and splash screen are stills from a project that does pretty much that. The audio sequencer example is doing animation based on audio levels too, though it’s only drawing shapes.

This video is quite fun http://youtu.be/MFkG1yE3oJQ - done by a VJ from Australia. It’s using an external FFT program to control a shader in Praxis LIVE via MIDI. At some point I’ll get around to adding in an FFT component.

You may also want to check out the Praxis LIVE video playlist - http://youtu.be/n2OOZsY-mj0?list=PLGCnxrNN7cdAEcR30a6Iq7c9HhDUSJrre - they’re a bit old now, though - I’ll get some more up-to-date videos done soon.

Hi

We can mention your application in the homepage of JOGL if you want.

Just released a minor bug-fix update that addresses a couple of issues with correct saving of custom code in the last snapshot.

Praxis LIVE v2 snapshot build:140905 Download | Release notes

Thanks, that would be great! :slight_smile: You’ll probably want to make sure that it refers to v2 though - the current stable v1 release is still using LWJGL. I’ve just edited some links on the site to explicitly refer to v1 & v2 to avoid any confusion.

A slightly belated update that a new alpha release is now available, which finally brings distributed hubs into Praxis LIVE. There are two primary reasons for this - running pipelines in different local processes to reduce GC timing effects (eg. on low-latency audio), and running and working with pipelines running on different machines across a local network. Read more about it in this blog post.

Here’s me editing Java & GLSL code on one laptop while it runs on another laptop.

… which does give me one idea that might be useful around here - live-coding GLSL shaders on multiple machines at the same time to test on different graphics cards / OS?

Get it while it’s hot,
Praxis LIVE v2.0a3-141101 Download | Release notes

Sick. I really need to invent a project to do that involves the use of this. :point:

And hey, I have that lenovo too!

Thanks! You seen this? It’s what I use it for, anyway. ;D

Awesome laptop, and means I can test on Intel and Nvidia easily.

And finally … Praxis LIVE v2.0.150313 is ready for download.

This is the first full release of v2, and adds the remaining major piece of the jigsaw - Fork All - most built-in components have been rewritten to use the custom coding API, meaning if they don’t do exactly what you want, you can edit them on the fly.

Now to get on with all those other pesky things, like release notes, new examples, custom component repository, updated manual … but that’s for another day, for now I sleep. :smiley:

Well, release notes are up!

I’ve also put up a (currently hidden) OSX app bundle. If you’re intrepid and fancy testing it, it’s here.

I’m quite pleased with the new live-code / Fork All support, which makes heavy use of annotations. Here’s a fork of the built-in core:math:add component (just added range so you get the slider)

And the code for this is just -


    @P(1) @Type.Number(min=0, max=10) 
    double value;
    
    @Out(1) Output out;
    
    @In(1) void in(double x) {
        out.send(x + value);
    }

Which is all compiled and configured on the fly. Of course it gets more fun when you throw video, GLSL, etc. into the mix! ;D

Unlock request granted :point:

Thanks @Riven

I’ve updated the top post with the current state of the project (which is out of alpha now and on v2.1-150808)

Added links to some recent screencasts, which as mentioned above are better watched fullscreen on YouTube itself if you want to see what’s going on - they’re all 1080p

Next version in the works will update the OpenGL renderer to work on top of Processing v3, which offers more stability and finally ditches AWT for NEWT! ;D

It will also have optional support for using GStreamer 1.x instead of 0.10 - had to take the plunge myself and work on updating the GStreamer-Java bindings - source for them is up at https://github.com/gstreamer-java

Praxis LIVE v2.2.0 has just been released.

  • OpenGL video pipeline updated to Processing v3.0.1 / JOGL v2.3.2. While providing major performance and stability improvements, this is a major change and there is the possibility for some regressions. Please report any issues.
  • Optional support for GStreamer 1.x. This can be set under Tools / Options / Video / GStreamer (requires restart). Unlike GStreamer 0.10 support, this requires a system installed version of the GStreamer library on all platforms. Windows and OSX users who want to experiment with this feature can download GStreamer from http://gstreamer.freedesktop.org/download/
  • New core:tracker component, and a simple table-based tracker editor (use popup menu and Edit patterns to access). More advanced editing features to follow.
  • New audio:clock component for more stable timing in BPM (quantized to internal processing buffer size).
  • Internal (and outdated) help removed and replaced with link through to online manual at http://praxis-live.readthedocs.org
  • TinkerForge bindings updated to v2.1.5.
  • Added ready and error ports to video:capture and video:player. Can be connected to play or pause to auto-start playback when new file or pipeline loaded.
  • Many minor bug fixes (see commit log).

Downloads - http://www.praxislive.org
Source code - https://github.com/praxis-live

Do you plan to use the JOGL build-in media player based on FFMPEG and LibAV?

No. I’m a big fan of GStreamer, it has more features than ffmpeg / libav (has plugins for them). I also need to support video in the software rendering pipeline for doing things like motion tracking. Not to mention I’m one of the gstreamer-java maintainers. :wink: