Ejemplo n.º 1
0
        public void TestExpectationVector()
        {
            List <Note> notes = new List <Note>();

            notes.Add(new Note(1, false, false, new MidiInfo(60, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(62, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(64, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(65, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(67, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(69, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(71, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(72, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(72, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(71, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(69, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(68, Accidental.Flat)));
            notes.Add(new Note(1, false, false, new MidiInfo(67, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(65, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(64, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(62, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(61, Accidental.Flat)));
            notes.Add(new Note(1, false, false, new MidiInfo(60, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(59, Accidental.Natural)));
            notes.Add(new Note(1, false, false, new MidiInfo(60, Accidental.Natural)));

            Workspace w = new Workspace(-1, false, -1);

            Rhythm  rhythm = new Rhythm(notes);
            Measure m      = new Measure(w, rhythm);

            Group g = new Group(w);

            g.AddGroupElement(m);

            Key          cmajor = new Key(0, KeyMode.Major);
            List <float> larson = g.GetNoteExpectednessLarson(cmajor, Alphabet.GetScaleAlphabet(cmajor));

            for (int i = 0; i < notes.Count; i++)
            {
                // Test for local min/max.
                if (i > 0 && i < notes.Count - 1)
                {
                    if (larson[i - 1] < larson[i] && larson[i + 1] < larson[i])
                    {
                        Console.Write("MAX: ");
                    }
                    if (larson[i - 1] > larson[i] && larson[i + 1] > larson[i])
                    {
                        Console.Write("MIN: ");
                    }
                }
                Console.WriteLine("{0}: {1:0.###}", notes[i].ToString(), larson[i]);
            }


            /*	List<ScaleDegree> degrees = new List<ScaleDegree>();
             *      degrees.Add(new ScaleDegree(1, Alteration.None));
             *      degrees.Add(new ScaleDegree(4, Alteration.None));
             *
             *      List<Alphabet> result = Alphabet.GetConsistentAlphabetsForScaleDegrees(degrees, KeyMode.Major);
             *
             *      Console.WriteLine("Major");
             *      foreach (Alphabet a in result) {
             *              Console.WriteLine(a.ToString());
             *      }
             *
             *      result = Alphabet.GetConsistentAlphabetsForScaleDegrees(degrees, KeyMode.Minor);
             *
             *      Console.WriteLine("Minor");
             *      foreach (Alphabet a in result) {
             *              Console.WriteLine(a.ToString());
             *      }
             */
        }