Technical Helpweb

Dialogic® DM3 and JCT Media Boards

Functions for Detecting User Defined Tones


Summary
This technote is a discussion of the pros and cons of using function dx_blddtcad() versus function dx_blddt() or dx_bldst*() for detecting user-defined tones.

Symptom:
When developing an application designed to detect user-defined tones, using a function other than dx_blddtcad() sometimes causes incorrect detection of tones.

Reason for the problem:
At the library level, all tones are built as dual-frequency tones with a cadence value (repitition count). Aside from dx_blddtcad(), there are three APIs that can be used to create a user-defined tone. Each of these convenience functions automatically populates a portion of dx_blddtcad().

Each also has a potential drawback that can either cause a tone to be detected when it's not present or not detected when it is present.

The drawbacks fall into one of two categories:
  1. In functions where cadence is not defined (dx_bldst(), dx_blddt()), the "on time" is also not defined. This means a tone can be detected if the defined frequency is present on the line for as little as 40ms! This is especially problematic with dx_bldst(), where even human voice can trigger a single frequency for that period of time.

    When user-defined tones are used in an application, they are usually present on the line for significantly longer than DTMFs, since DTMFs are usually about 100ms long and user-defined tones are often 200-500ms or longer.

  2. In functions where only one frequency is defined (dx_bldst(), dx_bldstcad()), there have been issues because of the way the tones are detected. All tones are detected as dual-frequency tones. When the dx_bldst*() convenience functions are used, the second frequency is automatically filled in as 0. Usually for single frequency tones, the second frequency equals 0, so there would be no problem.

    Sometimes, however, a second frequency is detected that is very close to the first frequency. This has been reported in the field, and can be resolved by making two definitions to dx_blddtcad().
A related technical note, Single-Frequency User-Defined Tones not Detected  provides more detail about this issue.

Fix / Solution:
  • Use dx_blddtcad() for all tone definitions. The small amount of extra data entry far outweighs the possibility of poor tone detection in the field.
  • Using dx_blddt() and dx_bldstcad() are relatively safe, but may have potential drawbacks that make it safer to use dx_blddtcad().
  • Generally, one would avoid using dx_bldst().

Product List
Dialogic® DM/IP Boards
Dialogic® JCT Media Boards
Dialogic® Host Media Processing Software Release 3.0 for Windows®
Dialogic® Host Media Processing Software Release 2.0 for Windows®
Dialogic® Host Media Processing Software Release 1.5 for Linux

Glossary of Acronyms / Terms
DTMF- Dual-tone multi-frequency

Related Documentation
Single-Frequency User-Defined Tones not Detected





Feedback

Please rate the usefulness of this page:  
0 - not useful at all
1 - potentially useful
2 - quite useful
3 - very useful
4 - exactly the information I needed     

Please enter a comment about this page: