MorseKOB / PyKOB

Python implementation of a library for Morse and MorseKOB functionality
https://sites.google.com/site/morsekob/morsekob40
MIT License
4 stars 2 forks source link

Enhancement: Add ability (and option) to use tone in addition to sounder. #272

Closed AESilky closed 3 months ago

AESilky commented 1 year ago

Adding an option to play tone will allow users to practice and communicate like CW (using International Morse) in addition to practicing and communicating in Land-Line (using American and Sounder).

International Morse is already supported, so the enhancement is to add the ability to play a tone rather than the 'click' and 'clack' sound files and to add a configuration option to select Sounder/Tone.

microPaul commented 1 year ago

This may totally supplant my CW Widget Project ( http://ad7i.net/main/cw-widget/ ), and I would welcome that, because this new system would be a much cleaner (and lower cost) approach to allowing for a group of radio morse students and an instructor to communicate using tone morse over the internet. And those students may then also be exposed to American Morse and the use of the sounder. A win-win.

Paul, ad7i

On Thu, Oct 6, 2022 at 10:43 PM Ed Silky @.***> wrote:

Adding an option to play tone will allow users to practice and communicate like CW (using International Morse) in addition to practicing and communicating in Land-Line (using American and Sounder).

International Morse is already supported, so the enhancement is to add the ability to play a tone rather than the 'click' and 'clack' sound files and to add a configuration option to select Sounder/Tone.

— Reply to this email directly, view it on GitHub https://github.com/MorseKOB/PyKOB/issues/272, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARRCDYT2HXX7LLTKLE2Q7F3WB6E4FANCNFSM6AAAAAAQ7FZAHQ . You are receiving this because you are subscribed to this thread.Message ID: @.***>

AESilky commented 1 year ago

Thank you for the link to the 'CW Widget'. It appears to be a very capable device (I would be interested in building one for myself). It certainly does a lot more than adding a tone option to MKOB would do. However, MKOB does have the ability for you to listen to informational wires that are in International code at a few different speeds, and for a number of people to join together for a 'group chat' by picking an unused wire. We could even allocate a wire intended to be used with International Morse, the way we allocate Wire-11 for American Morse group use (typically active on Monday, Wednesday, and Saturday).

Can you provide some ideas and information about any of the other features of the CW Widget that would be helpful in MKOB. The focus of MKOB will continue to be American/Land-Line Morse, but I think that adding some CW (like) functionality could help some CW students, and at the same time might increase the user-base, which would help find bugs and provide feature enhancement ideas.

BTW: When I want to practice CW, I connect a tone module (that I built) in place of a sounder to the external interface (using the key+sounder configuration option). This enhancement is simply to allow the use of tone from the computer rather than having to hook up an external module.

On Thu, Oct 6, 2022 at 7:54 PM Paul Newland @.***> wrote:

This may totally supplant my CW Widget Project ( http://ad7i.net/main/cw-widget/ ), and I would welcome that, because this new system would be a much cleaner (and lower cost) approach to allowing for a group of radio morse students and an instructor to communicate using tone morse over the internet. And those students may then also be exposed to American Morse and the use of the sounder. A win-win.

Paul, ad7i

On Thu, Oct 6, 2022 at 10:43 PM Ed Silky @.***> wrote:

Adding an option to play tone will allow users to practice and communicate like CW (using International Morse) in addition to practicing and communicating in Land-Line (using American and Sounder).

International Morse is already supported, so the enhancement is to add the ability to play a tone rather than the 'click' and 'clack' sound files and to add a configuration option to select Sounder/Tone.

— Reply to this email directly, view it on GitHub https://github.com/MorseKOB/PyKOB/issues/272, or unsubscribe < https://github.com/notifications/unsubscribe-auth/ARRCDYT2HXX7LLTKLE2Q7F3WB6E4FANCNFSM6AAAAAAQ7FZAHQ

. You are receiving this because you are subscribed to this thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/MorseKOB/PyKOB/issues/272#issuecomment-1271046798, or unsubscribe https://github.com/notifications/unsubscribe-auth/AETPXO6EML45XXMKNXN2ZV3WB6GGPANCNFSM6AAAAAAQ7FZAHQ . You are receiving this because you authored the thread.Message ID: @.***>

microPaul commented 1 year ago

Hello Ed and everyone,

I'm very sorry to taken so long to respond.

At the risk of providing too much information (TMI) let me give the background as to why I made the CW Widget, what the Widget does, and most importantly what I think an ideal tone CW over the internet system would look like (operationally from the user's perspective). I realize that only part three directly addresses your question.

In the spring of 2021 I was a student in CW Op's "CW Academy Advanced Class". This "advanced" class is intended for hams who are proficient at CW at about 15 to 18 WPM and the goal is to pull them up to 25 WPM (CW, continuous wave, a misnomer in my mind, since it's better described as Infrequent Intermittent Continuous Wave, a mouthful soup of words, and my preferred term is Tone Morse Code, but I digress). Classes were conducted twice a week for eight weeks on Zoom (16 class sessions), and also what turned out to be about 90 minutes of homework, five days a week. Some instructors use class time for only verbal chit-chat; other instructors (like mine) use class time to send and receive acoustic tone morse code through zoom. That was problematic because I think Zoom sometimes considered a tone to be noise and stomps on it. We would have five way tone morse conversations over zoom (I was in NJ, instructor was in CO, Student 1 was in NM, Student 2 was in OR and Student 3 was in Australia). The problem often was that two of the students would hear perfect tone morse and two others would hear mangled mush. And who heard good tones and who heard bad tones would change from minute to minute. Incredibly frustrating. We then moved to Google's video conferencing system, and that was a little better, but not much better. Because most of the learning was through homework, we continued on, but the zoom sessions were a real source of frustration. The last week or two of class one of the students pointed out that a new a system for sending and receiving tone morse over the internet had been created, https://hamradio.solutions/vband/ . All that was needed to use vband was a dongle to connect a telegraph key (or Iambic paddles - basically two straight keys back to back) to a PC via USB. The system, in concept, was great. The problem was (as of April 2021, I haven't tried it since) that it fell apart above 15 WPM when using the PC to also provide the electronic keyer function (using the Iambic paddles). When we moved to an external keyer (to make electronic dots and dashes) and connected the keyer output to the straight key input of the dongle, then we could go up to about 18 WPM before the system fell apart again (by falling apart I mean that the tone produced at the far end was not in synch with the key closures at the sending end). This was most evident when simply sending about 20 dots. At the far end the timing of the dots was choppy at best.

Which brings me to the CW Widget. I had used Les Kerr's MorseKOB system and the American morse internet KOB server (I think of it as an internet based telegraph conference bridge) for a few years and knew it worked well. At one time I could copy American Morse on a sounder at about 12 WPM, but I've atrophied significantly since then. Yet, when I listen to high speed (35 WPM) morse on a sounder over the KOB Server, the code produced on the sounder sounds well timed to my ear. After checking with Les to ensure that the conference bridge was code agnostic (it is) I decided to make a device that could provide tone morse over the KOB Server. The task would be to make an audio tone oscillator with speaker amplifier that was controlled by a USB to Serial converter, and also include an automatic circuit closer, since the MorseKOB PC program appeared to enforce that function. One of my issues with "Code Practice Oscillators" since my first FCC administered morse exam in 1972, is that they are rarely ideal. I wanted the tone oscillator in the Widget to be as good as possible: no hard or soft keying, no clicks, no chirp. So that was another design goal. So the Widget's functionality is as follows:

On the receive side, there is an audio tone oscillator with speaker amplifier, with tone on/off controlled by the RTS signal from USB<->Serial converter. There is also an automatic tone-mute function that mutes the tone output if the wire has been continuously closed for at least one second (i.e, RTS active for more than one second). The user can select the rise and fall time of the tone envelope (8m seems the best choice). The user can also control the frequency of the tone oscillator from 400 Hz to 1200 Hz in 50 Hz steps (650 Hz is nominal frequency) and the volume output of the speaker amplifier from 0 to -36 dB in 2 dB steps (I think -14 is nominal setting). There is 3.5mm TS speaker jack and a 3.5mm TRS headphone jack (with suitable loss in the headphone circuit such that comfortable volume from the speaker produces comfortable volumen on the headphones).

On the transmit side there is a 3.5mm TS jack for a straight key (or bug) and a 3.5mm TRS jack for iambic paddles. The widget includes an iambic keyer function with speed controlled by a pot and provides a speed range from 12 to 35 WPM. There is also a circuit closer function such that the first sent element (dot or dash) is absorbed by the Widget but also releases the circuit closer. The circuit closer will be re-engaged when the user presses the OVER button on the Widget OR there has been no activity on the key for 6 seconds.

The main problem with the Widget is that the current PCB has been designed for a DIP package microcontroller (AVR128DB28) but those have now become very difficult to obtain, so I'm reworking the board to use an SOIC version of the part, since those remain available in spite of the world wide chip shortage.

Ideal Tone Morse over the internet:

As for what (I think) an ideal system for tone telegraph over the internet would look like, I think it should be like tone Morse operation over radio, but without any of the propagation problems (no static, no fading, no solar weather issues). I would envision each user entering some ID information (just like with MorseKOB), so that info could be reported to all users, as it is with the KOB Server today. I would not include an integral iambic keyer function in the system if it in any way diminished the system's ability to faithfully reproduce the tone timing at up to 40 WPM. Closing a key at one station would cause the tone to be reproduced at other stations (without a circuit closer), with timing such that Morse could be communicated at up to 40 WPM. Break in operation would be great, but it wouldn't need to be as transparent as it is in radio. If there was some indication that two stations were sending at the same time, and indicated to the sending stations in some way (mutilated sidetone perhaps) then that would be good enough to let both stations know that they need to resolve who will be the immediate sending station. As it is now with the CW Widget, once you start sending you are blind to what's going on on the wire until the auto circuit closer kicks in.

One embellishment that would be helpful, but not necessary, is the use of a tone offset. When stations enter their ID info into the system, they might also enter a tone offset number (+/- 20, 40, 60, 80, 100.... 300). The idea being that if station 2 has selected a tone offset of +60 Hz, then when any other stations hears station 2, the tone produced at receiving stations will be at a frequency of +60 Hz above that receiving station's nominal tone frequency. The goal of this is to give each station a little audio differentiator as heard by the receiving stations. Very few hams use a bug or straight key today (for which I'm thankful since many ham today send horrible code with those devices), so other than bad sending with a keyer, people don't seem to have much of a unique "fist". With most everyone using electronic keyers, the characteristics of their keying are often reduced to the frequency offset from the nominal tone frequency (I'm thinking of party line operation with several stations participating in a group conversation).

