cpuprc

cpuprc — Contrôle l'allocation des ressources cpu par instrument, pour optimiser la sortie en temps réel.

Description

Contrôle l'allocation des ressources cpu par instrument, pour optimiser la sortie en temps réel.

Syntaxe

cpuprc insnum, ipercent
cpuprc Sinsname, ipercent

Initialisation

insnum -- numéro de l'instrument

Sinsname -- nom de l'instrument

ipercent -- pourcentage du temps de traitement cpu à allouer. On peut aussi l'exprimer sous forme fractionnaire.

Exécution

cpuprc fixe le pourcentage du temps de traitement cpu utilisé par un instrument, afin d'éviter un sous-remplissage du tampon dans les exécutions en temps réel. L'utilisateur doit fixer la valeur de ipercent pour chaque instrument qui sera activé en temps réel. En supposant que le temps de traitement cpu total soit 1OO% en théorie, cette valeur de pourcentage ne peut être définie qu'empiriquement, car il y a trop de facteurs qui contribuent à limiter la polyphonie en temps réel sur différents ordinateurs.

Par exemple si ipercent est fixé à 5% pour l'instrument 1, le nombre maximum de voix que l'on pourra allouer en temps réel est 20 (5% * 20 = 100%). Si l'on essaye de jouer une note supplémentaire alors que les 20 notes précédentes sont toujours jouées, Csound empêche l'allocation de cette note et affiche le message d'avertissement suivant :


impossible d'allouer la dernière note car il n'y a plus de temps cpu disponible
      

Afin d'éviter les sous-remplissages de tampon audio, il est suggéré de fixer le nombre maximum de voix à une valeur légèrement inférieure à la puissance de traitement réelle de l'ordinateur. Parfois, un instrument peut avoir besoin de plus de temps de traitement que la normale. Si, par exemple, l'instrument contient un oscillateur qui lit une table trop grande pour la mémoire cache, il sera plus lent qu'en temps normal. De plus, chaque programme s'exécutant concuramment dans l'environnement multitâche, peut consommer de la puissance processeur à divers degrés.

Au début, tous les instruments reçoivent une valeur par défaut de ipercent égale à 0.0% (c'est-à-dire un temps de traitement nul équivalent à une vitesse de processeur infinie). Ce réglage convient très bien pour les sessions en temps différé.

Toutes les instances de cpuprc doivent être définies dans la section d'en-tête et non dans le corps de l'instrument.

Exemples

Voici un exemple de l'opcode cpuprc. Il utilise le fichier cpuprc.csd.

Exemple 188. Exemple de l'opcode cpuprc.

Voir les sections Audio en Temps Réel et Options de la Ligne de Commande pour plus d'information sur l'utilisation des options de la ligne de commande.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;realtime audio out
;-iadc    ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o cpuprc.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1


cpuprc 1, 2
cpuprc 2, 30

instr 1 ;cpu processing-time percent usage is set to 2% for each note

asig oscil 0.2, 440, 1
     outs asig, asig

endin
 
instr 2	;cpu processing-time percent usage is set to 30% for each note
	;so the 4 notes of the score exceeds 100% by far
asig oscil 0.2, 440, 1
     outs asig, asig

endin
</CsInstruments>
<CsScore>
f 1 0 32768 10 1	; sine wave

i 1 0 1
i 1 0 1
i 1 0 1
i 1 0 1

;too many notes to process,
;check Csound output!
i 2 3 1
i 2 3 1
i 2 3 1
i 2 3 1
e
</CsScore>
</CsoundSynthesizer>


Voir aussi

maxalloc, prealloc

Crédits

Auteur : Gabriel Maldonado
Italie
Juillet 1999

Nouveau dans la version 3.57 de Csound ; ajout des instruments nommés dans la version 5.13