La partition numérique standard
Prev | Part I. Vue d'ensemble | Next

## La partition numérique standard

La section de la partition contient des évènements qui démarrent des instances d'instruments de l'orchestre. La partition propose diverses instructions qui permettent l'élaboration de partitions complexes avec le langage de csound.

Actuellement, la longueur maximale de la partition dépend de l'architecture de la plate-forme ; sur un système 32 bit elle est de 231-1 périodes de contrôle. Par exemple, avec kr=1500, on peut exécuter une partition pendant une durée maximale de 16,5 jours avant l'apparition de problèmes provoqués par un dépassement des variables entières signées sur 32 bit. Sur une machine 64 bit avec les mêmes conditions la durée serait d'environ neuf milliard d'années. L'entité 'z' est lue comme une durée d'environ 25367 années.

Il faut noter également que lorsque l'on utilise des nombres flottants en simple précision (c-à-d les installeurs 'f' plutôt que les 'd'), la précision temporelle se détériore après une longue durée d'exécution.

## Prétraitement des partitions standard

Une Partition (un ensemble d'instructions de partition) se divise en sections ordonnées dans le temps par l'instruction s. Avant sa lecture par l'orchestre, une partition est prétraitée section par section. Chaque section est normalement traitée par trois routines : Carry (report de valeur), Tempo, et Sort (tri).

### Carry

Dans un groupe d'instructions i consécutives dont les nombres entiers p1 sont indentiques, tout p-champ non rempli prendra la même valeur que celle du p-champ correspondant dans l'instruction précédente. Un p-champ vide peut-être marqué par un point (.) entouré d'espaces. Il n'y a pas besoin de point après le dernier p-champ non vide. La sortie du prétraitement Carry montre explicitement les valeurs reportées. La Fonction Carry n'est pas affectée par les commentaires rencontrés ou les lignes blanches ; elle s'arrête seulement lorsqu'elle rencontre une instruction autre que l'instruction i ou une instruction i avec un nombre entier p1 différent.

Il y a trois fonctions supplémentaires, pour p2 seulement : +, ^+x, et ^-x. Le symbole + en p2 recevra la valeur de p2 + p3 de l'instruction i précédente. Cela permet de déterminer automatiquement l'instant du début d'une note à partir de la somme des durées précédentes. Le symbole + peut lui-même être reporté. Il n'est autorisé que dans p2. Par exemple : les instructions

    i1   0    .5    100
    i .  +
    i

se transformeront en

    i1   0    .5    100
    i1   .5   .5    100
    i1   1    .5    100

Les symboles ^+x et ^-x determinent la valeur de p2 en additionnant ou en soustrayant respectivement la valeur x du p2 précédent. Ils ne peuvent être utilisés qu'en p2 et ne sont pas reportés comme le symbole +. Noter aussi qu'il ne doit pas y avoir d'espaces après la partie ^, + ou - de ces symboles -- le nombre doit suivre directement comme dans ^+2.3. Si l'exemple ci-dessus avait été

    i1   0    .5        100
    i .  ^+1
    i .  ^+1

le résultat aurait été

    i1   0    .5        100
    i1   1    .5        100
    i1   2    .5        100

On peut se servir largement de la fonction Carry. Son utilisation, spécialement dans les grandes partitions, peut réduire grandement la frappe au clavier et elle simplifiera les modifications ultérieures.

Il y a des circonstances où l'on ne veut pas que les p-champs "manquants" après le dernier qui a été entré soient implicitement reportés. Par exemple dans un instrument prévu pour prendre un nombre variable de p-champs. A partir de Csound 5.08, on peut empêcher le report implicite des p-champs à la fin d'une instruction i en utilisant le symbole ! (appelé le "symbol de non-report"). Le ! doit apparaître à la fin d'une instruction i et il ne peut pas être utilisé en p1, p2 ou p3, car ces p-champs sont obligatoires. Voici un exemple :

    i1   0    .5        100
    i .  +
    i .  .    .         !
    i

Cette partition sera interprétée comme ceci

    i1   0    .5        100
    i1   .5   .5        100
    i1   1    .5               ; no p4
    i1   1.5  .5               ; only p1 to p3 are carried here

### Tempo

Cette opération modifie l'information temporelle d'une section de partition selon les directives de l'instruction t. L'opération tempo convertit p2 (et pour les instructions i, p3) de la valeur originale en pulsations vers des secondes réelles, celles-ci étant les unités temporelles requises par l'orchestre. Après la modification temporelle, les fichiers partitions apparaîtront dans un format lisible par l'orchestre comme ceci :

i p1 p2pulsations p2secondes p3pulsations p3secondes p4 p5 ...

### Sort

Cette routine trie toutes les instructions d'action temporelle chronologiquement selon la valeur de p2. Elle place aussi les évènements simultanés par ordre de priorité. Chaque fois qu'une instruction f et une instruction i ont la même valeur en p2, l'instruction f sera placée en premier. Chaque fois que plusieurs instructions i ont la même valeur en p2, elles seront triées par ordre croissant de leur valeur en p1. Si elles ont aussi la même valeur en p1, elles seront triées par ordre croissant de leur valeur en p3. Le tri de la partition est effectué par section (voir l'instruction s). Ce tri automatique permet d'écrire les instructions de partition dans n'importe quel ordre à l'intérieur d'une section.

| Note
Les opérations Carry, Tempo et Sort sont combinées dans une seule passe en trois phases sur le fichier de partition, pour produire un nouveau fichier dans un format lisible par l'orchestre (voir l'exemple de Tempo). Ce traitement peut être invoqué explicitement par la commande Scsort, ou implicitement par Csound qui traite la partition avant d'appeler l'orchestre. Les fichiers en format source et en format lisible par l'orchestre sont encodés en caractères ASCII, et peuvent être consultés ou modifiés dans un éditeur de texte standard. L'utilisateur peut écrire ses propres routines pour modifier les fichiers de partition avant ou après le processus décrit ci-dessus, pourvu que le format final lisible par l'orchestre soit respecté. Les sections de formats différents peuvent être traitées séquentiellement par lots ; et les sections de même format peuvent être réunies pour le tri automatique.

Prev | Up | Next
Syntaxe fonctionnelle dans Csound6 | Home | Instructions de partition