Свежие обсуждения
Микроконтроллеры

Трёхголосный тон-генератор

1 8

Тут уже обсуждали нечто подобное.
Намедни решил попробовать подобное на 628 PIC'е. В принципе подойдут любые, из семейства PIC16, в которых есть три таймера и USART. Последний, в общем, можно и исключить.
Результаты выложил тут. Там же указал и возникшие недостатки.
Кому интересная данная тема, давайте, совместными усилиями, их устраним.

 

Не копался в вашем проекте, но предположу, что основной недостаток -- отсутствие поддержки атаки-затухания у звуков.
Если реализуете сей момент -- получите качественно иной уровень звуков.

 

Gregory: Намедни решил попробовать подобное на 628 PIC'е. В принципе подойдут любые, из семейства PIC16, в которых есть три таймера и USART. Кому интересная данная тема, давайте, совместными усилиями, их устраним

Есть пример хорошей реализации 6-голосой полифонии на 8-ногой ATtiny45 с атакой-затуханием.

 

А для CY8C2xxxx хороший пример 10-голосной полифонии (плюс сканирование рояльной клавиатуры), здесь.
Вообще говоря, для реализации табличного синтеза необходим контроллер с аппаратной поддержкой умножения и накопления результата.

Кстати, в CY8C29xxx можно задействовать до 16 аппаратных ШИМ генераторов, а просуммировав их выходы на внешней резистивной матрице, получить полифонию из 16 меандров.

107385.pdf

 

IDiod: лифонию из 16 меандров.
Почему-же меандров?
Если там ШИМ, то можно получить 16 любых аналоговых сигналов

 

Я имел в виду использовать ШИМ модуль в качестве элементарного тон-генератора. Такой блок генерирует прямоугольный сигнал без вмешательства со стороны процессорного ядра.

Вмешательство потребуется, например, для реализации атаки-затухания (изменением скважности) и для перепрограммирования модуля под новую ноту.

 

IDiod:
основной недостаток -- отсутствие поддержки атаки-затухания
Не думаю, что это - причина. Одноголосные тон-генераторы, построенные по этому принципу, звучат вполне сносно. Попробуйте, хотя бы тот же "Дверной звонок" из Протеуса, или Ёлку, куда-то запропастившегося, Пикманьяка (лично я её не собирал, но нареканий пока не слышал).

Если реализовывать ЦАП-ШИМ, то это уже сэмплер получится, а не тон генератор. В том же примере с Атмелом, ясно написанно: "Вэйвтейбл". И не думайте, что там всё так просто. И что записав шесть сэмплов, вы получите 6-голосный синтезатор. Попробуйте посмотреть принцип стандарта "звуковых шрифтов" SF (SF2), использующихся во многих звуковых картах Креатива.

Кроме того. Довольно сложный алгоритм получился из-за того, что воспроизводятся как бы три отдельных мелодии, записанные в память МК. Если же воспроизводить частоту нажатой пианинной клавиши, то никаких извлечений из памяти и обработку данных производить не нужно. Соответственно, алгоритм будет проще. Нажал клавишу - есть звук, отпустил клавишу - нет звука.

 

принцип стандарта "звуковых шрифтов" SF (SF2)
Вот, нашёл ссылку.

Вообще, конечно, хотелось бы обсудить именно в/у конструкцию.
Кстати говоря, побочным продуктом, явился девайс, в котором частоты микшируются на одном выходе МК. Так понимаю, это и есть - многочастотные посылки, неоднократно упоминающиеся в АОНах?

 

Gregory: лично я её не собирал, но нареканий пока не слышал
собирал я ее только ради музыки. Звучание меня достаточно сильно удивило! Не думал, что МК так легко на такое способен

Что касается АОНов.. то я генерировал 2х тональные посылки двумя "ногами". Принимающий АОН не жаловался.

 

Сергей К:
генерировал 2х тональные посылки двумя "ногами"
Так, а микшировать потом как? Если обычными резисторами, то выходной сигнал будет иметь трёхуровневый динамический диапазон. Ноль - одна амплитуда - двойная амплитуда (это - в случае двух сигналов). В моём же случае, динамический диапазон, для трёх сигналов, такой же, как и у одиночного - ноль - единичная амплитуда. Просто, на самом последнем этапе формирования, все три сигнала проходят через процедуру "ИЛИ".
Вот я и спрашиваю, это и есть те самые многочастотные посылки?