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
 |