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());
    }
예제 #2
0
 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;
     }
 }
예제 #3
0
        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);
        }
예제 #4
0
    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();
         */
    }
예제 #5
0
    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();
         */
    }