We need the implementation of an audio filter for applying pitch-shift over an audio stream in real-time during playback.
This filter should be implemented in the form of one dynamic link library (DLLs) developed using Visual C++ (better if Visual C++ 6) and MFC.
"Active DJ Studio" [[url removed, login to view]] is an audio related ActiveX control providing sound playback capabilities.
? Attached to this message you will find a setup package ([url removed, login to view]) that will install the latest pre-alpha version of the control on your PC.
We need the implementation of an audio filter for applying pitch-shift over an audio stream in real-time during playback: the algorithm should be obviously optimized for modyfying voice pitch.
Some word about the way the DLL should be implemented: this control is predisposed to operate with custom DSP effects contained inside external dynamic link libraries (DLLs): the setup package of this control comes with a VB6 sample, named "CustomDSP", which allows interfacing with a couple of very simple external DSP effects (MyCustomDsp and (MyCustomDspWithUI) whose VC++ 6 source code is also installed.
As you will see examining the code of these external DSP effects, the main function that the DLL needs to export is a callback function that will receive in input the WAV PCM format of the sound being played and that will modify this PCM in order to implement the needed filter: neverthless to say that the DLL you will have to implement will have to follow the same schema of the previously mentioned (MyCustomDsp and (MyCustomDspWithUI) external DSP effects, so it should provide a callback function for the implemented filter and a set of exported functions for passing parameters needed by the filter's algorithm you will implement.
The use of external DSP effects is documented on the link below:
<[url removed, login to view]>
The algorithm of the implemented filter should be as fast as possible in order to avoid bottlenecks causing gargle/stuttering effects during playback and shouldn't make use of third-party components and/or libraries; we already have an algorithm based upon the SoundTouch library but it's quality is not good as actually needed.
The implemented DLL should come with a modified version of the attached "TestPitchShift" sample: this sample, developed using Visual Basic 6, already have 3 sliders which should be used in order to:
sldRate - change the playback rate: this is already implemented by the sample
sldPitch - change voice pitch: this should be applied through an instance of the DSP and should alter the voice pitch without affecting the playback rate
sldTempo - change tempo: the sample already changes the playback rate as for silder "sldRate" but another instance of the DSP should modify automatically the pitch in order to keep the voice pitch unchanged (in this way a tenor vocalist wouldn't sound like Mickey Mouse)
As you can see, inside the sample there will be the need to create 2 instances of the DSP whose parameters will have to be separated from each other.
I hope to have provided enough information about the needs we have and how they should be implemented but feel free to ask if you should have any doubt.