In Csound hat man auch die Möglichkeit, das Tempo einer Komposition zu ändern. Dafür gibt es ein Statement, das speziell hierfür eingeführt wurde: das t (tempo) Statement. Die Syntax sieht folgendermaßen aus:

t    p1    p2    p3    p4    ...

wobei:

  • p1 (muss 0 sein (Beginn einer Komposition)
  • p2 gibt das Anfangstempo vor (in Beats per minute)
  • p3, p5, … Zeiten in Beats (in nicht-absteigender Reihenfolge)
  • p4, p6, … Tempi für die entsprechenden Beat-Zeiten (p4 ist der Tempowert zur Action-Zeit p3, p6 ist der Tempowert zur Action-Zeit p5, etc…

Das klingt jetzt erstmal etwas verwirrend, aber mit diesem Code kann man das Tempo bestimmen und Accelerandos und Decelerandos festlegen. Wenn kein t Statement angegeben wird, nimmt Csound automatisch ein Tempo von 60 Beats per minute (bpm) an, daher entsprachen die Zeiten in unseren vorherigen Beispielen auch immer Sekunden.

Also, Zeitwerte und Tempowerte sind Paare von Punkten auf einem Tempo-Zeit – Graph. Wenn wir schreiben:

t0   120

dann wird die komplette Komposition in doppelter Geschwindigkeit (120 bpm) gespielt. Wenn wir schreiben:

t0   60   5   90   5   120   9   120   15   100

dann wird das Tempo folgendermaßen geändert:

Wir haben 60 bpm am Anfang. Das Tempo steigt linear auf 90 bpm in 5 Beats. Dann springt es sofort auf 120 bpm und bleibt dort bis zum 9. Beat, ohne Änderung. Am Ende verlangsamt sich das Tempo auf 100 bpm bis zum 15. Beat der Komposition.

Alle Accelerandos und Decelerandos wurden als lineare Interpolationen zwischen den Breakpoints berechnet. Das ist musikalisch nicht ideal, da unser Empfinden von Tempo eher einer exponentiellen Kurve folgt. Sobald ein Tempo festgelegt wurde, bleibt es so, bis ein anderes Tempo bestimmt wird. Das letzte festgelegte Tempo bleibt dann unverändert bis zum Ende der Sektion. Bleibt die Frage: Was ist eine Sektion?

Eine Sektion ist ein Teil einer Komposition, den Csound als separat ansieht. D.h. dass Csound zuerst alle Noten der ersten Sektion kompiliert, danach die Noten der zweiten Sektion, usw. Das Sortieren der Noten wird auch Sektion für Sektion durchgeführt (Funktionen bleiben allerdings über der kompletten Komposition gültig).

Man nehme folgende Komposition:

i1   0   2   80   8     ; first computes this section
i1   5   1   78   9     ; ... of the score ...
i1   3   1.5 80   8.07  ; ... and then, after the last note ...
s                       ; ... terminates this section
i1   0   4   60   6     ; starts again here ...
i1   3   2.7 65   6.01  ; ... and continues ...

Csound führt zunächst die ersten drei Noten aus, genauso, wie die Zeiten vorgegeben sind. Nach der dritten Note (nach 6 Sekunden), endet die erste Sektion. D.h. Csound resettet die Uhr und startet erneut von der ersten Zeile nach dem s Statement, welches das Ende der Sektion markiert.

Da beide Sektionen keine explizite Tempo-Angabe besitzen, merkt man diesen Reset der Uhr nur daran, dass die zweite Sektion zwar bei 0 beginnt, aber trotzdem nach der ersten Sektion gespielt wird. Noch wichtiger ist die Tatsache, dass eine Tempo-Angabe in der ersten Sektion in der folgenden Sektion komplett ignoriert würde:

t0  120
...
Sektion 1    ; section plays with 120bpm
...
s
...
Sektion 2    ; section plays with 60bpm
...

Hier würde Sektion 1 mit 120 bpm gespielt werden, aber Sektion 2 mit dem Standard-Tempo von 60 bpm. Falls man das Tempo auch hier ändern wolle, müsste man ebenfalls am Anfang wieder eine Tempo-Angabe machen:

t0  120
...
Sektion 1   ; section plays with 120bpm
...
s
t0  120
...
Sektion 2   ; section plays with 120 bpm
...

Soviel erstmal zum Tempo. Im nächsten Artikel will ich kurz erläutern, wie Csound intern arbeitet…