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.)