[linux-audio-dev] Which API to use for simple clients?

Nick Ing-Simmons nick at ing-simmons.net
Fri Jan 2 18:15:12 UTC 2004


I have two Audio related projects that need updating.

1. "rsynth" formant based text-to-speech synthesis

2. Audio::* Perl modules.

Both have existing /dev/dsp style backends at present, which have been working
fine. But recently (SuSE 9.0 install?) when run under ALSA emulation of 
/dev/dsp they both started producing segfaults - "after program had exited",
(neither valgrind nor gdb can give any info on the fault).

So I decided it was time to do a native ALSA backend(s).
I have rsynth backend working, and perl Audio:: one almost working.
But before going forward I would like to solicit opinions on what 
is the "right" API to use.

The Linux audio world seems to be in a state of flux with these options
(please tell me if I missed any):

1. Venerable OSS stuff
   - Widely available :-)
   - Some cards have quasi or truely commecial drivers rather than
     free / opensource ones :-(
   - emulation via ALSA (at least as shipped by SuSE) seems broken :-(

2. ALSA
   - Reasonably widely available :-|, and improving
   - Opensource :-)
   - Documentation is lacking :-(
     Everything hinges on the 
     "Configuration Space" concept, but I can't find an explanation of 
     how that works. This is the sticking point with perl code - I can't find 
     how to change the sample rate / channels, so _seems_ I need to 
     close and re-open.  

3. JACK 
   - Gets lots of excited "this is cool" kind of coverage :-)
   - realtime :-)
   - Callback style not ideal for speech synthesis or play-from-file
     of my simple apps. complex :-(
    
4. Enlightenment Sound Demon
   - Seems to be used by KDE etc.
   - haven't looked into it further.

5. Network Audio System 
   - Works on many platforms Linux/Solaris/X Terminals :-)
   - X-like "imake" style rather than configure :-(
   - Linux version still seems to be based on OSS - so recurse ;-)

6. Presumably there is some kind of telephony API as well, for sending 
   sound to incomming phone calls via modem / ISDN

Complexity and callbacks don't scare me - I do perl/Tk after all!
But this is a 2nd-string project so I don't want to do a lot of 
complex stuff for an API that is vanishing - I would rather either 
use a simple stable interface, or pitch in and help on the "comming"
complex API.

Suggestions anyone? (I just subscribed to both lists - so reply to your
favourite list.)

  


 




More information about the Linux-audio-dev mailing list