Commit Graph

14 Commits

Author SHA1 Message Date
Bill Somerville
542ffe8311
Improve audio device handling and error recovery
where possible  audio devices that  disappear are not  forgotten until
the user selects another device, this should allow temporarily missing
devices or forgetting  to switch on devices before  starting WSJT-X to
be  handled more  cleanly. If  all else  fails, visiting  the Settings
dialog and  clicking OK should  get things  going again. Note  that we
still  do not  have  a  reliable way  of  detecting  failed audio  out
devices, in that  case selecting another device and  then returning to
the original should work.

Enumerating  audio devices  is expensive  and on  Linux may  take many
seconds per  device. To avoid  lengthy blocking behaviour until  it is
absolutely necessary,  audio devices are  not enumerated until  one of
the "Settings->Audio" device drop-down lists is opened. Elsewhere when
devices  must be  discovered  the  enumeration stops  as  soon as  the
configured device is  discovered. A status bar message  is posted when
audio devices are being enumerated as a reminder that the UI may block
while this is happening.

The message box warning about  unaccounted-for input audio samples now
only triggers when  >5 seconds of audio appears to  be missing or over
provided. Hopefully this will make the warning less annoying for those
that are  using audio sources  with high and/or variable  latencies. A
status  bar message  is still  posted for  any amount  of audio  input
samples  unaccounted for  >1/5 second,  this message  appearing a  lot
should be considered as notification that  there is a problem with the
audio sub-system, system load is  too high, or time synchronization is
stepping the PC clock rather  than adjusting the frequency to maintain
monotonic clock ticks.
2020-09-20 18:20:16 +01:00
Bill Somerville
65f994ce90
Improved audio stream error handling 2020-08-16 00:55:29 +01:00
Bill Somerville
0cf14dfcc9
Remove user adjustable audio buffer sizes from Settings
Fixed buffer sizes are  used. Rx use s 3456 x 1st  downsample rate x 5
audio  frames  of  buffer  space.  On Windows  this  means  that  each
chunk (periodSize())  delivered from the  audio stream is  our initial
DSP processing chunk size, thus  matching audio buffer latency exactly
with WSJT-X's  own front  end latency. This  should result  in optimal
resilience to high system loads that might starve the soundcard ADC of
buffers to fill and case dropped audio frames.

For Tx  a buffer sufficient for  1 s of  audio is used at  present, on
Windows  the period  size will  be  set to  1/40 of  that which  gives
reasonably low latency  and plenty of resilience to  high system loads
that might  starve the soundcard DAC  of audio frames to  render. Note
that a 1 s  buffer will make the "Pwr" slider slow  to respond, we may
have to reduce the Tx audio buffer size if this is seen as a problem.
2020-08-11 13:48:01 +01:00
Bill Somerville
8e95daf963
Remove some diagnostic prints 2020-08-03 01:39:25 +01:00
Bill Somerville
11b6637d6a
Fix some long-standing Tx start time issues 2020-07-31 13:35:57 +01:00
Bill Somerville
580dd85a18
Remainder of renames to FST4 2020-07-23 18:51:05 +01:00
Joe Taylor
a44b240192 Change to NSPS=720 for 15-seconf FST240 modes, to allow use for EME. 2020-06-29 17:33:46 -04:00
Joe Taylor
ae6ca148bd Pass mode name to the Modulator. 2020-06-29 14:47:46 -04:00
Joe Taylor
51447ef1d3 Remove the 1 s offset in wave() array. Fix NSPS for 300 s periods. 2020-06-27 16:24:11 -04:00
Joe Taylor
9caf3b650c Correct a number of parameters that control FST280 signal duration and timing. 2020-06-25 17:18:48 -04:00
Joe Taylor
503c2cc242 Tweak Modulator to align FST280 Tx start times properly. Still a possible issue with 5-min sequences? 2020-06-23 15:10:29 -04:00
Joe Taylor
501cb44923 Clean up git workspace. 2020-06-21 14:38:40 -04:00
Bill Somerville
9c22b5c3ed
Qt v5.15 compatibility 2020-06-13 16:04:41 +01:00
sirhc808
1f57ba5fec improve physical structure 2019-07-02 12:45:05 -05:00