(FILECREATED "11-Jul-84 14:10:00" {ERIS}<SPEECH>ROACH>WEDIT.FPKG;1 6687   

      changes to:  (FNS WEDIT.CREATEWAVE WEDIT.GET WEDIT.PUT WEDIT.SINEWAVE WEDIT.DELTAWAVE 
			WEDIT.BOXWAVE WEDIT.PLUS WEDIT.DIFFERENCE WEDIT.TIMES WEDIT.QUOTIENT 
			WEDIT.RES WEDIT.ANTIRES WEDIT.RESS WEDIT.ANTIRESS WEDIT.AVERAGE))


(* Copyright (c)  by NIL. All rights reserved.)

(PRETTYCOMPRINT WEDITCOMS)

(RPAQQ WEDITCOMS ((INITVARS (SPEECH.WAVESIZE 700))
	(FNS WEDIT.CREATEWAVE WEDIT.GET WEDIT.PUT WEDIT.SINEWAVE WEDIT.DELTAWAVE WEDIT.BOXWAVE 
	     WEDIT.PLUS WEDIT.DIFFERENCE WEDIT.TIMES WEDIT.QUOTIENT WEDIT.RES WEDIT.ANTIRES 
	     WEDIT.RESS WEDIT.ANTIRESS WEDIT.AVERAGE)))