I think those are the main points. Please let me know if I've left some gaps that need filling in.

73, Paul, ad7i

On Fri, Oct 7, 2022 at 1:11 AM Ed Silky @.***> wrote:

Thank you for the link to the 'CW Widget'. It appears to be a very capable device (I would be interested in building one for myself). It certainly does a lot more than adding a tone option to MKOB would do. However, MKOB does have the ability for you to listen to informational wires that are in International code at a few different speeds, and for a number of people to join together for a 'group chat' by picking an unused wire. We could even allocate a wire intended to be used with International Morse, the way we allocate Wire-11 for American Morse group use (typically active on Monday, Wednesday, and Saturday).

Can you provide some ideas and information about any of the other features of the CW Widget that would be helpful in MKOB. The focus of MKOB will continue to be American/Land-Line Morse, but I think that adding some CW (like) functionality could help some CW students, and at the same time might increase the user-base, which would help find bugs and provide feature enhancement ideas.

BTW: When I want to practice CW, I connect a tone module (that I built) in place of a sounder to the external interface (using the key+sounder configuration option). This enhancement is simply to allow the use of tone from the computer rather than having to hook up an external module.

On Thu, Oct 6, 2022 at 7:54 PM Paul Newland @.***> wrote:

This may totally supplant my CW Widget Project ( http://ad7i.net/main/cw-widget/ ), and I would welcome that, because this new system would be a much cleaner (and lower cost) approach to allowing for a group of radio morse students and an instructor to communicate using tone morse over the internet. And those students may then also be exposed to American Morse and the use of the sounder. A win-win.

Paul, ad7i

On Thu, Oct 6, 2022 at 10:43 PM Ed Silky @.***> wrote:

Adding an option to play tone will allow users to practice and communicate like CW (using International Morse) in addition to practicing and communicating in Land-Line (using American and Sounder).

International Morse is already supported, so the enhancement is to add the ability to play a tone rather than the 'click' and 'clack' sound files and to add a configuration option to select Sounder/Tone.

— Reply to this email directly, view it on GitHub https://github.com/MorseKOB/PyKOB/issues/272, or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ARRCDYT2HXX7LLTKLE2Q7F3WB6E4FANCNFSM6AAAAAAQ7FZAHQ

. You are receiving this because you are subscribed to this thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/MorseKOB/PyKOB/issues/272#issuecomment-1271046798, or unsubscribe < https://github.com/notifications/unsubscribe-auth/AETPXO6EML45XXMKNXN2ZV3WB6GGPANCNFSM6AAAAAAQ7FZAHQ

. You are receiving this because you authored the thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/MorseKOB/PyKOB/issues/272#issuecomment-1271116382, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARRCDYVX7KNS45MTMFEI5J3WB6WEZANCNFSM6AAAAAAQ7FZAHQ . You are receiving this because you commented.Message ID: @.***>

AESilky commented 1 year ago

Thank you for the background information and ideas.

One thing to note is that MorseKOB and the KOB Server do allow 'breaking in', in the event that someone leaves their closer open. I hadn't really thought about the fact that CW doesn't have a closer, so your CW widget's auto open/close is something I'll think about for MKOB along with the tone option.

On Tue, Oct 18, 2022 at 8:11 AM Paul Newland @.***> wrote:

Hello Ed and everyone,

I'm very sorry to taken so long to respond.

At the risk of providing too much information (TMI) let me give the background as to why I made the CW Widget, what the Widget does, and most importantly what I think an ideal tone CW over the internet system would look like (operationally from the user's perspective). I realize that only part three directly addresses your question.

In the spring of 2021 I was a student in CW Op's "CW Academy Advanced Class". This "advanced" class is intended for hams who are proficient at CW at about 15 to 18 WPM and the goal is to pull them up to 25 WPM (CW, continuous wave, a misnomer in my mind, since it's better described as Infrequent Intermittent Continuous Wave, a mouthful soup of words, and my preferred term is Tone Morse Code, but I digress). Classes were conducted twice a week for eight weeks on Zoom (16 class sessions), and also what turned out to be about 90 minutes of homework, five days a week. Some instructors use class time for only verbal chit-chat; other instructors (like mine) use class time to send and receive acoustic tone morse code through zoom. That was problematic because I think Zoom sometimes considered a tone to be noise and stomps on it. We would have five way tone morse conversations over zoom (I was in NJ, instructor was in CO, Student 1 was in NM, Student 2 was in OR and Student 3 was in Australia). The problem often was that two of the students would hear perfect tone morse and two others would hear mangled mush. And who heard good tones and who heard bad tones would change from minute to minute. Incredibly frustrating. We then moved to Google's video conferencing system, and that was a little better, but not much better. Because most of the learning was through homework, we continued on, but the zoom sessions were a real source of frustration. The last week or two of class one of the students pointed out that a new a system for sending and receiving tone morse over the internet had been created, https://hamradio.solutions/vband/ . All that was needed to use vband was a dongle to connect a telegraph key (or Iambic paddles - basically two straight keys back to back) to a PC via USB. The system, in concept, was great. The problem was (as of April 2021, I haven't tried it since) that it fell apart above 15 WPM when using the PC to also provide the electronic keyer function (using the Iambic paddles). When we moved to an external keyer (to make electronic dots and dashes) and connected the keyer output to the straight key input of the dongle, then we could go up to about 18 WPM before the system fell apart again (by falling apart I mean that the tone produced at the far end was not in synch with the key closures at the sending end). This was most evident when simply sending about 20 dots. At the far end the timing of the dots was choppy at best.

