EP3: trigger e fprintf

EP3: trigger e fprintf

por Henrique Stagni -
Número de respostas: 5

No EP3, Não estavamos conseguindo gerar o arquivo de saída corretamente e, para debugar, resolvemos, ao receber a mensagem 'start' apenas abrir o arquivo, escrever o N e o M, e fechá-lo. Mesmo assim, o arquivo não era gerado corretamente.

O problema era que as mensagens 'open' 'write' e 'close' enviadas ao fprintf não estavam sendo feitas na ordem certa.

Usar esse objeto 'trigger' é o jeito de certo de fixar uma ordem no envio das mensagens? Só o trigger já garante que as coisas vão dar certo? (ou seja,  não preciso me preocupar em 'esperar um tempo' entre duas mensagens enviadas ao fprintf?)

Em resposta à Henrique Stagni

Re: EP3: trigger e fprintf

por Flávio Luiz Schiavoni -

Se vc usar um [triger b b b] ele irá ordenar as mensagens de bang da direita para a esquerda. Assim vc pode enviar a mensagem open, write, stop, close na ordem certa. Veja que tem esta mensagem stop para que ele pare de gravar. Acho que ela deve ser usada.

Outra possibilidade é criar um message com várias mensagens separadas por vírgula. Quando este message (Ctrl + Alt + 2 no Linux) é "bangueado", ele manda as mensagens na sequencia. Estou usando isto para enviar o stop, close, por exemplo.

Lembro ainda que o write do [fprintf~] só escreve um float e que seria necessário 2 mensagens write para escrever o N e o M. Isto fará cada um deles ser escrito em uma linha.

Em resposta à Henrique Stagni

Re: EP3: trigger e fprintf

por Diego Wesllen da Silva -

Aproveito esse tópico para perguntar: o que é o message "; pd dsp 1"?

Em resposta à Diego Wesllen da Silva

Re: EP3: trigger e fprintf

por Antonio Goulart -

Putz, cara, isto é engraçado.

;  é send

pd é o objeto destino

dsp 1 é a mensagem.

Ou seja, quando esta message toma um bang ele envia para todo mundo que está recebendo pd [r pd] a mensagem "dsp 1".

Em resposta à Antonio Goulart

Re: EP3: trigger e fprintf

por Flávio Luiz Schiavoni -

Você pode usar esta sintaxe de envio de mensgens em vez do send (ou s).

Coloque um objeto receive com um nome qualquer na entrada do [fprintf~], por exemplo. Vamos usar [r algo]. Para mandar as mensagens first e last vc pode usar

; algo first 1

; algo last 511

Quando esta mensagem tomar um bang na cucuruca ela será enviada para a caixinha [r algo].

No caso, pd é uma mensagem que será enviada para um patch interno que espera esta mensagem chamada pd.

Em resposta à Diego Wesllen da Silva

Re: EP3: trigger e fprintf

por Marcelo Queiroz -

Esta mensagem é usada para ligar o processamento sonoro (dsp=digital signal processing). Na verdade ela deve ser escrita em duas linhas: o ponto-e-vírgula sozinho numa linha diz que aquela mensagem não será conectada diretamente a outro objeto através do outlet, mas será enviada a um objeto identificado pelo nome, neste caso o objeto pd, que é responsável por todo o gerenciamento do ambiente.

Outros exemplos de mensagem para objetos "remotos" (não conectados diretamente) são as mensagens de inicialização de arrays, que possuem uma grande quantidade de formas diferentes, desde a inicialização com uma constante (como é usado no pvsynth~-help.pd) como com formas de onda básicas, valores lidos de arquivo, etc. Veja os exemplos no patch 2.control.examples/15.array.pd.