I am working on APU pulse channels. My music pitch sounds low. I didn't do down sampling or apply any enhancements. Is this normal or something is wrong with my period used in pulse waveform generator? If I use every other 40th samples, pitch sounds about right but it also sounds like there are gaps in between tones. Currently sweep and 11-bit timer can alter my period. Is there anything I am missing?
You **MUST** do some form of down sampling. The NES outputs ~1790 KHz but you'll usually only want to output ~48 Khz (or 44KHz).
Outputting 1 sample every ~40 clocks is one form of downsampling (commonly referred to as "nearest neighbor"). It will work but will be very low quality. If the pitch sounds about right when doing that, then your pulse is probably fine -- you just need to properly downsample it.
If you're downsampling to 44100Hz, your divider needs to be exactly 3125/77 for NTSC (1789772.72727... / 44100, around 40.5844) rather than an even 40, otherwise your pitches will be off.