Пример #1
0
        public void ImportMidiAndSaveToFile(string pMidiFile, string pXmlFile, string pArtist,
                                            string pTitle, int pTrack, int pBpm, int pSkipBeats)
        {
            var sequence = MidiSequence.Import(pMidiFile);

            var track = sequence.GetTracks()[pTrack];

            MidiEventCollection midiEvents = track.Events;

            var midiImporter = new GuitarMidiImporter(midiEvents, pBpm, pSkipBeats);
            var song         = new Song()
            {
                Author = pArtist,
                Name   = pTitle,
            };
            var xmlScoreWriter = new XmlScoreWriter(song, PlayingMode.EletricGuitarScore, midiImporter.ScoreNotes);

            if (File.Exists(pXmlFile))
            {
                File.Delete(pXmlFile);
            }

            xmlScoreWriter.SaveXmlNotesToFile(pXmlFile);

            Assert.IsTrue(File.Exists(pXmlFile));
        }
Пример #2
0
        public void NoteDuration_NewInitializationWithoutFinalization()
        {
            var midiEvents = new MidiEventCollection();

            midiEvents.Add(new NoteOn(0, 1, "C4", 100));
            midiEvents.Add(new NoteOn(0, 1, "C4", 100));

            var midiImporter = new GuitarMidiImporter(midiEvents, 120);
        }
Пример #3
0
        public void Skip3Beats()
        {
            var midiEvents = new MidiEventCollection();

            midiEvents.Add(new NoteOn(0, 1, "C4", 100));
            midiEvents.Add(new NoteOn(120, 1, "C4", 0));

            var midiImporter = new GuitarMidiImporter(midiEvents, 120, 3);

            var firstScoreNote = midiImporter.ScoreNotes.ElementAt(0).Value;

            Assert.AreEqual(1 + 3, firstScoreNote.Beat);
            Assert.AreEqual(0, firstScoreNote.Tick);
        }
Пример #4
0
        //private static string MIDI_for_whom_the_bell_tolls = TestConfig.AudioPath + "metallica-for_whom_the_bell_tolls.mid";

        private void TestFirstNotePosition(NoteValue pNoteValue, string pNoteId, int pString, int pPosition)
        {
            var midiEvents = new MidiEventCollection();

            midiEvents.Add(new NoteOn(0, 1, pNoteId, 100));
            midiEvents.Add(new NoteOn(120, 1, pNoteId, 0));

            var midiImporter = new GuitarMidiImporter(midiEvents, 120);

            var firstScoreNote = midiImporter.ScoreNotes.ElementAt(0).Value;

            Assert.AreEqual(pNoteValue, firstScoreNote.Note.Value, firstScoreNote.NoteId);
            Assert.AreEqual(pString, firstScoreNote.NotePositions.ElementAt(0).Value.String, firstScoreNote.NoteId);
            Assert.AreEqual(pPosition, firstScoreNote.NotePositions.ElementAt(0).Value.Fret, firstScoreNote.NoteId);
        }
Пример #5
0
        public void NoteDuration_AdmitTheSameNote()
        {
            var midiEvents = new MidiEventCollection();

            midiEvents.Add(new NoteOn(0, 1, "C4", 100));
            midiEvents.Add(new NoteOn(0, 1, "C4", 100));

            midiEvents.Add(new NoteOn(120, 1, "C4", 0));
            midiEvents.Add(new NoteOn(120, 1, "C4", 0));

            var midiImporter = new GuitarMidiImporter(midiEvents, 120);

            Assert.AreEqual(2, midiImporter.ScoreNotes.Count);

            var firstChord = midiImporter.ScoreNotes.Where(p => (p.Value.Beat == 1) &&
                                                           (p.Value.Tick == 0)).ToList();

            Assert.AreEqual(2, firstChord.Count);
        }