[Fpga-synth] Fractional Delay Filters

Scott Gravenhorst music.maker at gte.net
Sat Mar 8 19:57:05 CET 2008


Hello FPGA-ers,

I'm working on a new project - actually, it's been going on for a couple of months and I need some advice.

The project is an adapted implementation of Perry Cook's "slide-flute" model.  I've built up a simple FPGA implementation and discovered some problems for which I believe fractional delays are a solution.

I've discovered that the maximum practical delay line length in this model is limited (at least) by the bit width of arithmetic used.  Using 18 bit signed integer representation of fixed point, I can get reasonable performance to delay lines around a length of 100 or so.  I had wanted to use the same simple method for length selection that I did with the Karplus-Strong implementation I built, that is to use a set of delay lines long enough to provide 5 cent accuracy for integer delay values and over enough
 octaves to make the design musically useful.  This worked well enough for Karplus-Strong that I was able to get 3.5 or so octaves of musically accurate range.  This will not work for the bore/jet model of the flute (which I am calling "phLUTe") because at longer wavelengths, the amount of energy required to resonate the bore without period halving (overblowing) is below the 18 bits available.  As such, all wavelengths longer than about 100 resonate at some harmonic of the expected fundamental (they are ov
erblown).

So the solution appears to be to keep the waveguide lengths short and use fractional delays to get musically accurate pitches.

So far, my research has revealed that two possible candidates for FD filters are the LaGrange Interpolater and the Thiran Allpass which I believe are both digital allpass filters.

I understand that these filters operate best when the signal is well oversampled which I believe will not be a problem.

Is there any advice for this subject?  


-- ScottG

-----------------------------------------------------------------

-- Scott Gravenhorst
-- GateMan-III - FPGA Based Monophonic MIDI Synthesizer with SVF
-- PolyDaWG/8 - FPGA Based 8 Voice Polyphonic MIDI Synthesizer
-- phLUTe - FPGA Based Monophonic Physical Model MIDI Synthesizer
-- FatMan: home1.gte.net/res0658s/fatman/
-- NonFatMan: home1.gte.net/res0658s/electronics/
-- When the going gets tough, the tough use the command line.



More information about the Fpga-synth mailing list