It sounds like you are having a sampling problem. Try going into the WAVE drivers property page and setting the Receive buffer threshold to 1024, click okay to all of the screens, and reboot when it asks you to. I had a similar clipping problem and this solved it. In my case, I noticed that it was only catching the DTMF digits for part of the outgoing phone number.
Also, DTMF is not caller-id and is captured through the wave drivers, not the tapi drivers. The wave drivers work fine for me, it is the tapi drivers that stop functioning. I set the program I wrote to log errors and when the wave drivers are active on a specific port, the tapi drivers give me the error LINEERR_RESOURCEUNAVAIL for the same port. I think the wave drivers lock the line which causes the tapi drivers to fail. If you are truly able to do both, I would like to know your specific setup for vrs, wave, tapi, etc.