mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-08 18:16:02 -05:00
53 lines
1.3 KiB
Fortran
53 lines
1.3 KiB
Fortran
|
subroutine gen_ft4wave(itone,nsym,nsps,fsample,f0,wave,nwave)
|
||
|
|
||
|
real wave(nwave)
|
||
|
real pulse(6144) !512*4*3
|
||
|
real dphi(0:240000-1)
|
||
|
integer itone(nsym)
|
||
|
logical first
|
||
|
data first/.true./
|
||
|
save pulse,first,twopi,dt,hmod
|
||
|
|
||
|
if(first) then
|
||
|
twopi=8.0*atan(1.0)
|
||
|
dt=1.0/fsample
|
||
|
hmod=1.0
|
||
|
! Compute the frequency-smoothing pulse
|
||
|
do i=1,3*nsps
|
||
|
tt=(i-1.5*nsps)/real(nsps)
|
||
|
pulse(i)=gfsk_pulse(1.0,tt)
|
||
|
enddo
|
||
|
first=.false.
|
||
|
endif
|
||
|
|
||
|
! Compute the smoothed frequency waveform.
|
||
|
! Length = (nsym+2)*nsps samples, zero-padded
|
||
|
dphi_peak=twopi*hmod/real(nsps)
|
||
|
dphi=0.0
|
||
|
do j=1,nsym
|
||
|
ib=(j-1)*nsps
|
||
|
ie=ib+3*nsps-1
|
||
|
dphi(ib:ie) = dphi(ib:ie) + dphi_peak*pulse(1:3*nsps)*itone(j)
|
||
|
enddo
|
||
|
|
||
|
! Calculate and insert the audio waveform
|
||
|
phi=0.0
|
||
|
dphi = dphi + twopi*f0*dt !Shift frequency up by f0
|
||
|
wave=0.
|
||
|
k=0
|
||
|
do j=0,nwave-1
|
||
|
k=k+1
|
||
|
wave(k)=sin(phi)
|
||
|
phi=mod(phi+dphi(j),twopi)
|
||
|
enddo
|
||
|
|
||
|
! Compute the ramp-up and ramp-down symbols
|
||
|
wave(1:nsps)=wave(1:nsps) * &
|
||
|
(1.0-cos(twopi*(/(i,i=0,nsps-1)/)/(2.0*nsps)))/2.0
|
||
|
k1=(nsym+1)*nsps+1
|
||
|
wave(k1:k1+nsps-1)=wave(k1:k1+nsps-1) * &
|
||
|
(1.0+cos(twopi*(/(i,i=0,nsps-1)/)/(2.0*nsps)))/2.0
|
||
|
|
||
|
return
|
||
|
end subroutine gen_ft4wave
|