cw

package
v0.1.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 16, 2025 License: MIT Imports: 6 Imported by: 2

Documentation

Overview

Package cw implements the CW mode.

Index

Constants

This section is empty.

Variables

View Source
var (
	Dit         = Symbol{1, true}
	Da          = Symbol{3, true}
	SymbolBreak = Symbol{1, false}
	CharBreak   = Symbol{3, false}
	WordBreak   = Symbol{7, false}
)

All symbols

View Source
var Code = map[rune][]Symbol{

	'a': {Dit, Da},
	'b': {Da, Dit, Dit, Dit},
	'c': {Da, Dit, Da, Dit},
	'd': {Da, Dit, Dit},
	'e': {Dit},
	'f': {Dit, Dit, Da, Dit},
	'g': {Da, Da, Dit},
	'h': {Dit, Dit, Dit, Dit},
	'i': {Dit, Dit},
	'j': {Dit, Da, Da, Da},
	'k': {Da, Dit, Da},
	'l': {Dit, Da, Dit, Dit},
	'm': {Da, Da},
	'n': {Da, Dit},
	'o': {Da, Da, Da},
	'p': {Dit, Da, Da, Dit},
	'q': {Da, Da, Dit, Da},
	'r': {Dit, Da, Dit},
	's': {Dit, Dit, Dit},
	't': {Da},
	'u': {Dit, Dit, Da},
	'v': {Dit, Dit, Dit, Da},
	'w': {Dit, Da, Da},
	'x': {Da, Dit, Dit, Da},
	'y': {Da, Dit, Da, Da},
	'z': {Da, Da, Dit, Dit},

	'ä': {Dit, Da, Dit, Da},
	'ö': {Da, Da, Da, Dit},
	'ü': {Dit, Dit, Da, Da},

	'0': {Da, Da, Da, Da, Da},
	'1': {Dit, Da, Da, Da, Da},
	'2': {Dit, Dit, Da, Da, Da},
	'3': {Dit, Dit, Dit, Da, Da},
	'4': {Dit, Dit, Dit, Dit, Da},
	'5': {Dit, Dit, Dit, Dit, Dit},
	'6': {Da, Dit, Dit, Dit, Dit},
	'7': {Da, Da, Dit, Dit, Dit},
	'8': {Da, Da, Da, Dit, Dit},
	'9': {Da, Da, Da, Da, Dit},

	'+':  {Dit, Da, Dit, Da, Dit},
	'-':  {Da, Dit, Dit, Dit, Dit, Da},
	'=':  {Da, Dit, Dit, Dit, Da},
	'.':  {Dit, Da, Dit, Da, Dit, Da},
	':':  {Da, Da, Da, Dit, Dit, Dit},
	',':  {Da, Da, Dit, Dit, Da, Da},
	';':  {Da, Dit, Da, Dit, Da, Dit},
	'?':  {Dit, Dit, Da, Da, Dit, Dit},
	'/':  {Da, Dit, Dit, Da, Dit},
	'\'': {Dit, Da, Da, Da, Da, Dit},
	'"':  {Dit, Da, Dit, Dit, Da, Dit},
	'(':  {Da, Dit, Da, Da, Dit},
	')':  {Da, Dit, Da, Da, Dit, Da},
	'_':  {Dit, Dit, Da, Da, Dit, Da},
	'@':  {Dit, Da, Da, Dit, Da, Dit},

	'[': {Da, Dit, Da, Dit, Da},
	']': {Dit, Dit, Dit, Da, Dit, Da},
	'%': {Dit, Dit, Dit, Da, Dit},
	'~': {Dit, Da, Dit, Dit, Dit},
	'§': {Dit, Dit, Dit, Dit, Dit, Dit, Dit, Dit},
}

Code contains the morse code table.

View Source
var ErrWriteAborted = errors.New("cw: write aborted")

Functions

func BPMToDit

func BPMToDit(bpm int) time.Duration

BPMToDit returns the duration of a dit with the given speed in BpM.

func BPMToSeconds

func BPMToSeconds(bpm int) float64

BPMToSeconds returns the duration of a dit in seconds with the given speed in BpM.

func FarnsworthWPMToSeconds

func FarnsworthWPMToSeconds(wpm, fwpm int) float64

FarnsworthWPMToSeconds returns the duration of a dit unit in seconds for farnsworth timing. see https://morsecode.world/international/timing.html

func Send

func Send(ctx context.Context, setKeyDown func(bool), symbols <-chan Symbol, wpm int)

Send reads CW symbols from the given stream and transmits them using the given setKeyDown function with the given speed in WpM.

func WPMToDit

func WPMToDit(wpm int) time.Duration

WPMToDit returns the duration of a dit with the given speed in WpM.

func WPMToFarnsworthDit

func WPMToFarnsworthDit(wpm, fwpm int) time.Duration

WPMToFarnsworthDit returns the duration of a dit unit for farnsworth timing. see https://morsecode.world/international/timing.html

func WPMToSeconds

func WPMToSeconds(wpm int) float64

WPMToSeconds returns the duration of a dit in seconds with the given speed in WpM.

func WriteToSymbolStream

func WriteToSymbolStream(ctx context.Context, symbols chan<- Symbol, text string)

WriteToSymbolStream writes the content of the given text as morse symbols to the given stream. The first written symbol is always a Dit or a Da (key down), the last written symbol is always a WordBreak (key up).

Types

type Modulator

type Modulator struct {
	// contains filtered or unexported fields
}

func NewModulator

func NewModulator(frequency float64, wpm int) *Modulator

func (*Modulator) AbortWhenDone

func (m *Modulator) AbortWhenDone(done <-chan struct{})

func (*Modulator) ClearFarnsworth

func (m *Modulator) ClearFarnsworth()

func (*Modulator) Close

func (m *Modulator) Close() error

func (*Modulator) Modulate

func (m *Modulator) Modulate(t, a, f, p float64) (amplitude, frequency, phase float64)

func (*Modulator) SetFarnsworthWPM

func (m *Modulator) SetFarnsworthWPM(fwpm int)

func (*Modulator) Write

func (m *Modulator) Write(bytes []byte) (int, error)

type Symbol

type Symbol struct {
	Weight  int
	KeyDown bool
}

Symbol represents the morse symbols: dits, das and breaks.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL