tools: add pw-midi2play and pw-midi2record aliases

And update the documentation.
This commit is contained in:
Wim Taymans 2025-08-29 17:43:13 +02:00
parent eda3290883
commit 9eb6cda245
3 changed files with 28 additions and 8 deletions

View file

@ -14,6 +14,10 @@ Play and record media with PipeWire
**pw-midirecord** \[*options*\] \[*FILE* \| -\] **pw-midirecord** \[*options*\] \[*FILE* \| -\]
**pw-midi2play** \[*options*\] \[*FILE* \| -\]
**pw-midi2record** \[*options*\] \[*FILE* \| -\]
**pw-dsdplay** \[*options*\] \[*FILE* \| -\] **pw-dsdplay** \[*options*\] \[*FILE* \| -\]
# DESCRIPTION # 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 PCM, the filename extension is used to guess the file format with the
WAV file format as the default. WAV file format as the default.
It understands standard MIDI files for playback and recording. This tool It understands standard MIDI files and MIDI 2.0 clip files for playback
will not render MIDI files, it will simply make the MIDI events and recording. This tool will not render MIDI files, it will simply make
available to the graph. You need a MIDI renderer such as qsynth, the MIDI events available to the graph. You need a MIDI renderer such as
timidity or a hardware MIDI rendered to hear the MIDI. qsynth, timidity or a hardware MIDI renderer to hear the MIDI.
DSD playback is supported with the DSF file format. This tool will only 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 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 \par -p | \--playback
Playback mode. Read data from the specified file, and play it back. If 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 tool is called under the name **pw-play**, **pw-midiplay** or
the default. **pw-midi2play** this is the default.
\par -r | \--record \par -r | \--record
Recording mode. Capture data and write it to the specified file. If the 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 tool is called under the name **pw-record**, **pw-midirecord** or
the default. **pw-midi2record** this is the default.
\par -m | \--midi \par -m | \--midi
MIDI mode. *FILE* is a MIDI file. If the tool is called under the name 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 renderer such as qsynth, timidity or a hardware renderer to hear the
MIDI. 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 \par -d | \--dsd
DSD mode. *FILE* is a DSF file. If the tool is called under the name 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* **pw-dsdplay** this is the default. Note that this program will *not*

View file

@ -59,6 +59,8 @@ if get_option('pw-cat').allowed() and sndfile_dep.found()
'pw-record', 'pw-record',
'pw-midiplay', 'pw-midiplay',
'pw-midirecord', 'pw-midirecord',
'pw-midi2play',
'pw-midi2record',
'pw-dsdplay', 'pw-dsdplay',
'pw-encplay', 'pw-encplay',
'pw-sysex', 'pw-sysex',

View file

@ -1997,6 +1997,12 @@ int main(int argc, char *argv[])
} else if (spa_streq(prog, "pw-midirecord")) { } else if (spa_streq(prog, "pw-midirecord")) {
data.mode = mode_record; data.mode = mode_record;
data.data_type = TYPE_MIDI; 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")) { } else if (spa_streq(prog, "pw-sysex")) {
data.mode = mode_playback; data.mode = mode_playback;
data.data_type = TYPE_SYSEX; data.data_type = TYPE_SYSEX;