public static int RunExtractAndReturnExitCode(ExtractOptions opts) { if (!opts.PatchType.Equals("single")) { Console.WriteLine($"Sorry, I don't know how to extract {opts.PatchType} patches."); return(-1); } string inputFileName = opts.InputFileName; byte[] fileData = File.ReadAllBytes(inputFileName); Bank bank = new Bank(fileData); int sourcePatchNumber = PatchUtil.GetPatchNumber(opts.SourcePatchNumber); SinglePatch patch = bank.Singles[sourcePatchNumber]; int destinationPatchNumber = PatchUtil.GetPatchNumber(opts.DestinationPatchNumber); byte[] patchData = GenerateSystemExclusiveMessage(patch, destinationPatchNumber); // Write the data to the output file File.WriteAllBytes(opts.OutputFileName, patchData); return(0); }
public static int RunGenerateAndReturnExitCode(GenerateOptions opts) { if (!opts.PatchType.Equals("single")) { Console.WriteLine($"Sorry, I don't know how to generate {opts.PatchType} patches."); return(-1); } Console.WriteLine("OK, you want to generate a single patch."); Console.WriteLine($"And you want to call it '{opts.PatchName}'."); SinglePatch singlePatch = new SinglePatch(); // Override the patch defaults singlePatch.Name = opts.PatchName; singlePatch.Volume = 100; singlePatch.Effect = 1; byte[] data = GenerateSystemExclusiveMessage(singlePatch, PatchUtil.GetPatchNumber(opts.PatchNumber)); Console.WriteLine("Generated single patch as a SysEx message:"); Console.WriteLine(Util.HexDump(data)); // Write the data to the output file File.WriteAllBytes(opts.OutputFileName, data); return(0); }