About Neil C Smith

Artist : Technologist : Adviser

JAudioLibs AudioServers – a PortAudio-esque Java API

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 & JACK

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

Continue reading

Live visual development with TinkerForge

TinkerForge is an excellent and easy to use open-source hardware solution for physical computing. Praxis LIVE is an open-source visual development environment, particularly (not exclusively) designed for working with audio & video, with the ability to run projects from the command line or as standalone (NetBeans runtime) applications. So, what happens when we bring these two worlds together?

This is best watched in full-screen HD!

Experimental support for a few TinkerForge components has been in Praxis LIVE for some time.  However, in the weeks leading up to the last release, these were tidied up and expanded.  There is now a concerted effort to complete these bindings, and promote Praxis LIVE as a (maybe the?) visual development environment for TinkerForge. Praxis LIVE is great for working with other media – use an IR sensor to control an OpenGL filter, shout to switch on a light, or use an OSC controller on your Android phone to control a servo.  It’s also fun for just working with TinkerForge by itself.

Continue reading

Praxis LIVE build:130831

Not for the first time, I’ve been busy working to get a new Praxis LIVE release up prior to a trip to Toronto (any local Praxis LIVE or NetBeans people want to meet up, get in touch!).   Praxis LIVE build:130831 is now available for download, though not (directly) from the usual place. As readers of Geertjan’s blog may have noticed, Praxis LIVE now has its own funky new home on the web – www.praxislive.org  Along with the new website, the logo and splash have been reworked (based on a capture from a GLSL shader running in the program itself, incidentally).

splash_pl

New splash screen showing new Praxis LIVE logo.

Still, this release is not all about good looks … Continue reading

Praxis LIVE build:130508

A new build of Praxis LIVE is now available from the usual place, with Windows (.exe) installer, zip distribution, and of course Linux (.deb) installer. This release has taken a little longer than normal to put together. A project I was involved with over the first few months of 2013 helped fund some nice new features, but it took a little time to get them in a releasable state (read the release notes for a full list of what’s new).

Meeting Point by Digital Prisoners

Meeting Point (2013) – Digital Prisoners – Bonn Square, Oxford.

Continue reading

Packaging as a .deb

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

Dabbling with the dark arts again

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

NetBeans IDE running with Praxis LIVE look & feel

Continue reading

New year, new Praxis LIVE

A (slightly belated) Happy New Year to you all, and news of a new Praxis LIVE release.  Just squeaking in during the final fanfare of 2012 was Praxis LIVE build:121231, bringing some major work on the video pipeline, some nice UI improvements, dynamic component support, and the start of a TinkerForge binding (see video below).

Downloads – http://code.google.com/p/praxis/downloads/list
Release notes – http://code.google.com/p/praxis/wiki/ReleaseNotes

Continue reading

The Influence of the Actor Model (Praxis architecture 101)

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