Signal processing techniques