Which brings me to the CW Widget. I had used Les Kerr's MorseKOB system and the American morse internet KOB server (I think of it as an internet based telegraph conference bridge) for a few years and knew it worked well. At one time I could copy American Morse on a sounder at about 12 WPM, but I've atrophied significantly since then. Yet, when I listen to high speed (35 WPM) morse on a sounder over the KOB Server, the code produced on the sounder sounds well timed to my ear. After checking with Les to ensure that the conference bridge was code agnostic (it is) I decided to make a device that could provide tone morse over the KOB Server. The task would be to make an audio tone oscillator with speaker amplifier that was controlled by a USB to Serial converter, and also include an automatic circuit closer, since the MorseKOB PC program appeared to enforce that function. One of my issues with "Code Practice Oscillators" since my first FCC administered morse exam in 1972, is that they are rarely ideal. I wanted the tone oscillator in the Widget to be as good as possible: no hard or soft keying, no clicks, no chirp. So that was another design goal. So the Widget's functionality is as follows:

On the receive side, there is an audio tone oscillator with speaker amplifier, with tone on/off controlled by the RTS signal from USB<->Serial converter. There is also an automatic tone-mute function that mutes the tone output if the wire has been continuously closed for at least one second (i.e, RTS active for more than one second). The user can select the rise and fall time of the tone envelope (8m seems the best choice). The user can also control the frequency of the tone oscillator from 400 Hz to 1200 Hz in 50 Hz steps (650 Hz is nominal frequency) and the volume output of the speaker amplifier from 0 to -36 dB in 2 dB steps (I think -14 is nominal setting). There is 3.5mm TS speaker jack and a 3.5mm TRS headphone jack (with suitable loss in the headphone circuit such that comfortable volume from the speaker produces comfortable volumen on the headphones).

