// Initialize the four axis public PhoneManager() { emptyConsonant = new ConsonantPhone(); emptyConsonant.IPA = "'"; emptyConsonant.POA = "null"; emptyConsonant.MOA = "null"; emptyConsonant.FCB = "back"; emptyConsonant.Aspiration = "no"; emptyConsonant.Voiceness = "no"; emptyVowel = new VowelPhone(); emptyVowel.IPA = "ɿ"; emptyVowel.Openness = "close"; emptyVowel.Roundness = "unrounded"; emptyVowel.FCB = "front"; consonantHorizontal.Clear(); consonantVertical.Clear(); vowelHorizontal.Clear(); vowelVertical.Clear(); consonantHorizontal.Add(new StringIndexVector("nasal", 0)); consonantHorizontal.Add(new StringIndexVector("plosive", 2)); consonantHorizontal.Add(new StringIndexVector("fricative", 6)); consonantHorizontal.Add(new StringIndexVector("sibilant", 8)); consonantHorizontal.Add(new StringIndexVector("flap", 10)); consonantHorizontal.Add(new StringIndexVector("trill", 11)); consonantHorizontal.Add(new StringIndexVector("lateral", 12)); consonantHorizontal.Add(new StringIndexVector("ejective plosive", 13)); consonantHorizontal.Add(new StringIndexVector("ejective fricative", 14)); consonantHorizontal.Add(new StringIndexVector("ejective sibilant", 15)); consonantHorizontal.Add(new StringIndexVector("click", 16)); consonantHorizontal.Add(new StringIndexVector("implosive", 18)); consonantVertical.Add(new StringIndexVector("bilabial", 0)); consonantVertical.Add(new StringIndexVector("labiodental", 1)); consonantVertical.Add(new StringIndexVector("linguolabial", 2)); consonantVertical.Add(new StringIndexVector("dental", 3)); consonantVertical.Add(new StringIndexVector("alveolar", 4)); consonantVertical.Add(new StringIndexVector("postalveolar", 5)); consonantVertical.Add(new StringIndexVector("retroflex", 6)); consonantVertical.Add(new StringIndexVector("palatal", 7)); consonantVertical.Add(new StringIndexVector("velar", 8)); consonantVertical.Add(new StringIndexVector("uvular", 9)); consonantVertical.Add(new StringIndexVector("glottal", 10)); vowelHorizontal.Add(new StringIndexVector("open", 0)); vowelHorizontal.Add(new StringIndexVector("near-open", 1)); vowelHorizontal.Add(new StringIndexVector("half-open", 2)); vowelHorizontal.Add(new StringIndexVector("middle", 3)); vowelHorizontal.Add(new StringIndexVector("half-close", 4)); vowelHorizontal.Add(new StringIndexVector("near-close", 5)); vowelHorizontal.Add(new StringIndexVector("close", 6)); vowelVertical.Add(new StringIndexVector("front", 0)); vowelVertical.Add(new StringIndexVector("central", 2)); vowelVertical.Add(new StringIndexVector("back", 4)); }
public ConsonantPhone[][] getConsonantPool() { // Initialize the returning value ConsonantPhone[][] result = new ConsonantPhone[11][]; for (int i = 0; i < 11; i++) { result[i] = new ConsonantPhone[20]; } // Populate the returning value with the simple consonants foreach (ConsonantPhone cp in SimpleConsonants) { int h = 0, v = 0; // Get the horizontal index foreach (StringIndexVector siv in consonantHorizontal) { if (cp.MOA.Equals(siv.stringKey)) { h = siv.index; break; } } // Change the index for special case if (h == 6 || h == 8 || h == 16 || h == 18) { if (cp.Voiceness.Equals("yes")) { h++; } } if (h == 0) { if (cp.Aspiration.Equals("yes")) { h++; } } if (h == 2) { if (cp.Voiceness.Equals("yes")) { h += 2; } if (cp.Aspiration.Equals("yes")) { h++; } } // Get the vertical index foreach (StringIndexVector siv in consonantVertical) { if (cp.POA.Equals(siv.stringKey)) { v = siv.index; break; } } // Put the phone to its place result[v][h] = cp; } return(result); }