Morse Code Trainer
A pocket-sized Morse code card you can tap.
What it does
A binary tree of dots and dashes lights up as you tap. Short tap is a dot, long press is a dash. After a moment of silence, the letter you landed on commits to a decoded line at the top.
One big button
Press and release. The app times your tap and turns it into a dot or a dash. No mode switching, no menus.
Live tree
Watch the binary tree highlight your path through the alphabet. Right child for a dot, left for a dash.
Audio feedback
A clean 700Hz tone plays for the duration of every press. The same sound a real key would make.
Built in SwiftUI
No view-model layer, no router, no DI container. One @MainActor ObservableObject owns all state. The simpler the architecture, the longer the tool stays in service.
Hand-placed tree
The Morse tree node positions are coordinates, not the output of a layout algorithm. Spacing was chosen by hand to fit the deepest 16 nodes in the available width.
Continuous tone
A single 700Hz sine wave plays the whole time you're holding. Press duration still classifies dot or dash, but the audio stays one clean tone, the way a real telegraph key would sound.
Requirements
- iPhone and iPad
- iOS 16 or later
How it works
Tap or hold
Anything under 200ms is a dot. Anything longer is a dash. The tree lights up as you go.
Pause
600ms of silence tells the app you're done with this letter. The current path locks in.
Decode
The letter you landed on is appended to the decoded text line at the top. Keep tapping to spell whole words.
Where it stands
Morse Code Trainer is a personal learning tool. It is in active development and may eventually appear on the App Store, but it is first and foremost the app I wanted for myself.