I have adopted the phonetic structure documented here at Wikipedia for representing phonemes. The sections below give the details of the feature structures I have chosen to represent this.
The code fragment below shows the built-in feature structure assumed for consonants. This is defined by a library file and a user-defined feature structure can be implemented by modifying this file.
// Feature structures for Consonants
bool lateral, sonorant, voiced, aspirated;
enum manner { plosive, nasal, trill, tap, flap, fricative, approximant, affricate };
enum position { bilabial, labiodental, dental, alveolar, postalveolar,
retroflex, palatal, velar, uvular, pharyngeal, glottal,
epiglottal, dental_alveolar, alveolo_palatal, labial_velar,
labial_palatal };
enum mechanism { pulmonic, click, ejective, implosive };
feature phonation constraint { voiced, aspirated }; // add tone and loudness later
feature articulation constraint { manner, mechanism, sonorant, lateral };
feature consonant constraint { articulation, position, phonation };
position #bilabial is <position bilabial>;
position #labiodental is <position labiodental>;
position #dental is <position dental>;
position #alveolar is <position alveolar>;
position #postalveolar is <position postalveolar>;
position #retroflex is <position retroflex>;
position #palatal is <position palatal>;
position #velar is <position velar>;
position #uvular is <position uvular>;
position #pharyngeal is <position pharyngeal>;
position #glottal is <position glottal>;
position #epiglottal is <position epiglottal>;
position #dental_alveolar is <position dental_alveolar>;
position #labial_velar is <position labial_velar>;
position #alveolo_palatal is <position alveolo_palatal>;
position #labial_palatal is <position labial_palatal>;
articulation #plosive is <articulation <manner plosive> <mechanism pulmonic> -sonorant -lateral>;
articulation #nasal is <articulation <manner nasal> <mechanism pulmonic> +sonorant -lateral>;
articulation #trill is <articulation <manner trill> <mechanism pulmonic> -sonorant -lateral>;
articulation #tap is <articulation <manner tap> <mechanism pulmonic> -sonorant -lateral>;
articulation #flap is <articulation <manner flap> <mechanism pulmonic> -sonorant -lateral>;
articulation #lat_flap is <articulation <manner flap> <mechanism pulmonic> -sonorant +lateral>;
articulation #fricative is <articulation <manner fricative> <mechanism pulmonic> -sonorant -lateral>;
articulation #approximant is <articulation <manner approximant> <mechanism pulmonic> -sonorant +lateral>;
articulation #lat_fric is <articulation <manner fricative> <mechanism pulmonic> -sonorant -lateral>;
articulation #lat_approx is <articulation <manner approximant> <mechanism pulmonic> -sonorant +lateral>;
articulation #affricate is <articulation <manner affricate> <mechanism pulmonic> -sonorant -lateral>;
articulation #click is <articulation <mechanism click> -sonorant -lateral>;
articulation #lat_click is <articulation <mechanism click> -sonorant +lateral>;
articulation #implosive is <articulation <mechanism implosive> -sonorant -lateral>;
articulation #ejective is <articulation <mechanism ejective> -sonorant -lateral>;
phonation #voiced is <phonation +voiced>;
phonation #voiceless is <phonation -voiced>;
Blah blah.
The code fragment below shows the built-in feature structure assumed for vowels. This is defined by a library file and a user-defined feature structure can be implemented by modifying this file.
// Feature Structures for vowels
bool open, raised, mid, close, long;
bool front, near, central, back;
bool exolabial, rounded;
feature height constraint { open, raised, mid, close };
feature backness constraint { front, near, central, back };
feature roundness constraint { exolabial, rounded};
feature vowel constraint { height, backness, roundness, long };
height #open is <height +open -mid -raised -close>;
height #near_open is <height +open -mid +raised -close>;
height #open_mid is <height +open +mid -raised -close>;
height #mid is <height -open +mid -raised -close>;
height #close_mid is <height -open +mid -raised +close>;
height #near_close is <height -open -mid +raised +close>;
height #close is <height -open -mid -raised +close>;
backness #front is <backness +front -near -central -back>;
backness #near_front is <backness +front +near -central -back>;
backness #central is <backness -front -near +central -back>;
backness #near_back is <backness -front +near -central +back>;
backness #back is <backness -front -near -central +back>;
roundness #rounded is <roundness +rounded>;
roundness #unrounded is <roundness -rounded>;
Blah
The fragment below shows the syntax for defining a phonetic alphabet. By default, Languid uses the International Phonetic Alphabet, where each consonant and vowel implement the feature structures defined above.
phonemes myPhoneticAlphabet
{
"p" => <consonant #voiceless #bilabial #plosive>
"b" => <consonant #voiced #bilabial #plosive>
"t" => <consonant #voiceless #dental #plosive>
"d" => <consonant #voiced #dental #plosive>
}
Blah
The fragment below shows the syntax for defining an alphabet for a language.
alphabet Eikridet
{
// phoneme ascii representation
"a" => "ä"
"ɑ" => "a";
}
Blah
Copyright © 2005 Tony Jebson