iiwusynth-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [iiwusynth-devel] Bugs / optimization


From: Peter Hanappe
Subject: Re: [iiwusynth-devel] Bugs / optimization
Date: Mon, 28 Oct 2002 12:58:48 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.0) Gecko/20020623 Debian/1.0.0-0.woody.1

M. Nentwig wrote:
Hello,


Hello Markus,

Some profiling with parts of the code removed revealed, that the
interpolation requires almost 50 % of the DSP time, the filter almost 20
% and the buffer copying (pan / reverb / chorus) almost 20 %. With that
in mind I implemented a couple of new interpolation algorithms, which
can be selected from the command line with 'interp x' for the synth or
'interpc chan x' on a per-channel-basis.
x=0: No interpolation
x=1: linear interpolation
x=4: old four-point interpolation algorithm, default
x=7: sinc-interpolation, seven points
I haven't yet figured out, whether '7' actually sounds better than '4'.
But it needs more horsepower, that's for sure.
Linear interpolation sounds quite OK in most cases.
Some experiments with 3rd and 5th order methods were unsatisfying, I did
not commit them to CVS.

If you look in the first version of iiwusynth you'll see that no
interpolation (truncation) and linear interpolation were available as
a compile option. I removed them because the four point interpolation
wasn't that much slower and the sound quality was (IMHO) better.
There's one thing that I think is important, too, for composers. Is's
that they somewhat have the guarantee that the music they make sounds
the same wherever it's being listened to and doesn't suffer from optimization on one configuration. So that was another argument to have
only 1 type of interpolation.

BTW, thanks for the profiling. Do you have an idea how much the DSP takes in respect to the parameter initialization in iiwu_voice_write? Also, I'm sure that we can optimize the buffer copying, too. Maybe using
SSE.

Since the new gcc supports Intel's SSE instructions, it would be
feasible to recode the DSP loop for that instruction set. Four float
multiplications at the same time should really speed up interpolation...

It would be great to use SSE for the interpolation. Only to bad that you
can't use SSE to calculate the sum of four floats at once as in
sum(a0,a1,a2,a3).


Lates,
Peter

Cheers

Markus

PS: The last changes in iiwu_voice.c were committed through a telnet
login. I haven't compiled that myself yet.



_______________________________________________
iiwusynth-devel mailing list
address@hidden
http://mail.nongnu.org/mailman/listinfo/iiwusynth-devel








reply via email to

[Prev in Thread] Current Thread [Next in Thread]