In Experiment.processing, the application of the distortion is done independently for the target and masker. It's a problem for non-linear distortions, like spectral-subtraction, which require the noisy signal and the noise alone.
I see two approaches for "fixing" that:
- If required the user should subclass
Experiment and replace the preprocessing method with a method that applies the distortion whichever way they want.
- Add an additional option to
Experiment to define the behavior inside the preprocessing method. That would require changing the level adjustment behavior as well. Actually, the level adjustment would have to be done before the application of the distortion.
Right now, I'd say we should stick to option 1.