AlphaTab.Importer.Gp3To5Importer.ReadChord C# (CSharp) Method

ReadChord() public method

public ReadChord ( Beat beat ) : void
beat Beat
return void
        public void ReadChord(Beat beat)
        {
            var chord = new Chord();
            var chordId = Std.NewGuid();
            if (_versionNumber >= 500)
            {
                Data.Skip(17);
                chord.Name = ReadStringByteLength(21);
                Data.Skip(4);
                chord.FirstFret = ReadInt32();
                for (int i = 0; i < 7; i++)
                {
                    var fret = ReadInt32();
                    if (i < chord.Strings.Count)
                    {
                        chord.Strings.Add(fret);
                    }
                }
                Data.Skip(32);
            }
            else
            {
                if (Data.ReadByte() != 0) // mode1?
                {
                    // gp4
                    if (_versionNumber >= 400)
                    {
                        // Sharp (1)
                        // Unused (3)
                        // Root (1)
                        // Major/Minor (1)
                        // Nin,Eleven or Thirteen (1)
                        // Bass (4)
                        // Diminished/Augmented (4)
                        // Add (1)
                        Data.Skip(16);
                        chord.Name = (ReadStringByteLength(21));
                        // Unused (2)
                        // Fifth (1)
                        // Ninth (1)
                        // Eleventh (1)
                        Data.Skip(4);
                        chord.FirstFret = (ReadInt32());
                        for (int i = 0; i < 7; i++)
                        {
                            var fret = ReadInt32();
                            if (i < chord.Strings.Count)
                            {
                                chord.Strings.Add(fret);
                            }
                        }
                        // number of barres (1)
                        // Fret of the barre (5)
                        // Barree end (5)
                        // Omission1,3,5,7,9,11,13 (7)
                        // Unused (1)
                        // Fingering (7)
                        // Show Diagram Fingering (1)
                        // ??
                        Data.Skip(32);
                    }
                    else
                    {
                        // unknown
                        Data.Skip(25);
                        chord.Name = ReadStringByteLength(34);
                        chord.FirstFret = ReadInt32();
                        for (int i = 0; i < 6; i++)
                        {
                            var fret = ReadInt32();
                            chord.Strings.Add(fret);
                        }
                        // unknown
                        Data.Skip(36);
                    }
                }
                else
                {
                    int strings = _versionNumber >= 406 ? 7 : 6;

                    chord.Name = ReadStringIntByte();
                    chord.FirstFret = ReadInt32();
                    if (chord.FirstFret > 0)
                    {
                        for (int i = 0; i < strings; i++)
                        {
                            var fret = ReadInt32();
                            if (i < chord.Strings.Count)
                            {
                                chord.Strings.Add(fret);
                            }
                        }
                    }
                }
            }

            if (!string.IsNullOrEmpty(chord.Name))
            {
                beat.ChordId = chordId;
                beat.Voice.Bar.Staff.Track.Chords[beat.ChordId] = chord;
            }
        }