midisynth - software MIDI synthesizer
midisynth [Options] [PresetFile1] [PresetFile2] [...][PresetFile16]
midisynth is a program which listens on the MIDI input port and generates
sounds in real time in response to MIDI events.
midisynth has the following command-line options, most with a short and
long form as indicated:
Print list of options.
Listen to all MIDI inputs. Default is to listen to only the
'Software Synth' port.
Use <bankpath> as the default GM preset bank. Default is
Open an N-channel output port [2,4,8]. Default is 2.
Upper CPU usage limit. Default is 75%.
Main Gain (in Decibels). Default is 0.
-gm Start up in General MIDI (GM) mode. This is the default.
-gs Start up in General MIDI GS-compatible mode.
-ngm Start up in non-General MIDI mode.
Use audio output device <audiodev>. Default is the currently-set
default output device.
Sampling rate [8000..UP]. Default is 44100.
Time out after last MIDI write port closed. -1 = never, 0 =
immediate, 1..N = minutes. Default is 5 minutes.
Tuning offset (Cents). Default is 0 cents.
Print MIDI events to screen or console. Default is false.
Startup voice capacity of synthesizer [2..255]. Default varies with
Read startup state file. Default is $(HOME)/.midisynthrc.
PresetFile1 ... PresetFile16 [Toc] [Back]
Midisynth may be given a list of up to 16 preset file names. These
will be assigned to channels 1 through 16, in order, but will ignore
the entry for channel 10 (the Percussion channel) if midisynth is
started in General MIDI mode. The file names must be specified as
full paths to the files.
THE DEFAULT SOUND SET [Toc] [Back]
Midisynth's default basic sound set is the General MIDI 128 Preset
library, whose preset files are located in
/usr/share/data/sounds/synth/presets. Alternate GM preset directories or
preset bank files may be specified on the command line as indicated.
Customized sounds may be created using real-time MIDI System Exclusive
messages and editing synth preset files.
midisynth is autostarted the first time an application opens a MIDI write
port on the SoftwareSynth MIDI device. midisynth times out (shuts itself
off) five minutes after the last MIDI write port on the SoftwareSynth
MIDI device is closed.
HANDLING OF THE MIDI DATA INPUT
midisynth starts up with a MIDI input port on the SoftwareSynth MIDI
device. Additional MIDI Devices may be added with Port Setup from the
ToolChest System Manager. Use synthpanel(1) to toggle midisynth's
response to data from the available MIDI devices. midisynth merges all
inputs into a single 16-channel stream and processes all messages.
Currently, midisynth merges the preset and controllers from all input
devices, but Note On/Off status is handled per device. For example,
NOTEOFF to device "SoftwareSynth" will not cancel a NOTEON from device
"Serial Port 1".
midisynth runs with non-degrading priority, i.e., it will not relinquish
the CPU to any other process (with the exception of a few system
processes). In order to avoid consuming the operating system's entire
resources, midisynth uses a CPU usage limiting system. When its
percentage of the CPU rises above a predetermined threshold (see cpuLimit
below), it attempts to reduce its usage until the percentage is below
that threshold. It does this by killing off some of the active voices
(using an internal heuristic designed to make this procedure as
unobtrusive as possible) until the CPU usage falls below the threshold.
synthpanel(1) displays the 16 channel preset address space of midisynth.
It also allows adding and selecting alternate preset banks, adjusting of
the master synthesizer volume, and selecting of MIDI input ports.
midikeys(1) may be used to play the synthesizer and change its presets on
a single MIDI channel at a time.
soundplayer(1) allows playback of standard MIDI data files via the
syntheditor(1) allows real-time editing of active presets and all
synthesizer parameters, as well as editing and creating new
midisynth reads a configuration file at startup time which allows a small
set of startup parameters to be configured by the user. These parameters
are the same as those available on the command line. midisynth looks for
files in the following three places, stopping after the first of these is
Note that none these files is present by default, nor is the subdirectory
/var/dmedia/midi/midisynth. This could be added by the system
Each parameter must be on a line of its own, and must be in the form
The following parameters may be set:
Upper limit of CPU usage allowed before midisynth will begin to kill
off voices. Default is 75 (percent).
The full path to an alternate General MIDI preset bank. This may
either be a directory containing preset files, or a SoundFont2-
compatible preset bank file.
A string representing the audio output device to use. Legal values
are the AL_NAME parameters for the various audio devices. The
default is "DefaultOut".
Master gain in decibels for the MIDI voices. Default is 0.
Boolean. If True then midisynth will start up in general MIDI mode,
with channel 10 dedicated to the Percussion map. Default is True.
Boolean. If True then midisynth will read from all configured MIDI
input devices. Default is False
Number of channels of output audio to generate. Legal values are 2,
4, and 8. Default is 2.
Sampling rate in Hz for the output audio. Default is 44100.
Setting this to lower values can significantly reduce CPU usage, but
will also decrease the sound quality. Minimum is 8000.
Master detune of samples in cents (1/100 of a semitone). Default is
Length in samples of each generated audio buffer. Smaller buffers
give better response time but consume more CPU. For optimum
performance, this value should be a power of 2. Default is 256.
Minimum is 128, and the maximum is 512. This value must be less
than or equal to stereoQueueSize.
Length in samples of the audio output port queue (see
alSetQueueSize(3dm). Default is 1024 (4 x processLength).
Time in minutes before midisynth will exit from lack of MIDI input.
If set to -1, midisynth will never exit for this reason. Default is
Boolean. If True, midisynth operates in verbose mode, and will
print information about events received to the terminal (or the
console) via stdout. Default is False.
The maximum number of polyphonic voices that can sound at one time.
Note that this is an upper limit, but that the CPU limiting factor
will also set an upper limit which, depending on the CPU, may be
lower than this value. For an R4000 processor, 24 is a reasonable
upper bound. For an R5000, 32 is good. For faster and/or
multiprocessor machines, higher values will work, often over 100
voices. Minimum is 2 and maximum is 255.
Command-line arguments will override any default or configuration-file
midisynth runs on Iris Indigo R4000, Indigo2, Indy, O2, Octane, and
Onyx/Challenge machines fitted with the SGI Audio Serial Option (ASO)
Please refer to the release notes for dmedia_eoe for futher information.
synthpreset(4), midikeys(1), synthpanel(1), syntheditor(1),
PPPPaaaaggggeeee 5555 [ Back ]