#include <dtmf.h>
Inheritance diagram for PTones:
Public Types | |
MaxVolume = 100 | |
SampleRate = 8000 | |
MaxFrequency = (SampleRate/4) | |
MinFrequency = 30 | |
MinModulation = 5 | |
SineScale = 1000 | |
enum | { MaxVolume = 100, SampleRate = 8000, MaxFrequency = (SampleRate/4), MinFrequency = 30, MinModulation = 5, SineScale = 1000 } |
Public Member Functions | |
PTones (unsigned masterVolume=MaxVolume) | |
PTones (const PString &descriptor, unsigned masterVolume=MaxVolume) | |
bool | Generate (const PString &descriptor) |
bool | Generate (char operation, unsigned frequency1, unsigned frequency2, unsigned milliseconds, unsigned volume=MaxVolume) |
Protected Member Functions | |
bool | Juxtapose (unsigned frequency1, unsigned frequency2, unsigned milliseconds, unsigned volume) |
bool | Modulate (unsigned frequency, unsigned modulate, unsigned milliseconds, unsigned volume) |
bool | PureTone (unsigned frequency, unsigned milliseconds, unsigned volume) |
bool | Silence (unsigned milliseconds) |
unsigned | CalcSamples (unsigned milliseconds, unsigned frequency1, unsigned frequency2=0) |
void | AddSample (int sample, unsigned volume) |
Protected Attributes | |
unsigned | masterVolume |
char | lastOperation |
unsigned | lastFrequency1 |
unsigned | lastFrequency2 |
int | angle1 |
int | angle2 |
The class contains a master volume which is applied as well as the individual tone volumes. Thus a master volume ot 50% and a tone voluem of 50% would result in a net volume of 25%.
Tones may be described via a list of descriptor strings based on an ITU-T "semi-standard", one used within various standard documents but not a standard in itself. This format was enhanced to allow for multiple tones and volume indications.
The basic format is:
[volume % ] frequency ':' cadence [ '/' ... ]
where frequency is one of frequency single frequency tone freq1 '+' freq2 two frequency juxtaposed (simple mixing) freq1 'x' freq2 first frequency modulated by second frequency freq1 '-' freq2 Alternate frequencies, generated tone is freq1 used for compatibility with tone filters and cadence is mintime ontime '-' offtime [ '-' ontime '-' offtime [ ... ] ]
and volume is a percentage of full volume
examples: 300:0.25 300Hz for minimum 250ms 1100:0.4-0.4 1100Hz with cadence 400ms on, 400ms off 900-1300:1.5 900Hz for 1.5 seconds 350+440:1 350Hz superimposed with 440Hz (US dial tone) for 1 second 425x15:0.4-0.2-0.4-2 425Hz modulated with 15Hz (Aus ring back tone) with cadence 400ms on, 200ms off, 400ms on, 2s off 425:0.4-0.1/50425:0.4-0.1 425Hz with cadence 400ms on, 100ms off, 400ms on, 100ms off, where second tone is reduced in volume by 50%
A database of tones for all contries in the worls is available at: http://www.3amsystems.com/wireline/tone-search.htm
PTones::PTones | ( | unsigned | masterVolume = MaxVolume |
) |
Create an empty tone buffer. Tones added will use the specified master volume.
masterVolume | Percentage volume |
PTones::PTones | ( | const PString & | descriptor, | |
unsigned | masterVolume = MaxVolume | |||
) |
Create a filled tone buffer using the specified descriptor.
descriptor | Descriptor string for tone(s). See class notes. |
masterVolume | Percentage volume |
void PTones::AddSample | ( | int | sample, | |
unsigned | volume | |||
) | [protected] |
unsigned PTones::CalcSamples | ( | unsigned | milliseconds, | |
unsigned | frequency1, | |||
unsigned | frequency2 = 0 | |||
) | [protected] |
bool PTones::Generate | ( | char | operation, | |
unsigned | frequency1, | |||
unsigned | frequency2, | |||
unsigned | milliseconds, | |||
unsigned | volume = MaxVolume | |||
) |
Generate a tone using the specified values. The operation parameter may be '+', 'x', '-' or ' ' for summing, modulation, pure tone or silence resepctively. The tones duration is always rounded up to the nearest even multiple of the tone cycle to assure correct zero crossing when tones change.
frequency1 | Primary frequency for tone |
frequency2 | Secondary frequency for summing or modulation |
milliseconds | Duration of tone |
volume | Percentage volume |
bool PTones::Generate | ( | const PString & | descriptor | ) |
Generate a tone using the specified descriptor. See class general notes for format of the descriptor string.
descriptor | Descriptor string for tone(s). See class notes. |
bool PTones::Juxtapose | ( | unsigned | frequency1, | |
unsigned | frequency2, | |||
unsigned | milliseconds, | |||
unsigned | volume | |||
) | [protected] |
bool PTones::Modulate | ( | unsigned | frequency, | |
unsigned | modulate, | |||
unsigned | milliseconds, | |||
unsigned | volume | |||
) | [protected] |
bool PTones::PureTone | ( | unsigned | frequency, | |
unsigned | milliseconds, | |||
unsigned | volume | |||
) | [protected] |
bool PTones::Silence | ( | unsigned | milliseconds | ) | [protected] |
int PTones::angle1 [protected] |
int PTones::angle2 [protected] |
unsigned PTones::lastFrequency1 [protected] |
unsigned PTones::lastFrequency2 [protected] |
char PTones::lastOperation [protected] |
unsigned PTones::masterVolume [protected] |