Como criar listas eficientemente

Como criar listas eficientemente

por Luciana da Costa Marques -
Número de respostas: 3

Olá,

Eu não estou conseguindo gerar uma mensagem contendo uma lista para mandar para Rotimo. Eu estava tentando fazer na seguinte maneira:

Para a primeira faixa, fazer os cálculos de phi_a e phi_b com objetos tipo expr e afins, e guardá-los em duas variáveis, como $1 e $2. Eu estou colocando estes dois valores em um objeto tipo pack e fazendo a seguinte ligação: |pack $1 $2| -> |$1 $2( -> Rotimo

Para esta primeira faixa funcionou, mas tentei manualmente para a próxima faixa usando $3 e $4 e o pd acusa um erro de list index out of range para $3 e $4 mesmo fazendo as ligações corretas equivalentes para a segunda faixa. O que posso estar fazendo de errado?

Ademais, acredito que esta não seja uma boa solução escalável para depois usar dynamic patching. Alguém pode me dar alguma dica de como deixar isso melhor visando esta segunda parte do exercício?

Obrigada 

Em resposta à Luciana da Costa Marques

Re: Como criar listas eficientemente

por Luciana da Costa Marques -
Olá, alguém pode me dar uma ajuda nessa pergunta que eu fiz? Obrigada.
Em resposta à Luciana da Costa Marques

Re: Como criar listas eficientemente

por Gabriel Sarti Massukado -
Oi Luciana! Não sei se entendi exatamente o que você está perguntando, mas eu achei mais fácil utilizar um objeto ofelia que retorna uma ofTable (com os valores desejados) do que utilizar os objetos nativos do Pd. Isso ajuda?
Em resposta à Luciana da Costa Marques

Re: Como criar listas eficientemente

por Felipe Oliveira da Silva Netto -
Tem que ver o que cada objeto retorna em cada saída de cada outlet. As enumerações $1, $2, $3,... não são globais, mas relativas a cada saída de cada objeto ou mensagem. P. ex., se [obj] retorna uma lista de 4 valores, você pode fazer [obj] => [pack $1 $2] -> |$1 $2< e [obj] => [pack $3 $4] -> |$1 $2<, mas não pode fazer [obj] => [pack $3 $4] -> |$3 $4<, por que [pack $3 $4] retorna uma lista com apenas 2 valores, logo não tem os índices 3 e 4. Por causa disso, a mensagem pode nem ser necessária; o [pack] já retorna uma lista.
Na verdade, os argumentos do [pack] servem apenas para definir o número de elementos da lista, o tipo dos elementos e o valor de inicialização deles. Se você quiser só encaminhar 2 números na forma de lista depois que eles já foram retornados por outro objeto, pode usar [pack f f] (ou seja, 2 floats não inicializados). Veja também se você quer mesmo armazenar variáveis para usar posteriormente, fora do fluxo atual. Se é realmente isso que você quer, pode usar o [value] ou [v].