Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
PLAYMIDI(1)		FreeBSD	General	Commands Manual		   PLAYMIDI(1)

     playmidi, xplaymidi, splaymidi -- midi file player

     [s|x]playmidi [-8cCdeEfF4gGiImoprRtvVz] [file ...]

     playmidi is a full-featured midi file player for Linux systems or others
     using the Voxware 3.5 sound driver	or newer.  It can play back midi files
     on	general	midi devices or	FM or Gravis Ultrasound.  If no	files are
     specified,	playmidi will give a summary of	all command line options.  If
     more than one file	is specified, you can use xplaymidi or splaymidi or -r
     mode for interactive control, allowing you	to skip	to the previous	song,
     next song,	speed up or slow down the midi file, or	repeat a midi file
     while viewing a real-time display of data in the midi file.

     Command line options are described	below.	(make sure to precede them
     with a dash (``-''))


       force the use of	8-bit patches with the gravis ultrasound to conserve
       memory.	 Patches are automatically reloaded as 8-bit when memory runs
       out, but	if you know in advance,	you can	save a step and	speed up the
       loading process.


       set the channel mask (in	hexidecimal) of	which channels to play from
       the midi	file.	This is	useful if you have a midi file with some chan-
       nels that don't sound very good on your hardware.


       ignore any drum (percussion) tracks in a	midi file. (See	also -m# ).
       This is useful for FM or	any other hardware where percussion sounds es-
       pecially	bad.  Also useful for midi files where the percussion is
       poorly written.


       send output to external midi.   This is what you'll want	to do if you
       have any	midi hardware connected	to your	system.	 This option is	the
       default for playmidi as distributed.


       send output to fm synth using fm	patches.  You'll need to use this op-
       tion to playback	on any non-midi	soundcard with the exception of	the
       gravis ultrasound.


       send output to fm synth using 4-op OPL/3	patches	(BROKEN!)  Don't use
       this option since it doesn't work yet.


       send output to Gravis Ultrasound.  If you have a	gravis ultrasound
       without anything	connected to the midi port, this option	is for you.


       set mask	of channels to always output to	external midi.	 If you	want
       to use more than	one playback device, this option allows	you to specify
       what channels to	send to	the external midi port.	 For example, 00FF
       would send channels 1 - 8  to external midi.


       set mask	of channels to always output to	fm.  Used as above.


       set mask	of channels to always output to	gus.  Used as above.


       set the channel mask (in	hexidecimal) of	which channels to ignore from
       the midi	file.	This option is good for	midi files with	a few channels
       you don't want to listen	to.


       set the channel mask (in	hexidecimal) of	which channels to consider
       percussion channels.  See also -d

       This option is good for midi files that don't conform to	the default
       percussion arrangement of playmidi.  GM standard	specifies percussion
       in channel 10 only.   Some files	disobey	that requiring this setting.


       forces output to	a given	synth number (0-4).  This option is old	and
       obsolete.  Don't	use it.	 It's probably been removed by the time	you
       read this.


       forces a	given program number (1-128) to	be used	for all	output on
       given channel, or if no channel is specified, program will be used for
       all channels.  For example: -p33	sets all channels to program 33,
       -p5,124 sets just channel 5 to program 124, and -p1,33,2,55,9,22,10,17
       sets channel 1 to program 33, channel 2 to program 55, channel 9	to
       program 22, and channel 10 (percussive) to use the Power	Drum Set.  If
       you're using a Waveblaster, you'll want to use -p10,129 to set channel
       10 to playback percussion.  You should quote arguments to -p if you
       want to include whitespace between them.


       shows a list general midi programs and numbers.	 This is intended to
       make it easier to use the above option.


       skews tempo by a	factor (float).	  This is good for files you think the
       author wrote too	slow or	two fast.   Also good if you want to listen to
       lots of files at	high-speeds, or	play a file at slow speeds in order to
       learn to	play a song on some instrument (like piano).


       real time ansi (25-line)	playback graphics tracking of all notes	on
       each channel and	the current playback clock.  This flag is assumed when
       using xplaymidi or splaymidi.


       remap all percussion channels to	play on	given channel.	This is	useful
       if you have a file with percussion on multiple midi channels and	your
       midi hardware only supports percussion on one channel.  For example
       -P10 would send all percussion channels to channel 10.


       set initial reverb level.  Valid	range is 0 - 127.  For fm, the setting
       is either "on" (nonzero), or "off" (zero).


       set initial chorus level.  Valid	range is 0 - 127.


       set velocity for	all notes in a channel.	 All velocity information for
       the given channel will be replaced by the given velocity.  One day I'll
       change this option to allow all channels	to be modified as with the -p


       excludes	the given channel number from the mask of channels to load
       from the	midi file.


       zero channel data in output stream -- for special applications.

     Nathan Laredo (

     playmidi was originally designed out of impatience	with other midi	play-
     ers.  The startup time is negligable on all devices except	gravis ultra-
     sound (must wait for patches to load).  The meaning of the	various	real-
     time displays is yet-to-be-documented.

     Playmidi 2.x is nearly a total re-write compared with the original	1.1

     splaymidi doesn't properly	restore	terminal mode on exit; you may want to
     use ";stty	sane" at the end of any	splaymidi command.  GUS	playback qual-
     ity will improve as kernel	driver improves.  A lot	of new features	of
     playmidi are as of	yet undocumented.  4-op	FM playback doesn't work.
     Some incomplete or	corrupted midi files may cause unpredictable results
     or	seg faults.  No	other known bugs.  If you want new features or find
     undocumented ones (bugs), please email

Linux 1.3.60+		      September	25, 2021		 Linux 1.3.60+


Want to link to this manual page? Use this URL:

home | help