Tone Generation Proposal

"Eugene Nechamkin" <[email protected]> Tue, 28 Jun 2005 18:25:21 -0700
Newsgroups gmane.ietf.ipcdn
Message-ID <24CDBA67F085904999751B3C4F9E8C0B03122B03@NT-RMNA-0740.brcm.ad.broadcom.com>
 
After looking at the issues associated with the Tone Table definition, here
is the proposal which seems to have a potential to solve the following
outstanding issues:

1. to be able to represent the tones with potentially any number of
frequencies (as opposed to draft-07 with four frequencies limit, and draft-08
with two frequencies limit)

2. to be flexible enough without adding unneccessary complexity to satisify
the MIB doctors requirement (MIB doctors coments for draft-07).

3. to be able to generate twist DB level between two freqs for a tone (as
opposed to draft-08)


Before going into the MIB details, here is the basic idea illustrating the
approach:

1. Define the Frequency Group Table (FreqGroupTable), indexed by FreqGrpIdx
and FreqVal.
This table can be viewed as the "Table of Chords" (using the analogy in one
of the recent e-mails):

FreqGrpIdx     FreqVal    DbLevel       CompMode   
=============================================================================
=======
1               1400       -100            1
1               2060       -100            1
1               2450       -100            1
1               2600       -100            1
2               440        -130            1


COMMENTS:
	- dBLevel - per frequency tone level. Darft-08 was not able to
generate twist DB level between two freqs for a tone. Overall level of all
tones in a frequency group MUST NOT exceed -3dB.
	- CompMode - the following operations on the frequencies in each
group are defined to aggregate them for the tone generation: 
	     - sum of all frequencies in the table (=1),
	     - modulation of the 1st one by the 2nd one (=2)
	- FIVE Freqs per group - MAX.

2. Define Group Sequence Table (GroupSeqTable), indexed by GrpSeqIdx and
GrpNumIdx.
This table can be viewed as the "Table of Musical Themes" (using the analogy
in one of the recent e-mails):

GrpSeqIdx     GrpNumIdx    FreqGrpIdx     DurationON   DurationOFF
RepeatCount
=============================================================================
===
 1                  1          1           100            100              0
(no repeat)
 2                  1          2           100            100              0
(no repeat)
 2                  2          2           300            100              0
(no repeat)
 2                  3          2           100            100              0
(no repeat)


COMMENTS:
	16 Groups per Sequience (Tone) - MAX.

3. Define Tone Table (ToneTable), indexed by ToneType. 
This table can be viewed as the "Table of Musics" (using the analogy in one
of the recent e-mails), with each "Music" corresponding to the particular
Tone being generated:

ToneType    GrpSeqIdx   WholeToneRepeatCnt   ToneSteady
===============================================================
5            1                  5000              2 (no)
12           2                   700              2 (no)


Here is how all these three tables would work together:

1. If EMTA needs to generate "offHookWarning(5)", it looks at the Table-3
(ToneTable), 1st row. This row refers to the Group Sequence '1' (GrpSeqIdx ==
1). The Group Sequence Index is located in the Group Sequence Table (Table-2)
(1st row for GrpSeqIdx==1) which indicates that the Frequencey Group 1
(FreqGrpIdx=1) should be used to generate the tone. The Table-1 described the
composition of this group with various frequencies for FreqGrpIdx==1, which
tells the EMTA to take four frequencies, sum them up (CompMode==1), and play.
Because there is no any more Frequencey Group pointed in the Table-2 for the
Group Sequence '1' (GrpSeqIdx == 1), the "offHookWarning" tone is generated
by repeating this 5000 times (WholeToneRepeatCnt==5000) with the tone being
not steady (ToneSteady==2)

===> Here is how this tone would sound

1) 1400Hz + 2060Hz + 2450Hz + 2600Hz on for 100ms
2) 1400Hz + 2060Hz + 2450Hz + 2600Hz off for 100ms
3) repeat (1) and (2) 5000 times

2. If EMTA needs to generate "callWaiting4(12)", it looks at the Table-3
(ToneTable), 2nd row. This row reffers to the Group Sequence '2' (GrpSeqIdx
== 2). The Group Sequence Index is located in the Group Sequence Table
(Table-2) (2nd, 3rd abd 4th rows for SeqGrpIdx==2) which indicates that the
Frequencey Group 2 (FreqGrpIdx=2) should be used to generate the tone, and
this Group should be played three times. The Table-1 described the
composition of this group with various frequencies for reqGrpIdx==2, which
tells the EMTA to take one frequency (Freq=440) and play it for the 2nd row
of the Table-2. Then 3rd row of the Table-2 is played and finally, 4th row of
the Table-2 is played. The whole "melody" of three repetion of the Group #2
(FreqGrpIdx== 2), plays the required tone by repeating this 700 times
(WholeToneRepeatCnt==700) with the tone being not steady (ToneSteady==2).

===> Here is how this tone would sound

(1) 440Hz on for 100ms
(2) 440Hz off for 100ms
(3) 440Hz on for 300ms
(4) 440Hz off for 100ms
(5) 440Hz on for 100ms
(6) 440Hz off for 100ms
(7) repeat (1) through (6) 700 times


Eugene Nechamkin,
Broadcom Corp.