(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