cw
Version:
A comprehensive Morse Code (CW) library
105 lines (71 loc) • 2.07 kB
Markdown
# CW.js
[](https://github.com/mastercw/cw.js/actions)
[](https://www.npmjs.com/package/cw)
A comprehensive Morse Code (CW) library, brought to you by [Master CW](https://www.mastercw.com/).
## Usage
### Node
Install the package via `npm` or `yarn`:
```bash
$ npm install cw
```
#### ES Modules
```javascript
import cw from "cw";
console.log(cw.codes["C"]); // "-.-."
cw.play("hello world");
```
#### CommonJS
```javascript
const cw = require("cw");
console.log(cw.codes["C"]); // "-.-."
```
### Browser
You can either build the browser bundle yourself with:
```bash
$ npm install
$ npm run build
```
Which will create `dist/cw.js` and `dist/cw.min.js`. Or you can use it from a CDN:
#### jsDelivr CDN (Recommended)
```html
<script src="https://cdn.jsdelivr.net/npm/cw@0.4.0/dist/cw.min.js"></script>
```
or just use `latest`:
```html
<script src="https://cdn.jsdelivr.net/npm/cw@latest/dist/cw.min.js"></script>
```
#### Legacy CDN
The legacy CDN is still available for backwards compatability but will be deprecated soon:
```html
<script src="https://cwjs.mastercw.com/cw.min.js"></script>
```
Once the script is loaded you can call the `cw.play()` function:
```html
<script>
cw.play("hello world");
</script>
```
Options can be passed to customize the played sequence:
```js
cw.play("abcd", {
tone: 800, // tone frequency in Hz
wpm: 20, // character speed in words per minute (WPM)
fwpm: 10, // farnsworth speed in words per minute (WPM)
});
```
In cases of multiple plays, it is recommended to create a global `audioContext` object:
```js
// Initialize audio context once
let actx = cw.initAudioContext({ tone: 600 }); // tone is passed here
// Reuse the audio context for multiple plays
cw.play("abcd", { actx, wpm: 10 });
cw.play("efgh", { actx, wpm: 20 });
cw.play("ijkl", { actx, wpm: 30 });
```
For more examples see the [examples/](examples/) directory.
### Testing
```bash
$ npm test
```
## License
ISC