| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473 | 
							- //*******************************************************************
 - // TONES
 - //*******************************************************************
 - 
 - //*******************************************************************
 - // REFERENCE MATERIALS
 - //*******************************************************************
 - // Collaborative Documentation and Revitalization of Cherokee Tone
 - // https://scholarspace.manoa.hawaii.edu/bitstream/handle/10125/24630/herrick.pdf
 - // Tones fall within a range of 80–140 H (pg 21, footnote)
 - // the mid tone (2) starts at 104 Hz (P1) and falls approximately 2 Hz at of the next four points ending at 96 Hz at P5.
 - //
 - // Building Tone Resources for Second Language Learners from Phonetic Documentation
 - // https://scholarspace.manoa.hawaii.edu/bitstream/10125/24737/hirata-edds_herrick.pdf
 - //
 - // Pitch contours taken from Praat chart, pg 295 
 - //
 - // (¹) low fall: 106, 102, 97, 92, 88
 - // (²) low/mid: 104, 100, 98, 97, 96
 - // (³) high: 108, 109, 110, 111, 112
 - // (⁴) super high: 109, 113, 118, 122, 127
 - // (²³) rising: 97, 98, 101, 104, 109
 - // (³²) falling: 122, 120, 115, 106, 97
 - 
 - // A REFERENCE GRAMMAR OF OKLAHOMA CHEROKEE (2008)
 - // Short vowels preceding /h/ are devoiced, pg 45 (how to do this espeak-ng?)
 - // Word final vowels are nasalized
 - // Vowels are nasalized after a nasal consonant
 - // Vowels are either long or short; a long vowel takes
 - // approximately twice as long to pronounce as its
 - // short counterpart., pg 46
 - 
 - //int pitch1 = 0;
 - //int pitch2 = 0;
 - //int pitch_env = 0;
 - //int amp_env = 0;
 - //IF (pitch1 >= pitch2) the pitch values get swapped (???)
 - 
 - phoneme 1 // low fall (¹), long vowels only
 -   stress
 -   ipa ˨˩
 - 	Tone(28, 7, envelope/chr_fall21, NULL) //need a pitch contour of 106-88 for a
 - endphoneme
 - 
 - phoneme 2 // low (²)
 -   stress
 -   ipa ˨
 -   Tone(27, 16, envelope/chr_level2, NULL) //need a pitch contour of 104-96 for a
 - endphoneme
 - 
 - phoneme 23 // rising (²³)
 -   stress
 -   ipa ˨˧
 -   Tone(16, 30, envelope/chr_rise23, NULL) //need a pitch contour of 97-109 for a
 - endphoneme
 - 
 - phoneme 32 // falling (³²)
 -   stress
 -   ipa ˧˨
 -   Tone(45, 15, envelope/chr_fall32, NULL) //need a pitch contour of 122-97 for a
 - endphoneme
 - 
 - phoneme 3 // high (³) 
 -   stress
 -   ipa ˧
 -   //Tone(109, 116, envelope/p_rise, NULL) //need a pitch contour of 108-112 for a
 -   Tone(29, 35, envelope/chr_level3, NULL) //need a pitch contour of 108-112 for a
 - endphoneme
 - 
 - phoneme 4 // extra high rise (⁴)
 -   stress
 -   ipa ˧˦
 -   Tone(29, 52, envelope/chr_rise4, NULL) //need a pitch contour of 109-127 for a
 - endphoneme
 - 
 - phoneme 43 // extra high fall (⁴³) - end of word tone
 -   stress
 -   ipa ˦˧
 -   //need a pitch contour of 122-75 for a~
 -   Tone(44, 0, envelope/chr_fall43, NULL)
 - endphoneme
 - 
 - //from phonemes
 - phoneme : //  lengthen previous vowel by "length"
 -   virtual
 -   length 300
 - endphoneme
 - 
 - phoneme 0
 -   vwl  starttype #o   endtype #o
 -   length 300
 -   FMT(vowel/0_3)
 - endphoneme
 - 
 - phoneme 0`
 -   vwl  starttype #o   endtype #o
 -   length 100
 -   FMT(vowel/0_3)
 - endphoneme
 - 
 - phoneme 0~
 -   vwl  starttype #o   endtype #o
 -   length 300
 -   FMT(vnasal/aa_n4)
 - endphoneme
 - 
 - phoneme 0~`
 -   vwl  starttype #o   endtype #o
 -   length 100
 -   FMT(vnasal/aa_n4)
 - endphoneme
 - 
 - phoneme e
 -   vwl starttype #e endtype #e
 -   length 300
 -   FMT(vowel/e_mid)
 - endphoneme
 - 
 - phoneme e`
 -   vwl starttype #e endtype #e
 -   length 100
 -   FMT(vowel/e_mid)
 - endphoneme
 - 
 - phoneme e~
 -   vwl starttype #e endtype #e
 -   length 300
 -   FMT(vnasal/ee_n2)
 - endphoneme
 - 
 - phoneme e~`
 -   vwl starttype #e endtype #e
 -   length 100
 -   FMT(vnasal/ee_n2)
 - endphoneme
 - 
 - phoneme i
 -   vwl starttype #i endtype #i
 -   length 300
 -   //IfNextVowelAppend(;)
 -   FMT(vowel/i)
 - endphoneme
 - 
 - phoneme i`
 -   vwl starttype #i endtype #i
 -   length 100
 -   //IfNextVowelAppend(;)
 -   FMT(vowel/i)
 - endphoneme
 - 
 - phoneme i~
 -   vwl starttype #i endtype #i
 -   length 300
 -   //IfNextVowelAppend(;)
 -   FMT(vnasal/i_n)
 - endphoneme
 - 
 - phoneme i~`
 -   vwl starttype #i endtype #i
 -   length 100
 -   //IfNextVowelAppend(;)
 -   FMT(vnasal/i_n)
 - endphoneme
 - 
 - // o, ọ
 - phoneme o
 -   vwl starttype #o  endtype #o
 -   length 300
 -   FMT(vowel/o)
 - endphoneme
 - 
 - phoneme o`
 -   vwl starttype #o  endtype #o
 -   length 100
 -   FMT(vowel/o)
 - endphoneme
 - 
 - // o, ọ, final word vowel
 - phoneme o~
 -   vwl starttype #o  endtype #o
 -   length 300
 -   FMT(vnasal/o_n)
 - endphoneme
 - 
 - phoneme o~`
 -   vwl starttype #o  endtype #o
 -   
 -   length 100
 -   FMT(vnasal/o_n)
 - endphoneme
 - 
 - // u, ụ
 - //from ph_base2
 - phoneme u
 -   vwl starttype #u  endtype #u
 -   length 300
 -   FMT(vowel/u_bck)
 - endphoneme
 - 
 - phoneme u`
 -   vwl starttype #u  endtype #u
 -   length 100
 -   FMT(vowel/u_bck)
 - endphoneme
 - 
 - // u, ụ, final word vowel
 - phoneme u~
 -   vwl starttype #u  endtype #u
 -   length 300
 -   FMT(vnasal/u_n)
 - endphoneme
 - 
 - phoneme u~`
 -   vwl starttype #u  endtype #u
 -   length 100
 -   FMT(vnasal/u_n)
 - endphoneme
 - 
 - //ṿ, v
 - phoneme V~
 - 	vwl lng starttype #@ endtype #@
 - //  vwl lng starttype #@ endtype #@
 - //  length 300
 - //  FMT(vnasal/V_n, 100)
 - 	ChangePhoneme(&~)
 - endphoneme
 - 
 - phoneme &~
 -   vwl  starttype #@ endtype #@
 -   ipa ɐU+0303
 -   length 180
 -   IF thisPh(isFinalVowel) THEN
 -     FMT(vnasal/a#_n2)
 -   ELSE
 -     FMT(vnasal/a#_n)
 -   ENDIF
 - endphoneme
 - 
 - phoneme V~`
 -   vwl lng starttype #@ endtype #@
 -   length 100
 -   FMT(vnasal/V_n)
 - endphoneme
 - 
 - phoneme h
 -   vls glt apr
 -   ipa h
 -   
 -   IF prevPhW(isVowel) AND nextPhW(isNotVowel) THEN
 -   	length 25
 -   	lengthmod 1
 -   ENDIF
 -    
 -   IF nextPhW(#@) THEN
 -     length 50
 -     WAV(h/h@, 70)
 -   ELIF nextPhW(#a) THEN
 -     WAV(h/ha)
 -   ELIF nextPhW(#e) THEN
 -     length 60
 -     WAV(h/he, 75)
 -   ELIF nextPhW(#i) THEN
 -     length 75
 -     WAV(h/hi)
 -   ELIF nextPhW(#o) THEN
 -     length 75
 -     WAV(h/ho)
 -   ELIF nextPhW(#u) THEN
 -   	length 80
 -     WAV(h/hu)
 -   ELSE
 -     length 60
 -     WAV(h/h_)  // no vowel following
 -   ENDIF
 - endphoneme
 - 
 - phoneme h`
 -   vls glt apr
 -   ipa h
 -   length 10
 -   WAV(h/h_)  // no vowel following
 - endphoneme
 - 
 - phoneme s
 -   vls alv frc sib
 -   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(isPause) THEN
 -     WAV(ufric/s_)
 -   ELIF nextPh(p) OR nextPh(t) OR nextPh(k) THEN
 -     WAV(ufric/s!)
 -   ENDIF
 -   WAV(ufric/s)
 - endphoneme
 - 
 - phoneme g
 -   vcd vel stp
 -   voicingswitch k
 -   lengthmod 5
 -   Vowelin f1=2  f2=2300 200 300  f3=-300 80
 -   Vowelout f1=2  f2=2300 250 300  f3=-300 80 brk
 - 
 -  // IF PreVoicing THEN
 -     //FMT(g/xg)
 -   //ENDIF
 - 
 -   IF nextPh(isPause2) THEN
 -   	//addWav(ustop/k_)
 -     FMT(g/g_) addWav(ustop/k_)
 -     //addWav(x/g_)
 -   ELSE
 -   	//addWav(ustop/k_asp)
 -   	FMT(g/g) addWav(ustop/k_asp)
 -   	//addWav(x/g)
 -   ENDIF
 -   
 - endphoneme
 - 
 - phoneme t
 -   vls alv stp
 -   voicingswitch d
 -   lengthmod 2
 -   Vowelin f1=0  f2=1700 -300 300  f3=-100 80
 -   Vowelout f1=0 f2=1700 -300 250  f3=-100 80  rms=20
 - 
 -   IF nextPh(isPause2) THEN
 -     WAV(ustop/t_)
 -   ELIF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN
 -     WAV(ustop/tr)
 -   ELIF nextPh(@-) THEN
 -     WAV(ustop/t_dnt, 50)
 -   ENDIF
 -   WAV(ustop/t, 90)
 - endphoneme
 - 
 - phoneme d
 -   vcd alv stp
 -   voicingswitch t
 -   lengthmod 5
 -   Vowelin f1=1  f2=1700 -300 300  f3=-100 80
 -   Vowelout f1=2 f2=1700 -300 300  f3=-100 80 brk
 - 
 -   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)
 -   ENDIF
 - 
 -   FMT(d/d) addWav(x/d)
 - endphoneme
 - 
 - phoneme dZ // **j**udge
 -   ipa dZ
 -   vcd pla afr sib
 -   voicingswitch tS
 -   lengthmod 5
 -   Vowelin f1=2  f2=2300 200 400  f3=100 80
 -   Vowelout f1=2  f2=2300 250 300  f3=100 80 brk
 - 
 -   IF PreVoicing THEN
 -     FMT(dzh/xdz_pzd, 250)
 -   ENDIF
 - 
 -   IF nextPh(isPause2) THEN
 -     FMT(dzh/dz_pzd_, 250) addWav(x/dz_pzd_, 250)
 -   ENDIF
 -   FMT(dzh/dz_pzd, 250) addWav(x/dz_pzd, 250)
 - endphoneme
 - 
 - phoneme n
 -   vcd alv nas
 -   Vowelout f1=2 f2=1500 -300 250  f3=-100 80  rms=20 brk
 -   Vowelin rate
 -   lengthmod 4
 -   
 -   IF KlattSynth THEN
 -     Vowelin f1=0 f2=1500 -200 200 f3=0 80
 -     FMT(klatt/n)
 -   ENDIF
 - 
 -   NextVowelStarts
 -     VowelStart(n/n@)
 -     VowelStart(n/na)
 -     VowelStart(n/ne)
 -     VowelStart(n/ni)
 -     VowelStart(n/no)
 -     VowelStart(n/nu)
 -   EndSwitch
 - 
 -   IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
 -     FMT(n/nj)
 -   ELIF prevPh(isPause) OR prevPh(n) THEN
 -     FMT(n/_n)
 -   ELIF nextPh(isNotVowel) THEN
 -     FMT(n/n_)
 -   ENDIF
 -   
 - endphoneme
 - 
 - phoneme m
 -   vcd blb nas
 -   Vowelout f1=2  f2=1000 -500 -350  f3=-200 80 brk
 -   lengthmod 4
 - 
 -   IF KlattSynth THEN
 -     Vowelin  f1=0  f2=1000 -50 -200  f3=-200 80
 -     IF nextPh(isPause2) THEN
 -       FMT(klatt/m_)
 -     ENDIF
 -     FMT(klatt/m)
 -   ENDIF
 - 
 -   NextVowelStarts
 -     VowelStart(m/m@)
 -     VowelStart(m/ma)
 -     VowelStart(m/me)
 -     VowelStart(m/mi)
 -     VowelStart(m/mo)
 -     VowelStart(m/mu)
 -   EndSwitch
 - 
 -   IF prevPh(isNotVowel) AND nextPhW(isLiquid) THEN
 -     FMT(m/mj)
 -   ELIF prevPh(isPause) THEN
 -     FMT(m/_m)
 -   ELIF nextPh(isNotVowel) THEN
 -     FMT(m/m_)
 -   ENDIF
 - endphoneme
 - 
 - phoneme w
 -   liquid
 -   lengthmod 7
 -   starttype #u
 -   
 -   IF nextPh(isVowel) THEN
 -   
 -     NextVowelStarts
 -       VowelStart(w/w2)
 -       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/w2)
 -     ELSEIF prevPhW(h) THEN
 -       // none,  [hw]
 -     ELSE
 -     	FMT(w/w2)
 -       //FMT(w/_w)
 -     ENDIF
 -   ELSE
 -     // no vowel follows
 -     Vowelout len=50
 -     IF prevPh(#i) THEN
 -       FMT(w/iw_)
 -     ENDIF
 -     FMT(w/w_)
 -   ENDIF
 - endphoneme
 
 
  |