Metadata
Prerequisite
This section requires a basic understanding of SoundFont 2.04 and binary.
SoundFont metadata is accessible through SoundFont3.metaData
. This data mainly used for library management and player config.
- Only
ifil
,isng
andINAM
are essential. - All chunks must have even number of bytes.
- String chunks must terminate with 1 or 2 byte zero padding.
ifil
- SoundFont version
Accessible through SoundFont3.metaData.version
.
Version for detecting parsing compatability - v2 and v3 are different.
// Equates to version 2.04
uint16_t soundFontVersionMajor = 2 // 2 byte
uint16_t soundFontVersionMinor = 4 // 2 byte
// 4 byte total
isng
- Sound engine
Accessible through SoundFont3.metaData.soundEngine
Indentifies wavetable sound engine to use. Default value is "emu8000", also known as the MIDI synth.
char[] soundEngine = "emu8000" // 0 to 256 byte
char[] zeroPadding = 0 // 1 or 2 byte
// Even number of byte total
INAM
- SoundFont bank
Accessible through SoundFont3.metaData.name
Name of the SoundFont bank for mapping MIDI signals to sample. The default value is "General MIDI".
char[] soundFontBank = "General MIDI" // 0 to 256 byte
char[] zeroPadding = 0 // 1 or 2 byte
// Even number of byte total
irom
- Sound ROM samples reference
Accessible through SoundFont3.metaData.rom
Identifies a particular wavetable sound data ROM. Requires iver
if defined.
char[] wavetableRom = "lmgm" // 0 to 256 byte
char[] zeroPadding = 0 // 1 or 2 byte
// Even number of byte total
iver
- Sound ROM revision
Accessible through SoundFont3.metaData.romVersion
Version of wavetable sound data ROM. Requires irom
if defined.
// Equates to version 3.14
uint16_t romVersionMajor = 3 // 2 byte
uint16_t romVersionMinor = 14 // 2 byte
// 4 byte total
ICRD
- Creation mm/dd/yy
Accessible through SoundFont3.metaData.creationDate
SoundFont bank creation date in "Month, Day, Year" format. Should ideally be 32 bytes or less. It is mainly used for library management.
char[] creationDate = "May, 1, 1995" // 0 to 256 byte
char[] zeroPadding = 0 // 1 or 2 byte
// Even number of byte total
IENG
- SoundFont author
Accessible through SoundFont3.metaData.author
char[] soundFontAuthor = "John Smith" // 0 to 256 byte
char[] zeroPadding = 0 // 1 or 2 byte
// Even number of byte total
IPDR
- For this product
Accessible through SoundFont3.metaData.product
The specific product the SoundFont is intended for.
char[] soundFontProduct = "sbawe32" // 0 to 256 byte
char[] zeroPadding = 0 // 1 or 2 byte
// Even number of byte total
ICOP
- Copyright
Accessible through SoundFont3.metaData.copyright
char[] copyright = "Copyright (c) 1995 E-mu Systems. Inc" // 0 to 256 byte
char[] zeroPadding = 0 // 1 or 2 byte
// Even number of byte total
ICMT
- Comments
Accessible through SoundFont3.metaData.comments
char[] comments = "No comment." // 0 to 65536 byte
char[] zeroPadding = 0 // 1 or 2 byte
// Even number of byte total
ISFT
- Tool created SoundFont
Accessible through SoundFont3.metaData.createdBy
Name tools used to create or modify soundfont.
char[] createdBy = "Preditor 2.00a" // 0 to 256 byte
char[] zeroPadding = 0 // 1 or 2 byte
// Even number of byte total