Meet the Cat: Pd-L2ork and Its New Cross-Platform Version “Purr Data”

Meet the Cat: Pd-L2ork and Its New Cross-Platform Version “Purr Data”

Meet the Cat: Pd-L2Ork and its New Cross-Platform Version \Purr Data" Ivica Ico Bukvic Albert Gr¨af Jonathan Wilkes Virginia Tech SOPA ICAT Johannes Gutenberg [email protected] DISIS L2Ork University (JGU) Blacksburg, VA, USA 24061 IKM, Music-Informatics [email protected] Mainz, Germany [email protected] Abstract fostering creativity and curiosity across genera- The paper reports on the latest developments of Pd- tions, and as the library of works relying on Pd L2Ork, a fork of Pd-extended created by Ico Bukvic grows, so does the importance of conservation in 2010 for the Linux Laptop Orchestra (L2Ork). and ensuring that Pd continues to support even Pd-L2Ork offers many usability improvements and the oldest of patches. However, the inevitable a growing set of objects designed to lower the learn- side-effect of the increasingly conservationist fo- ing curve and facilitate rapid prototyping. Started cus of the core Pd is that any new addition has in 2015 by Jonathan Wilkes, Purr Data is a cross- to be carefully thought out in order to account platform port of Pd-L2Ork which has recently been for all the idiosyncrasies of past versions and en- released as Pd-L2Ork version 2. It features a com- sure there is a minimal chance of a regression. plete GUI rewrite and Mac/Windows support, lever- aging JavaScript and Node-Webkit as a replacement This vastly limits the development pace. for Pd's aging Tcl/Tk-based GUI component. As a result, the Pd community sought to com- plement Pure Data's compelling core function- Keywords ality with a level of polish that would lower the Pd-L2Ork, Purr Data, fork, usability, L2Ork initial learning curve and improve user experi- ence. In 2002 the community introduced the 1 Introduction earliest builds of Pd-extended [13], the longest running Pd variant. There were other ambi- Pure Data, also known as Pd, [15] is arguably tious attempts, like pd-devel, Nova, and Desire- one of the most widespread audio and multime- Data [14], and in recent years Pd has seen a dia dataflow programming languages. Pd's his- resurgence in forks that aim to sidestep usabil- tory is deeply intertwined with that of its com- ity issues through alternative approaches, in- mercial counterpart, Cycling 74's Max [16]. A cluding embeddable solutions (e.g. libPd) and particular strength shared by the two platforms custom front ends. Pd-extended was probably is in their modularized approach that empowers the most popular alternative Pd version which third party developers to extend the function- continues to be used by many, even though it ality without having to deal with the under- was abandoned in 2013 by its maintainer Hans- lying engine. Perhaps the most profound im- Christoph Steiner due to lack of contributors to pact of Pd is in its completely free and open the project. source model that has enabled it to thrive in a number of environments inaccessible to its Pd-L2Ork presents itself as a viable alterna- commercial counterpart. Examples include cus- tive which started out as a fork of Pd-extended tom in-house solutions for entertainment soft- and continues to be actively maintained. We be- ware (e.g. EaPd [10]), Unity3D [18] and smart- gin with a discussion of Pd-L2Ork's history, mo- phone integration via libPD [1], an embeddable tivation and implementation. We then look at library (e.g. RjDj [11], PdDroidParty [12], and Pd-L2Ork's most recent off-spring nick-named Mobmuplat [9]), and other embedded platforms, \Purr Data", which has recently been released such as Raspberry Pi [4]. as Pd-L2Ork version 2, runs on Linux, Mac Pd's author Miller Puckette has spearheaded and Windows, and offers some unique new fea- a steady development pace with the primary tures, most notably a completely new and im- motivation being iterative improvement while proved GUI component. The paper concludes preserving backwards compatibility. Puckette's with some remarks on availability and avenues work on Pd continues to be instrumental in for future developments. 2 History and Motivation in separate processes (running the engine with Introduced in 2009 by Bukvic, Pd-L2Ork [2] real-time priorities). started as a Pd-extended 0.42.5 variant. The Like Pd-extended, Pd-L2Ork provides a sin- focus was on nimble development designed to gle turnkey monolithic solution with all the li- cater to the specific needs of the Linux Lap- braries included in one package. This minimizes top Orchestra (L2Ork), even if that meant sub- overhead in configuring the programming envi- optimal initial implementations that would be ronment and installing supplemental libraries, ironed out over time as the understanding of the and addresses the potential for binary incom- overall code base improved and the target pur- patibility with Pd. pose was better understood through practice. An important part of L2Ork's mission was 3 Implementation educational outreach. Consequently, a major- Pd-L2Ork's code base increasingly diverges ity of early additions to Pd-extended focused from Pd. It consists of many bug-fixes, addi- on usability improvements, including graphical tions and improvements, which can be split into user interface and editor functions. While some engine, usability, documentation, new and im- of these were incorporated upstream, a growing proved objects and libraries, scaffolded learning number of rejected patches began to build an and rapid prototyping. In this section we high- increasing divide between the two code bases. light some of the most important user-visible As a result in 2010 Bukvic introduced a sepa- changes and additions, more details can be rately maintained Pd-extended variant, named found in the authors' PdCon paper [3]. Pd-L2Ork after L2Ork for which it was origi- nally designed. 3.1 Engine Over time, as the project grew in its scope Internal engine contributions have largely fo- and visibility, it attracted new users, and even- cused on implementing features and bug-fixes tually a team of co-developers, maintainers and requested by past and existing Pd users. Some contributors formed around it. This is obvi- of these include patches that have never made it ously important for the long-term viability of to the core Pd, such as the cord inspector (a.k.a. the project, so that it doesn't fall victim to Pd- magic glass), improved data type handling logic, extended's fate, and thus the development team and support for outlier cases that may otherwise continues to invite all kinds of contributions. result in crashes and unexpected behavior. Ad- Pd-L2Ork's philosophy grew out of its ini- ditional checks were implemented for the Jack tial goals and the early development efforts. It [6] audio backend to avoid hangs in case Jack is defined by a nimble development process al- freezes. Default sample rate settings are pro- lowing both major and iterative code changes vided for situations where Pd-L2Ork may run for the sake of improving usability and stabil- headless (without GUI), thus removing the need ity as quickly as possible. Another important for potentially unwieldy headless startup proce- aspect of this philosophy is releasing improve- dures. The $0 placeholder in messages now au- ments early and often in order to have work- tomatically resolves to the patch instance, while ing iterations in the hands of dozens of students the $@ argument can be used to pass the entire of varying educational backgrounds and experi- argument set inside a sub-patch or an abstrac- ence, which ensured quick vetting of the ensuing tion.1 [trigger]2 logic has been expanded to solutions. allow for static allocation of values, which alle- Despite an ostensibly lax outlook on back- viates the need for creating bang triggers that wards compatibility, to date Pd-L2Ork and are fed into a message with a static value. Purr Data remain compatible with Pd (the -legacy flag can be used to disable some of the Visual improvements: The Tk-based [19] more disruptive changes). In particular, there graphical engine has been replaced with TkPath haven't been any changes in the patch file for- [17] which offers an SVG-enabled antialiased mat, so patches created in Pd still work without any ado in Pd-L2Ork and vice versa (assuming 1In Pd parlance, an abstraction is a Pd patch encap- that they don't use any externals which aren't sulating some functionality to be used as a subpatch in other patches. available in the target environment). Also, com- 2Here and in the following we employ the usual con- munication between GUI and engine still hap- vention to indicate Pd objects by enclosing them in pens through sockets, so that the two can run brackets. canvas.3 A lot of effort went into streamlining \graph-on-parent" (Pd's facility to draw GUI elements in a subpatch on its parent), includ- ing proper bounding box calculation and detec- tion, optimizing redraw, and resolving drawing issues with embedded graph-on-parent patches. Improvements also focused on sidestepping the limitations of the socket-based communication between the GUI and the engine, such as key- board autorepeat detection. As a result, the [key] object can be instantiated with an op- tional argument that enables autorepeat filter- Figure 1: Pd-L2Ork running on Linux. ing, while retaining backward compatibility. Stacking order: Another substantial core for image formats with alpha channel, and ad- engine overhaul pertains to consistent ordering vanced data structure drawing and manipula- of objects in the glist (a.k.a. canvas) stack. This tion using SVG-centric enhancements (Fig. 1). has helped ensure that objects always honor the A majority of usability improvements focus visual stacking order, even after undo and redo on the editor.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    8 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us