SynthMaker

Implementing an FFT 'Center Cut' DSP

Archive · 2013 6 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

agent85 ·

In 2006 Avery Lee coded a 'center cut' DSP for virtualdub that has become somewhat of a reference standard for vocal removers and isolators. It is more than a simple pan-center-cut and became popular as a DSP for Winamp. I'm sure there are even better variations now (some using Cepstrum Lifters), but I would like to implement Lee's 'center cut' in Synthmaker, as I need it to enhance other effects.

The idea as I understand it is to perform an FFT (he performs an FHT) and look for equivalent phase and amplitude signals between the left and right channels. Adding them together, or subtracting them out, depending on what you want to do--isolate or remove.

Below is his description of the algorithm.

QUOTE: Transform the left and right channels to frequency domain using the Fast Hartley Transform (FHT). I use a window size of 4096 and a raised cosine window.

For each frequency component, where L is the 2D vector from the left channel, and R is the 2D vector from the right channel: Compute C = L/|L| + R/|R|. Compute α such that (L-αC)∙(R-αC) = 0. Basically, scale C so that when it is subtracted from L and R, the two resultant vectors are perpendicular. Expanding the math gives the equation (C∙C)a2 - C∙(L+R)α + (L∙R) = 0, which can be solved for α by the quadratic formula. Compute C' = αC, L' = L-αC, and R' = R-αC. Transform L', R', and C' back to time domain. Overlap and add every quarter window (1024 samples). END QUOTE

His published blog on it is here (though I quoted the most relevant part above): http://www.virtualdub.org/blog/pivot/entry.php?id=102

The C++ code is on sourceforge, hence there are many VST's now providing this, or some variation of it. I have no need to make yet another 'center cut' VST, but I could use it in an intermediary way in other VST's I have and others that I plan to make.

I have not used Synthmaker's FFT component and am not sure how to use it to implement this formula.

Has anyone done something like this, or can point me in a direction to get started on it?

Thanks

martinvicanek ·

Unfortunately there is no FFT in SM for synchronous stream data. The "green" FFT module is useful for a frequency analyzer, but not for synchronous audio processing.

agent85 ·

Thanks,

I will look to other ways for implementing this.

MegaHurtz ·

Think it's a fun thing to get the vocal out is quite easy, keeping the vocal is much harder. 😀 When I was in scool I pondered on solving this, took me the best part of the day to find out it cant be done. Went to explain to my classmates, most of them sayd but hey that's pretty easy you just invert A put it over B, then invert A-B and put it over B and.. Heh?

engineer ·

Do you have some examples for this kind of removal? I am afraid, this again only worrks for the vintage mixing method of placing mono vocals.

MegaHurtz ·

There was this thrick in Cool Edit, where you can take the beat and add its profile to the noise reduction. Then you could reduce the beat as "noise" and have some vocals.. well sort of.

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.