I found this information on QSL.net. Is this helpful? Did you use a similar algorithm in creating the sidetone’s speed?
CW speed
“ PARIS
The word PARIS is the standard to determine CW code speed. Each dit is 1 element and each dah is 3 elements. Between each character the space is 1 element. The spacing between each character in a word is 3 elements; and the spacing between each word is 7 elements.
The word PARIS is exactly 50 elements. Note that after each dit/dah of the letter P – one element spacing is used except the last one. (Intra-Character).
After the last dit of P is sent, 3 elements are added (Inter-Character). After the word PARIS - 7 elements are used.
Thus:
P
di da da di
1 1 3 1 3 1 1 (3) = 14 elements
A
di da
1 1 3 (3) = 8 elements
R
di da di
1 1 3 1 1 (3) = 10 elements
I
di di
1 1 1 (3) = 6 elements
S
di di di
1 1 1 1 1 [7] = 12 elements
Total = 50 elements
() = intercharacter
= interword
If you send PARIS 5 times in a minute (5 WPM) you have sent 250 elements (using correct spacing). 250 elements into 60 seconds per minute = 240 milliseconds per element.
13 words-per-minute is one element every 92.31 milliseconds.
The Farnsworth method sends the dits and dahs and intra-character spacing at a higher speed, then increasing the inter-character and inter-word spacing to slow the sending speed down to the overall speed. For example, to send at 5 wpm with 13 wpm characters in Farnsworth method, the dits and intra-character spacing would be 92.3 milliseconds, the dah would be 276.9 milliseconds, the inter-character spacing would be 1.443 seconds and inter-word spacing would be 3.367 seconds.
A dah (or dash) is 3 times as long as a dit. There is also a proper amount of spacing of time between characters and words. There is 1 “dit” space between elements in each character; there are 3 “dit” spaces between characters; there are 7 “dit” spaces between words. …(Provide illustration of dit es dah lengths, as well as explanation of PARIS.)
THE STANDARD WORD
The word PARIS is used as the standard to define a word and code speed given as Words Per Minute (WPM). PARIS takes 50 “dit” spaces of time.
The letter “P” is:
dit, an empty dit space, dah (3 dit spaces), an empty dit space, dah (3 dit spaces), an empty dit space, dit, 3 empty dit spaces for character separation, for a total of 14 dit spaces
The letter “A” is:
dit, an empty dit space, dah (3 dit spaces), and 3 empty dit spaces for character separation, for a total of 8 dit spaces
The letter “R” is:
dit, an empty dit space, dah (3 dit spaces), an empty dit space, dit, and 3 empty dit spaces for character separation, for a total of 10 dit spaces
The letter “I” is:
dit, an empty dit space, dit, and 3 empty dit spaces for character separation, for a total of 6 dit spaces
The letter “S” is:
dit, an empty dit space, dit, and empty dit space, dit, and 7 empty dit spaces for word separation, for a total of 12 dit spaces
If each dit space equaled 1 second of time, the word “PARIS” would take 50 seconds to send. This is just over 1 WPM of code speed (1.2 WPM to be more precise)…pretty slow.
Now if you were to shorten the time of dit spaces, to say for example, 5 dit spaces per second, the word “PARIS” would now take 10 seconds to send. You would be able to send the word “PARIS” 6 times in 1 minute for…you guessed it, a 6 WPM code speed. An overall 5 WPM code speed would have the dit spacing equal to 1.2 seconds.
Decrease the dit space more so that, if 10 dit spaces were equal to 1 second, the word “PARIS” would be able to be sent in 5 seconds. Now you could send the word “PARIS” 20 times in 1 minute. 60 seconds in 1 minute divided by 5 seconds per word equals 20 WPM.
Finally, for an overall 30 WPM code speed, every 25 dit spaces would equal 1 second; the word “PARIS” would be able to be sent in 2 seconds. If the word “PARIS” is able to be sent in 2 seconds, you can then send it 30 times in 1 minute.
30 WPM overall code speed is quite commonly heard. Some hams who have acquired the skills and lots of practice can send and receive at much higher rates. Generally speaking, any higher than 30 WPM is an exception to the “rule”. Those are few and far in between.
If a dit takes 2 dit spaces (one dit, and an empty dit space), and you were sending a string of 125 dits in 1 minute you would be sending @ 5 WPM. (50 dit spaces per word multiplied by 5 WPM equals 250 dit spaces; half of these are the actual dits being sent, the other half are the empty dit spaces; therefore 125 dits being sent)
125 dits/minute = 5 WPM
325 dits/minute = 13 WPM
500 dits/minute = 20 WPM
750 dits/minute = 30 WPM”