123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
-
- //====================================================
- // Catalan valencian - based on Catalan (and Spanish and Base2)
- //====================================================
-
- // vowels
- //=============
-
- phoneme a
- vwl starttype #a endtype #a
- length 180
- FMT(vowel/a_6)
- endphoneme
-
- phoneme a2 // does not change in central accent
- vwl starttype #a endtype #a
- length 180
- FMT(vowel/a_6)
- endphoneme
-
- phoneme e
- vwl starttype #e endtype #e
- length 170
- IF thisPh(isUnstressed) THEN
- IF thisPh(isWordStart) THEN
- IF nextPh(s) OR nextPh(n) OR nextPh(m) OR nextPh(**) OR nextPh(R) THEN
- ChangePhoneme(a)
- ELIF nextPh(j) AND next2Ph(S) THEN
- ChangePhoneme(a)
- ENDIF
- ENDIF
- ENDIF
- FMT(vowel/e)
- endphoneme
-
- phoneme e2 // don't reduce
- vwl starttype #e endtype #e
- length 170
- FMT(vowel/e)
- endphoneme
-
- phoneme E
- vwl starttype #e endtype #e
- length 180
- IF thisPh(isUnstressed) THEN
- IF thisPh(isWordStart) THEN
- IF nextPh(s) OR nextPh(n) OR nextPh(m) OR nextPh(**) OR nextPh(R) THEN
- ChangePhoneme(a)
- ELIF nextPh(j) AND next2Ph(S) THEN
- ChangePhoneme(a)
- ELSE
- ChangePhoneme(e)
- ENDIF
- ELSE
- ChangePhoneme(e)
- ENDIF
- ENDIF
- FMT(vowel/e_mid)
- endphoneme
-
- phoneme E2 // don't reduce
- vwl starttype #e endtype #e
- length 180
- ChangeIfUnstressed(e2)
- FMT(vowel/e_mid)
- endphoneme
-
- phoneme O
- vwl starttype #o endtype #o
- length 170
- ChangeIfUnstressed(o)
- FMT(vowel/oo)
- endphoneme
-
- phoneme o2
- vwl starttype #o endtype #o
- length 170
- ChangeIfStressed(O)
- FMT(vowel/o)
- endphoneme
-
- phoneme o
- vwl starttype #o endtype #o
- length 170
- FMT(vowel/o)
- endphoneme
-
- phoneme u
- vwl starttype #u endtype #u
- length 160
- IF thisPh(isUnstressed) THEN
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVowel) THEN
- IF nextPh(u) OR nextPh(w) THEN
- ELSE
- ChangePhoneme(w)
- ENDIF
- ENDIF
- ELIF thisPh(isWordStart) THEN
- IF prevPh(isVowel) THEN
- ChangePhoneme(w)
- ENDIF
- ENDIF
- ENDIF
- FMT(vowel/u_bck)
- endphoneme
-
- phoneme i
- vwl starttype #i endtype #i
- length 170
- IF thisPh(isUnstressed) AND nextPh(isVowel) THEN
- ChangePhoneme(j)
- ENDIF
- FMT(vowel/i)
- endphoneme
-
- // nasals
- //==============
-
- phoneme n
- vcd alv nas
- Vowelout f1=2 f2=1500 -300 250 f3=-100 80 rms=20 brk
- 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 nextPh(f) OR nextPh(v) THEN
- ChangePhoneme(M)
- ELIF nextPh(k) OR nextPh(g) THEN
- ChangePhoneme(N)
- ELIF nextPh(p) OR nextPh(b) OR nextPh(m) THEN
- ChangePhoneme(m)
- ENDIF
-
- 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
-
- // R
- //=====================
- phoneme R
- liquid trl
- lengthmod 6
- ipa r
- IF thisPh(isWordEnd) THEN
- ChangePhoneme(**)
- ENDIF
- Vowelin f1=0 f2=1600 -300 300 f3=-200 80
- Vowelout f1=2 f2=1600 -300 300 f3=-200 80 brk
- FMT(r3/r_trill2) addWav(r3/r_trill2.wav, 65)
- endphoneme
-
- // affricates
- //================
-
- phoneme Z
- vcd pla frc sib
- voicingswitch S
- lengthmod 6
- Vowelin f1=0 f2=2000 0 300 f3=-200 80
- Vowelout f1=2 f2=2000 0 300 f3=-200 80 brk
- ChangePhoneme(dZ)
- endphoneme
-
- phoneme S
- vls pla frc sib
- voicingswitch Z
- lengthmod 3
- Vowelin f1=0 f2=2100 100 300 f3=-100 80
- Vowelout f1=0 f2=2100 100 300 f3=-100 80
- IF prevPh(i) OR prevPh(j) THEN
- IF thisPh(isWordEnd) AND nextPh(isVoiced) THEN
- ChangePhoneme(Z)
- ENDIF
- ELSE
- ChangePhoneme(tS)
- ENDIF
- WAV(ufric/sh)
- endphoneme
-
-
- phoneme v
- vcd lbd frc
- voicingswitch f
- lengthmod 6
- Vowelin f1=0 f2=1000 -300 -200 f3=-300 100
- Vowelout f1=0 f2=1000 -500 -300 f3=-300 60 len=50
-
- IF KlattSynth THEN
- Vowelout f1=1 f2=1000 -500 -300 f3=-300 60 len=50 brk
- IF nextPh(isPause2) THEN
- FMT(klatt/v_) addWav(vocw/v)
- ENDIF
- FMT(klatt/v) addWav(vocw/v, 150)
- ENDIF
-
- IF nextPh(isPause2) THEN
- FMT(voc/v_) addWav(vocw/v)
- ENDIF
- IF thisPh(isWordStart) AND nextPhW(isLiquid) THEN
- length 70
- ENDIF
- FMT(voc/v) addWav(vocw/v)
- endphoneme
-
- // Occlusive stops
- //=================
-
- phoneme b
- vcd blb stp
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- ELIF prevPh(m) THEN
- ELSE
- ChangePhoneme(p)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
- ELIF nextPh(isVoiced) THEN
- IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN
- IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN
- IF prevPh(**) OR prevPh(R) THEN //***"embarbussa"***
- ELSE
- ChangePhoneme(B)
- ENDIF
- ENDIF
- ENDIF
- ELSE
- ChangePhoneme(p)
- ENDIF
-
- CALL base1/b
- endphoneme
-
- phoneme g
- vcd vel stp
- lengthmod 5
- voicingswitch k
- Vowelin f1=2 f2=2300 200 300 f3=-300 80
- Vowelout f1=2 f2=2300 250 300 f3=-300 80 brk
- IF thisPh(isWordEnd) THEN
- IF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- ELSE
- ChangePhoneme(k)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
- ELIF nextPh(isVoiced) THEN
- IF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN
- IF prevPh(isVowel) OR prevPh(isLiquid) OR prevPh(isVFricative) THEN
- ChangePhoneme(Q)
- ENDIF
- ELIF nextPh(n) THEN
- ChangePhoneme(N)
- ENDIF
- ELSE
- ChangePhoneme(k)
- ENDIF
- IF PreVoicing THEN
- FMT(g/xg)
- ENDIF
- IF nextPh(isPause2) THEN
- FMT(g/g_) addWav(x/g_)
- ENDIF
- FMT(g/g) addWav(x/g2)
- endphoneme
|