sf2(4) sf2(4)
sf2, SoundFont, SoundFont2 - SoundFont Compatible Audio File Format
#include <dmedia/audiofile.h>
The Audio File Library currently supports 13 of the commonly found audio
file formats, i.e., is able to recognize, read, and write sample data and
header information to and from files in these formats. It is important
not to confuse sample or audio data formats with file formats. The
former refers to the bit-wise organization of the sound samples in the
file, i.e., whether the format is 8-bit integer or 16-bit unsigned, etc.
Audio file format refers to the structure of the audio file header, the
chunk of on-disk data which preceeds the samples and which provides
information about the file to the audio program. A single audio file
format may support a large variety of sample formats.
The SoundFont Compatible File Format (sf2) was developed by E-mu
Systems, Inc., for use on PC's. It consists of a complex RIFF header
containing large amounts of information about the sound samples, plus an
imbedded, contiguous block of binary data representing the sound samples.
DATA FORMAT SPECIFICATIONS [Toc] [Back] Sample Formats:
Two's complement integer only.
Sample Widths:
16 bit only.
Byte Orders:
Always littleendian.
Channel Counts:
1 channel only.
Compression Formats:
None.
FILE FORMAT SPECIFICATIONS [Toc] [Back] SF2 file headers contain vast amounts of information. The Audio File
Library parses a small portion of this information for use as an
instrument chunk.
Instrument Configurations:
SoundFont2 headers contain a multi-level architecture of Presets,
Instruments, and Instrument Zones (a sample plus its articulation
data). This "Instrument" is not the same level of structure as the
AF inst chunk; an Instrument can contain any number of Instrument
Zones, each of which is the approximate equivalent to an AF inst.
Each audio sample may be used any number of times in different
Instrument Zones.
Page 1
sf2(4) sf2(4)
Currently a maximum of 1 allowed for writing, though any number may
be found in a file opened for reading. A single loop per inst is
allowed.
The Audio File Library parses each Instrument Zone as a separate
inst chunk -- which often results in literally thousands of insts!
Each one references a set of instrument parameters (see below) which
provides a partial description of the MIDI articulation for that
Instrument Zone. In order to allow this possibly-vast number of
insts to be grouped, an integer parameter for the parent Instrument
or Preset is provided.
Instparams associated with this inst:
Standard Params:
AF_INST_MIDI_BASENOTE
AF_INST_NUMCENTS_DETUNE
AF_INST_MIDI_LONOTE
AF_INST_MIDI_HINOTE
AF_INST_MIDI_LOVELOCITY
AF_INST_MIDI_HIVELOCITY
AF_INST_NUMDBS_GAIN
SoundFont - specific Params:
AF_INST_SAMP_STARTFRAME Starting frame offset for sample
AF_INST_SAMP_ENDFRAME Ending frame for sample
AF_INST_SAMP_MODE Sample loop mode. One of three values:
- AF_INST_LOOP_OFF Loop not used ("one shot")
- AF_INST_LOOP_CONTINUOUS Sample loops through release
- AF_INST_LOOP_SUSTAIN Sample loops for sustain only ("sampled release")
AF_INST_SAMP_RATE Sample rate of sample referenced by inst
AF_INST_TRACKID Track ID for inst
AF_INST_NAME Name of sample referenced by inst
AF_INST_PRESET_NAME Name of preset containing the inst
AF_INST_PRESETID ID of preset containing the inst
Currently, all the SoundFont - specific params are read-only See
afSetInstParamLong(3dm) for more information about parameters.
Markers:
Unlike AIFF(3dm) and WAVE(3dm) files, there is no direct association
between markers and loops. However, for backwards compatibility, an
application may choose to specify loop start and end points via the
Page 2
sf2(4) sf2(4)
traditional AIFF-style method using mark id's (afSetLoopStart(3dm),
etc.) or via the newer afSetLoopStartFrame(3dm) and related
routines. In both cases, only the loop information will be written
out to the header because this format does not support markers.
Using the first-listed method, two markers are allowed, one for the
start location and one for the end point of the loop.
When a file is opened for reading, the AF will generate a synthetic pair
of markers for each loop found in the file. This is done to allow
currently-existing applications to extract loop points via the old
afGetLoopStart(3dm) mechanism. It is important to remember that these
markers are not actually present in the header or file.
Miscellaneous Chunks:
AF_MISC_COPY copyright string
AF_MISC_AUTH author string
AF_MISC_NAME name string
AF_MISC_COMMENT text comment string
AF_MISC_ICRD creation date string
AF_MISC_ISFT software name string
afInitFileFormat(3dm), afGetFileFormat(3dm), afIntro(3dm),
afGetInstIDs(3dm), afGetInstParams(3dm)
PPPPaaaaggggeeee 3333 [ Back ]
|