54 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Atari Lynx instrument editor
 | |
| 
 | |
| Atari Lynx instrument editor consists of two tabs: Sample and Macros.
 | |
| 
 | |
| ## Sample
 | |
| 
 | |
| for sample settings, see [the Sample instrument editor](sample.md).
 | |
| 
 | |
| the only differences are the lack of an "Use wavetable" option, and the presence of a "Use sample" one.
 | |
| 
 | |
| note that using samples on Lynx is CPU expensive!
 | |
| 
 | |
| ## Macros
 | |
| 
 | |
| - **Volume**: volume sequence.
 | |
| - **Arpeggio**: pitch sequence.
 | |
| - **Duty/Int**: bit pattern for LFSR taps and integration.
 | |
| - **Panning (left)**: output level for left channel.
 | |
| - **Panning (right)**: output level for right channel.
 | |
| - **Pitch**: fine pitch.
 | |
| - **Phase Reset**: trigger restart of waveform/LFSR reset.
 | |
| - **Load LFSR**: load a value to the LFSR.
 | |
| 
 | |
| ## audio generation description
 | |
| 
 | |
| Atari Lynx generates sound using a 12-bit linear feedback shift register (LFSR) with configurable tap. nine separate bits can be enabled to be the source of feedback: 0, 1, 2, 3, 4, 5, 7, 10 and 11. to generate _any_ sound at least one bit _must_ be enabled.
 | |
| 
 | |
| ### LFSR-based synthesis
 | |
| 
 | |
| a linear-feedback shift register is one method used for random number generation.
 | |
| it works by shifting a sequence of binary numbers (bits), taking the last bit into the output. then some of the bits are combined with others, doing a XOR (exclusive or) operation and then being pushed back.
 | |
| 
 | |
| think of it as a conveyor carrying glass bottles. each bottle may be empty or carrying water.
 | |
| the bottle at the end is taken. if there's water, then the output is 1. if it's empty, the output is 0.
 | |
| depending on the LFSR configuration, many bottles at specific positions ("taps") are looked at. these are combined from left to right, two by two:
 | |
| - if two bottles are identical, an empty bottle is pushed.
 | |
| - if one bottle has water but the other is empty, a water bottle is pushed.
 | |
| the process is repeated indefinitely.
 | |
| 
 | |
| unlike PowerNoise, Lynx's taps are in fixed positions, but it has many of them.
 | |
| 
 | |
| ### square wave
 | |
| 
 | |
| the LFSR is shifted at the rate define by sound pitch and generates square wave by setting channel output value to +volume or -volume, depending on the bit shifted in.
 | |
| 
 | |
| ### triangle wave
 | |
| 
 | |
| alternatively when "int" bit is set sound wave is generated by adding or subtracting volume from output effectively producing triangle wave.
 | |
| 
 | |
| #### how triangle wave works?
 | |
| 
 | |
| hint: to obtain triangle set bits "int" and "11" in "Duty/Int" sequence and set volume to about 22.
 | |
| by enabling 11th tap bit the value shifted in is negated after 11 bit is shifted in hence the volume is added for 11 cycles and then subtracted for 11 cycles.
 | 
