A few weeks ago I had the joy of presenting a short paper on Praxis LIVE at the International Conference on Live Coding at McMaster University in Hamilton, Canada. While acting as an introduction to Praxis LIVE, the paper covered a few of the new features in v3 (finally released last week!).
One of the highlights of the conference for me was Andrew Sorensen’s keynote on The Art and Science of Livecoding. Andrew’s Extempore programming environment and his thoughts on cyber-physical programming have partly influenced recent developments in Praxis LIVE (I say “partly” because this was already the direction of flow! 🙂 ) As someone long interested in the interactions between arts, science and technology, it was great to see examples of these ideas in use in fields like physics and astronomy as well as audio and video.
Version 2 of Praxis LIVE brings in Processing as a core library, and adds a whole new OpenGL video pipeline with access to most of Processing’s features. Almost all of Praxis LIVE’s built-in components are now defined via the new live-code API, essentially as small sketches that can be defined and re-defined as your project is running. There are also a number of base components for creating completely custom components on-the-fly. Here we’ll explore how to use
video:gl:p3d to translate Processing’s TextureCylinder example into a Praxis LIVE component. You can see this in action in the Smoky 3D example.
Smoky 3D example running with cylinder code open for editing.
So, you’ve got a String property that’s a fragment of Java code, and you want to open and edit it within the NetBeans editor; you want access to code completion, hints, and all that NetBeans goodness; and, you want your String property to update every time you hit Save. Well, that was the challenge facing me in integrating the NetBeans editor into Praxis LIVE for version 2.
core:math:add component with code open for editing.
The JAudioLibs’ AudioServer API is a Java library loosely inspired by PortAudio. It was initially designed early in the development of Praxis LIVE in order to provide a common callback-based interface for working with low-latency audio. This API has since found its way into a variety of other projects, primarily by people wanting to use the JACK Audio Connection Kit from Java (JAudioLibs’ JNAJack was developed at the same time). Using the AudioServer API provides an application the ability to switch easily between JavaSound and JACK at runtime. It can also make working just with JavaSound a little easier.
Praxis LIVE & Hydrogen linked through JACK
For some time I have been considering how to extend the AudioServer API to improve runtime service discovery, provide better access to features of the underlying audio libraries, and make it easier for people to contribute new implementations. A recent email from Ollie Bown, developer of the excellent Beads audio library, prompted me to spend some time over the last week trying to finish this work (the development version of Beads has been using this API for some time).
If you’ve been following this blog or the Praxis code site for the last couple of months, you might be forgiven for thinking that not a lot had been happening. Actually that’s far from the case. I’ve been busy with a number of projects, one of which has seen some major additions to the Praxis code, and I’m now in the process of tidying that up for a new release. Some of the audio code has also been extracted and pushed to a separate repository (https://github.com/jaudiolibs/) of which more soon … but I digress. One thing that changed with the last Praxis LIVE release is that by default the Linux download is a .deb (Debian binary package) file, and I’ve been meaning to write up a how-to (for my benefit as much as yours!) since. So, here goes. Continue reading
Well, the subject of dark themes seems to have come up again in the NetBeans world recently, with Geertjan blogging about Stan Aubrecht’s dark theme for Nimbus. This looks great, though as you might have gathered from the look and feel of Praxis LIVE, I quite like dark look and feels! 🙂
Unfortunately, the problem with Nimbus is it’s still not officially supported in NetBeans due to some EDT issues (though seems much more stable than the last time I tried it). Also, to quote from Geertjan’s blog, “In Stan’s words, this is a “poor man’s” solution. There are some area that would need more tweaking, e.g., the top bar in the Options window. But it would mean changing code in NetBeans. This new module just adjust a few UIManager constants.” Well, as I blogged about in the Dark arts of NetBeans hackery, it is possible with some devious hackery to alter things like the top bar of the Options window, and this is done in Praxis LIVE, so I thought I’d have a go at providing a plugin for this look and feel that could be used within the NetBeans IDE (or other platform application).
NetBeans IDE running with Praxis LIVE look & feel
No, not a post about my salacious exploits with a C-list Hollywood celebrity (that’s for a different blog 🙂 ), but a technical overview of a key aspect of the Praxis architecture. Absolutely essential to Praxis’ media neutral architecture, as well as the ability to edit everything live, is an asynchronous, shared-nothing, message-passing system. This is loosely inspired by the Actor Model and other solutions for concurrent / distributed programming (without following any particular concept to the letter). Continue reading