The best way to implement your own effects is to get sound in a 32-bit floating point, and then implement your own ISampleProvider interface. In the Read method, you read the requested number of samples from your source, execute your DSP, and then write them to the output buffer. Unfortunately, NAudio does not include the overdrive effect, but you can find the code to get started with musicdsp.org .
To see some examples of using NAudio to apply sound effects, see the .NET recorder (which can perform auto-tuning) and the Skype Voice Changer (which includes pitch changes). Both of these patterns precede the ISampleProvider interface, so they implement their own conversion from byte arrays to floating point patterns.
source share