254 Dokumentation des Programmoduls RhythmClarifier A.12.1 Ausführliche Beschreibung Diese Klasse repräsentiert einen Taktoptimierer, der die Darstellung von Noten und Pausen auf Basis der zugrundeliegenden Taktmetrik anpaßt. Für die interne Berechnung der Noten- und Pausenzerlegungen wird der Vektor v_ev mit Zeigern auf die Taktereignisse angelegt. Das Element v_ev[k] bezeichnet dabei den Zeiger auf das Ereignis mit Einsatzzeit k · d, wobei d die Pulsdistanz des minimalen metrischen Levels bezeichnet. Setzt dort kein Event (S. 220) ein, enthält v_ev[k] einen Nullzeiger. Der Vektor v_ev stellt also ein über die Taktereignisse gelegtes \"Pulsraster\" dar. A.12.2 Beschreibung der Konstruktoren und Destruktoren RhythmClarifier (Measure & m) [explicit] Konstruktor. Parameter: m Referenz auf den zu optimierenden Takt. : c_measure(m), c_weighter(m.time_sig(), m.time_sig()) { m.close (); m.merge_events(); Rational grid_dist = Rational(1, m.shortest_duration().denom()); grid_dist = min(grid_dist, Rational(1, m.time_sig().denom())); assert (m.time_sig() % grid_dist == 0); c_weighter.rebuild(grid_dist); int grid_size = c_weighter.num_weights(); v_ev.resize(grid_size ); v_divided.resize(grid_size ); for (int i=0; i < grid_size; i++) { v_ev[i] = c_measure.event(grid_dist ∗ i); v_divided[i] = false; } } A.12.3 Dokumentation der Elementfunktionen int bigger_note_weight (int w, int left, int right) [protected] Liefert den ersten Rasterpunkt zwischen zwei gegebenen Randpunkten zurück, auf der zum einen eine Note (S. 241) einsetzt und deren Gewicht zum anderen größer als ein vorgegebener Wert ausfällt. Parameter: w die zu berücksichtigen Gewichte müssen über diesem Wert liegen left dieser Rasterpunkt bildet die linke Intervallgrenze