Цитата(-=Женек=- @ Oct 21 2011, 11:02)

...
Однако прямоугольные импульсы, как известно звучат как жесткий циплячий писк.
...
Красивый звук это когда главный синусоидальный тон складывается со своей 3-й гармоникой. Это будет гармонический консонирующий звук если не ошибаюсь.
Точно генерировать синусоиду проще всего методом добавления фазы.
Ниже даны процедуры для инициализации однотонального генератора с высокой точностью.
Для двух тонального генератора нужно просто добавить еще один независимый накопитель фазы и складывать вместе выборки из таблицы (не забыть соответственно масштабировать амплитуду чтобы не было переполнения ЦАП или ШИМ или что там на выходе)
Правда тип int здесь 32-х битный. На ARM-ы программка рассчитана ;)
Код
unsigned int phase;
unsigned int dphase;
unsigned short sin_tbl[2048]=
{ 0x8000, 0x8064, 0x80C9, 0x812D, 0x8192, 0x81F6, 0x825B, 0x82BF, 0x8324, 0x8388, 0x83ED, 0x8451, 0x84B6, 0x851A, 0x857E, 0x85E3,
0x8647, 0x86AC, 0x8710, 0x8774, 0x87D9, 0x883D, 0x88A1, 0x8906, 0x896A, 0x89CE, 0x8A32, 0x8A97, 0x8AFB, 0x8B5F, 0x8BC3, 0x8C27,
0x8C8B, 0x8CEF, 0x8D53, 0x8DB7, 0x8E1B, 0x8E7F, 0x8EE3, 0x8F47, 0x8FAB, 0x900E, 0x9072, 0x90D6, 0x9139, 0x919D, 0x9201, 0x9264,
0x92C7, 0x932B, 0x938E, 0x93F2, 0x9455, 0x94B8, 0x951B, 0x957E, 0x95E1, 0x9645, 0x96A7, 0x970A, 0x976D, 0x97D0, 0x9833, 0x9895,
0x98F8, 0x995B, 0x99BD, 0x9A20, 0x9A82, 0x9AE4, 0x9B47, 0x9BA9, 0x9C0B, 0x9C6D, 0x9CCF, 0x9D31, 0x9D93, 0x9DF4, 0x9E56, 0x9EB8,
0x9F19, 0x9F7B, 0x9FDC, 0xA03E, 0xA09F, 0xA100, 0xA161, 0xA1C2, 0xA223, 0xA284, 0xA2E5, 0xA345, 0xA3A6, 0xA406, 0xA467, 0xA4C7,
0xA527, 0xA588, 0xA5E8, 0xA648, 0xA6A7, 0xA707, 0xA767, 0xA7C7, 0xA826, 0xA885, 0xA8E5, 0xA944, 0xA9A3, 0xAA02, 0xAA61, 0xAAC0,
0xAB1F, 0xAB7D, 0xABDC, 0xAC3A, 0xAC98, 0xACF6, 0xAD55, 0xADB3, 0xAE10, 0xAE6E, 0xAECC, 0xAF29, 0xAF87, 0xAFE4, 0xB041, 0xB09E,
0xB0FB, 0xB158, 0xB1B5, 0xB211, 0xB26E, 0xB2CA, 0xB326, 0xB382, 0xB3DE, 0xB43A, 0xB496, 0xB4F1, 0xB54D, 0xB5A8, 0xB603, 0xB65E,
0xB6B9, 0xB714, 0xB76F, 0xB7C9, 0xB824, 0xB87E, 0xB8D8, 0xB932, 0xB98C, 0xB9E6, 0xBA3F, 0xBA99, 0xBAF2, 0xBB4B, 0xBBA4, 0xBBFD,
0xBC56, 0xBCAF, 0xBD07, 0xBD5F, 0xBDB7, 0xBE0F, 0xBE67, 0xBEBF, 0xBF17, 0xBF6E, 0xBFC5, 0xC01C, 0xC073, 0xC0CA, 0xC121, 0xC177,
0xC1CD, 0xC224, 0xC279, 0xC2CF, 0xC325, 0xC37A, 0xC3D0, 0xC425, 0xC47A, 0xC4CF, 0xC524, 0xC578, 0xC5CC, 0xC621, 0xC675, 0xC6C8,
0xC71C, 0xC770, 0xC7C3, 0xC816, 0xC869, 0xC8BC, 0xC90F, 0xC961, 0xC9B3, 0xCA05, 0xCA57, 0xCAA9, 0xCAFB, 0xCB4C, 0xCB9D, 0xCBEE,
0xCC3F, 0xCC90, 0xCCE0, 0xCD30, 0xCD81, 0xCDD0, 0xCE20, 0xCE70, 0xCEBF, 0xCF0E, 0xCF5D, 0xCFAC, 0xCFFB, 0xD049, 0xD097, 0xD0E5,
0xD133, 0xD181, 0xD1CE, 0xD21B, 0xD268, 0xD2B5, 0xD302, 0xD34E, 0xD39A, 0xD3E6, 0xD432, 0xD47E, 0xD4C9, 0xD514, 0xD55F, 0xD5AA,
0xD5F5, 0xD63F, 0xD689, 0xD6D3, 0xD71D, 0xD767, 0xD7B0, 0xD7F9, 0xD842, 0xD88B, 0xD8D3, 0xD91B, 0xD964, 0xD9AB, 0xD9F3, 0xDA3A,
0xDA82, 0xDAC9, 0xDB0F, 0xDB56, 0xDB9C, 0xDBE2, 0xDC28, 0xDC6E, 0xDCB3, 0xDCF8, 0xDD3D, 0xDD82, 0xDDC7, 0xDE0B, 0xDE4F, 0xDE93,
0xDED7, 0xDF1A, 0xDF5D, 0xDFA0, 0xDFE3, 0xE025, 0xE068, 0xE0AA, 0xE0EB, 0xE12D, 0xE16E, 0xE1AF, 0xE1F0, 0xE231, 0xE271, 0xE2B1,
0xE2F1, 0xE331, 0xE370, 0xE3AF, 0xE3EE, 0xE42D, 0xE46B, 0xE4AA, 0xE4E8, 0xE525, 0xE563, 0xE5A0, 0xE5DD, 0xE61A, 0xE656, 0xE693,
0xE6CF, 0xE70A, 0xE746, 0xE781, 0xE7BC, 0xE7F7, 0xE831, 0xE86C, 0xE8A6, 0xE8DF, 0xE919, 0xE952, 0xE98B, 0xE9C4, 0xE9FC, 0xEA35,
0xEA6D, 0xEAA4, 0xEADC, 0xEB13, 0xEB4A, 0xEB81, 0xEBB7, 0xEBED, 0xEC23, 0xEC59, 0xEC8E, 0xECC3, 0xECF8, 0xED2D, 0xED61, 0xED95,
0xEDC9, 0xEDFD, 0xEE30, 0xEE63, 0xEE96, 0xEEC8, 0xEEFA, 0xEF2C, 0xEF5E, 0xEF8F, 0xEFC1, 0xEFF2, 0xF022, 0xF052, 0xF083, 0xF0B2,
0xF0E2, 0xF111, 0xF140, 0xF16F, 0xF19D, 0xF1CB, 0xF1F9, 0xF227, 0xF254, 0xF281, 0xF2AE, 0xF2DB, 0xF307, 0xF333, 0xF35E, 0xF38A,
0xF3B5, 0xF3E0, 0xF40A, 0xF435, 0xF45F, 0xF488, 0xF4B2, 0xF4DB, 0xF504, 0xF52C, 0xF555, 0xF57D, 0xF5A5, 0xF5CC, 0xF5F3, 0xF61A,
0xF641, 0xF667, 0xF68D, 0xF6B3, 0xF6D8, 0xF6FE, 0xF722, 0xF747, 0xF76B, 0xF78F, 0xF7B3, 0xF7D7, 0xF7FA, 0xF81D, 0xF83F, 0xF862,
0xF884, 0xF8A5, 0xF8C7, 0xF8E8, 0xF909, 0xF929, 0xF94A, 0xF969, 0xF989, 0xF9A9, 0xF9C8, 0xF9E6, 0xFA05, 0xFA23, 0xFA41, 0xFA5F,
0xFA7C, 0xFA99, 0xFAB6, 0xFAD2, 0xFAEE, 0xFB0A, 0xFB26, 0xFB41, 0xFB5C, 0xFB77, 0xFB91, 0xFBAB, 0xFBC5, 0xFBDE, 0xFBF8, 0xFC10,
0xFC29, 0xFC41, 0xFC59, 0xFC71, 0xFC88, 0xFC9F, 0xFCB6, 0xFCCD, 0xFCE3, 0xFCF9, 0xFD0E, 0xFD24, 0xFD39, 0xFD4D, 0xFD62, 0xFD76,
0xFD89, 0xFD9D, 0xFDB0, 0xFDC3, 0xFDD5, 0xFDE8, 0xFDFA, 0xFE0B, 0xFE1D, 0xFE2E, 0xFE3E, 0xFE4F, 0xFE5F, 0xFE6F, 0xFE7E, 0xFE8D,
0xFE9C, 0xFEAB, 0xFEB9, 0xFEC7, 0xFED5, 0xFEE2, 0xFEEF, 0xFEFC, 0xFF09, 0xFF15, 0xFF21, 0xFF2C, 0xFF37, 0xFF42, 0xFF4D, 0xFF57,
0xFF61, 0xFF6B, 0xFF74, 0xFF7D, 0xFF86, 0xFF8F, 0xFF97, 0xFF9F, 0xFFA6, 0xFFAD, 0xFFB4, 0xFFBB, 0xFFC1, 0xFFC7, 0xFFCD, 0xFFD2,
0xFFD8, 0xFFDC, 0xFFE1, 0xFFE5, 0xFFE9, 0xFFEC, 0xFFF0, 0xFFF3, 0xFFF5, 0xFFF7, 0xFFF9, 0xFFFB, 0xFFFD, 0xFFFE, 0xFFFE, 0xFFFF,
0xFFFF, 0xFFFF, 0xFFFE, 0xFFFE, 0xFFFD, 0xFFFB, 0xFFF9, 0xFFF7, 0xFFF5, 0xFFF3, 0xFFF0, 0xFFEC, 0xFFE9, 0xFFE5, 0xFFE1, 0xFFDC,
0xFFD8, 0xFFD2, 0xFFCD, 0xFFC7, 0xFFC1, 0xFFBB, 0xFFB4, 0xFFAD, 0xFFA6, 0xFF9F, 0xFF97, 0xFF8F, 0xFF86, 0xFF7D, 0xFF74, 0xFF6B,
0xFF61, 0xFF57, 0xFF4D, 0xFF42, 0xFF37, 0xFF2C, 0xFF21, 0xFF15, 0xFF09, 0xFEFC, 0xFEEF, 0xFEE2, 0xFED5, 0xFEC7, 0xFEB9, 0xFEAB,
0xFE9C, 0xFE8D, 0xFE7E, 0xFE6F, 0xFE5F, 0xFE4F, 0xFE3E, 0xFE2E, 0xFE1D, 0xFE0B, 0xFDFA, 0xFDE8, 0xFDD5, 0xFDC3, 0xFDB0, 0xFD9D,
0xFD89, 0xFD76, 0xFD62, 0xFD4D, 0xFD39, 0xFD24, 0xFD0E, 0xFCF9, 0xFCE3, 0xFCCD, 0xFCB6, 0xFC9F, 0xFC88, 0xFC71, 0xFC59, 0xFC41,
0xFC29, 0xFC10, 0xFBF8, 0xFBDE, 0xFBC5, 0xFBAB, 0xFB91, 0xFB77, 0xFB5C, 0xFB41, 0xFB26, 0xFB0A, 0xFAEE, 0xFAD2, 0xFAB6, 0xFA99,
0xFA7C, 0xFA5F, 0xFA41, 0xFA23, 0xFA05, 0xF9E6, 0xF9C8, 0xF9A9, 0xF989, 0xF969, 0xF94A, 0xF929, 0xF909, 0xF8E8, 0xF8C7, 0xF8A5,
0xF884, 0xF862, 0xF83F, 0xF81D, 0xF7FA, 0xF7D7, 0xF7B3, 0xF78F, 0xF76B, 0xF747, 0xF722, 0xF6FE, 0xF6D8, 0xF6B3, 0xF68D, 0xF667,
0xF641, 0xF61A, 0xF5F3, 0xF5CC, 0xF5A5, 0xF57D, 0xF555, 0xF52C, 0xF504, 0xF4DB, 0xF4B2, 0xF488, 0xF45F, 0xF435, 0xF40A, 0xF3E0,
0xF3B5, 0xF38A, 0xF35E, 0xF333, 0xF307, 0xF2DB, 0xF2AE, 0xF281, 0xF254, 0xF227, 0xF1F9, 0xF1CB, 0xF19D, 0xF16F, 0xF140, 0xF111,
0xF0E2, 0xF0B2, 0xF083, 0xF052, 0xF022, 0xEFF2, 0xEFC1, 0xEF8F, 0xEF5E, 0xEF2C, 0xEEFA, 0xEEC8, 0xEE96, 0xEE63, 0xEE30, 0xEDFD,
0xEDC9, 0xED95, 0xED61, 0xED2D, 0xECF8, 0xECC3, 0xEC8E, 0xEC59, 0xEC23, 0xEBED, 0xEBB7, 0xEB81, 0xEB4A, 0xEB13, 0xEADC, 0xEAA4,
0xEA6D, 0xEA35, 0xE9FC, 0xE9C4, 0xE98B, 0xE952, 0xE919, 0xE8DF, 0xE8A6, 0xE86C, 0xE831, 0xE7F7, 0xE7BC, 0xE781, 0xE746, 0xE70A,
0xE6CF, 0xE693, 0xE656, 0xE61A, 0xE5DD, 0xE5A0, 0xE563, 0xE525, 0xE4E8, 0xE4AA, 0xE46B, 0xE42D, 0xE3EE, 0xE3AF, 0xE370, 0xE331,
0xE2F1, 0xE2B1, 0xE271, 0xE231, 0xE1F0, 0xE1AF, 0xE16E, 0xE12D, 0xE0EB, 0xE0AA, 0xE068, 0xE025, 0xDFE3, 0xDFA0, 0xDF5D, 0xDF1A,
0xDED7, 0xDE93, 0xDE4F, 0xDE0B, 0xDDC7, 0xDD82, 0xDD3D, 0xDCF8, 0xDCB3, 0xDC6E, 0xDC28, 0xDBE2, 0xDB9C, 0xDB56, 0xDB0F, 0xDAC9,
0xDA82, 0xDA3A, 0xD9F3, 0xD9AB, 0xD964, 0xD91B, 0xD8D3, 0xD88B, 0xD842, 0xD7F9, 0xD7B0, 0xD767, 0xD71D, 0xD6D3, 0xD689, 0xD63F,
0xD5F5, 0xD5AA, 0xD55F, 0xD514, 0xD4C9, 0xD47E, 0xD432, 0xD3E6, 0xD39A, 0xD34E, 0xD302, 0xD2B5, 0xD268, 0xD21B, 0xD1CE, 0xD181,
0xD133, 0xD0E5, 0xD097, 0xD049, 0xCFFB, 0xCFAC, 0xCF5D, 0xCF0E, 0xCEBF, 0xCE70, 0xCE20, 0xCDD0, 0xCD81, 0xCD30, 0xCCE0, 0xCC90,
0xCC3F, 0xCBEE, 0xCB9D, 0xCB4C, 0xCAFB, 0xCAA9, 0xCA57, 0xCA05, 0xC9B3, 0xC961, 0xC90F, 0xC8BC, 0xC869, 0xC816, 0xC7C3, 0xC770,
0xC71C, 0xC6C8, 0xC675, 0xC621, 0xC5CC, 0xC578, 0xC524, 0xC4CF, 0xC47A, 0xC425, 0xC3D0, 0xC37A, 0xC325, 0xC2CF, 0xC279, 0xC224,
0xC1CD, 0xC177, 0xC121, 0xC0CA, 0xC073, 0xC01C, 0xBFC5, 0xBF6E, 0xBF17, 0xBEBF, 0xBE67, 0xBE0F, 0xBDB7, 0xBD5F, 0xBD07, 0xBCAF,
0xBC56, 0xBBFD, 0xBBA4, 0xBB4B, 0xBAF2, 0xBA99, 0xBA3F, 0xB9E6, 0xB98C, 0xB932, 0xB8D8, 0xB87E, 0xB824, 0xB7C9, 0xB76F, 0xB714,
0xB6B9, 0xB65E, 0xB603, 0xB5A8, 0xB54D, 0xB4F1, 0xB496, 0xB43A, 0xB3DE, 0xB382, 0xB326, 0xB2CA, 0xB26E, 0xB211, 0xB1B5, 0xB158,
0xB0FB, 0xB09E, 0xB041, 0xAFE4, 0xAF87, 0xAF29, 0xAECC, 0xAE6E, 0xAE10, 0xADB3, 0xAD55, 0xACF6, 0xAC98, 0xAC3A, 0xABDC, 0xAB7D,
0xAB1F, 0xAAC0, 0xAA61, 0xAA02, 0xA9A3, 0xA944, 0xA8E5, 0xA885, 0xA826, 0xA7C7, 0xA767, 0xA707, 0xA6A7, 0xA648, 0xA5E8, 0xA588,
0xA527, 0xA4C7, 0xA467, 0xA406, 0xA3A6, 0xA345, 0xA2E5, 0xA284, 0xA223, 0xA1C2, 0xA161, 0xA100, 0xA09F, 0xA03E, 0x9FDC, 0x9F7B,
0x9F19, 0x9EB8, 0x9E56, 0x9DF4, 0x9D93, 0x9D31, 0x9CCF, 0x9C6D, 0x9C0B, 0x9BA9, 0x9B47, 0x9AE4, 0x9A82, 0x9A20, 0x99BD, 0x995B,
0x98F8, 0x9895, 0x9833, 0x97D0, 0x976D, 0x970A, 0x96A7, 0x9645, 0x95E1, 0x957E, 0x951B, 0x94B8, 0x9455, 0x93F2, 0x938E, 0x932B,
0x92C7, 0x9264, 0x9201, 0x919D, 0x9139, 0x90D6, 0x9072, 0x900E, 0x8FAB, 0x8F47, 0x8EE3, 0x8E7F, 0x8E1B, 0x8DB7, 0x8D53, 0x8CEF,
0x8C8B, 0x8C27, 0x8BC3, 0x8B5F, 0x8AFB, 0x8A97, 0x8A32, 0x89CE, 0x896A, 0x8906, 0x88A1, 0x883D, 0x87D9, 0x8774, 0x8710, 0x86AC,
0x8647, 0x85E3, 0x857E, 0x851A, 0x84B6, 0x8451, 0x83ED, 0x8388, 0x8324, 0x82BF, 0x825B, 0x81F6, 0x8192, 0x812D, 0x80C9, 0x8064,
0x8000, 0x7F9B, 0x7F36, 0x7ED2, 0x7E6D, 0x7E09, 0x7DA4, 0x7D40, 0x7CDB, 0x7C77, 0x7C12, 0x7BAE, 0x7B49, 0x7AE5, 0x7A81, 0x7A1C,
0x79B8, 0x7953, 0x78EF, 0x788B, 0x7826, 0x77C2, 0x775E, 0x76F9, 0x7695, 0x7631, 0x75CD, 0x7568, 0x7504, 0x74A0, 0x743C, 0x73D8,
0x7374, 0x7310, 0x72AC, 0x7248, 0x71E4, 0x7180, 0x711C, 0x70B8, 0x7054, 0x6FF1, 0x6F8D, 0x6F29, 0x6EC6, 0x6E62, 0x6DFE, 0x6D9B,
0x6D38, 0x6CD4, 0x6C71, 0x6C0D, 0x6BAA, 0x6B47, 0x6AE4, 0x6A81, 0x6A1E, 0x69BA, 0x6958, 0x68F5, 0x6892, 0x682F, 0x67CC, 0x676A,
0x6707, 0x66A4, 0x6642, 0x65DF, 0x657D, 0x651B, 0x64B8, 0x6456, 0x63F4, 0x6392, 0x6330, 0x62CE, 0x626C, 0x620B, 0x61A9, 0x6147,
0x60E6, 0x6084, 0x6023, 0x5FC1, 0x5F60, 0x5EFF, 0x5E9E, 0x5E3D, 0x5DDC, 0x5D7B, 0x5D1A, 0x5CBA, 0x5C59, 0x5BF9, 0x5B98, 0x5B38,
0x5AD8, 0x5A77, 0x5A17, 0x59B7, 0x5958, 0x58F8, 0x5898, 0x5838, 0x57D9, 0x577A, 0x571A, 0x56BB, 0x565C, 0x55FD, 0x559E, 0x553F,
0x54E0, 0x5482, 0x5423, 0x53C5, 0x5367, 0x5309, 0x52AA, 0x524C, 0x51EF, 0x5191, 0x5133, 0x50D6, 0x5078, 0x501B, 0x4FBE, 0x4F61,
0x4F04, 0x4EA7, 0x4E4A, 0x4DEE, 0x4D91, 0x4D35, 0x4CD9, 0x4C7D, 0x4C21, 0x4BC5, 0x4B69, 0x4B0E, 0x4AB2, 0x4A57, 0x49FC, 0x49A1,
0x4946, 0x48EB, 0x4890, 0x4836, 0x47DB, 0x4781, 0x4727, 0x46CD, 0x4673, 0x4619, 0x45C0, 0x4566, 0x450D, 0x44B4, 0x445B, 0x4402,
0x43A9, 0x4350, 0x42F8, 0x42A0, 0x4248, 0x41F0, 0x4198, 0x4140, 0x40E8, 0x4091, 0x403A, 0x3FE3, 0x3F8C, 0x3F35, 0x3EDE, 0x3E88,
0x3E32, 0x3DDB, 0x3D86, 0x3D30, 0x3CDA, 0x3C85, 0x3C2F, 0x3BDA, 0x3B85, 0x3B30, 0x3ADB, 0x3A87, 0x3A33, 0x39DE, 0x398A, 0x3937,
0x38E3, 0x388F, 0x383C, 0x37E9, 0x3796, 0x3743, 0x36F0, 0x369E, 0x364C, 0x35FA, 0x35A8, 0x3556, 0x3504, 0x34B3, 0x3462, 0x3411,
0x33C0, 0x336F, 0x331F, 0x32CF, 0x327E, 0x322F, 0x31DF, 0x318F, 0x3140, 0x30F1, 0x30A2, 0x3053, 0x3004, 0x2FB6, 0x2F68, 0x2F1A,
0x2ECC, 0x2E7E, 0x2E31, 0x2DE4, 0x2D97, 0x2D4A, 0x2CFD, 0x2CB1, 0x2C65, 0x2C19, 0x2BCD, 0x2B81, 0x2B36, 0x2AEB, 0x2AA0, 0x2A55,
0x2A0A, 0x29C0, 0x2976, 0x292C, 0x28E2, 0x2898, 0x284F, 0x2806, 0x27BD, 0x2774, 0x272C, 0x26E4, 0x269B, 0x2654, 0x260C, 0x25C5,
0x257D, 0x2536, 0x24F0, 0x24A9, 0x2463, 0x241D, 0x23D7, 0x2391, 0x234C, 0x2307, 0x22C2, 0x227D, 0x2238, 0x21F4, 0x21B0, 0x216C,
0x2128, 0x20E5, 0x20A2, 0x205F, 0x201C, 0x1FDA, 0x1F97, 0x1F55, 0x1F14, 0x1ED2, 0x1E91, 0x1E50, 0x1E0F, 0x1DCE, 0x1D8E, 0x1D4E,
0x1D0E, 0x1CCE, 0x1C8F, 0x1C50, 0x1C11, 0x1BD2, 0x1B94, 0x1B55, 0x1B17, 0x1ADA, 0x1A9C, 0x1A5F, 0x1A22, 0x19E5, 0x19A9, 0x196C,
0x1930, 0x18F5, 0x18B9, 0x187E, 0x1843, 0x1808, 0x17CE, 0x1793, 0x1759, 0x1720, 0x16E6, 0x16AD, 0x1674, 0x163B, 0x1603, 0x15CA,
0x1592, 0x155B, 0x1523, 0x14EC, 0x14B5, 0x147E, 0x1448, 0x1412, 0x13DC, 0x13A6, 0x1371, 0x133C, 0x1307, 0x12D2, 0x129E, 0x126A,
0x1236, 0x1202, 0x11CF, 0x119C, 0x1169, 0x1137, 0x1105, 0x10D3, 0x10A1, 0x1070, 0x103E, 0x100D, 0x0FDD, 0x0FAD, 0x0F7C, 0x0F4D,
0x0F1D, 0x0EEE, 0x0EBF, 0x0E90, 0x0E62, 0x0E34, 0x0E06, 0x0DD8, 0x0DAB, 0x0D7E, 0x0D51, 0x0D24, 0x0CF8, 0x0CCC, 0x0CA1, 0x0C75,
0x0C4A, 0x0C1F, 0x0BF5, 0x0BCA, 0x0BA0, 0x0B77, 0x0B4D, 0x0B24, 0x0AFB, 0x0AD3, 0x0AAA, 0x0A82, 0x0A5A, 0x0A33, 0x0A0C, 0x09E5,
0x09BE, 0x0998, 0x0972, 0x094C, 0x0927, 0x0901, 0x08DD, 0x08B8, 0x0894, 0x0870, 0x084C, 0x0828, 0x0805, 0x07E2, 0x07C0, 0x079D,
0x077B, 0x075A, 0x0738, 0x0717, 0x06F6, 0x06D6, 0x06B5, 0x0696, 0x0676, 0x0656, 0x0637, 0x0619, 0x05FA, 0x05DC, 0x05BE, 0x05A0,
0x0583, 0x0566, 0x0549, 0x052D, 0x0511, 0x04F5, 0x04D9, 0x04BE, 0x04A3, 0x0488, 0x046E, 0x0454, 0x043A, 0x0421, 0x0407, 0x03EF,
0x03D6, 0x03BE, 0x03A6, 0x038E, 0x0377, 0x0360, 0x0349, 0x0332, 0x031C, 0x0306, 0x02F1, 0x02DB, 0x02C6, 0x02B2, 0x029D, 0x0289,
0x0276, 0x0262, 0x024F, 0x023C, 0x022A, 0x0217, 0x0205, 0x01F4, 0x01E2, 0x01D1, 0x01C1, 0x01B0, 0x01A0, 0x0190, 0x0181, 0x0172,
0x0163, 0x0154, 0x0146, 0x0138, 0x012A, 0x011D, 0x0110, 0x0103, 0x00F6, 0x00EA, 0x00DE, 0x00D3, 0x00C8, 0x00BD, 0x00B2, 0x00A8,
0x009E, 0x0094, 0x008B, 0x0082, 0x0079, 0x0070, 0x0068, 0x0060, 0x0059, 0x0052, 0x004B, 0x0044, 0x003E, 0x0038, 0x0032, 0x002D,
0x0027, 0x0023, 0x001E, 0x001A, 0x0016, 0x0013, 0x000F, 0x000C, 0x000A, 0x0008, 0x0006, 0x0004, 0x0002, 0x0001, 0x0001, 0x0000,
0x0000, 0x0000, 0x0001, 0x0001, 0x0002, 0x0004, 0x0006, 0x0008, 0x000A, 0x000C, 0x000F, 0x0013, 0x0016, 0x001A, 0x001E, 0x0023,
0x0027, 0x002D, 0x0032, 0x0038, 0x003E, 0x0044, 0x004B, 0x0052, 0x0059, 0x0060, 0x0068, 0x0070, 0x0079, 0x0082, 0x008B, 0x0094,
0x009E, 0x00A8, 0x00B2, 0x00BD, 0x00C8, 0x00D3, 0x00DE, 0x00EA, 0x00F6, 0x0103, 0x0110, 0x011D, 0x012A, 0x0138, 0x0146, 0x0154,
0x0163, 0x0172, 0x0181, 0x0190, 0x01A0, 0x01B0, 0x01C1, 0x01D1, 0x01E2, 0x01F4, 0x0205, 0x0217, 0x022A, 0x023C, 0x024F, 0x0262,
0x0276, 0x0289, 0x029D, 0x02B2, 0x02C6, 0x02DB, 0x02F1, 0x0306, 0x031C, 0x0332, 0x0349, 0x0360, 0x0377, 0x038E, 0x03A6, 0x03BE,
0x03D6, 0x03EF, 0x0407, 0x0421, 0x043A, 0x0454, 0x046E, 0x0488, 0x04A3, 0x04BE, 0x04D9, 0x04F5, 0x0511, 0x052D, 0x0549, 0x0566,
0x0583, 0x05A0, 0x05BE, 0x05DC, 0x05FA, 0x0619, 0x0637, 0x0656, 0x0676, 0x0696, 0x06B5, 0x06D6, 0x06F6, 0x0717, 0x0738, 0x075A,
0x077B, 0x079D, 0x07C0, 0x07E2, 0x0805, 0x0828, 0x084C, 0x0870, 0x0894, 0x08B8, 0x08DD, 0x0901, 0x0927, 0x094C, 0x0972, 0x0998,
0x09BE, 0x09E5, 0x0A0C, 0x0A33, 0x0A5A, 0x0A82, 0x0AAA, 0x0AD3, 0x0AFB, 0x0B24, 0x0B4D, 0x0B77, 0x0BA0, 0x0BCA, 0x0BF5, 0x0C1F,
0x0C4A, 0x0C75, 0x0CA1, 0x0CCC, 0x0CF8, 0x0D24, 0x0D51, 0x0D7E, 0x0DAB, 0x0DD8, 0x0E06, 0x0E34, 0x0E62, 0x0E90, 0x0EBF, 0x0EEE,
0x0F1D, 0x0F4D, 0x0F7C, 0x0FAD, 0x0FDD, 0x100D, 0x103E, 0x1070, 0x10A1, 0x10D3, 0x1105, 0x1137, 0x1169, 0x119C, 0x11CF, 0x1202,
0x1236, 0x126A, 0x129E, 0x12D2, 0x1307, 0x133C, 0x1371, 0x13A6, 0x13DC, 0x1412, 0x1448, 0x147E, 0x14B5, 0x14EC, 0x1523, 0x155B,
0x1592, 0x15CA, 0x1603, 0x163B, 0x1674, 0x16AD, 0x16E6, 0x1720, 0x1759, 0x1793, 0x17CE, 0x1808, 0x1843, 0x187E, 0x18B9, 0x18F5,
0x1930, 0x196C, 0x19A9, 0x19E5, 0x1A22, 0x1A5F, 0x1A9C, 0x1ADA, 0x1B17, 0x1B55, 0x1B94, 0x1BD2, 0x1C11, 0x1C50, 0x1C8F, 0x1CCE,
0x1D0E, 0x1D4E, 0x1D8E, 0x1DCE, 0x1E0F, 0x1E50, 0x1E91, 0x1ED2, 0x1F14, 0x1F55, 0x1F97, 0x1FDA, 0x201C, 0x205F, 0x20A2, 0x20E5,
0x2128, 0x216C, 0x21B0, 0x21F4, 0x2238, 0x227D, 0x22C2, 0x2307, 0x234C, 0x2391, 0x23D7, 0x241D, 0x2463, 0x24A9, 0x24F0, 0x2536,
0x257D, 0x25C5, 0x260C, 0x2654, 0x269B, 0x26E4, 0x272C, 0x2774, 0x27BD, 0x2806, 0x284F, 0x2898, 0x28E2, 0x292C, 0x2976, 0x29C0,
0x2A0A, 0x2A55, 0x2AA0, 0x2AEB, 0x2B36, 0x2B81, 0x2BCD, 0x2C19, 0x2C65, 0x2CB1, 0x2CFD, 0x2D4A, 0x2D97, 0x2DE4, 0x2E31, 0x2E7E,
0x2ECC, 0x2F1A, 0x2F68, 0x2FB6, 0x3004, 0x3053, 0x30A2, 0x30F1, 0x3140, 0x318F, 0x31DF, 0x322F, 0x327E, 0x32CF, 0x331F, 0x336F,
0x33C0, 0x3411, 0x3462, 0x34B3, 0x3504, 0x3556, 0x35A8, 0x35FA, 0x364C, 0x369E, 0x36F0, 0x3743, 0x3796, 0x37E9, 0x383C, 0x388F,
0x38E3, 0x3937, 0x398A, 0x39DE, 0x3A33, 0x3A87, 0x3ADB, 0x3B30, 0x3B85, 0x3BDA, 0x3C2F, 0x3C85, 0x3CDA, 0x3D30, 0x3D86, 0x3DDB,
0x3E32, 0x3E88, 0x3EDE, 0x3F35, 0x3F8C, 0x3FE3, 0x403A, 0x4091, 0x40E8, 0x4140, 0x4198, 0x41F0, 0x4248, 0x42A0, 0x42F8, 0x4350,
0x43A9, 0x4402, 0x445B, 0x44B4, 0x450D, 0x4566, 0x45C0, 0x4619, 0x4673, 0x46CD, 0x4727, 0x4781, 0x47DB, 0x4836, 0x4890, 0x48EB,
0x4946, 0x49A1, 0x49FC, 0x4A57, 0x4AB2, 0x4B0E, 0x4B69, 0x4BC5, 0x4C21, 0x4C7D, 0x4CD9, 0x4D35, 0x4D91, 0x4DEE, 0x4E4A, 0x4EA7,
0x4F04, 0x4F61, 0x4FBE, 0x501B, 0x5078, 0x50D6, 0x5133, 0x5191, 0x51EF, 0x524C, 0x52AA, 0x5309, 0x5367, 0x53C5, 0x5423, 0x5482,
0x54E0, 0x553F, 0x559E, 0x55FD, 0x565C, 0x56BB, 0x571A, 0x577A, 0x57D9, 0x5838, 0x5898, 0x58F8, 0x5958, 0x59B7, 0x5A17, 0x5A77,
0x5AD8, 0x5B38, 0x5B98, 0x5BF9, 0x5C59, 0x5CBA, 0x5D1A, 0x5D7B, 0x5DDC, 0x5E3D, 0x5E9E, 0x5EFF, 0x5F60, 0x5FC1, 0x6023, 0x6084,
0x60E6, 0x6147, 0x61A9, 0x620B, 0x626C, 0x62CE, 0x6330, 0x6392, 0x63F4, 0x6456, 0x64B8, 0x651B, 0x657D, 0x65DF, 0x6642, 0x66A4,
0x6707, 0x676A, 0x67CC, 0x682F, 0x6892, 0x68F5, 0x6958, 0x69BA, 0x6A1E, 0x6A81, 0x6AE4, 0x6B47, 0x6BAA, 0x6C0D, 0x6C71, 0x6CD4,
0x6D38, 0x6D9B, 0x6DFE, 0x6E62, 0x6EC6, 0x6F29, 0x6F8D, 0x6FF1, 0x7054, 0x70B8, 0x711C, 0x7180, 0x71E4, 0x7248, 0x72AC, 0x7310,
0x7374, 0x73D8, 0x743C, 0x74A0, 0x7504, 0x7568, 0x75CD, 0x7631, 0x7695, 0x76F9, 0x775E, 0x77C2, 0x7826, 0x788B, 0x78EF, 0x7953,
0x79B8, 0x7A1C, 0x7A81, 0x7AE5, 0x7B49, 0x7BAE, 0x7C12, 0x7C77, 0x7CDB, 0x7D40, 0x7DA4, 0x7E09, 0x7E6D, 0x7ED2, 0x7F36, 0x7F9B,
};
void Tone_gen_start(unsigned int dph)
{
phase = 0;
dphase = dph;
}
__inline unsigned short Get_tone_sample(void)
{
phase += dphase;
return sin_tbl[phase >> (32-11)]; // Сдвигает чтобы осталось 11 бит согласно размеру таблицы
}
void Fill_sound_buf(INT16U *abuf, int sz)
{
int i;
for (i=0;i<sz;i++)
{
*abuf = Get_tone_sample();
abuf++;
}
}