printks — Imprime au taux-k avec une syntaxe à la printf().
"string" -- la chaîne de caractères à imprimer. Peut contenir jusqu'à 8192 caractères et doit être entre guillemets.
itime -- intervalle en secondes entre les impressions.
xval1, xval2, ... (facultatif) -- Les valeurs de taux-k à imprimer. Celles-ci sont spécifiées dans « string » au moyen des indicateurs de valeur du C standard (%f, %d, etc.) dans l'ordre donné.
A partir de la version 4.23 de Csound, on peut utiliser autant de variables kval que l'on veut. Dans les versions antérieures à la 4.23, on doit donner 4 et seulement 4 kvals (mettant 0 pour les kvals non utilisées).
printks affiche des nombres et du texte qui peuvent être des valeurs de taux-i ou de taux-k. printks est extrêmement flexible, et si on l'utilise avec des codes de positionnement du curseur, il peut servir à écrire des valeurs spécifiques à certaines positions de l'écran pendant l'exécution de Csound.
Un mode d'opération spécial permet à printks de convertir le paramètre d'entrée kval1 en valeur comprise entre 0 et 255 et de l'utiliser comme le premier caractère à imprimer. Un programme Csound peut ainsi envoyer des caractères arbitraires à la console. Pour cela, il faut que le premier caractère de la chaîne soit un # éventuellement suivi de texte normal et d'indicateurs de format.
Cet opcode peut être exécuté à chaque cycle-k de l'instrument auquel il appartient. Pour cela, il faut mettre itime à 0.
Si itime est différent de 0, l'opcode imprime sur le premier cycle-k lors de son appel, puis chaque fois qu'une durée itime s'est écoulée. Le temps commence à s'écouler à partir de l'initialisation de l'opcode, typiquement à l'initialisation de l'instrument.
Tous les caractères de contrôle de printf() du langage C standard peuvent être utilisés. Par exemple, si kval1 = 153.26789, voici quelques-unes des options de formatage habituelles :
%f imprime avec toute la précision : 153.26789
%5.2f imprime : 153.26
%d n'imprime que la partie entière : 153
%c traite kval1 comme le code ASCII d'un caractère.
En plus de tous les codes de printf(), printks supporte ces codes de caractère utiles :
Code printks | Code de Caractère |
---|---|
\\r, \\R, %r, or %R | retour chariot (\r) |
\\n, \\N, %n, %N | caractère de nouvelle ligne (\n) |
\\t, \\T, %t, or %T | tabulation (\t) |
%! | point-virgule (;) C'est nécessaire car un « ; » est interprété comme un commentaire. |
^ | caractère d'échappement (0x1B) |
^ ^ | accent circonflexe (^) |
˜ | ESC[ (escape+[ est la séquence d'échappement des consoles ANSI) |
˜˜ | tilde (˜) |
Pour plus d'information sur le formatage à la printf(), consulter une documentation sur le langage C.
Note | |
---|---|
Avant la version 4.23, seul le code de format %f était supporté. |
Voici un exemple de l'opcode printks. Il utilise le fichier printks.csd.
Exemple 786. Exemple de l'opcode printks.
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 ; Audio out Audio in -odac -iadc ;;;RT audio I/O ; For Non-realtime ouput leave only the line below: ; -o printks.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> ; Initialize the global variables. sr = 44100 kr = 44100 ksmps = 1 nchnls = 1 ; Instrument #1. instr 1 ; Change a value linearly from 0 to 100, ; over the period defined by p3. kup line 0, p3, 100 ; Change a value linearly from 30 to 10, ; over the period defined by p3. kdown line 30, p3, 10 ; Print the value of kup and kdown, once per second. printks "kup = %f, kdown = %f\\n", 1, kup, kdown endin </CsInstruments> <CsScore> ; Play Instrument #1 for 5 seconds. i 1 0 5 e </CsScore> </CsoundSynthesizer>
Sa sortie contiendra des lignes comme :
kup = 0.000000, kdown = 30.000000 kup = 20.010843, kdown = 25.962524 kup = 40.029991, kdown = 21.925049 kup = 60.049141, kdown = 17.887573 kup = 79.933266, kdown = 13.872493