GithubHelp home page GithubHelp logo

ggmorse's Introduction

ggmorse

Actions Status License: MIT ggmorse badge

Morse code decoding library

ggmorse2.mp4
ggmorse-0.mp4
ggmorse-1.mp4

Try it out

You can easily test the library using the free GGMorse application which is available on the following platforms:

Download on the App Store Get it on Google Play

Simply start the application and place your phone near speakers or radio that plays some Morse code. The speed and frequency of the transmission will be detected automatically by the application and you should be able to see the decoded text in real-time.

Browser Demo: https://ggmorse.ggerganov.com/

Details

The library decodes Morse code transmission in real-time from raw audio captured via microphone.

  • Automatic pitch detection: [0.2, 1.2] kHz
  • Automatic speed detection: [5, 55] WPM

Todo

The current library implementation is not very user-friendly when it comes to using it in external projects. Still, if you want to try using it in your project and have trouble in getting it to work, let me know and I can try to help you.

The next version of the library would be in a much better state. These are the things I want to improve before releasing v0.2.0:

  • Improve the C and C++ interface
  • Add tests
  • Add examples
  • Reduce memory allocations
  • Clean-up the algorithmic part

Depending on the level of interest this gets, I can also provide various language bindings, similar to ggwave.

Examples

The examples folder contains several sample applications of the library:

Example Description Audio
ggmorse-to-file Output a generated waveform to an uncompressed WAV file -
ggmorse-gui GUI application for decoding Morse code SDL

Building

Dependencies for SDL-based examples

[Ubuntu]
$ sudo apt install libsdl2-dev

[Mac OS with brew]
$ brew install sdl2

[MSYS2]
$ pacman -S git cmake make mingw-w64-x86_64-dlfcn mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2

Linux, Mac, Windows (MSYS2)

# build
git clone https://github.com/ggerganov/ggmorse --recursive
cd ggmorse && mkdir build && cd build
cmake ..
make

# running
./bin/ggmorse-gui

Emscripten

git clone https://github.com/ggerganov/ggmorse --recursive
cd ggmorse
mkdir build && cd build
emcmake cmake ..
make

ggmorse's People

Contributors

ggerganov avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ggmorse's Issues

FR: Scroll through text and external sound interface

Hi,
that's by far the most advanced cw decoder or maybe the only working one on mobile devices at all. Thanks. Will push to learn cw by myself.
Is there a chance to not delete the text after a few lines and make it scrollable through a longer text recording?
Also would it be able to use an external line input instead of the inbuilt mic? One could modify a BLE headset and attach the trx on the headset instead

feature request: command line version that outputs decode

A command line executable of this that accepted an audio file and outputted a decode to either stdout or to a file would be awesome.

Another nice to have would be the ability to have a lookup table that you could pair codes to characters for different languages.

for apk?

The ggmorse software you created is very current and up to date. I am exploring your ggmorse open source software. its build process was completed successfully. what is the process to apk these codes? please help thanks in advance!

Can't scroll the settings dialog.

Ubuntu 21.04, GGMorse v1.3.4

I can't scroll the settings dialog. Extending the window on my 1920x1080 monitor is just barely long enough to get to the bottom.

I noticed the browser version has the same issue.

BTW, thanks for this app! I LOVE it! I'm doing S&P on the ARRL DX contest with it, and it works perfectly!

feature request: support for multi-character constants

I tried to update the code to support the full international morse code standard with what I thought were single characters (minus CH) to the unordered map kMorseCode in ggmorse.cpp, but I got multi-character character constant warnings when compiling and bigger problems when running. Perhaps this is why you left these out to begin with. The symbols in question, some which are shared by other non-latin symbols and pose another interesting issue, are:

    { "0101",    'Ä',  },
    { "01101",   'À',  },
    { "1111",    'CH', },
    { "00100",   'É',  },
    { "11011",   'Ñ',  },
    { "1110",    'Ö',  },
    { "0011",    'Ü',  },

I tried converting the unordered map to strings instead of characters, but it just turned into a big mess. I'm thinking that's the way it probably should be though in order to fully support all possibilities.

cmake error

Using Ubuntu 21.10. When I run the "cmake .." instruction I get the following errors:

CMake Error at examples/third-party/imgui/CMakeLists.txt:91 (add_library):
Cannot find source file:

imgui/examples/libs/gl3w/GL/gl3w.c

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
.hpp .hxx .in .txx

CMake Error at examples/third-party/imgui/CMakeLists.txt:15 (add_library):
Cannot find source file:

imgui/imgui.cpp

Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm
.hpp .hxx .in .txx

CMake Error at examples/third-party/imgui/CMakeLists.txt:91 (add_library):
No SOURCES given to target: imgui-sdl2

CMake Error at examples/third-party/imgui/CMakeLists.txt:15 (add_library):
No SOURCES given to target: imgui

CMake Generate step failed. Build files cannot be regenerated correctly.

What am I missing?

issues with running make install

Running make install doesn't install libggmorse-common-sdl2.so and libimgui-sdl2.so. Additionally the example executables don't get placed in /usr/local/bin (if they even should?).

The following will fix all of this but you probably have a much cleaner way of doing this.

# build install (optional)
sudo make install
sudo cp examples/libggmorse-common-sdl2.so /usr/local/lib
sudo cp examples/third-party/imgui/libimgui-sdl2.so /usr/local/lib
sudo cp bin/ggmorse-* /usr/local/bin
cd /usr/local/bin
sudo patchelf --set-rpath /lib:/lib64:/usr/local/lib ggmorse-*

Not receiving from morsecode.tools

Hi!

Saw you post on HackerNews, and only now got the time to respond.

I too have a tiny PWA for transmitting Morse Code: https://morsecode.tools/

Haven't had much luck transmitting to your webapp. I see you transmit at 550 Hz, though setting that on my side I didn't have any luck. Any tips?

Also, I noticed when transmitting on the webapp on a mobile, the on-screen keyboard does not appear for both Firefox and Chrome.

idea: bayesian morse code decoder?

Your implementation looks great, in particular the cross platform options :)

What do you think about integration of a bayesian morse decoder (as used in cw skimmer)?

There is an open source implementation of the original Bell algorithms available (Mauri Niininen, AG1LE: https://github.com/ag1le/morse-wip).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.