private static void ConvertMidiFileToCsv(
            MidiFile midiFile,
            MidiFileCsvLayout layout,
            TimeSpanType timeType,
            string[] expectedCsvLines,
            NoteFormat noteFormat             = NoteFormat.Events,
            NoteNumberFormat noteNumberFormat = NoteNumberFormat.NoteNumber,
            TimeSpanType noteLengthType       = TimeSpanType.Midi)
        {
            var filePath = Path.GetTempFileName();

            var settings = new MidiFileCsvConversionSettings
            {
                CsvLayout        = layout,
                TimeType         = timeType,
                NoteFormat       = noteFormat,
                NoteNumberFormat = noteNumberFormat,
                NoteLengthType   = noteLengthType
            };

            try
            {
                new CsvConverter().ConvertMidiFileToCsv(midiFile, filePath, true, settings);
                var actualCsvLines = File.ReadAllLines(filePath);
                CollectionAssert.AreEqual(expectedCsvLines, actualCsvLines, StringComparer.OrdinalIgnoreCase);
            }
            finally
            {
                File.Delete(filePath);
            }
        }
        private static void ConvertMidiFileToFromCsv(MidiFileCsvConversionSettings settings)
        {
            var tempPath        = Path.GetTempPath();
            var outputDirectory = Path.Combine(tempPath, Guid.NewGuid().ToString());

            Directory.CreateDirectory(outputDirectory);

            try
            {
                foreach (var filePath in TestFilesProvider.GetValidFilesPaths())
                {
                    var midiFile       = MidiFile.Read(filePath);
                    var outputFilePath = Path.Combine(outputDirectory, Path.GetFileName(Path.ChangeExtension(filePath, "csv")));

                    var csvConverter = new CsvConverter();
                    csvConverter.ConvertMidiFileToCsv(midiFile, outputFilePath, true, settings);
                    var convertedFile = csvConverter.ConvertCsvToMidiFile(outputFilePath, settings);

                    MidiAsserts.AreFilesEqual(midiFile, convertedFile, true, $"Conversion of '{filePath}' is invalid.");
                }
            }
            finally
            {
                Directory.Delete(outputDirectory, true);
            }
        }
        private static MidiFile ConvertCsvToMidiFile(
            MidiFileCsvLayout layout,
            TimeSpanType timeType,
            string[] csvLines,
            NoteFormat noteFormat             = NoteFormat.Events,
            NoteNumberFormat noteNumberFormat = NoteNumberFormat.NoteNumber,
            TimeSpanType noteLengthType       = TimeSpanType.Midi)
        {
            var filePath = Path.GetTempFileName();

            File.WriteAllLines(filePath, csvLines);

            var settings = new MidiFileCsvConversionSettings
            {
                CsvLayout        = layout,
                TimeType         = timeType,
                NoteFormat       = noteFormat,
                NoteNumberFormat = noteNumberFormat,
                NoteLengthType   = noteLengthType
            };

            try
            {
                var midiFile = new CsvConverter().ConvertCsvToMidiFile(filePath, settings);
                ConvertMidiFileToFromCsv(midiFile, filePath, settings);
                return(midiFile);
            }
            finally
            {
                File.Delete(filePath);
            }
        }
        public void ConvertMidiFileToFromCsv([Values] MidiFileCsvLayout layout)
        {
            var settings = new MidiFileCsvConversionSettings
            {
                CsvLayout = layout
            };

            ConvertMidiFileToFromCsv(settings);
        }
Exemple #5
0
        public void saveAsCsv(string filepath)
        {
            CsvConverter csv = new CsvConverter();
            MidiFileCsvConversionSettings setting = new MidiFileCsvConversionSettings();

            setting.TimeType         = TimeSpanType.Midi;
            setting.NoteLengthType   = TimeSpanType.Musical;
            setting.NoteFormat       = NoteFormat.Note;
            setting.NoteNumberFormat = NoteNumberFormat.Letter;
            csv.ConvertMidiFileToCsv(file, filepath, true, setting);
        }
        public void ConvertMidiFileToCsv_StreamIsNotDisposed([Values] MidiFileCsvLayout layout)
        {
            var settings = new MidiFileCsvConversionSettings
            {
                CsvLayout = layout
            };

            var csvConverter = new CsvConverter();

            using (var streamToWrite = new MemoryStream())
            {
                csvConverter.ConvertMidiFileToCsv(new MidiFile(), streamToWrite, settings);
                Assert.DoesNotThrow(() => { var l = streamToWrite.Length; });
            }
        }
        private static MidiFile ConvertCsvToMidiFile(MidiFileCsvLayout layout, TimeSpanType timeType, string[] csvLines)
        {
            var filePath = Path.GetTempFileName();

            File.WriteAllLines(filePath, csvLines);

            var settings = new MidiFileCsvConversionSettings
            {
                CsvLayout = layout,
                TimeType  = timeType
            };

            try
            {
                var midiFile = new CsvConverter().ConvertCsvToMidiFile(filePath, settings);
                ConvertMidiFileToFromCsv(midiFile, filePath, settings);
                return(midiFile);
            }
            finally
            {
                File.Delete(filePath);
            }
        }
Exemple #8
0
        public MidiComposition(string filePath, string mode)
        {
            CsvConverter csv = new CsvConverter();
            MidiFileCsvConversionSettings setting = new MidiFileCsvConversionSettings
            {
                TimeType         = TimeSpanType.Midi,
                NoteLengthType   = TimeSpanType.Musical,
                NoteFormat       = NoteFormat.Note,
                NoteNumberFormat = NoteNumberFormat.Letter
            };
            MidiFile midiFile = csv.ConvertCsvToMidiFile(filePath, setting);

            this.file           = midiFile;
            this.title          = "";
            this.midiFormat     = midiFile.OriginalFormat.ToString();
            this.timeDivision   = midiFile.TimeDivision.ToString();
            this.duration       = new MidiTime(midiFile.GetDuration(TimeSpanType.Midi).ToString(), midiFile.GetTempoMap());
            this.tracks         = new List <MidiTrack>();
            this.timeSignatures = new List <MidiTimeSignature>();
            this.tempo          = new List <MidiTempo>();
            initFrequencies(440);
            parseTracks(midiFile);
            initTimeSignatures();
        }
        private static void ConvertMidiFileToFromCsv(MidiFile midiFile, string outputFilePath, MidiFileCsvConversionSettings settings)
        {
            var csvConverter = new CsvConverter();

            csvConverter.ConvertMidiFileToCsv(midiFile, outputFilePath, true, settings);
            csvConverter.ConvertCsvToMidiFile(outputFilePath, settings);
        }