Tugger the SLUGger!SLUG Mailing List Archives

[coders] Re: coders Digest, Vol 6, Issue 2


Hi Erik,

I personally still think that the API of Maaate that Conrad and I
designed was pretty good
http://www.cmis.csiro.au/maaate/docs/API.html. It took Conrad only a
day or two to make C bindings for it, if that accounts for anything.
:-)

Maaate was created as a framework for analysing mp3 files in the
compressed domain.

The challenge with Maaate was that the tasks involved in audio
analysis are inherently functional, but the selected language was
object-oriented. And still we were keen to find the best possible way
to marry these two ideas.

I started by collating all the soundfile-related functions into a
SOUNDfile class, which - because they are mp3 files - includes all the
compressed domain information such as used window sizes, subbands and
frequencies etc.

Then, we created a Module class which provided a means to write
analysis algorithms. The parameters that the analysis functions could
take were described through a ModuleParam class. The allowed data
types were char, double, int, bool, SegmentData and SegmentTable.
SegmentData could contain a matrix of values relating to a specific
segment of an audio file, and SegmentTable could contain several
SegmentData elements.

Finally we created a Plugins class which would allow the creation of
libraries of analysis modules and their inclusion into a system
through dynamic linking. The intention was to have people create their
own analysis libraries externally - possibly under a non-free license
- and then link it to the core, which was GPL.

Not sure if this helps your current problem...

Cheers,
Silvia.




On 10/11/06, coders-request@xxxxxxxxxxx <coders-request@xxxxxxxxxxx> wrote:
Hi all,

Can anybody point me to FOXX library with a well designed C++
API? Whereever I look I find the most abysmal crap imaginable.

I'll admit that for C, API design ranges from poor (libogg,
libvorbis etc) to great (libcairo, libsndfile) but I have
yet to see a well designed C++ API.

Pointers anyone?

Erik