public void play(ASTPitch pitch) {
if (pitch.isBreake()) {
MidiPlayer.defaultPlayer.stop();
} else {
ASTKey toSearch = new ASTKey(0);
toSearch.setBeattime(pitch.getBeattime());
ASTScore score = (ASTScore) pitch.getParentContext().getContext(ASTContext.TYPE_SCORE);
ASTKey k = score.getAllKeys().get(pitch.getParentContext().staff.number - 1).floor(toSearch);
ASTDocument doc = (ASTDocument) pitch.getParentContext().getContext(ASTContext.TYPE_DOCUMENT);
int globalvz = k == null ? 0 : (k.getPitchSignature(k.signature)[pitch.noteHeight]);
int tons[] = new int[]{0, 2, 4, 5, 7, 9, 11};
int okt = (pitch.absoluteHeight - pitch.noteHeight) / 7;
MidiPlayer.defaultPlayer.play(okt * 12 + tons[pitch.noteHeight] + globalvz + 60 + pitch.noteSignature);
// MidiPlayer.defaultPlayer.play(pitch.absoluteHeight + 60);
}