private void NoteEffects(Note note)
{
bool hasEffectOpen = false;
if (note.HasBend)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("be (");
for (int i = 0; i < note.BendPoints.Count; i++)
{
_builder.Append(note.BendPoints[i].Offset);
_builder.Append(" ");
_builder.Append(note.BendPoints[i].Value);
_builder.Append(" ");
}
_builder.Append(")");
}
switch (note.HarmonicType)
{
case HarmonicType.Natural:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("nh ");
break;
case HarmonicType.Artificial:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("ah ");
break;
case HarmonicType.Tap:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("th ");
break;
case HarmonicType.Pinch:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("ph ");
break;
case HarmonicType.Semi:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("sh ");
break;
}
if (note.IsTrill)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("tr ");
_builder.Append(note.TrillFret);
_builder.Append(" ");
switch (note.TrillSpeed)
{
case Duration.Sixteenth:
_builder.Append("16 ");
break;
case Duration.ThirtySecond:
_builder.Append("32 ");
break;
case Duration.SixtyFourth:
_builder.Append("64 ");
break;
}
}
if (note.Vibrato != VibratoType.None)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("v ");
}
if (note.SlideType == SlideType.Legato)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("sl ");
}
if (note.SlideType == SlideType.Shift)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("ss ");
}
if (note.IsHammerPullOrigin)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("h ");
}
if (note.IsGhost)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("g ");
}
if (note.Accentuated == AccentuationType.Normal)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("ac ");
}
else if (note.Accentuated == AccentuationType.Heavy)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("hac ");
}
if (note.IsPalmMute)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("pm ");
}
if (note.IsStaccato)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("st ");
}
if (note.IsLetRing)
{
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("lr ");
}
switch (note.LeftHandFinger)
{
case Fingers.Thumb:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("1 ");
break;
case Fingers.IndexFinger:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("2 ");
break;
case Fingers.MiddleFinger:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("3 ");
break;
case Fingers.AnnularFinger:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("4 ");
break;
case Fingers.LittleFinger:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("5 ");
break;
}
switch (note.RightHandFinger)
{
case Fingers.Thumb:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("1 ");
break;
case Fingers.IndexFinger:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("2 ");
break;
case Fingers.MiddleFinger:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("3 ");
break;
case Fingers.AnnularFinger:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("4 ");
break;
case Fingers.LittleFinger:
hasEffectOpen = EffectOpen(hasEffectOpen);
_builder.Append("5 ");
break;
}
EffectClose(hasEffectOpen);
}