diff --git a/doc/dox/programs/pw-cat.1.md b/doc/dox/programs/pw-cat.1.md index 4860c427f..b6e259a6f 100644 --- a/doc/dox/programs/pw-cat.1.md +++ b/doc/dox/programs/pw-cat.1.md @@ -14,6 +14,10 @@ Play and record media with PipeWire **pw-midirecord** \[*options*\] \[*FILE* \| -\] +**pw-midi2play** \[*options*\] \[*FILE* \| -\] + +**pw-midi2record** \[*options*\] \[*FILE* \| -\] + **pw-dsdplay** \[*options*\] \[*FILE* \| -\] # DESCRIPTION @@ -24,10 +28,10 @@ supported by `libsndfile` for PCM capture and playback. When capturing PCM, the filename extension is used to guess the file format with the WAV file format as the default. -It understands standard MIDI files for playback and recording. This tool -will not render MIDI files, it will simply make the MIDI events -available to the graph. You need a MIDI renderer such as qsynth, -timidity or a hardware MIDI rendered to hear the MIDI. +It understands standard MIDI files and MIDI 2.0 clip files for playback +and recording. This tool will not render MIDI files, it will simply make +the MIDI events available to the graph. You need a MIDI renderer such as +qsynth, timidity or a hardware MIDI renderer to hear the MIDI. DSD playback is supported with the DSF file format. This tool will only work with native DSD capable hardware and will produce an error when no @@ -53,13 +57,13 @@ connection is made to the default PipeWire instance. \par -p | \--playback Playback mode. Read data from the specified file, and play it back. If -the tool is called under the name **pw-play** or **pw-midiplay** this is -the default. +the tool is called under the name **pw-play**, **pw-midiplay** or +**pw-midi2play** this is the default. \par -r | \--record Recording mode. Capture data and write it to the specified file. If the -tool is called under the name **pw-record** or **pw-midirecord** this is -the default. +tool is called under the name **pw-record**, **pw-midirecord** or +**pw-midi2record** this is the default. \par -m | \--midi MIDI mode. *FILE* is a MIDI file. If the tool is called under the name @@ -69,6 +73,14 @@ simply provide the MIDI events in the graph. You need a separate MIDI renderer such as qsynth, timidity or a hardware renderer to hear the MIDI. +\par -c | \--midi-clip +MIDI 2.0 clip mode. *FILE* is a MIDI 2.0 clip file. If the tool is called +under the name **pw-midi2play** or **pw-midi2record** 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 as qsynth, timidity or a hardware renderer to +hear the MIDI. + \par -d | \--dsd DSD mode. *FILE* is a DSF file. If the tool is called under the name **pw-dsdplay** this is the default. Note that this program will *not* diff --git a/src/tools/meson.build b/src/tools/meson.build index 300a9cb4c..8147906fb 100644 --- a/src/tools/meson.build +++ b/src/tools/meson.build @@ -59,6 +59,8 @@ if get_option('pw-cat').allowed() and sndfile_dep.found() 'pw-record', 'pw-midiplay', 'pw-midirecord', + 'pw-midi2play', + 'pw-midi2record', 'pw-dsdplay', 'pw-encplay', 'pw-sysex', diff --git a/src/tools/pw-cat.c b/src/tools/pw-cat.c index a9cd4460f..d179d0a67 100644 --- a/src/tools/pw-cat.c +++ b/src/tools/pw-cat.c @@ -1997,6 +1997,12 @@ int main(int argc, char *argv[]) } else if (spa_streq(prog, "pw-midirecord")) { data.mode = mode_record; data.data_type = TYPE_MIDI; + } else if (spa_streq(prog, "pw-midi2play")) { + data.mode = mode_playback; + data.data_type = TYPE_MIDI2; + } else if (spa_streq(prog, "pw-midi2record")) { + data.mode = mode_record; + data.data_type = TYPE_MIDI2; } else if (spa_streq(prog, "pw-sysex")) { data.mode = mode_playback; data.data_type = TYPE_SYSEX;