From 9940222a6f6421c898dd557bc74b4aa281dc9b4f Mon Sep 17 00:00:00 2001 From: tildearrow Date: Sat, 22 Jan 2022 18:28:43 -0500 Subject: [PATCH] prepare for storage of FM macros --- papers/format.md | 70 +++++++++++++++++++++++++++++++++++++++++ src/engine/instrument.h | 21 +++++++++++++ 2 files changed, 91 insertions(+) diff --git a/papers/format.md b/papers/format.md index 3d67a4d4..057d11c1 100644 --- a/papers/format.md +++ b/papers/format.md @@ -185,6 +185,76 @@ size | description 4?? | extra 1 macro (>=17) 4?? | extra 2 macro (>=17) 4?? | extra 3 macro (>=17) + 4 | alg macro length (>=29) + 4 | fb macro length (>=29) + 4 | fms macro length (>=29) + 4 | ams macro length (>=29) + 4 | alg macro loop (>=29) + 4 | fb macro loop (>=29) + 4 | fms macro loop (>=29) + 4 | ams macro loop (>=29) + 1 | volume macro open (>=29) + 1 | arp macro open (>=29) + 1 | duty macro open (>=29) + 1 | wave macro open (>=29) + 1 | pitch macro open (>=29) + 1 | extra 1 macro open (>=29) + 1 | extra 2 macro open (>=29) + 1 | extra 3 macro open (>=29) + 1 | alg macro open (>=29) + 1 | fb macro open (>=29) + 1 | fms macro open (>=29) + 1 | ams macro open (>=29) + --- | **operator macro headers** × 4 (>=29) + 4 | AM macro length + 4 | AR macro length + 4 | DR macro length + 4 | MULT macro length + 4 | RR macro length + 4 | SL macro length + 4 | TL macro length + 4 | DT2 macro length + 4 | RS macro length + 4 | DT macro length + 4 | D2R macro length + 4 | SSG-EG macro length + 4 | AM macro loop + 4 | AR macro loop + 4 | DR macro loop + 4 | MULT macro loop + 4 | RR macro loop + 4 | SL macro loop + 4 | TL macro loop + 4 | DT2 macro loop + 4 | RS macro loop + 4 | DT macro loop + 4 | D2R macro loop + 4 | SSG-EG macro loop + 1 | AM macro open + 1 | AR macro open + 1 | DR macro open + 1 | MULT macro open + 1 | RR macro open + 1 | SL macro open + 1 | TL macro open + 1 | DT2 macro open + 1 | RS macro open + 1 | DT macro open + 1 | D2R macro open + 1 | SSG-EG macro open + --- | **operator macros** × 4 (>=29) + 1?? | AM macro + 1?? | AR macro + 1?? | DR macro + 1?? | MULT macro + 1?? | RR macro + 1?? | SL macro + 1?? | TL macro + 1?? | DT2 macro + 1?? | RS macro + 1?? | DT macro + 1?? | D2R macro + 1?? | SSG-EG macro # wavetable diff --git a/src/engine/instrument.h b/src/engine/instrument.h index 1b351087..a00b1e42 100644 --- a/src/engine/instrument.h +++ b/src/engine/instrument.h @@ -101,6 +101,9 @@ struct DivInstrumentSTD { int amsMacro[256]; bool arpMacroMode; unsigned char volMacroHeight, dutyMacroHeight, waveMacroHeight; + bool volMacroOpen, arpMacroOpen, dutyMacroOpen, waveMacroOpen; + bool pitchMacroOpen, ex1MacroOpen, ex2MacroOpen, ex3MacroOpen; + bool algMacroOpen, fbMacroOpen, fmsMacroOpen, amsMacroOpen; unsigned char volMacroLen, arpMacroLen, dutyMacroLen, waveMacroLen; unsigned char pitchMacroLen, ex1MacroLen, ex2MacroLen, ex3MacroLen; unsigned char algMacroLen, fbMacroLen, fmsMacroLen, amsMacroLen; @@ -121,6 +124,9 @@ struct DivInstrumentSTD { unsigned char dtMacro[256]; unsigned char d2rMacro[256]; unsigned char ssgMacro[256]; + bool amMacroOpen, arMacroOpen, drMacroOpen, multMacroOpen; + bool rrMacroOpen, slMacroOpen, tlMacroOpen, dt2MacroOpen; + bool rsMacroOpen, dtMacroOpen, d2rMacroOpen, ssgMacroOpen; unsigned char amMacroLen, arMacroLen, drMacroLen, multMacroLen; unsigned char rrMacroLen, slMacroLen, tlMacroLen, dt2MacroLen; unsigned char rsMacroLen, dtMacroLen, d2rMacroLen, ssgMacroLen; @@ -128,6 +134,9 @@ struct DivInstrumentSTD { signed char rrMacroLoop, slMacroLoop, tlMacroLoop, dt2MacroLoop; signed char rsMacroLoop, dtMacroLoop, d2rMacroLoop, ssgMacroLoop; OpMacro(): + amMacroOpen(false), arMacroOpen(false), drMacroOpen(false), multMacroOpen(false), + rrMacroOpen(false), slMacroOpen(false), tlMacroOpen(true), dt2MacroOpen(false), + rsMacroOpen(false), dtMacroOpen(false), d2rMacroOpen(false), ssgMacroOpen(false), amMacroLen(0), arMacroLen(0), drMacroLen(0), multMacroLen(0), rrMacroLen(0), slMacroLen(0), tlMacroLen(0), dt2MacroLen(0), rsMacroLen(0), dtMacroLen(0), d2rMacroLen(0), ssgMacroLen(0), @@ -153,6 +162,18 @@ struct DivInstrumentSTD { volMacroHeight(15), dutyMacroHeight(3), waveMacroHeight(63), + volMacroOpen(true), + arpMacroOpen(false), + dutyMacroOpen(false), + waveMacroOpen(false), + pitchMacroOpen(false), + ex1MacroOpen(false), + ex2MacroOpen(false), + ex3MacroOpen(false), + algMacroOpen(false), + fbMacroOpen(false), + fmsMacroOpen(false), + amsMacroOpen(false), volMacroLen(0), arpMacroLen(0), dutyMacroLen(0),