A.12 RhythmClarifier Klassenreferenz 255 right dieser Rasterpunkt bildet die rechte Intervallgrenze Rückgabe: Nummer des Rasterpunkts { for (int i = left+1; i < right ; i++) if (v_ev[i] && v_ev[i]→is_note() && weight(i) > w) return i; return −1; } void clarify_notes () Optimiert die Darstellung der Noten. Die zugrundeliegenden Regeln werden im Abschnitt 4.2.1 beschrieben. { int n = v_ev.size(); for (int left =1; left < n−1; left++) { if (v_ev[left] && v_ev[left]→is_note()) { int stronger_pos2 = 0; // für R.2: Pos. d . 1. um 1 schwereren Schlags int stronger_pos3 = 0; // für R.3: dito zw. attack_pos und right int attack_pos = left ; // Pos. des Notenanfangs int equal_weights = 0; // Anzahl d. mit weight(left ) ident . Gewichte int right ; for ( right = left+1; right<n && !v_ev[right]; right++) { if (weight( left ) == weight(right)) equal_weights++; if (stronger_pos3 == 0 && weight(right) > weight(left)) stronger_pos3 = right; // prüfe Regel 1 if (weight(right) − weight( left ) > 1) { divide_at(right ); // dann zerlegen stronger_pos2 = 0; // Aufzeichnungen von Regel 2 löschen left = right ; } // prüfe Regel 2 else if (weight(right) − weight( left ) == 1) { if (stronger_pos2 > 0) // schon eine Zerlegung vorgemerkt? { divide_at(stronger_pos2); // dann dort zerlegen left = right ; stronger_pos2 = −1; // keine weiteren Zerl . für diesen Notenwert