(FILECREATED " 4-Aug-84 18:46:29" {ERIS}<SPEECH>SYNTH.FPKG;4 15693
changes to: (RECORDS SYLLABLE)
previous date: "21-Jun-84 20:55:11" {ERIS}<SPEECH>SYNTH.FPKG;3)
(* Copyright (c) 1984 by Xerox Corporation. All rights reserved.)
(PRETTYCOMPRINT SYNTHCOMS)
(RPAQQ SYNTHCOMS ((INITVARS (PVECTOR.PNAMES '(AV ASV FGP BGP FGZ BGZ BGS SWITCH AFRIC AASPIR NCF F0
A1 B1 F1 A2 B2 F2 A3 B3 F3 A4 B4 F4 A5 B5 F5 A6 B6
F6 FNZ BNZ ANP FNP BNP AB GAIN))
(PVECTOR.DEFAULT NIL))
(RECORDS PHONEME PVECTOR POINT2 SLIST SYLLABLE)
(FNS CREATE.SLICES CREATE.SLICES1 FIND.PVECTOR.NAME PVECTOR.DEFAULT.SPEC PVECTOR.GET
PVECTOR.PUT SYNTH.TMIN SYNTH.TMAX SYNTH.INIT SYNTH.SLIST SYNTH.SLIST1)
(FNS)
(VARS NSOUNDS SOUNDS VCOMMENTS)
(P (SYNTH.INIT))))
(RPAQ? PVECTOR.PNAMES '(AV ASV FGP BGP FGZ BGZ BGS SWITCH AFRIC AASPIR NCF F0 A1 B1 F1 A2 B2 F2 A3 B3
F3 A4 B4 F4 A5 B5 F5 A6 B6 F6 FNZ BNZ ANP FNP BNP AB GAIN))
(RPAQ? PVECTOR.DEFAULT NIL)
[DECLARE: EVAL@COMPILE
(RECORD PHONEME (PSYMBOL CVTYPE INVARIANT PREVFRONT PREVBACKUNROUNDED PREVBACKROUNDED POSTVWOFFGLIDE
POSTVNOWOFFGLIDE))
(DATATYPE PVECTOR (* Parameter Vector *)
(TYPE SOUND CV COMMENT DURATION AV ASV FGP BGP FGZ BGZ BGS SWITCH AFRIC AASPIR NCF F0 A1 B1
F1 A2 B2 F2 A3 B3 F3 A4 B4 F4 A5 B5 F5 A6 B6 F6 FNZ BNZ ANP FNP BNP AB GAIN))
(RECORD POINT2 (TIME VALUE))
(RECORD SLIST (SOUND CV COMMENT . ALIST)
[ACCESSFNS ((TMIN (SYNTH.TMIN DATUM))
(TMAX (SYNTH.TMAX DATUM])
(TYPERECORD SYLLABLE (SYLLABLE STRESS))
]
(/DECLAREDATATYPE 'PVECTOR
'(POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER
POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER
POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER
POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER POINTER
POINTER POINTER POINTER POINTER POINTER))
(DEFINEQ
(CREATE.SLICES
[LAMBDA (SLISTLIST) (* pkh: " 1-Jun-84 16:19")
(* * comment)
(for X in SLISTLIST collect (CREATE.SLICES1 X])
(CREATE.SLICES1
[LAMBDA (SLISTNAME) (* pkh: " 1-Jun-84 16:23")
(* * comment)
(PROG [(NAME (MKATOM (SUBSTRING SLISTNAME (ADD1 (STRPOS '%. SLISTNAME]
(SET NAME (SYNTH.SLIST (EVAL SLISTNAME)))
(PRIN1 NAME)
(RETURN NAME])
(FIND.PVECTOR.NAME
[LAMBDA (P) (* pkh: " 4-Jun-84 16:35")
(* Matches a phonetic symbol to a PVECTOR for a vowel)
(* * comment)
(MKATOM (PACK* P '.PHONEME])
(PVECTOR.DEFAULT.SPEC
(LAMBDA NIL (* pkh: "28-May-84 15:17")
(PROG ((TMIN 0)
(TMAX 700)
DEFAULT
(DEFAULT.PARAM.BUFFER (create PVECTOR
TYPE ← 'DEFAULT.BUFFER
CV ← 'NEITHER
COMMENT ← ' (* Default parameter buffer which SLICE specs will be
overlaid onto)))
TRAJ)
(for PNAME in PVECTOR.PNAMES
do (SETQ DEFAULT (PVECTOR.GET PVECTOR.DEFAULT PNAME))
(* Fill in defaults if there are no specs for this PNAME
or if the specs starts at a point later then TMIN)
(SETQ TRAJ (LIST (create POINT2
TIME ← TMIN
VALUE ← DEFAULT)))
(* Default for the tail end of the sound)
(SETQ TRAJ (APPEND TRAJ (LIST (create POINT2
TIME ← TMAX
VALUE ← DEFAULT))))
(PVECTOR.PUT DEFAULT.PARAM.BUFFER PNAME TRAJ))
(RETURN DEFAULT.PARAM.BUFFER))))
(PVECTOR.GET
[LAMBDA (PVECTOR PNAME) (* pkh: "21-Jun-84 20:53")
(SELECTQ PNAME
(GAIN (fetch (PVECTOR GAIN) of PVECTOR))
(AB (fetch (PVECTOR AB) of PVECTOR))
(BNP (fetch (PVECTOR BNP) of PVECTOR))
(FNP (fetch (PVECTOR FNP) of PVECTOR))
(ANP (fetch (PVECTOR ANP) of PVECTOR))
(BNZ (fetch (PVECTOR BNZ) of PVECTOR))
(FNZ (fetch (PVECTOR FNZ) of PVECTOR))
(F6 (fetch (PVECTOR F6) of PVECTOR))
(B6 (fetch (PVECTOR B6) of PVECTOR))
(A6 (fetch (PVECTOR A6) of PVECTOR))
(F5 (fetch (PVECTOR F5) of PVECTOR))
(B5 (fetch (PVECTOR B5) of PVECTOR))
(A5 (fetch (PVECTOR A5) of PVECTOR))
(F4 (fetch (PVECTOR F4) of PVECTOR))
(B4 (fetch (PVECTOR B4) of PVECTOR))
(A4 (fetch (PVECTOR A4) of PVECTOR))
(F3 (fetch (PVECTOR F3) of PVECTOR))
(B3 (fetch (PVECTOR B3) of PVECTOR))
(A3 (fetch (PVECTOR A3) of PVECTOR))
(F2 (fetch (PVECTOR F2) of PVECTOR))
(B2 (fetch (PVECTOR B2) of PVECTOR))
(A2 (fetch (PVECTOR A2) of PVECTOR))
(F1 (fetch (PVECTOR F1) of PVECTOR))
(AV (fetch (PVECTOR AV) of PVECTOR))
(ASV (fetch (PVECTOR ASV) of PVECTOR))
(FGP (fetch (PVECTOR FGP) of PVECTOR))
(BGP (fetch (PVECTOR BGP) of PVECTOR))
(FGZ (fetch (PVECTOR FGZ) of PVECTOR))
(BGZ (fetch (PVECTOR BGZ) of PVECTOR))
(BGS (fetch (PVECTOR BGS) of PVECTOR))
(SWITCH (fetch (PVECTOR SWITCH) of PVECTOR))
(AFRIC (fetch (PVECTOR AFRIC) of PVECTOR))
(AASPIR (fetch (PVECTOR AASPIR) of PVECTOR))
(NCF (fetch (PVECTOR NCF) of PVECTOR))
(F0 (fetch (PVECTOR F0) of PVECTOR))
(A1 (fetch (PVECTOR A1) of PVECTOR))
(B1 (fetch (PVECTOR B1) of PVECTOR))
(SHOULDNT])
(PVECTOR.PUT
[LAMBDA (PVECTOR PNAME VALUE) (* pkh: "21-Jun-84 20:52")
(* pkh: "21-Jun-84 14:52")
(SELECTQ PNAME
(GAIN (replace (PVECTOR GAIN) of PVECTOR with VALUE))
(AB (replace (PVECTOR AB) of PVECTOR with VALUE))
(B2 (replace (PVECTOR B2) of PVECTOR with VALUE))
(BNP (replace (PVECTOR BNP) of PVECTOR with VALUE))
(FNP (replace (PVECTOR FNP) of PVECTOR with VALUE))
(ANP (replace (PVECTOR ANP) of PVECTOR with VALUE))
(BNZ (replace (PVECTOR BNZ) of PVECTOR with VALUE))
(FNZ (replace (PVECTOR FNZ) of PVECTOR with VALUE))
(F6 (replace (PVECTOR F6) of PVECTOR with VALUE))
(B6 (replace (PVECTOR B6) of PVECTOR with VALUE))
(A6 (replace (PVECTOR A6) of PVECTOR with VALUE))
(F5 (replace (PVECTOR F5) of PVECTOR with VALUE))
(B5 (replace (PVECTOR B5) of PVECTOR with VALUE))
(A5 (replace (PVECTOR A5) of PVECTOR with VALUE))
(F4 (replace (PVECTOR F4) of PVECTOR with VALUE))
(B4 (replace (PVECTOR B4) of PVECTOR with VALUE))
(A4 (replace (PVECTOR A4) of PVECTOR with VALUE))
(F3 (replace (PVECTOR F3) of PVECTOR with VALUE))
(B3 (replace (PVECTOR B3) of PVECTOR with VALUE))
(A3 (replace (PVECTOR A3) of PVECTOR with VALUE))
(F2 (replace (PVECTOR F2) of PVECTOR with VALUE))
(A2 (replace (PVECTOR A2) of PVECTOR with VALUE))
(F1 (replace (PVECTOR F1) of PVECTOR with VALUE))
(AV (replace (PVECTOR AV) of PVECTOR with VALUE))
(ASV (replace (PVECTOR ASV) of PVECTOR with VALUE))
(FGP (replace (PVECTOR FGP) of PVECTOR with VALUE))
(BGP (replace (PVECTOR BGP) of PVECTOR with VALUE))
(FGZ (replace (PVECTOR FGZ) of PVECTOR with VALUE))
(BGZ (replace (PVECTOR BGZ) of PVECTOR with VALUE))
(BGS (replace (PVECTOR BGS) of PVECTOR with VALUE))
(SWITCH (replace (PVECTOR SWITCH) of PVECTOR with VALUE))
(AFRIC (replace (PVECTOR AFRIC) of PVECTOR with VALUE))
(AASPIR (replace (PVECTOR AASPIR) of PVECTOR with VALUE))
(NCF (replace (PVECTOR NCF) of PVECTOR with VALUE))
(F0 (replace (PVECTOR F0) of PVECTOR with VALUE))
(A1 (replace (PVECTOR A1) of PVECTOR with VALUE))
(B1 (replace (PVECTOR B1) of PVECTOR with VALUE))
(SHOULDNT])
(SYNTH.TMIN
(LAMBDA (SLIST) (* pkh: "28-May-84 13:16")
(* Sets different logical beginnings for different types of sounds; NOTE! I changed the logical beginning of
postvocalic elements to 400 as per Klatt chap. 3; pkh 5/28)
(SELECTQ (fetch (SLIST CV) of SLIST)
(PREVOCALIC 0)
(VOWEL 200)
(POSTVOCALIC 400)
(SHOULDNT))))
(SYNTH.TMAX
(LAMBDA (SLIST) (* pkh: "28-May-84 13:13" Logical end of vowel is when
amplitude of voicing (AV) is turned off)
(SELECTQ (fetch (SLIST CV) of SLIST)
(PREVOCALIC 200)
(VOWEL (fetch (SP.POINT TIME) of (CAR (LAST (CDR (ASSOC 'AV (fetch (SLIST ALIST)
of SLIST)))))))
(POSTVOCALIC 700)
(SHOULDNT))))
(SYNTH.INIT
(LAMBDA NIL (* pkh: "24-May-84 19:22")
(PROG NIL
(SETQ PVECTOR.DEFAULT (create PVECTOR
SOUND ← 'DEFAULT
CV ← 'SLICE
COMMENT ← ' (* PVECTOR.DEFAULT *)
DURATION ← 0
AV ← 0
ASV ← 0
AASPIR ← 0
AFRIC ← 0
F0 ← 0
FGP ← 0
BGP ← 100
FGZ ← 1500
BGZ ← 6000
FNP ← 250
BNP ← 100
FNZ ← 250
BNZ ← 100
BGS ← 200
F1 ← 450
B1 ← 50
F2 ← 1450
B2 ← 70
F3 ← 2450
B3 ← 110
F4 ← 3300
B4 ← 250
F5 ← 3850
B5 ← 200
F6 ← 4900
B6 ← 1000
A1 ← 0
ANP ← 0
A2 ← 0
A3 ← 0
A4 ← 0
A5 ← 0
A6 ← 0
AB ← 0
SWITCH ← 'CASCADE
GAIN ← 36
NCF ← 5)))))
(SYNTH.SLIST
(LAMBDA (SLIST) (* pkh: "29-May-84 13:59")
(* Return SEGMENT *)
(PROG (SEGMENT TMIN TMAX PNAME)
(SETQ TMIN (fetch (SLIST TMIN) of SLIST)) (* Always: (PREVOCALIC 0) (VOWEL 200)
(POSTVOCALIC 400))
(SETQ TMAX (fetch (SLIST TMAX) of SLIST)) (* Always: (PREVOCALIC 200) (POSTVOCALIC 700); but
variable for the VOWEL)
(SETQ DURATION (IDIFFERENCE TMAX TMIN))
(* DURATION will vary for VOWELS since their TMAX differs; It will always be 200 for PREVOCALIC consonants and 300
for postvocalic consonants; NOTE! Computation of actual duration of PREVOCALIC and POSTVOCALIC elements to be
written)
(* Creating a new default buffer)
(SETQ SEGMENT (create PVECTOR
TYPE ← 'SEGMENT
SOUND ←(fetch (SLIST SOUND) of SLIST)
CV ←(fetch (SLIST CV) of SLIST)
COMMENT ←(fetch (SLIST COMMENT) of SLIST)))
(* Tailoring the buffer to accomodate our SLIST
(i.e. segment))
(* Filling the buffer with default values)
(for PNAME in PVECTOR.PNAMES do (SYNTH.SLIST1 SEGMENT PNAME
(CDR (ASSOC PNAME (fetch (SLIST ALIST)
of SLIST)))
TMIN TMAX))
(RETURN SEGMENT))))
(SYNTH.SLIST1
(LAMBDA (SEGMENT PNAME TRAJ TMIN TMAX) (* pkh: "29-May-84 14:07")
(* Insert TRAJ into SEGMENT. *)
(PROG (POINT DEFAULT)
(SETQ POINT (CAR TRAJ))
(SETQ DEFAULT (PVECTOR.GET PVECTOR.DEFAULT PNAME))
(COND
((OR (NULL POINT)
(IGREATERP (fetch (SP.POINT TIME) of POINT)
TMIN))
(push TRAJ (create POINT2
TIME ←(COND
(POINT (SUB1 (fetch (SP.POINT TIME) of POINT)))
(T TMAX))
VALUE ← DEFAULT))
(push TRAJ (create POINT2
TIME ← TMIN
VALUE ← DEFAULT))))
(SETQ POINT (CAR (LAST TRAJ)))
(COND
((OR (NULL POINT)
(ILESSP (fetch (SP.POINT TIME) of POINT)
TMAX))
(SETQ TRAJ (APPEND TRAJ (LIST (create POINT2
TIME ←(COND
(POINT (ADD1 (fetch (SP.POINT TIME)
of POINT)))
(T TMIN))
VALUE ← DEFAULT)
(create POINT2
TIME ← TMAX
VALUE ← DEFAULT))))))
(* Start trajectory at T=0. *)
(PVECTOR.PUT SEGMENT PNAME TRAJ))))
)
(RPAQQ NSOUNDS (SPEECH.FFf SPEECH.FFb SPEECH.VVf SPEECH.VVb SPEECH.THf SPEECH.THb SPEECH.DHf
SPEECH.DHb SPEECH.SSf SPEECH.SSbu SPEECH.SSr SPEECH.ZZf SPEECH.ZZbu
SPEECH.ZZb SPEECH.SHf SPEECH.SHbu SPEECH.CHbu SPEECH.SHr SPEECH.CHf
SPEECH.CHr SPEECH.JHf SPEECH.JHbu SPEECH.JHr SPEECH.PPf SPEECH.PPb
SPEECH.BBf SPEECH.BBb SPEECH.TTf SPEECH.TTbu SPEECH.TTr SPEECH.DDf
SPEECH.DDbu SPEECH.DDr SPEECH.KKf SPEECH.KKbu SPEECH.KKr SPEECH.GGf
SPEECH.GGbu SPEECH.GGr SPEECH.MMf SPEECH.MMb SPEECH.NNf SPEECH.NNbu
SPEECH.NNr SPEECH.WW SPEECH.YY SPEECH.RR SPEECH.LL SPEECH.HH SPEECH.SI
SPEECH.TTnw SPEECH.TTw))
(RPAQQ SOUNDS (SPEECH.IY SPEECH.IH SPEECH.EY SPEECH.EH SPEECH.AE SPEECH.AY SPEECH.AA SPEECH.AW
SPEECH.AH SPEECH.AO SPEECH.OW SPEECH.OY SPEECH.UH SPEECH.UW SPEECH.ER
SPEECH.YU SPEECH.FFf SPEECH.FFb SPEECH.VVf SPEECH.VVb SPEECH.THf SPEECH.THb
SPEECH.DHf SPEECH.DHb SPEECH.SSf SPEECH.SSbu SPEECH.SSr SPEECH.ZZf
SPEECH.ZZbu SPEECH.ZZb SPEECH.SHf SPEECH.SHbu SPEECH.CHbu SPEECH.SHr
SPEECH.CHf SPEECH.CHr SPEECH.JHf SPEECH.JHbu SPEECH.JHr SPEECH.PPf
SPEECH.PPb SPEECH.BBf SPEECH.BBb SPEECH.TTf SPEECH.TTbu SPEECH.TTr
SPEECH.DDf SPEECH.DDbu SPEECH.DDr SPEECH.KKf SPEECH.KKbu SPEECH.KKr
SPEECH.GGf SPEECH.GGbu SPEECH.GGr SPEECH.MMf SPEECH.MMb SPEECH.NNf
SPEECH.NNbu SPEECH.NNr SPEECH.WW SPEECH.YY SPEECH.RR SPEECH.LL SPEECH.HH
SPEECH.SI SPEECH.TTnw SPEECH.TTw))
(RPAQQ VCOMMENTS ((IY (* as in "beet" (+front)
*))
(IH (* as in "bit" (+front)
*))
(EY (* as in "bait" (+front)
*))
(EH (* as in "bet" (+front)
*))
(AE (* as in "bat" (+front)
*))
(AY (* as in "bite" (+back -round)
*))
(AA (* as in "Bob" (+back -round)
*))
(AW (* as in "bout" (+back -round)
*))
(AH (* as in "but" (+front -round)
*))
(AO (* as in "bought" (+round)
*))
(OW (* as in "boat" (+round)
*))
(OY (* as in "boy" (+round)
*))
(UH (* as in "book" (+round)
*))
(UW (* as in "boot" (+round)
*))
(ER (* as in "Bert" (+round)
*))
(YU (* as in "pew" (+front)
*))))
(SYNTH.INIT)
(PUTPROPS SYNTH.FPKG COPYRIGHT ("Xerox Corporation" 1984))
(DECLARE: DONTCOPY
(FILEMAP (NIL (2023 13437 (CREATE.SLICES 2033 . 2242) (CREATE.SLICES1 2244 . 2565) (FIND.PVECTOR.NAME
2567 . 2865) (PVECTOR.DEFAULT.SPEC 2867 . 3950) (PVECTOR.GET 3952 . 6034) (PVECTOR.PUT 6036 . 8839) (
SYNTH.TMIN 8841 . 9274) (SYNTH.TMAX 9276 . 9717) (SYNTH.INIT 9719 . 10529) (SYNTH.SLIST 10531 . 12170)
(SYNTH.SLIST1 12172 . 13435)))))
STOP