Wow - interesting discussion.
I've implemented a real-time SDFT on an FPGA for use in carrier
acquisition of communications signals. It was surprisingly easy to do
and didn't require particularly massive resources, although FPGAs
naturally facilitate a degree of low-level parallelism that you can't
easily achieve in CPU-based systems.
Based on this it might be feasible to build the SPV on a modest FPGA
rather than resorting to GPUs or specialized parallel CPU systems. The
main stumbling block that I see was your use of double-precision
floating point. If that level of accuracy is really necessary then a
higher end FPGA would be needed as most mid-range devices are geared
more for fixed point or single-precision floating point.
I was a bit confused by the ICMC paper when it came to windowing. The
SDFT structure I'm used to seeing (as discussed in the Lyons/Jacobsen
article you referenced) involves a rectangular window applied prior to
the twiddle calculations using a comb-filter structure. Is this window
replaced by your frequency domain convolutions, or are the cosine-based
windows applied in addition to the rectangular one?
Eric
On 3/19/20 10:23 AM, Richard Dobson wrote:
In my original C programs it was all implemented in double precision
f/p, and the results were pretty clean (but we never assessed it
formally at the time), but as the computational burden was substantial
on a standard PC, there was no way to run them in real time to perform a
soak test.
However, we received some advanced (at the time) highly parallel
accelerator cards frm a Bristol company "Clearspeed" which did offer the
opportunity to perform real-time oscillator bank synthesis (by making a
rudimentary VST synth). For example, to generate band-limited square and
sawtooth waves. With single precision, and real-time generation it did
not take long at all (I ran it one time for 20mins, monitoring on an
oscilloscope) for phases to degrade and thus the waveform shape
degraded. Conversely, with double precision (which those cards fully
supported, most unusually for the time), I was able to leave it running
for some hours, with no visible degradation of the waveform or audible
increase in noise.
It doesn't fully answer your question, but I hope it offers some
indication of the potential of the process.
Later on, colleagues at Bath University got the SPV fully running in
real time on Nvidia GPU cards programmed using CUDA, fed with real-time
audio input, and this was presented (I think) at either ICMC or DaFX. If
John Fitch is following this, he will be able to give more details. GPUs
are definitely the way to go for SPV in real time. I estimated
(back-of-an-envelope-style) demands of the order of 50GFlops. Of course
there remain many unanswered questions!
Richard Dobson
On 19/03/2020 16:18, Ethan Duni wrote:
On Tue, Mar 10, 2020 at 1:05 PM Richard Dobson <rich...@rwdobson.com
<mailto:rich...@rwdobson.com>> wrote:
Our ICMC paper can be found here, along with a few beguiling sound
examples:
http://dream.cs.bath.ac.uk/SDFT/
So this is pretty cool stuff. I can't say I've digested the whole idea
yet, but I had a couple of obvious questions.
In particular, the analyzer is defined by a recursive formula, and I
gather that the synthesizer effectively becomes an oscillator bank.
So, are special numerical techniques required to implement this, in
order to avoid the build-up of round-off noise over time?
Ethan
_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp
_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp
_______________________________________________
dupswapdrop: music-dsp mailing list
music-dsp@music.columbia.edu
https://lists.columbia.edu/mailman/listinfo/music-dsp