[AGCW] Und noch ein Morsecode Generator Programm...

Jochen Kunz jkunz at unixag-kl.fh-kl.de
Mit Nov 17 16:28:10 EST 2004


Nabend.

Ich hab mir ja vorgenommen die feine Kunst des Morsens zu erlernen. Zu
diesem Zweck bietet es sich an rechnergenerierten Morsecode zu hören.
Nun bin ich aber eine reinrassige Unix Pflanze, besitze allerlei Unix
Maschinen aber keinen einzigen PeeCee. Von M$ Wintendo ganz zu
schweigen. Meine Suche nach einem Morsecode Generator Programm für Unix
brachte nur einige unbrauchbare Progrämmlis für Linux hervor. Also griff
ich selbst zu vi(1) und cc(1)...

\begin{stolz präsentier}
Das ist nun das Ergebnis:
http://www.unixag-kl.fh-kl.de/~jkunz/projekte/morse.c
\end{stolz präsentier}

Warum noch ein weiteres Morsecode Generator Programm?
- Mein Programm benuzt nur einfaches ANSI C ohne irgend welche Betr.Sys.
  spezifische Funktionen. Es sollte ohne Anpassungen auf jedem POSIX
  konformen System compilier- und laufbar sein. (Getestet: NetBSD, IRIX,
  Linux) "cc -O2 -o morse morse.c -lm" und fertig.
- Der generierte Morsecode hört sich "gut" an.

In guter, alter Unix Tradition kann mein Programm nur eines, nämlich
Morsecode generieren, das dafur aber um so besser. Sprich es arbeitet
als Filter: ASCII Text vorne zu stdin rein, raw-audio hinten aus
stdout raus. Verwendung z.B. unter NetBSD:
audioctl -w play.encoding=ulinear_le ; echo hallo | morse > /dev/sound
oder um eine M$ WAV Datei zu erzeugen:
echo hallo | morse | sox -t raw -r 8000 -u -b -c 1 - out.wav

Wieso hört sich der Morsecode meines Programms besser an als das was die
anderen von mir getesteten Programme fabrizieren?

Die anderen Programme nehemen einen Sinuston von z.B. 1000 Hz und
schalten den einfach entsprechend der "Punkte" und "Striche" ein und
aus. Das entspricht einer Amplitudenmodulation eines 1000 Hz Trägers mit
einem idealen Rechteck. Legen wir 24 WPM zu Grunde hat dieser Rechteck
10 Hz in dem Falle, dass "dididididi..." gesendet wird. Wie wir nun dank
des Herrn Fourier wissen hat ein Rechteck _reichlich_ ungeradzahlige
Oberwellen. Somit hat das modulierte 1000 Hz Signal auch noch
Spektralanteile bei 1010 Hz, 990 Hz, 1030 Hz, 970 Hz, 1050 Hz, 950 Hz,
1070 Hz, 930 Hz, ... ad infinitum. Diese, durch die Oberwellen des
idealen Rechtecks verursachten, Spektralanteile verursachen störende
"Klicks". Bei höheren WPM Raten wird der Code "unleserlich".

Will man ein "schönes" Morsesignal haben muß man die höheren
Spektralanteile wegfiltern. Z.B. in dem man den generierten Morsecode
durch ein digitales Filter nudelt. 

Es geht aber auch viel einfacher: Man vermeidet die ungewünschten
Spektralanteile von vornherein in dem man nicht mit einem idealen
Rechteck moduliert. Sondern man verwendet eine Hüllkurve aus einer
Sinusgrundschwingung und einer wohl dosierten Menge an Oberwellen.
Genau das macht mein Programm. Die Hüllkurve hat nur Frequenzanteile
bis max. knap 100 Hz. Ein Wert der auf meinem eigenen Gehör und den
Angaben in http:www.qsl.net/dk5ke/index.html und
http://www.geocities.com/gm0rse/n0hff/index.htm basiert.

In der Hoffnung dieses Werk möge auch anderen Anfängern eine Hilfe sein,
-- 


tschüß,
       Jochen

Homepage: http://www.unixag-kl.fh-kl.de/~jkunz/