Zum Inhalt springen

Clock

Basis

Um alle Player-objekte zu stoppen, drücke Ctrl+. (Hold Ctrl und drücke Punkt). Das ist eine Tastenkombination für den Befehl:

Clock.clear()

Ändere das Tempo, oder BeatsperMinute. Default ist 120.

Clock.bpm = 144

Um zu sehen, war gespielt werden soll.

print(Clock)

Zeige was die Latenz (Verzoegerung) ist

print(Clock.latency)

Manchmal willst Du wissen, wenn der nächsten X Beat-Zyklus beginnt. Dazu verwenden wir die “mod” Methode benutzen. Zum Beispiel, wenn wir sehen wollen, wann der Beginn des nächsten 32 Beat-Zyklus ist, können wir tun:

print(Clock.mod(32))

Fortgeschritten

Die Uhr kann alles mit einer _call-Methode planen. Es braucht eine absolute Zeit Hinweis, um eine Funktion zu planen - Clock.schedule muss den Beat kennen, um etwas anzusprechen.

Clock.schedule() # raises TypeError

Plane ein Ereignis nach einer bestimmten Dauer - Clock.future muss wissen, wie viele Beats im voraus, um etwas zu nennen

Clock.future() # raises TypeError

Dies entspricht

Clock.schedule(lambda: print("hello"), Clock.now() + 4)
Clock.future(4, lambda: print("hello"))

Um etwas anderes zu planen

Clock.schedule(lambda: print("hello "))

Wir können etwas in n-Beats auslösen

Clock.every(4, lambda: print("hello"))

Rufe die aktuelle Zeit in Beats und füge 2 Beats hinzu. - Nützlich für zeitliche Planung.

print(Clock.now() + 2)

Ausgabebefehl auf der nächsten Bar

nextBar(Clock.clear)

With a decorator

@nextBar
def change():
Root.default=4
Scale.default="minor"
# etc etc

Du kannst Deine eigene Funktion erstellen und dekorieren, indem du .every auf einem Player-Objekt verwendest

@PlayerMethod
def test(self):
print(self.degree)
p1 >> pluck([0,4]).every(3, "test")

Und stoppe es mit

p1.never("test")