A.12 RhythmClarifier Klassenreferenz 259 } } } // keine Note oder Notenwert ≥ 1/4 ⇒ Balken endet davor else if (begin ≥ 0) found = true; if (found) // Balkengruppe gefunden? { if (begin < end) // besteht sie aus mehreren Noten? { // nur dann einen Balken erzeugen v_ev[begin]→set_beam_flag(’[’); // Balkenanfang setzen v_ev[end]→set_beam_flag(’]’); // Balkenende setzen } if (end > 0) i = end; // akt . Pos. noch einmal auf Balkenanfang prüfen found = false; // bereit für nächste Balkengruppe begin = end = −1; wmin = 1000; } else // noch kein endgültiges Balkenende gefunden? end = j; // dann den Balken bis zur akt. Note durchziehen } } void divide_at (int n) [protected] Erzeugt eine Zerlegung auf einem gegebenen Rasterpunkt. Parameter: n Position des Rasterpunkts { assert (n ≥ 0 && n < v_ev.size()); assert (v_ev[n] == 0); int i = n; // bis zum Einsatz des betroffenen Events zurückwandern while (i ≥ 0 && !v_ev[i]) i−−; // Event in zwei Teile zerlegen und beide Teilevents // im Event−Vektor referenzieren c_measure.split(c_weighter.beat_dist() ∗ n); v_ev[i] = c_measure.event(c_weighter.beat_dist() ∗ i); v_ev[n] = c_measure.event(c_weighter.beat_dist() ∗ n); v_divided[n] = true; } void divide_compound_events () Zerlegt, falls erforderlich, Ereignise, die nicht durch ein Einzelsymbol dargestellt werden können.