private static void ConvertMidiFileToFromCsv(MidiFile midiFile, string outputFilePath, MidiFileCsvConversionSettings settings)
        {
            var csvConverter = new CsvConverter();

            csvConverter.ConvertMidiFileToCsv(midiFile, outputFilePath, true, settings);
            csvConverter.ConvertCsvToMidiFile(outputFilePath, settings);
        }
        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);
            }
        }
        public void ConvertCsvToMidiFile_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);

                using (var streamToRead = new MemoryStream())
                {
                    var midiFile = csvConverter.ConvertCsvToMidiFile(streamToRead, settings);
                    Assert.DoesNotThrow(() => { var l = streamToRead.Length; });
                }
            }
        }
Beispiel #4
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();
        }