MIDIRECORD(1) General Commands Manual MIDIRECORD(1)

midirecord
record midi files

midirecord [-aDfhoqV] [-B buffersize] [-c channels] [-d devices] [-f sequencerdev] [-n notesperbeat] [-R roundbeats] [-r raw_output] [-T tempo] [-t time] file

The midirecord program converts the sequencer events read on sequencerdev to the named MIDI SMF output. If the file name is -, output will go to the standard output. By default, timing for events begins with the first event. The -o flag may be used to start timing events at the process start up.

The following options are available:
Append to the specified file, rather than overwriting.
buffersize
Set the sequencer device read buffer size to buffersize. The default value is 32768 bytes.
channels
Sets the filter list of channels to channels, which is a comma separated list of channels to filter in.
Enable debug log.
devices
Sets the filter list of devices to devices, which is a comma separated list of devices to filter in.
sequencerdev
Sets the sequencer device to use to sequencerdev. The default is /dev/music.
Print a help message.
notesperbeat
Sets the MIDI notes (clocks) per beat to notesperbeat.
Start the relative timer at process start up instead of at the first event.
Be quiet.
roundbeats
Round timings to roundbeats of a note. Output will always be aligned to this many beats.
raw_output
Create the raw output of the sequencer device in raw_output.
tempo
Set the tempo for the recording to tempo.
time
Sets the maximum amount of time to record. Format is [hh:]mm:ss[.dddddd].
Be verbose.

the midi device to be used.

You can use midirecord to observe activity on a MIDI bus using the -D and -V options and learn about device-specific MIDI messages.

For instance, to determine the MIDI messages needed to switch to ARP mode on a Korg minilogue XD synthesizer, which does not document any control change or non-registered parameter numbers for this function but does document that ARP is part of the “VOICE TYPE MODE”, parameter these messages were seen:

midi_event_chn_common_to_output:444: MIDI_CTL_CHANGE: channel 0 ctrl 62 val 10
midi_event_chn_common_to_output:444: MIDI_CTL_CHANGE: channel 0 ctrl 6 val 1

which shows that CC#62 (hexadecimal) was set to value 10 (also hexadecimal), and that CC#6 was set to value 1. As CC#62 is also the least significant byte of the non-registered parameter number, we can guess that NRPN 0,62 controls the “VOICE MODE TYPE” parameter documented in the synthesizer manual, and that the value 1 set to CC#6 (Control Data Entry MSB) turns on ARP mode. For completeness, setting both CC#62 and CC#63 for the parameter number, as well as CC#6 and CC#26 (Control Data Entry MSB) to 0 provides a complete NRPN control message.

midiplay(1), midi(4), sequencer(4)

The midirecord program was first seen in NetBSD 7.

The midirecord program was written by Matthew R. Green <mrg@eterna.com.au>.

SYSEX, LOCAL and FULLSIZE messages are not currently handled, but the NetBSD sequencer(4) device does not generate them.

midirecord will hang after the timeout waiting for the very next message before it will exit and finish writing the file.

March 13, 2020 NetBSD 10.0