in reply to Re: Morse code via sound card input
in thread Morse code via sound card input

Is autodetection of the sender's speed really necessary?

I may be way off base here, but I think there's supposed to be a distinct ratio between the duration of the dit, the duration of the dah, the duration of the intercharacter pause and the duration of the interword pause.

If true, and the sender has a good fist, that may offer an approach to avoiding the need for autodetection.

...or, I may be all wet.

Replies are listed 'Best First'.
Re^3: Morse code via sound card input
by GrandFather (Saint) on Jul 07, 2007 at 19:32 UTC

    Those intervals are specified in terms of ratios. The absolute intervals are a direct function of the sending speed - the ratios remain fixed, the actual intervals change according to the notional sending speed.

    The complication for detection is that not only do you need to be able to compensate for a drift in sending speed over time, but also you have to accommodate deviations from the ideal ratios of the various intervals which may occur on a letter by letter basis, and may also change depending on the context of individual letters.

    Autospeed detection is actually essential for a practical decoder because the speed does change over time. A hint can help, but it's unlikely to be enough on its own.


    DWIM is Perl's answer to Gödel
Re^3: Morse code via sound card input
by zentara (Cardinal) on Jul 08, 2007 at 14:28 UTC
    This would be an interesting project to test. I mean I could take the code I showed above, and while sampling every 10 milliseconds for a 0 or 1 condition, draw a line on a Tk canvas and see what it might look like, and whether I could produce a program to convert it to letters. I would expect it to look something like Morse code, but the width of each on-state would have to be put through some artificial intelligence program to detect whether it was a dit or dash. Then there is the problem of the silence between letters, and it's duration, compared to the silence within a sent letter. For instance, How would I know whether a single "dit dit" was sent, rather than 2 sucessive "dits"?

    It all seems doable, but what happens if the sender's speed and intervals subtlely change over time? So now the AI code needs to keep running averages of the sender's current delay-intervals.

    All possible, but it would be pretty complex code to gaurantee good transcription accuracy.


    I'm not really a human, but I play one on earth. Cogito ergo sum a bum