static void Main(string[] args) { if (args.Length < 2) { Console.WriteLine("MSBTool - Import and export FFXIV Perform note sheets\n\nUsage:\nEXPORT TO MIDI: MSBTool.exe export [PATH TO MSB FILE]\nCREATE MSB: MSBTool.exe create [PATH TO MIDI]\nIMPORT TO GAME: MSBTool.exe import [PATH TO MIDI] [PATH TO GAME INSTALL] [SLOT NUMBER IN-GAME]"); return; } switch (args[0]) { case "export": MsbOperations.ExportMsb(args[1], Path.GetFileNameWithoutExtension(args[1]) + ".mid"); break; case "create": { var data = MsbOperations.CreateMsbFromMidi(args[1]); File.WriteAllBytes(Path.GetFileNameWithoutExtension(args[1]) + ".msb", data); } break; case "import": MsbOperations.ImportMsb(args[1], args[3], int.Parse(args[2])); break; } }
private void midiButton_Click(object sender, RoutedEventArgs e) { int id = int.Parse((sender as System.Windows.Controls.Button).Uid); CommonOpenFileDialog browser = new CommonOpenFileDialog(); browser.Title = "Select Midi"; browser.Filters.Add(new CommonFileDialogFilter("Midi", ".mid")); if (browser.ShowDialog() == CommonFileDialogResult.Ok) { try { MsbOperations.ImportMsb(browser.FileName, FFXIVPath, id); } catch (IOException) { MessageBox.Show("Could not access game data. Please close FFXIV and run FFXIVConductor as admin", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } catch (Exception ex) { MessageBox.Show("An error occured. Please report this error.\n\n" + ex, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } MessageBox.Show($"Import to slot {id:D3} successful.", "OK!", MessageBoxButton.OK, MessageBoxImage.Asterisk); } }