Saltearse al contenido

Reloj

Conceptos Básicos

Para detener todos los objetos del jugador, puedes presionar Ctrl+. (Mantén Ctrl y presiona el punto). Esto es un atajo para el comando:

Clock.clear()

Cambiar el tempo (esto tiene efecto en el siguiente compás). El valor predeterminado es 120.

Clock.bpm = 144

Para ver lo que está programado para reproducirse.

print(Clock)

Para ver cuál es la latencia

print(Clock.latency)

A veces quieres saber cuándo comienza el siguiente ciclo de X beats. Para hacer esto usamos el método ‘mod’. Por ejemplo, si queremos ver cuándo comienza el siguiente ciclo de 32 beats, podemos hacer

print(Clock.mod(32))

Avanzado

El reloj puede programar cualquier cosa con un método call. Necesita una pista de tiempo absoluto para programar funciones - Clock.schedule necesita saber el beat para llamar a algo.

Clock.schedule() # lanza TypeError

Programar un evento después de ciertas duraciones - Clock.future necesita saber cuántos beats adelante llamar a algo

Clock.future() # lanza TypeError

Estos son equivalentes

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

Para programar algo más

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

Podemos llamar a algo cada n beats

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

Obtener el reloj actual y sumar 2. - Útil para programar.

print(Clock.now() + 2)

Emitir comando en el siguiente compás

nextBar(Clock.clear)

Con un decorador

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

Puedes crear tu propia función y decorarla para poder usarla en un .every en un objeto Player

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

Y cancelarlo con

p1.never("test")