On Fri, 3 Jan 2003 17:34:22 -0500
Paul Davis <paul(a)linuxaudiosystems.com> wrote:
<snip>
but ... but ... i am just glowing with the way
libraries like
libsamplerate and libsndfile provide the same simple "just plug it
together" functionality that the unix shell and all our pipe-connected
utilities do. this time, its not to being offered (directly) to
command line users, but to people writing GUI-based software and thus
ultimately to their users.
<snip>
thanks to erik, thanks to RMS for the GPL and thanks
to everybody on
this list and elsewhere who is making this revolution possible.
<blush="#FF0000">
Paul, thanks so much for the recognition :-).
</blush>
Its kinda funny. Back in 1995 when I started using Linux I decided I
wanted to give back to the community and since audio was my passion,
that was an obvious area for me to work in.
My first choice for an application to work on was a sound file editor
but I quickly realised what a lot of work that was especially since
I had a rather demanding full time job which at times left me with
zero free time for up to 6-8 weeks at a time. I was also attempting
to get a life :-).
When I looked around at the sound file editors available back then
I saw that they were all doing their own WAV file I/O, and few of them
were doing it was well as some code I had hanging around since my
windows 3.1 days in the early 1990s. It was a pretty obvious step to
tidy that up, extend it, release it and then encourage people to use
it. That work has now been paying off for some time. Over the years
I have learnt one hell of a lot about programming, software design,
software testing, portablity, project management and the GNU tool
chain.
I feel very strongly that the use of libraries makes the Free Software
and Open Source movements more powerful. Some of the real advantages
of libraries are:
1) They encourage code reuse (IMO far better than C++ does) while
simultaneously discouraging the propagation of multiple versions
of the same code (IMO one of C++'s downfalls : compare a C++
class file which gets copied from source tree to source tree with
a library which is maintained separately and gets dynamically
linked to multiple applications).
2) They force the partitioning of a whole task (ie writing a sound
file editor) into a separate tasks (editor without file I/O
and separate file I/O).
3) They force the use of clean, simple interfaces thereby reducing
cross dependancies of large chunks of code.
4) Libraries are far more testable than programs with GUIs (have a
look at the test suites in libsndfile and the Rabbit) which
means the applications can rely on well designed libraries to be
reasonably bug free.
5) When multiple applications use the same library it helps track
down bugs in the library resulting in a more reliable library
(when i started libsndfile, I found a number of windows 3.1
applications which had their own file I/O and wrote broken WAV
files).
Anyway, thats my rant to add to Paul's. I encourage anyone who is
undertaking a new project to see if some of the code can be
split off and made into a separate library for everyone to use. I
also encourage them to treat it as a separate project and to give
it a test suite. This is a little more work in the short term but
has huge paybacks later.
While I'm at it I should also mention my plans for libsndfile and
the Rabbit. Listed in no particular order and no guarantees of when
this will be done :-).
libsndfile
==========
- Add reading/writing of test strings to file formats that support it.
- Add reading/writing of loop points and markers to file formats ...
- Add reading/writing broadcast wave stuff to WAV files.
- Add ability to optionally add dither on read and write (ie when the
source->desination results in a reduction in bit width).
- Support for more formats (OGG Vorbis, FLAC, WavPack, PVF etc)
In addition, there are now a couple of libsndfile mailing lists which
you can sign on for here:
http://www.zip.com.au/~erikd/libsndfile/lists.html
The Rabbit (libsamplerate)
==========================
I am currently working on some major, rather gnarly, refactoring of
the internals which should result in about a 10-30% improvement
in throughput for the Sinc based converters.
I am also toying with the idea of adding a callback based method of
accessing the library's functionality.
Mailing lists for the Rabbit here:
http://www.mega-nerd.com/SRC/lists.html
In other news, I am about to take on a small Linux audio based contract
(under NDA, so no more details available yet) and hope to find more
Linux programing contracts in the future.
Cheers,
Erik
--
+-----------------------------------------------------------+
Erik de Castro Lopo nospam(a)mega-nerd.com (Yes it's valid)
+-----------------------------------------------------------+
"640K ought to be enough for anybody." -- Bill Gates, 1981