| 1 | C -+-+-+-+-+ \ e H A E C A L . F T \ e -+-+-+-+-+\r |
| 2 | C\r |
| 3 | C SACCADE CALIBRATION FOR EOG ANALYSIS\r |
| 4 | C\r |
| 5 | SUBROUTINE CALSAC\r |
| 6 | C\r |
| 7 | INCLUDE HAEBUF.FI\r |
| 8 | INCLUDE HAEGSA.FI\r |
| 9 | INCLUDE HAECEO.FI\r |
| 10 | INCLUDE HAEPTI.FI\r |
| 11 | INCLUDE HABRK.FI\r |
| 12 | C\r |
| 13 | \f INTEGER J,I,N,I1,I2,S0,S1\r |
| 14 | REAL SACOFS,TE1,SPKMIN,SPKMAX\r |
| 15 | EXTERNAL COND,XYSAM\r |
| 16 | REAL COND,XYSAM\r |
| 17 | C\r |
| 18 | C STATEMENT FUNCTIONS ARE\r |
| 19 | C\r |
| 20 | SPKPOS(IP0)=INT(XYSAM(IP0,SPKCN)*SPKFAC+SPKOFS+.5)-180\r |
| 21 | INTEGER SPKPOS\r |
| 22 | C\r |
| 23 | C\r |
| 24 | IF (OPTION.EQ.11) GOTO 60 @ EI- PRINTS THE CALIBRATE VECTOR\r |
| 25 | IF (OPTION.EQ.2) GOTO 50 @ EI1 INSERT FACTOR 1 \r |
| 26 | CALL ASKHIM(2) @ ASK FOR BEGIN & ENDS\r |
| 27 | S0=BEGIN*SAMRAT\r |
| 28 | S1=ENDS*SAMRAT\r |
| 29 | C\r |
| 30 | C COMPUTE SPEAKER DC OFFSET\r |
| 31 | C\r |
| 32 | SPKOFS=0\r |
| 33 | SPMIN=9999\r |
| 34 | SPMAX=-SPMIN\r |
| 35 | DO 70 I=S0,S1\r |
| 36 | TE1=SPKPOS(I)\r |
| 37 | SPMIN=AMIN1(SPMIN,TE1)\r |
| 38 | 70 SPMAX=AMAX1(SPMAX,TE1)\r |
| 39 | SPKOFS=-((SPMAX-SPMIN)*.5+SPMIN)\r |
| 40 | C\r |
| 41 | C\r |
| 42 | CALL MOVE (-18,0,EICH)\r |
| 43 | CALL MOVE (-18,0,PEICH)\r |
| 44 | C\r |
| 45 | DO 10 I=S0,S1\r |
| 46 | I1=SPKPOS(I)\r |
| 47 | IF (MOD(I1,5).NE.0) GOTO 10\r |
| 48 | IF (IABS(I1).GT.30) GOTO 10\r |
| 49 | I2=IABS(I1/5)+1\r |
| 50 | I1=NCOND(I1.LT.0,1,2) @ POSITION BETWEEN -40 AND 40 DEG. 5 DEG STEPS +- 1 DEG ERROR \r |
| 51 | EICH(I1,I2)=XYSAM(I,0)+EICH(I1,I2)\r |
| 52 | PEICH(I1,I2)=PEICH(I1,I2)+1\r |
| 53 | 10 CONTINUE\r |
| 54 | C\r |
| 55 | C MITTELWERTE BERECHNEN\r |
| 56 | C\r |
| 57 | DO 20 I=1,9\r |
| 58 | DO 20 J=1,2\r |
| 59 | 20 EICH(J,I)=EICH(J,I)/MAX0(PEICH(J,I),1) @ PREVENTS DIVIDE BY ZERO\r |
| 60 | IF (PEICH(2,1).NE.0) GOTO 25\r |
| 61 | WRITE (TTO,1)\r |
| 62 | WRITE (TTO,2) EICH,PEICH @ PRINT AN ERROR MSG\r |
| 63 | 50 CONTINUE @ EI1 COMES HERE\r |
| 64 | CALL MOVE (-18,1.,EICH)\r |
| 65 | CALIBR=0. @ NO CALIBRATION ASSUMED\r |
| 66 | SPKOFS=0 @ NO SPEAKER POSITION OFFSET\r |
| 67 | RETURN\r |
| 68 | 60 WRITE (3,2) EICH,PEICH @ PRINT THE CALIBRATE VECTOR\r |
| 69 | RETURN\r |
| 70 | 25 SACOFS=EICH(2,1) @ VALUE FOR 0 DEG\r |
| 71 | DO 30 I=2,9\r |
| 72 | DO 30 J=1,2\r |
| 73 | 30 EICH(J,I)=(EICH(J,I)-SACOFS)/((I-1)*5)\r |
| 74 | DO 35 I=2,9\r |
| 75 | DO 35 J=1,2\r |
| 76 | 35 EICH(J,I)=COND(PEICH(J,I),EICH(J,I),EICH(J,I-1))\r |
| 77 | DO 40 N=3,9\r |
| 78 | I=11-N\r |
| 79 | DO 40 J=1,2\r |
| 80 | 40 EICH(J,I)=COND(PEICH(J,I),EICH(J,I),(EICH(J,I+1)+EICH(J,I))*.5)\r |
| 81 | RETURN\r |
| 82 | 1 FORMAT (' KEINEN NULLDURCHGANG DES LAUTSPRECHERS GEFUNDEN, ',\r |
| 83 | * 'KEINE EICHUNG!')\r |
| 84 | 2 FORMAT (1X,1P,4(2E11.3,2X)/1X,5(2E11.3,2X)/1X,\r |
| 85 | * 0P,4(2F11.0,2X),/1X,5(2F11.0,2X))\r |
| 86 | END\r |
| 87 | \1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 |