morse-pro v2.0.0

Posted in Posted on 2019-01-04 14:42

I made a new release of my “morse-pro” Javascript library yesterday. There was no particular reason to make a release now except that I had some free time, it’s been too long coming and if I wait until it is “ready” then I’ll never make a release. The “v2.0.0” tag sounds important but it’s just because there are breaking changes since the previous release, not because some development milestone has been reached. More breaking changes are likely as I am not happy with the architecture, but who knows when?! Best to release now in case someone finds it useful.

You can:

The library is used to drive all the tools on my Morse code website. The library’s licence is the EUPL v1.2.



  • more in-line documentation in many files
  • some more tests of main classes
  • morse-pro
    • a few more punctuation characters
  • morse-pro-wpm
    • dahLength, ditSpace, charSpace and wordSpace methods
  • morse-pro-cw
    • wordSpace property
    • endPadding parameter (default 0) in getSample and getWAASample methods to allow a configurable pause at the end of the waveform
  • morse-pro-cw-wave
    • a lowpass bi-quad filter to the waveform generated by getSample
    • getWAASample asynchronous method to return sample generated using Web Audio API
  • morse-pro-keyer
    • optional fwpm 3rd argument in constructor
  • morse-pro-keyer-iambic
    • optional fwpm 3rd argument in constructor
    • optional iambicA 5th argument in constructor to switch between iambic A and B modes
  • morse-pro-player-waa
    • callback functions in constructor for sequenceStart, sequenceEnding and soundStopped (the last one was previously just in morse-pro-player-waa-light)
    • low-pass filter on waveform to remove clicks
    • loadTimings method
    • loadNext method to provide a single item queue of timings
    • pause method
    • isPaused read-only property
    • nextNote read-only property
    • startPadding field to insert a pause before playback begins (suggest 5ms to avoid sound artefacts in some browsers)
    • endPadding field to insert a pause after playback of a timing sequence completes
  • morse-pro-player-waa-light
    • additional callback functions in constructor to match morse-pro-player-waa
  • morse-pro-player-xas
    • volume now settable


  • updates node and npm to latest versions
  • updates all npm dependencies to latest versions (apart from babel which is latest v6, not v7)
  • Babel uses ‘env’ preset instead of ‘es2015’
  • morse-pro
    • tidyMorse now trims whitespace
    • looksLikeMorse now returns false when the input string is just whitespace
  • morse-pro-wpm
    • millisecond timings are now rounded to the nearest integer
  • morse-pro-util-riffwave
    • getData arguments changed to take waveform data (so use morseCWWave.getSample() not morseCWWave instance directly), sampleRate and bitsPerSample
  • morse-pro-cw
    • makes useProsigns argument in constructor have true as the default
    • getTimingsGeneral is now a static method
  • morse-pro-keyer
    • refactoring to mark many functions and fields as private
    • _ditOrDah function is now the method required in class extensions
  • morse-pro-keyer-iambic
    • refactored from check to _ditOrDah function
  • morse-pro-player-xas
    • refactors isPlaying field into isPlaying read-only property
  • morse-pro-player-waa-light
    • return value of audioType property changed from 4 to 5


Comments powered by Disqus