123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490 |
-
- //====================================================
- // Catalan balearic - based on Catalan (and Spanish and Base2)
- //====================================================
-
-
- // plosives (oclusives)
- // ====================
- // following https://giec.iec.cat/textgramatica/codi/4.2.1
-
- phoneme p
- vls blb stp
- lengthmod 2
- voicingswitch b
- Vowelin f1=0 f2=1000 -50 -100 f3=-200 80
- Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=30
- IF thisPh(isWordEnd) AND nextPh(isNotVowel) AND NOT nextPh(isPause) THEN
- IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN
- ipa NULL
- ELIF nextPh(t) OR nextPh(s) OR nextPh(ts) THEN
- ChangePhoneme(t)
- ELIF nextPh(g) THEN
- ChangePhoneme(g)
- ELIF nextPh(Z) THEN
- ChangePhoneme(d)
- ELIF nextPh(f) THEN
- ChangePhoneme(f)
- ELIF nextPh(R) OR nextPh(j) THEN
- ipa NULL
- ELIF nextPh(m) THEN
- ChangePhoneme(m)
- ELIF nextPh(isVoiced) THEN
- ChangePhoneme(b)
- ENDIF
- ELIF nextPh(isRhotic) THEN
- WAV(ustop/pr)
- ELIF nextPh(l) THEN
- WAV(ustop/pl)
- ELIF thisPh(isWordStart) THEN // don't change it if it's word start
- ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- ChangePhoneme(b)
- ELIF nextPh(t) THEN
- ChangePhoneme(t)
- ELIF nextPh(s) THEN
- IF nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation
- ChangePhoneme(d)
- ELSE
- ChangePhoneme(t)
- ENDIF
- ENDIF
- WAV(ustop/p_unasp)
- endphoneme
-
- phoneme t // dental variant of /t/
- vls dnt stp
- lengthmod 2
- voicingswitch d
- Vowelin f1=0 f2=1600 -300 300 f3=-100 80
- Vowelout f1=0 f2=1600 -300 250 f3=-100 80 rms=20
- IF nextPh(isPause2) THEN
- WAV(ustop/t_dnt, 30)
- ELIF thisPh(isWordEnd) AND nextPh(isNotVowel) AND NOT nextPh(isPause) THEN
- IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN
- ipa NULL
- ELIF nextPh(k) THEN
- ChangePhoneme(k)
- ELIF nextPh(b) THEN
- ChangePhoneme(b)
- ELIF nextPh(f) THEN
- ChangePhoneme(f)
- ELIF nextPh(p) THEN
- ChangePhoneme(p)
- ELIF nextPh(isVoiced) THEN
- ChangePhoneme(d)
- ENDIF
- ELIF nextPh(isWordEnd) AND nextPh(s) THEN
- IF next2Ph(k) THEN
- ChangePhoneme(k)
- ELIF next2Ph(b) THEN
- ChangePhoneme(b)
- ELIF next2Ph(isVoiced) THEN
- ChangePhoneme(d)
- ENDIF
- ELIF thisPh(isWordStart) THEN // don't change it if it's word start
- ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- IF nextPh(**) THEN
- ELSE
- ChangePhoneme(d)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation
- ChangePhoneme(d)
- ENDIF
- WAV(ustop/t_dnt2, 60)
- endphoneme
-
- phoneme k
- vls vel stp
- lengthmod 2
- voicingswitch g
- Vowelin f1=0 f2=2300 200 400 f3=-100 80
- Vowelout f1=0 f2=2300 300 400 f3=-100 80 rms=20
- IF nextPh(isPause2) THEN
- WAV(ustop/k_)
- ELIF nextPh(isRhotic) THEN
- WAV(ustop/kr)
- ELIF thisPh(isWordEnd) AND nextPh(isNotVowel) AND NOT nextPh(isPause) THEN
- IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN
- ipa NULL
- ELIF nextPh(t) OR nextPh(s) OR nextPh(ts) THEN
- ChangePhoneme(t)
- ELIF nextPh(isVoiced) THEN
- ChangePhoneme(g)
- ENDIF
- ELIF thisPh(isWordStart) THEN // don't change it if it's word start
- ELIF nextPh(isVoiced) AND nextPh(isNotVowel) THEN
- IF nextPh(w) THEN
- ELIF nextPh(n) OR nextPh(d) OR nextPh(z) THEN
- ChangePhoneme(g)
- ENDIF
- ELIF nextPh(t) OR nextPh(ts) THEN
- ChangePhoneme(t)
- ELIF nextPh(s) THEN
- IF nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation
- ChangePhoneme(d)
- ELSE
- ChangePhoneme(t)
- ENDIF
- ENDIF
- WAV(ustop/k_unasp, 70)
- endphoneme
-
- phoneme b
- vcd blb stp
- IF thisPh(isWordEnd) THEN
- IF nextPh(isNotVowel) AND NOT nextPh(isPause) THEN
- IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN
- ipa NULL
-
- ELIF NOT nextPh(isVoiced) THEN
- ChangePhoneme(p)
- ENDIF
- ELSE
- ChangePhoneme(p)
- ENDIF
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
- ELIF nextPh(s) OR nextPh(t) THEN
- ChangePhoneme(t)
- 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(B)
- 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(isNotVowel) AND NOT nextPh(isPause) THEN
- IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN
- ipa NULL
- ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
- ELIF NOT nextPh(isVoiced) THEN
- ChangePhoneme(k)
- ENDIF
- ELSE
- ChangePhoneme(k)
- ENDIF
- ELIF nextPh(isVoiced) THEN
- IF nextPh(m) THEN
- ChangePhoneme(m)
- ELIF nextPh(d) THEN
- ChangePhoneme(g)
- ELIF 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
- 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) // weaker [g]
- endphoneme
-
- phoneme d
- vcd dnt stp
- IF thisPh(isWordEnd) AND nextPh(isNotVowel) AND NOT nextPh(isPause) THEN
- IF prevPh(isNasal) OR prevPh(isLiquid) OR prevPh(R) OR prevPh(**) OR prevPh(j) THEN
- ipa NULL
- ELIF nextPh(p) THEN
- ChangePhoneme(p)
- ELIF NOT nextPh(isVoiced) THEN
- ChangePhoneme(t)
- ENDIF ELIF nextPh(s) AND nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // keep sonority
- ELIF nextPh(isVoiced) THEN
- IF nextPh(m) THEN
- ChangePhoneme(m)
- ELIF nextPh(isVowel) OR nextPh(isRhotic) OR nextPh(l) OR nextPh(j) OR nextPh(w) THEN
- IF prevPh(isVowel) OR prevPh(**) OR prevPh(R) OR prevPh(j) OR prevPh(w) OR prevPh(s) OR prevPh(z) THEN
- ChangePhoneme(D)
- ENDIF
- ENDIF
- ELSE
- ChangePhoneme(t)
- ENDIF
- CALL base2/d
- endphoneme
-
- // vowels
- //=====================================================
-
- phoneme e
- vwl starttype #e endtype #e
- length 170
- IF thisPh(isUnstressed) THEN
- ChangePhoneme(@)
- ENDIF
- FMT(vowel/e)
- endphoneme
-
- phoneme O
- vwl starttype #o endtype #o
- length 170
- IF thisPh(isWordEnd) THEN
- IF nextPh(o) OR nextPh(O) THEN
- ipa NULL
- ELSE
- ChangeIfUnstressed(o)
- ENDIF
- ELIF thisPh(isUnstressed) THEN
- ChangePhoneme(o)
- ENDIF
- FMT(vowel/oo)
- endphoneme
-
- phoneme o
- vwl starttype #o endtype #o
- length 170
- FMT(vowel/o)
- endphoneme
-
- phoneme @ // Schwa, e.g. alph**a**
- vwl starttype #@ endtype #@
- length 140
- FMT(vowel/@)
- endphoneme
-
- // fricatives
- // ====================================
-
- 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 thisPh(isWordEnd) AND prevPh(**) AND nextPh(isNotVowel) THEN
- ipa NULL
- ENDIF
- 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
-
- phoneme f
- vls lbd frc
- voicingswitch v
- lengthmod 3
- Vowelout f1=0 f2=1000 -500 -350 f3=-200 80
-
- IF thisPh(isWordEnd)THEN
- IF prevPh(**) THEN
- ipa NULL
- ELIF nextPh(isVoiced) THEN
- ipa v
- ENDIF
- ELIF nextPh(s) THEN
- IF nextPh(isWordEnd) AND next2Ph(isVoiced) THEN // sonority propagation
- ChangePhoneme(d)
- ELSE
- ChangePhoneme(t)
- ENDIF
- ENDIF
-
- IF nextPh(isPause) THEN
- WAV(ufric/f_)
- ENDIF
- WAV(ufric/f)
- endphoneme
-
- // liquid
- // =====================================
-
- phoneme ** // "cara"
- liquid alv rhotic
- ipa ɾ
- lengthmod 3
- Vowelout f1=3 f2=1600 -300 300 f3=-300 80 rms=35 len=15
- Vowelin f1=2 f2=1600 -300 300 f3=-100 80 len=20
-
- IF nextPh(isWordEnd) AND nextPh(isNasal) THEN
- ipa NULL
- ENDIF
- IF prevPh(#i) OR prevPh(#e) THEN
- FMT(r3/@tap2)
- ENDIF
- FMT(r3/@tap)
- endphoneme
-
- phoneme l^ // "calla"
- liquid
- ipa ʎ
- lengthmod 7
- Vowelout len=60 lenadd rate
- length 100
-
- NextVowelStarts
- VowelStart(l^/j2@)
- VowelStart(l^/j2a)
- VowelStart(l^/j2e)
- VowelStart(l^/j2i)
- VowelStart(l^/j2o)
- VowelStart(l^/j2u)
- EndSwitch
-
- IF prevPh(isPause) THEN
- FMT(l^/_l^)
- ELIF prevPh(isVowel) THEN
- IF nextPh(isPause) THEN
- ChangePhoneme(j)
- ELIF nextPh(s) AND next2Ph(isPause) THEN
- ChangePhoneme(j)
- ELIF nextPh(isVowel) AND NOT thisPh(isWordEnd) AND NOT thisPh(isWordStart) THEN
- IF nextPh(isStressed) THEN
- IF nextPh(i) OR nextPh(e) THEN
- ipa NULL
- ELSE
- ChangePhoneme(j)
- ENDIF
- ELIF prevPh(isStressed) THEN
- IF prevPh(i) OR prevPh(e) THEN
- ipa NULL
- ELSE
- ChangePhoneme(j)
- ENDIF
- ELSE
- ChangePhoneme(j)
- ENDIF
- ENDIF
- ENDIF
-
- FMT(l^/l^)
- endphoneme
-
- // fricatives
- //================================0
-
-
-
- phoneme s // dissimilation
- 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 thisPh(isWordEnd) AND nextPh(isVoiced) THEN
- ChangePhoneme(z)
- ELIF thisPh(isWordStart) THEN
- IF prevPh(t) THEN
- ChangePhoneme(ts)
- ENDIF
- ENDIF
- 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
-
- // nasals
- // ===========================
-
- 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 nextPh(f) OR nextPh(v) THEN
- ChangePhoneme(M)
- ELIF nextPh(t) OR nextPh(d) OR nextPh(s) OR nextPh(z) OR nextPh(R) OR nextPh(S) OR nextPh(Z) THEN
- ChangePhoneme(n)
- ELIF nextPh(l^) OR nextPh(n^) THEN
- ChangePhoneme(n^)
- ELIF nextPh(k) OR nextPh(g) THEN
- ChangePhoneme(N)
- ELIF thisPh(isWordEnd) THEN
- IF nextPh(j) THEN
- ChangePhoneme(j)
- ELIF nextPh(l) THEN
- ChangePhoneme(l)
- ENDIF
- ENDIF
- 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 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(v) OR nextPh(m) THEN
- ChangePhoneme(m)
- ELIF thisPh(isWordEnd) THEN
- IF nextPh(l^) OR nextPh(n^) THEN
- ChangePhoneme(n^)
- ELIF nextPh(j) THEN
- ChangePhoneme(j)
- ENDIF
- 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
|