Перейти к содержанию

Генерация звука

Нашел на форуме несколько подобных тем. Но как-то все не то.

Мне нужно генерить сигналы нажатия клавиш, аварийные сигналы и другие предупреждающие сигналы.

Конечно хочется чтобы все это было благозвучным. Просто килогерц не нравится.

Хранить во флешке контроллера десятки килобайт wav файлов нет никакого желания.

Мне кажется пару лет назад видел это на хабре.

Сейчас не могу найти ничего стоящего.

Звук выводится через ЦАП в STM32.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Нашел на форуме несколько подобных тем. Но как-то все не то.

Мне нужно генерить сигналы нажатия клавиш, аварийные сигналы и другие предупреждающие сигналы.

Конечно хочется чтобы все это было благозвучным. Просто килогерц не нравится.

...

Звук выводится через ЦАП в STM32.

1. Запустить таймер на, скажем, 8kHz

2. По срабатыванию таймера выдать в ЦАП выборку из сэмпла.

3. Выборку можно взять либо из таблицы сэмплов для разных нот, либо, для периодических сигналов, вычислить математически.

 

Примерно так.

Изменено пользователем KnightIgor

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Сейчас не могу найти ничего стоящего.

- Поищите в Сети проекты музыкальных шкатулок на AVR и PIC. Их масса, оттуда можно позаимствовать идею реализации и собственно мелодии в двоичном виде. Я так китайский "поющий автомобильчик" чинил по просьбе знакомой. Заставил его петь "калинку-малинку" и "с чего начинается Родина" :)

 

- Поищите примеры реализации полифонии, опять же для AVR и PIC ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ноты имеют известные частоты. А дальше комбинируйте ноты согласно гармонии. Вот и всё. Можно найти ноты любого произведения, если очень хочется.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ноты устроены так:

Ля первой октавы - 440Гц, всё остальное получается умножением на корень двенадцатой степени из двух.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
. . . .Конечно хочется чтобы все это было благозвучным. . . .

Основа благозвучности - гармоническая форма выходного сигнала. Самое простое решение (как для встроенного DAC так и внешняя его эмуляция на резисторах)

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

За "базу" можно взять аппноты, где реализуется формирование DTMF кодов (телефония). Есть аппноты и для формирования синусоидального сигнала.

Для форммирования гарм. сигнала возможно использовать и PWM + нч фильтр.

 

 

Поделиться сообщением


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

Увы, не выйдет так. Я пробовал. Надо быть музыкантом, наверное. Я использовал уже готовые наборы нот, заимствуя их из нескольких проектов музыкальных шкатулок ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Увы, не выйдет так. Я пробовал. Надо быть музыкантом, наверное. Я использовал уже готовые наборы нот, заимствуя их из нескольких проектов музыкальных шкатулок ...

Наверное, нужно. Хотя бы знать, что такое терция, кварта, квинта. И аккорды, как следствие. А дальше - элементарно. Небось, весь "Турецкий марш" играть не обязательно. Аккорда хватит.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Наверное, нужно. Хотя бы знать, что такое терция, кварта, квинта. И аккорды, как следствие. А дальше - элементарно. Небось, весь "Турецкий марш" играть не обязательно. Аккорда хватит.

У меня даже муз. школы за плечами нет. Попробовал, поизучал теорию. Не выходит. Тогда я просто надергал из Сети готовых мелодий ...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Основа благозвучности - гармоническая форма выходного сигнала. Самое простое решение (как для встроенного DAC так и внешняя его эмуляция на резисторах)

- записать таблицу синуса (достаточно четверть периода).

Гармония в музыке - это не синусоидальная форма сигнала, а круглые отношения частот звучащих нот, одновременно или последовательно. 2:3, 3:4... Современные ноты немного не попадают в точные отношения (нет чистых интервалов), зато все полутона отстоят друг от друга на одинаковый интервал (как писали, корень 12 степени из 2, то есть, в октаве 12 полутонов).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот проект, из которого я взял мелодии:

 

http://micro.of.by/attiny2313-si/95-muzyka...shkatulka-avr-c

 

и еще:

 

http://forum.avr.ru/uzykalnaia-shkatulka-t36020.html?

 

Эх, восемь лет прошло с тех пор, а я запомнил :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гармония в музыке - это не синусоидальная форма сигнала, а круглые отношения частот звучащих нот, одновременно или последовательно. 2:3, 3:4... Современные ноты немного не попадают в точные отношения (нет чистых интервалов), зато все полутона отстоят друг от друга на одинаковый интервал (как писали, корень 12 степени из 2, то есть, в октаве 12 полутонов).

Мне нравится движок wolframalpha чтобы тестировать всякие мелочи онлайн.

 

Я использую звуки генерируемые по такой формуле : http://www.wolframalpha.com/input/?i=play+...0t))*e%5E-(3*t)

Там и про ноты можно все узнать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Где-то месяц назад решили с дочкой (6 лет) в субботу сделать какую-нить электронную поделку. Я прикинул, что забахаем музыкальную шкатулку

на УМС8-08, бо схема там простейшая, детальки есть. Спаяли - не работает. Налаживал - толку ноль. Потом нашел и становил УМС7-05 - играет, но мелодии

там уж больно скучные, и настрой уже далеко не боевой. Я расстроен, дочка тоже... и вот на таком фоне поступил я немного эмоционально. Короче,

в той УМС8-08 по какой-то причине не работал встроенный генератор. Подаешь извне 32кГц - все играет, а кварц раскачать сама не может. Доча еще,

представитель современной молоди: "пап, а ты из этой микросхемы туда загрузи". Ага. В общем, на следующий день сделал я контроллер,

который подает 32кГц на вход, а на выходе записывает параметры ШИМ. По ним делает реверс нот и пауз. Короче там не все так тривиально,

у нот есть не только высота, получаемая с ДПКД, но и возможность нарастания, спада и удержания ноты как у OPL-синтезаторов. Нигде в Интернете

не нашел ПЗУ от этих УМС и схемы внутреннего управления, а свою уж как-то долго показалось реверсить.

 

Я к чему? К тому, что если где-то есть движок для проигрывания УМС-совместимого ПЗУ, то там довольно все серьезно, и можно его было бы использовать

в своих проектах для весьма сложных композиций с ШИМ-управлением (без ЦАП).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти