Giter Club home page Giter Club logo

morse-camp's People

Contributors

dependabot[bot] avatar ppetru avatar zoglmannk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

morse-camp's Issues

Continuous Mode without user interaction

Implement an automatic continuous mode, where no interaction by the user is needed.

The present Settings, allow to set the number of repetitions of a word...

Additionally

1.) A toggle switch to enable/disable "Continuous Mode"

2.) A setting slider for the pause before the next (different) word is sent

would be needed.

In that manner no user interaction is needed and one may listen to a continuous stream of different words. During a walk, a smart phone could just play this stream.

Achievements / gamification

It might give the user small motivation boosts if the app kept track of and notified upon various "achievements", for example:

  • got X things correct in a row
  • trained X days in a row
  • etc

User supplied word list

Allow users to supply a word list that would replace the built in dictionary.

Since the app is completely client side right now, this would likely take the form of a textarea that the user can paste the list into (one word per line or similar), then save the contents to local storage and use it when selected by the user through a config toggle.

Sliders with large numbers cut off

There is a small CSS issue with large numbers being cut off on sliders when the web application is used on desktop computers. This appears to only be a problem on Safari and Chrome.

image 11-19-18 at 9 16 am

Configurable number of words

Perhaps with a toggle that switches between characters and words for the existing min/max controls. When in words mode, the auto-progress logic would add words instead of characters.

Ability to create user accounts

These would be useful for saving settings and stats on the server and not have them lost when switching between devices.

The Firebase auth and database modules should be useful for this.

Farnsworth spacing support

Somewhat controversial since extra spacing is not very useful for head copy skills. That said, multiple folks asked for it and it might help avoid scaring beginners away.

Farnsworth spacing is also better than lowering the speed too much, so once this is implemented we could raise the minimum speed to 18 WPM or so.

Allow turning off the adaptive word selection

Right now the randomness in picking the words is biased towards those words that were not correctly understood. Some users just want true randomness, so there should be a way to configure that.

Eyes-free mode

The app currently requires the user to stare at their device, which is not always possible or pleasant.

Especially on mobile devices, there are several other ways of interaction that could be used: accelerometer, vibration, speech synthesis, speech recognition. It would be interesting to try them out and make it possible to practice without looking at the screen.

For example, the user could control the app by knocking on their phone once or twice, and the app could respond via speech synthesis or by vibrating.

Share buttons / links in the about screen

Make it easy for users to spread the word. Important: the buttons & associated code should only load when opening the About tab (and preferably should be lightweight).

Simulate poor conditions

Allow the user to configure simulating poor receive conditions to be applied to the generated sound, such as:

  • QRM (some other Morse tone at nearby frequencies)
  • QRN (static and crashes)
  • QSB (fading)
  • QLF (defective sending with poor dit/dash ratios or spacing)

Track and display statistics

Number of times trained, progression stats, etc. There are a lot of interesting things that could be tracked and showed to the user in graph format to help them visualize their progress and encourage them.

QSO trainer

A friend has requested that we support QSO phrases. The idea would be to create shorter more common phrases, such as "RST 599" and ramp up to longer less common phrases, such as "UR RST IS 358".

It seems like this would be best supported as a separate trainer.

Randomly generated digit groups

Right now all words must be in the dictionary, including all numbers. Some users want to practice random numbers, which would take up too much space to pre-generate but could be easily generated at runtime.

Practice reminders

Practice is most effective when done regularly. The app should allow users to subscribe to reminders to practice.

This can be implemented using web push notifications.

Association Trainer

A user has requested that the application support voice announcement in a hands-free mode.

IMO, this doesn't fit within the Read Trainer. It might work as an Association Trainer. Perhaps there could be a loop that automatically selects a word, plays it in Morse code, pauses for a specified amount of time, announces the word in an audible voice, and then repeats. Perhaps it could start with relatively short common words and move to longer, less common, and multiple words.

Character Trainer

It would be helpful for those just getting started in their Morse code journey if they could practice with single characters. Each character is played one or more times, then the application prompts them for the answer.

It would be ideal if the application kept track of performance, started with just two characters, and incrementally added characters as the user progressed.

For those on a computer, it would be nice if the application also allowed them to press the corresponding key for the character playing. If it is correct, the next letter is played. If the user is wrong, they are notified, and they can try again.

Better way of generating text

Right now it's just a random selection of words.

What many other Morse trainers use is canned QSO-style templates with placeholders for name / rig / etc. This works but quickly gets repetitive.

We'd ideally have something like a Markov chain (or one of the newfangled char-rnn type text generators) trained on a bunch of both natural text and QSOs. Such a model would be relatively compact yet generate endless amounts of novel text to practice with. The main issue would be getting enough real QSO text for training.

Send trainer

This could reuse a lot of the Read Trainer text generation, but focus on "head sending" skills instead.

This means helping the user send what's in their mind, instead of having them send something that's visible on the screen. Thus, the text to send would have to disappear after (or just before) the user has started sending.

For interfacing, this should use mouse and/or keyboard events configurable by the user. This would allow using any of the existing methods of hooking up a Morse key or paddle to the computer or mobile device.

Listen trainer

This would just play long form text without a correct/incorrect feedback loop, aiming to further develop head copy skills.

The text could either be supplied by the user, downloaded from an URL, or generated by a model such as the one described in #6.

Field Day exchange support

Suggested by N0MII: Give the user the ARRL section abbreviations, and some common, random class. Maybe also combination of both for each element sent to the user:

3A SCV
1B STX
4A MO

etc.

Manual Repeat Option

In the Read Trainer Settings, the user should be able to toggle between Manual and Automatic repeats. If they select Manual repeats, the Delay Before Repeat and Max Repeat Sliders should be disabled or dynamically disappear.

It is important to preserve the user experience and limit UI/UX clutter in the Reader Trainer. I recommend that the button be placed next to the SHOW button.

(I have had a couple of users request an option for a manual repeat.)

repeat

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.