I always knew that libpd provides a very smooth and natural workflow from the creation of a patch in Pd to the deployment of a patch to an embedded instance of libpd, but until this morning I only looked at this from my own point of view, i.e., that of a single developer creating both patches and client code. Then I realized that this has much larger implications.
First, libpd provides great separation of concerns — sound designers don’t have to know about programming, and programmers don’t have to know about sound design. All they have to do is agree on the number of input and output channels as well as the collection of send and receive symbols through which the client code will interact with the Pd patch. The sound designer can go ahead and build a patch, controlling it with the usual GUI elements. Building a patch for libpd is no different from building a patch for Pd itself. In order to deploy the patch, the sound designer only has to assign the appropriate send and receive symbols to the GUI elements. Now the programmer can simply load the patch and use it as a black box.
Second, libpd erases the distinction between prototypes and production code. Several people have hooked up Pd or Max/MSP to game engines as a prototyping tool for game audio, using OSC or UDP. While this is a powerful approach, I see two drawbacks: One drawback is that the sound designer needs to add network objects to the patch, in addition to the GUI elements that are needed for development and testing. This adds some friction to the patching process. The other drawback is that this approach is fragile; you have two separate pieces, the game and the audio engine, that have to be launched and networked correctly. You wouldn’t ship production code that way. The prototype that you build this way will always be a prototype.
With libpd, the prototype is the production code. The GUI scaffolding that you use when designing and testing a patch is also the conduit through which the deployed patch communicates with the client code, and the embedded copy of Pd simply becomes a part of the application. Add in the large number of artists who are already familiar with Pd (even larger if you count users of Max/MSP) as well as the fact the libpd comes with the extremely permissive BSD license, and you have some serious disruptive potential.