sprintfk — printf-style formatted output to a string variable at k-rate.
sprintfk writes printf-style formatted output to a string variable, similarly to the C function sprintf(). sprintfk runs both at initialization and performance time.
Sfmt -- format string, has the same format as in printf() and other similar C functions, except length modifiers (l, ll, h, etc.) are not supported. The following conversion specifiers are allowed:
d, i, o, u, x, X, e, E, f, F, g, G, c, s
xarg1, xarg2, ... -- input arguments (max. 30) for format, should be i-rate for all conversion specifiers except %s, which requires a string argument. sprintfk also allows k-rate number arguments, but these should still be valid at init time as well (unless sprintfk is skipped with igoto). Integer formats like %d round the input values to the nearest integer.
Here is an example of the sprintfk opcode. Play sprintfk.csd
Example 1000. Example of the sprintfk opcode.
See the sections Real-time Audio and Command Line Flags for more information on using command line flags.
<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>
Its output should include lines like this:
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