| 1 | C -+-+-+-+-+ \ e H A E E O G . F T \ e -+-+-+-+-+\r |
| 2 | C\r |
| 3 | C EOG ANALYSIS\r |
| 4 | C\r |
| 5 | SUBROUTINE EOGSCN\r |
| 6 | INCLUDE HAEBUF.FI\r |
| 7 | INCLUDE HAEPTI.FI\r |
| 8 | INCLUDE HAEGSA.FI\r |
| 9 | INCLUDE HAECEO.FI\r |
| 10 | INCLUDE HAETTY.FI\r |
| 11 | INCLUDE HABRK.FI\r |
| 12 | C\r |
| 13 | \f EXTERNAL TOASCI,REASAC\r |
| 14 | INTEGER TOASCI\r |
| 15 | REAL REASAC\r |
| 16 | C\r |
| 17 | C\r |
| 18 | INTEGER POS1,I,N,\r |
| 19 | * SACBEG,SACEND, @ BEGINNING & ENDING OF SACCADE\r |
| 20 | * NXTSAC, @ HERE WE START FOR THE NEXT SEARCH\r |
| 21 | * S0,S1, @ WINDOW TO SCAN FOR SACCADE\r |
| 22 | * ERR, @ SACCAD ERROR NUMBER\r |
| 23 | * SPEAKR(73),LSTPOS,VLSTPO, @ SPEAKER POSITIONS HISTOGRAM\r |
| 24 | * BHH,BMM,BSS,EHH,EMM,ESS, @ TO EDIT OUTPUT LINE\r |
| 25 | * SACSTK(2,7,73),I1,I2,I3,Q1,Q2,Q3(8),Q4(8) @ STATISTIK STACK \r |
| 26 | REAL THRL,THRU, @ LOWER AND UPPER THRESHOLD FOR SACCAD SUBROUTINE\r |
| 27 | * SACAMP, @ AMPLITUDE OF THE SACCADE (INSERTED BY SACCAD)\r |
| 28 | * TE1,TE2,TE3,TE4, @ TEMP STORAGE FOR OUTPUT EDITING\r |
| 29 | * AMPL,AMPU @ TO CALIBRATE THE SACCADE AMPLITUDE\r |
| 30 | C\r |
| 31 | C STATEMENT FUNCTIONS ARE\r |
| 32 | C\r |
| 33 | SPKPOS(IP0)=INT(XYSAM(IP0,SPKCN)*SPKFAC+SPKOFS+.5)\r |
| 34 | INTEGER SPKPOS\r |
| 35 | SPKPNT(IP1)=MIN0(MAX0((SPKPOS(IP1))/5+1,1),73)\r |
| 36 | INTEGER SPKPNT\r |
| 37 | EOFLOP(IP0)=IP0-S0.LT.SAMRAT @ END OF LOOP INDICATOR ( 1 SEC STILL REMAINS)\r |
| 38 | LOGICAL EOFLOP\r |
| 39 | MODE(IP0)=XYSAM(IP0,MODCN)\r |
| 40 | INTEGER MODE\r |
| 41 | C\r |
| 42 | IF (SAMCNT.EQ.0) RETURN @ NO SAMPLE IN BUFFER\r |
| 43 | IF (BREAK(11)) RETURN @ USER GETS RID OF PROGRAM\r |
| 44 | IF (OPTION.NE.12) CALL ASKHIM(2) @ EO* DOES NOT ASK FOR BEGIN, SPAN\r |
| 45 | IF (BREAK(11)) RETURN @ BLAH BLAH BLAH\r |
| 46 | C\r |
| 47 | C ASK FOR THRESHOLD\r |
| 48 | C\r |
| 49 | THRL=40. @ DEFAULT\r |
| 50 | THRU=40.\r |
| 51 | IF (OPTION.NE.11) GOTO 30\r |
| 52 | WRITE (TTO,1)\r |
| 53 | READ (TTI,2) THRL,THRU @ NO SIGN PLEASE!\r |
| 54 | IF (BREAK(11)) RETURN @ USER GETS ....\r |
| 55 | IF (THRL.GE.0) GOTO 30 @ NO SIGN IS THE CORRECT ONE\r |
| 56 | WRITE (TTO,5) @ TYPE A MSG, NO SIGN PLEASE\r |
| 57 | THRL=-THRL @ AND BEHAVE LIKE A GENTLEMAN\r |
| 58 | 30 THRL=-THRL @ LOWER LIMIT MUST BE NEGATIVE\r |
| 59 | BSS=TOASCI(MOD(BEGIN,60))\r |
| 60 | BMM=TOASCI(MOD(BEGIN/60,60))\r |
| 61 | BHH=TOASCI(BEGIN/3600)\r |
| 62 | ESS=TOASCI(MOD(ENDS,60))\r |
| 63 | EMM=TOASCI(MOD(ENDS/60,60))\r |
| 64 | EHH=TOASCI(ENDS/3600)\r |
| 65 | C\r |
| 66 | WRITE (3,3) BHH,BMM,BSS,EHH,EMM,ESS,LABEL\r |
| 67 | WRITE (9,3) BHH,BMM,BSS,EHH,EMM,ESS,LABEL\r |
| 68 | C\r |
| 69 | S0=BEGIN*SAMRAT @ START OF MAJOR LOOP\r |
| 70 | C\r |
| 71 | \f100 CONTINUE\r |
| 72 | CALL MOVE (-73*2*7,0,SACSTK) @ CLEAR STATISTIK BUFFER\r |
| 73 | CALL CMODE (S0,S1) @ COMPUTE S1, THE BOUNDER FOR SACCADE SEARCH\r |
| 74 | C\r |
| 75 | C COMPUTE MIN/MAX OF EOG SIGNAL\r |
| 76 | C\r |
| 77 | AMPL=999\r |
| 78 | AMPU=-AMPL\r |
| 79 | DO 120 I=S0,S1\r |
| 80 | TE1=XYSAM(I,0)\r |
| 81 | AMPL=AMIN1(AMPL,TE1)\r |
| 82 | AMPU=AMAX1(AMPU,TE1)\r |
| 83 | 120 CONTINUE\r |
| 84 | AMPU=REASAC(AMPU)\r |
| 85 | AMPL=REASAC(AMPL) @ CALIBRATE INTO DEG SCALE\r |
| 86 | I=S0/SAMRAT\r |
| 87 | BSS=TOASCI(MOD(I,60))\r |
| 88 | BMM=TOASCI(MOD(I/60,60))\r |
| 89 | BHH=TOASCI(I/3600)\r |
| 90 | I=S1/SAMRAT\r |
| 91 | ESS=TOASCI(MOD(I,60))\r |
| 92 | EMM=TOASCI(MOD(I/60,60))\r |
| 93 | EHH=TOASCI(I/3600)\r |
| 94 | TE1=MODE(S0)\r |
| 95 | WRITE (9,6) LABEL,BHH,BMM,BSS,EHH,EMM,ESS,\r |
| 96 | * TE1,AMPL,AMPU\r |
| 97 | WRITE (3,6) LABEL,BHH,BMM,BSS,EHH,EMM,ESS,\r |
| 98 | * TE1,AMPL,AMPU\r |
| 99 | C\r |
| 100 | C COUNT THE NUMBER OF SPEAKER TURNS FROM S0 TO S1 ( I.E. FOR THE SAME MODE SIGNAL )\r |
| 101 | C\r |
| 102 | CALL MOVE (-73,0,SPEAKR)\r |
| 103 | DO 110 I=S0,S1,2\r |
| 104 | J=SPKPNT(I)\r |
| 105 | IF (J.EQ.LSTPOS .OR. J.EQ.VLSTPO) GOTO 110 @ PREVENT MULTIPLE COUNTING\r |
| 106 | SPEAKR(J)=SPEAKR(J)+1\r |
| 107 | VLSTPO=LSTPOS @ SAVE VERY LAST POSITION\r |
| 108 | LSTPOS=J @ SAVE LAST POSITION\r |
| 109 | 110 CONTINUE\r |
| 110 | C\r |
| 111 | POS1=S0 @ HERE WE START THE SEARCH LOOP\r |
| 112 | C\r |
| 113 | C MINOR LOOP TO FETCH THE SACCADE ONE BY ONE\r |
| 114 | C\r |
| 115 | 10 CONTINUE @ LOOP TO FETCH THE NEXT SACCADE\r |
| 116 | CALL SACCAD(POS1,S1,THRL,THRU,SACBEG,SACEND,\r |
| 117 | * SACAMP,NXTSAC,ERR)\r |
| 118 | TE1=SACBEG/FLOAT(SAMRAT) @ BEGINING OF THE SACCADE\r |
| 119 | BSS=TOASCI(MOD(TE1,60))\r |
| 120 | BMM=TOASCI(MOD(TE1/60,60))\r |
| 121 | BHH=TOASCI(TE1/3600)\r |
| 122 | TE2=(SACEND-SACBEG)/FLOAT(SAMRAT) @ DURATION\r |
| 123 | TE3=SPKPOS(SACBEG)-180. @ COMPUTE SPEAKER POSITION\r |
| 124 | I=MOD(INT(TE1*10.),10)\r |
| 125 | WRITE (3,4) BHH,BMM,BSS,I,TE2,SACAMP,TE3,ERR\r |
| 126 | C\r |
| 127 | C INSERT DATA INTO STATISTIK BUFFER\r |
| 128 | C\r |
| 129 | IF (ERR.NE.0) GOTO 20 @ ERROR FLAG SET, NO SACCADE FOUND\r |
| 130 | I1=NCOND(SACAMP.LT.0,1,2) @ SACAMP<0 --> 1 ELSE 2\r |
| 131 | I2=MIN1(ABS(SACAMP/5.)+1.,7.) @ 0-5, -10, -15, -20, -25, -30, >30\r |
| 132 | I3=SPKPNT(SACBEG)\r |
| 133 | SACSTK(I1,I2,I3)=SACSTK(I1,I2,I3)+1 @ HISTOGRAM\r |
| 134 | C\r |
| 135 | C\r |
| 136 | 20 POS1=NXTSAC @ PREP FOR THE NEXT LOOP\r |
| 137 | IF (S1-NXTSAC.GT.SAMRAT) GOTO 10 @ NO MODE CHANGE, SO CONTINUE MINOR LOOP\r |
| 138 | S0=S1+5 @ MODE CHANGES, REPEAT MAJOR LOOP\r |
| 139 | C\r |
| 140 | C PRINT THE HISTOGRAM\r |
| 141 | C\r |
| 142 | CALL MOVE (-8,0,Q3)\r |
| 143 | CALL MOVE (-8,0,Q4)\r |
| 144 | DO 40 I=1,73,6\r |
| 145 | J=-180+(I-1)*5\r |
| 146 | WRITE (9,7) J\r |
| 147 | DO 40 I3=I,MIN0(I+5,73)\r |
| 148 | Q1=0\r |
| 149 | Q2=0\r |
| 150 | DO 42 N=1,7\r |
| 151 | Q1=SACSTK(1,N,I3)+Q1\r |
| 152 | Q2=SACSTK(2,N,I3)+Q2\r |
| 153 | Q3(N)=SACSTK(1,N,I3)+Q3(N)\r |
| 154 | 42 Q4(N)=SACSTK(2,N,I3)+Q4(N)\r |
| 155 | Q3(8)=Q1+Q3(8)\r |
| 156 | Q4(8)=Q2+Q4(8)\r |
| 157 | 40 WRITE (9,8) SPEAKR(I3),((SACSTK(I1,I2,I3),I1=1,2),I2=1,7),\r |
| 158 | * Q1,Q2\r |
| 159 | \r |
| 160 | WRITE (9,9) (Q3(I),Q4(I),I=1,8)\r |
| 161 | WRITE (9,101) @ NEW PAGE\r |
| 162 | IF (EOFLOP(ENDS*SAMRAT)) RETURN @ WORK DONE\r |
| 163 | GOTO 100\r |
| 164 | 1 FORMAT (' U/O SCHWELLENWERT (2F3.0) ',$)\r |
| 165 | 2 FORMAT (2F3.0)\r |
| 166 | 3 FORMAT (1H1,80X/1X,2(2(A2,1H:),A2,3H - ),5X,10A6)\r |
| 167 | 4 FORMAT (1X,2(A2,1H:),A2,1H.,I1,F7.3,2F8.0,I5)\r |
| 168 | 5 FORMAT (' KEINE VORZEICHEN BITTE, WEISS ICH SELBER RICHTIG!')\r |
| 169 | 6 FORMAT (80X/1X,10A6/1X,2(2(A2,1H:)A2,3H - ),'MODE:',F6.0,\r |
| 170 | * ' SCHLAGFELD:',F6.0,2H /,F6.0/)\r |
| 171 | 7 FORMAT (1X,I4)\r |
| 172 | 8 FORMAT (1H+,2X,I6,1H*,7(2I4,2X),1H*,2I4/1X)\r |
| 173 | 9 FORMAT (10X,7(2I4,2X),1H#,2I4)\r |
| 174 | 101 FORMAT (1H1)\r |
| 175 | END\r |
| 176 | \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\0\0\0\0\0\0\0\0\0 |