Introduction

Back at the end of the 1970's computational power was a major issue. Most of the synthesis techniques we actually know were in place but were impractical or at least were possible only on expensive computers and special hardware synthesizers. This situation was frustrating for most electronic musicians and researchers. Inspired by an efficient computational model for vibrating strings, designed in 1960 by McIntyre and Woodhouse, Alex Strong developed in 1978 an independent special case. This model was presented in 1983 by Kevin Karplus and Alex Strong [5] and is now known as the Karplus-Strong Algorithm.

The original algorithm requires very few computations and can be done using addition only. Moore [7] qualifies it by saying that it avoids both the "dumb machine" and the "dumb human" effect. In fact, the algorithm is easy on the processor and produce rich sounds. The use of noise as input reduces the synthetic effect that characterizes most computer sounds. On the other side, the way the loop creates the periodicity and operates the decay preserve the timbre characteristics that permits to identify the sound as coming from a unique instrument. Despite all its quality, the original Karplus-Strong algorithm has some limitations. Its control parameters are somewhat limited; not all pitch can be produced and only amplitude and decay time can be controlled.

Since then, processor speed and computer resources improved, and many modifications have been suggested. They all preserve the richness of the sound but augment its control. David Jaffe and Julius Smith [4] proposed in 1983 a series of changes that gives control over parameters such as pluck position, precise tuning and dynamics. Others like Giuseppe Cuzzucoli and Vincenzo Lombardo [2], and Michael Laurson, Cumhur Erkut, Vesa Välimäki, and Mika Kuushankare [6] also explored the use of different input sounds.

This article presents the progression that leads from the original model to some of the extensions suggested by David Jaffe and Julius Smith [4] and their relation to physics and perception of sounds. It also demonstrates an implementation based on those extensions and some ideas from Moore [7]. The Karplus-Strong algorithm has been used to produce a virtual classical guitar developed in C++ with the help of the STK toolkit.