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.