Here's my basic understanding of how to implement a convolution reverb:
I measure the IR of a space using a sine sweep. The raw mic output is stored as a Voltage-Time data set. Let's assume that this recording is 5s long.
I run a fft on the recorded mic output to derive the Mag and Phase at every frequency bin. Call this the "IR Buffer".
Next, I have my music source. Let's say it's a vocal track that's playing in real-time. I record this vocal track into a 5s buffer.
Similar to step 2, I run a fft to extract the vocal track buffer's Mag and Phase values at every frequency.
Then, I multiply the Mag and Phase values of the vocal track with that of the IR Buffer at every frequency bin.
Finally, I run a ifft on the multiplied buffer and play the output as the reverb'd vocal track.
Is my understanding above correct?
What I'm very uncertain about is that it looks more like I've created a simple EQ rather reverb.
More specifically, I can't figure out how to extract and apply the time-variant Mag and Phase characteristic of the reverb space. For example, there's a certain decay time for 100Hz in the space, which means that Mag and Phase varies with time for this frequency. How is this time-variant component added to the vocal track?