mirror of
				https://github.com/saitohirga/WSJT-X.git
				synced 2025-10-31 13:10:19 -04:00 
			
		
		
		
	git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@7973 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
		
			
				
	
	
		
			84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
			
		
		
	
	
			84 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Fortran
		
	
	
	
	
	
| subroutine addit(itone,nfsample,nsym,nsps,ifreq,sig,dat)
 | |
| 
 | |
|   integer itone(nsym)
 | |
|   real dat(60*12000)
 | |
|   real*8 f,dt,twopi,phi,dphi,baud,fsample,freq,tsym,t
 | |
| 
 | |
|   tsym=nsps*1.d0/nfsample            !Symbol duration
 | |
|   baud=1.d0/tsym
 | |
|   fsample=12000.d0                   !Sample rate (Hz)
 | |
|   dt=1.d0/fsample                    !Sample interval (s)
 | |
|   twopi=8.d0*atan(1.d0)
 | |
|   dphi=0.
 | |
| 
 | |
|   iters=1
 | |
|   if(nsym.eq.79) iters=2
 | |
|   do iter=1,iters
 | |
|      f=ifreq
 | |
|      phi=0.
 | |
|      ntot=nsym*tsym/dt
 | |
|      k=12000                             !Start audio at t = 1.0 s
 | |
|      t=0.
 | |
|      if(nsym.eq.79) k=12000 + (iter-1)*12000*30  !Special case for FT8
 | |
|      isym0=-1
 | |
|      do i=1,ntot
 | |
|         t=t+dt
 | |
|         isym=nint(t/tsym) + 1
 | |
|         if(isym.ne.isym0) then
 | |
|            freq=f + itone(isym)*baud
 | |
|            dphi=twopi*freq*dt
 | |
|            isym0=isym
 | |
|         endif
 | |
|         phi=phi + dphi
 | |
|         if(phi.gt.twopi) phi=phi-twopi
 | |
|         xphi=phi
 | |
|         k=k+1
 | |
|         dat(k)=dat(k) + sig*sin(xphi)
 | |
|      enddo
 | |
|   enddo
 | |
| 
 | |
|   return
 | |
| end subroutine addit
 | |
| 
 | |
| subroutine addcw(icw,ncw,ifreq,sig,dat)
 | |
| 
 | |
|   integer icw(ncw)
 | |
|   real dat(60*12000)
 | |
|   real s(60*12000)
 | |
|   real x(60*12000)
 | |
|   real y(60*12000)
 | |
|   real*8 dt,twopi,phi,dphi,fsample,tdit,t
 | |
| 
 | |
|   wpm=25.0
 | |
|   nspd=nint(1.2*12000.0/wpm)
 | |
|   fsample=12000.d0                   !Sample rate (Hz)
 | |
|   dt=1.d0/fsample                    !Sample interval (s)
 | |
|   tdit=nspd*dt
 | |
|   twopi=8.d0*atan(1.d0)
 | |
|   dphi=twopi*ifreq*dt
 | |
|   phi=0.
 | |
|   k=12000                             !Start audio at t = 1.0 s
 | |
|   t=0.
 | |
|   npts=60*12000
 | |
|   x=0.
 | |
|   do i=1,npts
 | |
|      t=t+dt
 | |
|      j=nint(t/tdit) + 1
 | |
|      j=mod(j-1,ncw) + 1
 | |
|      phi=phi + dphi
 | |
|      if(phi.gt.twopi) phi=phi-twopi
 | |
|      xphi=phi
 | |
|      k=k+1
 | |
|      x(k)=icw(j)
 | |
|      s(k)=sin(xphi)
 | |
|      if(t.ge.59.5) exit
 | |
|   enddo
 | |
| 
 | |
|   nadd=0.004/dt
 | |
|   call smo(x,npts,y,nadd)
 | |
|   y=y/nadd
 | |
|   dat=dat + sig*y*s
 | |
| 
 | |
|   return
 | |
| end subroutine addcw
 |