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! =]
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.
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.
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!
Vou ver aqui o que pode ser, já que no seu exemplo funciona.
Obrigado!
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!
Valeu!