system

system — Call an external program via the system call

Description

system and system_i call any external command understood by the operating system, similarly to the C function system(). system_i runs at i-time only, while system runs both at initialization and performance time.

Syntax

ires system_i itrig, Scmd, [inowait]
kres system ktrig, Scmd, [knowait]

Initialization

Scmd -- command string

itrig -- if greater than zero the opcode executes the command; otherwise it is an null operation.

Performance

ktrig -- if greater than zero and different from the value on the previous control cycle the opcode executes the command. Initially this previous value is taken as zero.

inowait,knowait -- if given an non zero the command is run in the background and the command does not wait for the result. (default = 0)

ires, kres -- the return code of the command in wait mode and if the command is run.In other cases returns zero.

More than one system command (a script) can be executed with a single system opcode by using double braces strings {{ }}.

[Note] Note
This opcode is very system dependant, so should be used with extreme care (or not used) if platform neutrality is desired.

Example

Here is an example of the system_i opcode. It uses the file system.csd.

Example 894. Example of the system 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 system.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

; Initialize the global variables.
sr = 44100
kr = 4410
ksmps = 10
nchnls = 1

instr 1
; Waits for command to execute before continuing
ires system_i 1,{{     ps
            date
            cd ~/Desktop
            pwd
            ls -l
            whois csounds.com
        }}
print ires
turnoff
endin

instr 2
; Runs command in a separate thread
ires system_i 1,{{     ps
            date
            cd ~/Desktop
            pwd
            ls -l
            whois csounds.com
        }}, 1

print ires
turnoff
endin

</CsInstruments>
<CsScore>

; Play Instrument #1 for thirty seconds.
i 1 0 1
i 2 5 1
e


</CsScore>
</CsoundSynthesizer>


Credits

Author: John ffitch
2007

New in version 5.06