| ||DSP Module ||
A VHDL-implementation of my multi stage feedback delay is presented here. It
realizes a wave oscillator and works with the same method as the well known Karplus-Strong-Algorithm.
It is an update of the first version
and initially had been implemented in my Chameleon Synthesizer
using C-Language at that point of time.
the first version was running in a Spartan device this one was ported to
Altera Cyclone using both the
Gleichmann HPE Mini and
my new Altera PCB:
Unlike with by my first version of the multi delay oscillator using wave guiding this way,
here 3 or more feedback loops are used to drive the harmonics of the fundamental frequency back into the circuit, coming much closer to the bahviour of the focussed string instruments.
The feedback signals are scaled adequately and added to the existing mix with defined post scaling to achive a simple IIR-Filter ("MIX") that way that the overall energy in the cirucit slowly disappears in a controlled way. By using dedicated equalizers in the paths, the harmonics can be even controlled in a more detailled way. Generally IIR-Filters are used limit the high frequencies.
All filters are controlled with modifiers (actually a kind of LFOs which
I use in my synthesizer to change paramters in real time). Here the
mixer is controlled intuitively to create more "live" in the sounds.
More than 3 stages require lower feedback ratios in order to create a more dedidacted behavior of the harmonics. Note that this requires precise interpolation in most cases.
One must not overlook that after each loop the harmonics of the harmonics will be introduced into the signal. Practically a 1/4 and an 1/6 loop showed good results when applied slightly.
Regarding the initial wave to be fed into the RAM, a multi harmonic music pulse appears most effective, which already describes the intended base frequency.
The design works with 96kHz sample frequency and almost 50MHz
FPGA clock frequency offering 512-times oversampling. This is a great
advantage when it comes to an efficient sub sample filtering required
for the interpolation.
The following screenshots have been taken with my SVGA-Oscilloscope
and copied together for two cases showing 5 points of time after a
period of one second. The cyan-green waves at the left side show the
behaviour of a simple feedback. The right sequence shows the
introduction (or the maintenance!) of the third harmonic which grabs a
part of the inital energy of the wave. After 5 sec the simple circuits
presents a sine wave, where the third harmonic is still present in the
As formerly stated, this approach is similar to patent of Karplus and Strong fomr 1987. In order not to violate this, a trick can be used: One undersamples the outgoing data stream slightly and truncates the delay appropriately so that the resulting feedback pitches correspond. This creates a de facto band limit without using an explicit lowpass so the filters can be partly left away. See the former circuit for this.
Addendum 2007: The patent of Karplus / Strong has most probably expired.
Read more about the function here multi delay oscillator.
Read more about the platform here: Gleichmann HPE Mini