Aumplib beta 2: Open source C# audio conversion namespace

G

gilad

This is to announce the beta 2 release of Aumplib. After garnering
comments from this newsgroup, I have modified the code to use a more
standard style convention.

Aumplib is a C# namespace which is made up of a set of classes that
interface several prominent open source audio conversion projects via
DLL and P/Invoke: LAME (MP3 encoding), libsndfile (non-MP3 audio
conversion), and libmad (MP3 decoding; through madlldlib). Essentially,
Aumplib provides an OO wrapper to these libraries.

I am interested in any comments anyone would like to make on the code
(providing they are constructive). You can download the source at:

http://www.arbingersys.com/dnlds/aumplib-1.0b2.zip

(There's too many source files to try and paste into this message.) If
you wish to leave your comments or questions in my development forum you
may:

http://www.arbingersys.com/forums/viewforum.php?f=3

A short outline of how the namespace is arranged is below.

namespace Aumplib {

- class Aumpel
[Primary interface to other classes]

- class WrapLame
[Interfaces with LAME DLL, lame_enc.dll, for MP3 encoding]

- class WriteLame
[Uses WrapLame and overrides BinaryWriter for easier usage in C#]

- class WrapLibsndfile
[Interfaces with libsndfile.dll to convert between many non-MP3 audio
formats]

- class WrapMadlldlib
[Interfaces to madlldlib, a DLL for decoding MP3]

- class WrapMadnpsrv
[Uses named pipes to communicate to madlldlib for MP3 decoding]

}

Thanks, James
 
D

Daniel O'Connell [C# MVP]

This is to announce the beta 2 release of Aumplib. After garnering
comments from this newsgroup, I have modified the code to use a more
standard style convention.

Aumplib is a C# namespace which is made up of a set of classes that
interface several prominent open source audio conversion projects via DLL
and P/Invoke: LAME (MP3 encoding), libsndfile (non-MP3 audio conversion),
and libmad (MP3 decoding; through madlldlib). Essentially, Aumplib
provides an OO wrapper to these libraries.

I am interested in any comments anyone would like to make on the code
(providing they are constructive). You can download the source at:

http://www.arbingersys.com/dnlds/aumplib-1.0b2.zip

(There's too many source files to try and paste into this message.) If you
wish to leave your comments or questions in my development forum you may:

http://www.arbingersys.com/forums/viewforum.php?f=3

A short outline of how the namespace is arranged is below.

namespace Aumplib {

- class Aumpel
[Primary interface to other classes]

- class WrapLame
[Interfaces with LAME DLL, lame_enc.dll, for MP3 encoding]

- class WriteLame
[Uses WrapLame and overrides BinaryWriter for easier usage in C#]

- class WrapLibsndfile
[Interfaces with libsndfile.dll to convert between many non-MP3 audio
formats]

- class WrapMadlldlib
[Interfaces to madlldlib, a DLL for decoding MP3]

- class WrapMadnpsrv
[Uses named pipes to communicate to madlldlib for MP3 decoding]

}

Only one gripe. On the whole, LameWrapper and LameWriter would be closer to
standard conventions, but this is a considerable improvement over the last
beta as far as naming conventions go(I still havn't had time to actually
test the functionality, ;).
 
G

gilad

Daniel said:
Only one gripe. On the whole, LameWrapper and LameWriter would be closer to
standard conventions, but this is a considerable improvement over the last
beta as far as naming conventions go(I still havn't had time to actually
test the functionality, ;).

This is kind of aggravating, actually. I had searched Microsoft for
coding conventions, and came across the below link, which I consulted in
my "conventionalizing" of Aumplib:

http://msdn.microsoft.com/library/d...y/en-us/vsent7/html/vxconcodingtechniques.asp

It didn't really address object names--but I assumed incorrectly that it
was implied. (It had an ambiguously titled "Names" section.) I realize
now it was really only talking about routines. I went off the statement
"Use the verb-noun method for naming routines that perform some
operation on a given object, such as CalculateInvoiceTotal()". I took
this to also apply to objects, which is why I ended up with names like
"WrapLame". Then, of course, I found this, a more thorough and clear
paper, which says to use a "noun or noun phrase to name a class".

http://msdn.microsoft.com/library/d...ef/html/cpconnetframeworkdesignguidelines.asp

What's aggravating is that I had wanted to use names styled as you
mention above for the objects. I guess I'll have to do some
search-and-replace and get it right in Beta 3.

James
 
G

gilad

It didn't really address object names--but I assumed incorrectly that it
was implied. (It had an ambiguously titled "Names" section.) I realize
now it was really only talking about routines. I went off the statement
"Use the verb-noun method for naming routines that perform some
operation on a given object, such as CalculateInvoiceTotal()". I took
this to also apply to objects, which is why I ended up with names like
"WrapLame". Then, of course, I found this, a more thorough and clear
paper, which says to use a "noun or noun phrase to name a class".

http://msdn.microsoft.com/library/d...ef/html/cpconnetframeworkdesignguidelines.asp


What's aggravating is that I had wanted to use names styled as you
mention above for the objects. I guess I'll have to do some
search-and-replace and get it right in Beta 3.

Per the above message, I have released Beta 3 (this was a quick one):

http://www.arbingersys.com/dnlds/Aumplib-1.0b3.zip

which entails the name fixes per the suggestions at the above link. A
quick summary of the changes:

- The namespace "Aumplib" is now "Arbingersys.Audio.Aumplib"
- The classes are named using the "noun/noun phrase" approach.

Here is how it looks now:

namespace Arbingersys.Audio.Aumplib {

- class Aumpel
[Primary interface to other classes]

- class LameWrapper
[Interfaces with LAME DLL, lame_enc.dll, for MP3 encoding]

- class LameWriter
[Uses LameWrapper and overrides BinaryWriter for easier usage in C#]

- class LibsndfileWrapper
[Interfaces with libsndfile.dll to convert between many non-MP3 audio
formats]

- class MadlldlibWrapper
[Interfaces to madlldlib, a DLL for decoding MP3]

- class MadnpsrvWrapper
[Uses named pipes to communicate to madlldlib for MP3 decoding]

}

Again, I am interested in any constructive comments or suggestions
anyone would like to make about the library; I'd like to tone up the
code where it needs it (if it needs it) before moving to any release
revision. Thanks,

James
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top