(RPAQ? SPEECH.WAVESIZE 700)
(DEFINEQ

(WEDIT.CREATEWAVE
  (LAMBDA NIL                                                (* kbr: "11-Jul-84 14:09")
    (ARRAY SPEECH.WAVESIZE 'FIXP)))

(WEDIT.GET
  (LAMBDA (FILENAME)                                         (* kbr: "11-Jul-84 14:09")
    (PROG (STREAM ANSWER)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (SETQ STREAM (OPENSTREAM FILENAME 'INPUT))
          (FOR I FROM 1 TO (IMIN (GETFILEINFO STREAM 'LENGTH)
				 SPEECH.WAVESIZE)
	     DO (SETA ANSWER I (SPEECH.BIN STREAM)))
          (CLOSEF STREAM)
          (RETURN ANSWER))))

(WEDIT.PUT
  (LAMBDA (WAVE FILENAME)                                    (* kbr: "11-Jul-84 14:09")
    (PROG (STREAM)
          (SETQ STREAM (OPENSTREAM FILENAME 'OUTPUT))
          (FOR I FROM 1 TO SPEECH.WAVESIZE DO (SPEECH.BOUT STREAM (RANGECHECK (ELT WAVE I)
									      -128 127)))
          (RETURN (CLOSEF STREAM)))))

(WEDIT.SINEWAVE
  (LAMBDA (AMP PERIOD PHASE)                                 (* kbr: "11-Jul-84 14:09")
    (PROG (ANSWER FREQ)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (SETQ FREQ (FQUOTIENT TWOPI (FLOAT PERIOD)))
          (FOR I FROM 1 TO SPEECH.WAVESIZE DO (SETA ANSWER I (FTIMES AMP
								     (SIN (FPLUS (FTIMES FREQ I)
										 PHASE)
									  T))))
          (RETURN ANSWER))))

(WEDIT.DELTAWAVE
  (LAMBDA (AMP PERIOD)                                       (* kbr: "11-Jul-84 14:09")
    (WEDIT.BOXWAVE 0 (SUB1 PERIOD)
		   AMP 1)))

(WEDIT.BOXWAVE
  (LAMBDA (AMP1 PERIOD1 AMP2 PERIOD2)                        (* kbr: "11-Jul-84 14:09")
    (PROG (ANSWER PERIOD)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (SETQ PERIOD (IPLUS PERIOD1 PERIOD2))
          (FOR I FROM 1 TO SPEECH.WAVESIZE
	     DO (COND
		  ((ILESSP (IREMAINDER (SUB1 I)
				       PERIOD)
			   PERIOD1)
		    (SETQ AMP AMP1))
		  (T (SETQ AMP AMP2)))
		(SETA ANSWER I AMP))
          (RETURN ANSWER))))

(WEDIT.PLUS
  (LAMBDA (WAVE1 WAVE2)                                      (* kbr: "11-Jul-84 14:09")
    (PROG (ANSWER)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (FOR I FROM 1 TO SPEECH.WAVESIZE DO (SETA ANSWER I (IPLUS (ELT WAVE1 I)
								    (ELT WAVE2 I))))
          (RETURN ANSWER))))

(WEDIT.DIFFERENCE
  (LAMBDA (WAVE1 WAVE2)                                      (* kbr: "11-Jul-84 14:09")
    (PROG (ANSWER)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (FOR I FROM 1 TO SPEECH.WAVESIZE DO (SETA ANSWER I (IDIFFERENCE (ELT WAVE1 I)
									  (ELT WAVE2 I))))
          (RETURN ANSWER))))

(WEDIT.TIMES
  (LAMBDA (WAVE1 WAVE2)                                      (* kbr: "11-Jul-84 14:09")
    (PROG (ANSWER)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (FOR I FROM 1 TO SPEECH.WAVESIZE DO (SETA ANSWER I (ITIMES (ELT WAVE1 I)
								     (ELT WAVE2 I))))
          (RETURN ANSWER))))

(WEDIT.QUOTIENT
  (LAMBDA (WAVE1 WAVE2)                                      (* kbr: "11-Jul-84 14:09")
    (PROG (ANSWER)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (FOR I FROM 1 TO SPEECH.WAVESIZE DO (SETA ANSWER I (IQUOTIENT (ELT WAVE1 I)
									(ELT WAVE2 I))))
          (RETURN ANSWER))))

(WEDIT.RES
  (LAMBDA (WAVE RES)                                         (* kbr: "11-Jul-84 14:09")
                                                             (* Pass WAVE through resonator RES *)
    (PROG (ANSWER REG)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (SETQ REG (CREATE REG))
          (FOR I FROM 1 TO SPEECH.WAVESIZE DO (SETA ANSWER I (COEWAVE.STEP.RES (ELT WAVE I)
									       RES REG)))
          (RETURN ANSWER))))

(WEDIT.ANTIRES
  (LAMBDA (WAVE ANTIRES)                                     (* kbr: "11-Jul-84 14:09")
                                                             (* Pass WAVE through antiresonator ANTIRES *)
    (PROG (ANSWER REG)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (SETQ REG (CREATE REG))
          (FOR I FROM 1 TO SPEECH.WAVESIZE DO (SETA ANSWER I (COEWAVE.STEP.ANTIRES (ELT WAVE I)
										   ANTIRES REG)))
          (RETURN ANSWER))))

(WEDIT.RESS
  (LAMBDA (WAVE RESS)                                        (* kbr: "11-Jul-84 14:09")
                                                             (* Pass WAVE through cascade of resonators RESS *)
    (PROG (ANSWER)
          (SETQ ANSWER WAVE)
          (FOR RES IN RESS DO (SETQ ANSWER (WEDIT.RES ANSWER RES)))
          (RETURN ANSWER))))

(WEDIT.ANTIRESS
  (LAMBDA (WAVE ANTIRESS)                                    (* kbr: "11-Jul-84 14:09")
                                                             (* Pass WAVE through cascade of antiresonators ANTIRESS 
							     *)
    (PROG (ANSWER)
          (SETQ ANSWER WAVE)
          (FOR ANTIRES IN ANTIRESS DO (SETQ ANSWER (WEDIT.ANTIRES ANSWER ANTIRES)))
          (RETURN ANSWER))))

(WEDIT.AVERAGE
  (LAMBDA (WAVE PERIOD)                                      (* kbr: "11-Jul-84 14:09")
                                                             (* Assume WAVE periodic with period PERIOD.
							     ANSWER is same as WAVE%, but with noise smoothed out.
							     *)
    (PROG (ANSWER N SUM AVG)
          (SETQ ANSWER (WEDIT.CREATEWAVE))
          (FOR I FROM 1 TO PERIOD
	     DO (SETQ SUM 0)
		(SETQ N 0)
		(FOR J ← I BY (IPLUS J PERIOD) WHILE (ILEQ J SPEECH.WAVESIZE)
		   DO (SETQ SUM (IPLUS SUM (ELT WAVE J)))
		      (SETQ N (ADD1 N)))
		(SETQ AVG (IQUOTIENT SUM N))
		(FOR J ← I BY (IPLUS J PERIOD) WHILE (ILEQ J SPEECH.WAVESIZE)
		   DO (SETA ANSWER J AVG)))
          (RETURN ANSWER))))
)
(DECLARE: DONTCOPY
  (FILEMAP (NIL (706 6665 (WEDIT.CREATEWAVE 716 . 865) (WEDIT.GET 867 . 1300) (WEDIT.PUT 1302 . 1653) (
WEDIT.SINEWAVE 1655 . 2086) (WEDIT.DELTAWAVE 2088 . 2253) (WEDIT.BOXWAVE 2255 . 2728) (WEDIT.PLUS 2730
 . 3059) (WEDIT.DIFFERENCE 3061 . 3401) (WEDIT.TIMES 3403 . 3735) (WEDIT.QUOTIENT 3737 . 4071) (
WEDIT.RES 4073 . 4554) (WEDIT.ANTIRES 4556 . 5054) (WEDIT.RESS 5056 . 5440) (WEDIT.ANTIRESS 5442 . 
5871) (WEDIT.AVERAGE 5873 . 6663)))))
STOP