www.96kHz.org
advanced audio recording
a multi-stage wave guide oscillator in VHDL
 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.

Hardware

While 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:

Altera Cyclone II Development board


Block Diagram

Memory Feedback Sound Generation with modified Karplus Strong


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.


Example Waves

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 right example.

Wave Guide Sound Generation with Multi Feedback Delays


Remark

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

 
Altera
Cyclone II
FPGA

 

 
96 kHz
Audio DSP

 

©  Dipl.-Ing. Jürgen Schuhmacher  2007