It is possible using AudioUnits on iOS to create samplers that load and play soundfont (or SF2) files. This is a really great feature. The problem is that I don't see any interface for inspecting a soundfont to see: a) how many presets it contains and b) the names of the presets it contains.
It is possible to obtain the current preset name by first loading the soundfont into the sampler using AudioUnitSetProperty
with kAUSamplerProperty_LoadInstrument
and then calling AudioUnitGetProperty
with kAudioUnitProperty_ClassInfo
on the sampler. This is not very efficient however, and only tells you the name of the currently loaded preset. It also does not seem to tell you how many presets are contained in the soundfont.
How does one do these things without using 3rd party code (surely it is natively supported)?
This is a very old question, but I do have another solution: my SoundFonts application. It is available on the AppStore for a small fee, or you can use the source to build what you want.
The repo contains an SF2 parser in C++ that I reworked from some code I found online. The repo also contains a catalog.py Python script that generates listing from a SF2 file. It uses the sf2utils Python package.