id = "csound"
name = "Csound"
homepage = "https://csound.com"
description = "Sound and music computing system"
executables = ["csound"]
[dotfiles]
paths = ["~/.csoundrc"]
secret = []
[commands]
format = 1
label = "Render a CSD file"
description = "Render a Csound project (CSD, or orchestra plus score) to a sound file or the audio device. MIDI, realtime buffer, sample-format and display options are left out."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = true, short_bundles = false }
[[commands.source]]
id = "manual"
kind = "manual"
url = "https://csound.com/docs/manual/CommandFlags.html"
revision = "2026-10-27"
evidence = """
csound [flags] [orchname] [scorename]
csound [flags] [csdfilename]
-o FILE, --output=FILE
The name devaudio or dac (you can use -odac or -o dac) will request writing sound to the host audio output device.
-i FILE, --input=FILE
-n, --nosound
-d, --nodisplays
-v, --verbose
-r NUM, --sample-rate=NUM
-k NUM, --control-rate=NUM
-m NUM, --messagelevel=NUM
-W, --wave, --format=wave
-A, --aiff, --format=aiff
"""
[[commands.field]]
id = "files"
label = "CSD file, or orchestra and score"
type = "path"
position = 0
multiple = true
min = 1
path = { kind = "file", role = "input", must_exist = true }
sources = ["manual"]
[[commands.field]]
id = "output"
label = "Output sound file or dac"
description = "A sound file name, or dac for the audio device."
type = "string"
option = ["--output", "-o"]
suggestions = [{ value = "dac", label = "Audio device (dac)" }]
effect = "overwrite"
sources = ["manual"]
[[commands.field]]
id = "wave"
label = "Write WAV file"
type = "boolean"
option = ["--wave", "-W"]
sources = ["manual"]
[[commands.field]]
id = "aiff"
label = "Write AIFF file"
type = "boolean"
option = ["--aiff", "-A"]
sources = ["manual"]
[[commands.field]]
id = "nosound"
label = "No sound output"
description = "Run the score without writing any audio."
type = "boolean"
option = ["--nosound", "-n"]
sources = ["manual"]
[[commands.field]]
id = "nodisplays"
label = "Suppress displays"
type = "boolean"
option = ["--nodisplays", "-d"]
sources = ["manual"]
[[commands.field]]
id = "verbose"
label = "Verbose"
type = "boolean"
option = ["--verbose", "-v"]
sources = ["manual"]
[[commands.field]]
id = "sample_rate"
label = "Sample rate"
type = "integer"
option = ["--sample-rate", "-r"]
sources = ["manual"]
[[commands.field]]
id = "control_rate"
label = "Control rate"
type = "integer"
option = ["--control-rate", "-k"]
sources = ["manual"]
[[commands.field]]
id = "input"
label = "Input sound file"
type = "path"
option = ["--input", "-i"]
path = { kind = "file", role = "input", must_exist = true }
sources = ["manual"]
[[commands.task]]
id = "render-wav"
label = "Render to WAV"
fields = ["files", "output", "wave", "nodisplays"]
required = ["files", "output"]
set = { wave = [true], nodisplays = [true] }
[[commands.task]]
id = "play"
label = "Play on audio device"
fields = ["files", "output", "nodisplays"]
required = ["files"]
set = { output = ["dac"] }
lock = ["output"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["files", "output", "wave", "aiff", "nosound"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["nodisplays", "verbose", "sample_rate", "control_rate", "input"]