Subsystem

Subsample configuration: player

The 16 settings under player, each with the type, default and limits its schema declares.

MIDI-triggered playback. Subsample opens a MIDI input and an audio output, picks a sample for each incoming note by the rules in the MIDI map, and mixes the voices as they play.

enabled in player

Type
boolean
Default
false

Turns the MIDI player on. Requires midi_map or midi_maps.

max_polyphony in player

Type
integer
Default
8
Limits
at least 1, at most 64

Number of voices at full velocity that together reach full scale. Each voice's level is divided by it, and voices beyond it still play rather than being cut off. Raise it when dense passages clip, and lower it for louder individual notes.

limiter_threshold_db in player

Type
number
Default
-1.5
Limits
at least -12, at most 0

Level, in dBFS, above which the output limiter starts to soft-clip. Signals below it pass unchanged, and lower values compress more. 0 turns the limiter off.

limiter_ceiling_db in player

Type
number
Default
-0.1
Limits
at least -12, at most 0

Highest output level, in dBFS, that the limiter allows. Must be above limiter_threshold_db, and is ignored when the limiter is off.

midi_map in player

Type
string or null
Default
null
Example
midi-map-gm-drums.yaml

Path to the MIDI map that decides which samples each note plays. The player does not start without it or midi_maps. The map may be an ensemble, declaring a maps: block that binds several sample sets to MIDI channels. Cannot be set together with midi_maps.

midi_maps in player

Type
map of names to string or null
Default
null

Sample sets to play at once, each a MIDI channel from 1 to 16 followed by the path to a sample set's MIDI map, as in 10: kits/home/midi-map.yaml. Gives the same result as an ensemble map declaring the same maps: block. Use an ensemble map instead to name channels from a definitions: file, or to reload the bindings while running, since Subsample does not watch config.yaml. Cannot be set together with midi_map. Pair it with library.directory: null to load only the samples the sets name.

watch_midi_map in player

Type
boolean
Default
false

Reloads the MIDI map when its file changes, so an edit takes effect on the next note without a restart. Several saves in quick succession count as one change. Requires midi_map.

strict_midi_map in player

Type
boolean
Default
true

Refuses a MIDI map with an unknown where: key, processor, processor parameter, CC binding key, or order entry key, or a pitched: value that is not true or false, and names the valid options. Set false to log a warning for each and carry on, when loading an older map.

midi_device in player

Type
string or null
Default
null
Examples
Launchpad, "*Subsample Virtual MIDI *:0"

MIDI input to play from, matched the same way as recorder.audio.device: a pattern, without regard to case, where * matches any run of characters and ? matches one. On Linux a MIDI device's name carries a client number that changes between runs, so use * for it and keep the port number after the colon. null selects the only MIDI input when there is one, and otherwise asks. Ignored when virtual_midi_port is set.

virtual_midi_port in player

Type
string or null
Default
null
Example
"Subsample Virtual MIDI"

Name of a virtual MIDI input port that Subsample creates at start-up, for other software on the same machine to send notes to. When set, Subsample opens no hardware MIDI input and ignores midi_device.

audio in player

Type
section

The output device, and the format Subsample plays in.

device in player.audio

Type
string or null
Default
null

Output device to play through, matched the same way as recorder.audio.device. null uses the system's default output.

sample_rate in player.audio

Type
integer or null
Default
null
Limits
above 0

Output sample rate, in Hz. null uses recorder.audio.sample_rate. Set it when the output device cannot run at the recorder's rate; a rate above the recorder's adds no quality.

bit_depth in player.audio

Type
integer or null
Default
null
Limits
one of 16, 24, 32

Output bit depth. null uses recorder.audio.bit_depth. Set 16 for a device that only plays 16-bit audio.

channels in player.audio

Type
integer or null
Default
null
Limits
above 0

Number of output channels, in SMPTE order. null plays in stereo. Set it to the interface's output count when the MIDI map routes instruments to separate outputs. Subsample refuses to start when the device has fewer outputs.

buffer_frames in player.audio

Type
integer or null
Default
null
Limits
at least 32, at most 4096

Output buffer size in frames, as a power of two. Smaller buffers lower latency, and larger ones are safer under load. null lets the operating system choose. When the device refuses the size, Subsample logs an error and uses the device's own.