printarray — Affiche le contenu d'un tableau.
Sfmt -- S'il est présent, il est passé à printf pour chaque élément du tableau. Sinon un format par défaut est utilisé.
Slabel -- S'il est présent, il est affiché avant le contenu du tableau, pour identifier facilement les données.
ktrig -- Le tableau est affiché chaque fois que cette valeur change de 0 à un nombre positif. On peut l'utiliser avec metro pour afficher à intervalle donné. Une valeur de -1 indique d'afficher à chaque cycle-k (1 par défaut).
Voici un exemple de l'opcode printarray. Il utilise le fichier printarray.csd.
Exemple 791. Exemple de l'opcode printarray.
<CsoundSynthesizer> <CsOptions> --nosound </CsOptions> <CsInstruments> instr 1 ; test i-time, 1D ivalues[] fillarray 0, 1, 3, 5, 7, 9 printarray ivalues ; default fmt, no label printarray ivalues, "%.2f" ; with given fmt printarray ivalues, "", "ivalues = " ; uses default fmt ; test i-time, long array ilong[] genarray 0, 3, 0.01 printarray ilong printarray ilong, "%.2f", "long=" ; 2D ivalues2[][] init 11, 4 ivalues2 fillarray 0, 1, 2, 3, \ 10, 11, 12, 13, \ 20, 21, 22, 23, \ 30, 31, 32, 33, \ 40, 41, 42, 43, \ 50, 51, 52, 53, \ 60, 61, 62, 63, \ 70, 71, 72, 73, \ 80, 81, 82, 83, \ 90, 91, 92, 93, \ 100,101,102,103 printarray ivalues2, "%.2f" printarray ivalues2, "%.1f", "ivalues2=" turnoff endin instr 2 ; k-time, 1D, print every cycle kxs[] fillarray 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 printarray kxs, -1, "", "instr 2" kxs += 1 endin instr 3 kxs[] fillarray 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 printarray kxs, metro(20), "%.0f", "kxs 1D=" kxs += 1 if kxs[0] > 1000 then turnoff endif endin instr 4 ; k-time, 2D, print with a trigger kxs[][] init 3, 4 kxs fillarray 0, 1, 2, 3, \ 10, 11, 12, 13, \ 20, 21, 22, 23 ktrig metro 20 printarray kxs, ktrig, "", "kxs=" kxs[0][0] = kxs[0][0] + 1 if kxs[0][0] > 1000 then turnoff endif endin instr 5 ; test %d: it should work like printf("%d", (int)myfloat) ; this should print "0 1 2 3 4" kxs[] fillarray 0, 1.1, 2, 3.3, 4 printarray kxs, 1, "%d" turnoff endin </CsInstruments> <CsScore> i 1 0 0.01 i 2 1 0.05 i 3 2 2 i 4 2 2 i 5 0 0.1 </CsScore> </CsoundSynthesizer>