Pure Data: Installing Externals with Deken

The basic install of PD is referred to as Vanilla. Although many things are possible with this plain version, some additional libraries are very helpful and there is a handful which can be considered standard.

Find and Install Extensions

PD comes with Deken, a builtin tool for installing external libraries. Deken can be opened from the menu of the PD GUI. On Linux installs it is located under Help->Find Externals. Deken lets you search for externals by name. The best match is usually found at the top of the results. cyclone is an example for a library with many useful objects:


Deken lets you select where to install externals in its Preferences menu. Everything will be located in the specified directory afterwards.

Add Libraries to Search Paths

Once installed, it may be necessary to add the individual libraries to the search paths. This is done in an extra step. On Linux installs, this can be found under Edit->Preferences->Path:


Digital Waveguides: Ideal String without Losses

Ideal String with two Delay Lines

Based on the previously introduced discrete solution for the wave equation, an ideal, lossless string can be implemented using two delay lines with direct coupling. The left-traveling and right-traveling wave are connected end-to-end. Output samples of each delay line are direcly inserted to the input of the counterpart:

The Excitation Function

The waveguides can be initiated - or excited - with any arbitrary function. This may vary, depending on the excitation principle of the instrument to be modeled. For a plucked string, the excitation can be a triangular function with a maximum at the plucking point $p$. Both waveguides (left/right travelling) are initiated with the same function:

$$y[i] = \begin{cases} \frac{i}{p} & \mbox{for } i \leq p \\ 1-\frac{i-p}{N-p} & \mbox{for } i > p \\ \end{cases}$$


When both waveguides are shifted by one sample each $\frac{1}{f_s}$ seconds, the ideal string is oscillating with a frequency of $f_0 = \frac{f_s}{N}$. It will oscillate continuously. In fact it is a superimposition of two oscillators with the waveform defined by the excitation function.

Once Loop Reflect