[Lowfer] BPSK31
Ed Phillips
[email protected]
Sun, 01 Jun 2003 16:56:04 -0700
Stewart Nelson wrote:
>
> Hi Ed,
>
> > How do you generate the wave file?
>
> Sound card programming in Windows is difficult. One approach
> is to modify an existing open source program. You keep its
> existing logic and just change the data that it is sending.
>
> Another way, suitable for a beacon, is to write a disk file
> and use a utility, e.g. Cool Edit or even Media Player,
> to play it repeatedly. A .wav file has some header information
> followed by the samples. You can find documentation on the Web,
> or copy the header from another file with the same number of
> channels, sample size, sample rate, and length. Alternatively,
> you can write a file with just the samples and convert it with
> Cool Edit or similar, or play it with a tool that can handle
> raw PCM data.
>
> > and how do you arrange the L & R to be in quadrature?
>
> This is not an easy question. For Lowfer purposes, it is
> probably adequate to just delay the second channel by 1/4 of
> the nominal carrier period. This is easy if you arrange the
> carrier period to be an integral multiple of four times the
> sample rate. E.g. if you generate 1 kHz tone at 8000 samples
> per second, just delay the second channel by two samples.
>
> For more accurate results, implement the digital equivalent
> of your favorite analog phase shift network.
>
> For a precise solution, Google for "Hilbert Transformer".
>
> > Another question. Is the PC timing accurate enough for the
> > various BPSK modes without trying to use an external clock
> > as well?
>
> Absolutely. Even a 1% error in bit rate should not noticeably
> degrade most receive software. The problem is that a normal
> user program in Windows suffers large variations in timing,
> because the system is running other tasks. One solution is to
> write an interrupt-based driver. Another is to use an output
> device (serial port or sound card) that is buffered and
> supplies its own timing.
>
> > I've gotten as far as writing a program which will generate
> > the varicode for the various characters and output it from
> > the serial port but have never been sure about the timing accuracy.
>
> Sending the varicode directly will not work, because the UART
> inserts "start" and "stop" bits over which you have no control.
> But sending at a high baud rate, with multiple characters for
> each bit, as described in my earlier message, should be ok.
> The algorithm suggested has an inherent error of about 0.1%;
> there may be another 0.1% error caused by the crystal driving
> the baud rate generator. This is well within the tolerance of
> any PSK31 receiver.
>
> > Are you saying that the present sound-card programs can
> > generate that high an audio frequency?
>
> Sorry, I don't know. If you find one, consider yourself
> lucky. However, there are implementations with freely
> available source code. It should not be hard to modify the
> sample rate and carrier frequency.
>
> Another possibility (for a beacon) is to record the output
> of your PSK31 program, and use Cool Edit or similar software
> to increase the sample rate and shift the signal up in
> frequency. Then play that result back repeatedly.
>
> 73,
>
> Stewart KK7KA
Stewart:
You've given me quite a bit to think about. Will probably get back to
you with more questions.
Thanks,
Ed