diff --git a/CMakeLists.txt b/CMakeLists.txt index 9e3a6d1e2..21155b141 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -505,6 +505,7 @@ set (wsjt_FSRCS lib/wqencode.f90 lib/fsk4hf/wspr5d.f90 lib/fsk4hf/wspr5sim.f90 + lib/fsk4hf/wspr5_downsample.f90 lib/fsk4hf/wspr5_wav.f90 lib/fsk4hf/wsprlfsim.f90 lib/wspr_downsample.f90 diff --git a/lib/fsk4hf/wspr5_downsample.f90 b/lib/fsk4hf/wspr5_downsample.f90 new file mode 100644 index 000000000..8c8d4f59a --- /dev/null +++ b/lib/fsk4hf/wspr5_downsample.f90 @@ -0,0 +1,26 @@ +subroutine wspr5_downsample(iwave,c) + + include 'wsprlf_params.f90' + parameter (NMAX=300*12000,NFFT2=NMAX/30) + integer*2 iwave(NMAX) + complex c(0:NZ-1) + complex c1(0:NFFT2-1) + complex cx(0:NMAX/2) + real x(NMAX) + equivalence (x,cx) + + df=12000.0/NMAX + x=iwave + call four2a(x,NMAX,1,-1,0) !r2c FFT to freq domain + i0=nint(1500.0/df) + c1(0)=cx(i0) + do i=1,NFFT2/2 + c1(i)=cx(i0+i) + c1(NFFT2-i)=cx(i0-i) + enddo + c1=c1/NFFT2 + call four2a(c1,NFFT2,1,1,1) !c2c FFT back to time domain + c=c1(0:NZ-1) + + return +end subroutine wspr5_downsample diff --git a/lib/fsk4hf/wspr5_wav.f90 b/lib/fsk4hf/wspr5_wav.f90 index aca36b5f1..32e4f90a6 100644 --- a/lib/fsk4hf/wspr5_wav.f90 +++ b/lib/fsk4hf/wspr5_wav.f90 @@ -37,8 +37,6 @@ subroutine wspr5_wav(baud,xdt,f0,itone,snrdb,iwave) if(k.gt.0 .and. k.le.NMAX) dat(k)=dat(k) + sig*sin(xphi) enddo enddo - print*,NN,NSPS0,k - fac=32767.0 rms=100.0 if(snrdb.ge.90.0) iwave=nint(fac*dat) diff --git a/lib/fsk4hf/wspr5d.f90 b/lib/fsk4hf/wspr5d.f90 index 4ba16d088..dc73d7170 100644 --- a/lib/fsk4hf/wspr5d.f90 +++ b/lib/fsk4hf/wspr5d.f90 @@ -31,6 +31,7 @@ program wspr5d integer ierror(NS+ND) integer isync(48) !Long sync vector integer ib13(13) !Barker 13 code + integer ihdr(11) integer*8 n8 integer*2 iwave(NMAX) !Generated full-length waveform integer*1 idat(7) @@ -91,6 +92,9 @@ program wspr5d read(10,end=999) fname,ntrmin,fMHz,c close(10) read(fname(8:11),*) nutc + else if(index(infile,'.wav').gt.0) then + read(10,end=999) ihdr,iwave + call wspr5_downsample(iwave,c) else print*,'Wrong file format?' go to 999 @@ -188,3 +192,5 @@ program wspr5d enddo ! ifile loop 999 end program wspr5d + + include 'wspr5_downsample.f90' diff --git a/lib/fsk4hf/wspr5sim.f90 b/lib/fsk4hf/wspr5sim.f90 index 0e2c6c286..5a3b78c9e 100644 --- a/lib/fsk4hf/wspr5sim.f90 +++ b/lib/fsk4hf/wspr5sim.f90 @@ -94,6 +94,8 @@ program wspr5sim write(10) h,iwave !Save the .wav file close(10) endif + write(*,1110) ifile,xdt,f0,snrdb,fname +1110 format(i4,f7.2,f8.2,f7.1,2x,a16) enddo 999 end program wspr5sim