September 24, 2015 at 11:18 am

Generation program sound code morse

  • programming,
  • C++ ,

Recently, I have been studying Morse code with the help of this program. But it is designed to study the codes of Cyrillic letters, which is irrelevant in modern radio communications (everyone uses the Latin alphabet, except for our valiant army).

As a tool for implementing the idea, C ++ was chosen in conjunction with Qt.

Main idea of ​​the program

The atom (unit of time) of the Morse code is a point, relative to it the duration of all other elements is formed:
  1. A dash equals three sounding dots;
  2. A pause between elements of one symbol (sign) is one silent dot;
  3. Between the signs - three dots;
  4. There are seven dots between words.
As you can see, any code based on Morse code can be represented as a set of sounding and non-sounding dots: I started from this idea, and this solution seemed to me quite original.

The original implementation

In the first version of the program, the combination of sounding and non-sounding points was stored as a vector with boolean elements, where true corresponded to the inclusion of sound, and false- shutdown.

As you already understood, to get the final signal, I just “pulled” the sound with some delay (using a timer equal to the duration of a point in milliseconds) with an endlessly playing .wav file with a sine recording. But this approach had a significant disadvantage and it consisted in the fact that each point had to be loaded separately using an overloaded operator or a special method. Because of this approach, I had to write a separate macro for each letter (like this - #define I DOT<< false << DOT) и создать огромный жуткий switch to play the passed string. It was awful, but if you're curious, you can check out
with the first version of the program (I did not manage to fully upload the local repository to GitHub - only the latest version).

A piece of a creepy switch:

bool Morse::StringToMorse (QString &line) ( line += "\0"; for (int i = 0; i< line.size () - 1; ++i) { switch (line.at(i).unicode ()) { case "A": *this << A; if (line.at (i + 1) == " ") continue; else *this << MINI_SPACE; break; case "B": *this << B; if (line.at (i + 1) == " ") continue; else *this << MINI_SPACE; break; // И так далее


And this is how the sound turned on and off (actually, the generation of the sound code):

void Morse::PlayLinePoints () ( QTimer::singleShot (duration_point_, this, SLOT (Mute ())); sound_.play (); ) void Morse::Mute () ( if (line_points_.empty ()) ( / /Stop playback sound_.stop (); return; ) if (line_points_.at (0)) ( //Turn on the sound sound_.setMuted (false); line_points_.remove (0); QTimer::singleShot (duration_point_, this, SLOT (Mute ())); return; ) else ( sound_.setMuted (true); //Turn off the sound line_points_.remove (0); QTimer::singleShot (duration_point_, this, SLOT (Mute ())); return; ) )

final version

These macros turned out to be very cumbersome, and my perfectionism could no longer look at these monstrous constructions. After thinking a little, I came to the conclusion that I have a good idea, but storing codes in the form of macros is very inconvenient and if you solve this problem, then everything will be fine. As a result, QMap was used to store codes:

// Stores the appropriate combinations of dots and dashes of QMap characters codes_;
This approach turned out to be very convenient. Now I just used the current playing character as a key and got ready
to reproduce the code (a set of boolean values), however, the playback algorithm became a little more complicated: it was necessary to enter the counter of the current element of the character and the counter of characters in the line:

New playback implementation:

void Morse::MiniSpace () ( if (stop_) ( this->Stop (); return; ) sound_.setMuted (true); ++id_element_; //Go to another code element if (id_element_ == codes_.value ( string_to_play_.at (id_char_)).size ()) ( ++id_char_; id_element_ = 0; QTimer::singleShot (duration_dot_ * 3, this, SLOT (Mute())); //Pause between characters return; ) QTimer: :singleShot (duration_dot_, this, SLOT (Mute())); //Pause between character elements ) void Morse::Space () ( if (stop_) ( this->Stop (); return; ) sound_.setMuted (true ); //Pause lasts 7 points //But since after the character there is a pause of three points, an additional pause must be set to a length of 4 points QTimer::singleShot (duration_dot_ * 4, this, SLOT (Mute())); ) void Morse::Mute () ( if (stop_) ( this->Stop (); return; ) if (id_char_ == string_to_play_.size ()) ( // Line ended this->Stop (; return; ) if (string_to_play_.at (id_char_) == " ") ( Space(); ++id_char_; //Go to another code element return; ) if (codes _.find (string_to_play_.at (id_char_)) == codes_.end ()) ( qDebug()<< string_to_play_.at (id_char_) << ": No code!"; sound_.stop (); return; } sound_.setMuted (false); //Включаем звук if (codes_.value (string_to_play_.at (id_char_)).at (id_element_)) { QTimer::singleShot (duration_dot_, this, SLOT (MiniSpace())); //Воспроизводим точку } else { QTimer::singleShot (duration_dot_ * 3, this, SLOT (MiniSpace())); //Воспроизводим тире } } bool Morse::Play () { if (!stop_) return false; if (string_to_play_ == "") return false; stop_ = false; id_char_ = 0; id_element_ = 0; sound_.setMuted (true); //Выключаем звук sound_.play (); Mute (); } void Morse::Stop () { if (stop_) return; sound_.stop (); id_char_ = 0; id_element_ = 0; stop_ = true; }


Flag stop_ was introduced to prevent incorrect program operation (two calls in a row to Play() and other bad things).
I see no reason to include the rest of the source codes and header files in the body of the article, since everything is quite obvious and transparent there.

You can download the full set of sources for the latest version at

The application "" is a very convenient way to learn Morse code in your spare time, since studying on a computer is not very convenient, but a mobile device with the Android platform is in your pocket.

Purpose
Some people, for certain reasons, need knowledge of a secret language that has been used by intelligence officers and other special services since ancient times, and some people need knowledge solely for their own development.

The presented training application "" will help you quickly master such a language.

Interface and working principle
The educational free project is stylish and beautiful. Before the user appears a simple interface with a clear and concise menu. In total, the program is represented by ten main lessons, each of them contains three exercises.
1. "Memory" mode, where the user perceives the new presented sounds and new letters by ear.


2. Exercise "Reception". Here the user is invited to independently determine the sounds learned by ear.
3. "Transfer" mode. In this exercise, the artificial intelligence will suggest certain sounds that need to be transmitted.
As a convenient feature, it should be noted that the program fixes all the mistakes made and further focuses on the mistakes in order to consolidate knowledge and help remember them and not make mistakes in the future.

Additional Mode
The developer also offers to study Morse code in a playful way.

There are also 10 lessons here, but they will already consist of 2 exercises: receiving and transmitting. In a game form, it is much easier for many to memorize new data.

Educational application "" is a unique project for mobile devices with the Android operating system, which will be useful and interesting to many.

The Morse Trial program generates radiograms in Morse code with variable speed, pauses and tone. It is possible to load text from your file, as well as random text generation. It is possible to add noise when listening to radiograms for greater realism.

Morse code, Morse code, "Morse code" is a way of encoding letters of the alphabet using long and short signals, the so-called "dashes" and "dots" (as well as pauses separating letters). The unit of time is the duration of one point. The length of a dash is three dots. The pause between characters in a letter is one dot, between letters in a word - 3 dots, between words - 7 dots. It was named after the American inventor Samuel Morse, who invented it in 1835. Morse code is the first digital way to transmit information. The telegraph and radio telegraph originally used Morse code; later, Baudot and ASCII code began to be used, which are more convenient for automation. However, now for Morse code there are tools for automatic generation and recognition. For the transmission of Russian letters, codes of similar Latin letters were used; this correspondence of alphabets later passed into MTK-2, and then into KOI-7 and KOI-8 (however, in Morse code, the letter Q corresponds to Щ, and in MTK and KOI-I).

The main purpose of the Morse Trial program is to improve telegraph reception skills. Download training program Morse Trial can

But if you don't already know Morse code, then you can take self-training on the LCWO website according to the Koch method

The Koch method is a simple way to directly develop reflexes. However, it requires either a computer with appropriate software or a personal trainer. It is for this reason that the Koch method has been ignored for so many years. Now that the computer has taken its usual place on the radio amateur's table, the Koch method has every chance of becoming the standard for training a telegraph radio operator.

The training goes like this:

  • You set up your program to generate CW signals at a rate of about 20 wpm for a sign, but with slightly longer pauses (the effective rate should be on the order of 15 wpm).
  • Then you take paper and pencil and start receiving. In the first lesson, the computer must transmit only two characters. That is, in the first lesson you need to recognize only two options. You accept the text for 5 minutes, then check the correctness of the received text, and calculate the percentage of correct characters.

LCWO- this Internet assistant is for independent study of the telegraph. The site after your registration will become your personal teacher. You will master the telegraph in the process of playing the "guessing game" - you will develop conditioned reflexes to the sound of signs and their recording - if you want - by hand, if you want - on the keyboard. The method was developed by the venerable Ludwig Koch specifically for individual learning. The site will offer you to take 40 lessons, go to the next lesson only after mastering the previous one. All that is required of you is the regularity of classes, the frequency and duration are not clearly regulated. You don't need to download anything to your computer. You can study from any computer with Internet access at home, at work, or in an Internet cafe.



For repairs and other technical issues, click here. Repair of household and office equipment.


Computer programs for learning Morse code. Kuban Krasnodar.

ADKM-2000 program.


The ADKM-2000 program, starting from version 2.7, has become completely free. To update versions 2.0-2.5 to version 2.7, download this file. To update versions below 2.0, install version 2.5 first and update it.

General description.

The software product ADKM-2000 version 2.5 (hereinafter referred to as ADKM-2000) is intended for training radiotelegraph operators and holding competitions in high-speed radiotelegraphy.

Main functions. ADKM-2000 performs the following functions:

Playback of radiograms from Morse code characters with the given parameters:

formation speed from 5 to 399 c/min *

Discrete speed setting 1 zn/min

pause between characters from 3 to 15 (3,5,7,9,11,13,15) **

signal frequency from 100 to 3500 Hz

reproduction of interference with operational switching of four types of interference

separate volume control of the main signal and noise volume ***

PARIS system support

Program ADKM-2008.

© All property rights to the program "ADKM_2008" belong to Kozhevnikov Ivan Viktorovich

Email: [email protected]

Automatic Morse code 2008 encoder.

Version 2008.1.19-02

Introduction.

The program is designed to study and improve the skills of receiving Morse code.

Technical requirements.

Processor clock speed 200 MHz or higher

RAM 64 MB or more

Windows 2000 or XP

The presence of the msvbvm60.dll library

Installation.

Unzip the archive to any directory, run ADKM_2008.exe

This program is distributed free of charge. All property rights and copyrights to the program (including any of its components: graphics, sound recordings, text, etc.), accompanying printed materials and any copies of the program belong to the author - Ivan Viktorovich Kozhevnikov.

The program is freeware. You can freely distribute the distribution package of the program. You may not profit commercially by redistributing this distribution. You cannot change the distribution of the program in any way.

It is forbidden to open the technology, decompile the program or otherwise modify the program and accompanying documentation.

In the main window of the program, you can change the text number, text transmission rate, text type, start and stop the transmission of text in Morse code, as well as hide / show the transmitted text, open an additional window for entering the received text with control over the correct reception. The menu contains items for exiting the program, settings for additional text transmission parameters, this brief reference, information about the program and the author.

The text is generated using a pseudo-random number generator and is directly related to the text number.

The text transmission speed varies from 20 to 299 characters/minute.

The text type can be Latin (English), national (Russian, German), numeric, numeric with a short zero, punctuation marks, various mixed text options, as well as special (for training the reception of certain characters entered by the user).

If it is necessary to transfer a certain (semantic) text, it can be typed in the text display window or pasted from the clipboard (the text is not checked for correctness and all characters that cannot be transmitted by Morse code are ignored when transmitting the text).

In the advanced settings window, you can change the pause between characters, the pause between groups (the pause between groups cannot be less than the pause between characters + 4 dots), the number of characters in the group, the number of groups in the text, the tone frequency, the program interface language, add / remove text start prefix VVV= and text end signal AR (EC).

The text input window is intended for entering the received text. In case of incorrect reception of the next character, the symbol "_" is displayed instead. ATTENTION! The text must be entered in the language in which the transmitted text is displayed (character case can be any). Groups are separated by the "space" key. Line feed is carried out automatically (no additional keys need to be pressed). If you did not accept some sign, then instead of it you need to press any key. A character is considered to be received correctly only if it is written in the correct position (that is, without text offset).

CW Master Program.

The CW Master program is designed for practicing CW reception.

It is divided into two modules.

The main module ("Receiving callsigns" tab) is based on the well-known RUFZ program.

RUFZ is good for everyone, but its operation exclusively under DOS creates big, and sometimes simply insurmountable obstacles to its use --- there are simply no DOS drivers in the nature of most modern sound cards. The quality of listening to the built-in computer "tweeter" leaves much to be desired.

The second module (tab "Reception of texts and radiograms") --- generates and reproduces digital, alphabetic radiograms and "open" text.

Unlike RUFZ, this program works under Win95/98/NT/2000/XP with any sound card (including the integrated one), but it just doesn't work with the built-in speaker.

The program does not write anything to the registry or Windows system directories, which allows you to use it even as a user with limited rights in Win NT/2000.

The program does not require installation. Files cwmaster.exe , master.ped and readme.txt should be placed in a shared directory and run cwmaster.exe.

2. Module "Reception of callsigns" --- General principles.

The program transmits in turn 30 real callsigns, randomly selected from the master.ped file. If the callsign is received correctly, then the transmission speed of the next one is increased by 2 wpm. If not true, then the speed is reduced by 1 wpm. The transmission tone of each call sign varies within a small range randomly.

Points are awarded for receiving each callsign. The number of points depends on the number of errors made during reception, on the length of the callsign and on the transmission speed.

Dependence on speed is quadratic, dependence on callsign length is linear.

The number of points does not depend on the speed of the call sign.

An unaccepted callsign can be repeated by pressing the F6 key an unlimited number of times, however, with each repetition, the number of points will be halved, and the speed, even if received correctly, will not increase.

In this version, by popular demand, the ability to fix the speed and tone of transmitted callsigns has been introduced. However, in this mode, points are not awarded and, accordingly, nothing is entered into the results table.

3. Module "Reception of callsigns" --- How to work?

After starting the program, enter your callsign, set the initial transmission rate in WPM, the initial tone of the received signal.

To control the presets, there is a "Pretest" mode, in which the letter V is continuously transmitted. It can be accessed by pressing the corresponding button or by pressing the F3 key.

In order to start receiving, press the "Start" button (or the Enter key). After the call sign has sounded, we type it on the keyboard and press the Enter key. Receiving can be stopped at any time by pressing the Stop button or Esc on the keyboard.

The final number of points is entered in the results table. The WPM column will display the maximum value of the speed at which at least one callsign was correctly received.

If no call sign was received correctly or zero points were scored, then the result is not entered into the table. When the table is filled (19 lines), it is reset, but the best score is saved and recorded in the first line, which allows you to train further, focusing on the best :)

4. Module "Reception of texts and radiograms"

With radiograms, everything should be clear --- we form, click on "Start" and write down what was received on a piece of paper. Such a "handwriting" is useful in the initial stages of learning CW, and after reaching a reception rate of 25-30 wpm, it is advisable to abandon the recording and move on to training in receiving plain text simply "by ear". Moreover, it is advised to listen first to short words, such as "what", "how", etc., in order to remember their sound, and then move on to longer words.

In the window, you can open any text file, copy any text there and, in the end, fill it with your hands if you really want to. The program distinguishes Russian and Latin letters and transmits them correctly.

From the text in the window, you can select only those words that do not exceed the desired length.

In general, the program interface is so simple that it's easier to try than to describe what and how to do :)

It can be decorated, "honed", made statistics and similar "gadgets", but I'm not interested.

I see no point in introducing PILE-UP modules and, moreover, CyberContest-a --- all this is on the air! :)

Morse code program.

The program emulates a terminal for transmitting signals using Morse code.

There are no adjustments in the program, the speed and tone are set constant.

The program does not pause between characters, pauses are regulated by the speed of keyboard input.

Morse Code Trainer.

[email protected]

A simple program with a nice interface that scrolls through Morse code given texts at a given speed.

NuMorP program.

The NuMorP program is used to train and test US Army soldiers.

http://www.nuware.com/

The program scrolls the specified texts in Morse code at the specified speed.

To get the English keyboard layout, run the program from the "From Programs" folder or run the installation file, it will install the program with an entry in the registry, and the keyboard will be in English.

For convenience, the windows of these messages can be closed with the key combination Alt + F4.

NuMorse 2.2.2.0 program.

NuMorse 2.2.2.0 is used to train and test US Army soldiers.

http://www.nuware.com/

The program allows you to use the keyboard as an electronic key.

To get a Russian-language keyboard layout, simply run the exe file from the RUS program folder.

To get the English keyboard layout, run the program from the ANGL folder or run the installation file, it will install the program with an entry in the registry, while the English keyboard layout will be.

If there is no registration, the program displays additional messages when it closes,

For convenience, close the windows of these messages with the key combination Alt+F4.

Morse program DKM Military Edition.

http://europpa.narod.ru

An excellent universal Russian program for transmitting Morse code on the keyboard and receiving radiograms.

The program is great for learning to receive radiograms instead of an automatic Morse code sensor.

APAK-CWL program.

A simple, no-install program for learning Morse code.

To run the program, go to the "apak" folder and run the start file.

The "apak" folder is the already unpacked "apak-2r.exe" and "ruswav.exe" archives.

A very useful program for learning CW in Russian, according to the DOSAAF method.

Its uniqueness is that the study of Morse code starts from the very basics and does not allow the user to move on to a more complex exercise if the previous one is not exactly 100% done.

This allows you to avoid "scrolling through" exercises that you don't like, but allows you to systematize the learning process).

Given the speed of servers in Russia and the cost of communication, it was decided to abandon the use of the installation program and DLL, and distribute the program as a self-extracting archive.

Unzip the archive to the desired folder and the program is ready to go. Win 9x,NT Requires small fonts to be enabled. Windows NT. Disable system sounds.

Scheme: "No sound". To uninstall, simply remove everything related to the program.

These are two self-extracting archives in apak-2r.exe there is the program itself and the data necessary for it, and in ruswav.exe there are tunes.

If you don't want to learn CW with tunes, then you don't need to copy ruswav.exe.

Both archives should be unpacked into the same folder.

For those using previous versions, there is no need to copy ruswave.exe.

The program was written a long time ago, so for successful operation in modern operating systems (WINDOWS XP SP2 and higher) you need to run it in windows 95 compatibility mode. (Right mouse button on the shortcut - Properties - Compatibility tab - Set the "daw" Compatibility mode).

Morse Generator Program.

Description: MorseGen2 is a slightly modified MorseGen by Julian Moss (G4ILO).

The following changes have been made from the original:

1. (+) the program interface has been changed (some of the messages and inscriptions have been translated into Russian),

2. (+) support for Russian alphabet characters,

3. (+) selection of the number of groups (10..500 in increments of 10),

4. (+) increased maximum speed (40 wpm),

5. (-) QSO generation is not supported. The transfer speed has been increased to 80 wpm, and when transferring an arbitrary text file, repeated spaces and some other service characters are removed, i.e. text formatting does not affect transmission.

Comments (18):

#1 Svyatoslav March 17 2013

I have been wanting to learn Morse for a long time.

There is no Cyrillic and the Word file does not see.

#3 Mstislav June 10 2017

How to run this Morse Code Beep Code Generator?

#4 root June 10 2017

The program understands the Cyrillic alphabet and reproduces it in Morse code, this can be checked by entering the Russian letter "X" (Xa) into the text box, the program will reproduce the signal indicating four points.

The program uses a plain text format for uploading and downloading. MS Word documents and others containing markup and various service information are not supported.

For the program to reproduce text from a MS Word document, the document file must first be saved as a text file, after which it can be loaded into the "Morse Code Trainer" program.

To start working with the program, you need to download the archive, unzip it and run the "Morse.exe" file.

#5 Guzelia August 02 2017

The program starts with three F, is it possible to remove this function while the learning process is in progress?

#6 Alexander the Compromiser August 03 2017

Vik, the text can be saved in the .txt format of the Notepad program, I guess. From the Notepad program, text can already be inserted into Word.

#7 Anatoly January 23 2018

a stupid program starts to sing with f f f f not really that mind was not enough to write a normal prog

#8 Andrew April 10 2018

It's not a dumb program. Three ws and a space before the text is a mandatory rule. It says that the text will go now. Professionals know this. So get used to working by the rules.

#9 Andrew April 10 2018

You should start learning with a few letters at low speed. For example, V, L, S, D; then A, P, R, O. In the text field of the program, you need to write the text yourself from these first letters, dividing it strictly into groups of 5 characters (about 20-30 groups). As you master it, you will add letters and write texts with a predominance of these new letters, which will allow you to consolidate your skills in receiving new letters. As you practice, you will notice that it is easier and easier to write text. Slowly increase the transfer speed. You have to somehow reach for the speed. Yes, one more thing, you will train the ability to write text with a delay of several characters. That is, for example, the fifth letter already sounds, and you are just starting to write down the first one, and the rest are in your head. Such a lag will occur when the reception rate exceeds 25-30 groups per minute. At lower speeds there is less lag. All this will be done automatically. The text is considered accepted if it contains no more than 2 errors. Reception of 12 groups per minute - C grade, 16-good, 18-excellent. 30-35 - master of sports. But that's another song

#10 Andrew April 10 2018

Who else did not understand. You take letters by tune, and do not count how many dots sounded, but how many dashes. For example, the letter a is sung like "ay-daaa", b - "baaa-ki-te-kut", the number 9 - "paaa-paaa-maaa-muuu-tuk", and so on. On the Internet, all the tunes are

#11 Vadim September 10 2018

Great program, thanks a lot!

#12 Sailor October 25 2018

Class! Soon he served 30 years, at the end of the service he took out 34 groups easily! 3 years of round-the-clock training!
I tried it, my hands and uhi remember it. 24 group song!)))

#13 Alexander the Compromiser October 26 2018

Now, if Morse code was transmitted on the air when entering a text document, as with J2B, it would be better.

#14 Vladimir January 09 2019

I tried to copy a text file through the clipboard (right-click), but the portrait of the author appears. Is it possible to copy files to a record field?

#15 root January 09 2019

Hello Vladimir! Copy the desired text to the clipboard, click the mouse in the text input window in the "Morse code trainer" program and press the key combination CTRL + V (paste the contents from the clipboard to the place where the cursor is now located).

#16 Seawar January 09 2019

Porada to the Pochatkivtsy - do not fill your head with the Cyrillic alphabet, start with the Latin alphabet.

#17 Sergey June 25 2019

Great program!

#18 Alexander the Compromiser June 26 2019

I downloaded the Morse_Trainer program itself. Can it be used as an automatic key?