| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726 | 
							- // PB General rules for vowels:
 - // Short vowels
 - // ACC: Short "pille" [p?el@-], "andre" [AndRV]
 - // AC[V]: Short "piler" [p?ilV] - verbs, not nouns, which is a problem
 - // A[N]: Short "bange" [b?AN@-]
 - // Long vowels
 - // A + @- OR V: Long "ae" "aer" [&:@-]
 - // AC + @- OR V: Long "pile" [pi:l@-]
 - // AC[i]: Long "smidig" [smi:Di]
 - 
 - // Change the length of SHORT vowels (?+vowel)
 - procedure ShortVowelLength
 - // "endelig", "ånder" - Short initial vowel sounds too short TEST
 - 	IF thisPh(isWordStart) AND nextPhW(n) THEN
 - 		IF next2PhW(@-) OR next2PhW(V) THEN
 - 			length 160
 - 			RETURN
 - 		ENDIF
 - 	ENDIF
 - // "slutte" t/d + @- makes the vowel too long
 - // Problem with compounds like "spildedamp"
 - 	IF next2PhW(@-) OR next2PhW(V) THEN
 - 		IF nextPhW(t) OR nextPhW(d) THEN
 - //	length 100
 - 			LengthAdd -45
 - 	  // Don't shorten it further if it comes after an "r" sound
 - 	  // Exit the procedure
 - 			RETURN
 - 		ENDIF
 - 	ENDIF
 - // "bygget", "byggede" - consonant + [@-D] makes the vowel too long
 - 	IF next2PhW(@-) THEN
 - 		IF next3PhW(t) OR next3PhW(d) OR next3PhW(D) THEN
 - 			IF thisPh(isFirstVowel) THEN // NOT "cellof'anet"
 - 				IF NOT thisPh(?V) THEN // NOT "fjollet"
 - 					LengthAdd -40
 - 	    // Don't shorten it further if it comes after an "r" sound ("brygget")
 - 	    // Exit the procedure
 - 					RETURN
 - 				ENDIF
 - 			ENDIF
 - 		ENDIF
 - 	ENDIF
 - // "bygger" - consonant + [V] makes the vowel too long
 - 	IF nextPhW(isNotVowel) AND next2PhW(V) THEN
 - 		IF NOT thisPh(isWordStart) THEN // NOT "eller"
 - //	  LengthAdd -45
 - 	  // Don't shorten it further if it comes after an "r" sound ("brygger")
 - 	  // Exit the procedure
 - 			RETURN
 - 		ENDIF
 - 	ENDIF
 - // "rigtigt", "fred", "frem", "centralen" - R makes the vowel too long
 - 	IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
 - //     length 100
 - 		LengthAdd -40
 - 		RETURN
 - 	ENDIF
 - // "ring", "ringe", "fængsel", "spinkel", "vindspejl"
 - 	IF nextPhW(isNasal) THEN
 - //    length 100
 - 		LengthAdd -30
 - 		RETURN
 - 	ENDIF
 - // "sigte", "bælte", "henter" t/d + @-/V makes the vowel too long
 - 	IF nextPhW(isNotVowel) AND next2PhW(t) OR next2PhW(d) THEN
 - 		IF next3PhW(@-) OR next3PhW(V) THEN
 - 			IF thisPh(isFirstVowel) THEN // NOT [i] in "forsp'ildte"
 - //		length 100
 - 				LengthAdd -30
 - 			ENDIF
 - 		ENDIF	
 - 	ENDIF
 - // "forbandelse" [n@-] makes the vowel too long?
 - // nasal eg:   m, n, N
 - 	IF nextPhW(isNasal) AND next2PhW(@-) THEN
 - 		IF NOT thisPh(isFirstVowel) AND thisPh(isStressed) THEN
 - 	// NOT LengthAdd since [R] might have shortend the vowel above
 - 			length 100
 - 		ENDIF	
 - 	ENDIF
 - // "himlen" l/3 makes the vowel too long
 - 	IF nextPhW(isNotVowel) AND next2PhW(l/3) AND next3PhW(@-) OR next3PhW(V) THEN
 - 		length 100
 - 	ENDIF
 - // "lænkerne" l/3 makes the vowel too long
 - 	IF prevPh(l/3) AND nextPhW(isNotVowel) AND next3PhW(V) THEN
 - 		length 120
 - 	ENDIF
 - //"musikken" consonant + [@-n] makes the vowel too long
 - //  Probably wrong. Only k?
 - 	IF nextPhW(k) AND next2PhW(@-) AND next3PhW(n) THEN
 - 		length 100
 - 	ENDIF
 - //"svælge" [svElj@-] vowel + 2 consonants but length 100 is too short
 - 	IF nextPhW(isNotVowel) AND next2PhW(j) THEN
 - 		length 140
 - 	ENDIF
 - endprocedure
 - 
 - // Change the length of NORMAL vowels (without ? in front of them)
 - procedure LongVowelLength
 - // "guldmine" [ul/3] makes the vowel extremely short
 - 	IF prevVowel(u) AND prev2PhW(l/3) THEN
 - 		length 350
 - 		RETURN
 - 	ENDIF
 - // "guldur" [ul/3] makes the vowel extremely short
 - 	IF prevVowel(u) AND prevPhW(l/3) THEN
 - 		IF NOT thisPh(isWordEnd) THEN // NOT "umulig"
 - 			length 325
 - 			RETURN
 - 		ENDIF
 - 	ENDIF
 - // "alene" - Short initial vowel sounds too short at length 140
 - 	IF thisPh(isWordStart) THEN
 - 		length 160
 - // "ønske" The vowel should have been made short becauce og 2 x consonant.
 - // Take care of it here
 - 		IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND next3PhW(isNotVowel) THEN
 - 			length 140
 - 		ENDIF
 - // "ære"
 - 		IF nextPhW(V) AND nextPhW(isFinalVowel) THEN
 - 			length 240
 - 		ENDIF
 - 		RETURN
 - 	ENDIF
 - // "huske" - hACC@- vowel too long
 - 	IF prevPhW(h) AND nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND next3PhW(@-) THEN
 - 		length 110
 - 		RETURN
 - 	ENDIF
 - // PB long vowel followed by [@-] or [V](vowel+vowel) - "pigen" [p'i@-n]
 - 	IF nextPhW(@-) OR nextPhW(V) THEN
 - 		length 225
 - 	ENDIF
 - // PB "enig", "enige", "evig", "stædig" - vowel+consolant+[i]
 - 	IF nextPhW(isNotVowel) AND next2PhW(i) THEN
 - 		length 225
 - 	ENDIF
 - // "dele", "mene", "møve"
 - 	IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(3) OR next3PhW(@-) THEN
 - 		length 225
 - 	ENDIF
 - // "sveder", "deler"
 - 	IF nextPhW(isNotVowel) AND next2PhW(V) THEN
 - 		length 225
 - 	ENDIF
 - // "maskinen" consonant + [@-n]: vowel too long
 - 	IF nextPhW(isNotVowel) AND next2PhW(@-) AND next3PhW(n) THEN
 - 		length 160
 - 	ENDIF
 - // "vilje", "nedladende" [n'eDl&D@-n@-], "delte" - short followed by 2 consonants
 - 	IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
 -   // Don't make "møve" [m'Ww_!@-_!] short
 - 		IF NOT next2PhW(_!) THEN
 - 			length 140
 - 		ENDIF
 - 	ENDIF
 - // "bryde", "bryder", "strålen", "henrivende" R makes the vowel too long
 - 	IF prevPhW(R) OR prevPhW(3-) OR prevPhW(r) THEN
 - 		IF NOT thisPh(V) AND next2PhW(@-) OR next2PhW(V) THEN
 - 			length 140
 - 		ENDIF
 - 	ENDIF
 - // "føden"
 - 	IF nextPhW(D) AND next2PhW(@-) AND next3PhW(n) THEN
 - 		length 180
 - 	ENDIF
 - // "glimrende", "glemte" [l/3] makes the following vowel too long
 - // LengthAdd doesn't work here. The length could be 225 or 140 - 30
 - 	IF prev2PhW(g) AND prevPhW(l/3) AND nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
 - 		length 110
 - 		RETURN
 - 	ENDIF
 - // l/3 makes the vowel too long (+ voiced?)
 - // isVoiced =  b, d, g, v, z
 - 	IF prevPhW(l/3) AND nextPhW(isVoiced) THEN
 -    // "klub", "klud"
 -    // The vowel should have been short but we fix it here 
 - 		IF NOT next2PhW(@-) AND NOT next2PhW(V) THEN
 - 			length 100
 - 		ELSE
 - 	// "slæde", "lader"
 - 			length 160
 - 		ENDIF
 - 	ENDIF
 - // "længe" - short - 2 consonants => 1 consonant (ng => [N])
 - 	IF nextPhW(isNasal) THEN
 - 		IF NOT prevPhW(R) AND NOT prevPhW(r) AND NOT prevPhW(3-) THEN
 - 			length 140
 - 	// "omkring", "ring" - both prev. N and next R
 - 		ELIF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) THEN
 - 			length 110
 - 		ENDIF
 - 	ENDIF
 - // "buskene", "krøbling" The vowel should have been made short becauce og 2 x consonant.
 - // Take care of it here
 - 	IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN
 - 		IF NOT nextPhW(l/3) THEN
 - 			IF NOT nextPhW(r) AND NOT prevPhW(R) AND NOT prevPhW(3-) THEN // NOT "Maria"
 - 				length 110
 - 			ENDIF
 - 		ENDIF
 - 	ENDIF
 - // "barnet" - consonant + [@-D]: too long vowel
 - 	IF nextPhW(isNotVowel) AND next2PhW(@-) AND next3PhW(D) THEN
 - 		length 160
 - 	ENDIF
 - // "trin", "trit", "ring" - vowel too long
 - //	IF prevPhW(isRhotic) THEN
 - 	IF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) THEN
 - 		IF nextPhW(isNotVowel) AND nextPhW(isWordEnd) THEN
 - 			length 110
 - 		ENDIF
 - 	ENDIF
 - endprocedure
 - 
 - // A bit longer than [@-]
 - phoneme @
 -   vowel starttype #@ endtype #@
 -   unstressed
 -   length 60
 -   FMT(vowel/@_3)
 - endphoneme
 - 
 - phoneme @-   //  very short schwa
 -   vowel starttype #@  endtype #@
 -   unstressed nonsyllabic
 -   ipa ə
 -   IF nextPhW(*) OR nextPhW(r) THEN
 -     ipa NULL   // @-* is used to make 'r'
 -   ENDIF
 -   length 50
 - // "femten", "manden" - only a short "n" sound
 -   IF nextPhW(n) THEN
 - 	length 15
 -   ENDIF
 - IF prevPhW(isNotVowel) AND thisPh(isWordEnd) THEN
 - 	length 15
 - ENDIF
 - // "lige" [li@-]
 - IF prevPhW(i) AND thisPh(isWordEnd) THEN
 - 	length 15
 - ENDIF
 -   FMT(vowel/@-)
 - endphoneme
 - 
 - // ToDo: change [@] to [a#] if adjacent to [r] or [R]
 - phoneme 3
 -   vowel starttype #a endtype #a
 -   unstressed
 -   length 40
 -   FMT(vowel/a#_3)
 - endphoneme
 - 
 - // PB sort of schwa [ɐ] (0250+032F)
 - // "spurgt" [sp'o3-d] – ipa [spˈoɐ̯d]
 - phoneme 3-    // used for 'r' after a vowel (to create a diphthong)
 -   liquid
 -   lengthmod 7
 -   ipa ɐ̯
 -     FMT(r/a_)
 - endphoneme
 - 
 - phoneme i
 -   vowel starttype #i endtype #i
 -   length 140
 - CALL LongVowelLength
 -   FMT(vowel/i_4)
 - endphoneme
 - 
 - // PB short i
 - // sviret vs. svirret
 - phoneme ?i
 -   vowel starttype #i endtype #i
 -   length 140
 -   CALL ShortVowelLength
 -   IfNextVowelAppend(;)
 -   FMT(vowel/i_4)
 - endphoneme
 - 
 - // PB English i - Tim
 - phoneme I
 -   vowel  starttype #i  endtype #i
 -   length 130
 -   IfNextVowelAppend(;)
 -   FMT(vowel/ii_2)
 - endphoneme
 - 
 - phoneme e
 -   vowel starttype #e endtype #e
 -   length 140 
 -   CALL LongVowelLength
 - //  CALL ShortVowelLength
 -   FMT(vowel/e)
 - endphoneme
 - 
 - // PB short e
 - // "skille" vs. "skele", "pille" vs. "pile"
 - phoneme ?e
 -   vowel starttype #e endtype #e
 -   length 140
 -   CALL ShortVowelLength
 -   FMT(vowel/e)
 - endphoneme
 - 
 - phoneme E
 -   vowel starttype #e endtype #e
 -   length 140 
 - // no link with next vowel
 - IF thisPh(isWordEnd) THEN
 -   IfNextVowelAppend(_!)
 - ENDIF
 - // "ære", "kærester", "ærefrygt" - vowel + vowel
 - IF nextPhW(V) THEN
 - 	length 225
 - ENDIF
 - // "dræber" TEST shortened by -70 in procedure because of the "r" sound
 - IF prevPhW(R) OR prevPhW(r) OR prevPhW(3-) AND next2PhW(V) THEN
 - 	length 225
 - ENDIF
 -   CALL LongVowelLength
 - // "værelse"  [v'E3-Vls@_!]
 - IF nextPhW(3-) AND next2PhW(V) THEN
 - 	length 100
 - ENDIF
 -   FMT(vowel/e_mid2)
 - endphoneme
 - 
 - // PB short E
 - // "læsse" vs. "læse"
 - phoneme ?E
 -   vowel starttype #e endtype #e
 -   ipa ε
 -   length 140
 -   CALL ShortVowelLength
 -   FMT(vowel/e_mid2)
 - endphoneme
 - 
 - phoneme &
 -   vowel starttype #e endtype #e
 -   ipa a
 -   length 140
 - // "same", "sale", "bade" - consonant + @-: long
 - // but NOT "hinanden"
 - IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(@) THEN
 -   IF NOT next3PhW(n) THEN
 -   	length 225
 -   ENDIF
 - ENDIF
 - // ThisPh + V or @-
 - // "ae", "aer" vowel + vowel: extra length
 - IF nextPhW(@-) OR nextPhW(V) THEN
 - 	length 260
 - ENDIF
 - CALL LongVowelLength
 -   FMT(vowel/ee_2)
 - endphoneme
 - 
 - // Short &
 - // e.g. the last a in "staldkarl"
 - // "sale" vs. "sal"
 - phoneme ?&
 - ipa a
 -   vowel starttype #e endtype #e
 -    length 140
 -    CALL ShortVowelLength
 -    FMT(vowel/ee_2)
 - endphoneme
 - 
 - // Added for the æ in "dræbt"
 - phoneme &#
 -   vowel starttype  #e endtype #e
 -     length 140
 - 	ipa a
 - 	CALL LongVowelLength
 - //	CALL ShortVowelLength
 - 	FMT(vowel/&)
 - endphoneme
 - 
 - // PB short &#
 - // "revl" vs. "tremme"
 - phoneme ?&#
 -   vowel starttype  #e endtype #e
 -   ipa ?a
 -     length 140
 - 	CALL ShortVowelLength
 - 		FMT(vowel/&)
 - endphoneme
 - 
 - phoneme A // PB changed to a_8
 -   vowel starttype #a endtype #a
 -   length 140 
 - CALL LongVowelLength
 - // "fare" [f'A:A]
 - IF nextPhW(A) THEN
 - 	length 225
 - ENDIF
 -   FMT(vowel/a_8)
 - endphoneme
 - 
 - // PB short A
 - // "krabbe" vs. "drabelig"
 - phoneme ?A
 -   vowel starttype #a endtype #a
 -   length 140
 - CALL ShortVowelLength
 -   FMT(vowel/a_8)
 - endphoneme
 - 
 - phoneme u
 -   vowel starttype #u endtype #u
 -   length 140 
 - // "suge", "uge", "bluse", "julegave"
 - IF nextPhW(@-) OR nextPhW(V) OR next2PhW(@-) OR next2PhW(V)THEN
 - 	length 225
 - ENDIF
 - CALL LongVowelLength
 -   FMT(vowel/u_bck)
 - endphoneme
 - 
 - // Short u
 - // "tude" vs. "tuden" - [tuD3] [t?uD@n]
 - phoneme ?u
 -   vowel starttype #u endtype #u
 -   length 140
 -   CALL ShortVowelLength
 -   FMT(vowel/u_bck)
 - endphoneme
 - 
 - phoneme o
 -   vowel starttype #o endtype #o
 -   length 140 
 - // "bore", "borer" [boV] o + V
 - IF nextPhW(V) OR nextPhW(@-) THEN
 - 	length 225
 - ENDIF
 - // "kone", "koner" o + consonant + V or @-
 - IF next2PhW(V) OR next2PhW(@-) THEN
 - 	length 225
 - ENDIF
 - CALL LongVowelLength
 -   FMT(vowel/o_2)
 - endphoneme
 - 
 - // PB Short o
 - // "patron" vs. "kone"
 - phoneme ?o
 -   vowel starttype #o endtype #o
 -   length 140
 -   FMT(vowel/o_2)
 - endphoneme
 - 
 - phoneme O
 -   vowel starttype #o endtype #o
 -   length 140
 -   ipa ɒ // changed from ɔ - Den Danske Ordbog: ɒ
 - // "sove", "sover" - consonant + @ or V: long
 - IF next2PhW(@-) OR next2PhW(V) THEN
 - //	length 225
 - ENDIF
 - // PB "gået" - ThisPh + V or @-
 - IF nextPhW(V) OR nextPhW(@-) THEN
 - //	length 225
 - ENDIF
 - // "såre", "sårede"  [s'O:?OD@-]
 - IF nextPhW(O) OR nextPhW(?O) THEN
 - 	length 225
 - ENDIF
 - CALL LongVowelLength
 -   FMT(vowel/o_5)
 - endphoneme
 - 
 - // Short O
 - // "toget" vs. "tåget"
 - phoneme ?O
 -   vowel starttype #o endtype #o
 -   length 140
 -   CALL ShortVowelLength 
 -   FMT(vowel/o_5)
 - endphoneme
 - 
 - phoneme V
 -   vowel starttype #@ endtype #@
 -   length 140
 - CALL LongVowelLength
 -   FMT(vowel/V_4)
 - endphoneme
 - 
 - // PB Short V
 - // "forstår" vs. "kåre"
 - phoneme ?V
 -   vowel starttype #@ endtype #@
 -   length 140
 -   CALL ShortVowelLength
 -   FMT(vowel/V_4)
 - endphoneme
 - 
 - phoneme 0
 -   vowel starttype #o endtype #o
 -   length 140 
 -   ipa ɔ
 -   FMT(vowel/oo_2)
 - endphoneme
 - 
 - // Short 0 "sukker", "provst"
 - phoneme ?0
 -   vowel starttype #o endtype #o
 -   length 140
 -   ipa ɔ
 -   CALL ShortVowelLength
 -   FMT(vowel/oo_2)
 - endphoneme
 - 
 - phoneme y
 -   vowel starttype #i endtype #i
 -   length 140
 -   CALL LongVowelLength
 -   FMT(vowel/y)
 - endphoneme
 - 
 - // PB Short y
 - // "kylling" vs. "kyle", "krybbe" vs. "krybe"
 - phoneme ?y
 -   vowel starttype #i endtype #i
 -   length 140
 -   CALL ShortVowelLength
 -   FMT(vowel/y)
 - endphoneme
 - 
 - phoneme Y
 -   vowel starttype #i endtype #i
 -   length 140
 - IF nextPhW(V) OR nextPhW(@-) THEN
 - 	length 225
 - ENDIF
 -   FMT(vowel/yy)
 - endphoneme
 - 
 - phoneme W
 -   vowel starttype #@ endtype #@
 -   length 140 
 -   CALL LongVowelLength
 -   FMT(vowel/oe)
 - endphoneme
 - 
 - // Short W
 - // "prøv" vs. "prøve"
 - phoneme ?W
 -   vowel starttype #@ endtype #@
 -   length 140
 -   CALL ShortVowelLength
 -   FMT(vowel/oe)
 - endphoneme
 - 
 - // Added for the ø in "røv", "røg", "øje" instead of [V3]
 - phoneme W#
 -   vowel starttype #@ endtype #@
 -   length 140
 - CALL LongVowelLength
 -   FMT(vowel/V)
 - endphoneme
 - 
 - // Short W#
 - // "rømme"
 - phoneme ?W#
 -   vowel starttype #@ endtype #@
 -   length 140
 -   CALL ShortVowelLength
 -   FMT(vowel/V)
 - endphoneme
 - 
 - phoneme aI
 -   vowel starttype #a endtype #i
 -   length 300
 - IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN
 -    glstop
 -    length 225
 - ENDIF
 - // "dreje" [dR'aI@-_!]
 - IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN
 - 	length 280
 - ENDIF
 - // PB "drej" vs. "dreje"
 - IF thisPh(isWordEnd) THEN
 - 	length 140
 - ENDIF
 - // "lejde" [l'aId@-_!], "lejder" [l'aIdV_!]
 - IF nextPhW(isNotVowel) AND next2PhW(@-) OR next2PhW(V) THEN
 - 	length 190
 - ENDIF
 -   FMT(vdiph/ai)
 - endphoneme
 - 
 - 
 - // CONSONANTS
 - 
 - // PB added l/3
 - phoneme l
 -   liquid
 -   lengthmod 7
 - // [ll] => [-l] - avoid double l
 - IF nextPhW(l) THEN
 - //    ChangePhoneme(NULL)
 - ENDIF
 -   ChangePhoneme(l/3)
 - //  CALL base/l
 - endphoneme
 - 
 - phoneme l/3    // Replacement for [l/]
 -   liquid
 -   lengthmod 7
 -   FMT(l/l_)
 - endphoneme
 - 
 - phoneme v        // approximant, not fricative
 -   import_phoneme base/v#
 -   voicingswitch f
 - endphoneme
 - 
 - // PB Actually a kind of schwa = [ɐ]? - "byder" [bˈyðɐʌ]
 - phoneme r    // used for 'r' after a vowel (to create a diphthong)
 -   liquid
 -   lengthmod 7
 -   ipa ɐ̯
 -   IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) AND NOT nextPhW(@-) THEN
 -     ChangePhoneme(R)
 -   ENDIF
 - // "generer" [Sen'e:Vr], "mysterier" - delete the r
 -   IF prevPhW(V) AND thisPh(isWordEnd) THEN
 - 	ChangePhoneme(NULL)
 -   ENDIF
 -   FMT(r/a_)
 - endphoneme
 - 
 - phoneme R
 -   lengthmod 6
 -   liquid
 -   ipa ʁ
 -   FMT(r/aa)
 - endphoneme
 - 
 - // don't weaken consonants at end of word or before a stop
 - 
 - phoneme s
 -   vls alv frc sibilant
 -   voicingswitch z
 -   lengthmod 3
 -   Vowelin  f1=0  f2=1700 -300 300  f3=-100 80
 -   Vowelout f1=0  f2=1700 -300 250  f3=-100 80  rms=20
 - 
 -   IF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
 -     WAV(ufric/s!)
 -   ENDIF
 -   WAV(ufric/s)
 - endphoneme
 - 
 - phoneme p
 -   vls blb stop
 -   voicingswitch b
 -   lengthmod 7
 -   Vowelin  f1=0  f2=1000 -50 -100  f3=-200 80 amp=11
 -   Vowelout f1=0  f2=1000 -500 -350  f3=-300 80 rms=22
 - 
 -   IF nextPh(isPause2) THEN
 -     WAV(ustop/p_unasp)
 -   ELIF nextPh(r) THEN
 -     WAV(ustop/pr, 70)
 -   ELIF nextPh(R) OR nextPh(R2) THEN
 -     WAV(ustop/pr)
 -   ELIF nextPh(@-) THEN
 -     WAV(ustop/p_unasp)
 -   ELIF nextPh(l) THEN
 -     WAV(ustop/pl)
 -   ENDIF
 -   WAV(ustop/p)
 - endphoneme
 - 
 - phoneme t
 -   vls alv stop
 -   voicingswitch d
 -   lengthmod 7
 -   Vowelin f1=0  f2=1700 -300 300  f3=-100 80
 -   Vowelout f1=0 f2=1700 -300 250  f3=-100 80  rms=20
 - 
 -   IF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
 -     WAV(ustop/tr)
 -   ENDIF
 - // "respekt"  [REsp'Egd]
 -   IF thisPh(isWordEnd) THEN
 - //	ChangePhoneme(d)
 -   ENDIF
 -   WAV(ustop/t, 90)
 - endphoneme
 - 
 - phoneme j
 -   liquid palatal
 -   lengthmod 7
 - // no link with next vowel
 - IF thisPh(isWordEnd) THEN
 -   IfNextVowelAppend(_!)
 - ENDIF
 -   IF nextPhW(isVowel) THEN
 -     NextVowelStarts
 -       VowelStart(j/j@,-45) // jøderne
 -       VowelStart(j/ja)
 -       VowelStart(j/je,-35)
 -       VowelStart(j/ji)
 -       VowelStart(j/jo,-65) // "kjole"
 -       VowelStart(j/ju)
 -     EndSwitch
 - Vowelout len=70
 -     VowelEnding(j/xj, -30)
 - 
 -     IF prevPh(isPause) THEN
 -       FMT(j/_j)
 -     ENDIF
 -   ELSE
 -     // no vowel follows
 -     Vowelout len=70
 -     FMT(j/j_)
 -   ENDIF
 - endphoneme
 
 
  |