private Glyph CreateNoteHeadGlyph(Note n)
{
var isGrace = Container.Beat.GraceType != GraceType.None;
if (n.Beat.Voice.Bar.Staff.Track.IsPercussion)
{
var value = n.RealValue;
if (value <= 30 || value >= 67 || NormalKeys.ContainsKey(value))
{
return new NoteHeadGlyph(0, 0, Duration.Quarter, isGrace);
}
if (XKeys.ContainsKey(value))
{
return new DrumSticksGlyph(0, 0, isGrace);
}
if (value == 46)
{
return new HiHatGlyph(0, 0, isGrace);
}
if (value == 49 || value == 57)
{
return new DiamondNoteHeadGlyph(0, 0, isGrace);
}
if (value == 52)
{
return new ChineseCymbalGlyph(0, 0, isGrace);
}
if (value == 51 || value == 53 || value == 59)
{
return new RideCymbalGlyph(0, 0, isGrace);
}
return new NoteHeadGlyph(0, 0, Duration.Quarter, isGrace);
}
if (n.IsDead)
{
return new DeadNoteHeadGlyph(0, 0, isGrace);
}
if (n.HarmonicType == HarmonicType.None)
{
return new NoteHeadGlyph(0, 0, n.Beat.Duration, isGrace);
}
return new DiamondNoteHeadGlyph(0, 0, isGrace);
}