Skip to content

DukeGDDI/SpeedreadCPP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

2 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿƒโ€โ™‚๏ธ SpeedRead (C++ Port)

SpeedReadCPP is a terminal-based RSVP (Rapid Serial Visual Presentation) speed-reading tool written in C++17, based on the original Perl implementation by Petr Baudis (pasky).

This project faithfully recreates the originalโ€™s functionality while improving portability, performance, and maintainability using modern C++ features.


๐Ÿ“– About

The original speedread was a minimalist Perl script that displayed words one at a time in rapid sequence โ€” a technique called RSVP โ€” to help users read faster by minimizing eye movement.

This port keeps the same visual layout, key bindings, and pacing heuristics as the Perl version, but re-implements everything in C++ for easier compilation and distribution on modern systems.


๐Ÿงฐ Features

  • Fully terminal-based (ANSI escape sequences, no external UI libs)
  • Maintains ORP (Optimal Recognition Point) alignment and color highlighting
  • Adjustable WPM speed ([ slower / ] faster)
  • Pause and resume with context preview (SPACE)
  • Accurate word timing heuristics identical to the Perl implementation
  • Real-time statistics and resume hint on exit

๐Ÿ—๏ธ Building

A simple Makefile is included that places object files and the binary in a build/ directory.

# Build
make

# Run interactively
cat some_text.txt | ./build/bin/speedread -w 300

# Clean build artifacts
make clean

โš™๏ธ Command-Line Options

Option Long Form Description
-w N --wpm N Set words-per-minute speed (default 250)
-r N --resume N Resume from word index N
-m --multiword Merge short adjacent words for smoother pacing

๐ŸŽฎ Controls (During Reading)

Key Action
[ Slow down (โˆ’10%)
] Speed up (+10%)
SPACE Pause / Resume (shows context lines)
Ctrl-C Exit and show stats

๐Ÿ“Š Output Example

Sample of SpeedrunCPP

At the end, youโ€™ll see timing and performance stats like:

12.45s, 290 words, 1380 letters, 1398.00 true wpm
To resume from this point run with argument -r 290

๐Ÿง‘โ€๐Ÿ’ป Credits

  • Original Perl implementation: pasky/speedread
  • C++ port: this project โ€” rewritten for portability and performance.

๐Ÿชช License

Same as the original project โ€” MIT License.

ยฉ Petr Baudis and contributors C++ Port ยฉ 2025 Your Name

About

C++17 port of Petr Baudis' "speedread" Perl RSVP reader

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published