コード例 #1
0
    // 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));
    }
コード例 #2
0
        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);
        }