Site Tools


documentation:development:opera:pf25:tktfldr:sdtfldr:4sdtb

MIDI files and PIMap files


To play a MIDI file on the 3DO Station, you need the following files:

  • The MIDI file itself
  • The PIMap (program-instrument map file), which tells the 3DO system how to match MIDI numbers with sounds
  • Compiled patches (.ins) or samples referred to in the PIMap

This section discusses the PIMap file format, including the currently supported flags and an example file.

Working with PIMaps

A PIMap associates MIDI program numbers with 3DO instruments.

Parts of a PIMap

A PIMap consists of several lines, separated by carriage returns. Each line contains:

<HTML><ul></HTML> <HTML><li></HTML>MIDI program number (1-128)<HTML></li></HTML> <HTML><li></HTML>Filename <HTML><ul></HTML> <HTML><li></HTML>If the filename ends in .aiff, .aif, or .aifc, it is considered to be the name of a sample file and the file is attached to the appropriate sample player instrument.<HTML></li></HTML> <HTML><li></HTML>If the filename does not end in .aiff, .aif, or .aifc, it is assumed to be an instrument name. For example, if the file ends in .ins, it is a compiled ARIA patch.<HTML></li></HTML><HTML></ul></HTML>


<HTML></li></HTML> <HTML><li></HTML>Optional flags<HTML></li></HTML><HTML></ul></HTML>

Currently supported flags

The following table lists the flags that are currently supported as part of a PIMap:

Table 1:  Flags in a PIMap.
--------------------------------------------------------
Flag   |Description                                     
--------------------------------------------------------
-f     |Play sample file using a fixed-rate sample      
       |player that uses fewer ticks than a             
       |variable-rate player would                      
--------------------------------------------------------
-m n   |Set maximum number of voices (default is 1)     
--------------------------------------------------------
-l n   |Set low note for a sample                       
--------------------------------------------------------
-b n   |Set base note for a sample                      
--------------------------------------------------------
-h n   |Set high note for a sample                      
--------------------------------------------------------
-p n   |Set priority for instrument, default = 100, max 
       |= 200                                           
--------------------------------------------------------
-d     |Set a detune value. This works only on          
       |instruments that use the default sample playback
       |module (sampler.dsp); not on compiled ARIA      
       |instruments.                                    
--------------------------------------------------------

Note: The base note is the “home” note of the sample and is not necessarily the lowest (bass) note.

PIMap example

The example below shows a small PIMap file. The following points are of interest:

  • The PIMap file assigns the appropriate samples to the different ranges of the instrument.
  • Each .aiff file covers no more than a half octave, as you can see when you look at the low notes, base notes, and high notes assigned to the different .aiff files.
  • The gong is fixed pitch.
  • The clarinet is set up as a multisample with octave spacing.
  • The organ has its MaxVoices set to 4 to make it possible to play chords.
  • The sample bell.aiff is played by the instrument varmono16.dsp because the instrument is specified before the sample is specified.
  • The instrument ending in .ins (windnoise.ins) is a compiled ARIA instrument.

Example 1: PIMap example file.

1 clarinet1.aiff -l 30 -b 48 -h 53
1 clarinet2.aiff -l 54 -b 60 -h 66
1 clarinet3.aiff -l 67 -b 72 -h 84
2 gong.aiff -f
3 bass.aiff -p 150
4 organ.aiff -m 4
5 varmono16.dsp
5 bell.aiff
6 sawenv.dsp
7 windnoise.ins

Note: In addition to .aiff files, you can also use instruments you previously created in ARIA (.ins files). The last line of the example above illustrates this.

documentation/development/opera/pf25/tktfldr/sdtfldr/4sdtb.txt · Last modified: 2022/10/10 16:54 by 127.0.0.1