Roadmap
What we are working on for SFE
Here is a non-exhaustive list of what future versions of SFE are planned to include. If you want to propose any features, then please feel free to drop an issue on GitHub.
4.1
Developed from proposed SpessaSynth extensions, this allows more flexibility when using NRPN values in MIDI files.
Improved NRPN features also enable more accurate XG support, and is very likely to also be applicable to other extended GM standards.
The comments field is the main way that sound bank developers communicate information.
By including Markdown support, developers can make descriptions easier to read.
Bankmaps are a new system in future versions of SFE that allow the use of multiple extended GM mappings that conflict in terms of MSB/LSB/preset combinations.
Bankmaps will initially be mapped to existing popular extended GM standards, however future versions will allow the user to define their own MIDI instructions to activate a bankmap.
4.2
Using multiple samples per note-velocity layer allows the use of a different sample for each playback of a note.
This can be used to improve the realism of drums, or switch between vocal sounds on each note-on event, and is one of the most desired features.
Both a sample sequence mode and a sample randomisation mode will be available.
More sample playback modes will be introduced, which increases flexibility of sample usage.
For example, you will be able to use reversed samples or bidirectional (back-and-forth) samples.
Initial attenuation behaviour will be configurable between legacy 0.4x behaviour and true attenuation, as well as disabling the attenuation limit, and instrument amplification.
This will ensure that sound bank developers get the actual attenuation intended, and are not limited in terms of flexibility by sample volume. This should ensure that preset balancing is easier, which should naturally improve sound bank quality.
This is a standardisation of the SFLIST format, allowing more than one sound bank to be used simultaneously in a way that works on all players.
More features might be added in a future release.
You can create generators with a larger selection of values, or improved precision for more detailed sound creation.
This is achieved by expanding xdta-list to affect pgen and igen.
4.3
Other filter types, such as high-pass, band-pass and band-reject (notch), will be added to allow new sound types that were not possible before.
You can also adjust the depth (order) and other characteristics of the filter, to make it far easier to create the exact sound you desire.
Using ISMI (sample information) and IPRI (preset information), more information about objects inside a sound bank can be included.
The IMDD field also provides the sound bank's modification date.
4.4
4.5
By extending the RIFF format to support dynamic chunk sizes, the size of sound banks becomes far more flexible than ever before.
You can also use Dynamic RIFF for your own project.
Sine, saw, triangle, pulse and noise waveforms are now synthesised in real-time, with parameters adjustable in real time.
This reduces sample interpolation artifacts, reduces sound bank size by replacing samples with real-time sound synthesis, and provides true synthesis flexibility.
A significant expansion to the effects system in SFE allows more authentic-sounding DSP effects, such as phaser, EQ, distortion, echo/delay and more.
In the future, CC94 and XG effects will be fully supported, improving playback quality for MIDI files that use these extended standards.
4.6
Intermediate representations of SFE, called abstraction layers, allow development of more flexible SFE tools.
The development of sfec, the SFE compiler, will begin, and will not only make the development of SFE sound banks easier, but also traditional SoundFonts and Werner SF3 sound banks.
The SFE compiler will allow you to compile non-monolithic SFZ sound banks into monolithic sound banks in SFE, Werner SF3 or SoundFont.
4.7
5.x
SFE 5 will no longer be forward compatible with SFE 4 or SoundFont players, however it will introduce a far cleaner structure.
Instead of being separated into standard data and extended data, it is likely to have flat 32-bit or 64-bit indices and generator amounts natively, which is easier to understand.
SFE 5 is also expected to be the first version to require sample containerisation, which means that the legacy non-containerised support in SFE 4 is no longer present, which guarantees consistent sample feature availability.
Dynamic RIFF is also expected to be standard, instead of static RIFF, which reduces the complexity of SFE 5 bank loading.
Field sizes are likely to be significantly expanded or unlimited, and loop/property chunks will be extensible.