MIDIRECORD(1) | General Commands Manual | MIDIRECORD(1)

# NAME

`midirecord` —
record midi files

# SYNOPSIS

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

# DESCRIPTION

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.

# OPTIONS

The following options are available:

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

# ENVIRONMENT

`MIDIDEVICE`
  the midi device to be used.

# EXAMPLES

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.

# SEE ALSO

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

# HISTORY

The `midirecord` program was first seen in NetBSD 7.

# AUTHORS

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

# BUGS

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.1