samuelgo – Project 1: Experiments in Spectral Delay

While I had originally intended to implement a spectral delay effect from scratch, I decided it would be better not to reinvent the wheel. Instead I reviewed a number of readily available implementations on which I could expand, settling on Cycling74’s M4L.spectral.delay~ based on Olivier Pasquet’s work.

The basic concept of spectral delay is to implement a delay line in the frequency domain, enabling independent control over delay and feedback parameters for each FFT bin. I experimented with a number of extensions to this basic concept and settled on a few that I thought produced the most musically interesting results.

In Cycling74’s original patch, the delay time and feedback parameters for each FFT bin are configured with multislider objects. When these parameters are instead programmed dynamically it can add movement and texture to the overall effect. One way that I extended the original patch was enabling these parameters to be programmed by performing an FFT analysis on a secondary input signal, scaling the resulting spectral magnitude values to generate delay coefficients. When this option is engaged, the delay time parameter for each FFT bin is updated at the rate of the FFT analysis, creating movement.

In my implementation, the user can select either the primary input or an auxiliary signal to be routed to the secondary FFT analysis that generates the delay time parameters. While considering how else I could exploit the output of the secondary FFT analysis, I experimented with substituting the phase information from this analysis in the re-synthesis of the main analysis, a technique known as cross synthesis. By swapping the frequency or phase spectra of one sound with that of another sound, one can impart qualities of a sound onto another. This method produces especially interesting results when the amplitude spectra of a percussive sound is re-synthesized with the phase spectra of a harmonically rich tonal sound. In my implementation I also allow the user to re-synthesize the spectrally delayed signal with the original signal’s phase information which can produce interesting timbral results.

I later reworked the UI for the patch, adding control for the new functionality I implemented. In the end I believe I improved on the repertoire and utility of the original patch; the processing is capable of subtly augmenting a signal but is easily driven to sonic extremes if that is desired.

I’ve embedded a recording of myself manipulating the patch live, feeding it a drum loop as the primary input and a synth pad as the auxiliary input. The result sounds like a field recording in an electrified rainforest.

Project Resources: https://drive.google.com/drive/u/0/folders/1bAm9KaBNgVL0uBodDaZ_xvt6eol5jGei