This class can be used to generate PCM data for tones (such as telephone calling tones and DTMF) at a sample rate of 8khz.
More...
|
| PTones (unsigned masterVolume=MaxVolume, unsigned sampleRate=DefaultSampleRate) |
| Create an empty tone buffer. More...
|
|
| PTones (const PString &descriptor, unsigned masterVolume=MaxVolume, unsigned sampleRate=DefaultSampleRate) |
| Create a filled tone buffer using the specified descriptor. More...
|
|
bool | Generate (const PString &descriptor, unsigned sampleRate=0, unsigned masterVolume=0) |
| Generate a tone using the specified descriptor. More...
|
|
bool | Generate (char operation, unsigned frequency1, unsigned frequency2, unsigned milliseconds, unsigned volume=MaxVolume) |
| Generate a tone using the specified values. More...
|
|
bool | Write (PChannel &channel) |
| Write tones to channel. More...
|
|
unsigned | GetSampleRate () const |
| Get the sample rate for tones. More...
|
|
void | SetSampleRate (unsigned rate) |
| Set sample rate for tones, note will clear tone buffer. More...
|
|
virtual PBoolean | SetSize (PINDEX newSize) |
| Set the size of the array in elements. More...
|
|
| PScalarArray (PINDEX initialSize=0) |
| Construct a new dynamic array of elements of the specified type. More...
|
|
| PScalarArray (T const *buffer, PINDEX length, PBoolean dynamic=true) |
| Construct a new dynamic array of elements of the specified type. More...
|
|
| PBaseArray (PINDEX initialSize=0) |
| Construct a new dynamic array of elements of the specified type. More...
|
|
| PBaseArray (T const *buffer, PINDEX length, PBoolean dynamic=true) |
| Construct a new dynamic array of elements of the specified type. More...
|
|
virtual PObject * | Clone () const |
| Clone the object. More...
|
|
PBoolean | SetAt (PINDEX index, T val) |
| Set the specific element in the array. More...
|
|
T | GetAt (PINDEX index) const |
| Get a value from the array. More...
|
|
void | Attach (const T *buffer, PINDEX bufferSize) |
| Attach a pointer to a static block to the base array type. More...
|
|
T * | GetPointer (PINDEX minSize=0) |
| Get a pointer to the internal array and assure that it is of at least the specified size. More...
|
|
T | operator[] (PINDEX index) const |
| Get a value from the array. More...
|
|
T & | operator[] (PINDEX index) |
| Get a reference to value from the array. More...
|
|
| operator T const * () const |
| Get a pointer to the internal array. More...
|
|
PBoolean | Concatenate (const PBaseArray &array) |
| Concatenate one array to the end of this array. More...
|
|
| PAbstractArray (PINDEX elementSizeInBytes, PINDEX initialSize=0) |
| Create a new dynamic array of initalSize elements of elementSizeInBytes bytes each. More...
|
|
| PAbstractArray (PINDEX elementSizeInBytes, const void *buffer, PINDEX bufferSizeInElements, PBoolean dynamicAllocation) |
| Create a new dynamic array of bufferSizeInElements elements of elementSizeInBytes bytes each. More...
|
|
virtual void | PrintOn (ostream &strm) const |
| Output the contents of the object to the stream. More...
|
|
virtual void | ReadFrom (istream &strm) |
| Input the contents of the object from the stream. More...
|
|
virtual Comparison | Compare (const PObject &obj) const |
| Get the relative rank of the two arrays. More...
|
|
void | Attach (const void *buffer, PINDEX bufferSize) |
| Attach a pointer to a static block to the base array type. More...
|
|
void * | GetPointer (PINDEX minSize=1) |
| Get a pointer to the internal array and assure that it is of at least the specified size. More...
|
|
const void * | GetPointer () const |
|
virtual PINDEX | GetLength () const |
| Retrun the length in bytes for the array. More...
|
|
PBoolean | Concatenate (const PAbstractArray &array) |
| Concatenate one array to the end of this array. More...
|
|
| PContainer (PINDEX initialSize=0) |
| Create a new unique container. More...
|
|
| PContainer (const PContainer &cont) |
| Create a new refernce to container. More...
|
|
PContainer & | operator= (const PContainer &cont) |
| Assign one container reference to another. More...
|
|
virtual | ~PContainer () |
| Destroy the container class. More...
|
|
virtual PINDEX | GetSize () const |
| Get the current size of the container. More...
|
|
__inline size_t | size () const |
|
PBoolean | SetMinSize (PINDEX minSize) |
| Set the minimum size of container. More...
|
|
virtual PBoolean | IsEmpty () const |
| Determine if the container is empty. More...
|
|
__inline bool | empty () const |
|
PBoolean | IsUnique () const |
| Determine if container is unique reference. More...
|
|
virtual PBoolean | MakeUnique () |
| Make this instance to be the one and only reference to the container contents. More...
|
|
__inline unsigned | GetTraceContextIdentifier () const |
| Get PTRACE context identifier. More...
|
|
__inline void | SetTraceContextIdentifier (unsigned id) |
|
__inline void | SetTraceContextIdentifier (const PObject &obj) |
|
__inline void | SetTraceContextIdentifier (const PObject *obj) |
|
__inline void | CopyTraceContextIdentifier (PObject &obj) const |
|
__inline void | CopyTraceContextIdentifier (PObject *obj) const |
|
virtual | ~PObject () |
|
__inline const char * | GetClass () const |
|
__inline bool | IsClass (const char *name) const |
|
__inline const PObject * | PTraceObjectInstance () const |
|
template<class CLS > |
CLS * | CloneAs () const |
| As for Clone() but converts to specified type. More...
|
|
virtual PINDEX | HashFunction () const |
| This function yields a hash value required by the PDictionary class. More...
|
|
virtual Comparison | CompareObjectMemoryDirect (const PObject &obj) const |
| Determine the byte wise comparison of two objects. More...
|
|
bool | operator== (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator!= (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator< (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator> (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator<= (const PObject &obj) const |
| Compare the two objects. More...
|
|
bool | operator>= (const PObject &obj) const |
| Compare the two objects. More...
|
|
|
void | Reset () |
|
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) |
|
virtual void | ReadElementFrom (istream &stream, PINDEX index) |
|
virtual void | PrintElementOn (ostream &stream, PINDEX index) const |
|
| PBaseArray (PContainerReference &reference_) |
|
PBoolean | InternalSetSize (PINDEX newSize, PBoolean force) |
|
| PAbstractArray (PContainerReference &reference, PINDEX elementSizeInBytes) |
|
| PContainer (int dummy, const PContainer *cont) |
| Constructor used in support of the Clone() function. More...
|
|
| PContainer (PContainerReference &reference) |
| Construct using static PContainerReference. More...
|
|
virtual void | DestroyContents ()=0 |
| Destroy the container contents. More...
|
|
virtual void | AssignContents (const PContainer &c) |
| Copy the container contents. More...
|
|
void | CopyContents (const PContainer &c) |
| Copy the container contents. More...
|
|
void | CloneContents (const PContainer *src) |
| Create a duplicate of the container contents. More...
|
|
void | Destruct () |
| Internal function called from container destructors. More...
|
|
virtual void | DestroyReference () |
| Destroy the PContainerReference instance. More...
|
|
| PObject () |
| Constructor for PObject, made protected so cannot ever create one on its own. More...
|
|
This class can be used to generate PCM data for tones (such as telephone calling tones and DTMF) at a sample rate of 8khz.
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 Af0-G#9 Standard musical note codes, letters A to G followed by optional 'f' or '#' for flat or sharp, then on optional octave number from 0 to 9. A4 == 440Hz
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/50%425: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