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