On the transmit side there is a 3.5mm TS jack for a straight key (or bug) and a 3.5mm TRS jack for iambic paddles. The widget includes an iambic keyer function with speed controlled by a pot and provides a speed range from 12 to 35 WPM. There is also a circuit closer function such that the first sent element (dot or dash) is absorbed by the Widget but also releases the circuit closer. The circuit closer will be re-engaged when the user presses the OVER button on the Widget OR there has been no activity on the key for 6 seconds.

The main problem with the Widget is that the current PCB has been designed for a DIP package microcontroller (AVR128DB28) but those have now become very difficult to obtain, so I'm reworking the board to use an SOIC version of the part, since those remain available in spite of the world wide chip shortage.

Ideal Tone Morse over the internet:

As for what (I think) an ideal system for tone telegraph over the internet would look like, I think it should be like tone Morse operation over radio, but without any of the propagation problems (no static, no fading, no solar weather issues). I would envision each user entering some ID information (just like with MorseKOB), so that info could be reported to all users, as it is with the KOB Server today. I would not include an integral iambic keyer function in the system if it in any way diminished the system's ability to faithfully reproduce the tone timing at up to 40 WPM. Closing a key at one station would cause the tone to be reproduced at other stations (without a circuit closer), with timing such that Morse could be communicated at up to 40 WPM. Break in operation would be great, but it wouldn't need to be as transparent as it is in radio. If there was some indication that two stations were sending at the same time, and indicated to the sending stations in some way (mutilated sidetone perhaps) then that would be good enough to let both stations know that they need to resolve who will be the immediate sending station. As it is now with the CW Widget, once you start sending you are blind to what's going on on the wire until the auto circuit closer kicks in.

