//Принимает директории на генератор нот, на запакованный файл, и на хранилище нот, после чего генерирует ноты и добавляет их в указанную папку. public static void CreateSheet(string engien_path, string data_path, string sheet_path) { var work_path = Regex.Replace(data_path, @"\s", "_"); var smooth_path = Regex.Replace(work_path, "_", " "); var name = InterfaceFuncs.GetFileName(work_path); File.Move(data_path, work_path); var sheetMaker = new ProcessStartInfo(engien_path, $"{work_path} {name}"); sheetMaker.WindowStyle = ProcessWindowStyle.Hidden; sheetMaker.RedirectStandardOutput = true; sheetMaker.UseShellExecute = false; sheetMaker.CreateNoWindow = true; Process procCommand = Process.Start(sheetMaker); procCommand.WaitForExit(); foreach (var line in Directory.GetFiles(engien_path.Remove(engien_path.Length - 9, 9) + "bin\\Release")) { if (Regex.IsMatch(line, ".png")) { var dest = $@"{sheet_path}\{Regex.Match(line, @"[\\]+[^\\]+.png").Value.Remove(0, 1)}"; try { File.Move(line, dest); } catch (IOException e) { } } } foreach (var line in Directory.GetFiles(sheet_path)) { File.Move(line, Regex.Replace(line, "_", " ")); } File.Move(work_path, smooth_path); }
//Принимает директории на генератор нот, на хранилище нот, и на хранилище запакованных партитур, после чего генерирует необходимые файлы и добавляет их по указанным директориям // возвращает тройку пустых значений, если файл не был выбран public static Tuple <String, String, String> GetAndAddData(string engien_path, string sheet_path, string data_storage_path) { string midi_data_path = null; using (var dialog = new OpenFileDialog()) { if (dialog.ShowDialog() == DialogResult.OK) { midi_data_path = dialog.FileName; if (!Is_mid(midi_data_path)) { //throw new FormatException("Выбранный файл не является midi!"); MessageBox.Show("Выбранный файл не является midi!"); return(Tuple.Create("", "", "")); } CreateSheet(engien_path, midi_data_path, sheet_path); midi_data_path = Regex.Replace(midi_data_path, "_", " "); try { MIDIFuncs.SaveToData(new MIDINotesData(midi_data_path), $@"{data_storage_path}\{InterfaceFuncs.GetFileName(midi_data_path)}"); return(Tuple.Create(GetDate(), GetFileName(midi_data_path), MIDIFuncs.GetDuration(midi_data_path))); } catch (NotEnoughBytesException e) { MessageBox.Show("Входной файл имеет недопустимую для обработки внутреннюю конфигурацию", e.Message, MessageBoxButtons.OK, MessageBoxIcon.Stop); } } } return(Tuple.Create("", "", "")); }