I'm using the PIC's hardware PWM (output compare) module. It uses Timer2 as a reference running at Fosc/2. The PIC has a 16MHz crystal with 2x PLL enabled so I believe the PWM is running at 62,500Hz with a duty cycle of 0-100% depending on the sample. The sample rate is 44,100Hz.