WSJT-X/lib/superfox/sfox_wave.f90

41 lines
871 B
Fortran
Raw Normal View History

2024-03-03 15:08:19 -05:00
subroutine sfox_wave(fname)
2024-03-04 13:15:56 -05:00
! Called by WSJT-X when it's time for SuperFox to transmit. Reads array
! itone(1:151) from disk file 'sfox_2.dat' in the writable data directory.
2024-03-03 15:08:19 -05:00
parameter (NWAVE=(160+2)*134400*4) !Max WSJT-X waveform (FST4-1800 at 48kHz)
parameter (NN=151,NSPS=1024)
character*(*) fname
integer itone(151)
real*8 dt,twopi,f0,baud,phi,dphi
common/foxcom/wave(NWAVE)
2024-03-04 13:15:56 -05:00
open(25,file=trim(fname),status='unknown',err=900)
read(25,'(20i4)',err=900,end=900) itone
2024-03-03 15:08:19 -05:00
close(25)
! Generate the SuperFox waveform.
dt=1.d0/48000.d0
twopi=8.d0*atan(1.d0)
f0=750.0d0
phi=0.d0
baud=12000.d0/NSPS
k=0
do j=1,NN
2024-03-03 15:35:57 -05:00
f=f0 + baud*mod(itone(j),128)
2024-03-03 15:08:19 -05:00
dphi=twopi*f*dt
2024-03-03 15:35:57 -05:00
do ii=1,4*NSPS
2024-03-03 15:08:19 -05:00
k=k+1
phi=phi+dphi
xphi=phi
2024-03-03 15:35:57 -05:00
wave(k)=sin(xphi)
2024-03-03 15:08:19 -05:00
enddo
enddo
2024-03-04 13:15:56 -05:00
900 continue
2024-03-03 15:08:19 -05:00
return
end subroutine sfox_wave