50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			50 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | subroutine wav12(d2,d1,npts,nbitsam2) | ||
|  | 
 | ||
|  | ! Convert i*2 or i*1 data at 11025 Hz (from WSJT *.wav files) | ||
|  | ! to i*2 data at 12000 Hz. | ||
|  | 
 | ||
|  | ! Input:  i*2 d2(npts) or i*1 d1(npts) | ||
|  | !         i*2 nbitsam2 = 8 or 16 (bits per sample) | ||
|  | 
 | ||
|  | ! Output: npts = (12000*npts)/11025 | ||
|  | !         i*2 d2(npts) | ||
|  | 
 | ||
|  |   parameter (NZ11=60*11025,NZ12=60*12000) | ||
|  |   parameter (NFFT1=64*11025,NFFT2=64*12000) | ||
|  |   integer*1 d1(NZ11) | ||
|  |   integer*1 d1a(NZ11) | ||
|  |   integer*1 i1 | ||
|  |   integer*2 i2 | ||
|  |   integer*2 d2(NZ12) | ||
|  |   real x(NFFT2) | ||
|  |   complex cx(0:NFFT2/2) | ||
|  |   integer*2 nbitsam2 | ||
|  |   equivalence (x,cx),(i1,i2) | ||
|  | 
 | ||
|  |   jz=min(NZ11,npts) | ||
|  |   if(nbitsam2.eq.8) then | ||
|  |      jz=min(NZ11,npts) | ||
|  |      d1a(1:jz)=d1(1:jz)            !d1 and d2 may be same array in calling prog  | ||
|  |      do i=1,jz                     !Move data from d1a into d2 | ||
|  |         i2=0 | ||
|  |         i1=d1a(i) | ||
|  |         d2(i)=10*(i2-128) | ||
|  |      enddo | ||
|  |   endif | ||
|  | 
 | ||
|  |   x(1:jz)=d2(1:jz) | ||
|  |   x(jz+1:)=0.0 | ||
|  |   call four2a(x,nfft1,1,-1,0)                    !Forwarxd FFT, r2c | ||
|  |   cx(nfft1/2:)=0.0 | ||
|  |   call four2a(cx,nfft2,1,1,-1)                   !Inverse FFT, c2r | ||
|  | 
 | ||
|  |   npts=jz*12000.0/11025.0 | ||
|  |   fac=1.e-6 | ||
|  | !  if(nbitsam2.eq.16) fac=3.e-6 | ||
|  |   x=fac*x | ||
|  |   d2(1:npts)=nint(x(1:npts)) | ||
|  |   if(npts.lt.NZ12) d2(npts+1:NZ12)=0 | ||
|  | 
 | ||
|  |   return | ||
|  | end subroutine wav12 |