private void ParseTrack(IXmlNode node)
{
var track = new Track(1);
var trackId = node.GetAttribute("id");
node.IterateChildren(c =>
{
if (c.NodeType == XmlNodeType.Element)
{
switch (c.LocalName)
{
case "Name":
track.Name = GetValue(c);
break;
case "Instrument":
var instrumentName = c.GetAttribute("ref");
if (instrumentName.EndsWith("-gs") || instrumentName.EndsWith("GrandStaff"))
{
track.EnsureStaveCount(2);
}
break;
case "ShortName":
track.ShortName = GetValue(c);
break;
//TODO: case "Lyrics": parseLyrics(track, c);
case "Properties":
ParseTrackProperties(track, c);
break;
case "GeneralMidi":
ParseGeneralMidi(track, c);
break;
case "PlaybackState":
var state = GetValue(c);
track.PlaybackInfo.IsSolo = state == "Solo";
track.PlaybackInfo.IsMute = state == "Mute";
break;
}
}
});
_tracksById[trackId] = track;
}