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