One embellishment that would be helpful, but not necessary, is the use of a tone offset. When stations enter their ID info into the system, they might also enter a tone offset number (+/- 20, 40, 60, 80, 100.... 300). The idea being that if station 2 has selected a tone offset of +60 Hz, then when any other stations hears station 2, the tone produced at receiving stations will be at a frequency of +60 Hz above that receiving station's nominal tone frequency. The goal of this is to give each station a little audio differentiator as heard by the receiving stations. Very few hams use a bug or straight key today (for which I'm thankful since many ham today send horrible code with those devices), so other than bad sending with a keyer, people don't seem to have much of a unique "fist". With most everyone using electronic keyers, the characteristics of their keying are often reduced to the frequency offset from the nominal tone frequency (I'm thinking of party line operation with several stations participating in a group conversation).

I think those are the main points. Please let me know if I've left some gaps that need filling in.

73, Paul, ad7i

On Fri, Oct 7, 2022 at 1:11 AM Ed Silky @.***> wrote:

Thank you for the link to the 'CW Widget'. It appears to be a very capable device (I would be interested in building one for myself). It certainly does a lot more than adding a tone option to MKOB would do. However, MKOB does have the ability for you to listen to informational wires that are in International code at a few different speeds, and for a number of people to join together for a 'group chat' by picking an unused wire. We could even allocate a wire intended to be used with International Morse, the way we allocate Wire-11 for American Morse group use (typically active on Monday, Wednesday, and Saturday).

