4.00.5 (Draft)
Pre-releaseSFe Version 4.00.5 (Draft Specification) - August 2024
Welcome Autumn, Welcome GitHub
This is the fifth draft of the SFe specification, and we have started to use GitHub for SFe specification development.
This release of the specification does not include new features in the format spec itself, as there has been a feature freeze for SFe version 4.00, but focuses on the release of the reference implementation of samples used for the ROM emulator that SFe implementations will need to implement.
For this reason, the changes made in this draft are mostly limited to a few formatting changes and new references to the reference implementation of the ROM samples.
SFe and GitHub
We've made the decision to host the spec on GitHub, and allow users to start issues and pull requests to improve the format.
ROM sample specification
We hope that SFe players will allow more users to enjoy soundfonts that use legacy sound card ROM samples, so SFe implementations should include an AWE ROM emulator. The problem is that the original samples are copyrighted, so we have provided a specification for samples that if met, should provide the same results as the original ROM samples. You can find this as part of the compatibility spec.
Initially, we have started with ROM samples for the 1MB wavetable that was implemented in the AWE32, but if necessary we will extend the ROM sample specification for larger wavetables.
New versioning system
In 4.00.4, we introduced a new versioning system. This system, borrowing many features from semantic versioning, makes it easy to identify:
- whether two spec versions are compatible with each other
- whether two spec versions have the same feature set
- whether or not a spec version has new features
- whether or not a spec version is a draft version
We've added an explanation of the new versioning system in section 0.1a of the format spec, and a clarification about the version of the compatibility spec.
About future plans
We've added section 1.5a, "Future Plans" to the format spec, to formalise the planned future of the format. Most importantly, the feature freeze for version 4.00 has been reached, and any more features will be considered for future versions starting from 4.01.
Program specification
Since 4.00.4, programs have been prohibited from using proprietary compression formats (such as sfArk, SFPack, SF2Pack and sfq). We made this decision based on the restrictive licensing of many (but not all) of the programs used to compress/decompress these formats, and incompatibility of these formats with major open source soundfont programs.
In SFe version 4.00, the only permitted compression format will be Werner SF3, which was created by Werner Schweer for MuseScore, and adopted widely. This format is also the reason why SFe specification versions start from 4:
- legacy SF is version 2
- Werner SF3 builds from legacy SF, and is version 3
- SFe builds from Werner SF3, and is version 4.
Compatibility specification
In the compatibility spec, we've added information on how to handle proprietary compression formats, and we fixed a mistake in the INFO chunk information.
What's coming up?
For 4.00.6, we plan on providing an SFe file repair specification for development of programs. This is to be released in late 2024 or early 2025. If you have any suggestions for other features that we could add, or additional information that we could include in future specs, then please open an issue and describe what you would like to see.