@e04/ft8ts 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +27 -26
- package/dist/cli.js +822 -612
- package/dist/cli.js.map +1 -1
- package/dist/ft8ts.cjs +829 -619
- package/dist/ft8ts.cjs.map +1 -1
- package/dist/ft8ts.d.ts +1 -0
- package/dist/ft8ts.mjs +829 -619
- package/dist/ft8ts.mjs.map +1 -1
- package/package.json +1 -1
- package/src/cli.ts +3 -0
- package/src/ft4/constants.ts +0 -38
- package/src/ft4/decode.ts +297 -338
- package/src/ft4/encode.ts +6 -1
- package/src/ft4/scramble.ts +6 -1
- package/src/ft8/constants.ts +0 -11
- package/src/ft8/decode.ts +530 -270
- package/src/util/constants.ts +0 -4
- package/src/util/decode174_91.ts +61 -55
- package/src/util/fft.ts +97 -37
- package/src/util/pack_jt77.ts +14 -2
- package/src/util/waveform.ts +8 -4
package/README.md
CHANGED
|
@@ -2,13 +2,13 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://github.com/e04/ft8ts/actions/workflows/test.yml)
|
|
4
4
|
|
|
5
|
-
FT8
|
|
5
|
+
FT8/FT4 encoder and decoder in pure TypeScript. A port of the Fortran implementation from [WSJT-X](https://wsjt.sourceforge.io/wsjtx.html) v2.7.0.
|
|
6
6
|
|
|
7
7
|
## Overview
|
|
8
8
|
|
|
9
|
-
FT8
|
|
9
|
+
FT8/FT4 are digital amateur radio modes designed for weak-signal communication, developed by Joe Taylor (K1JT) and Steve Franke (K9AN).
|
|
10
10
|
|
|
11
|
-
This library provides pure TypeScript implementations of both encoding and decoding for FT8
|
|
11
|
+
This library provides pure TypeScript implementations of both encoding and decoding for FT8/FT4, suitable for use in Node.js or the browser.
|
|
12
12
|
|
|
13
13
|
## Demo
|
|
14
14
|
|
|
@@ -30,29 +30,30 @@ npx @e04/ft8ts encode "CQ JK1IFA PM95" [--out output.wav] [--df 1000]
|
|
|
30
30
|
|
|
31
31
|
The benchmark below was compiled with reference to [Comparing PyFT8 with WSJT-x and FT8_lib](https://www.reddit.com/r/amateurradio/comments/1qt27ss/comparing_pyft8_with_wsjtx_and_ft8_lib/).
|
|
32
32
|
|
|
33
|
-
| Call a | Call b | Message | WSJT-x(default) | WSJT-x (fast) | [PyFT8](https://github.com/G1OJS/PyFT8) | [ft8_lib](https://github.com/kgoba/ft8_lib) | ft8ts (depth=
|
|
34
|
-
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
|
|
35
|
-
| W1FC | F5BZB | -8 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
36
|
-
| WM3PEN | EA6VQ | -9 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
37
|
-
| CQ | F5RXL | IN94 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
38
|
-
| N1JFU | EA6EE | R-07 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
39
|
-
| A92EE | F5PSR | -14 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
40
|
-
| K1BZM | EA3GP | -9 | ☑️ | ☑️ | ☑️ | | ☑️ |
|
|
41
|
-
| W0RSJ | EA3BMU | RR73 | ☑️ | ☑️ | ☑️ | | ☑️ |
|
|
42
|
-
| K1JT | HA0DU | KN07 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
43
|
-
| W1DIG | SV9CVY | -14 | ☑️ | ☑️ | ☑️ | | ☑️ |
|
|
44
|
-
| K1JT | EA3AGB | -15 | ☑️ | ☑️ | ☑️ | | ☑️ |
|
|
45
|
-
| XE2X | HA2NP | RR73 | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
46
|
-
| N1PJT | HB9CQK | -10 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
47
|
-
| K1BZM | EA3CJ | JN01 | ☑️ | ☑️ | | | |
|
|
48
|
-
| KD2UGC | F6GCP | R-23 | ☑️ | ☑️ | | | |
|
|
49
|
-
| WA2FZW | DL5AXX | RR73 | ☑️ | | | | |
|
|
50
|
-
| N1API | HA6FQ | -23 | ☑️ | | | |
|
|
51
|
-
| N1API | F2VX | 73 | ☑️ | | | |
|
|
52
|
-
| K1JT | HA5WA | 73 | ☑️ | | | |
|
|
53
|
-
| CQ | EA2BFM | IN83 | ☑️ | | | | |
|
|
54
|
-
|
|
55
|
-
|
|
33
|
+
| Call a | Call b | Message | WSJT-x(default) | WSJT-x (fast) | [PyFT8](https://github.com/G1OJS/PyFT8) | [ft8_lib](https://github.com/kgoba/ft8_lib) | ft8ts (depth=3) |
|
|
34
|
+
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
|
|
35
|
+
| W1FC | F5BZB | -8 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
36
|
+
| WM3PEN | EA6VQ | -9 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
37
|
+
| CQ | F5RXL | IN94 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
38
|
+
| N1JFU | EA6EE | R-07 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
39
|
+
| A92EE | F5PSR | -14 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
40
|
+
| K1BZM | EA3GP | -9 | ☑️ | ☑️ | ☑️ | | ☑️ |
|
|
41
|
+
| W0RSJ | EA3BMU | RR73 | ☑️ | ☑️ | ☑️ | | ☑️ |
|
|
42
|
+
| K1JT | HA0DU | KN07 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
43
|
+
| W1DIG | SV9CVY | -14 | ☑️ | ☑️ | ☑️ | | ☑️ |
|
|
44
|
+
| K1JT | EA3AGB | -15 | ☑️ | ☑️ | ☑️ | | ☑️ |
|
|
45
|
+
| XE2X | HA2NP | RR73 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
46
|
+
| N1PJT | HB9CQK | -10 | ☑️ | ☑️ | ☑️ | ☑️ | ☑️ |
|
|
47
|
+
| K1BZM | EA3CJ | JN01 | ☑️ | ☑️ | | | |
|
|
48
|
+
| KD2UGC | F6GCP | R-23 | ☑️ | ☑️ | | | |
|
|
49
|
+
| WA2FZW | DL5AXX | RR73 | ☑️ | | | | |
|
|
50
|
+
| N1API | HA6FQ | -23 | ☑️ | | | | ☑️ |
|
|
51
|
+
| N1API | F2VX | 73 | ☑️ | | | | ☑️ |
|
|
52
|
+
| K1JT | HA5WA | 73 | ☑️ | | | | ☑️ |
|
|
53
|
+
| CQ | EA2BFM | IN83 | ☑️ | | | | |
|
|
54
|
+
| K1BZM | DK8NE | -10 | | | | | ☑️ |
|
|
55
|
+
|
|
56
|
+
At its maximum depth mode (Depth 3), it successfully decodes 16 messages on this sample (including 16/20 rows in the table above), outperforming both `PyFT8` (12), `FT8_lib` (8), and `WSJT-x FAST mode` (14).
|
|
56
57
|
|
|
57
58
|
## Installation
|
|
58
59
|
|