26 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			26 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								# Atari Lynx instrument editor
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Atari Lynx instrument editor consists of only three macros:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								- [Volume] - volume sequence
							 | 
						||
| 
								 | 
							
								- [Arpeggio] - pitch sequencer
							 | 
						||
| 
								 | 
							
								- [Duty/Int] - bit pattern for LFSR taps and integration.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Audio generation description
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Atari Lynx to generate sound uses 12-bit linear feedback shift register with configurable tap. Nine separate bits can be enable to be the source of feedback.
							 | 
						||
| 
								 | 
							
								Namely bits 0, 1, 2, 3, 4, 5, 7, 10 and 11. To generate ANY sound at least one bit MUST be enable.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### 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.
							 |