I'm trying to make a winform app in C# (VS2008) that can load an mp3 (other formats would be nice, but mp3 at a minimum) and be able to adjust the playback speed (tempo) without affecting pitch. I really don't need any other audio effects. I tried using DirectShow but that doesn't seem to offer time stretch capabilities. I was able to incorporate irrklang but that does not seem to have the time stretch capability either. So now I've moved on to SoundTouch. That certainly has the capabilities but I'm very unclear on how to implement in C#.
After a few days of this, about all I've accomplished is using DLLImport on the SoundTouch DLL and am able to successfully retrieve a version number. At this point, I'm not even sure if I can do what I'm trying to do with SoundTouch. Can anyone offer some guidance either on how to implement SoundTouch or a different library with the capabilities that I'm looking for? Thank you.
The answer is that SoundTouch can do what you want to do.
Take a look at the example program SoundStretch. It gives examples of using the SoundTouch library to change the tempo(without changing the pitch) as well as changing the pitch (without changing tempo) and playback rate(change both pitch and tempo). I would look through the source code and use what you need.
The only problem that I see is that you are using an mp3 format and this uses a WAV format so you will need to convert the file first. I really don't think that you'll find a program that does what you want directly on any sort of compressed file because of the nature of the method used to do this sort of thing. It uses a phase vocoder if you want to look into the whole process a bit more.