2017-09-26 5 views
0

Certains effets DSP sont codés dans le modèle ISampleProvider. Pour appliquer un effet, je le fais et ça fonctionne bien.Comment enchaîner plusieurs effets NAudio ISampleProvider

string filename = "C:\myaudio.mp3"; 
MediaFoundationReader mediaFileReader = new MediaFoundationReader(filename); 
ISampleProvider sampProvider = mediaFileReader.ToSampleProvider(); 
ReverbSampleProvider reverbSamplr = new ReverbSampleProvider(sampProvider); 
IWavePlayer waveOutDevice.Init(reverbSamplr); 
waveOutDevice.Play(); 

Comment puis-je appliquer plusieurs effets simultanément au même fichier d'entrée? Par exemple, si j'ai un effet de réverbération et des effets de distorsion, comment puis-je les chaîner pour les appliquer en même temps à un fichier d'entrée?

Répondre

1

Les effets peuvent être enchaînés en passant l'un comme "source" pour le suivant. Donc, si vous vouliez que votre audio passe d'abord par une réverbération, puis par distorsion, vous pourriez faire quelque chose comme ça, passer l'audio original dans l'effet Reverb, la sortie de la réverbération dans l'effet de distorsion et envoyer la distorsion à waveOut dispositif.

var reverb = new ReverbSampleProvider(sampProvider); 
var distortion = new DistortionSampleProvider(reverb); 
waveOutDevice.Init(distortion); 

(N.B. NAudio ne vient pas avec effets intégrés réverbération/distorsion - vous devez faire ces soi-même ou les approvisionner d'ailleurs)

+0

Ha, si facile. Cela fonctionne parfait. Merci Mark, le framework ISampleProvider est Genius. –