Программируем на Си... музыку

Рейтинг пользователей: / 8
ХудшийЛучший 
Новости - Это интересно

Прослушайте эту мелодию и скажите, на что она похожа?

Наверное, вы подумали, что это какие-то чукотские наигрыши? А вот и нет! Эта мелодия сгенерирована программой на Си. Наверное, вы думаете, что эта программа занимает тысячи строк? И снова ошиблись! Эта мелодия создана следующим кодом:

int t = 0; for(; ; t++) output((t*(t>>8+t>>9)*100)+sin(t));

Функция output() - это просто вывод байтов в файл, содержимое которого затем выводится в ЦАП с частотой 8000 Гц. А звук, получаемый в итоге, вы только что прослушали.

Не правда ли, удивительно? Причем формула генерации звука может быть любой другой, при этом иной раз получаются звуки, практически неотличимые от популярной клубной музыки (ну, той самой, которая либо бесит, либо усыпляет1).

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

Думаю, можно попробовать повторить эксперименты с применением микроконтроллера: при помощи ШИМ генерировать сигналы, ну а семплы создавать подобранной формулой. Представьте себе этакий "музыкальный" автомат на attiny13...

Кто возьмется попробовать?

1) это скромное мнение автора заметки

 Обсудить на форуме (0 комментариев).

Добавить комментарий

Правила комментирования

Запрещается вводить оскорбительные тексты, использовать нецензурные выражения, публиковать экстремистские призывы, давать ссылки на сайты, не имеющие отношения к теме обсуждения. Все сообщения, нарушающие данные требования, будут удалены без уведомлений, а их авторы - заблокированы.
Незарегистрированные посетители не могут вводить ссылки, BB-коды и т.п., зарегистрированные - могут. Подробности о возможностях, доступных зарегистрированным посетителям, см. в разделе Помощь.


Защитный код
Обновить



Темы форума
Комментарии
Статистика
Просмотров:
mod_vvisit_counterСегодня152120
mod_vvisit_counterВчера180173
mod_vvisit_counterНа этой неделе380183
mod_vvisit_counterНа прошлой неделе649709
mod_vvisit_counterВ этом месяце2689111
mod_vvisit_counterЗа все время14243363

Ваш IP: 54.198.102.92
 , 
28 Июн. 2017