Monophonic pitch-shift: real-time, timbre-neutral?
I’ve got a piece of kit from Roland called a VG-99 that uses a divided guitar pickup as input (i.e. six separate signals) and lets you detune the guitar in real time without making it sound like it’s not a guitar. It’s a great idea, but the VG-99 is horribly inflexible. Therefore I want to do it myself, in Max (or using 6 copies of some VST, if I must). Does anyone know of an algorithm, or a Max object, or a VST plugin that allows one to detune a guitar string in real time while maintaining a guitar-like timbre? I don’t need big pitch changes — just +/- 3 semitones.
I think I’ve read about the needed technique: one has to somehow separate the (high) formants from the (low) partials, and transpose the latter while keeping the former in the same shape. But I’m not nearly awesome enough to program it myself.
I tried Mattijs Knepper’s granular time stretcher / pitch shifter (http://www.cycling74.com/share.html), but it creates a weird bumpiness when the pitch shifts, even for single-pitched signals. Demo videos of elasticx~, which costs money, seems to exhibit the same problem. There are also FTT-based stretchers, but those seem to make it smear. And yet somehow Roland manage to get it to work with barely any artifacts.
Many thanks in advance,
I’ve looked through a number of plugins, and they almost all seem to have the artifacts I described. However, the Elastique Pro monophonic algorithm called Soloist does not — it sounds amazing (http://vielklang.zplane.de/). I can either buy that from them, at a cost of $200, or buy Reaper (a DAW) for $60, which includes the Soloist algorithm in the ReaPitch VST plugin. I’m going to do the latter …
Good choice, Reaper is very quickly becoming an amazing DAW :) It also uses the newer Elastique 2 pro algorithms with formant preserving modes and all those goodies. Also, you can do the Ableton Live/PT Elastic Audio stuff on any audio in the edit window by just splitting and alt+dragging the split, which can often be more useful than the plug-in; it depends on the context.
> Good choice
Thanks! But while I’ll keep an open mind, I don’t yet know that I’ll be using it as a DAW per se — right now I just want it for the plugins it comes with!
Yes, I wish that were an option for me, because I already own it. Unfortunately, my desired application — retuning the six strings on a guitar independently while I play it — requires a real-time solution.
I’ve recently been playing with a sinusoidal+residual model with the guitar to do real-time tranformations to the spectrum.
It reconstructs the original signal fairly well. In theory you could simply double the frequency of each oscillator and it would sound fine. The attack is left untouched so it’d only transpose the appropriate part of the sound.
I’ll try to post a patch later but its essentially the sigmund~ partial tracking patch with frequency domain subtraction to isolate the attack/noise.
Oy, that sounds hard. What about changing the frequency by a non-integer factor — say, 3 semitones? Would that work as easily?
I just downloaded and tried playing with sigmund~, and it’s beyond me. If you post that thing I’ll try it out, though.
When you say "it reconstructs the signal fairly well", what’s the catch? In what way does it sound different from the original — phasey? Bubbly? Something else?
Here it is but it needs some work particular with eliminating any outliers from sigmund~ and reducing artifacts during the attack. The frequency domain subtraction could probably also made better and the delay between sigmund’s output and the original signal is just a guess.
Its probably not good enough for your application but it certainly could be with some work. Perhaps someone else feels like fixing it up, I don’t have the time unfortunately.
Just to notice, Gabor package (downloadable from ircam and free) also have some nice monophonic pitch-shift possibilities with formant control :
I tried Reaper out, and realized that its pitch-shift plugin has a 150 ms latency. That appears to be inherent in the Elastique algorithm. It sounds fantastic, but it’s not a viable realtime solution. I’m looking now at options from Celemony, Antares and Mu-Technologies. They all cost two or three hundred dollars. The last boasts of a latency of only 5.6 ms; that’s exciting.
Thank you both for the suggestions you posted above. I hope other readers of this thread find them useful. For me, I’m afraid they both look … um … hard. I don’t really understand enough about pith-shifting algorithms to hack them myself. When it comes to the time vs. money tradeoff, I think I’m better off spending my money than my time on this project. (I know that’s disappointing, but it’s true …)
The classic "harmonizer" approach for transposition is using a delay line, which gets read out faster/slower than written.
You can do this with tapin/tapout by setting the delay with a phasor~.
Due to the nature of this algorithm you will get a "sliding" latency, also depending on the overall delay time.
There’s a patch in examples/effects/transposer-folder
I think the digital whammy guitar pedals also use this technique.
It doesn’t preserve formants, but sounds ok in the range of some semitones.
I just tried demos of a whole bunch of for-pay algorithms, and my tentative conclusion is that every real time pitch-shift algorithm not specifically intended for a guitar, when used on a guitar, either sounds like crap or has an impractically high latency. The only thing I’ve gound that sounds good enough and works fast enough is the Roland gear I’ve already got, but it’s user configurability is worthless. (I haven’t tried the Eventide plugins, but at this point I’m sure they’re just as crap.)
My only remaining hope is to buy a Hipshot Trilogy bridge and make a Lego Minstorms robot to control it for me in response to MIDI pedal commands. Ugh ugh ugh.
Have you tried running the pitch-shifters you’ve tried at a higher sample rate? If you double the sample rate, you’ll have about half the latency figure etc….
Also, have you thought about using a hexaphonic pickup on your guitar? If you did that, you could process each string individually with a monophonic pitch-shifter, and if you used a high sample rate it’s likely that you could get latency down to a useable amount, and have pretty decent sounding polyphonic formant preserving shifting.
"Here it is but it needs some work particular with eliminating…."
what are good texts for this?
Looks like the tristan site isn’t working anymore?
Anyone know where else one can download shifter~? (maxobjects just points to tristan’s site).
I’ve been using a gizmo~ but it sounds pretty weaksauce, particularly as compared to a whammy-pedal.
Anyone find any good sounding monophonic pitch shifting options in the last year? Or more specifically something that sounds similar to a whammy-pedal (where it shifts ok, but more importantly the artifacts sound interesting, and not too fft-y).
I briefly had some fun with elasticx, which I believe is delay-based, and it’s not free:
Here’s a free ‘version’:
and I recall an external called free-elastic, but can’t find it here:
These delay versions are less artefact-y than gizmo, and then there’s always the granular approach – if you’re talking realtime stuff, I don’t know what the latency implications would be tho.
That Delicious one sounds pretty good, better than gizmo and sounds realtime enough. There’s an awesome sounding gen one in the examples folder but it’s no good for realtime as it slides around all over the place.
The recent external grainstretch~ by Timo Rozendal has also a pitch shifter function in real time.
I saw the gabor thing mentioned before but I wanted to avoid using something as heavy lifting as ftm (since I currently don’t have it installed).
I’ll take a gander at grainstretch~ though I do want to stick with vanilla objects for this.
if I haven’t done so already, will I post my own granular pitch-shifter? 2 x play + 2 x phasor objects. If you can build your own realtime record buffer, then this’ll work fine. I think it sounds quite smooth and artefact-free.
I implemented a tapin/tapout system similar to the video you linked. Sounds alright.
I’d like to see if if you wouldn’t mind posting. Curious on the latency of a dynamically filled buffer system like that. (If I’m understanding it right).
here it is; while it may seem a little heavy-handed, it forms the basis of a larger more powerful granular playback engine – pitch shifting is merely one feature of it – so you might want to stick with the simplicity of dude837’s tapout version above
-- Pasted Max Patch, click to expand. --Copy all of the following text. Then, in Max, select New From Clipboard.----------begin_max5_patcher---------- 5108.3oc6c01iqiSE9yCR7eHTABoKWtD+VdADeAI3OvJAeXEZUl1zYBamjRa l6tWPL+1Iu1lzZmbbhahSqQnN6MsM094X+33y43yy+8W9KdZ0yI+b3wUV+Qq u25om9uYW4ohqkekmpuvSqdK3mWuK3XwGbUb3Ok77+Z0mqduzveNs356RB17 V3wiVnSu21j3ziQ+mv72Gg9hc802Gjt90n3W9gCgqSK+0QL6r2O6O4u5RxeE mcEq+Y82I982hh2ElVzHPM+EhCdq3WX0eO7vlf3fS+7QaJtbVq82ibvqZbmR dO8paU40R+19vxVzpUV+yh25+8K+E4+M6OeFLHsN4s2BiSuFkvV6eM3Xn0wW i1lFtwZcx9nvi+IqjXqnziVI+T7msReMz5sfnXqv3WhhCshNZcLMZ2Nq+86Q ogVAGRC2FrN82+sS29cYer0IuGW7aPF.7yPEvOiwJsBE+g5pRC.RfAvV8f7E .3PFOhcK.DbItfvNpeDosxADQSM2WOb6uNX7vwtb.RId32GbPjFNXLomfdL5 k3fcqN2DJZ2gGpfnZLJqQDsK7qgGNFkD27N9zpf86ab8mZ9kxg1+URw8h84y WKJt7ZnyW6P3WipuE9UWM2rU+ibFDIjyraNzBjj50DDyrvurKY8OFV.L1mt5 lvsRcWR1GFe9KT7QZ8xEezn38GBOlMUJHspez5mN38co+ffwJs+.YzRgh+5h FG7zpWNDsIINuoz9ame85ezuuZwg7Waz9K9HwA6480SSR18bvgbyyy6Baa5y lJEDG8VPZXZTYyBae9aF819CQkzomuXXbP1s40iqOjraW66V4a8Udu0lrgGq C+onMouVb6Z.csV8s0fulS0a+FcNku8z9rQ.gQeM7Cq8QYyK9tnWZ8wDYPEs BQIeHtjOz18JB.wbh8RDbEY.ks5h6JGBgdHEN8gpXRqmVdSf58VukbH7ur68 CYCaFEN6WLHmTt7iOE.LSFLLSHiGlup6bl+8BzTLOrHt3KuAb4jEwKKja9B9 Yo4nEySODtZI4qgvYCh2teta372cwgCjGuOt793y6mSWHudOb68vu2CGOed9 qFXeIIz0efKHiJmP1xBHZmUNkLJknN9zqsw9NIuuh3XEmuZymf8x2t9I0yuA qZ8dMHmuffd7Xz0D1sIs+ceb0600rktWXztDkwegwgv9Z3Ey6WtyIXWZCro8 XEtxBBXsx41j7oOxl7vTmYAQp3b4tN5MwrPtCMKA61sO6y9QFplAoeIyFgUg MxqzF4T9GjOPiDY7FI7c4bGENuob69SGcF1aAZQJ5+q.CpkO+G3Ufs6bDrq5 vK8X0Zvfoe4PSUBldOrfIxS8CM8GMZtcWRP5HAyK1aQtKx66YvKvm7OXOP8w j2OrttsdpOawA01DdLMJ9zVz99Fq+Xgu9i+ZzlMb13S4Nb2rOIaqKU8gwvxM htomLcybNcKzBrW5JcuzdA1KIxMjktP6l3GitIQdBnkW2D6IWujrPMlTo5l2 7NYyOPaOmt5XvWC27CYMirmn3GBRSOD876okKzx0EvurK44fcUNJ9zFDVIoW IA6TytcYIHej1+soU6rERMwwfH3eDEuIYLQe.4U5FqxmGzAeSixCgZB+vkge 3ra+GevG.cuLgdvD5A05Gp0ea8tPU5KpR+CRcmJe3hcuC8N3uK2y5tp205ro yr3XB3ATG2NcA7.yLNtUBui4Zeu4pQ3QhtJRoRhlcEHZ2aZjnmROHhkxmStn E4FayG7Kgi0XKSeT3HUmzcQ5iTQ1FAcRGiKJLtnnYFotdWz5e76RCNjNFuUT sTR8YGAQustqXwkTp6B91GVA+sncgJHiTKwZ2arKgbVbI9aNJ+WB9wQMNtLj 13xL0q70dfX7vgXWiW2LI8qwya2gddau0wj23dJDFpSEPkaSqxqB9LfdUvdr dUfgtcaSlCgEGjuahqtHu3cyDRh0EQVmjYbHztfTiU3CHeutog5lX6ZxMItq xQvAkjCLQGLxN4H75izSBhOHjePH.gQB1IQH.xP.Dh.HEESLxcRCOBR9ePPD kWrWjf21e7sjjzWySqYa6hW39U5aPVmY2b8IliQDxc1eFNClC8RdTJYkferN 3RkwKsb1MNG2NL8V2O8QFjqRqoa4z3xk.oTILlXUYLIrGVio5mWVEUwNxv8a okj9fZI4Ga3wXMqeBUReAI9VZNeTYYODDu4CqqiWtJLn1ckBRvBUzvMn3GZC pRsmshKMiMKlSzcn4jebW6dQOhcewdEnUn4V0sA.tbGrHNVrhwSN6ghabYEf 0hB3kHD+p.eQ3G3qNB9EkH9aHN.X.BB1nFzMdffJKPzEzsjABhz.AkaLeW7. AZP.wc3HBrz.w8IGAU5oFL6IGHt7CdsSUgjAAb8fLfLIPBmTJkuN62KlfcgJ ramfLLfGtu7q4Gka1rxYPYuNQGRdJ6NLCXyZQpzlTUsafFoJzXsID66QaRvq 44kruu5LLU4piyzkXx9KPCy1cIYMRkD41xo.kd4rtFEc6mNf5KvsXfG9+Oas 54f3WzxrBuBaUXInvknE0LgY.KokATgoNnj93lg8UiH8TWodykc2jg8RUhNb WlIetqbkAfk4wHfgjoSl+PyKvLrmXKcmb4YIoxcLB7WlkyAoFtJxtq6DOTos jHyABQdW2bmcfPZ6NlAdxDPUR0.kqeXTVdy6svNZBb2D+vfXLqqMuqLD1egg veRAidwd0JpwsbvK0dgAs+lOrPipP1ThtnxrujhuoCbonEF5VTLHbx9eJ.hK O6RtnaKBi0PD9Jebv0+FX.6IWr2MZqQNCebFGuCIXm5SJ5TMFpSOoAEbvp8b soAnCoJoisUwXGxBZry0d7R7BnTF7AOHgnSWkhLaY63MjmnqboUCvf2lsZBI WuSRNILgHW6TjRAs2hkfsW0wVq50dJeWfhf2E3za0gt.wQNqfN1EXv6B954. IY5BtZpUvCdWvQO6BxLcVWsBtv6BdZJopsbcAczJ3CtKvq2tvlKTzEV3qNqo qKPwvsBHMcfjjqNqgcAFRtmQBqgcAIFHg0Tq.QtUm0wGyCdWfo98KT+FmifT eQO5jnC2STi5Q2bAI2thET2dUs2t+5bhNTMtnY5RMsLeOug5RssQWpM5RsQW pUXzGtA5RMxeZzkZ5CqtTWmW8roPWpwlRTm7bzh4oGBWsj70P3rgm+JlRTW8 aXzkZitTazk5Y2jXzkZitTazk5gN2wnK0Fco1nK0C.LM5RsQWpuqTRTinvZT 32d5lF8Z9dpa9XHk5dR2KQKvdou7DPXyY76g+L9oDcolU4FK1TnK0HS3GtL7 CFco1D5AitTazkZitTesYwnK0fcbqQWpM5R8DgkFcoVINWS2D5WijMaDe6Nr j5lLpabQwintTWqIQroPWpw9Ol5RsSSWBci0kZr2CotT6X2r5Oca0kZrQWpM I8qwyaOYzkZitT+jXje4qK0vng5lXanjaCffCJIGXhNXjcxQ30GomDDePH+f P.BiDrShP.jg.HDAPJJlXj6jlISWpw45RM1nK0x6kVN6FmiaGldqqx0kZulm +QitTazk5QYIM5RsprlFcodVWCMWFiQFco9Nyf5eyDl5YxdZDlZivT2YDuDg 3F8XVHPXTn6Ej56Zzi4oDHLRU9BRpxMBSsQXpMBSsQXpGnMwHL0vLLFgoFhg wHL0FgodfCVMBSsQXpMBScGIlstIcpFQv0Hmwcr24GAgo9gPhweHDKdrTUsB Wl4DgXNQHiVXpqRU9p7R8FKL0sO+wOJBScEDWsYxaqvT29rDe2KL0UPa4etw BSMl9nIL0UocvjHL0XxRTXpIj1Itz.g3IQXpwKWgotx2atJP6koN2cBSsc+t +AJ33d+IL01N8V+IfhNd2c5Rc4BmTBa75RM0eQnK0X3RkGVSUDYLbclCyzSo xSlt.US6BL45B53.I3ZzNVSE0YrqbcgE9bAMUWpwvkYdrlJpyX+kuUve4utf DxLOdwu5LQSE0YBRNqfNJs1T4lKniRqsibVAMTWpoRr5rlNcl5I25B5ntTKg 5f6azk5EktTeLL+zlco5zJirT6xZjymbTKU9a+GtpTe97yeoOAFLXT6.gqPi JQVy5kfnXqfMaNZs88CoYCdrdtpht7YqrgZVqChsxF5dHYy6qCs9subH+yeH 7XRbP75veqUvgzLq+5ziVIGxt9WCO7rU31sYX1wS+n4SAWm7doeLXCA3qp4Z 0dY2otpfnLnGaqbn+sviGCdI7Zn+P39c4C2G.PvvMREPVgSvQdBgArzv.xSZ cQu1U2CAhxFfklwp1QG1oLiRqN97N0u1qc+k0I6JqxM40BFWJB45jWFXPd1D eb9+kGh43kcMTy6VKrvQZrnYJjpRpqn3sIWTa8jYTCspHDXWU4BIWE7uwN8A QEfUdBwpS4c6tniE+8zEf7ebKP4yYGfLfKoLZBLOQRx5nmShjdbX6fPoRLhu ziKCdUEiTFppR0v5YYTh7.l8vArVM7yksqSOmknxzEuxy0oG0jW43hWY3ha4 2pQ1DIU41heY1R1xqkDkUq9JmV8+Xhc+PpvdVTAkKK.kIqtJOVcUVr5tbXws LX0Q4upixdUGk6pqKyU2pvfARfuAFGLUFELcLgwfHV2pJkEroKtrY5RsnXXv a2htsxf2kVN2ziHZKKVCR7rEWV4jDrwOTYlGDQvVQii0xJdMnjSAf1n.L2Tr u+xbG.hTMTvw6tCbfH5zPQG+IOsltYY2iM7v9nkgaPh3eZqoYmjM73eZqow7 wFd.SroKeqft1E.G7PcMmRr8jpGnggNz1WtIyXSnC0tPG1tdXHzqlYOpPzaY etV9fgazKphXnmnxhQ9O+4aEaDdi+YEDwCaQQ7.2uW7uUg9nCQbRFuNWcfHp pHk7DuoQFBjym6MMvK8pBzXrVwMR8flmFAZk4Gv3PLW6VHlMR4HlqxiSs3P8 bgXSI0PmpvgQq.BRO.gzgEy0wDjGSPdLA4QgdwTrfNI8Y0DhPN0gOWjwklLj Qg4jm3PL4wPHPjjDABQB7pOgQg4pei6MElqonIwxEMIFGQSZHUqPvhkT2Bkj 7UTUxcX06jq3GMbqR+hdjhqbmD1coQQgVjdEuHUaQn2gVD9hQzXjIydEgHUa VtGYupzfFj50uzNDeFUWTnw2sFFkTRnakfEroqVciVflE3U+UnZ7C7p+Jy9d o5uRjplgJPSWz9ZFpTk3VxxrlgRkpbZxVlk3VAZoib5ni12IkqXESWlcRhzc RjovnN.OEYJLpxoOMJJAVoKsh14k5My.w1N0YlNNtExfss0VlGkRNKD8hQUY esuFBvWqALRGsG.Z+hhFhh5JXOX.IfKGcdYZSFY.Z4BrjQ1kbuUcNopp3b5R WRIwNrycGDsVA1wtyksDp9jtfSOcNZmhVjPnfqLTbzdCcnCPYRYAzuN.ObEr dlnCc.FRpNf9MGvEdp0qoGxDvI0sKyTNnVTkCp8VA+in3MICJ6FKKdEzxckw IPOiLKOcw2+I234bCZ3o1Xu2CShMZRrQdgdefGQamth3tpbRf6RTcObUWkbf cagWmG05jg8DTmLzRMUZZqu.t12eNef0zGoiy4CnkfyGfKXAZZw9GdUlWSqD utf26tlVSpgq1BtHyNG0xcNJr.t5cNKzkpLbVUEaIMpGXpr5s53NoEu0reim CO7wXJHokQLl4v4bQmrIrEHL.nIa4zKNh1MCjreem04r4YgG9ZvtxsDc9lHZ Y6OeNvJpeHm8W9r0uFk8+GCbWEmNkW1foSaUCVjGcxomG0vwpfr6q5ypJU9y U+4wTi8f0KrBfme5deNX8OZkrc6wyOCX6p0MdHUD2pGklcVuFIJrVcSsmtpj 9e6P3+9OWTx3Gz3JVCsXzwW0dIj3Oc.QdO9OmiFi.Gn2Jbva5vgsQ+b3Fqhp f+2k24G.Z32PGS8sUNXLcEHfOkmB3CpDP60nyqd5VLQ5kiF8B2.qbL7hkPyR 5uiZFOnfhACFoe0BlO0PklGPIGuhHFgbT8HNzbT7W5W7DbalrQDu5WmBwSvS azNghB5xGinXtTVCmnpWtWbzwJFz1mGV8dobw8RrxS4qpc9.FqMEJnABTzl0 EGGW0qgPS1x+Wk8sC3Q.p1xEmztcrLxjYX.S3+YSv5O5hQlTsLe0VjNkvi80 saIUQSlE9W8G9HOrQ1iYM2pG5Go75+jNQHzHG+GxjfRnhvTMYfNs.yvDWmJn gVWO07Ts55nSqq7ow.Q0UZMBR0PDUmjenWCNlbXT3jsnjLXjvDQmfocAeaD5 EV8rtxEmcUd5sg0Hn5422tM7PEXYEDmskpuDDscPhymWisagTOc9Lti78Awg 6V0qOeqkouxmqwG0eeu0y3qd+30a6lVk2GU0nNmBWCfnDIa4P8Da4MscxJT0 StLBy08mqOXANsOs1hhKd6vJyIjxBBmLWbFbq6BM8VPiyYdZaHP.GYVZbEUe 49acHFqUwCepZdD3MtoG6nsOBPc15PSuk8RTQzQf.o2C7r04Ad1Z8.O6YZfm sNOvC1vN5LQGizZrqPolAz7jswwHz78OVt8HlG9p+Qk5s5SOuMSkzcxOtmN8 0cndyDXCanJhNOMOPbPn44Ytxy8k9acylgEzSDl6x04f9VhV2L7vzvlRLOqK 6JQqCosOwEZddhKeeHsN24gOwG15dj4wvBxt56pwOqpqyrfbDMdHmKHqJSiw s4YEBGWHMN5L9bI8237mmFmmFibv7hFxeVlO3BtsMCOsIn0Umos6BaYUGM1Q AyDvwz3mGAluylocsBpwQkE2Pd9EdlnRh5okAuL+eMgsZoe.uSsZbYBgb9eo jVMnwnyyCIPg9rU154rmwO4I+BY+4++WK4zJ -----------end_max5_patcher-----------
That sounds good but not worlds better than the tapout version. What a finicky effect pitch shifting is….
I’m joining in late here.
I’ve been using the tapin~ tapout~ technique for quite a while now.
Maybe I can share it later, although it won’t be much different from Brendans version.
But I must say these psola externals are quite nice. Although some other artefacts are definitely audible.
Does anyone know how to design them in max? (Time domain preferably.)
I’ve been looking around the internet, but haven’t found out exactly how it is done.
Here’s an article explaining a bit about psola: ftp://ftp.eng.umd.edu/:/home/glue/p/r/pratkn/pub/ENEE632_Project%20Report.pdf
Is it just a granular synth, in which the window size is a division of the pitch period?
You should try diracLE~ by Timo Rozendal.
It sounds very good and gives you control over the formants too.
It’s a bit heavy on cpu though.
I was going to suggest DiracLE~ but then saw that the OP’s issue is the glitching when changing pitch, and sadly DiracLE~ does that too.
Have you tried Noboyasu Sakonda’s Realtime Pitch Shifter ( http://web.me.com/nsakonda/sakoweb/download.html )?
I’m not at a Max machine right now, so I can’t test if it does this too and it’s a while since I used it, but from what I remember, it does a pretty reasonable job of pitch shifting otherwise.
And Sugar Synth, which is on the same page, is, well, sweet! (as indeed is his Autotune patch, P.Molder),
I personally would be into some glitchy-ness, though I’m trying to stay external-free (as much as possible anyways).
I’ll check diracLE out though as it’s been mentioned a couple of times now.
Actually seems like diracle adds latency for realtime usage which makes it a no go unfortunately as it sounds good
Mine’s quite similar though I preferred the sound with just 2 voices and a short delay window (I think I used 50). To my ears going to 3+ voices sounds worse and worse.
Here’s my tapin~ tapout~ version. Needs a little more debuggin.
But overall I quite like the sound.
Because I made this one to create a choir, I added a little vibrato.
I don’t know if it works so well on other sounds.
Any suggestions to make it better are more than welcome.
Would be interesting to revisit these designs in gen~, since you have different interpolation modes that might affect the quality of the sound. It also might be interesting to try using allpass interpolation.
Happy new year 2014!
I think using tapin/tapout to built overlap-add-like pitchshift is wrong: Apparently, tapout cannot delay less than the vector size… and in overlap-add algorithms the delay go down to 0 all the time!
one should use delay~ instead in that case.
here is a topic i made about this problem: http://cycling74.com/forums/topic/same-pitchshift-algorithm-sound-different-in-gen-and-msp/#post-278182
And by the way here is a BENCHMARK of the quality/latency for various pitch shifters used on a monophonic source: http://cycling74.com/forums/topic/monophonic-pitchshift-engines-benchmark-psola-in-gen/
Forums > MaxMSP