Carry e Macros no csound

Carry e Macros no csound

por Andre Jucovsky Bianchi -
Número de respostas: 3
Oi.

O csound tem um preprocessamento dos arquivos de score em 3 estágios, um deles chama-se Carry e é responsável, entre outras coisas, por transformar caracteres '+' na posição p2 dos instrumentos em números, de acordo com p2 e p3 do instrumento anterior.

O problema é que estou tentando usar '+' com macros, dessa forma:

$CORNETA( 8 ' 0.25 ' [$F.2] )
$CORNETA( + ' 0.25 ' [$F.2] )

Mas csound está interpretando esse '+' como 0 e colocando o instrumento para tocar no tempo 0. Dá pra perceber isso tanto ouvindo o instrumento no tempo 0 quanto olhando a saída do comando scsort que vem junto com o csound.

No manual do csound não encontrei em que momento as macros são processadas, mas pelo comportamento deve ser depois do Carry. A pergunta é: estou fazendo algo errado sem perceber, ou estou fazendo certo e tem algum outro jeito de reordenar os preprocessamentos pra funcionar do jeito que estou tentando acima?

Valeu! =]
Em resposta à Andre Jucovsky Bianchi

Re: Carry e Macros no csound

por Marcelo Queiroz -
Oi, André!

Me parece que o problema aí é o separador entre os argumentos do macro, que deveria ser #. O exemplo em anexo foi adaptado do cap3_189.[orc,sco] e faz exatamente o que você quer. A definição do instrumento é

#define X(T#N) #i 189 $T. 1 -20 [$N.] 6 .2#

onde T é o parâmetro "instante inicial", e as chamadas do instrumento são:

$X(0#$A.4)
$X(+#$B.4)
$X(+#$C.5)

o que produz as 3 notas em sucessão.

Em resposta à Marcelo Queiroz

Re: Carry e Macros no csound

por Andre Jucovsky Bianchi -
Acho que não é o separador porque testei com o # e deu o mesmo problema. Esse separador aí (') tá no manual do csound (5) dizendo pra usar ele. Acho que por causa do problema de não poder usar # dentro de definições de macros.

Vou ver aqui o que pode ser, já que no seu exemplo funciona.

Obrigado!
Em resposta à Andre Jucovsky Bianchi

Re: Carry e Macros no csound

por Andre Jucovsky Bianchi -
Descobri: eu estava usando colchetes na definição da macro, em volta do tempo: "[$time.]". Acho que isso estava confundindo o csound na hora de processar o Carry.

Valeu!