Add fixed octave for block+fnum systems

This isn't implemented in SAA1099, despite also being block+fnum system, as there are no benefits from it
This commit is contained in:
Natt Akuma 2024-09-18 14:48:10 +07:00
parent 6a58797669
commit cf3d08ca5a
25 changed files with 194 additions and 97 deletions

View file

@ -409,6 +409,7 @@ void DivInstrument::writeFeatureFM(SafeWriter* w, bool fui) {
w->writeC(((fm.alg&7)<<4)|(fm.fb&7));
w->writeC(((fm.fms2&7)<<5)|((fm.ams&3)<<3)|(fm.fms&7));
w->writeC(((fm.ams2&3)<<6)|((fm.ops==4)?32:0)|(fm.opllPreset&31));
w->writeC(fm.block&15);
// operator data
for (int i=0; i<opCount; i++) {
@ -1741,6 +1742,11 @@ void DivInstrument::readFeatureFM(SafeReader& reader, short version) {
fm.ops=(next&32)?4:2;
fm.opllPreset=next&31;
if (version>=224) {
next=reader.readC();
fm.block=next&15;
}
// read operators
for (int i=0; i<opCount; i++) {
DivInstrumentFM::Operator& op=fm.op[i];