216 Dokumentation des Programmoduls RhythmClarifier Liefert die Folgenlänge gesetzter Bits einer natürlichen Zahl zurück. • int ilog2 (int n) Liefert den ganzzahligen Anteil von log2 |n| zurück. • bool is_pow2 (int n) Liefert true, wenn n eine Zweierpotenz ist. • ostream & operator<< (ostream &os, const Duration &d) Der Ausgabeoperator schreibt eine textuelle Repräsentation der Dauer d auf den Ausgabe-Stream os. A.1.1 Ausführliche Beschreibung Diese Klasse repräsentiert eine Summe aus regulären musikalischen Dauern. Ein Noten- oder Pausenwert wird \"regulär\" genannt, wenn er als Summe aus Zwei-erpotenzen 8 = 2−1 + 2−3 ist somit regulär. dargestellt werden kann. Der Wert 5 Insbesondere können alle regulären Noten- und Pausenwerte als einfache Noten ggf. mit Überbindungen notiert werden. N-olen hingegen fallen in aller Regel nicht in diese Klasse. A.1.2 Beschreibung der Konstruktoren und Destruktoren Duration (const Rational & b, int d = 0) Konstruktor. Die Dauer einer Note (S. 241)- bzw. Pause kann durch einen Basiswert und einer Anzahl vonWertpunkten dargestellt werden. Der Basiswert einer punktierten Vier-telnote ist 1/4 und die Anzahl der Wertpunkte 1. Zusammengenommen entspricht die musikalische Dauer dieser Note (S. 241) dem Wert 3/8. Alternativ läßt sich eine punktierte Viertel also auch als Note (S. 241) mit Basiswert 3/8 und ohne Punkt beschreiben. Der Konstruktor sorgt dafür, daß r_base minimal und i_dots maximal gewählt werden. Parameter: b Basiswert d Anzahl der Wertpunkte : r_base(b), i_dots(d) { assert (is_pow2(b.denom())); Rational r = abs(); if (is_simple(1)) { i_dots = bit_run_length(r.numer())−1; r_base = Rational(1 « ilog2 (r .numer()), r.denom());