I need a **ACM AGC Filter** written in C++, C#, or VB.Net that will perform the following on PCM 16-bit mono/stereo wave streams of any frequency:
a) **50ms Fade In** start of stream
b) **50ms Fade Out** end of stream
c) **Programmible AGC component** (similar functionality as included with CoolEdit)
The filter can buffer the audio, enabling the detection of the end-of-stream (for the fade-out), and enabling the look-ahead functionality of the AGC component.
I also need a good-quality **ACM Resampling Converter** for 8/16 bit mono/stereo PCM wave streams to 16bit mono/stereo 44khz streams. (The Microsoft converter does not sound good).
Both converters must be optimized (using MMX and/or Pentium-4 technology, if possible) to use a very minimal amount of CPU usage for a 44KHz 16-bit stereo realtime audio stream. (No more than 20% on a Pentium MMX 166MHz PC).
These drivers should be provided as functions conforming to the acmDriverProc prototype, installable into the ACM by acmDriverAdd. The compiled DLL should provide InstallLocalDrivers() and UninstallLocalDrivers() functions to encapsulate the acmDriverAdd or acmDriverRemove function call(s). See the MSDN website for instructions on how to write the ACM drivers here: [url removed, login to view] . The MSDN website also refrences a few examples which should be included in the Windows 98/Me DDK, but I do not have them.
1) Console app demonstrating functionality: will ask for input file, output file, and parameters and perform conversion (using ACM APIs).
2) Embedded comments on general operation of code, and comments noting any processor-specialized code (MMX / Pentium-4 / etc)
3) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
4) Complete ownership and distribution copyrights to all work purchased. (No GNU-licensed or third-party code allowed).
All code must run on all x86-based processors (Pentium or later) computers running Windows 95 or later. Any MMX-enabled code (or similar enhancements) should automatically disengage if the proper processor is not in use.