Jump to content

    

Проиграть массив нот на STM32

Вот задумался, как бы на пьезопищалке, подключенной к выходу таймера STM32, сыграть мелодию, а не просто пищать одним тоном. Например, таймер высоты ноты по срабатыванию переключает выход на противоположный. Значит, задать ему нужно половину периода ноты. Скважность будет всегда два. А длительность ноты отсчитывать другим таймером, и по его срабатыванию загружать по DMA новый полупериод в таймер высоты и новую длительность в таймер длительности. Это, получается, два канала DMA нужно. Будет два массива - ноты и их длительности. Количество элементов массива задает количество пересылок в DMA.

Кто-нибудь делал подобное? Сложного, полифонического не хочу. Чисто в качестве небольшого украшения в работе прибора.    

Share this post


Link to post
Share on other sites
13 минут назад, ViKo сказал:

Кто-нибудь делал подобное? Сложного, полифонического не хочу. Чисто в качестве небольшого украшения в работе прибора.    

Мне понравилась реализация мелодий в старых микросхемах УМС. Там кроме высоты и длительности ноты есть еще и огибающая.

Причем выход цифровой комплиментарный с тактом 32768Гц.

Там память всего 128 байт (нот?). Как именно эти 128 байт превращаются в ноты и огибающую до конца не разобрался, но очень бы хотелось.

Сделал граббер сигнала с УМС. Сырые данные есть, но превратить их обратно в ноты/длительность/огибающую и паковку в 128 байт в авторежиме не осилил.

Share this post


Link to post
Share on other sites

Можно даже и без длительности. Повторять ту же ноту, если нужно дольше. 

Громкость можно регулировать скважностью, но для меня это лишнее. Да и тембр тогда меняется неестественно. 

Share this post


Link to post
Share on other sites
19 minutes ago, ViKo said:

Можно даже и без длительности. Повторять ту же ноту, если нужно дольше. 

Громкость можно регулировать скважностью, но для меня это лишнее. Да и тембр тогда меняется неестественно. 

Вот интересный проект на эту тему. Лучшее что видел, но до практической реализации руки не дошли.

http://www.deep-shadows.com/hax/wordpress/?page_id=1111

https://www.radiokot.ru/circuit/digital/game/51/

Edited by Михась

Share this post


Link to post
Share on other sites

Пробовал делать такое, только попроще, без DMA.   Таймер с прерываниями ( длительность нот) +  PWM ( высота ноты).  "Мурка" и "Варяг" были вполне узнаваемы.   Регулировка скважностью громкости мне не понравилась ( или я не умею её готовить).     

Share this post


Link to post
Share on other sites

буквально недавно читал

не помню точную ссылку

но что то из разряда

https://habr.com/ru/post/126835/

https://habr.com/ru/post/348192/

 

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now