ABSF WROTE:Thanks Brian, DDS is a new term for me. I did google for it but I didn't read them fully cause there are so much infomations. Especially multi-channel DDS for polyphonic sounds. Which PIC do you recommend for doing multi-channel DDS? I thought the handphones are using ARM chips as one of my English friends told me. That's why the handphones have plenty of bandwidth to do so many things and still be able to play beautiful sounds. I will take a closer look at the multi-channel DDS after the CNY.
You can use a casual PIC16F microcontroller for all that, but if you need to simulate the decay effect, you might need some very tricky fast multiply routines, or use a PIC18F for hardware multiply. The decay effect is an e^-x, so you need to convert them into a table of fixed point values, and then multiply it to a wavetable (example, sine, squarewave or trianglewave). If you need to write DDS algorithm in C (I suppose it's easier!), try the dsPIC as it has mul/div instructions.
Elm-chan
http://elm-chan.org/works/mxb/report.html did a little music box using multichannel DDS using AVR. However, it is written entirely in assembly because he/she had to do it precisely, as a few cycles are lost during the interrupt routine and the exact frequency must be calculated.
The handphones might not need to do all the DDS in software because they have already a built-in codec, I guess. Like the iPhone, the processor contains audio/video codecs which simplify development process.
ABSF WROTE:Now you mentioned SD card makes me remember that PIC only has few hundred bytes of RAM and EEprom. So to play sound files it looks like adding a SD card is a neccessity. But cant we just grab a 32K PIC (16K words) and store the sound in the data statements like DTI (arrays of retlw). Or was it too slow? And how about the file system? Can the PIC read FAT formated files in the SD cards without teaching it filing system of PC DOS?
I will take a look at the Mikro C compiler and its library and try out some of the C sound programs. I have used PICBasic Pro and I know its sound commands are easy to use. I'll learn them step by step but only after the CNY cause I have a lot of repair works waiting for me to finish. The Laney Bass Guitar amplifiers are giving me a real headache.
Allen
You can use a 32k or a 64k PIC for all that, but a short uncompressed WAV file is
very huge and it is not encouraged to do so. The file system drivers (FAT16/32) in the microcontroller is already chewing a lot of memory also. And wait, you need like 1.5k above RAM for playing wav files. Reserve a 512 bytes buffer for it.
The MikroC sound libraries are not much - it's just a square wave and all the beeps.
To answer the question "Can the PIC read FAT formated files in the SD cards without teaching it filing system of PC DOS?", you need to write the algorithm for that, or for more lesser hassles, use the Microchip's FAT16/32 libraries or the onboard MikroC.

PIC - UIC00B from Cytron (replacement for my broken PICKit 2), Pickit 3, MikroC for PIC
dsPIC - MikroC for dsPIC, mikromedia board (dsPIC33)
AVR - AVR Dragon
Parallax - Prop tool