67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			67 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | program fixwav | ||
|  | 
 | ||
|  |   use wavhdr | ||
|  |   parameter (NBANDS=23,NMODES=11) | ||
|  |   parameter(NMAX=120*12000) | ||
|  |   type(hdr) h | ||
|  |   integer*2 id2(NMAX),id(4) | ||
|  |   character*8 mode,mode0 | ||
|  |   character*6 band | ||
|  |   character*12 arg | ||
|  |   character*80 infile | ||
|  |   character*1 c | ||
|  |   logical ok | ||
|  | 
 | ||
|  |   nargs=iargc() | ||
|  |   if(nargs.ne.1 .and. nargs.ne.5) then | ||
|  |      print*,'Usage: fixwav [fMHz mode submode TRperiod] infile' | ||
|  |      go to 999 | ||
|  |   endif | ||
|  |   call getarg(1,infile) | ||
|  |   if(nargs.eq.1) go to 10 | ||
|  |   read(infile,*) fMHz | ||
|  |   call getarg(2,mode0) | ||
|  |   call getarg(3,arg) | ||
|  |   nsubmode0=-1 | ||
|  |   do i=1,8 | ||
|  |      if(arg(1:1).eq.char(ichar('A')-1+i)) nsubmode0=i | ||
|  |   enddo | ||
|  |   if(nsubmode0.lt.0) read(arg,*) nsubmode0 | ||
|  |   call getarg(4,arg) | ||
|  |   read(arg,*) ntrperiod0 | ||
|  |   call getarg(5,infile) | ||
|  | 
 | ||
|  | 10 open(10,file=infile,status='old',access='stream') | ||
|  |   read(10) h | ||
|  |   npts=h%ndata/2 | ||
|  |   nfsample=h%nsamrate | ||
|  |   read(10) id2(1:npts) | ||
|  |   write(*,1002) h%nchan2,h%nbitsam2,h%nsamrate,npts | ||
|  | 1002 format('Channels:',i2,'   Bits/sample:',i3,'   Sample rate:',i6,   & | ||
|  |           '   Npts:',i8) | ||
|  | 
 | ||
|  |   call get_wsjtx_wav_params(id2,band,mode,nsubmode,ntrperiod,ok) | ||
|  |   if(nfsample.ne.11025 .and. nfsample.ne.12000) ok=.false. | ||
|  |   if(ok) write(*,1010) band,ntrperiod,mode,char(ichar('A')-1+id2(3)) | ||
|  | 1010 format('Band: ',a6,'  T/R period:',i4,'   Mode: ',a8,1x,a1) | ||
|  | 
 | ||
|  |   if(.not.ok) write(*,'(a)') 'File has no valid WSJT-X params.' | ||
|  |   if(ok .and. nargs.eq.1) go to 999 | ||
|  | 
 | ||
|  |   write(*,'(a)',advance='no') 'Do you want to add or change them? (Y/N): ' | ||
|  |   read*,c | ||
|  |   if(c.ne.'y' .and. c.ne.'Y') go to 999 | ||
|  | 
 | ||
|  |   print*,fMHz,mode0,nsubmode0,ntrperiod0 | ||
|  |   call set_wsjtx_wav_params(fMHz,mode0,nsubmode0,ntrperiod0,id2) | ||
|  |   band="" | ||
|  |   mode="" | ||
|  |   nsubmode=0 | ||
|  |   ntrperiod=0 | ||
|  |   call get_wsjtx_wav_params(id2,band,mode,nsubmode,ntrperiod,ok) | ||
|  |   write(*,1010) band,ntrperiod,mode,char(ichar('A')-1+id2(3)) | ||
|  |   rewind 10 | ||
|  |   write(10) h,id2(1:npts) | ||
|  | 
 | ||
|  | 999 end program fixwav |