[LCWO LOGO]  

Login

User name:
Password:


Language
Български Português brasileiro
Bosanski Català
繁體中文 Česky
Dansk Deutsch
English Español
Suomi Français
Ελληνικά Hrvatski
Magyar Italiano
日本語 한국어
Bahasa Melayu Nederlands
Norsk Polski
Português Română
Русский සිංහල
Slovenčina Slovenščina
Srpski Svenska
ภาษาไทย Türkçe
Українська 简体中文
Who is online? (44)


LCWO Discussion Forum [Atom LCWO Forum Feed]

This is a simple discussion forum for LCWO users. Feel free to use it for any kind of discussion related to this website.

Thread: TX Training Feedback to Fabian

Back to the Forum

AuthorText


Posted: 2025-08-12 15:30
Hello Fabian,
first of all: congrats to your work. Really great and useful.

The TX Training page is good idea too. I hope it will develop to a cw via internet chat some day.

Today I ran into 2 issues.
The first one is a minor one: The latency of the sidetone via the web page in the browser is far to long. It kicks me out of the rhythm on the paddles, even at my slow speed of 12 wpm. Muting the audio of the notebook and using the local hardware sidetone from the keyer helps. Maybe a hint about this on the page will be useful for new users. A muting button would be even more convenient. (In a future chat application a selective muting of the own sidetone will be necessary, to hear the answering stn without switching.)

The other thing was that the page produces wrong decoding from time to time. dots are falsely received as dashes. d -> k, s -> r and the like. My signal is absolutely clean to see on my controlling scope. The text ist generated by the beacon in the keyer. So my bad fist is innocent here hi hi.
The signal is 12 wpm according to scope measurement. But setting the speed to 12 wpm on the page, leads to really bad decoding. Setting to a value around 10 to 11 ist much better but leads to the from time to time mistakes described above.

I hope this feedback is useful for the coding work.

For interested users I add a short description of my setup:
A Palm Radio Paddles is connected to pk-4 keyer from QRP Project. The sidetone from the keyer ist connected to the right ear headphone. In the left ear headphone I can hear the computer output, if there is any(, eg answers from vband). The TX open collector output is wired in parallel to the left button of an usb mouse connected to the Notebook. This setup ist tested and works well on vband and other websites.

Please do not hesitate to ask for details if you consider to copy it.
73 gl, John oe6jbg



Posted: 2025-08-17 08:23
Dear Fabian,

may be muting the PC sidetone could help to avoid the decoding errors. The generating of the side tone seems to eat up too much of processing time on an old PC.

Anyway:
This tx training tool is very useful to generate text for my own receiving speed training. So I do not waste time typing an exercise text especially tailored to my needs.

73 55 de oe6jbg, John


Posted: 2025-08-17 16:11
Hello again, Fabian,

sorry for posting in small chunks. Obviously things need time to settle down in my head.

Thinking over the TX training page and its behaviour, I became curious and so I had look into the js. There I noticed some questionable lines and I tested alternatives. The result was nice.

The original js prog decoded the example beacon loop of my keyer as follows:
" CQ UOTA REJ OT RT *99 CQ Y* DE OE6*BG/P OT6JBG/J K "
After changing very little in my local copy of the page, the result is more familiar to me:
" CQ SOTA REF OE ST 299 CQ CQ DE OE6JBG/P OE6JBG/P K"
The latter text is what I intended to send the same what cwget and fistcheck decode.

And this is, what I tried sucessfully. I show the changed lines only:
function down () {
//if (!audio_started) { // jbg: not wasting processig time
// with my old machine I better use the Hardare sidetone
// init_audio();
//}
time = new Date().getTime();
checkspace();
keydown = 1;
//gainNode.gain.value = 0.1;
}

if (time > (dotlength*2)) { // jbg: *2, (1+3)/2 tolerance
// to both sides,
// threshold in the middle.
if (time-idletime > 5*dotlength) { // jbg 4 -> 5, (3+7)/2=5
// same again.

Use it as you like.

I hope it is a pleasant surprise to you, when you return from your well deserved hollidays and have look at the forum.

73 and all the best, John oe6jbg
Administrator


Posted: 2025-08-21 06:53
Thanks, John, and sorry for my late reply. I will look into this in the next few days!

73
Fabian


Posted: 2025-08-23 21:28
Hello Fabian,

there is no reason to worry and hurry. I love to tinker around in my local copy of tx training. When you have time to go on developing tx training, drop me a note and I will send you the whole file by mail. It will be more readable and up to date then.

Tx training is vy useful and can integrate the training into ervery days life. Now I write in addition to the exercise texts, shopping lists, todo lists, emails and personal notes with the paddles connected to the notebook pc.

To facilitate this, I addded some little features.

The -.-.- clears the text area.
"=" and "bk" start a new line.
This makes a pretty format of qso texts and also of other texts.

The [copy to clipboard] Button copies the text area for conveniently pasting the content int another program, an editor, an email program and the like.

The browser sidetone can be muted by a checkbox now, so one can choose between an external hardware sidetone and the pc software sidetone.

Here are the corresponding source code lines. They work but they are not nedessarily elegant. I am not a pro coder, just a tinkerer.



Mute


document.getElementById('Mute').checked=true; // jbg default no browser sound

To the append function, I added:
// jbg Linefeed after bk, working but not streamlined.
if ((document.getElementById(where).innerHTML[document.getElementById(where).innerHTML.length-2]+what)=='bk')
{document.getElementById(where).innerHTML += 'brtag';}
// jbg Linefeed after =
if (what=='='){document.getElementById(where).innerHTML += 'brtag';}
if (what=='CTin underline tags'){document.getElementById(where).innerHTML = '';}


function copyclip () // jbg
{//document.getElementById('testout').innerHTML = '>'+' copy';
var copyText = document.getElementById("jskey").innerHTML;
// linefeeds brtags to return newline
copyText = copyText.replaceAll('brtag ','return newline');
copyText = copyText.replaceAll('brtag','return newline');
// leading blank
copyText = copyText.substring(1);
navigator.clipboard.writeText(copyText);
//document.getElementById('testout').innerHTML = '>'+' copied';
}

In the down function and in the up function I made the init_audio call and the gain.value assigments dependent of the aforementioned checkbox.

if (!document.getElementById('Mute').checked && !audio_started) { // jbg use hw sidetone only
init_audio();

if (!document.getElementById('Mute').checked) {gainNode.gain.value = 0.1;}

if (!document.getElementById('Mute').checked){gainNode.gain.value = 0.0;}

I hope this all is readable and helps. I had to replace the html tag br ant the backslash r and the backslash n. The forum spoils these character groups.

73 55 John oe6jbg

ps: short example

shopping list =
bread =
fruit =
veggies =
otg adapter

Back to the Forum

You must be logged in to post a message.