private void MetaData()
{
var anyMeta = false;
while (_sy == AlphaTexSymbols.MetaCommand)
{
var syData = _syData.ToString().ToLower();
if (syData == "title")
{
NewSy();
if (_sy == AlphaTexSymbols.String)
{
_score.Title = _syData.ToString();
}
else
{
Error("title", AlphaTexSymbols.String);
}
NewSy();
anyMeta = true;
}
else if (syData == "subtitle")
{
NewSy();
if (_sy == AlphaTexSymbols.String)
{
_score.SubTitle = _syData.ToString();
}
else
{
Error("subtitle", AlphaTexSymbols.String);
}
NewSy();
anyMeta = true;
}
else if (syData == "artist")
{
NewSy();
if (_sy == AlphaTexSymbols.String)
{
_score.Artist = _syData.ToString();
}
else
{
Error("artist", AlphaTexSymbols.String);
}
NewSy();
anyMeta = true;
}
else if (syData == "album")
{
NewSy();
if (_sy == AlphaTexSymbols.String)
{
_score.Album = _syData.ToString();
}
else
{
Error("album", AlphaTexSymbols.String);
}
NewSy();
anyMeta = true;
}
else if (syData == "words")
{
NewSy();
if (_sy == AlphaTexSymbols.String)
{
_score.Words = _syData.ToString();
}
else
{
Error("words", AlphaTexSymbols.String);
}
NewSy();
anyMeta = true;
}
else if (syData == "music")
{
NewSy();
if (_sy == AlphaTexSymbols.String)
{
_score.Music = _syData.ToString();
}
else
{
Error("music", AlphaTexSymbols.String);
}
NewSy();
anyMeta = true;
}
else if (syData == "copyright")
{
NewSy();
if (_sy == AlphaTexSymbols.String)
{
_score.Copyright = _syData.ToString();
}
else
{
Error("copyright", AlphaTexSymbols.String);
}
NewSy();
anyMeta = true;
}
else if (syData == "tempo")
{
NewSy();
if (_sy == AlphaTexSymbols.Number)
{
_score.Tempo = (int)_syData;
}
else
{
Error("tempo", AlphaTexSymbols.Number);
}
NewSy();
anyMeta = true;
}
else if (syData == "capo")
{
NewSy();
if (_sy == AlphaTexSymbols.Number)
{
_track.Capo = (int)_syData;
}
else
{
Error("capo", AlphaTexSymbols.Number);
}
NewSy();
anyMeta = true;
}
else if (syData == "tuning")
{
NewSy();
if (_sy == AlphaTexSymbols.Tuning) // we require at least one tuning
{
var tuning = new FastList<int>();
do
{
tuning.Add(ParseTuning(_syData.ToString().ToLower()));
NewSy();
} while (_sy == AlphaTexSymbols.Tuning);
_track.Tuning = tuning.ToArray();
}
else
{
Error("tuning", AlphaTexSymbols.Tuning);
}
anyMeta = true;
}
else if (syData == "instrument")
{
NewSy();
if (_sy == AlphaTexSymbols.Number)
{
var instrument = (int)(_syData);
if (instrument >= 0 && instrument <= 128)
{
_track.PlaybackInfo.Program = (int)_syData;
}
else
{
Error("instrument", AlphaTexSymbols.Number, false);
}
}
else if (_sy == AlphaTexSymbols.String) // Name
{
var instrumentName = _syData.ToString().ToLower();
_track.PlaybackInfo.Program = GeneralMidi.GetValue(instrumentName);
}
else
{
Error("instrument", AlphaTexSymbols.Number);
}
NewSy();
anyMeta = true;
}
else if(anyMeta)
{
Error("metaDataTags", AlphaTexSymbols.String, false);
}
else
{
// fall forward to bar meta if unknown score meta was found
break;
}
}
if (anyMeta)
{
if (_sy != AlphaTexSymbols.Dot)
{
Error("song", AlphaTexSymbols.Dot);
}
NewSy();
}
else if (_sy == AlphaTexSymbols.Dot)
{
NewSy();
}
}