sprintfk — Sortie formattée à la printf dans une variable chaîne de caractères au taux-k.
sprintfk écrit une sortie formatée à la printf dans une variable chaîne de caractères, comme le fait la fonction C sprintf(). sprintfk s'exécute à la fois pendant l'initialisation et pendant l'exécution.
Sfmt -- chaîne de formatage comme dans printf() et d'autres fonctions C similaires, sauf que les modificateurs de longueur (l, ll, h, etc.) ne sont pas supportés. Les spécificateurs de conversion suivants sont permis :
d, i, o, u, x, X, e, E, f, F, g, G, c, s
xarg1, xarg2, ... -- arguments d'entrée (max. 30) à formater, doivent être de taux-i pour tous les spécificateurs de conversion sauf pour %s, qui nécessite un argument chaîne de caractères. sprintfk accepte aussi les arguments numériques de taux-k, mais ceux-ci doivent quand même être valides à l'initialisation (à moins que sprintfk ne soit évité avec un igoto). Les formats d'entiers comme %d arrondissent les valeurs d'entrée à l'entier le plus proche.
Voici un exemple de l'opcode sprintfk. Il utilise le fichier sprintfk.csd.
Exemple 998. Exemple de l'opcode sprintfk.
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 sprintfk.wav -W ;;; for file output any platform </CsOptions> <CsInstruments> sr = 48000 ksmps = 16 nchnls = 2 0dbfs = 1 ; Example by Jonathan Murphy 2007 instr 1 S1 = "1" S2 = " + 1" ktrig init 0 kval init 2 if (ktrig == 1) then S1 strcatk S1, S2 kval = kval + 1 endif String sprintfk "%s = %d", S1, kval puts String, kval ktrig metro 1 endin </CsInstruments> <CsScore> i1 0 10 e </CsScore> </CsoundSynthesizer>
Sa sortie contiendra des lignes comme celles-ci :
1 + 1 = 2 1 + 1 + 1 = 3 1 + 1 + 1 + 1 = 4 1 + 1 + 1 + 1 + 1 = 5 1 + 1 + 1 + 1 + 1 + 1 = 6 1 + 1 + 1 + 1 + 1 + 1 + 1 = 7 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 8 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 9 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 10 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 11 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 12