Bonjour Lorangeverte.
La syntaxe que vous utilisez dans votre exemple est celle qui permet d’échantilloner plusieurs courbes à l’aide de plusieurs variables (une variable par courbe, ce qui explique le message d’erreur).
Je ne suis pas sur de comprendre votre objectif. J’imagine deux possibilités:
- S’il s’agit d’itérer sur une seule courbe vectorielle (de dimension 22) afin d’envoyer à monReceive 22 valeurs en même temps, il faut spécifier un vecteur pour les breakpoints, ce qui s’écrit :
curve toto
@action := { monReceive $b} ,
@grain := 0.1
{
$b {
{ TAB[1.01, 0.0, -20.000000, 0.020000, 0.035000, 1.000000, 101.000000, 1.000000, 71.747643, 0.000000, 0.181000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0, 0.000000, 2, 1, 1.000000, 0.000] }
5 { TAB[1.010000, 0.000000, -20.000000, 0.020000, 0.035000, 1.000000, 101.000000, 1.000000, 171.747643, 0.000000, 0.181000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0, 0.000000, 2, 1, 1.000000, 0.000] }
8 { TAB[1.010000, 0.000000, -20.000000, 0.020000, 0.035000, 1.000000, 101.000000, 1.000000, 35.747643, 0.000000, 0.181000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0, 0.000000, 2, 1, 1.000000, 0.000] }
}
}
avec cette forme, la variable $b reoit un échantillon de la courbe (à 22 dimension) et la construction curve envoit un message
monReceive 1.01 0.0 -20.0 0.02 0.035 1.0 101.0 1.0 75.7476 0.0, 0.181 0.0 0.0 0.0 0.0 0.0 0.0 0.0 2.0 1.0 1.0 0.0]
- S’il s’agit d’itérer sur une seule courbe scalaire (de dimension 1) dont les breakpoints sont définit par (disons) les 9ème élément de tableau, il suffit de donner la valeur des breakpoints sous la forme d’un scalaire (plutôt qu’un tableau). Par exemple, si on suppose que les éléments sont dans les tableaux
$t1, $t2, $t3
:
$t1 := TAB[1.01, 0.0, -20.000000, 0.020000, 0.035000, 1.000000, 101.000000, 1.000000, 71.747643, 0.000000, 0.181000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0, 0.000000, 2, 1, 1.000000, 0.000]
$t2 := TAB[1.010000, 0.000000, -20.000000, 0.020000, 0.035000, 1.000000, 101.000000, 1.000000, 171.747643, 0.000000, 0.181000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0, 0.000000, 2, 1, 1.000000, 0.000]
$t3 := TAB[1.010000, 0.000000, -20.000000, 0.020000, 0.035000, 1.000000, 101.000000, 1.000000, 35.747643, 0.000000, 0.181000, 0.000000, 0.000000, 0.000000, 0.000000, 0.000000, 0, 0.000000, 2, 1, 1.000000, 0.000]
curve toto
@action := { monReceive $b} ,
@grain := 0.1
{
$b {
{ ($t1[8]) }
5 { ($t2[8]) }
8 { ($t3[8]) }
}
}
Les messages envoyés sont alors de la forme
monReceive 71.7476
monReceive 73.7476
monReceive 75.7476
monReceive 77.7476
Remarquez que les données sont sous la forme de tableau (entre des crochets et les éléments séparés par des virgules). L’expression qui permet d’accéder à un élément du tableau est entre parenthèse (dans la construction curve, les expressions de breakpoints plus compliquées qu’une constante ou une variable, doivent être entre parenthèses). Les éléments sont numérotés à partir de 0, le 9ème élément a donc pour index 8
.
Si vous connaissez au moment où vous écrivez la partition les valeurs entre lesquelles vous voulez échantillonnez, vous pouvez bien sur les spécifier directement:
curve toto
@action := { monReceive $b} ,
@grain := 0.1
{
$b {
{ 71.747643 }
5 { 171.747643 }
8 { 35.747643 }
}
}
Notez bien que le fragment
{ 1.01 0.0 -20.000000 0.020000 0.035000 1.000000 101.000000 1.000000 71.747643 0.000000 0.181000 0.000000 0.000000 0.000000 0.000000 0.000000 0 0.000000 2 1 1.000000 0.000 }
ne correspond à aucune construction Antescofo.
Vous trouverez des exemples de curve dans le chapitre http://support.ircam.fr/docs/Antescofo/manuals/Reference/compound_curve/