i have once implemented the gr-300 pitch detection method in puredata, "no" latency since the pitch is extracted from the signal (no analysis). it works quite well if you have a hex-pickup (divided)
the method boils down to: (taken 1:1 from the gr-300 schematics)
1) filter the incoming string signal to remove unwanted overtones:
-a lowpass filter with cutoff at the 17th fret of the corresponding string
-a adjustable second filter that gets changed based on frequency estimation later (adaptive filtering)
2) square up the processed signal and extract pulses at each change of signal
3) feed those pulses to the reset input of an accumulator. this will give you a sawtooth wave with the same frequency as the guitar signal, but with varying amplitude (also dependant on frequency)
4) measure and hold the highest amplitude with a sample and hold to get the frequency of the string, you can then feed this signal to other oscillators in puredata.
5) have fun with your guitar synth...
it's a long time ago that i did this, and i wanted to implement a heavy version of this, but as i remember i used some expr~ objects in there. but these might be replaceable. the beauty of this method is that it is all done in signal domain, and it is very fast. the downside is that you need proper filtering or you get octave jumps... but if you go the hex-pickup route this is pretty easy as well, since you will have a narrow range of frequencies to detect per string.