| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651 | 
							- 
 - phoneme t2   // [t] which doesn't reduce
 -   vcd alv stp
 -   ChangePhoneme(t)
 - endphoneme
 - 
 - 
 - phoneme t#    // reduced [t] as in "city" in en-us
 -   vcd alv stp
 -   ChangePhoneme(t)
 - endphoneme
 - 
 - 
 - phoneme d#    // change to [d] or [t] depending on whether previous phoneme is voiced
 -   vls alv stp
 -   IF prevPh(isVoiced) THEN
 -     ChangePhoneme(d)
 -   ELSE
 -     ChangePhoneme(t)
 -   ENDIF
 - endphoneme
 - 
 - 
 - phoneme z#    // change to [z] or [s] depending on whether previous phoneme is voiced
 -   vls alv frc sib
 -   IF prevPh(isVoiced) THEN
 -     ChangePhoneme(z)
 -   ELSE
 -     ChangePhoneme(s)
 -   ENDIF
 - endphoneme
 - 
 - 
 - 
 - phoneme l      // use dark [l/2] before not-vowel
 -   liquid
 -   lengthmod 7
 - 
 -   IF NOT nextPhW(isVowel) THEN
 -     IF prevPh(isVowel) OR prevPh(j) OR prevPh(w) THEN
 -       ChangePhoneme(l/2)
 -     ELSE
 -       ChangePhoneme(l/)
 -     ENDIF
 -   ENDIF
 - 
 -   CALL base1/l
 - endphoneme
 - 
 - 
 - phoneme r-   // linking r, used in English between certain vowels and a following vowel
 -   liquid rhotic
 -   ipa ɹ
 -   
 -   IF NOT thisPh(isWordEnd) AND NOT prevPh(@) AND NOT prevPh(3) THEN
 -     ChangePhoneme(r)
 -   ENDIF
 -   
 -   lengthmod 0
 - 
 -   NextVowelStarts
 -     VowelStart(r2/r2@)
 -     VowelStart(r2/r2a)
 -     VowelStart(r2/r2e)
 -     VowelStart(r2/r2i)
 -     VowelStart(r2/r2o)
 -     VowelStart(r2/r2u)
 -   EndSwitch
 - 
 -   IF prevPh(isVowel) THEN
 -     VowelEnding(r/xr, -60)
 -   ENDIF
 - 
 -   FMT(r/r)
 - endphoneme
 - 
 - 
 - phoneme z/2    // used for 's suffix
 -   vcd alv frc sib
 -   lengthmod 6
 -   IF prevPh(isSibilant) THEN
 -     InsertPhoneme(I2)
 -   ENDIF
 - 
 -   IF NOT prevPh(isVoiced) THEN
 -     ChangePhoneme(s)
 -   ENDIF
 -   ChangePhoneme(z)
 - endphoneme
 - 
 - 
 - phoneme w#
 -   vls glt apr  // [h]
 -   ipa ʍ
 -   
 -   IF nextPh(isVowel) THEN
 -     NextVowelStarts
 -       VowelStart(w/w@)
 -       VowelStart(w/wa)
 -       VowelStart(w/we)
 -       VowelStart(w/wi)
 -       VowelStart(w/wo)
 -       VowelStart(w/wu)
 -     EndSwitch
 -   ENDIF
 - 
 -   WAV(h/hu, 70)
 - endphoneme
 - 
 - 
 - phoneme n
 -   vcd alv nas
 -   ipa n
 -   IF nextPh(isVelar) THEN // /n/ is velarized to /N/ when before velar stops
 -     ChangePhoneme(N)
 -   ENDIF
 -   CALL base1/n
 - endphoneme
 - 
 - 
 - //*******************************************************************
 - // VOWELS
 - //*******************************************************************
 - 
 - phoneme @
 -   vwl   starttype #@  endtype #@
 -   unstressed
 -   length 140
 -   IfNextVowelAppend(r-)
 -   IF thisPh(isWordEnd) THEN
 -     FMT(vowel/@_6, 90)
 -   ENDIF
 -   FMT(vowel/@)
 - endphoneme
 - 
 - 
 - phoneme 3
 -   CALL @
 -   ipa ə
 - endphoneme
 - 
 - 
 - phoneme @2   //  Schwa, changes to I before a vowel. th**e**, used only for "the".
 -   vwl  starttype #@  endtype #@
 -   unstressed
 -   length 120
 -   IF nextPh(isVowel) THEN
 -     ChangePhoneme(I2)
 -   ENDIF
 -   ChangePhoneme(@)
 - endphoneme
 - 
 - 
 - phoneme @5   //  Schwa, changes to U before a vowel. t**o**, used only for "to".
 -   vwl  starttype #@  endtype #@
 -   unstressed
 -   length 140
 -   IF nextPh(isVowel) OR nextPh(isPause) THEN
 -     ChangePhoneme(U)
 -   ENDIF
 -   ChangePhoneme(@)
 - endphoneme
 - 
 - 
 - phoneme @L // simp**le**
 -   vwl  starttype #@  endtype l
 -   ipa ə|l
 -   unstressed
 -   length 160
 -   CALL vowelstart_l
 -   FMT(vwl_en/@L)
 - endphoneme
 - 
 - 
 - phoneme a
 -   vwl  starttype #a  endtype #a
 -   length 160
 -   ChangeIfDiminished(a#)
 -   IF thisPh(isUnstressed) THEN
 -     FMT(vowel/a_8)
 -   ENDIF
 -   FMT(vowel/a)
 - endphoneme
 - 
 - 
 - phoneme a2  // don't reduce to a#
 -   vwl
 -   ChangePhoneme(a)
 - endphoneme
 - 
 - 
 - phoneme a# // **a**bout. This may be \[@\] or may be a more open schwa.
 -   vwl  starttype #@  endtype #@
 -   ipa ɐ
 -   unstressed
 -   length 150
 -   
 -   IF NOT thisPh(isUnstressed) THEN
 -     ChangePhoneme(a)          // syllable has an explicit stress
 -   ENDIF
 - 
 -   FMT(vowel/a#_3)
 - endphoneme
 - 
 - 
 - phoneme aa
 -   vwl  starttype #a  endtype #a
 -   ipa a
 -   length 200
 -   
 -   IF MbrolaSynth THEN
 -     ChangePhoneme(A:)
 -   ENDIF
 - 
 -   IfNextVowelAppend(r-)
 -   FMT(vowel/a_6, 88)
 - endphoneme
 - 
 - 
 - phoneme E
 -   vwl  starttype #e  endtype #e
 -   length 140
 -   IF nextPhW(n) THEN
 -     ChangeIfDiminished(@)
 -   ELSE
 -     ChangeIfDiminished(I2)
 -   ENDIF
 -   FMT(vowel/ee_5)
 - endphoneme
 - 
 - 
 - phoneme E#    // [@] in unstressed syllables, if next vowel is stressed
 -   vwl  starttype #e  endtype #e
 - 
 -   IF thisPh(isUnstressed) AND nextVowel(isVowel) AND nextVowel(isStressed) THEN
 -     ChangePhoneme(@)
 -   ENDIF
 - 
 -   ChangePhoneme(E)
 - endphoneme
 - 
 - 
 - phoneme E2  // does not reduce in unstressed syllables
 -   vwl  starttype #e  endtype #e
 -   length 140
 -   ChangePhoneme(E)  // a second change ([E]  to [I2]) won't happen
 - endphoneme
 - 
 - 
 - 
 - phoneme I
 -   vwl  starttype #i  endtype #i
 -   length 130
 -   IfNextVowelAppend(;)
 -   FMT(vowel/ii_2)
 - endphoneme
 - 
 - 
 - phoneme I2 // **i**ntend. As \[I\], but also indicates an unstressed syllable.
 -   vwl  starttype #i  endtype #i
 -   unstressed
 -   length 130
 -   
 -   IF MbrolaSynth THEN
 -     ChangePhoneme(I)
 -   ENDIF
 - 
 -   IfNextVowelAppend(;)
 -   
 -   IF thisPh(isAfterStress) AND thisPh(isFinalVowel) THEN
 -     FMT(vowel/ii#_3)
 -   ENDIF
 -   FMT(vowel/ii_4)
 - endphoneme
 - 
 - 
 - phoneme I#   // used for [I] which may be [@] in some accents
 -   vwl  starttype #i  endtype #i
 -   unstressed
 -   length 130
 -   
 -   IF MbrolaSynth THEN
 -     ChangePhoneme(I)
 -   ENDIF
 - 
 -   IfNextVowelAppend(;)
 -   ChangePhoneme(I2)
 - endphoneme
 - 
 - 
 - phoneme i
 -   vwl  starttype #i  endtype #i
 -   unstressed
 -   ipa i
 -   length 150
 -   IfNextVowelAppend(;)
 -   
 - //  IF NOT thisPh(isFinalVowel) THEN
 - //    ChangePhoneme(I)
 - //  ENDIF
 -   
 -   FMT(vowel/ii_7)
 - endphoneme
 - 
 - 
 - phoneme 0
 -   vwl  starttype #o  endtype #o
 -   length 140
 -   ChangeIfDiminished(@)
 -   FMT(vowel/0)
 - endphoneme
 - 
 - 
 - phoneme 0#    // [@] in unstressed syllables
 -   vwl  starttype #o  endtype #o
 - 
 -   IF thisPh(isUnstressed) AND nextVowel(isVowel) AND NOT nextVowel(isUnstressed) THEN
 -     ChangePhoneme(@)
 -   ENDIF
 - 
 -   ChangePhoneme(0)
 - endphoneme
 - 
 - 
 - phoneme 02   // becomes V in en-us
 -   vwl  starttype #o  endtype #o
 -   length 140
 -   ChangePhoneme(0)
 - endphoneme
 - 
 - 
 - phoneme O2
 -   vwl  starttype #o  endtype #o
 -   length 140
 -   ChangePhoneme(0)
 - endphoneme
 - 
 - 
 - phoneme V
 -   vwl  starttype #a  endtype #@
 -   length 140
 - 
 -   ChangeIfDiminished(@)
 -   FMT(vowel/V_2)
 - endphoneme
 - 
 - 
 - phoneme U
 -   vwl  starttype #o  endtype #o
 -   length 150
 -   
 -   IF prevPhW(j) THEN
 -     length 130
 -     FMT(vowel/8_2)
 -   ENDIF
 - 
 -   FMT(vowel/uu)
 - endphoneme
 - 
 - 
 - 
 - phoneme A:
 -   vwl  starttype #a  endtype #a
 -   length 230
 -   IfNextVowelAppend(r-)
 -   FMT(vowel/aa_2)
 - endphoneme
 - 
 - 
 - phoneme A@
 -   vwl  starttype #a  endtype #a
 -   ipa ɑː
 -   length 230
 -   IfNextVowelAppend(r-)
 -   FMT(vowel/aa_2)
 - endphoneme
 - 
 - 
 - phoneme A#    // [a] in British [A:] in American
 -   vwl  starttype #a  endtype #a
 -   ChangePhoneme(a)
 - endphoneme
 - 
 - 
 - 
 - 
 - phoneme 3:
 -   vwl  starttype #@  endtype #@
 -   length 210
 -   IfNextVowelAppend(r-)
 -   ChangeIfDiminished(@)
 -   FMT(vowel/3_en)
 - endphoneme
 - 
 - 
 - phoneme i:
 -   vwl  starttype #i  endtype #i
 -   length 175
 -   IfNextVowelAppend(;)
 -   IF prevPh(w) THEN
 -     VowelStart(w/wi2)
 -   ENDIF
 -   FMT(vowel/i_en)
 - endphoneme
 - 
 - 
 - phoneme O:
 -   vwl  starttype #o  endtype #o
 -   length 230
 -   ChangeIfDiminished(@)
 -   FMT(vowel/oo_en)
 - endphoneme
 - 
 - 
 - phoneme O
 -   vwl  starttype #o  endtype #o
 -   length 200
 -   ChangeIfDiminished(@)
 -   FMT(vowel/oo_en)
 - endphoneme
 - 
 - 
 - phoneme O@
 -   vwl  starttype #o  endtype #o
 -   ipa ɔː
 -   length 240
 -   IfNextVowelAppend(r-)
 -   FMT(vowel/oo_en)
 - endphoneme
 - 
 - 
 - phoneme o@
 -   vwl  starttype #o  endtype #o
 -   ipa ɔː
 -   length 250
 -   
 -   IF MbrolaSynth THEN
 -     ChangePhoneme(O@)
 -   ENDIF
 - 
 -   IfNextVowelAppend(r-)
 -   FMT(vowel/oo_en)
 - endphoneme
 - 
 - 
 - phoneme u:
 -   vwl  starttype #u  endtype #u
 -   length 210
 -   IF nextPh(l/2) THEN
 -     FMT(vwl_en/u_L)
 -   ENDIF
 -   IF prevPhW(j) AND NOT thisPh(isWordEnd) THEN
 -     length 160
 -   ENDIF
 -   FMT(vdiph2/uw_2)
 - endphoneme
 - 
 - 
 - phoneme aU
 -   vwl  starttype #a  endtype #u
 -   length 230
 -   FMT(vdiph/au)
 - endphoneme
 - 
 - 
 - phoneme oU
 -   vwl  starttype #@  endtype #u
 -   ipa əʊ
 -   length 220
 -   FMT(vdiph/@u_en)
 - endphoneme
 - 
 - 
 - phoneme oU#
 -   vwl
 -   IF thisPh(isStressed) THEN
 -     ChangePhoneme(0)
 -   ENDIF
 -   
 -   IF nextVowel(isStressed) OR prevVowel(isStressed) THEN
 -     ChangePhoneme(@)
 -   ENDIF
 -   
 -   ChangePhoneme(oU)
 - endphoneme
 - 
 - 
 - phoneme aI
 -   vwl  starttype #a  endtype #i
 -   length 240
 -   IF nextPh(#a) THEN
 -     AppendPhoneme(;)
 -   ENDIF
 -   FMT(vdiph/ai_2)
 - endphoneme
 - 
 - 
 - phoneme eI
 -   vwl  starttype #e  endtype #i
 -   length 210
 -   FMT(vdiph/eei)
 - endphoneme
 - 
 - 
 - phoneme OI
 -   vwl  starttype #o  endtype #i
 -   length 230
 -   FMT(vdiph/ooi)
 - endphoneme
 - 
 - 
 - phoneme e@
 -   vwl  starttype #e  endtype #@
 -   length 230
 -   IfNextVowelAppend(r-)
 -   FMT(vowel/ee_1)
 - endphoneme
 - 
 - 
 - phoneme i@
 -   vwl  starttype #i  endtype #@
 -   length 250
 -   IfNextVowelAppend(r-)
 -   FMT(vdiph2/ii@)
 - endphoneme
 - 
 - 
 - phoneme i@3
 -   vwl  starttype #i  endtype #@
 -   length 250
 -   
 -   IF MbrolaSynth THEN
 -     ChangePhoneme(i@)
 -   ENDIF
 - 
 -   IfNextVowelAppend(r-)
 -   FMT(vdiph2/ii@)
 - endphoneme
 - 
 - 
 - phoneme U@
 -   vwl  starttype #u  endtype #@
 -   length 200
 -   IfNextVowelAppend(r-)
 -   IF thisPh(isUnstressed) THEN
 -     FMT(vdiph2/8@)
 -   ENDIF
 -   FMT(vdiph2/uu@)
 - endphoneme
 - 
 - 
 - phoneme aI@ // sc**ie**nce
 -   vwl  starttype #a  endtype #@
 -   length 280
 -   IfNextVowelAppend(r-)
 -   FMT(vwl_en/aI@)
 - endphoneme
 - 
 - 
 - phoneme aI3
 -   vwl  starttype #a  endtype #@
 -   length 280
 -   ChangePhoneme(aI@)
 - endphoneme
 - 
 - 
 - phoneme aU@ // h**our**
 -   vwl  starttype #a   endtype #@
 -   length 280
 -   IfNextVowelAppend(r-)
 -   FMT(vwl_en/aU@)
 - endphoneme
 - 
 - 
 - 
 - 
 - phoneme IR        // used for "ir" when [3:] is split (Scottish)
 -   vwl  starttype #@  endtype #@
 -   length 190
 -   ipa əɹ
 -   IF nextPhW(r-) THEN
 -     ipa ə
 -   ENDIF
 -   IfNextVowelAppend(r-)
 -   FMT(vowelr/V_r)
 - endphoneme
 - 
 - 
 - phoneme VR        // used for "or"/"ur" when [3:] is split (Scottish)
 -   vwl  starttype #@  endtype #@
 -   length 210
 -   ipa ʌɹ
 -   IF nextPhW(r-) THEN
 -     ipa ʌ
 -   ENDIF
 -   IfNextVowelAppend(r-)
 -   FMT(vowelr/V3_r)
 - endphoneme
 - 
 - 
 - phoneme o:
 -   vwl  starttype #o  endtype #o
 -   length 220
 -   FMT(vowel/o)
 - endphoneme
 - 
 - 
 - phoneme A~
 -   vwl  starttype #a endtype #a
 -   length 260
 -   FMT(vnasal/aa_n2)
 - endphoneme
 - 
 - 
 - phoneme O~
 -   vwl  starttype #o  endtype #o
 -   length 240
 -   FMT(vnasal/oo_n2)
 - endphoneme
 - 
 - 
 - phoneme e:
 -   vwl  starttype #e  endtype #e
 -   length 210
 -   FMT(vowel/e)
 - endphoneme
 - 
 - 
 - phoneme e# // **E**XPLORE
 -   vwl
 -   ChangePhoneme(E)
 - endphoneme
 - 
 - 
 - phoneme a#2  // for word 'an'
 -   vwl
 -   IF next2Ph(isVowel) THEN
 -     ChangePhoneme(a#)
 -   ELSE
 -     ChangePhoneme(a)
 -   ENDIF
 - endphoneme
 - 
 - 
 - phoneme @#   // TEST: [@] which is slightly more 'front'
 -   vwl  starttype #i  endtype #i
 -   unstressed
 -   length 130
 -   FMT(vowel/@_3)
 - endphoneme
 
 
  |