| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 | 
// Phonemes for Tamil
// This inherits from ph_hindi
phoneme @
  vwl  starttype #@  endtype #@
  length 130
  FMT(vowel/V_2)
endphoneme
phoneme a
  vwl  starttype #a  endtype #a
  length 130
  ChangeIfNotStressed(V)
  FMT(vowel/a)
endphoneme
phoneme V
  vwl  starttype #@  endtype #@
  ipa ʌ
  length 130
  IF nextPh(isWordEnd) AND nextPh(m) THEN
    ChangePhoneme(@)
  ENDIF
  FMT(vowel/V_3)
endphoneme
phoneme V#    // omit if the next phoneme is a vowel
  vwl  starttype #@  endtype #@
  length 130
  IF nextPhW(isVowel) OR nextPhW(#) THEN
    ChangePhoneme(NULL)
  ENDIF
  ChangePhoneme(V)
endphoneme
phoneme a:
  vwl  starttype #a  endtype #a
  length 300
  FMT(vowel/a_5)
endphoneme
phoneme e
  vwl  starttype #e  endtype #e
  length 130
  FMT(vowel/e)
endphoneme
phoneme e:
  vwl  starttype #e  endtype #e
  length 250
  FMT(vowel/e)
endphoneme
phoneme i
  vwl  starttype #i  endtype #i
  length 130
  IF thisPh(isWordEnd) AND thisPh(isNotStressed) THEN
    FMT(vowel/ii_5)
  ENDIF
  FMT(vowel/i_6)
endphoneme
phoneme i:
  vwl  starttype #i  endtype #i
  length 270
  FMT(vowel/i)
endphoneme
phoneme o
  vwl  starttype #o  endtype #o
  length 130
  FMT(vowel/o)
endphoneme
phoneme o:
  vwl  starttype #o  endtype #o
  length 300
  FMT(vowel/o)
endphoneme
phoneme u
  vwl  starttype #u  endtype #u
  length 110
  ChangeIfNotStressed(U)
  FMT(vowel/u_6)
endphoneme
phoneme u2   // as [u] but don't reduce
  vwl  starttype #u  endtype #u
  length 110
  FMT(vowel/u_6)
endphoneme
phoneme U
  vwl  starttype #u  endtype #u
  ipa ʉ
  length 110
  FMT(vowel/u#_3)
endphoneme
phoneme u:
  vwl  starttype #u  endtype #u
  length 280
  IF prevPhW(isVelar) THEN
  ELSE
    ChangeIfNotStressed(U:)
  ENDIF
  FMT(vowel/u_6)
endphoneme
phoneme U:
  vwl  starttype #u  endtype #u
  ipa ʉ
  length 270
  FMT(vowel/u#_3)
endphoneme
phoneme aI
  vwl  starttype #a  endtype #i
  length 280
  FMT(vdiph/ai_8)
endphoneme
phoneme aU
  vwl  starttype #a  endtype #u
  length 270
  FMT(vdiph/au)
endphoneme
phoneme t
  import_phoneme base2/t    // dental
endphoneme
// ?? This is standard [v].  Should be it [v] without the fricative noise?
phoneme v
  import_phoneme base1/v
endphoneme
phoneme : //  Lengthen previous vowel by "length"
  virtual
  length 50
endphoneme
phoneme #    // a NULL phoneme for 'virama'
  virtual
  ChangePhoneme(NULL)
endphoneme
phoneme z.
  CALL base1/z.
  ipa U+027B
endphoneme
phoneme r
  import_phoneme base1/r
endphoneme
 |