Dúvida Primeiro Trabalho Maior - Until

Dúvida Primeiro Trabalho Maior - Until

por Gabriel Sarti Massukado -
Número de respostas: 1

Olá!

Estou com uma dúvida no funcionamento de loops no Pd. Quando faço um loop enviando um certo número n de iterações para um objeto (|n<--|until|--|ofelia f|), ele funciona normalmente, rodando o script n vezes. Entretanto, quando tento fazê-lo com um objeto de delay no meio (|n<--|until|--|del 5|--|ofelia f|), o script só é rodado uma vez. Essa implementação não deveria executar uma iteração do loop a cada 5 milissegundos? Estou deixando passar algo óbvio?

Obrigado!

Em resposta à Gabriel Sarti Massukado

Re: Dúvida Primeiro Trabalho Maior - Until

por Marcelo Queiroz -

Boa tarde!

Sim, sua descrição corresponde exatamente ao funcionamento desses objetos conforme a documentação: o [until] manda N bangs o mais rapidamente possível (todos com o mesmo timestamp teórico), e o [del 5] guarda apenas o último deles, passando-o pra frente 5ms depois.

Não é claro pra mim por que você gostaria de fazer uma sequência de ações com 5ms entre elas, quando esse delay não parece ter qualquer relação com as durações das notas ou qualquer característica essencial do sintetizador, o que sugere talvez uma falha de planejamento ou de compreensão do modo como o Pd encadeia as ações. Seria errado por exemplo introduzir delays artificiais apenas porque alguma coisa está acontecendo antes de outra que a deveria preceder: o jeito certo de lidar com sequenciamento de ações é usar o objeto [trigger].

Existe um objeto que guarda uma "fila" de mensagens e as vai repassando uma a uma com um delay fixo, que parece ser o que você estava tentando. Esse é o objeto [pipe], mas receio que talvez ele seja mais um problema do que uma solução no seu caso. Em particular, não é claro por que se desejaria fazer um laço fora de um objeto [ofelia], quando a própria função em Lua poderia ser usada para controlar o laço a partir de um único bang, e talvez com uma flexibilidade e facilidade de programação maiores. Lembre-se que em Lua você pode acessar qualquer estrutura do Pd através de objetos inicializados com ofArray(), ofValue() e ofSend(), além de outras funções (ofGetSampleRate(), ofInlet(), ofOutlet()...).