public byte[] CreateMidiFile() { var loader = File.ReadAllBytes(_filePath); switch (_extension) { case ".gp3": _gpfile = new GP3File(loader); _gpfile.readSong(); break; case ".gp4": _gpfile = new GP4File(loader); _gpfile.readSong(); break; case ".gp5": _gpfile = new GP5File(loader); _gpfile.readSong(); break; case ".gpx": _gpfile = new GP6File(loader); _gpfile.readSong(); _gpfile = _gpfile.self; //Replace with transferred GP5 file break; case ".gp": var stream = new MemoryStream(); using (var unzip = new Unzip(_filePath)) { unzip.Extract("Content/score.gpif", stream); stream.Position = 0; var sr = new StreamReader(stream); var gp7Xml = sr.ReadToEnd(); _gpfile = new GP7File(gp7Xml); _gpfile.readSong(); _gpfile = _gpfile.self; //Replace with transferred GP5 file } break; default: Logger.Error("Unknown File Format"); break; } Logger.Debug("Done"); var song = new Native.Format(_gpfile); return(song.ToMidi().createBytes().ToArray()); }
public Track(GPFile song, int number, List <GuitarString> strings = null, List <Measure> measures = null) { this.song = song; this.number = number; if (strings != null) { this.strings = strings; } if (measures != null) { this.measures = measures; } }
public static GPFile Create(string filename, byte[] content) { 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; } GPFile gpfile = null; switch (version) { case 3: gpfile = new GP3File(content); gpfile.readSong(); break; case 4: gpfile = new GP4File(content); gpfile.readSong(); break; case 5: gpfile = new GP5File(content); gpfile.readSong(); break; case 6: gpfile = new GP6File(content); gpfile.readSong(); gpfile = gpfile.self; //Replace with transferred GP5 file break; case 7: string archiveName = filename.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: Log.Debug("Unknown File Format"); break; } return(gpfile); }
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(); */ }