Updated: 2021/Apr/14

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:

     -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

     -T tempo          Set the tempo for the recording to tempo.

     -t time           Sets the maximum amount of time to record.  Format is

     -V                Be verbose.

     MIDIDEVICE  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

     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.

NetBSD 9.99                     March 13, 2020                     NetBSD 9.99