TR Number



Journal Title

Journal ISSN

Volume Title


Virginia Tech


Over the past several years Professor Ico Bukvic has been developing his own extension to the visual programming language of Pd, called Pd-L2Ork. This software was designed to take the functionality of Pd, a computer music programming software system, and apply it to Virginia Tech's Linux Laptop Orchestra, or L2Ork. Since 2010, it has been used extensively in education, research, and production. Another product of this research is the K12 mode that Pd-L2Ork has more recently introduced with the help of a prior CS Capstone Team. K12 mode is targeted specifically at beginners, to introduce sound programming and design, as well as for elementary to high-school students.

Our team's job was to expand on this existing software in two distinct ways. The first way we expanded the software's functionality is through the implementation of object tooltips. Since Pd-L2Ork is a visual programming environment, the objects you create in it take up physical space and can be hovered over. Each object (or patch) has a series of inlets and outlets that can be used to pass data into an object and receive output from an object, respectively. Each of these inlets and outlets require specific types of data to be passed into them for different uses. You might call the values passed into inlets parameters to a function/method. Consequently, you might call the values received through the outlets of an object the return value of a function/method. The way that the programmer identifies what needs to be passed into each inlet and what is received through each outlet is through tooltips. Hover over one of these inlets/outlets to view the object's tooltips, which describes the type of data the inlet needs and what the data should describe.

Our team's task was to take the descriptions of each object's parameter(s) and return value(s) from the object's documentation and create tooltips for each object in every patch. This task was composed of two parts: tooltips for an object itself and tooltips for inlets and outlets of every object. In order to accomplish the first part, we take the description of the object out of the index and attach it as a title tag to the particular object. For the second part, we needed to parse in the information of the inlets and the outlets of the objects from the index and also attach it as a title tag to the particular inlet or outlet. The deliverable for this task was a merge-able code branch with code to enable this feature, which we gave our client access to.

The other task of our team was to integrate a button that moves a Pd-L2Ork patch onto a web browser. This first involves compiling the original Pd-L2Ork code (written in C) to Web Assembly through a tool called Emscripten. This took up the majority of our time because of the large code base and many errors found by the Emscripten compiler that needed to be corrected. Once we edited the code base to make it Emscripten compatible and compiled it, we included the generated JavaScript file in our front-end code and linked the audio back-end to the front-end on the browser. This was a difficult task, but our team gained valuable insight from similar examples in PdWebParty and Purr-Data. In order to accomplish this task, we performed the necessary research to begin implementation, solved problems through file comparison and classic debugging strategies, and we asked Dr. Bukvic for help promptly when we needed it. The deliverable for this task was a button that could gather up all necessary files to display a patch current in Pd-L2Ork onto a web browser. We did not complete the work needed for this deliverable, but have provided documentation (in the sections for the Developer's Manual and on Future Work) regarding what has been done by the team, and what can be done by future teams to reach this deliverable.



Pd-L2Ork, Computer Music, Tooltips, Emscripten