Modelling Yamaha's classic PITCHFIX plugin from the year 2003.

StarRats
StarRats Member Posts: 9 Newcomer
edited March 2022 in Reaktor

Does anyone have an idea how Pitchfix's formant correction module algorithm works? Is that even possible to model such thing in Reaktor?

Tagged:

Comments

  • colB
    colB Member Posts: 667 Guru

    The engineers at Yamaha would have an idea, and would definitely be able to build it in Reaktor...

    Trouble is that it's kinda difficult for anyone else to know for sure without reverse engineering the original plugin... which is probably against the licence agreement... etc. etc.

    A wild guess would be some sort of FFT based thing that can separate, and individually manipulate the frequency envelope (for formants) and the frequency spectrum (for pitch)... That would mean some latency... so first thing would be to check and see what the latency figures are for the original plugin?

  • StarRats
    StarRats Member Posts: 9 Newcomer
    edited March 2022

    There is a knob to set windowing. It seems that for maximum value formant tracking gets more precise and less 'worbling' which mean more latency, however i would never use it in realtime at all. Is it a guess that formants are correlated with envelopes? I would never guess that envelope has something to do with tone/timbre of voice. Sounds strange to me. Steinberg bought PitchFix back in 2009 and put it in Cubase as internal 'pitch correction' plugin but still max sampling rate is 192khz. Original Yamaha version is 96khz which is stunning for 2003 first release date. As for envelope - meldaproduction's mTransformer has envelope module which in some way distorts timbre but not in harmonics/overtones shifting way. Pitchfix does this shifting in a much different manner to my ears.

  • colB
    colB Member Posts: 667 Guru
    edited March 2022

    Envelope in the frequency domain, not in the time domain.

    An envelope in the frequency domain is acts as a filter. So e.g. can represent a humans vocal tract. If you just raise all frequencies equally, you change that and it souds weird.. the chipmunk effect.

    But if you extract the frequency envelope, then raise the pitch of individual partials, the re-apply the frequency envelope, you can raise the pitch, but avoid the chipmunk effect. It also allows stuff like male to female, female to male etc.

    Something like that

  • StarRats
    StarRats Member Posts: 9 Newcomer

    Thx. So...how exactly envelope correlates to ezFFT phase and amplitude or vector and polar coords? Is there any other mean to dig into envelope in freq domain?...like partial framework or BFresiner ensemble from reaktor user library?

  • StarRats
    StarRats Member Posts: 9 Newcomer

    10 years ago there was nowadays removed ensemble 'gTranscoder' . Maybe it has something to do with envelope because there is formant curve xy gui editor? Luckily i haven't erased it, version 1.1

  • colB
    colB Member Posts: 667 Guru
    edited March 2022

    Hmm, I'm not an expert in this area

    first of all, you need to extract all the actual partials from the phase/amplitude information - this is not trivial, but there are various places on the net to find tutorials etc.

    I suppose then you would use something like an envelope follower - but frequency domain - to plot the curve of the frequency response... just like with a time domain envelope follower, you would need the right attack/decay settings so localised changes are ignored and you get the overall shape...

    I found a good explanation of the basics a while ago...

    Towards the bottom there is a section on 'Pitch Transposition' with a diagram that shows the applications of the spectral envelope of the pre shifted sound onto the pitch shifted sound. I found this article very helpful - it's well written and easy to follow - a good tutorial, not someone writing a paper and trying to impress with lots of complicated maths ;)

    Here's one that has more details on how to extract actual frequency partials from the FFT data

    I haven't got round to implementing this yet, so can't vouch for the accuracy of the info in this blog!

    Also check User Library for Pitchomat by Jan Brahler which uses fft phase vocoding IIRC

    His other uploads are also really good and worth studying

Back To Top