JTMS v3.0: Possible New Mode for Meteor Scatter ----------------------------------------------- 1. Transmitting Messages are sent character-by character, 6 bits plus even parity. Message length can be one of {5 7 9 11 13 17 19 23 29}; messages are padded with blanks up to the next available length. Modulation is BPSK at 2000 baud. The baseband waveform is built by inserting a tapered sinc function for each bit, then multiplying by a sine wave at frequency f0 = 10000.0/7 = 1428.57 Hz. At fsample=48000 Hz there are 24 samples per PSK symbol and 7*24=168 samples per character. Carrier phase increment over one character is f0*(168/48000) = 5 cycles, exactly. 2. Receiving a. Pings are detected (or mouse-picked data is selected) as in WSJT9. Pings can also be detected from the squared analytic signal. Experience may tell which is better. b. Compute real-to-complex FFT. Zap birdies, remove frequency components outside the range 300 - 2700 Hz, and convert to analytic time-domain signal. (analytic) c. Square the complex signal, cx2=cx*cx, and compute FFT. Look for carrier at frequency 3000 + 2*DF +/- 2*Tol. (msdf) d. If carrier is found, measure frequency f and phase phi. Multiply cx by exp(-twopi*i*f*t - phi) to recover the real baseband signal x() to within a sign ambiguity. (tweak1) e. Apply matched filter for the Tx pulse shape to x(). This is essentially a rectangular BPF, -1000 to +1000 Hz ? (Or convolve with the generated PSK pulse shape, the tapered sinc() function.) f. Establish symbol and character sync by cross-correlating with conjg(cwb), where cwb is the baseband PSK waveform for the character. g. Find message length by computing ACF (of what? cdat? soft symbol values?) h. Decode the message by cross-correlating character-length segments of cdat against complex waveforms for each possible character. i. If msglen is established and long enough, try folding the data and determining best-fit characters as above.