The finished version is in the community library. The tough part was the pitch control. I don't remember the details, but I used two sets of buffers, one that reads from the SD card, and one where the stream is "resampled" at the new pitch. A very fast SD Card is required to make it work reliably.
If you don't want the pitch control, you could just use the Wave/play object and edit the thread priority. From memory, what cause a click is that the seek time when finding the start of a file on the sd card is too long, thus creating an audible click in the audio stream. When I reduced the thread priority, starting playing might take slightly longer, but it doesn't disrupt the audio anymore.