mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-04 16:31:17 -05:00
Make the Tx audio stereo, i.e., I and Q signals in left and right channels.
git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/map65@3594 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
parent
a035ca5772
commit
214737ae54
@ -3,7 +3,7 @@ subroutine gen65(message,mode65,nfast,samfac,nsendingsh,msgsent,iwave,nwave)
|
|||||||
! Encodes a JT65 message into a wavefile.
|
! Encodes a JT65 message into a wavefile.
|
||||||
! Executes in 17 ms on opti-745.
|
! Executes in 17 ms on opti-745.
|
||||||
|
|
||||||
parameter (NMAX=60*11025) !Max length of wave file
|
parameter (NMAX=2*60*11025) !Max length of wave file
|
||||||
character*22 message !Message to be generated
|
character*22 message !Message to be generated
|
||||||
character*22 msgsent !Message as it will be received
|
character*22 msgsent !Message as it will be received
|
||||||
character*3 cok !' ' or 'OOO'
|
character*3 cok !' ' or 'OOO'
|
||||||
@ -54,27 +54,31 @@ subroutine gen65(message,mode65,nfast,samfac,nsendingsh,msgsent,iwave,nwave)
|
|||||||
f0=118*11025.d0/1024
|
f0=118*11025.d0/1024
|
||||||
dfgen=mode65*11025.d0/4096.d0
|
dfgen=mode65*11025.d0/4096.d0
|
||||||
phi=0.d0
|
phi=0.d0
|
||||||
|
dphi=twopi*dt*f0
|
||||||
i=0
|
i=0
|
||||||
k=0
|
k=0
|
||||||
do j=1,nsym
|
do j=1,nsym
|
||||||
f=f0
|
if(message(1:5).ne.'@TUNE') then
|
||||||
if(nspecial.ne.0 .and. mod(j,2).eq.0) f=f0+10*nspecial*dfgen
|
f=f0
|
||||||
if(nspecial.eq.0 .and. flip*pr(j).lt.0.0) then
|
if(nspecial.ne.0 .and. mod(j,2).eq.0) f=f0+10*nspecial*dfgen
|
||||||
k=k+1
|
if(nspecial.eq.0 .and. flip*pr(j).lt.0.0) then
|
||||||
f=f0+(sent(k)+2)*dfgen
|
k=k+1
|
||||||
|
f=f0+(sent(k)+2)*dfgen
|
||||||
|
endif
|
||||||
|
dphi=twopi*dt*f
|
||||||
endif
|
endif
|
||||||
dphi=twopi*dt*f
|
|
||||||
do ii=1,nsps
|
do ii=1,nsps
|
||||||
phi=phi+dphi
|
phi=phi+dphi
|
||||||
if(phi.gt.twopi) phi=phi-twopi
|
if(phi.gt.twopi) phi=phi-twopi
|
||||||
xphi=phi
|
xphi=phi
|
||||||
i=i+1
|
i=i+1
|
||||||
iwave(i)=32767.0*sin(xphi)
|
iwave(2*i-1)=32767.0*cos(xphi)
|
||||||
|
iwave(2*i)=32767.0*sin(xphi)
|
||||||
enddo
|
enddo
|
||||||
enddo
|
enddo
|
||||||
|
|
||||||
iwave(nsym*nsps+1:)=0
|
iwave(2*nsym*nsps+1:)=0
|
||||||
nwave=nsym*nsps + 5512
|
nwave=2*nsym*nsps + 5512
|
||||||
call unpackmsg(dgen,msgsent)
|
call unpackmsg(dgen,msgsent)
|
||||||
if(flip.lt.0.0) then
|
if(flip.lt.0.0) then
|
||||||
do i=22,1,-1
|
do i=22,1,-1
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
#define NFFT 32768
|
#define NFFT 32768
|
||||||
|
|
||||||
short int iwave[60*11025]; //Wave file for Tx audio
|
short int iwave[2*60*11025]; //Wave file for Tx audio
|
||||||
int nwave; //Length of Tx waveform
|
int nwave; //Length of Tx waveform
|
||||||
bool btxok; //True if OK to transmit
|
bool btxok; //True if OK to transmit
|
||||||
double outputLatency; //Latency in seconds
|
double outputLatency; //Latency in seconds
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
[Setup]
|
[Setup]
|
||||||
AppName=MAP65
|
AppName=MAP65
|
||||||
AppVerName=MAP65 Version 2.4.1 r2587
|
AppVerName=MAP65 Version 2.4.1 r3120
|
||||||
AppCopyright=Copyright (C) 2001-2012 by Joe Taylor, K1JT
|
AppCopyright=Copyright (C) 2001-2013 by Joe Taylor, K1JT
|
||||||
DefaultDirName=c:\MAP65
|
DefaultDirName=c:\MAP65
|
||||||
DefaultGroupName=MAP65
|
DefaultGroupName=MAP65
|
||||||
|
|
||||||
|
18
soundout.cpp
18
soundout.cpp
@ -8,7 +8,7 @@ extern "C" {
|
|||||||
|
|
||||||
extern float gran(); //Noise generator (for tests only)
|
extern float gran(); //Noise generator (for tests only)
|
||||||
|
|
||||||
extern short int iwave[60*11025]; //Wave file for Tx audio
|
extern short int iwave[2*60*11025]; //Wave file for Tx audio
|
||||||
extern int nwave;
|
extern int nwave;
|
||||||
extern bool btxok;
|
extern bool btxok;
|
||||||
extern double outputLatency;
|
extern double outputLatency;
|
||||||
@ -28,7 +28,7 @@ extern "C" int d2aCallback(const void *inputBuffer, void *outputBuffer,
|
|||||||
paUserData *udata=(paUserData*)userData;
|
paUserData *udata=(paUserData*)userData;
|
||||||
short *wptr = (short*)outputBuffer;
|
short *wptr = (short*)outputBuffer;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
int n;
|
static int n;
|
||||||
static int ic=0;
|
static int ic=0;
|
||||||
static bool btxok0=false;
|
static bool btxok0=false;
|
||||||
static int nStart=0;
|
static int nStart=0;
|
||||||
@ -51,6 +51,7 @@ extern "C" int d2aCallback(const void *inputBuffer, void *outputBuffer,
|
|||||||
} else {
|
} else {
|
||||||
if(n != nStart) { //Late start in new Tx cycle: compute starting index
|
if(n != nStart) { //Late start in new Tx cycle: compute starting index
|
||||||
ic=(int)(tstart*11025.0);
|
ic=(int)(tstart*11025.0);
|
||||||
|
ic=2*ic;
|
||||||
nStart=n;
|
nStart=n;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -59,19 +60,18 @@ extern "C" int d2aCallback(const void *inputBuffer, void *outputBuffer,
|
|||||||
|
|
||||||
if(btxok) {
|
if(btxok) {
|
||||||
for(i=0 ; i<framesToProcess; i++ ) {
|
for(i=0 ; i<framesToProcess; i++ ) {
|
||||||
short int i2=iwave[ic];
|
short int i2a=iwave[ic++];
|
||||||
if(ic > nwave) i2=0;
|
short int i2b=iwave[ic++];
|
||||||
|
if(ic > nwave) {i2a=0; i2b=0;}
|
||||||
// i2 = 500.0*(i2/32767.0 + 5.0*gran()); //Add noise (tests only!)
|
// i2 = 500.0*(i2/32767.0 + 5.0*gran()); //Add noise (tests only!)
|
||||||
if(!btxok) i2=0;
|
*wptr++ = i2a; //left
|
||||||
*wptr++ = i2; //left
|
*wptr++ = i2b; //right
|
||||||
*wptr++ = i2; //right
|
|
||||||
ic++;
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for(i=0 ; i<framesToProcess; i++ ) {
|
for(i=0 ; i<framesToProcess; i++ ) {
|
||||||
*wptr++ = 0;
|
*wptr++ = 0;
|
||||||
*wptr++ = 0;
|
*wptr++ = 0;
|
||||||
ic++;
|
ic++; ic++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(ic > nwave) {
|
if(ic > nwave) {
|
||||||
|
Loading…
Reference in New Issue
Block a user