| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427 | 
//====================================================
//  Lule Saami
//====================================================
phoneme : //  Lengthen previous vowel by "length"
  virtual
  length 160
endphoneme
phoneme @     // close schwa
  vwl starttype #@ endtype #@
  unstressed
  length 120
  FMT(vowel/@_4)
endphoneme
phoneme i
  vwl starttype #i endtype #i
  length 140
  IfNextVowelAppend(;)
  ChangeIfUnstressed(I)
  FMT(vowel/i_4)
endphoneme
phoneme I
  vwl starttype #i endtype #i
  length 140
  IfNextVowelAppend(;)
  FMT(vowel/ii_3)
endphoneme
phoneme e
  vwl starttype #e endtype #e
  length 150
  FMT(vowel/e_mid2)
endphoneme
phoneme E
  vwl starttype #e endtype #e
  length 160
  FMT(vowel/ee_4)
endphoneme
phoneme &
  vwl starttype #a endtype #a
  length 150
  FMT(vowel/&)
endphoneme
phoneme a
  vwl starttype #a endtype #a
  length 170
//  ChangeIfUnstressed(a2)
  FMT(vowel/aa_9)
endphoneme
phoneme a2
  vwl starttype #a endtype #a
  length 170
  FMT(vowel/aa#)
endphoneme
phoneme A
  vwl starttype #a endtype #a
  length 170
  FMT(vowel/aa_8)
endphoneme
phoneme o
  vwl starttype #o endtype #o
  length 155
  FMT(vowel/oo_1)
endphoneme
phoneme O
  vwl starttype #o endtype #o
  length 150
  FMT(vowel/o_mid)
endphoneme
phoneme Y
  vwl starttype #@ endtype #@
  length 155
  FMT(vowel/y#)
endphoneme
phoneme u
  vwl starttype #u endtype #u
  length 140
  FMT(vowel/u_bck)
endphoneme
phoneme u1    // TEST
  vwl starttype #u endtype #u
  length 140
  FMT(vowel/u_2)
endphoneme
phoneme U    // TEST
  vwl starttype #u endtype #u
  length 140
  FMT(vowel/uu_4)
endphoneme
phoneme u-
  vwl starttype #u endtype #u
  ipa ʉ
  length 200
  FMT(vowel/u#_2)
endphoneme
phoneme y
  vwl starttype #u endtype #u
  length 150
  FMT(vowel/y)
endphoneme
phoneme W
  vwl starttype #@ endtype #@
  length 120
  FMT(vowel/oe_2)
endphoneme
phoneme w
  liquid
  lengthmod 7
  starttype #u
  
  IF nextPh(isVowel) THEN
    NextVowelStarts
      VowelStart(w/w@)
      VowelStart(w/wa)
      VowelStart(w/we)
      VowelStart(w/wi)
      VowelStart(w/wo)
      VowelStart(w/wu)
    EndSwitch
    VowelEnding(w/xw, -30)
    IF prevPhW(isNasal) THEN
      FMT(w/w)
    ELSEIF prevPhW(h) THEN
      // none,  [hw]
    ELSE
      FMT(w/_w)
    ENDIF
  ELSE
    // no vowel follows
    Vowelout len=50
    IF prevPh(#i) THEN
      FMT(w/iw_)
    ENDIF
    FMT(w/w_)
  ENDIF
endphoneme
// Diphthongs
//===========
phoneme ai
  vwl starttype #a endtype #i
  length 310
  lng
  FMT(vdiph/aai_3)
endphoneme
phoneme &i
  vwl starttype #a endtype #i
  length 290
  lng
  FMT(vdiph/&i)
endphoneme
phoneme oi
  vwl starttype #o endtype #i
  length 280
  lng
  FMT(vdiph/ooi)
endphoneme
phoneme ei
  vwl starttype #e endtype #i
  length 280
  lng
  FMT(vdiph/eei_2)
endphoneme
phoneme Yi
  vwl starttype #@ endtype #i
  length 270
  lng
  FMT(vdiph/y#i)
endphoneme
phoneme ui
  vwl starttype #u endtype #i
  length 270
  lng
  FMT(vdiph/ui_4)
endphoneme
phoneme yi
  vwl starttype #u endtype #i
  length 270
  lng
  FMT(vdiph/yi)
endphoneme
phoneme au
  vwl starttype #a endtype #u
  length 300
  lng
  FMT(vdiph/aau)
endphoneme
phoneme ou
  vwl starttype #o endtype #u
  length 280
  lng
  FMT(vdiph/ou)
endphoneme
phoneme eu
  vwl starttype #e endtype #u
  length 280
  lng
  FMT(vdiph/eu_2)
endphoneme
phoneme iu
  vwl starttype #i endtype #u
  length 280
  lng
  FMT(vdiph2/iu_2)
endphoneme
phoneme &y
  vwl starttype #a endtype #u
  length 280
  lng
  FMT(vdiph/&y)
endphoneme
phoneme ey
  vwl starttype #e endtype #u
  length 280
  lng
  FMT(vdiph/eey)
endphoneme
phoneme Yy
  vwl starttype #@ endtype #u
  length 270
  lng
  FMT(vdiph/y#y)
endphoneme
phoneme iy
  vwl starttype #i endtype #u
  length 260
  lng
  FMT(vdiph2/iy)
endphoneme
phoneme uo
  vwl starttype #u endtype #o
  length 280
  lng
  FMT(vdiph2/uo)
endphoneme
phoneme ie
  vwl starttype #i endtype #e
  length 280
  lng
  FMT(vdiph2/ie)
endphoneme
phoneme yY
  vwl starttype #u endtype #@
  length 280
  lng
  FMT(vdiph2/y-y#)
endphoneme
// CONSONANTS
//===========
phoneme r
  import_phoneme base1/R
endphoneme
phoneme r.    //   retroflex
  liquid rfx
  lengthmod 3
  Vowelout f1=3 f2=1400 -400 300  f3=-400 80 rms=35 len=15 colr=2
  Vowelin f1=2  f2=1400 -400 300  f3=-400 80 len=20
  
  IF nextPh(isNotVowel) THEN
    FMT(r3/@tap_rfx_)
  ENDIF
  FMT(r3/@tap_rfx)
endphoneme
phoneme R2   // this is [R2], but shorter
  liquid trl
  lengthmod 6
  ipa r
  Vowelin  f1=0  f2=1700 -300 300  f3=-300 80
  Vowelout f1=2  f2=1700 -300 300  f3=-300 80 brk
  FMT(r3/r_trill_short) addWav(r3/r_trill.wav, 50)
endphoneme
phoneme P
  vls blb stp
  lengthmod 2
  voicingswitch b
  Vowelin  f1=0  f2=1000 -50 -100  f3=-200 80 gpaus
  Vowelout f1=0  f2=1000 -500 -350  f3=-300 80 rms=30
  WAV(ustop/p_unasp)
endphoneme
phoneme v        // approximant, not fricative
  vcd lbd frc
  lengthmod 6
  voicingswitch f
  Vowelin  f1=0  f2=1000 -300 -200  f3=-300 100
  Vowelout f1=0  f2=1000 -500 -300  f3=-300 60  len=50
  IF nextPh(isPause2) THEN
    FMT(voc/v_)
  ENDIF
  FMT(voc/v)
endphoneme
phoneme t        // dental variant of /t/
  import_phoneme base1/t[
  voicingswitch d
endphoneme
phoneme d
  vcd dnt stp
  voicingswitch t
  lengthmod 5
  Vowelin f1=2  f2=1700 -100 200  f3=0 80
  Vowelout f1=2 f2=1700 -100 200  f3=0 80 rms=20
  IF PreVoicing THEN
    FMT(d/xd)
  ENDIF
  IF nextPh(isPause2) THEN
    FMT(d/d_)  addWav(x/d_)
  ELIF nextPh(r) THEN
    FMT(d/dr) addWav(x/d_dnt, 60)
  ENDIF
  FMT(d/d) addWav(x/d_dnt, 60)
endphoneme
phoneme n
  vcd alv nas
  lengthmod 4
  ipa n
  IF nextPhW(isVelar) THEN // /n/ is velarized to /N/ when before velar stops
    ChangePhoneme(N)
  ENDIF
  CALL base1/n
endphoneme
phoneme p
  import_phoneme base2/p
  voicingswitch b
endphoneme
phoneme k
  import_phoneme base2/k
  voicingswitch g
endphoneme
phoneme s2  // second part of long [s]
  import_phoneme consonants/s2
endphoneme
phoneme h
  vls glt apr
  lengthmod 3
  IF nextPh(#@) THEN
    WAV(h/h@)
  ELIF nextPh(#a) THEN
    WAV(h/ha)
  ELIF nextPh(#e) THEN
    WAV(h/he)
  ELIF nextPh(#i) THEN
    WAV(h/hi)
  ELIF nextPh(#o) THEN
    WAV(h/hu_fi, 70)
  ELIF nextPh(#u) THEN
    WAV(h/hu_fi, 80)
  ENDIF
  WAV(h/h_, 70)  // no vowel following
endphoneme
 |