Программа для генерации звукового кода морзе. Самостоятельное обучение азбуке морзе Изучение азбуки морзе программа с напевами
Комментарии (18):
#1 Святослав Март 17 2013
уже давно хочу выучить морзе
Нет кирилицы и ворд файл не видит.
#3 Мстислав Июнь 10 2017
Как запустить этот генератор звукового кода Морзе?
#4 root Июнь 10 2017
Программа понимает кириллицу и воспроизводит ее в код Морзе, это можно проверить введя в текстовое окно русскую букву "Х" (Ха), программа воспроизведет сигнал обозначающий четыре точки.
Для загрузки и выгрузки программа использует простой текстовый формат. Документы MS Word и другие, содержащие разметку и разную служебную информацию, не поддерживаются.
Для воспроизведения программой текста из документа MS Word, файл документа нужно предварительно сохранить как текстовый файл, после этого он может быть загружен в программу "Morse Code Trainer".
Для начала работы с программой нужно скачать архив, распаковать его и запустить файл "Morse.exe".
#5 Гузелия Август 02 2017
Программа начинает с трех Ж, нельзя ли убрать эту функцию, пока идет процесс обучения?
#6 Александр Компромистер Август 03 2017
Vik, текст можно сохранять и в формате.txt программы Блокнот, наверное. Из программы Блокнот текст уже можно вставить в Ворд.
#7 Анатолий Январь 23 2018
тупая программа начинает петь с ж ж ж не уж то ума не хватило нормальную прогу написать
#8 Андрей Апрель 10 2018
Это не тупая программа. Три ж и пробел перед текстом это обязательное правило. Оно говорит о том, что сейчас пойдет текст. Профессионалы это знают. Так что привыкайте работать по правилам.
#9 Андрей Апрель 10 2018
Начать обучение следует с нескольких букв на малой скорости. Например В,Л,Ы,Д; затем А,П,Р,О. В текстовое поле программы нужно написать самому текст из этих первых букв, разбив его строго на группы по 5 знаков (примерно 20-30 групп). По мере освоения будете добавлять буквы и писать тексты с преобладанием этих новых букв, что позволит закрепить навыки по приёму новых букв. По мере тренировки вы будете замечать, что всё легче и легче пишете текст. Потихоньку увеличивайте скорость передачи. Вы должны как-бы тянуться за скоростью. Да, еще один момент, вы натренируете способность записывать текст с отставанием в несколько знаков. Т.е, например, звучит уже пятая буква, а вы только начинаете записывать первую, а остальные у вас в голове. Такое отставание будет когда скорость приема превысит 25-30 групп в минуту. На меньших скоростях меньшее отставание. Всё это будет получаться автоматически. Текст считается принятым, если в нем не более 2-х ошибок. Прием 12 групп в минуту - троечка, 16-хорошо, 18-отлично. 30-35 - мастер спорта. Но это уже другая песня
#10 Андрей Апрель 10 2018
Ещё кто не понял. Буквы вы принимаете по напевам, а не считаете сколько прозвучало точек, а сколько тире. Например буква а поется как "ай-дааа", б - "бааа-ки-те-кут", цифра 9 - "пааа-пааа-мааа-мууу-тук", ну и так далее. В интернете все напевы есть
#11 Вадим Сентябрь 10 2018
Отличная программа, спасибо большое!
#12 Моряк Октябрь 25 2018
Класс! Скоро 30 лет как отслужил, под конец службы вывозил 34 группы легко! 3 года круглосуточных тренировок!
попробовал, руки и уХи то помнят. 24 группы песня!)))
#13 Александр Компромистер Октябрь 26 2018
Вот, если бы при вводе текстового документа в эфир передавалась морзянка, как при J2B, было бы лучше.
#14 Владимир Январь 09 2019
Пытался скопировать текстовый файл через буфер обмена (правой кнопкой) но появляется портрет автора. Можно ли копировать файлы в поле записи?
#15 root Январь 09 2019
Здравствуйте, Владимир! Скопируйте нужный текст в буфер обмена, кликните мышкой в окне для ввода текста в программе "Morse code trainer" и нажмите комбинацию клавиш CTRL+V (вставка содержимого из буфера обмена в место где сейчас расположен курсор).
#16 Seawar Январь 09 2019
Порада початківцям - не забивайте голову кирилицею, починайте відразу з латиниці.
#17 Сергей Июнь 25 2019
Отличная программа!
#18 Александр Компромистер Июнь 26 2019
Саму программу Morse_Trainer я скачал. Можно ли ее использовать как автоматический ключ?
Приложение "" - это очень удобный способ выучить морзянку в свободное время, так как заниматься изучением на компьютере не слишком удобно, а вот мобильный девайс с платформой Андроид в кармане.
Назначение
Некоторым людям по определенным причинам необходимо знание тайного языка, которым с давних времен пользовались разведчики и другие спецслужбы, а некоторым знания нужны исключительно для собственного развития.
Представленное обучающее приложение "" поможет быстро освоить такой язык.
Интерфейс и принцип работы
Обучающий бесплатный проект выполнен стильно и красиво. Перед пользователем появляется простой интерфейс с понятным и лаконичным меню. Всего программа представлена десятью основными уроками, каждый из них содержит по три упражнения.
1. Режим "Запоминания", где пользователь на слух воспринимает новые представленные звуки и новые буквы.
2. Упражнение "Прием". Здесь пользователю предлагается самостоятельно определять звуки, выученые на слух.
3. Режим "Передача". В этом упражнении искусственный интеллект будет предлагать определенные звуки, что потребуется передавать.
Как удобную особенность следует отметить, что программа фиксирует все совершенные ошибки и в дальнейшем делает акцент на ошибках, чтобы закрепить знания и помочь запомнить их и не ошибаться в дальнейшем.
Дополнительный режим
Также разработчик предлагает заняться изучением морзянки в игровой форме.
Здесь все также 10 уроков, но они уже состоять будут из 2 упражнений: прием и передача. В игровой форме многим намного проще запоминать новые данные.
Обучающее приложение "" - это уникальный проект для мобильных девайсов с операционной системой Android, который станет полезным и интересным многим.
24 сентября 2015 в 11:18Программа для генерации звукового кода Морзе
- Программирование ,
- C++ ,
Последнее время я занимаюсь изучением азбуки Морзе с помощью данной программы . Но она рассчитана на изучение кодов кириллических букв, что является неактуальным в современной радиосвязи (все используют латинский алфавит, кроме нашей доблестной армии).
В качестве инструмента реализации идеи был выбран С++ в связке с Qt.
Основная идея программы
Атомом (единицей времени) кода Морзе является точка, относительно нее формируется длительность всех остальных элементов:- Тире равняется трем звучащим точкам;
- Пауза между элементами одного символа (знака) - одна незвучащая точка;
- Между знаками - три точки;
- Между словами - семь точек.
Первоначальный вариант реализации
В первой версии программы комбинация звучащих и незвучащих точек хранилась в виде вектора с булевыми элементами, где true соответствовал включению звука, а false - выключению.Как вы уже поняли, для получения конечного сигнала я всего лишь «дергал» звук с некоторой задержкой (с помощью таймера, равного длительности точки в миллисекундах) при бесконечно воспроизводящемся.wav файле с записью синуса. Но данный подход имел значительный минус и заключался он в том, что приходилось каждую точку загружать отдельно с помощью перегруженного оператора или специального метода. Из-за такого подхода пришлось писать отдельный макрос для каждой буквы (вроде такого - #define I DOT << false << DOT) и создать огромный жуткий switch
для воспроизведения переданной строки. Это было ужасно, но если вам любопытно, то вы можете ознакомиться
с первой версией программы (у меня не получилось полностью загрузить на GitHub локальный репозиторий - только последнюю версию).
Кусочек жуткого свитча:
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;
// И так далее
А вот так происходило включение и выключение звука (собственно, генерация звукового кода):
void Morse::PlayLinePoints () {
QTimer::singleShot (duration_point_, this, SLOT (Mute ()));
sound_.play ();
}
void Morse::Mute () {
if (line_points_.empty ()) { //Останавливаем воспроизведение
sound_.stop ();
return;
}
if (line_points_.at (0)) { //Включаем звук
sound_.setMuted (false);
line_points_.remove (0);
QTimer::singleShot (duration_point_, this, SLOT (Mute ()));
return;
} else {
sound_.setMuted (true); //Выключаем звук
line_points_.remove (0);
QTimer::singleShot (duration_point_, this, SLOT (Mute ()));
return;
}
}
Окончательная версия
Очень уж оказались эти макросы громоздки, и мой перфекционизм не смог больше смотреть на эти монструозные конструкции. Поразмыслив немного, пришел к мысли, что идея у меня хорошая, но хранение кодов в виде макросов очень неудобно и, если решить эту проблему, то все будет хорошо. В итоге для хранения кодов стал использоваться QMap: //Хранит соответствующие комбинации точек и тире символов
QMap
Такой подход оказался очень удобным. Теперь я всего лишь использовал текущий воспроизводимый символ в качестве ключа и получал готовый
для воспроизведения код (набор булевых значений), правда, алгоритм воспроизведения немного усложнился: понадобилось ввести счетчик текущего элемента символа и счетчик символов в строке:
Новая реализация воспроизведения:
void Morse::MiniSpace () {
if (stop_) {
this->Stop ();
return;
}
sound_.setMuted (true);
++id_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())); //Пауза между символами
return;
}
QTimer::singleShot (duration_dot_, this, SLOT (Mute())); //Пауза между элементами символа
}
void Morse::Space () {
if (stop_) {
this->Stop ();
return;
}
sound_.setMuted (true);
//Пауза длится 7 точек
//Но так как после символа идет пауза в три точки, то доп паузу нужно выставить длиной в 4 точки
QTimer::singleShot (duration_dot_ * 4, this, SLOT (Mute()));
}
void Morse::Mute () {
if (stop_) {
this->Stop ();
return;
}
if (id_char_ == string_to_play_.size ()) { // Строка закончилась
this->Stop ();
return;
}
if (string_to_play_.at (id_char_) == " ") {
Space();
++id_char_; //Преходим на другой элемент кода
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;
}
Флаг stop_ был введен для предотвращения некорректной работы программы (два вызова подряд Play() и прочих нехороших вещей).
Остальную часть исходных кодов и заголовочные файлы не вижу смысла приводить в теле статьи, так как там все достаточно очевидно и прозрачно.
Полный набор исходников последней версии вы можете скачать на