260 Dokumentation des Programmoduls RhythmClarifier Wenn die Funktionen clarify_notes oder clarify_rests Noten bzw. Pausen abge-spalten haben, deren Dauer z.B. 5/8 beträgt, müssen zwei Events mit kürzeren Dauern (1/2 + 1/8) und ggf. ein Haltebogen erzeugt werden. { Rational attack = 0; for (int i=0; i < v_ev.size (); i++) { if (! v_ev[i ]) continue; if (! v_ev[i]→duration().is_simple(1)) { list <Duration> durs; v_ev[i]→duration().split(1, durs); durs.pop_back(); // nach dem letzten Notenwert wird nicht zerlegt for ( list <Duration>::iterator it=durs.begin(); it!=durs.end(); ++it) { attack += it→abs(); assert (attack % c_weighter.beat_dist() == 0); divide_at((attack / c_weighter.beat_dist()).as_int()); } } else attack += v_ev[i]→duration().abs(); } } int note_weights_less (int w, int left, int right) [protected] Liefert die Anzahl der Noteneinsatzzeiten aus einem gegebenen offenen Intervall, deren Gewichte größer als ein vorgegebener Wert ausfallen. Parameter: w die zu berücksichtigen Gewichte müssen über diesem Wert liegen left dieser Rasterpunkt bildet die linke Intervallgrenze right dieser Rasterpunkt bildet die rechte Intervallgrenze Rückgabe: Anzahl der Einsatzzeiten { int num = 0; for (int i = left+1; i < right ; i++) if (v_ev[i] && v_ev[i]→is_note() && weight(i) < w) num++; return num; }