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
 | 
