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 |