[linux-audio-dev] Sonic Flow hacking update

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: [linux-audio-dev] Sonic Flow hacking update
From: Jarno Seppanen (jams_AT_cs.tut.fi)
Date: Thu May 11 2000 - 17:39:09 EEST


Hi.

This is a small Sonic Flow status update. There's exciting new features ready
and half-ready and I just thought I'd let you know.

(1) libsffx

There's a new C++ library, the Sonic Flow effect algorithm library (SFFX),
coming. I have planned SFFX to be the easiest way to incorporate high-quality
digital sound effect algorithms to 3rd-party applications. By "easy" I mean
this:

<pseudocode>
{
  SFFX_Multitap mtap;
  SFFX_Engine::File_Settings fset ("input.wav", "output.wav");
  SFFX_Engine eng (fset);

  eng.add_effect (mtap); // give the effect to the engine
  eng.set_parameter_value (mtap.get_parameter ("delay 1"), 100); // msec
  eng.set_parameter_value (mtap.get_parameter ("gain 1"), 0.4); // gain

  eng.start (); // make engine process audio
  sleep (10);
  eng.stop (); // stop processing
}
</pseudocode>

In addition to processing files, the engine will support processing audio
from/to the soundcard (libaudiohw needed) and directly from/to user-supplied
memory buffers.

The user may put as many effects as he/she likes to the engine, because the
basic signal processing is done on top of the synchronous dataflow library of
Sonic Flow. The effects can be wired to arbitrary topologies.

I have just finished debugging a bare-bones version of SFFX, which
_theoretically_ allows code like the above example to run. Everything (like
wiring and setting the number of channels) is not that automatic, but the
signal processing is already rocking. Currently only file I/O is supported.

Currently there is only one SFFX effect, the multitap delay. When the engine
is a bit more mature, I intend to port all the rest of the Sonic Flow example
programs to SFFX effects: chorus, compressor, expander, flanger, limiter,
noise gate, parametric EQ and wah-wah.

(2) resampling business

Yesterday I finished implementing the downsampler and upsampler blocks, or
more precisely implementing polyphase low-pass decimating and interpolating in
them. This means that the down- and upsamplers are of "standard signal
processing" quality, unlike in most hobbyist audio processing programs.

(3) libsfsp

There is a new C library in the CVS, namely the Sonic Flow signal processing
algorithm library (SFSP). The resamplers need an FIR filter in order to work,
and this library is there for them.

Currently there's code to make window functions (Blackman, Hamming, Hanning,
Rectangular and Triangular) and to design FIR filters by windowing (low-pass,
high-pass, band-pass, band-stop and arbitrary "piecewise-constant" multiband).

All of the above babble pertains to the latest source in the CVS repository.
For more precise information, see the ChangeLog at the homepage
http://sonicflow.sourceforge.net

Comments are welcome!

-- 
-Jarno, Graz


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Thu May 11 2000 - 18:31:19 EEST