Pitch shifter questions?
Your solution will shift the pitch up a fixed amount based on the frequency of the loudest "sine wave".  For example, if you feed it a 440 Hz sine wave then it will output a 880 Hz sine wave.  880 Hz is one octave higher than 440, so you're good so far.

However, music is not just a single sine wave.  A single note will have harmonics.  Normally each harmonic is an integer multiple (or divisor) of the fundamental.  Let's say that your 440 Hz note has a harmonic at 880 Hz.  That harmonic is at a lower volume than the fundamental.

When you run this through your algorithm, it will pick out the 440 Hz and shift everything up another 440 Hz.  What ends up is that the fundamental correctly comes out as 880 Hz, but the harmonic comes out as 1320 Hz but it should be 1760 Hz.

The result is that your single note is now out of tune with itself!  Now consider that a single note is not just one fundamental and one harmonic, but there could be hundreds of harmonics-- each out of tune with the other.  Ouch!

To further make things difficult, you cannot differentiate between notes accurately enough.  For example, middle C is 523.25 Hz.  But C# above middle C is 554.37 Hz.  Both of these will fall into the same FFT bin, so you will shift them the same # of Hz even though they are different notes that require a different shift amount.  More out of tune shifting.

FFT's and Inverse FFT's are not used for professional pitch shifters.  Well, sometimes FFTs are used but the bin data is not just moved and put into an inverse FFT to get the pitch shifted audio-- doing so results in bad sounding noises.

Professional pitch shifting algorithms are all patented, which has some good and bad things.  For you the good thing is that a patent search will uncover all sorts of documentation on how professionals do it.