Ejemplo n.º 1
0
        public void ScaleBuilder_GFlatMajor_Equivalent_To_FSharpMajor()
        {
            var gFlatMajor  = new ScaleBuilder().FromPattern(MidiValue.GFlat3, WellKnownIntervalPattern.Major);
            var fSharpMajor = new ScaleBuilder().FromPattern(MidiValue.FSharp3, WellKnownIntervalPattern.Major);

            Assert.Equal(gFlatMajor, fSharpMajor);
        }
Ejemplo n.º 2
0
        public void Scale_Starts_And_Ends_With_Same_Note()
        {
            var scale = new ScaleBuilder().FromPattern(new Note((int)MidiValue.MiddleC), WellKnownIntervalPattern.Major, 2);

            var firstNote  = scale.Values.First();
            var secondNote = scale.Values.Last();

            Assert.Equal(firstNote.Name, secondNote.Name);
        }
Ejemplo n.º 3
0
        public void ScaleBuilder_DMinor_Scale_Contains_One_Accidental()
        {
            var scale = new ScaleBuilder().FromPattern(MidiValue.D3, WellKnownIntervalPattern.Minor);

            Assert.Equal(MidiValue.D3, scale.Values.First().Value);
            Assert.Equal(MidiValue.E3, scale.Values.Skip(1).First().Value);
            Assert.Equal(MidiValue.F3, scale.Values.Skip(2).First().Value);
            Assert.Equal(MidiValue.G3, scale.Values.Skip(3).First().Value);
            Assert.Equal(MidiValue.A3, scale.Values.Skip(4).First().Value);
            Assert.Equal(MidiValue.BFlat3, scale.Values.Skip(5).First().Value);
            Assert.Equal(MidiValue.C4, scale.Values.Skip(6).First().Value);
        }
Ejemplo n.º 4
0
        public void ScaleBuilder_CMajor_Scale_Contains_No_Accidentals()
        {
            var scale = new ScaleBuilder().FromPattern(MidiValue.MiddleC, WellKnownIntervalPattern.Major);

            Assert.Equal(MidiValue.MiddleC, scale.Values.First().Value);
            Assert.Equal(MidiValue.D3, scale.Values.Skip(1).First().Value);
            Assert.Equal(MidiValue.E3, scale.Values.Skip(2).First().Value);
            Assert.Equal(MidiValue.F3, scale.Values.Skip(3).First().Value);
            Assert.Equal(MidiValue.G3, scale.Values.Skip(4).First().Value);
            Assert.Equal(MidiValue.A3, scale.Values.Skip(5).First().Value);
            Assert.Equal(MidiValue.B3, scale.Values.Skip(6).First().Value);
        }
Ejemplo n.º 5
0
        public void Scale_Mode_C_Major_Ionian_Mode_Is_C()
        {
            var cMajor = new ScaleBuilder().FromPattern(MidiValue.MiddleC, WellKnownIntervalPattern.Major);

            Assert.Equal("C", cMajor.Root().Name);

            string[] dModal = new string[] { "C", "D", "E", "F", "G", "A", "B", "C" };

            var modeNames = cMajor.ToMode(Mode.Ionian).Values.Select(n => n.Name);

            Assert.True(modeNames.SequenceEqual(dModal));
        }
Ejemplo n.º 6
0
        public void C_Major_Scale_Two_Octave_Does_Not_Contain_Accidentals_Notes()
        {
            var dictionary = new ScaleBuilder();

            var scale = dictionary.FromPattern(new Note((int)MidiValue.MiddleC), WellKnownIntervalPattern.Major, 2);

            foreach (var pitch in scale.Values)
            {
                Assert.DoesNotContain("b", pitch.MidiName);
                Assert.DoesNotContain("#", pitch.MidiName);
            }
        }
Ejemplo n.º 7
0
        public void ScaleBuilder_Chromatic_Scale_Notes_Ascend_Separated_By_Semitone()
        {
            var scale = new ScaleBuilder().FromPattern(MidiValue.MiddleC, WellKnownIntervalPattern.Chromatic);

            Note last = scale.Values.First();

            foreach (var note in scale.Values.Skip(1))
            {
                Assert.True(note > last);
                Assert.Equal(1, (note - last).Semitones);

                last = note;
            }
        }
Ejemplo n.º 8
0
        public void Scale_Transpose_Progresses_Around_Circle_Of_Fourths()
        {
            var cMajor = new ScaleBuilder().FromPattern(MidiValue.MiddleC, WellKnownIntervalPattern.Major);

            Assert.Equal("C", cMajor.Root().Name);

            string[] circleOfFourths = new string[] { "F", "A#", "D#", "G#", "C#", "F#", "B", "E", "A", "D", "G", "C" };

            var start = cMajor;

            foreach (string root in circleOfFourths)
            {
                var next = start.Transpose(Interval.Fourth);
                Assert.Equal(root, next.Root().Name);

                start = next;
            }
        }
Ejemplo n.º 9
0
        public void Scale_Major_Solfege_Is_Classic_Do_Re_Mi()
        {
            var cMajor = new ScaleBuilder().FromPattern(MidiValue.MiddleC, WellKnownIntervalPattern.Major);

            var majorSolfa = new Solfege[] {
                Solfege.Do,
                Solfege.Re,
                Solfege.Mi,
                Solfege.Fa,
                Solfege.So,
                Solfege.La,
                Solfege.Ti,
                Solfege.Do
            };

            var solfa = cMajor.AsSolfege();

            Assert.True(solfa.SequenceEqual(majorSolfa));
        }