pmidi - A midi file player for ALSA.
pmidi [
-pclient:port ] [
-l ] [
-ddelay ]
file...
The
pmidi command reads in the specified midi files and plays them
through the ALSA sequencer. You can specify on the command line which
sequencer port that you wish to use. Use the
-l option to get a list of
possible sequencer ports for your machine.
-
-pclient:port
- Specify the ALSA port to send the midi file to.
- -l
- List the possible output ports that could be used.
-
-ddelay
- Delay after song ends. This is used to prevent the last
note of a song being chopped off early. The default is two seconds.
You can specify client:port numbers in the ALSA_OUTPUT_PORTS environment
variable. You can also supply a comma (or space if quoted correctly) separated
list of client:port numbers. This will allow you to play midi files that use
more than 16 channels.
- pmidi song.mid song2.mid
pmidi -p "64:0, 64:1" song.mid
Before you start you need to have
ALSA installed and configured
correctly. This man page cannot cover all general
ALSA topics,
but here are a few things to check when things do not seem to be working.
- 1.
- First check that the correct sequencer modules are loaded
for your sound card:
- -
- For a card with an external Midi connection, you need to
load snd-seq-midi.
- -
- For the OPL2/3 internal synthesiser you need to load
snd-synth-opl3.
- -
- For the AWE32/64 internal synthesiser you need to load
snd-synth-emu8000.
- -
- For the SB Live! internal synthesiser you need to load
snd-synth-emu10k1.
- -
- (Let me know of any more)
- 2a
- If you have an AWE32/64 or SB Live! you will need to load
the sounds with sfxload in the same way as for the standard kernel
drivers.
- 2b
- If you have the OPL3 FM synthesiser you will have to load
the FM instruments with sbiload. See note below.
- 3.
- Make sure that the synth in the mixer is turned up and
unmuted if appropriate.
Because you may have more than one sound card and each sound card may have
several MIDI connections, you have to tell pmidi which one to use.
First find out what the possibilities are for your system:
If you run:
pmidi -l
it will give you a list of the possible devices that it can play to. On my
system I get:
Port |
Client name |
Port name |
64:0 |
Rawmidi 0 - EMU10K1 MPU-401 (U |
EMU10K1 MPU - 401 (UART) |
65:0 |
Emu10k1 WaveTable |
Emu10k1 Port 0 |
65:1 |
Emu10k1 WaveTable |
Emu10k1 Port 1 |
65:2 |
Emu10k1 WaveTable |
Emu10k1 Port 2 |
65:3 |
Emu10k1 WaveTable |
Emu10k1 Port 3 |
128:0 |
FLUID Synth (28152) |
Synth input port (28152) |
129:0 |
Client-129 |
TiMidity port 0 |
129:1 |
Client-129 |
TiMidity port 1 |
Any of the port numbers in the first column can be used with pmidi. In the
example above the first one is the external Midi port, the next four are the
internal wave table synthesiser. Then there are two software synthesisers
running, FluidSynth (
http://www.fluidsynth.org) and Timididy.
If you don't see anything listed then check that the correct ALSA modules are
loaded as in the section "Checking ALSA".
- ALSA_OUTPUT_PORTS
- Port to use in playing midi file.
playmidi(1)
Steve Ratcliffe <[email protected]>