コード例 #1
0
ファイル: SequenceTests.cs プロジェクト: Kermalis/MidiSharp
        public void Transpose()
        {
            for (int steps = -7; steps <= 7; steps++)
            {
                MidiSequence seq1 = CreateScaleSequence();
                MidiSequence seq2 = new MidiSequence(seq1);
                seq2.Transpose(steps);

                var onEvents1  = seq1.SelectMany(t => t.Events).OfType <OnNoteVoiceMidiEvent>().ToArray();
                var offEvents1 = seq1.SelectMany(t => t.Events).OfType <OffNoteVoiceMidiEvent>().ToArray();

                var onEvents2  = seq2.SelectMany(t => t.Events).OfType <OnNoteVoiceMidiEvent>().ToArray();
                var offEvents2 = seq2.SelectMany(t => t.Events).OfType <OffNoteVoiceMidiEvent>().ToArray();

                Assert.AreEqual(onEvents1.Length, onEvents2.Length);
                Assert.AreEqual(offEvents1.Length, offEvents2.Length);
                Assert.AreEqual(onEvents1.Length, offEvents1.Length);

                for (int i = 0; i < onEvents1.Length; i++)
                {
                    Assert.AreEqual(onEvents1[i].Note + steps, onEvents2[i].Note);
                    Assert.AreEqual(offEvents1[i].Note + steps, offEvents2[i].Note);
                }
            }
        }