Commit | Line | Data |
---|---|---|
81e70d48 PH |
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 |