Strings
Prev | Part II. Opcodes Overview | Next

## Strings

String variables are variables with a name starting with S or gS (for a local or global string variable, respectively), and can store any string with a maximum length defined by the -+max_str_len command line flag (255 characters by default). These variables can be used as input argument to any opcode that exepcts a quoted string constant, and can be manipulated at initialization or performance time with the opcodes listed below.

It is also possible to use string p-fields. The string p-field can be used by many orchestra opcodes directly, or it can be copied to a string variable first:

    a1    diskin2 p5, 1

    Sname strget  p5
    a1    diskin2 Sname, 1

Strings within Csound can be expressed using traditional double quotes (" "), an also using {{ }}. The second method is useful to allow ';' and '$' characters within the string without having to used ASCII codes.

| Note
String variables and related opcodes are not available in Csound versions older than 5.00.

Strings can also be linked to a number using strset and strget.

Csound 5 also has improvements in parsing string constants. It is possible to specify a multi-line string by enclosing it within {{ and }} instead of the usual double quote characters (note that the length of string constants is not limited, and is not affected by the -+max_str_len option), and the following escape sequences are automatically converted:

- \a alert bell

- \b backspace

- \n new line

- \r carriage return

- \t tab

- \\ a single '\' character

- \nnn the character of which the ASCII code (in octal) is nnn

It can be useful together with the system opcode:

    instr 1
     ; csound5 lets you make a string with line returns inside double brackets
        system {{     ps
                date
                cd ~/Desktop
                pwd
                ls -l
                whois csounds.com
            }}
    endin

And the python opcodes, among others:

    pyruni {{
    import random

    pool = [(1 + i/10.0) ** 1.2 for i in range(100)]

    def get_number_from_pool(n, p):
        if random.random() < p:
            i = int(random.random() * len(pool))
            pool[i] = n
        return random.choice(pool)
    }}

## String Manipulation Opcodes

These opcodes perform operations on string variables (note: most of the opcodes run at init time only, and have a version with a "k" suffix that runs at both init and performance time; exceptions to this rule include puts and strget):

- strcpy and strcpyk - Assigns to a string variable.

- strcat and strcatk - Concatenates strings, and stores the result in a variable.

- strcmp and strcmpk - Compares strings.

- strget - Assigns to a string variable, from strset table at the specified index, or string score p-field.

- strlen and strlenk - Returns the length of a string.

- sprintf - printf-style formatted output conversion, storing the result in a string variable.

- sprintfk - printf-style formatted output conversion, storing the result in a string variable at k-rate.

- puts - Prints a string constant or variable.

- strindex and strindexk - Returns the first occurence of a string in another string.

- strrindex and strrindexk - Returns the last occurence of a string in another string.

- strsub and strsubk - Returns a substring of the input string.

Prev | Up | Next
Array-based spectral opcodes | Home | String Conversion Opcodes