I haven't made much progress toward a portable sound file system, but I want to revisit this problem. I'm still using my own library in Nyquist and Aura, but I would like to use something with a wider base of users and developers. I can put some resources into this, and I'm curious about other people's opinions on the state of the art and what if anything should be done.

Recently, a student and I re-examined libsndfile and libaudiofile, and I was disappointed by both. Libsndfile uses a different scale factor on input and output. This seems to stem from a view that audio data is basically an analog approximation and a little distortion is OK. My view is that the implementation should follow a precise specification and the relationship between float and int samples should be fixed (e.g. ints can be viewed as binary fractions, making the scale factor 2^N). Libsndfile does not support Ogg Vorbis, mp3, or SDIF, although it does support a lot of formats and at least one that would allow files longer than 2^32 bytes. Libaudiofile reads data with a scale factor of 1/(2^N - 1) which seems wrong, but I think this can be changed through the API. Worse, it rounds floats toward zero rather than rounding to the nearest value, introducing a nonlinearity on output. In spite of the features and support, I think both libsndfile and libaudiofile have some fundamental (although easily fixed) problems.

My sense is that writing a new sound file library is a waste of effort and would not serve many users. I could modify libsndfile, but Erik de Castro Lopo (creator of libsndfile) would consider a fork of the project to be "hostile". (Is that important? Audacity already keeps a private copy of libsndfile, but probably more for source control than anything else.) I could also work on libaudiofile, but adding a lot of new file formats there seems like duplication of effort. There's also the legality question for mp3 support -- I don't understand this, but it seems to me that dynamically linking to Lame as does Audacity would be relatively easy.

Meanwhile, the portmedia project is up at SourceForge. I'm slowly getting things set up there. If anyone would like to adapt/recreate/update the PortMusic web pages on SourceForge, let me know.




_______________________________________________
media_api mailing list
[email protected]
http://www.create.ucsb.edu/mailman/listinfo/media_api

Reply via email to