Need help recreating the Prismizer effect: A MIDI controllable polyphonic autotune
I'm trying to recreate a MIDI-instrument that uses incoming audio as the source and uses pitch-shifting to play notes with it. You can hear this specific instrument/effect here: (skip to 1:21 to hear it fully in action)
According to various sources (interviews, social media, etc.) Bon Iver and other artists who use it, call it the Prismizer effect .It sounds a lot like a vocoder, but it isn't. Instead of a synthesized signal, the audio (his vocals) is being pitch-shifted based on the notes he plays on his keyboard. So, therefor there must be some sort of pitch-recognition going on there. It's pretty much a playable polyphonic autotune.
I've tried using fzero~ for the pitch-tracking, but it's not very accurate, and it does it very chunky (it's not very smooth, at least). I need some smooth pitch-tracking for this that can translate it to frequency signals very well. Pretty much like you'll hear in autotune.
I think I could use gizmo~ for the real-time pitchshifting, so that shouldn't be too much of a problem. I also understand that I should make it polyphonic, but that shouldn't be too hard either.
I just really need to get that smooth pitch-recognition too work.
Can someone help me out with this? Is this even possible with Max MSP?
Have a look at retune~. It will do almost exactly what you describe.
I've tried retune~. It's pretty much useless for this purpose, as it's just as dodgy and unreliable as the pitch-recognition from fzero~.
Worked for me:
https://soundcloud.com/instantplaces/voxretune-180113-6-10
Antialias - Might you be able to share your method for creating this retune example?
Thank you so much for sharing your patch! One more request: might you detail what is featured in your "mixer20" and "mixnew_20" abstractions?
Thank you for sharing these! Patch definitely functions as above, but the next step would be to incorporate MIDI-control for the polyphony as opposed to messages dictating specific chords.
If I could throw my hat into the ring, here is my attempt (heavily influenced by examples above). I am a newbie, and had a hard time implementing the `poly~ ` encapsulation without getting lots of strange clips and lost messages, so I hard-coded the 4-voice polyphony. Next step is to deal with formants, etc. Any feedback is appreciated!
Hey Nick, I ended up using and cleaning your script! Did you resolve the formants?
I noticed that the delay of retune is pretty high (>150ms), how do we go around that?
If you don't consider it cheating, check out the Soundtoys Little AlterBoy effect. It does what you're looking for, but it's monophonic. You could probably embed one in a poly~ though
Hey iamnotnicola, hope it was helpful! I never got any further with doing the formant shifting. I had a long-term goal of moving this to a c++ JUCE plugin but work ended getting really busy, so I'm stuck with retune's latency for now. For recording its easy enough to drag region backways a bit; for live depending on the style of music it might be usable -- if you want the main vocal line to be audible, the latency can in your favor.
Hey @nick, this is exactly what I was thinking! For other reasons, at work we have been writing an FFT library in rust and was thinking on writing my own abstraction for Max (maybe with JUCE or maybe with using gen~).
Do you have any update to your current patch that you can share? How can I use the latency in my favour?