phoneme @ vowel starttype #@ endtype #@ unstressed length 60 FMT(vowel/@_3) endphoneme phoneme @- // very short schwa vowel starttype #@ endtype #@ unstressed nonsyllabic ipa ə IF nextPhW(*) OR nextPhW(r) THEN ipa NULL // @-* is used to make 'r' ENDIF length 40 FMT(vowel/@-) endphoneme // ToDo: change [@] to [a#] if adjacent to [r] or [R] phoneme 3 vowel starttype #a endtype #a unstressed length 40 FMT(vowel/a#_3) endphoneme // PB sort of schwa [ɐ] (0250+032F) // "spurgt" [sp'o3-d] – ipa [spˈoɐ̯d] phoneme 3- // used for 'r' after a vowel (to create a diphthong) liquid lengthmod 7 ipa ɐ̯ FMT(r/a_) endphoneme phoneme i vowel starttype #i endtype #i length 150 // IfNextVowelAppend(;) IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) THEN glstop length 90 ENDIF // PB "tie", "stige", "krige" vowel + vowel: extra length // What is causing this very short [i] in words with final [@-]? // NOT "galleriet" [g,?&lVR'i@-D] NOT "krigen" [kR'i@-n] IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) AND NOT next2PhW(n) THEN length 240 ENDIF // "siden" IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) AND nextPhW(D) THEN length 150 ENDIF // "lise" IF nextPhW(isNotVowel) AND nextVowel(@-) OR nextVowel(@) THEN length 150 ENDIF // PB "Bishop" IF nextPhW(S) AND next2PhW(V) THEN length 90 ENDIF // "pjækkeri", "røveri" IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 90 ENDIF // "vilje" IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN length 90 ENDIF FMT(vowel/i_4) endphoneme // PB Experimental glottal i // sviret vs. svirret phoneme ?i vowel starttype #i endtype #i length 90 IfNextVowelAppend(;) FMT(vowel/i_4) endphoneme // PB English i - Tim phoneme I vowel starttype #i endtype #i length 130 IfNextVowelAppend(;) FMT(vowel/ii_2) endphoneme phoneme e vowel starttype #e endtype #e length 150 IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 150 ENDIF // "delte", "mante", "evig" [evi] IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@) OR nextVowel(@-) THEN length 150 ENDIF // "prinsen" - TEST IF nextPhW(n) AND next2PhW(s) THEN length 90 ENDIF // "slesk", "sleske" short vowel IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN length 90 ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN length 90 // "skriften" - very broad: short before 2 consonants ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) THEN length 90 ENDIF // PB "ring", "ringe" IF nextPhW(N) THEN length 90 ENDIF // PB "enig", "enige", "evig" IF nextPhW(isNotVowel) AND next2PhW(i) THEN length 150 ENDIF // "labyrinter" , "labyrinten" - short followed by 2 consonants IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN length 60 ENDIF FMT(vowel/e) endphoneme // PB glottal e // "skille" vs. "skele", "pille" vs. "pile" phoneme ?e vowel starttype #e endtype #e length 90 FMT(vowel/e) endphoneme phoneme E vowel starttype #e endtype #e length 150 IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF // example? IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 50 ENDIF // "værelse", "breve" IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(@-) THEN length 150 ENDIF // "fest", "feste" short vowel IF nextPhW(s) AND next2PhW(t) AND nextVowel(@-) THEN length 90 ELIF nextPhW(s) AND next2PhW(k) AND nextVowel(@-) THEN length 90 // PB knægten ELIF nextPhW(g) AND next2PhW(t) AND nextVowel(@-) THEN length 90 // "femten", "tænker" - very broad: short before 2 consonants ELIF nextPhW(isNotVowel) AND next2PhW(isNotVowel) AND nextVowel(@-) OR nextVowel(V)THEN length 90 // PB "kærlig" [k'Erli]- a bit longer because og the missing [ɐ] [ˈkæɐ̯li] ELIF nextPhW(r) AND next2PhW(isNotVowel) AND nextVowel(i) THEN length 130 ENDIF // "ære", "kærester", "ærefrygt" - longer E IF nextPhW(V) THEN length 180 ENDIF FMT(vowel/e_mid2) endphoneme // PB Experimental glottal E // "læsse" vs. "læse" phoneme ?E vowel starttype #e endtype #e length 90 // PB "færre" [f'?EV] - a bit longer because og the missing [ɐ] [ˈfæɐ̯ʌ] // Changed now [f'?E3-V] but it won't do any harm IF nextPhW(V) THEN length 120 ENDIF FMT(vowel/e_mid2) endphoneme phoneme & vowel starttype #e endtype #e length 150 IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF // PB "sable", "sabler", "anede", "David" IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) OR nextVowel(@-) THEN length 150 ENDIF // "stadig" [st&Di] IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN length 180 // "stadigt" [st&Dit] ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND next2PhW(t) THEN length 180 // "latin" [l&t'in] ELIF nextVowel(i) AND nextVowel(isFinalVowel) AND NOT next2PhW(t) THEN length 90 ENDIF // "ae", "aer", "dagen" vowel + vowel: extra length IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 240 ENDIF // "Alfie", "alfer" - short before 2 consonants IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN length 90 ENDIF // "Omaha" IF thisPh(isWordEnd) THEN length 90 ENDIF FMT(vowel/ee_2) endphoneme // PB Experimental glottal a // e.g. the last a in "staldkarl" // "sale" vs. "sal" phoneme ?& vowel starttype #e endtype #e length 90 FMT(vowel/ee_2) endphoneme // PB added for the æ in "dræbt" phoneme &# vowel starttype #e endtype #e length 120 IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 150 ENDIF FMT(vowel/&) endphoneme // PB short &# // "revl" vs. "tremme" phoneme ?&# vowel starttype #e endtype #e length 90 FMT(vowel/&) endphoneme phoneme a vowel starttype #a endtype #a length 150 IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN length 150 ENDIF FMT(vowel/a_2) endphoneme // PB short (glottal) a // "bragt" phoneme ?a vowel starttype #a endtype #a length 90 FMT(vowel/a_2) endphoneme phoneme A vowel starttype #a endtype #a length 150 IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN length 150 ENDIF // "far", "bastard" - a bit longer followed by [r] IF nextPhW(r) THEN length 120 ENDIF FMT(vowel/a_3) endphoneme // PB glottal a // "drab" vs. "drabelig" phoneme ?A vowel starttype #a endtype #a length 90 // "straffeattest", "straffe" - a bit longer after R IF prevPhW(R) AND nextPhW(isNotVowel) THEN length 120 ENDIF FMT(vowel/a_3) endphoneme phoneme u vowel starttype #u endtype #u length 150 // Short vowel followed by consonant and NOT consonant + 3 or V or @ // "blus" vs. "bluse" and "bluser" IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF // "hue", "suge", "uge" IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 150 ENDIF // extra length followed by 3 or V or @ IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 240 ENDIF // "umulig" IF nextVowel(i) AND nextVowel(isFinalVowel) AND nextVowel(isWordEnd) THEN length 180 ENDIF FMT(vowel/u_bck) endphoneme // PB glottal u // "tude" vs. "tuden" - [tuD3] [t?uD@n] phoneme ?u vowel starttype #u endtype #u length 90 FMT(vowel/u_bck) endphoneme phoneme o vowel starttype #o endtype #o length 150 IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF // "tro" IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 90 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 150 ENDIF // "modig" - long vowel after consonant + [i] IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN length 150 ENDIF FMT(vowel/o_2) endphoneme // PB Short o // "patron" vs. "kone" phoneme ?o vowel starttype #o endtype #o length 95 FMT(vowel/o_2) endphoneme phoneme O vowel starttype #o endtype #o length 150 IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF // PB "gået" IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN length 150 ENDIF // "rådig" IF nextVowel(i) AND nextVowel(isFinalVowel) THEN length 180 ENDIF FMT(vowel/o_5) endphoneme // PB Experimental glottal O // "toget" vs. "tåget" phoneme ?O vowel starttype #o endtype #o length 90 FMT(vowel/o_5) endphoneme phoneme V vowel starttype #@ endtype #@ length 150 // "sport" [spV:t] IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF IF nextPh(3) OR nextPh(V) OR nextPh(@) THEN length 150 ENDIF // PB short V in "holder", "solder" IF nextPhW(isNotVowel) AND next2Ph(V) THEN length 90 ENDIF // PB "snorke", "snorker", årlig IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) OR next2PhW(i) THEN length 180 ENDIF // "sove" [sVw3] - longer followed by w + 3 IF nextPhW(w) AND next2PhW(3) THEN length 220 ENDIF FMT(vowel/V_4) endphoneme // PB Glottal (short) å // "forstår" vs. "kåre" phoneme ?V vowel starttype #@ endtype #@ length 100 FMT(vowel/V_4) endphoneme phoneme 0 vowel starttype #o endtype #o length 150 IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 150 ENDIF FMT(vowel/oo_2) endphoneme // ?B short 0 "sukker" phoneme ?0 vowel starttype #o endtype #o length 90 FMT(vowel/oo_2) endphoneme phoneme y vowel starttype #i endtype #i // experiment: changed to short from 150 length 150 // Short vowel followed by consonant and NOT consonant + 3 or V // "lyd" vs. "lyde" and "lyder" IF nextPhW(isNotVowel) AND NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@)AND NOT next2PhW(@-) THEN glstop length 90 ENDIF // "syg" [sy] IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 90 ENDIF // "skyd" IF thisPh(isFinalVowel) AND nextPhW(isWordEnd) AND nextPhW(isNotVowel) THEN length 90 ENDIF // "dydig" [dyDi] IF nextVowel(3) OR nextVowel(V) OR nextVowel(@) OR nextVowel(i) THEN length 150 ENDIF // "syge" [sy3] vowel + vowel: extra length, but NOT "fyret" [fyVD] IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) AND NOT next2PhW(D) THEN length 220 ENDIF // PB "kryster" - short y IF nextPhW(isNotVowel) AND next2PhW(isNotVowel) THEN length 80 ENDIF // PB "gryden" FMT(vowel/y) endphoneme // PB Short y // "kylling" vs. "kyle", "krybbe" vs. "krybe" phoneme ?y vowel starttype #i endtype #i length 70 FMT(vowel/y) endphoneme phoneme Y vowel starttype #i endtype #i length 150 IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 150 ENDIF FMT(vowel/yy) endphoneme phoneme W vowel starttype #@ endtype #@ length 160 // Shorter vowel when followed by consonant IF NOT next2PhW(3) AND NOT next2PhW(V) AND NOT next2PhW(@) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF // "kløe" vowel + vowel: extra length IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN length 220 ENDIF // "klø" short W when word ends with W IF thisPh(isFinalVowel) AND thisPh(isWordEnd) THEN length 90 ENDIF // røde" W + 1 consonant + 3 or W or @ IF next2PhW(3) OR next2PhW(V) OR next2PhW(@) THEN length 160 ENDIF // PB "nødig", "nødigt", "kølige" IF nextVowel(i) THEN length 160 ENDIF // "møve" [mWw@-] IF nextPhW(w) AND nextVowel(@-) THEN length 160 ENDIF // "børnebog" IF nextPhW(r) AND next2PhW(n) AND nextVowel(@-) THEN length 150 ENDIF FMT(vowel/oe) endphoneme // PB glottal W // "prøv" vs. "prøve" phoneme ?W vowel starttype #@ endtype #@ length 95 FMT(vowel/oe) endphoneme // PB added for the ø in "røv", "røg", "øje" instead of [V3] phoneme W# vowel starttype #@ endtype #@ length 150 IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2PhW(@-) AND nextPhW(isNotVowel) THEN glstop length 90 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) THEN length 150 ENDIF FMT(vowel/V) endphoneme // PB short W# // "rømme" phoneme ?W# vowel starttype #@ endtype #@ length 90 FMT(vowel/V) endphoneme phoneme aI vowel starttype #a endtype #i length 300 IF NOT next2Ph(3) AND NOT next2Ph(V) AND NOT next2Ph(@-) AND nextPhW(isNotVowel) THEN glstop length 150 ENDIF IF nextPhW(3) OR nextPhW(V) OR nextPhW(@) OR nextPhW(@-) THEN length 300 ENDIF // PB "drej" vs. "dreje" IF thisPh(isWordEnd) THEN length 140 ENDIF FMT(vdiph/ai) endphoneme // CONSONANTS // PB added l/3 phoneme l liquid lengthmod 7 ChangePhoneme(l/3) CALL base/l endphoneme phoneme v // approximant, not fricative import_phoneme base/v# voicingswitch f endphoneme // PB Actually a kind of schwa = [ɐ]? - "byder" [bˈyðɐʌ] phoneme r // used for 'r' after a vowel (to create a diphthong) liquid lengthmod 7 ipa ɐ̯ IF nextPhW(isVowel) AND NOT nextPhW(?V) AND NOT nextPhW(V) THEN ChangePhoneme(R) ENDIF FMT(r/a_) endphoneme phoneme R lengthmod 6 liquid ipa ʁ FMT(r/aa) endphoneme // don't weaken consonants at end of word or before a stop phoneme s vls alv frc sibilant 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(p) OR nextPh(t) OR nextPh(k) THEN WAV(ufric/s!) ENDIF WAV(ufric/s) endphoneme phoneme p vls blb stop voicingswitch b lengthmod 7 Vowelin f1=0 f2=1000 -50 -100 f3=-200 80 amp=11 Vowelout f1=0 f2=1000 -500 -350 f3=-300 80 rms=22 IF nextPh(isPause2) THEN WAV(ustop/p_unasp) ELIF nextPh(r) THEN WAV(ustop/pr, 70) ELIF nextPh(R) OR nextPh(R2) THEN WAV(ustop/pr) ELIF nextPh(@-) THEN WAV(ustop/p_unasp) ELIF nextPh(l) THEN WAV(ustop/pl) ENDIF WAV(ustop/p) endphoneme phoneme t vls alv stop voicingswitch d lengthmod 7 Vowelin f1=0 f2=1700 -300 300 f3=-100 80 Vowelout f1=0 f2=1700 -300 250 f3=-100 80 rms=20 IF nextPh(r) OR nextPh(R) OR nextPh(R2) THEN WAV(ustop/tr) ENDIF WAV(ustop/t, 90) endphoneme phoneme j liquid palatal lengthmod 7 IF nextPhW(isVowel) THEN NextVowelStarts VowelStart(j/j@) VowelStart(j/ja) VowelStart(j/je,-40) VowelStart(j/ji) VowelStart(j/jo) VowelStart(j/ju) EndSwitch Vowelout len=70 VowelEnding(j/xj, -30) IF prevPh(isPause) THEN FMT(j/_j) ENDIF ELSE // no vowel follows Vowelout len=70 FMT(j/j_) ENDIF endphoneme