Can you provide some ideas and information about any of the other features of the CW Widget that would be helpful in MKOB. The focus of MKOB will continue to be American/Land-Line Morse, but I think that adding some CW (like) functionality could help some CW students, and at the same time might increase the user-base, which would help find bugs and provide feature enhancement ideas.

BTW: When I want to practice CW, I connect a tone module (that I built) in place of a sounder to the external interface (using the key+sounder configuration option). This enhancement is simply to allow the use of tone from the computer rather than having to hook up an external module.

On Thu, Oct 6, 2022 at 7:54 PM Paul Newland @.***> wrote:

This may totally supplant my CW Widget Project ( http://ad7i.net/main/cw-widget/ ), and I would welcome that, because this new system would be a much cleaner (and lower cost) approach to allowing for a group of radio morse students and an instructor to communicate using tone morse over the internet. And those students may then also be exposed to American Morse and the use of the sounder. A win-win.

Paul, ad7i

On Thu, Oct 6, 2022 at 10:43 PM Ed Silky @.***> wrote:

Adding an option to play tone will allow users to practice and communicate like CW (using International Morse) in addition to practicing and communicating in Land-Line (using American and Sounder).

International Morse is already supported, so the enhancement is to add the ability to play a tone rather than the 'click' and 'clack' sound files and to add a configuration option to select Sounder/Tone.

— Reply to this email directly, view it on GitHub https://github.com/MorseKOB/PyKOB/issues/272, or unsubscribe <

https://github.com/notifications/unsubscribe-auth/ARRCDYT2HXX7LLTKLE2Q7F3WB6E4FANCNFSM6AAAAAAQ7FZAHQ

. You are receiving this because you are subscribed to this thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub <https://github.com/MorseKOB/PyKOB/issues/272#issuecomment-1271046798 , or unsubscribe <

https://github.com/notifications/unsubscribe-auth/AETPXO6EML45XXMKNXN2ZV3WB6GGPANCNFSM6AAAAAAQ7FZAHQ

. You are receiving this because you authored the thread.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/MorseKOB/PyKOB/issues/272#issuecomment-1271116382, or unsubscribe < https://github.com/notifications/unsubscribe-auth/ARRCDYVX7KNS45MTMFEI5J3WB6WEZANCNFSM6AAAAAAQ7FZAHQ

. You are receiving this because you commented.Message ID: @.***>

— Reply to this email directly, view it on GitHub https://github.com/MorseKOB/PyKOB/issues/272#issuecomment-1282554111, or unsubscribe https://github.com/notifications/unsubscribe-auth/AETPXO6KBEZYIFXGNVIDZG3WD243DANCNFSM6AAAAAAQ7FZAHQ . You are receiving this because you authored the thread.Message ID: @.***>

AESilky commented 3 months ago

Added tone as an option in kob.py. Added configuration option to specify SOUNDER or TONE. MKOB and MRT and the utilities that are using the config object (most), honor the setting.

The tone was implemented, such that the tone sounds, but then does not continue to sound when the key is closed.

pykob version 1.3.4