реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Синтез звука.
-=Женек=-
сообщение Oct 21 2011, 08:02
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



Господа, кому-нибудь приходилось заниматься аппаратным синтезом звука?
Имеется контроллер AVR хочется к его ШИМу присоединить динамик и использовать его в качестве некоего сигнализатора.

Однако прямоугольные импульсы, как известно звучат как жесткий циплячий писк.

Однако в жизни да и в тех же музыкальных инструментах одна нота - то есть постоянный, не меняющий частоты и интенсивности звук, звучит по разному, то есть имеет разный тембр, который к тому же куда приятнее чем прямоугольный импульс.

Погуглил я на предмет синтеза звука - нашел решения для персональных компьютеров - сложные навороченные программы, с алгоритмами которых АVR просто не справится, да и крутизна такая не нужна. Единственное, нужное, что я для себя извлек - что для синтеза необычного звука достаточно нарисовать кривую одного периода колебания, а потом бесконечно повторять эти колебания, меняя в зависимости от возможностей утсройства длительность этого колебания.

Другими словами - прямоугольные ипульсы - жесткий жестяной писк, синусоида - более мягкий звук, а вот синусоида с "рюшечками" - уже что-то более хитрое.

Может быть у кого есть какие-то наработки в аппаратном синтезе звука, точнее не звука, а отдельных его нот? ПРивитив в виде писка прямоугольных импульсов уже поднадоел. Хочу поиграться с ШИМ.

Заранее спасибо.
Go to the top of the page
 
+Quote Post
cdsinit
сообщение Oct 21 2011, 08:56
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 22-12-08
Из: Москва
Пользователь №: 42 669



Звук похожий на музыкальный из одной строчки кода:
http://countercomplex.blogspot.com/2011/10...ne-line-of.html
На AVR пока не пробовал делать, опыт по МК мал.
Go to the top of the page
 
+Quote Post
i-mir
сообщение Oct 21 2011, 09:38
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 197
Регистрация: 17-06-10
Из: Киев
Пользователь №: 57 986



Когда вот так это делали http://ru.wikipedia.org/wiki/Covox
АЦП на борту кристалла думаю найдете, схема очень проста-
оцифровали - в память - воспроизводите.
Go to the top of the page
 
+Quote Post
Microwatt
сообщение Oct 21 2011, 11:21
Сообщение #4


Гуру
******

Группа: Почетный участник
Сообщений: 6 851
Регистрация: 25-08-08
Из: Запорожье
Пользователь №: 39 802



Меандр - один из самых мягких, сочных звуков. Такой спектр имеют деревянные духовые (кларнет).
Визг скрипки - ближе к треугольнику.
Если цыплячье - или заполнение не 50% или воспроизводящее устройство (буззер какой-нибудь) не воспроизводит нижних (основных гармоник).
Go to the top of the page
 
+Quote Post
DVF
сообщение Oct 21 2011, 11:36
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 630
Регистрация: 26-07-06
Из: Саратов
Пользователь №: 19 097



Можете тут почитать.
Go to the top of the page
 
+Quote Post
-=Женек=-
сообщение Oct 21 2011, 12:45
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 559
Регистрация: 6-09-06
Пользователь №: 20 131



DVF, так я это и читал. ОТтуда я и вычитал про один период, который нужно сокращать или растягивать. Да только по указанной вами ссылке описывается синусоида, дальше этого автор статьи не пошел.
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Oct 21 2011, 15:32
Сообщение #7


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Цитата(-=Женек=- @ 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++;
   }

}
Go to the top of the page
 
+Quote Post
rl3bt
сообщение Nov 29 2011, 07:13
Сообщение #8





Группа: Новичок
Сообщений: 1
Регистрация: 6-02-07
Пользователь №: 25 092



Цитата(-=Женек=- @ Oct 21 2011, 12:02) *
Господа, кому-нибудь приходилось заниматься аппаратным синтезом звука?
Имеется контроллер AVR хочется к его ШИМу присоединить динамик и использовать его в качестве некоего сигнализатора.

Другими словами - прямоугольные ипульсы - жесткий жестяной писк, синусоида - более мягкий звук, а вот синусоида с "рюшечками" - уже что-то более хитрое.

Может быть у кого есть какие-то наработки в аппаратном синтезе звука, точнее не звука, а отдельных его нот? ПРивитив в виде писка прямоугольных импульсов уже поднадоел. Хочу поиграться с ШИМ.

Заранее спасибо.


Баловались пару-тройку лет назад.
Заведите мегу128 с кварцем на 14...16 МГц, подключите лопух через транзистор на OC1A (вывод 15) и сыграйте эту программу.
(пример для Codevision 1.25.8)

http://www.youtube.com/watch?v=dtV1chilwxU - вот звучёк с пилообразным сэмпломsm.gif

