256 Dokumentation des Programmoduls RhythmClarifier } else if (stronger_pos2 == 0) // noch nichts vorgemerkt? stronger_pos2 = right; // dann merke aktuelle Position } } // prüfe Regel 3 if (stronger_pos3 > left && weight(attack_pos) > weight(right % n)) divide_at(stronger_pos3); // dann zerlege an aufgezeichnetem Splitpunkt // prüfe Regel 4 else if (stronger_pos3 > left && equal_weights > 0 && prev_stronger_weight(left) − weight(left)==1) divide_at(stronger_pos3); } } } void clarify_rests () Optimiert die Darstellung der Pausen. Die zugrundeliegenden Regeln werden im Abschnitt 4.2.2 beschrieben. { int n = v_ev.size(); int diff = 0; int equal_rests = 1; // Anzahl gleicher Pausen in Folge int strongest_right = 1; for (int left = 0; left < n−1; left++) { int attack_pos; int wl = symmetric_weight(left); int wr; if (v_ev[left] && v_ev[left]→is_rest()) { attack_pos = left; strongest_right = left+1; int right ; for ( right=left+1; right < n && !v_ev[right]; right++) { wl = symmetric_weight(left); wr = weight(right); // prüfe Regel 2 if (wr ≥ wl) { if ( right − left == diff) equal_rests++; else equal_rests = 1, diff = right−left ; divide_at(right ); left = right ;