mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-16 09:45:06 +00:00
50 lines
1.3 KiB
Markdown
50 lines
1.3 KiB
Markdown
|
# possible new Furnace instrument format
|
||
|
|
||
|
the main issue with Furnace instrument files is that they are too big, even if the instrument is nothing more than the FM setup...
|
||
|
|
||
|
the aim of this new format is to greatly reduce the size of a resulting instrument.
|
||
|
|
||
|
```
|
||
|
size | description
|
||
|
-----|------------------------------------
|
||
|
6 | "FURINS" format magic
|
||
|
2 | format version
|
||
|
1 | instrument type
|
||
|
??? | feature bits
|
||
|
4 | instrument length (if wave/sample bits are on)
|
||
|
```
|
||
|
|
||
|
the "feature bits" field is a variable length bitfield. bit 7 in a byte indicates "read one more byte".
|
||
|
|
||
|
the feature bits are:
|
||
|
|
||
|
- 0: has wavetables
|
||
|
- 1: has samples
|
||
|
- 2: has name
|
||
|
- 3: FM data
|
||
|
- 4: FM data size (1: 2-op, 0: 4-op)
|
||
|
- 5: FM data includes OPL/OPZ data
|
||
|
- if off, only read an op until ssgEnv.
|
||
|
- if on, read everything else.
|
||
|
- 6: Game Boy data
|
||
|
- 7: (continue in next byte)
|
||
|
- 8: C64 data
|
||
|
- 9: Amiga data
|
||
|
- 10: standard data (macros)
|
||
|
- 11: operator macros
|
||
|
- 12: release points
|
||
|
- 13: op release points
|
||
|
- 14: extended op macros
|
||
|
- 15: (continue in next byte)
|
||
|
- 16: OPL drums mode data
|
||
|
- 17: Amiga sample map data
|
||
|
- 18: Namco 163 data
|
||
|
- 19: extra macros
|
||
|
- 20: FDS data
|
||
|
- 21: OPZ data
|
||
|
- 22: wavetable synth data
|
||
|
- 23: (continue in next byte)
|
||
|
- 24: additional macro modes
|
||
|
- 25: extra C64 data
|
||
|
- 26: MultiPCM data
|