4.3 TimeVar Avançado🔗
TimeVar Singletons🔗
Estas são instâncias do TimeVar que já existem quando o FoxDot é inicializado e representam valores variáveis, como a batida do relógio, e podem ser usadas da mesma forma que outras TimeVar:
| Nome da variável | Descrição |
|---|---|
now |
Representa a batida atual do relógio |
nextbar |
Representa a batida que iniciará a próxima barra |
Funções Avançadas🔗
Compensar a hora de início🔗
Digamos que você queira criar uma sequência de acordes que mude não no início de uma barra, mas após a primeira batida da barra. Como você faria isso com um TimeVar? Vamos dar uma olhada:
# Sequência original de acordes
var([0, 4, 5, 3], 4)
# Atualizar o valor após 1 batida da barra
var([3, 0, 4, 5, 3], [1, 4, 4, 4, 3])
Não é uma solução muito elegante, mas funcionaria. Seria mais fácil apenas deslocar o ponto inicial das durações em uma única batida, não é? Isso pode ser feito usando o parâmetro nomeado start da seguinte maneira:
Isso pode ser combinado com o singleton now para "iniciar" o ciclo de uma variável imediatamente. Por exemplo, podemos aumentar a amplitude de um player de 0 a 1 ao longo de 8 batidas, começando agora:
Duração infinita🔗
Às vezes, pode ser preferível que uma TimeVar atinja um valor e permaneça nesse valor. Para fazer isso, usamos uma variável especial chamada inf. É um singleton, o que significa que é uma instância de uma classe, mas existe apenas uma e pode ser usada para informar a uma TimeVar para não alterar seu valor uma vez atingido. Aqui está um exemplo de um linvar aumentando a amplitude para 1 ao longo de 8 batidas e, em seguida, permanecendo nesse valor:
Isso também pode ser combinado com os singletons now e nextbar para acelerar imediatamente:
Observe: ao calcular a duração total do ciclo a partir do TimeVar, inf é contado como 0 até ser alcançado uma vez que o TimeVar é implementado. Isso significa que o linvar usado acima iniciaria/reiniciaria seu ciclo a cada oitava batida.