---
name: "smfplay"
section: "1"
platform: "linux"
package: "midish"
version: "1.5.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/smfplay"
---

# smfplay(1)

play a standard MIDI file

## NAME

**smfplay** – play a standard MIDI file

## SYNOPSIS

**smfplay** \[**-mxy**\] \[**-g** *measure*\] \[**-d** *devname*\] \[**-i** *devname*\] midifile

## DESCRIPTION

The **smfplay** utility plays a MIDI file. While playing, it can route events from one [midi(4)](/midi/4.md) device to another. To stop performance, send an interrupt signal to **smfplay** (for instance by pressing control ^C on the terminal). The options are as follows:

- **-m**

  Use metronome. The metronome will follow tempo changes and time signature changes in the midi file.

- **-x**

  Synchronise to an external [midi(4)](/midi/4.md) device. If the **-i** flag is used then playback will be synchronised to the input device else it will be synchronised to the default device.

- **-y**

  Send midi timing information to the default device. Useful if the output device is a slave MIDI sequencer.

- **-g** *measure*

  Start playback at the given measure number.

- **-d** *filename*

  Default [midi(4)](/midi/4.md) device on which to play the midi file. If not specified, the content of the MIDIDEV environment variable will be used instead.

- **-i** *filename*

  Alternate input [midi(4)](/midi/4.md) device. Voice events (notes, controllers, etc) received on the input device will be sent as-is to the default device. Without this flag, the default device will be used for input.

The **smfplay** utility is an interface to [midish(1)](/midish/1.md). If more specific features are needed, the user may consider using [midish(1)](/midish/1.md).

## EXAMPLES

The following will play *mysong.mid* on device */dev/rmidi4* and will use metronome.

```
$ smfplay -m -d /dev/rmidi4 mysong.mid
```

## SEE ALSO

midiplay(1), [midish(1)](/midish/1.md), [smfrec(1)](/smfrec/1.md), [midi(4)](/midi/4.md)
