Программа для генерации звукового кода морзе. Самостоятельное обучение азбуке морзе Изучение азбуки морзе программа с напевами


Комментарии (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.

Основная идея программы

Атомом (единицей времени) кода Морзе является точка, относительно нее формируется длительность всех остальных элементов:
  1. Тире равняется трем звучащим точкам;
  2. Пауза между элементами одного символа (знака) - одна незвучащая точка;
  3. Между знаками - три точки;
  4. Между словами - семь точек.
Как видите, любой код, основанный на азбуке морзе, можно представить в виде набора звучащих и незвучащих точек: от этой идеи я и отталкивался, причем такое решение мне показалось достаточно оригинальным.

Первоначальный вариант реализации

В первой версии программы комбинация звучащих и незвучащих точек хранилась в виде вектора с булевыми элементами, где 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 codes_;
Такой подход оказался очень удобным. Теперь я всего лишь использовал текущий воспроизводимый символ в качестве ключа и получал готовый
для воспроизведения код (набор булевых значений), правда, алгоритм воспроизведения немного усложнился: понадобилось ввести счетчик текущего элемента символа и счетчик символов в строке:

Новая реализация воспроизведения:

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() и прочих нехороших вещей).
Остальную часть исходных кодов и заголовочные файлы не вижу смысла приводить в теле статьи, так как там все достаточно очевидно и прозрачно.

Полный набор исходников последней версии вы можете скачать на