Программа навеяна даташитом на DDS-ки )))

В аттаче HEX готовый к прошивке.

CODE

#include <mega128.h>
#include <delay.h>
#include <math.h>

char sin_samples[255];

enum{ SINE=0,
TRIANGLE,
SAW,
RECTANGLE
};

void generate_sample(char t)
{
char a;
switch(t)
{
case SINE: for(a=0;a<255;a++) sin_samples[a]=127.0*(1+sin((2*PI/255.0)*a));
break;
case TRIANGLE: for (a=0; a<127; a++) sin_samples[a]=a*2;
for (;a<255;a++) sin_samples[a]=255-(a-127)*2;
break;
case SAW: for (a=0; a<255; a++) sin_samples[a]=a;
break;
case RECTANGLE: for (a=0; a<127; a++) sin_samples[a]=0;
for (; a<255; a++) sin_samples[a]=0xff;
break;
}
}

/********************************************************/

#define SAMPLE_RATE (57600.0)
#define SAMPLE_PERIOD (255)
#define TICKS_ROW (2600)
#define ROWS (64)
int row=0;
int ticks_row=0;

#define C (261.6) //note freq
#define D (293.7) //
#define E (329.6)
#define F (349.2)
#define G (392.0)
#define GD (415.0)
#define A (440.0)
#define B (494.0)

flash float notes[64*4]={
E*12, A*3, 0, 100,//0
E*12, A*3, 0, 0,
E*12, C*6, E*6, 0,
E*12, 0, 0, 0,

E*12, E*3, 0, 100,//4
E*12, E*3, 0, 0,
C*12, C*6, E*6, 0,
C*12, C*6, E*6, 0,

D*12, GD*3, 0, 100,//8
0, GD*3, 0, 0,
D*12, B*3, 0, 0,
D*12, 0, E*6, 0,

C*12, E*3, 000, 100,//12
C*12, E*3, 000, 0,
B*6, B*3, E*6, 0,
B*6, B*3, E*6, 0,

A*6, A*3, E*6, 100,//16
A*6, A*3, E*6, 0,
A*6, C*6, 0, 0,
A*6, 0, E*6, 0,

A*6, E*3, 0, 100,//20
A*6, E*3, 0, 0,
C*12, C*6, E*6, 0,
C*12, C*6, E*6, 0,

E*12, A*3, E*6, 100,//24
E*12, A*3, 0, 0,
E*12, 0, E*6, 0,
E*12, C*6, 0, 0,

D*12, E*3, 0, 100,//28
D*12, E*3, 0, 0,
C*12, C*6, E*6, 0,
C*12, C*6, E*6, 0,

B*6, GD*3, 0, 100,//32
B*6, GD*3, 0, 0,
B*6, B*3, 0, 0,
B*6, 0, E*6, 0,

B*6, E*3, 0, 100,//36
B*6, E*3, 0, 0,
C*12, B*3, E*6, 0,
C*12, B*3, E*6, 0,

D*12, GD*3, 0, 100, //40
D*12, GD*3, 0, 0,
D*12, B*3, 0, 0,
D*12, 0, E*6, 0,

E*12, E*3, 0, 100,//44
E*12, E*3, 0, 0,
E*12, B*3, E*6, 0,
E*12, B*3, E*6, 0,

C*12, A*3, 0, 100,//48
C*12, A*3, 0, 0,
C*12, C*6, 0, 0,
C*12, 0, E*6, 0,

A*6, E*3, E*6, 100,//52
A*6, E*3, 0, 0,
A*6, C*6, E*6, 0,
0, C*6, E*6, 0,

A*6, A*3, 0, 100,//56
A*6, A*3, 0, 0,
A*6, 0, E*6, 0,
A*6, C*6, 0, 0,

A*6, E*3, 0, 100,//60
A*6, E*3, 0, 0,
A*6, C*6, E*6, 0,
A*6, C*6, E*6, 0
};



unsigned int phase_fix=0, phase_increment_fix=0,
phase2_fix=0, phase_increment2_fix=0,
phase3_fix=0, phase_increment3_fix=0;

char load_notes=0;

/// Timer 1 overflow interrupt service routine
interrupt [TIM1_OVF] void timer1_ovf_isr(void)
{
//note loader
if (ticks_row--);
else
{
load_notes=1; //грузим ноты
ticks_row=TICKS_ROW;
}
// месим три канала
OCR1AL = (char)((int)((int)sin_samples[(char)(phase_fix>>8)]+
(int)sin_samples[(char)(phase2_fix>>8)]+
(int)sin_samples[(char)(phase3_fix>>8)])>>2);
//DDS
if ((phase_fix+=phase_increment_fix)>(SAMPLE_PERIOD-1)<<8) phase_fix-=(SAMPLE_PERIOD-1)<<8;
if ((phase2_fix+=phase_increment2_fix)>(SAMPLE_PERIOD-1)<<8) phase2_fix-=(SAMPLE_PERIOD-1)<<8;
if ((phase3_fix+=phase_increment3_fix)>(SAMPLE_PERIOD-1)<<8) phase3_fix-=(SAMPLE_PERIOD-1)<<8;
}
/********************************************************/

