Adaptive signal processing