diff --git a/.github/ISSUE_TEMPLATE/communication.md b/.github/ISSUE_TEMPLATE/communication.md
new file mode 100644
index 0000000..5f79e44
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/communication.md
@@ -0,0 +1,20 @@
+---
+name: Communication
+about: Communication with SF program developers
+title: "[Communication]"
+labels: communication
+assignees: sylvia-leaf
+
+---
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**Additional context**
+Add any other context or screenshots about the issue here.
+
+**Who do we need to communicate with?**
+Tell us who needs to know about this plan or proposal.
diff --git a/draft-revision-history.md b/draft-revision-history.md
index 3f1182f..f580932 100644
--- a/draft-revision-history.md
+++ b/draft-revision-history.md
@@ -1,8 +1,10 @@
-# SFe Draft Specification Revision History 4.0-rc1
+# SFe Draft Specification Revision History 4.0-20241224
| | | | |
| -------- | ----------------- | -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Revision | Type | Date | Description |
+| 4.0-rc2 | Development | December 26, 2024 | Made small changes to the feature flag system
Revised how duplicated presets between banks are handled
Deleted a few references to future versions |
+| 4.0-rc1a | Release candidate | December 18, 2024 | Human-readable version introduced
Fixed some words and formatting
Removed reference to dynamic RIFF for now |
| 4.0-rc1 | Release candidate | December 10, 2024 | Overhauled specification structure
Included program and compatibility specifications, AWE ROM emulator specification and feature flags in same document
Removed references to future features
Got rid of even more redundant things
Added a few more sections
Changed some wordings
Added release candidate information
Shortened SF history to just the post-2.04 breakthroughs |
| 4.0.11a | Update | December 9, 2024 | Corrected some hyphenations for the word "sub-chunk". |
| 4.0.11 | Milestone | December 9, 2024 | Separated copyright/trademark and draft disclaimers
Rewritten 0.2
Separated SFe team and special thanks lists
Corrected a name
Added and changed a few definitions
Added concept of RIFF-type format structures and rewrote 3.1 accordingly
Added clarification to 5.12.3 about tree structure
Defined new SFty value for 8-bit samples
Made it clear that a missing smpl sub-chunk without an SFty value that implies 8-bit samples means that a bank is Structurally Unsound
Added 6.2c
Added the SFe Compression 1.0 standard based on FluidSynth Werner SF3 August 2021 specification
Versioning update again
More consistent use of words and formatting
Added SiliconSFe specification
Clarified that no new illustrations are required for SFe 4.0.
Removed reference to real-time synthesis, as that feature won't be added before SFe 5.0 |
diff --git a/sfe-specification-4.0-rc1a.md b/sfe-specification-4.0-rc2.md
similarity index 99%
rename from sfe-specification-4.0-rc1a.md
rename to sfe-specification-4.0-rc2.md
index df9d763..1b4ed54 100644
--- a/sfe-specification-4.0-rc1a.md
+++ b/sfe-specification-4.0-rc2.md
@@ -1,6 +1,6 @@
# SF-enhanced (SFe) 4 specification
-## Machine readable version (Markdown) - 4.0-rc1a (18/12/2024)
+## Machine readable version (Markdown) - 4.0-rc2 (Release Candidate 2)
Copyright © 2024 SFe Team and contributors
@@ -27,9 +27,9 @@ The SFe standard has been created to provide a successor to E-mu Systems®'s Sou
## 1.2 Changelog
-| Revision | Date | Description |
-| -------- | ---------------- | ----------- |
-| 4.0-rc1a | 18 December 2024 | n/a |
+| Revision | Date | Description |
+| ------------ | ---------------- | ----------- |
+| This version | 26 December 2024 | n/a |
For draft specification revision history, see `draft-revision-history.md` (available in the SFe specification package or on the GitHub repository).
@@ -524,7 +524,7 @@ Assume `Final` if contents are unknown.
The `WORD` value `wSFeDraftMilestone` contains the draft specification milestone or release candidate number that a bank was created to. This varies depending on the value of `achSFeSpecType`.
-The case-sensitive UTF-8 character field `achSFeFullVersion` contains the full version string of the specification used, for example `4.0-rc1a`.
+The case-sensitive UTF-8 character field `achSFeFullVersion` contains the full version string of the specification used, for example `4.0-rc2`.
If the `SFvx` sub-chunk is missing or of an incorrect size, assume these values:
@@ -943,13 +943,11 @@ The feature flags system is split like this:
- Bit 2: Reserved
- Bit 3: Reserved
-### 6.2.7 Branch 05 SiliconSFe support
-
-#### 05:00 User-defined sample ROMs
+#### 04:02 User-defined sample ROMs
- Bit 1: Support for user-defined sample ROMs
-#### 05:01 ROM emulator
+#### 04:03 ROM emulator
- Bit 1: 1MB ROM emulator support
@@ -1017,7 +1015,7 @@ This occurs when the file is structurally damaged or manually edited in a manner
- In SFe, the preset to be used is no longer necessarily the first one. Instead, selecting the correct preset (or combination of presets) to use will be permissible.
- Such a feature is optional, and if not implemented, the player should use the legacy SF2.04 behavior in these cases (use the first preset found).
- Editors should warn the user if such presets are found.
-- This behavior might change in future versions, so please take the `ifil` value, and later versions of this specification, into account. In particular, later versions of SFe will use the `ISFe-list` sub-chunk to determine this behavior.
+- This behavior might change in future versions, so please take the `ifil` value, and later versions of this specification, into account.
## 8.4 Duplicated preset locations across files
@@ -1027,9 +1025,10 @@ This occurs when multiple files are loaded simultaneously (now a required featur
- This was because multiple file loading was not a standard feature mandated in the legacy SoundFont® standard.
- Legacy SF2.04 and Werner SF3 compatible software developers therefore had the liberty to implement multiple file loading; however, they wanted to.
- This edge case will now be defined in SFe.
-- If multiple presets across loaded files have the same value of `byBankMSB`, `byBankLSB` and `wPreset`, then the preset to be used may be selectable from all the presets with the same bank location, depending on the player implementation. The preset to be used may also be a combination of multiple presets.
-- Such a feature is also optional, and if not implemented, you can either use the first preset found, or you can combine all the presets.
-- This behavior might change in future versions, so please take the `ifil` value, and later versions of this specification, into account. In particular, later versions of SFe will use the `ISFe-list` sub-chunk to determine this behavior.
+- If multiple presets across loaded files have the same value of `byBankMSB`, `byBankLSB` and `wPreset`, then the preset to be used may be selectable from all the presets with the same bank location (in the way described in section 8.3).
+- Such a feature is optional, and if not implemented, the player should use the legacy SF2.04 behavior in these cases (use the first preset found).
+- Editors should warn the user if such presets are found.
+- This behavior might change in future versions, so please take the `ifil` value, and later versions of this specification, into account.
## 8.5 Undefined chunks
@@ -1412,7 +1411,7 @@ If an implementation is unable to reach the layering requirements without crashi
- Upgrade the `ifil` version in the header from `wMajor=2`, `wMinor=4` to `wMajor=2`, `wMinor=1024`.
- Overwrite the `isng` value with `SFe 4`.
-- Create an `ISFe-list` sub-chunk with information: `SFty = "SFe-static"`, `SFvx = 4, 0, Release Candidate, 1, "4.0-rc1"`, `flag` corresponding to features used in the bank.
+- Create an `ISFe-list` sub-chunk with information: `SFty = "SFe-static"`, `SFvx = 4, 0, Release Candidate, 2, "4.0-rc2"`, `flag` corresponding to features used in the bank.
### 11.2.2 Conversion from SFe to legacy SF2.04