static void Main(string[] args) { if (args == null) { Console.WriteLine("Usage: GuitarPro-to-Midi filename"); return; } if (args.Length != 1) { Console.WriteLine("Usage: GuitarPro-to-Midi filename"); return; } string fileName = args[0]; if (!File.Exists(fileName)) { Console.WriteLine("ERROR: file" + fileName + " not found"); return; } byte[] bytes = File.ReadAllBytes(fileName); //Detect Version by Filename int version = 7; string fileEnding = Path.GetExtension(fileName); if (fileEnding.Equals(".gp3")) { version = 3; } if (fileEnding.Equals(".gp4")) { version = 4; } if (fileEnding.Equals(".gp5")) { version = 5; } if (fileEnding.Equals(".gpx")) { version = 6; } if (fileEnding.Equals(".gp")) { version = 7; } switch (version) { case 3: gpfile = new GP3File(bytes); gpfile.readSong(); break; case 4: gpfile = new GP4File(bytes); gpfile.readSong(); break; case 5: gpfile = new GP5File(bytes); gpfile.readSong(); break; case 6: gpfile = new GP6File(bytes); gpfile.readSong(); gpfile = gpfile.self; //Replace with transferred GP5 file break; /* case 7: * string archiveName = url.Substring(8).Replace("%20"," "); * byte[] buffer = new byte[8200000]; * MemoryStream stream = new MemoryStream(buffer); * using (var unzip = new Unzip(archiveName)) * { * //Console.WriteLine("Listing files in the archive:"); * ListFiles(unzip); * * unzip.Extract("Content/score.gpif", stream); * stream.Position = 0; * var sr = new StreamReader(stream); * string gp7xml = sr.ReadToEnd(); * * gpfile = new GP7File(gp7xml); * gpfile.readSong(); * gpfile = gpfile.self; //Replace with transferred GP5 file * * } * break;*/ default: Console.WriteLine("Unknown File Format"); break; } Console.WriteLine("Done"); var song = new Native.NativeFormat(gpfile); var midi = song.toMidi(); List <byte> data = midi.createBytes(); var dataArray = data.ToArray(); using (var fs = new FileStream("output.mid", FileMode.OpenOrCreate, FileAccess.ReadWrite)) { fs.Write(dataArray, 0, dataArray.Length); } //Create Example Track (delete) /* * MidiExport.MidiExport midi = new MidiExport.MidiExport(); * midi.fileType = 2; * midi.ticksPerBeat = 960; * * MidiExport.MidiTrack track = new MidiExport.MidiTrack(); * track.messages.Add(new MidiExport.MidiMessage("track_name",new string[] { "untitled" },0)); * track.messages.Add(new MidiExport.MidiMessage("time_signature", new string[] {"4","4","24","8" }, 0)); * track.messages.Add(new MidiExport.MidiMessage("control_change", new string[] { "0","7", "100" }, 0)); * track.messages.Add(new MidiExport.MidiMessage("program_change", new string[] { "0", "48" }, 0)); * track.messages.Add(new MidiExport.MidiMessage("note_on", new string[] { "0", "55","91" }, 0)); * track.messages.Add(new MidiExport.MidiMessage("note_on", new string[] { "0", "55", "0" }, 256)); * track.messages.Add(new MidiExport.MidiMessage("end_of_track", new string[] { }, 0)); * midi.midiTracks.Add(track); * midi.createBytes(); */ }
private IEnumerator OutputRoutine(string url) { var loader = new WWW(url); yield return(loader); //Detect Version by Filename int version = 7; string fileEnding = Path.GetExtension(url); if (fileEnding.Equals(".gp3")) { version = 3; } if (fileEnding.Equals(".gp4")) { version = 4; } if (fileEnding.Equals(".gp5")) { version = 5; } if (fileEnding.Equals(".gpx")) { version = 6; } if (fileEnding.Equals(".gp")) { version = 7; } switch (version) { case 3: gpfile = new GP3File(loader.bytes); gpfile.readSong(); break; case 4: gpfile = new GP4File(loader.bytes); gpfile.readSong(); break; case 5: gpfile = new GP5File(loader.bytes); gpfile.readSong(); break; case 6: gpfile = new GP6File(loader.bytes); gpfile.readSong(); gpfile = gpfile.self; //Replace with transferred GP5 file break; case 7: string archiveName = url.Substring(8).Replace("%20", " "); byte[] buffer = new byte[8200000]; MemoryStream stream = new MemoryStream(buffer); using (var unzip = new Unzip(archiveName)) { //Console.WriteLine("Listing files in the archive:"); ListFiles(unzip); unzip.Extract("Content/score.gpif", stream); stream.Position = 0; var sr = new StreamReader(stream); string gp7xml = sr.ReadToEnd(); gpfile = new GP7File(gp7xml); gpfile.readSong(); gpfile = gpfile.self; //Replace with transferred GP5 file } break; default: Debug.Log("Unknown File Format"); break; } Debug.Log("Done"); var song = new Native.NativeFormat(gpfile); var midi = song.toMidi(); List <byte> data = midi.createBytes(); var dataArray = data.ToArray(); using (var fs = new FileStream("output.mid", FileMode.OpenOrCreate, FileAccess.ReadWrite)) { fs.Write(dataArray, 0, dataArray.Length); } //Create Example Track (delete) /* * MidiExport.MidiExport midi = new MidiExport.MidiExport(); * midi.fileType = 2; * midi.ticksPerBeat = 960; * * MidiExport.MidiTrack track = new MidiExport.MidiTrack(); * track.messages.Add(new MidiExport.MidiMessage("track_name",new string[] { "untitled" },0)); * track.messages.Add(new MidiExport.MidiMessage("time_signature", new string[] {"4","4","24","8" }, 0)); * track.messages.Add(new MidiExport.MidiMessage("control_change", new string[] { "0","7", "100" }, 0)); * track.messages.Add(new MidiExport.MidiMessage("program_change", new string[] { "0", "48" }, 0)); * track.messages.Add(new MidiExport.MidiMessage("note_on", new string[] { "0", "55","91" }, 0)); * track.messages.Add(new MidiExport.MidiMessage("note_on", new string[] { "0", "55", "0" }, 256)); * track.messages.Add(new MidiExport.MidiMessage("end_of_track", new string[] { }, 0)); * midi.midiTracks.Add(track); * midi.createBytes(); */ }