In signal processing, overlap-add is the process of recombining overlapping [[frame]]s of a signal after some processing. The overlap-add algorithm has the following steps: 1. The input signal is windowed into frames $x_{m}(n)$ $ x_{m}(n) = x(mM+n)w_{in}(n) $ 2. Each frame is processed: $y_{m}(n) = S(x_{m}(n))$ 3. An output window is applied to each output frame: $y_{m}(n)w_{out}(n)$ 4. The overlapping frames are recombined: $ y(n) = \sum_{m=-\infty}^{+\infty} y_{m}(n-mM)w_{out}(n-mM) $ It is important to consider that the [[windowing]] process should also be performed before reconstructing the signal to reduce the amplitude of the samples closer to the frame boundaries. This means that the perfect reconstruction criteria should be: $ \sum_{k=0}^{L/2-1} w^2\left( n+\frac{L}{2} \right) w^2(n) = 1 $ This is the Princen-Bradley condition for overlapping windows. A classical windowing function that follows the perfect reconstruction criteria is the half-sine window, which is the square root of the Hann window. $ w_{hs}(n) = \begin{cases} \sin\left( \frac{(n+0.5)\pi}{L} \right), & 0\le n \lt L\\ \\ 0, & \text{otherwise} \end{cases} $ ![[overlap-add.png]] ![[overlap-add-blocks.png]] [[Backstrom 2022]] The overlap-add method can be used for efficient computation of the convolution of two signals by breaking them into smaller segments, convolving each segment separately, and then combining the results using the overlap-add method.