Exemple #1
0
 public void SetUp()
 {
     var(_, loadedStories) = InputsLoader.Load(new[] {
         "Samples/NoteAt0.s2ry",
         "Samples/HoldNoteFrom0To1000.s2ry",
     });
     OutputStory = new S2VXStory();
     Result      = NotesMerger.Merge(loadedStories, OutputStory);
 }
Exemple #2
0
        private void Merge(IEnumerable <Note> inputNotes,
                           IEnumerable <Note> expectedNotes,
                           TempoMap tempoMap,
                           VelocityMergingPolicy velocityMergingPolicy    = VelocityMergingPolicy.First,
                           VelocityMergingPolicy offVelocityMergingPolicy = VelocityMergingPolicy.Last,
                           ITimeSpan tolerance = null)
        {
            var settings = new NotesMergingSettings
            {
                VelocityMergingPolicy    = velocityMergingPolicy,
                OffVelocityMergingPolicy = offVelocityMergingPolicy,
                Tolerance = tolerance ?? new MidiTimeSpan()
            };

            var actualNotes = new NotesMerger().Merge(inputNotes, tempoMap, settings);

            MidiAsserts.AreEqual(
                expectedNotes.OrderBy(n => n.Time),
                actualNotes.OrderBy(n => n.Time),
                "Merging detached notes failed.");

            //

            var trackChunk = inputNotes.ToTrackChunk();

            trackChunk.MergeNotes(tempoMap, settings);

            MidiAsserts.AreEqual(
                expectedNotes.OrderBy(n => n.Time),
                trackChunk.GetNotes(),
                "Merging notes inside a track chunk failed.");

            //

            var midiFile = inputNotes.ToFile();

            midiFile.MergeNotes(settings);

            MidiAsserts.AreEqual(
                expectedNotes.OrderBy(n => n.Time),
                midiFile.GetNotes(),
                "Merging notes inside a file failed.");
        }