private void BarMeta(Bar bar)
{
var masterBar = bar.MasterBar;
if (masterBar.Index > 0)
{
var previousMasterBar = masterBar.PreviousMasterBar;
var previousBar = bar.PreviousBar;
if (previousMasterBar.TimeSignatureDenominator != masterBar.TimeSignatureDenominator || previousMasterBar.TimeSignatureNumerator != masterBar.TimeSignatureNumerator)
{
_builder.Append("\\ts ");
_builder.Append(masterBar.TimeSignatureNumerator);
_builder.Append(" ");
_builder.Append(masterBar.TimeSignatureDenominator);
_builder.AppendLine();
}
if (previousMasterBar.KeySignature != masterBar.KeySignature)
{
_builder.Append("\\ks ");
switch (masterBar.KeySignature)
{
case -7:
_builder.Append("cb");
break;
case -6:
_builder.Append("gb");
break;
case -5:
_builder.Append("db");
break;
case -4:
_builder.Append("ab");
break;
case -3:
_builder.Append("eb");
break;
case -2:
_builder.Append("bb");
break;
case -1:
_builder.Append("f");
break;
case 0:
_builder.Append("c");
break;
case 1:
_builder.Append("g");
break;
case 2:
_builder.Append("d");
break;
case 3:
_builder.Append("a");
break;
case 4:
_builder.Append("e");
break;
case 5:
_builder.Append("b");
break;
case 6:
_builder.Append("f#");
break;
case 7:
_builder.Append("c#");
break;
}
_builder.AppendLine();
}
if (bar.Clef != previousBar.Clef)
{
_builder.Append("\\clef ");
switch (bar.Clef)
{
case Clef.Neutral:
_builder.Append("n");
break;
case Clef.C3:
_builder.Append("c3");
break;
case Clef.C4:
_builder.Append("c4");
break;
case Clef.F4:
_builder.Append("f4");
break;
case Clef.G2:
_builder.Append("g2");
break;
}
_builder.AppendLine();
}
if (masterBar.TempoAutomation != null)
{
_builder.Append("\\tempo ");
_builder.Append(masterBar.TempoAutomation.Value);
_builder.AppendLine();
}
}
if (masterBar.IsRepeatStart)
{
_builder.Append("\\ro ");
_builder.AppendLine();
}
if (masterBar.IsRepeatEnd)
{
_builder.Append("\\rc ");
_builder.Append(masterBar.RepeatCount + 1);
_builder.AppendLine();
}
}