midisynth(1)                                                      midisynth(1)


NAME
     midisynth - software MIDI synthesizer

SYNOPSIS
     midisynth [Options] [PresetFile1] [PresetFile2] [...][PresetFile16]

DESCRIPTION
     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:

     -h help
          Print list of options.

     -a allMIDI
          Listen to all MIDI inputs.  Default is to listen to only the
          'Software Synth' port.

     -bank <bankpath>
          Use <bankpath> as the default GM preset bank.  Default is
          /usr/share/data/sounds/synth/presets/GeneralMIDI_SoundSetLevel1

     -chans N
          Open an N-channel output port [2,4,8].  Default is 2.

     -cpu <limit>
          Upper CPU usage limit.  Default is 75%.

     -g gain
          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.

     -device <audiodev>
          Use audio output device <audiodev>.  Default is the currently-set
          default output device.

     -r rate
          Sampling rate [8000..UP].  Default is 44100.

     -t timeout
          Time out after last MIDI write port closed.  -1 = never, 0 =
          immediate, 1..N = minutes.  Default is 5 minutes.


     -tu tune
          Tuning offset (Cents).  Default is 0 cents.

     -v verbose
          Print MIDI events to screen or console.  Default is false.

     -vo voicecount
          Startup voice capacity of synthesizer [2..255].  Default varies with
          CPU architecture.

     -o openfile
          Read startup state file.  Default is $(HOME)/.midisynthrc.

     PresetFile1 ... PresetFile16
          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
     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".

CPU USAGE LIMITING
     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.

RELATED APPLICATIONS
     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
     synthesizer.

     syntheditor(1) allows real-time editing of active presets and all
     synthesizer parameters, as well as editing and creating new
     synthpreset(4) files.

CONFIGURATION
     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
     found:

     $HOME/midisynth.startup
     $HOME/.midisynthrc
     /var/dmedia/midi/midisynth/startup

     Note that none these files is present by default, nor is the subdirectory
     /var/dmedia/midi/midisynth.  This could be added by the system
     administrator.

     Each parameter must be on a line of its own, and must be in the form

     midisynth*parameterName: parameterValue

     The following parameters may be set:

     cpuLimit
          Upper limit of CPU usage allowed before midisynth will begin to kill
          off voices.  Default is 75 (percent).

     defaultBank
          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.

     outputDevice
          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".


     gainIndB
          Master gain in decibels for the MIDI voices.  Default is 0.

     generalMIDI
          Boolean.  If True then midisynth will start up in general MIDI mode,
          with channel 10 dedicated to the Percussion map.  Default is True.

     inputFromAllMIDIDevices
          Boolean.  If True then midisynth will read from all configured MIDI
          input devices.  Default is False

     outChannels
          Number of channels of output audio to generate.  Legal values are 2,
          4, and 8.  Default is 2.

     samplingRate
          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.

     tuneInCents
          Master detune of samples in cents (1/100 of a semitone).  Default is
          0.

     processLength
          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.

     stereoQueueSize
          Length in samples of the audio output port queue (see
          alSetQueueSize(3dm).  Default is 1024 (4 x processLength).

     timeOutInMinutes
          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
          5.

     verbose
          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.

     voiceCount
          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
     settings.

HARDWARE
     midisynth runs on Iris Indigo R4000, Indigo2, Indy, O2, Octane, and
     Onyx/Challenge machines fitted with the SGI Audio Serial Option (ASO)
     Board.

BUGS
     Please refer to the release notes for dmedia_eoe for futher information.

SEE ALSO
     synthpreset(4), midikeys(1), synthpanel(1), syntheditor(1),
     soundplayer(1)


                                                                        Page 5