Xarp-61


Xarp-61 (pronounced "harp") is a 61 string harp of Karplus-Strong string models. (61 voice polyphony).

Each string model is an 18 bit wide digital waveguide feeding a first order lagrange interpolator and then a single pole IIR lowpass filter before being fed back into the waveguide. Reflection filter parameters are stored in a RAM which are then loaded from the patch editor. NOTE: The synth will make no sound before the RAM is loaded.

In Xarp-56, the string lengths are all integer lengths. Because of tuning error with shorter strings, there is a practical limit to the shortness of a waveguide using integer lengths for tuning. As such, the Xarp-56 strings are long and to compensate for their length, the sample rate is high, almost 200 kHz.

Xarp-61 handles fractional tuning (as opposed to integer length wave guides) using a first order lagrange interpolator. Any remaining tuning error is not audibly perceivable to me, though I have done no scientific measurements. The combination of a RAM-based delay line with a single register lagrange interpolator extends the delay line length (L) to L + interpolation_fraction. A set of tuning ROMs were generated (C program) to define length integer and length fraction. This method allows using shorter waveguides. As a result, the sample rate must be lower because all of the waveguides are shorter. 96 kHz was chosen to allow easily for a 48 MHz system clock.

The modulation wheel controls linear attentuation of the waveguides. Linear attenuation is applied to all waveguides. With the mod wheel set to maximum, the strings will have the most sustain. At minimum, the waveguides are more drum-like, but still tonal.

This synth design is targetted at a Xilinx Spartan-3E Starter Kit board using the on board 12 bit DAC.

The original design ran at 48 kHz sample rate in order to accomodate 61 strings using a single harp. The lengths of the strings were chosen to avoid tuning problems at the top end, but the lowest octave was so low in pitch that it was useless. It was noticed that the 18K of RAM was not being completely used, 5K was removed and freed up 5 multipliers. Using using one of the freed multipliers and the block RAM in true dual port mode, the design was changed to operate as 2 harps processed in parallel. Doing so allowed the sample rate to be doubled to 96 kHz and at the same time raising the pitch of the instrument by one octave.

Project source
Sound clip
using only a Xarp-61 instrument.
There was no other processing.

The same sequence, but using
two synths, slightly detuned