pw-cat(1)
πΈ pw-cat(1) β bestie edition πΈ
okay so you opened the manual page for pw-cat(1) from the General Commands Manual, and honestly? you're about to have a great time. this is the whole page, nothing skipped, just with the personality it deserved. π
β¨ NAME β¨
pw-cat β play and record media with PipeWire π
π SYNOPSIS π
pw-cat [options] [FILE | -]
pw-play [options] [FILE | -]
pw-record [options] [FILE | -]
pw-midiplay [options] [FILE | -]
pw-midirecord [options] [FILE | -]
pw-midi2play [options] [FILE | -]
pw-midi2record [options] [FILE | -]
pw-dsdplay [options] [FILE | -]
like, it's one tool that cosplays as eight. genderfluid icon behavior fr fr. π¦
π DESCRIPTION π
pw-cat is a simple little tool for playing back or capturing raw or encoded media files on a PipeWire server. not complicated, just does the thing. it understands every audio file format that libsndfile supports for PCM capture and playback. and when you're capturing PCM and didn't specify a container? it sniffs the filename extension to guess the format, and if it can't, the WAV file format is the default. lowkey intuitive of it.
it also understands standard MIDI files and MIDI 2.0 clip files for playback and recording. but listen β this tool will not render MIDI files. it does not make sound. it just makes the MIDI events available to the graph, that's it, that's the job. you need a MIDI renderer like qsynth, timidity, or an actual hardware MIDI renderer if you want to hear any of it. πΉ
DSD playback? supported, via the DSF file format. but it will only work with native DSD capable hardware, and it will produce an error when no such hardware was found. no vibes, no hardware, no DSD. π
when the FILE is -, input comes from STDIN. and if no format is specified, libsndfile will attempt to parse and stream the format from STDIN. heads up though: for some formats that's just not possible and libsndfile will give an error. Raw, MIDI and DSD formats are all streamable from STDIN, so those are safe. π«Ά
when the FILE is -, output goes to STDOUT. and if no format is specified, libsndfile is instructed to output the .au format, which is streamable and preserves the format, rate and channels. Raw and DSD formats are all streamable to STDOUT. iconic honestly.
π OPTIONS π
-h|--helpβ show help. your little map. πΊοΈ--versionβ show version information. β¨-v|--verboseβ verbose operation. it will yap (affectionately). π£οΈ-R|--remote=NAMEβ the name of the remote instance to connect to. if you leave it unspecified, a connection is made to the default PipeWire instance. π°οΈ-p|--playbackβ playback mode. read data from the specified file, and play it back. if the tool is called under the namepw-play,pw-midiplayorpw-midi2play, this is the default. βΆοΈ-r|--recordβ recording mode. capture data and write it to the specified file. if the tool is called under the namepw-record,pw-midirecordorpw-midi2record, this is the default. βΊοΈ-m|--midiβ MIDI mode. FILE is a MIDI file. if the tool is called under the namepw-midiplayorpw-midirecord, this is the default. note that this program will not render the MIDI events into audible samples, it will simply provide the MIDI events in the graph. you need a separate MIDI renderer such asqsynth,timidityor a hardware renderer to hear the MIDI. πΌ-c|--midi-clipβ MIDI 2.0 clip mode. FILE is a MIDI 2.0 clip file. if the tool is called under the namepw-midi2playorpw-midi2record, this is the default. same deal as above: note that this program will not render the MIDI events into audible samples, it will simply provide the MIDI events in the graph. you need a separate MIDI renderer such asqsynth,timidityor a hardware renderer to hear the MIDI. πΆ-d|--dsdβ DSD mode. FILE is a DSF file. if the tool is called under the namepw-dsdplay, this is the default. note that this program will not render the DSD audio. you need a DSD capable device to play DSD content or this program will exit with an error. π¨-s|--sysexβ SysEx mode. FILE is a File that contains a raw SysEx MIDI message. if the tool is called under the namepw-sysex, this is the default. the File is read and sent as a MIDI control message into the graph. π¨--media-type=VALUEβ set the media type property (defaultAudio/Mididepending on mode). the media type is used by the session manager to select a suitable target to link to. π--media-category=VALUEβ set the media category property (defaultPlayback/Capturedepending on mode). the media type is used by the session manager to select a suitable target to link to. π--media-role=VALUEβ set the media role property (defaultMusic). the media type is used by the session manager to select a suitable target to link to. π--target=VALUEβ set a node target (defaultauto). the value can be:auto: automatically select (Default) πͺ0: don't try to link this node π«<id>: theobject.serialor thenode.nameof a target node π―
--latency=VALUE[units]β set the node latency (default100ms). β±οΈ
the latency determines the minimum amount of time it takes for a sample to travel from application to device (playback) and from device to application (capture).
the latency determines the size of the buffers that the application will be able to fill. lower latency means smaller buffers but higher overhead. higher latency means larger buffers and lower overhead.
units can be s for seconds, ms for milliseconds, us for microseconds, ns for nanoseconds. if no units are given, the latency value is samples with the samplerate of the file.
-P|--properties=VALUEβ set extra stream properties as a JSON object. π§Ύ-q|--quality=VALUEβ resampler quality. when the samplerate of the source or destination file does not match the samplerate of the server, the data will be resampled. higher quality uses more CPU. values between0and15are allowed, the default quality is4. π₯-a|--rawβ raw samples will be read or written. the--rate,--format,--channelsand--channelmapcan be used to specify the raw format. π₯©-M|--force-midiβ force midi format, one of"midi"or"ump", (defaultump). when reading or writing midi, for one of midi or UMP. πΉ-n|--sample-count=COUNTβ stop after COUNT samples. π--rate=VALUEβ the sample rate, default48000. π--channels=VALUEβ the number of channels, default2. ποΈ--channel-map=VALUEβ the channelmap. possible values include either a channel layout such asmono,stereo,surround-21,quad,surround-22,surround-40, or comma separated array of channel names such asFL,FR. see--list-layoutsand--list-channel-namesto get a complete list of possible values. πΊοΈ--list-layoutsβ list all known channel layouts. one of these can be used as the--channel-mapvalue. π--list-channel-namesβ list all known channel names. an array of these can be used as the--channel-mapvalue. π--format=VALUEβ the sample format to use. some possible values include:u8,s8,s16(default),s24,s32,f32,f64. see--list-formatsto get a complete list of values. π§¬--list-formatsβ list all known format values. π--container=VALUEβ specify the container to use when saving. this is usually guessed from the filename extension but can be specified explicitly. when using STDOUT and no container is specified, theAUcontainer will be used. then using a filename and the container was not specified and it could not be derived from the filename, theWAVcontainer is used. π¦--list-containersβ list all known container values. π--volume=VALUEβ the stream volume, default1.000. depending on the locale you have configured,","or"."may be used as a decimal separator. check with thelocalecommand. π
β οΈ bestie warning: locales are out here changing your decimal separator. runlocalebefore you blamepw-cat. it's not the tool's fault. π
π«Ά AUTHORS π«Ά
the PipeWire Developers π <https://gitlab.freedesktop.org/pipewire/pipewire/issues> β and PipeWire is available from <https://pipewire.org>
π¦ SEE ALSO π¦
and that's the whole page, no cap. π this was pw-cat(1) from PipeWire 1.6.8 β slay, periodt, go play something. π§β¨π
π¦ where this page comes from
- ubuntu stonking: pipewire-bin 1.6.8-1ubuntu4 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms