You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
	
	
		
			
				
					
						
							|  |  |  | /* Copyright 2016 IBNobody
 | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU General Public License as published by | 
					
						
							|  |  |  |  * the Free Software Foundation, either version 2 of the License, or | 
					
						
							|  |  |  |  * (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <avr/io.h>
 | 
					
						
							|  |  |  | #include <avr/interrupt.h>
 | 
					
						
							|  |  |  | #include <avr/pgmspace.h>
 | 
					
						
							|  |  |  | #include "luts.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const float vibrato_lut[VIBRATO_LUT_LENGTH] = | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	1.0022336811487, | 
					
						
							|  |  |  | 	1.0042529943610, | 
					
						
							|  |  |  | 	1.0058584256028, | 
					
						
							|  |  |  | 	1.0068905285205, | 
					
						
							|  |  |  | 	1.0072464122237, | 
					
						
							|  |  |  | 	1.0068905285205, | 
					
						
							|  |  |  | 	1.0058584256028, | 
					
						
							|  |  |  | 	1.0042529943610, | 
					
						
							|  |  |  | 	1.0022336811487, | 
					
						
							|  |  |  | 	1.0000000000000, | 
					
						
							|  |  |  | 	0.9977712970630, | 
					
						
							|  |  |  | 	0.9957650169978, | 
					
						
							|  |  |  | 	0.9941756956510, | 
					
						
							|  |  |  | 	0.9931566259436, | 
					
						
							|  |  |  | 	0.9928057204913, | 
					
						
							|  |  |  | 	0.9931566259436, | 
					
						
							|  |  |  | 	0.9941756956510, | 
					
						
							|  |  |  | 	0.9957650169978, | 
					
						
							|  |  |  | 	0.9977712970630, | 
					
						
							|  |  |  | 	1.0000000000000, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const uint16_t frequency_lut[FREQUENCY_LUT_LENGTH] = | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	0x8E0B, | 
					
						
							|  |  |  | 	0x8C02, | 
					
						
							|  |  |  | 	0x8A00, | 
					
						
							|  |  |  | 	0x8805, | 
					
						
							|  |  |  | 	0x8612, | 
					
						
							|  |  |  | 	0x8426, | 
					
						
							|  |  |  | 	0x8241, | 
					
						
							|  |  |  | 	0x8063, | 
					
						
							|  |  |  | 	0x7E8C, | 
					
						
							|  |  |  | 	0x7CBB, | 
					
						
							|  |  |  | 	0x7AF2, | 
					
						
							|  |  |  | 	0x792E, | 
					
						
							|  |  |  | 	0x7772, | 
					
						
							|  |  |  | 	0x75BB, | 
					
						
							|  |  |  | 	0x740B, | 
					
						
							|  |  |  | 	0x7261, | 
					
						
							|  |  |  | 	0x70BD, | 
					
						
							|  |  |  | 	0x6F20, | 
					
						
							|  |  |  | 	0x6D88, | 
					
						
							|  |  |  | 	0x6BF6, | 
					
						
							|  |  |  | 	0x6A69, | 
					
						
							|  |  |  | 	0x68E3, | 
					
						
							|  |  |  | 	0x6762, | 
					
						
							|  |  |  | 	0x65E6, | 
					
						
							|  |  |  | 	0x6470, | 
					
						
							|  |  |  | 	0x6300, | 
					
						
							|  |  |  | 	0x6194, | 
					
						
							|  |  |  | 	0x602E, | 
					
						
							|  |  |  | 	0x5ECD, | 
					
						
							|  |  |  | 	0x5D71, | 
					
						
							|  |  |  | 	0x5C1A, | 
					
						
							|  |  |  | 	0x5AC8, | 
					
						
							|  |  |  | 	0x597B, | 
					
						
							|  |  |  | 	0x5833, | 
					
						
							|  |  |  | 	0x56EF, | 
					
						
							|  |  |  | 	0x55B0, | 
					
						
							|  |  |  | 	0x5475, | 
					
						
							|  |  |  | 	0x533F, | 
					
						
							|  |  |  | 	0x520E, | 
					
						
							|  |  |  | 	0x50E1, | 
					
						
							|  |  |  | 	0x4FB8, | 
					
						
							|  |  |  | 	0x4E93, | 
					
						
							|  |  |  | 	0x4D73, | 
					
						
							|  |  |  | 	0x4C57, | 
					
						
							|  |  |  | 	0x4B3E, | 
					
						
							|  |  |  | 	0x4A2A, | 
					
						
							|  |  |  | 	0x491A, | 
					
						
							|  |  |  | 	0x480E, | 
					
						
							|  |  |  | 	0x4705, | 
					
						
							|  |  |  | 	0x4601, | 
					
						
							|  |  |  | 	0x4500, | 
					
						
							|  |  |  | 	0x4402, | 
					
						
							|  |  |  | 	0x4309, | 
					
						
							|  |  |  | 	0x4213, | 
					
						
							|  |  |  | 	0x4120, | 
					
						
							|  |  |  | 	0x4031, | 
					
						
							|  |  |  | 	0x3F46, | 
					
						
							|  |  |  | 	0x3E5D, | 
					
						
							|  |  |  | 	0x3D79, | 
					
						
							|  |  |  | 	0x3C97, | 
					
						
							|  |  |  | 	0x3BB9, | 
					
						
							|  |  |  | 	0x3ADD, | 
					
						
							|  |  |  | 	0x3A05, | 
					
						
							|  |  |  | 	0x3930, | 
					
						
							|  |  |  | 	0x385E, | 
					
						
							|  |  |  | 	0x3790, | 
					
						
							|  |  |  | 	0x36C4, | 
					
						
							|  |  |  | 	0x35FB, | 
					
						
							|  |  |  | 	0x3534, | 
					
						
							|  |  |  | 	0x3471, | 
					
						
							|  |  |  | 	0x33B1, | 
					
						
							|  |  |  | 	0x32F3, | 
					
						
							|  |  |  | 	0x3238, | 
					
						
							|  |  |  | 	0x3180, | 
					
						
							|  |  |  | 	0x30CA, | 
					
						
							|  |  |  | 	0x3017, | 
					
						
							|  |  |  | 	0x2F66, | 
					
						
							|  |  |  | 	0x2EB8, | 
					
						
							|  |  |  | 	0x2E0D, | 
					
						
							|  |  |  | 	0x2D64, | 
					
						
							|  |  |  | 	0x2CBD, | 
					
						
							|  |  |  | 	0x2C19, | 
					
						
							|  |  |  | 	0x2B77, | 
					
						
							|  |  |  | 	0x2AD8, | 
					
						
							|  |  |  | 	0x2A3A, | 
					
						
							|  |  |  | 	0x299F, | 
					
						
							|  |  |  | 	0x2907, | 
					
						
							|  |  |  | 	0x2870, | 
					
						
							|  |  |  | 	0x27DC, | 
					
						
							|  |  |  | 	0x2749, | 
					
						
							|  |  |  | 	0x26B9, | 
					
						
							|  |  |  | 	0x262B, | 
					
						
							|  |  |  | 	0x259F, | 
					
						
							|  |  |  | 	0x2515, | 
					
						
							|  |  |  | 	0x248D, | 
					
						
							|  |  |  | 	0x2407, | 
					
						
							|  |  |  | 	0x2382, | 
					
						
							|  |  |  | 	0x2300, | 
					
						
							|  |  |  | 	0x2280, | 
					
						
							|  |  |  | 	0x2201, | 
					
						
							|  |  |  | 	0x2184, | 
					
						
							|  |  |  | 	0x2109, | 
					
						
							|  |  |  | 	0x2090, | 
					
						
							|  |  |  | 	0x2018, | 
					
						
							|  |  |  | 	0x1FA3, | 
					
						
							|  |  |  | 	0x1F2E, | 
					
						
							|  |  |  | 	0x1EBC, | 
					
						
							|  |  |  | 	0x1E4B, | 
					
						
							|  |  |  | 	0x1DDC, | 
					
						
							|  |  |  | 	0x1D6E, | 
					
						
							|  |  |  | 	0x1D02, | 
					
						
							|  |  |  | 	0x1C98, | 
					
						
							|  |  |  | 	0x1C2F, | 
					
						
							|  |  |  | 	0x1BC8, | 
					
						
							|  |  |  | 	0x1B62, | 
					
						
							|  |  |  | 	0x1AFD, | 
					
						
							|  |  |  | 	0x1A9A, | 
					
						
							|  |  |  | 	0x1A38, | 
					
						
							|  |  |  | 	0x19D8, | 
					
						
							|  |  |  | 	0x1979, | 
					
						
							|  |  |  | 	0x191C, | 
					
						
							|  |  |  | 	0x18C0, | 
					
						
							|  |  |  | 	0x1865, | 
					
						
							|  |  |  | 	0x180B, | 
					
						
							|  |  |  | 	0x17B3, | 
					
						
							|  |  |  | 	0x175C, | 
					
						
							|  |  |  | 	0x1706, | 
					
						
							|  |  |  | 	0x16B2, | 
					
						
							|  |  |  | 	0x165E, | 
					
						
							|  |  |  | 	0x160C, | 
					
						
							|  |  |  | 	0x15BB, | 
					
						
							|  |  |  | 	0x156C, | 
					
						
							|  |  |  | 	0x151D, | 
					
						
							|  |  |  | 	0x14CF, | 
					
						
							|  |  |  | 	0x1483, | 
					
						
							|  |  |  | 	0x1438, | 
					
						
							|  |  |  | 	0x13EE, | 
					
						
							|  |  |  | 	0x13A4, | 
					
						
							|  |  |  | 	0x135C, | 
					
						
							|  |  |  | 	0x1315, | 
					
						
							|  |  |  | 	0x12CF, | 
					
						
							|  |  |  | 	0x128A, | 
					
						
							|  |  |  | 	0x1246, | 
					
						
							|  |  |  | 	0x1203, | 
					
						
							|  |  |  | 	0x11C1, | 
					
						
							|  |  |  | 	0x1180, | 
					
						
							|  |  |  | 	0x1140, | 
					
						
							|  |  |  | 	0x1100, | 
					
						
							|  |  |  | 	0x10C2, | 
					
						
							|  |  |  | 	0x1084, | 
					
						
							|  |  |  | 	0x1048, | 
					
						
							|  |  |  | 	0x100C, | 
					
						
							|  |  |  | 	0xFD1, | 
					
						
							|  |  |  | 	0xF97, | 
					
						
							|  |  |  | 	0xF5E, | 
					
						
							|  |  |  | 	0xF25, | 
					
						
							|  |  |  | 	0xEEE, | 
					
						
							|  |  |  | 	0xEB7, | 
					
						
							|  |  |  | 	0xE81, | 
					
						
							|  |  |  | 	0xE4C, | 
					
						
							|  |  |  | 	0xE17, | 
					
						
							|  |  |  | 	0xDE4, | 
					
						
							|  |  |  | 	0xDB1, | 
					
						
							|  |  |  | 	0xD7E, | 
					
						
							|  |  |  | 	0xD4D, | 
					
						
							|  |  |  | 	0xD1C, | 
					
						
							|  |  |  | 	0xCEC, | 
					
						
							|  |  |  | 	0xCBC, | 
					
						
							|  |  |  | 	0xC8E, | 
					
						
							|  |  |  | 	0xC60, | 
					
						
							|  |  |  | 	0xC32, | 
					
						
							|  |  |  | 	0xC05, | 
					
						
							|  |  |  | 	0xBD9, | 
					
						
							|  |  |  | 	0xBAE, | 
					
						
							|  |  |  | 	0xB83, | 
					
						
							|  |  |  | 	0xB59, | 
					
						
							|  |  |  | 	0xB2F, | 
					
						
							|  |  |  | 	0xB06, | 
					
						
							|  |  |  | 	0xADD, | 
					
						
							|  |  |  | 	0xAB6, | 
					
						
							|  |  |  | 	0xA8E, | 
					
						
							|  |  |  | 	0xA67, | 
					
						
							|  |  |  | 	0xA41, | 
					
						
							|  |  |  | 	0xA1C, | 
					
						
							|  |  |  | 	0x9F7, | 
					
						
							|  |  |  | 	0x9D2, | 
					
						
							|  |  |  | 	0x9AE, | 
					
						
							|  |  |  | 	0x98A, | 
					
						
							|  |  |  | 	0x967, | 
					
						
							|  |  |  | 	0x945, | 
					
						
							|  |  |  | 	0x923, | 
					
						
							|  |  |  | 	0x901, | 
					
						
							|  |  |  | 	0x8E0, | 
					
						
							|  |  |  | 	0x8C0, | 
					
						
							|  |  |  | 	0x8A0, | 
					
						
							|  |  |  | 	0x880, | 
					
						
							|  |  |  | 	0x861, | 
					
						
							|  |  |  | 	0x842, | 
					
						
							|  |  |  | 	0x824, | 
					
						
							|  |  |  | 	0x806, | 
					
						
							|  |  |  | 	0x7E8, | 
					
						
							|  |  |  | 	0x7CB, | 
					
						
							|  |  |  | 	0x7AF, | 
					
						
							|  |  |  | 	0x792, | 
					
						
							|  |  |  | 	0x777, | 
					
						
							|  |  |  | 	0x75B, | 
					
						
							|  |  |  | 	0x740, | 
					
						
							|  |  |  | 	0x726, | 
					
						
							|  |  |  | 	0x70B, | 
					
						
							|  |  |  | 	0x6F2, | 
					
						
							|  |  |  | 	0x6D8, | 
					
						
							|  |  |  | 	0x6BF, | 
					
						
							|  |  |  | 	0x6A6, | 
					
						
							|  |  |  | 	0x68E, | 
					
						
							|  |  |  | 	0x676, | 
					
						
							|  |  |  | 	0x65E, | 
					
						
							|  |  |  | 	0x647, | 
					
						
							|  |  |  | 	0x630, | 
					
						
							|  |  |  | 	0x619, | 
					
						
							|  |  |  | 	0x602, | 
					
						
							|  |  |  | 	0x5EC, | 
					
						
							|  |  |  | 	0x5D7, | 
					
						
							|  |  |  | 	0x5C1, | 
					
						
							|  |  |  | 	0x5AC, | 
					
						
							|  |  |  | 	0x597, | 
					
						
							|  |  |  | 	0x583, | 
					
						
							|  |  |  | 	0x56E, | 
					
						
							|  |  |  | 	0x55B, | 
					
						
							|  |  |  | 	0x547, | 
					
						
							|  |  |  | 	0x533, | 
					
						
							|  |  |  | 	0x520, | 
					
						
							|  |  |  | 	0x50E, | 
					
						
							|  |  |  | 	0x4FB, | 
					
						
							|  |  |  | 	0x4E9, | 
					
						
							|  |  |  | 	0x4D7, | 
					
						
							|  |  |  | 	0x4C5, | 
					
						
							|  |  |  | 	0x4B3, | 
					
						
							|  |  |  | 	0x4A2, | 
					
						
							|  |  |  | 	0x491, | 
					
						
							|  |  |  | 	0x480, | 
					
						
							|  |  |  | 	0x470, | 
					
						
							|  |  |  | 	0x460, | 
					
						
							|  |  |  | 	0x450, | 
					
						
							|  |  |  | 	0x440, | 
					
						
							|  |  |  | 	0x430, | 
					
						
							|  |  |  | 	0x421, | 
					
						
							|  |  |  | 	0x412, | 
					
						
							|  |  |  | 	0x403, | 
					
						
							|  |  |  | 	0x3F4, | 
					
						
							|  |  |  | 	0x3E5, | 
					
						
							|  |  |  | 	0x3D7, | 
					
						
							|  |  |  | 	0x3C9, | 
					
						
							|  |  |  | 	0x3BB, | 
					
						
							|  |  |  | 	0x3AD, | 
					
						
							|  |  |  | 	0x3A0, | 
					
						
							|  |  |  | 	0x393, | 
					
						
							|  |  |  | 	0x385, | 
					
						
							|  |  |  | 	0x379, | 
					
						
							|  |  |  | 	0x36C, | 
					
						
							|  |  |  | 	0x35F, | 
					
						
							|  |  |  | 	0x353, | 
					
						
							|  |  |  | 	0x347, | 
					
						
							|  |  |  | 	0x33B, | 
					
						
							|  |  |  | 	0x32F, | 
					
						
							|  |  |  | 	0x323, | 
					
						
							|  |  |  | 	0x318, | 
					
						
							|  |  |  | 	0x30C, | 
					
						
							|  |  |  | 	0x301, | 
					
						
							|  |  |  | 	0x2F6, | 
					
						
							|  |  |  | 	0x2EB, | 
					
						
							|  |  |  | 	0x2E0, | 
					
						
							|  |  |  | 	0x2D6, | 
					
						
							|  |  |  | 	0x2CB, | 
					
						
							|  |  |  | 	0x2C1, | 
					
						
							|  |  |  | 	0x2B7, | 
					
						
							|  |  |  | 	0x2AD, | 
					
						
							|  |  |  | 	0x2A3, | 
					
						
							|  |  |  | 	0x299, | 
					
						
							|  |  |  | 	0x290, | 
					
						
							|  |  |  | 	0x287, | 
					
						
							|  |  |  | 	0x27D, | 
					
						
							|  |  |  | 	0x274, | 
					
						
							|  |  |  | 	0x26B, | 
					
						
							|  |  |  | 	0x262, | 
					
						
							|  |  |  | 	0x259, | 
					
						
							|  |  |  | 	0x251, | 
					
						
							|  |  |  | 	0x248, | 
					
						
							|  |  |  | 	0x240, | 
					
						
							|  |  |  | 	0x238, | 
					
						
							|  |  |  | 	0x230, | 
					
						
							|  |  |  | 	0x228, | 
					
						
							|  |  |  | 	0x220, | 
					
						
							|  |  |  | 	0x218, | 
					
						
							|  |  |  | 	0x210, | 
					
						
							|  |  |  | 	0x209, | 
					
						
							|  |  |  | 	0x201, | 
					
						
							|  |  |  | 	0x1FA, | 
					
						
							|  |  |  | 	0x1F2, | 
					
						
							|  |  |  | 	0x1EB, | 
					
						
							|  |  |  | 	0x1E4, | 
					
						
							|  |  |  | 	0x1DD, | 
					
						
							|  |  |  | 	0x1D6, | 
					
						
							|  |  |  | 	0x1D0, | 
					
						
							|  |  |  | 	0x1C9, | 
					
						
							|  |  |  | 	0x1C2, | 
					
						
							|  |  |  | 	0x1BC, | 
					
						
							|  |  |  | 	0x1B6, | 
					
						
							|  |  |  | 	0x1AF, | 
					
						
							|  |  |  | 	0x1A9, | 
					
						
							|  |  |  | 	0x1A3, | 
					
						
							|  |  |  | 	0x19D, | 
					
						
							|  |  |  | 	0x197, | 
					
						
							|  |  |  | 	0x191, | 
					
						
							|  |  |  | 	0x18C, | 
					
						
							|  |  |  | 	0x186, | 
					
						
							|  |  |  | 	0x180, | 
					
						
							|  |  |  | 	0x17B, | 
					
						
							|  |  |  | 	0x175, | 
					
						
							|  |  |  | 	0x170, | 
					
						
							|  |  |  | 	0x16B, | 
					
						
							|  |  |  | 	0x165, | 
					
						
							|  |  |  | 	0x160, | 
					
						
							|  |  |  | 	0x15B, | 
					
						
							|  |  |  | 	0x156, | 
					
						
							|  |  |  | 	0x151, | 
					
						
							|  |  |  | 	0x14C, | 
					
						
							|  |  |  | 	0x148, | 
					
						
							|  |  |  | 	0x143, | 
					
						
							|  |  |  | 	0x13E, | 
					
						
							|  |  |  | 	0x13A, | 
					
						
							|  |  |  | 	0x135, | 
					
						
							|  |  |  | 	0x131, | 
					
						
							|  |  |  | 	0x12C, | 
					
						
							|  |  |  | 	0x128, | 
					
						
							|  |  |  | 	0x124, | 
					
						
							|  |  |  | 	0x120, | 
					
						
							|  |  |  | 	0x11C, | 
					
						
							|  |  |  | 	0x118, | 
					
						
							|  |  |  | 	0x114, | 
					
						
							|  |  |  | 	0x110, | 
					
						
							|  |  |  | 	0x10C, | 
					
						
							|  |  |  | 	0x108, | 
					
						
							|  |  |  | 	0x104, | 
					
						
							|  |  |  | 	0x100, | 
					
						
							|  |  |  | 	0xFD, | 
					
						
							|  |  |  | 	0xF9, | 
					
						
							|  |  |  | 	0xF5, | 
					
						
							|  |  |  | 	0xF2, | 
					
						
							|  |  |  | 	0xEE, | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 |