I've long been in the process of setting up a live environment to play guitar through using pd. I've got my audio interface, the presonus firebox (still saving up for a nice laptop- anyone have experience with adkproaudio laptops?), I've made table-based loopers that work well and conform to a given beat, and I've got a decent distortion using hardoff's tangent-based saturator idea, and I've done a few other effects I'm pretty happy with. But the one effect I've been swooning over, and that I cannot wrap my head around, is that of an octave shift that works well in real-time.
I've tried using hilbert~, which works well for vibrato, but nothing close to an octave down, and I've tried numerous times to create a pitch shifter using multiple vd~'s but those, and the versions I've tried made by others, always sort of sound mediocre, and have a sort of phasing to them, which results in a muffled sound with none of the sort of "pluck" you'd want in emulating a bass guitar.
As far as I can tell the last option to try is using rfft and such, but I can't quite understand it enough to do anything. I can follow the resynthesis example pretty well, as far as I can tell it uses a table lookup to modify amplitudes of certain frequencies. What I don't quite understand is what is actively indexing that table. Is the sample # for the fft window considered the index? And then, only half-way understanding that, I'm completely baffled by the phase-vocoder example (which is designed for time-stretching rather than pitch shifting, so I'd have to know how to adapt it) which is what I assume I'd need to use to do something like this.
So I guess what I'm curious about is whether the phase-vocoder is what I'm looking for, if there are any other options to consider, and whether there are any pd-based tutorials for making phase-vocoder pitch-shifters, or if anyone has made patches for such a thing with good results. I've got msp's book but the fourier analysis chapter is for the most part above my head; I cannot for the life of me figure out how to apply any of it in making a functional pitch-shifter for live input. Thanks.