PWGLPWGL is a visual language based on similar concepts than PatchWork. PWGL has been designed from scratch and it contains several improvements when compared with PW. For example, the graphics part of the system has been realized in OpenGL. OpenGL offers several advantages such as multi-platform support, hardware acceleration, floating-point graphics and sophisticated 2D and 3D-graphics.
PWGL is a multi-window system. A PWGL window is called a patch. A patch, in turn, contains boxes and connections. In the simplest case a box is a visual equivalent to a Lisp function or method. It has a number of input-boxes - containing typically constants such as numbers or lists - and one or several outputs. When evaluated a box reads its inputs, calls a function or method associated to it and finally returns a result. Connections are used to define relations between boxes. An output of a box can be connected to an input-box of another box. Thus the system works in a similar fashion than Lisp where function calls can have as arguments either constants or functions calls.
PWGL has a library of predefined input-boxes which typically handle numbers, lists and objects. PWGL has also an important subgroup of input-boxes that are associated to editor-windows. These editor-windows contain complex objects, such as scores, chords, break-point functions, beziér functions and sound samples. These input-boxes can be opened to be edited by the user.
ExamplesFigure 1 gives a typical PWGL patch-window containing a 2D-editor and some basic boxes. The 2D-editor displays the final result of the patch that generates 50 sine waves.
In Figure 2 the patch calculates harmonic and inharmonic overtone series. The resulting accelerating arpeggio gesture is shown in a Chord-editor with an eighth-tone resolution.
Figure 3 shows an example of a PWGL user-library by Magnus Lindberg. This library is specialized in various rhythm manipulations, including quantizing. The patch displays in the Score-Editor a quantized result of interpolating rhythmic gestures.