void main(void)
{

char current_sample=0;

PORTB=0x00;
DDRB=0x20; //OC1A

// Timer/Counter 1 initialization
// Clock source: System Clock
// Mode: Ph. & fr. cor. PWM top=ICR1
// OC1A output: Non-Inv.
// Timer 1 Overflow Interrupt: On
TCCR1A=0x80;
TCCR1B=0x11;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x01;
ICR1L=0x90;
OCR1AH=0x00;
OCR1AL=0x7F; //medium
OCR1BH=0x00;
OCR1BL=0x00;
OCR1CH=0x00;
OCR1CL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x04;
ETIMSK=0x00;

generate_sample(SINE);

#asm("sei");
while(1)
{

if (load_notes)
{

load_notes=0;

phase_increment3_fix=
phase_increment2_fix=
phase_increment_fix=(unsigned int)(256*((float)SAMPLE_PERIOD/(float)SAMPLE_RATE));

#define multfixSlow(a,cool.gif ((unsigned int)((((long)(a))*((long)(cool.gif))>>8)) //multiply two fixed #
phase_increment_fix=multfixSlow(phase_increment_fix,((long)notes[row]*128));
phase_increment2_fix=multfixSlow(phase_increment2_fix,((long)notes[row+1]*128));
phase_increment3_fix=multfixSlow(phase_increment3_fix,((long)notes[row+2]*128));

if((row+=4)>ROWS*4-1)
{
row=0;
if(++current_sample>RECTANGLE) current_sample=0;
generate_sample(current_sample);

}

}

};

}




Прикрепленные файлы
Прикрепленный файл  board128.zip ( 3.51 килобайт ) Кол-во скачиваний: 19
 
Go to the top of the page
 
+Quote Post
centrone
сообщение Feb 13 2012, 09:53
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 24-12-05
Пользователь №: 12 627



Sytrus - хороший программый ситезатор (код закрытый) с понятным принципом работы и почти 500 предустановками для имитации реальных иструментов.
Go to the top of the page
 
+Quote Post
brag
сообщение Feb 28 2012, 02:30
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 047
Регистрация: 2-12-06
Из: Kyiv, Ukraine
Пользователь №: 23 046



Ну вообще можно поигратся с разложением готового сигнала на спектр, ту же дудку,гитару итп. Потом максимум упростить спектр, на слух, ну и далее дело за малым - сгенерить эти синусоиды по табличке -> ШИМ+ reconstruction-фильтр и будет что-то правдоподобное. правда атаки не будет, это уже довольно сложный сигнал...
Go to the top of the page
 
+Quote Post
Абырвалг
сообщение May 30 2012, 08:15
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 55
Регистрация: 23-08-06
Пользователь №: 19 752



Древняя тема, но все-же отмечусь. Если нужен простой "пик", но меандр не устраивает своей незатейливостью и назойливостью, его можно разнообразить добавив к нему второй тон. Если оба тона будут в косонансе, то звук получится более благозвучный и "глубокий". Можно мешать не два тона, а больше. И в разных пропорциях. Простор для фантазии.

Сигналы надо именно складывать, а не умножать. Если звук надо выводить через один логический выход, наверно можно попробовать сделать "ИЛИ", хотя я не пробовал. Если сложить два меандра, то результат будет трехуровневый. Можно 0 и 2 представить, соответсвенно, 0 и 1 на логическом выходе, а 1 представить ШИМ-ом с меандром на высокой частоте, которая после зарежется простым RC-фильтром или самим динамиком. В общем извращаться можно массой способов.

За синусоидальностью тонов гнаться, ИМХО, смысла нет. Синус сам по себе достаточно тоскливый звук.

Традиционно косонансами считаются унисон, октава, квинта, кварта, терции и т. д. Ниже пример, как эти частоты посчитать.

// Частоты тонального сигнала
#define note_re 293.66
#define note_mi 329.63
#define note_fa 349.23
#define note_sol 392.00
#define note_la 440.00
#define main_tone note_fa // Частота основного тона

#define unison *1/1 // 1:1 - унисон
#define octave *1/2 // 1:2 - октава
#define quint *2/3 // 2:3 - квинта
#define quart *3/4 // 3:4 - кварта
#define tierce *4/5 // 4:5 - терция

// Частоты первого и второго тона
#define F_tone1 (main_tone unison )
#define F_tone2 (main_tone tierce )

Дальше генерация этих двух тонов, кому как удобно.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01512 секунд с 7
ELECTRONIX ©2004-2016