Ir al contenido

Secuenciador por pasos

Un patrón de batería de cinco filas con el cabezal recorriendo dieciséis pasos

class Beat(pz.App):
pattern = ["x...x...x...x...", "....x.......x...", "x.x.x.x.x.x.x.x."]
step = 0
def view(self):
return ui.audio.StepSequencer(
pattern=self.pattern, labels=["Kick", "Snare", "Hat"], current=self.step,
on_change=lambda e: setattr(self, "pattern", e.value),
)

pattern es una lista de filas. Cada fila es una lista (True/False, o una velocidad de 0 a 1 que fija el brillo del paso) o un texto donde x (o 1) es un paso que suena y cualquier otro carácter es un silencio: "x...x...x...x..." es un bombo en cada pulso.

change entrega el patrón nuevo completo como lista de listas, listo para guardar. Un arrastre que empieza en un paso vacío pinta pasos; uno que empieza en un paso encendido los borra.

current es el paso que suena: el secuenciador enmarca esa columna y resalta sus pasos. Muévelo con un temporizador (pz.every) o con el secuenciador del motor (node.state["step"]). Los pasos se sombrean en grupos de group (4 por defecto) para contar los pulsos fácilmente.

Propiedad Por defecto Qué hace
pattern () Filas de pasos.
labels () Un nombre por fila (a la izquierda).
current -1 El paso que suena (-1 para ninguno).
color "accent" Color de los pasos que suenan.
group 4 Pasos por grupo sombreado.
cell 22 Tamaño de un paso en píxeles.

Evento: on_change con el patrón nuevo.