The configuration also allows customised tones to be generated. You can replace these with your own versions.
The format for a tone is either a single tone or a series of duration@tone sections. In a sequence you can use duration for a period of silence. A duration is a number and then ms and a tone is a frequency or frequency+frequency for mixing two tones. Each frequency is a number of Hz and can have a volume suffix which is - and a number if dB. The tone can be followed by ^ if you want it to be shaped (rise at start and fall at end).
Table 16.4. Default tones
| Tone | Plan |
| silence | 100ms |
| progress | 1000ms 1000ms@400Hz-3dB+450Hz-3dB 1000ms |
| ring | 1000ms 400ms@400Hz-3dB+450Hz-3dB 200ms 400ms@400Hz-3dB+450Hz-3dB 1000ms |
| queue | 700ms 400ms@400Hz-3dB+450Hz-3dB 200ms 400ms@400Hz-3dB+450Hz-3dB 200ms 400ms@400Hz-3dB+450Hz-3dB 700ms |
| busy | 375ms@400Hz 375ms |
| hold | 100ms@400Hz-3dB+450Hz-3dB 200ms 100ms@400Hz-3dB+450Hz-3dB 2600ms |
| wait | 2600ms 100ms@400Hz-3dB+450Hz-3dB 200ms 100ms@400Hz-3dB+450Hz-3dB |
| close-encounter | 1000ms 300ms@588Hz^ 300ms@654Hz^ 400ms@524Hz^ 600ms@262Hz^ 1000ms@392Hz^ 1000ms |
| bbc | 50ms 345ms@122Hz 35ms 300ms@525Hz 2000ms |
| 1000Hz | 1000Hz |
/voip/ring.wav serves a WAV format of the tone. You can test tones using a URL like /voip/tone.wav?100ms@1000Hz+200ms@2000Hz but ensure you URL escape the query string.