SpectralDelay is also known as CLAM's Dummy Test. In this application it is no important to actually implement an impressive application but rather to show what can be accomplished using the CLAM framework. Especial care has been taken on the way things are done and why they are done.
The SpectralDelay implements a delay in the spectral domain. What that basically means is that you can divide your input audio signal in three bands and delay them separately, obtaining interesting or weird effects. The block diagram of the process is illustrated in Figure 3.12.
The core of the process is an STFT that performs the analysis of the input signal and converts it to the spectral domain. The STFT is implemented in the SpectralAnalysis Processing Composite class, which contains a number of other Processing objects (i.e. WindowGenerator or FFT, see SMS Analysis/Synthesis Example UML diagram in figure 3.7). The signal is synthesized using a SpectralSynthesis Processing that implements the inverse process. It is transformed, in between these two steps, in the spectral domain.
The output data of the SpectralAnalysis is read by three AudioMultiplier Processing objects that also take the spectral transform transfer function of a pre-defined filter as input. As a matter of fact we apply three different filters: a low-pass, a band-pass and a high-pass. We then have the signal divided into three different bands. Each of them is delayed with a different delay time. Finally, and before the synthesis, these three bands are summed up again.
The graphical interface depicted in Figure 3.13 controls the frequency cut-offs and gains of the filters and the delay times of the delays.