Commit 9fc7bf34 authored by Albert Gräf's avatar Albert Gräf
Browse files

Text changes, add Purr logo.

parent d5824b48
# Meet the Cat: A Quick Introduction to Purr Data
# Meet the Cat: A Quick Introduction to Purr Data <img src="purr.png"/>
Albert Gräf <aggraef@gmail.com>
Computer Music Dept., Institute of Art History and Musicology
......@@ -9,15 +9,17 @@ Purr Data a.k.a. Pd-l2ork 2.0 is an improved version of Miller Puckette's Pd. Th
## What is Purr Data?
**Purr Data** is the latest version (2.0 at the time of this writing) of Ivica Ico Bukvic's **Pd-l2ork**, which we sometimes also refer to as Pd-l2ork 1.0 or "classic" Pd-l2ork for clarity. Pd-l2ork in turn is a fork of Hans-Christoph Steiner's **Pd-extended**, which has been the longest-running (and arguably the most popular) variant of Miller Puckette's **Pd**. **Pd** a.k.a. "Pure Data", the common basis of all these variants, is Miller Puckette's interactive and graphical computer music and multimedia environment. It is often called "vanilla" Pd, because it comes without any extras and thus provides the purest taste of Pd, you might say. Pd is the premier open-source alternative to Cycling74's well-known commercial **Max** program (whose original version was also developed by Miller Puckette when he was at IRCAM in the 1980s). There are a few other popular real-time applications in the realm of computer music and media art, most notably Csound and SuperCollider. However, what makes Max and Pd special is that you work in a graphical "patching" environment which allows you to put together complex signal processing applications in an intuitive way without having to learn a "real" programming language.
**Purr Data** is the latest (2.0) version of Ivica Ico Bukvic's Pd-l2ork. **Pd-l2ork** in turn is a fork of Hans-Christoph Steiner's **Pd-extended**, which has been the longest-running (and arguably the most popular) variant of Miller Puckette's Pd. **Pd** a.k.a. **Pure Data**, the common basis of all these variants, is Miller Puckette's interactive and graphical computer music and multimedia environment. Pd is also the premier open-source alternative to Cycling74's well-known commercial **Max** program (whose original version was also developed by Miller Puckette when he was at IRCAM in the 1980s). There are a few other popular real-time applications in the realm of computer music and media art, most notably Csound and SuperCollider. However, what makes Max and Pd special is that you work in a graphical "patching" environment which allows you to put together complex signal processing applications in an intuitive way without having to learn a "real" programming language.
While vanilla Pd remains critically important for the development of the real-time engine, its Tcl/Tk-based graphical user interface has never been very pretty or convenient. Consequently there have been various efforts by the community to improve Pd's GUI in various ways. Pd-extended is the earliest and the longest-running of these, which also includes a fairly complete selection of 3rd party add-ons. However, its development has stopped in 2013 due to lack of contributions, and thus it receives no more bugfixes and updates of the real-time engine.
Puckette's version of the program is often jokingly referred to as **"vanilla"** Pd, because it comes without any extras and thus provides the purest taste of Pd, you might say. In keeping with this metaphor, the other Pd variants are often called its different **flavors**.
Ico Bukvic introduced **Pd-l2ork** in 2010 as a fork of Pd-extended to be used by the "Linux Laptop Orchestra" (L2Ork) he founded at the School of Performing Arts at Virginia Tech. Although the original motivation was to create an improved version of Pd-extended to be used by the L2Ork (hence the name) as well as in education, on Linux it quickly became a more up-to-date alternative to Pd-extended offering a fair number of additional bug fixes and GUI improvements. This is also due to its "nimble" development model which allows bugs to be fixed even if they may have an impact on backwards compatibility. Vanilla Pd, on the other hand, necessarily has a much more firm outlook on backwards compatibility, since it is expected to run even the oldest of patches.
While vanilla Pd, being the reference implementation, remains critically important for the development of Pd's real-time engine, its Tcl/Tk-based graphical user interface has never been very pretty or convenient. Consequently there have been various efforts by the community to improve Pd's user interface in various ways. Pd-extended is the earliest and the longest-running of these, which also includes a fairly complete selection of 3rd party add-ons. However, its development has stopped in 2013 due to lack of contributions, and thus it receives no more bugfixes and updates of the real-time engine.
Despite the many and substantial improvements it offers, Pd-l2ork's GUI is still based on Tcl/Tk. This is both good and bad. The major advantage is compatibility with vanilla Pd. On the other hand, Tcl/Tk looks and feels outdated, even when going to some lengths with theming, as Pd-l2ork does. Tcl is a rather basic programming language, and its libraries have been falling behind, making it hard to integrate the latest GUI, multimedia and web technologies. But most importantly, Pd-l2ork's adoption was seriously hampered by the fact that in order to implement some of the graphical improvements it relies on Tcl/Tk extensions which are not available on non-Linux platforms, which means that it wouldn't run on Windows or the Mac without serious efforts.
Ico Bukvic introduced **Pd-l2ork** in 2010 as a fork of Pd-extended to be used by the "Linux Laptop Orchestra" (L2Ork) he founded at the School of Performing Arts at Virginia Tech. Although the original motivation was to create an improved version of Pd-extended to be used by the L2Ork (hence the name) as well as in education, on Linux it quickly became a more up-to-date alternative to Pd-extended offering a fair number of additional bug fixes and GUI improvements. This is mainly due to its more "nimble" development model which allows bugs to be fixed even if they may have an impact on backwards compatibility. Vanilla Pd, on the other hand, necessarily has a much firmer outlook on backwards compatibility, since it is expected to run even the oldest of patches.
In 2015 Jonathan Wilkes stepped in and started creating **Purr Data** to address these problems. In a nutshell, Purr Data is Pd-l2ork with the Tcl/Tk GUI part ripped out and replaced with modern web technology. It uses nw.js a.k.a. "node-webkit", which is essentially a stand-alone web browser engine combined with a JavaScript runtime. This has the advantage of being cross-platform, so that Purr Data also runs on Mac and Windows systems. It also makes it possible to leverage standard web technologies such as JavaScript and HTML5 which are much more widespread and have better support than Tcl/Tk these days.
Despite the many and substantial improvements it offers, Pd-l2ork's GUI is still based on Tcl/Tk. This is both good and bad. The major advantage is compatibility with vanilla Pd. On the other hand, Tcl/Tk looks and feels outdated, even when going to some lengths with theming, as Pd-l2ork does. Tcl is a rather basic programming language, and its libraries have been falling behind, making it hard to integrate the latest GUI, multimedia and web technologies. But most importantly, Pd-l2ork's adoption was seriously hampered by the fact that in order to implement some of the graphical improvements it relies on Tcl/Tk extensions which are not available on non-Linux platforms, which means that it wouldn't run on Windows or the Mac without substantial effort.
In 2015 Jonathan Wilkes stepped in and started creating **Purr Data** to address these problems. In a nutshell, Purr Data is Pd-l2ork with the Tcl/Tk GUI part ripped out and replaced with modern web technology. It uses [nw.js](https://nwjs.io/) a.k.a. "node-webkit", which is essentially a stand-alone web browser engine ([Chromium](http://www.chromium.org/)) combined with a JavaScript runtime ([Node.js](http://nodejs.org/)). All components are open-source, and nw.js has the advantage of being cross-platform, so that Purr Data also runs on Mac and Windows systems. It also makes it possible to leverage standard web technologies such as JavaScript and HTML5 which are much more widespread and have better support than Tcl/Tk these days.
Consequently, Purr Data's GUI is written entirely in JavaScript. Patches are implemented as SVG documents which are generally much more responsive and offer better graphical capabilities than Tk windows. They can also be themed using CSS and zoomed like any browser window, improving usability. These features alone make the switch to Purr Data worthwhile. Purr Data also looks better and is easier on the eyes than Pd-l2ork, let alone vanilla Pd, especially on high-dpi displays (cf. Fig. 1).
......@@ -26,7 +28,7 @@ Fig. 1: Purr Data running on Mac OSX.
Purr Data's nw.js GUI also has some disadvantages. Most notably, some of the included externals still rely on Tcl code, so their GUI features will not work in Purr Data until they get ported to the new GUI. Second, the size of the binary packages is considerably larger than with Pd-l2ork or Pd-extended since, in order to make the packages self-contained, they also include the full nw.js binary distribution. Finally, the browser engine has a much higher memory footprint than Tcl/Tk which might be an issue on embedded platforms with *very* tight memory contraints. So you'll have to weigh the advantages against the disadvantages, considering your use case and target platform.
To summarize, Purr Data is still comparatively young, but the present release has been thoroughly tested and many bugs have been ironed out in the past few months, so it is certainly ready for day-to-day use. It also offers some really compelling advancements over its predecessors. If you have been looking for a modern and actively-maintained successor of Pd-extended, this is it.
Purr Data is still comparatively young, but its basis is the tried and proven Pd-l2ork, the present release has been thoroughly tested and many bugs have been ironed out, so it is certainly ready for day-to-day use. It also offers some really compelling advancements over its predecessors. If you have been looking for a modern and actively-maintained successor of Pd-extended, this is it.
## The Name?
......@@ -36,7 +38,7 @@ To quote Jonathan from his initial announcement on the [Pd forum][]:
[Pd forum]: http://forum.pdpatchrepo.info/topic/9956/gui-port-of-pd-l2ork-alpha-0-release
Quite obviously the name is a play on "Pure Data" on which "Purr Data" is ultimately based. It also raises positive connotations of soothing purring sounds. Note that "Purr Data" is just a nick-name for the Pd-l2ork 2.x branch. The executable, library directory etc. are all still named pd-l2ork in the new version.
Quite obviously the name is a play on "Pure Data" on which "Purr Data" is ultimately based. It also raises positive connotations of soothing purring sounds, and makes for a nice logo. Under the hood, however, Purr Data still shares a lot of code with Pd-l2ork (essentially all the non-GUI parts), and the executable, library directory etc. are all still named pd-l2ork as well. So for all practical purposes Purr Data in fact *is* Pd-l2ork, namely its latest (2.x) branch. If necessary, we refer to Bukvic's original Pd-l2ork version as Pd-l2ork 1.0 or "classic" Pd-l2ork.
## Where to Get It
......@@ -60,7 +62,7 @@ Purr Data understands basically the same set of command line options as vanilla
### Single Application Instance
Like Pd-l2ork, but unlike vanilla Pd, Purr Data always runs as a *single application instance*. If you load additional patch files (by invoking the `pd-l2ork` executable or by clicking patch files in the file manager), they will be opened as new canvas windows in that single unique instance. This prevents the kind of confusion which often arises with vanilla Pd if you accidentally open different patches in different instances of the application. To have different patches communicate transparently with each other, and to make it possible to copy and paste objects between them, they *must* run in the same program instance, and Purr Data makes sure that this is always the case. (At present, this also means that Purr Data's real-time processing is all done in a single process. In the future, it will also become possible to run different patches on different instances of the real-time engine in order to take advantage of the multi-processing capabilities on modern multi-core systems, but this hasn't been implemented yet.)
Unlike vanilla Pd, Purr Data always runs as a *single application instance*. If you load additional patch files (by invoking the `pd-l2ork` executable or by clicking patch files in the file manager), they will be opened as new canvas windows in that single unique instance. This prevents the kind of confusion which often arises with vanilla Pd if you accidentally open different patches in different instances of the application. Pd's built-in messaging system (send/receive) and the internal clipboard requires that patches are loaded in the same program instance, and Purr Data makes sure that this is always the case. (This also means that Purr Data's real-time processing is all done in a single process right now. In the future, it will also become possible to run different patches on different instances of the real-time engine in order to take advantage of the multi-processing capabilities on modern multi-core systems, but this hasn't been implemented yet.)
## Configuration
......
purr.png

5.24 KB

Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment