public void ReadTrack()
{
var newTrack = new Track(1);
_score.AddTrack(newTrack);
var flags = Data.ReadByte();
newTrack.Name = ReadStringByteLength(40);
newTrack.IsPercussion = (flags & 0x01) != 0;
var stringCount = ReadInt32();
var tuning = new FastList<int>();
for (int i = 0; i < 7; i++)
{
var stringTuning = ReadInt32();
if (stringCount > i)
{
tuning.Add(stringTuning);
}
}
newTrack.Tuning = tuning.ToArray();
var port = ReadInt32();
var index = ReadInt32() - 1;
var effectChannel = ReadInt32() - 1;
Data.Skip(4); // Fretcount
if (index >= 0 && index < _playbackInfos.Count)
{
var info = _playbackInfos[index];
info.Port = port;
info.IsSolo = (flags & 0x10) != 0;
info.IsMute = (flags & 0x20) != 0;
info.SecondaryChannel = effectChannel;
newTrack.PlaybackInfo = info;
}
newTrack.Capo = ReadInt32();
newTrack.Color = ReadColor();
if (_versionNumber >= 500)
{
// flags for
// 0x01 -> show tablature
// 0x02 -> show standard notation
Data.ReadByte();
// flags for
// 0x02 -> auto let ring
// 0x04 -> auto brush
Data.ReadByte();
// unknown
Data.Skip(43);
}
// unknown
if (_versionNumber >= 510)
{
Data.Skip(4);
ReadStringIntByte();
ReadStringIntByte();
}
}