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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Генерация звука, Воспроизведение по нотам
uriy
сообщение Jul 9 2018, 07:59
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 426
Регистрация: 30-11-05
Из: Ижевск
Пользователь №: 11 606



Нашел на форуме несколько подобных тем. Но как-то все не то.
Мне нужно генерить сигналы нажатия клавиш, аварийные сигналы и другие предупреждающие сигналы.
Конечно хочется чтобы все это было благозвучным. Просто килогерц не нравится.
Хранить во флешке контроллера десятки килобайт wav файлов нет никакого желания.
Мне кажется пару лет назад видел это на хабре.
Сейчас не могу найти ничего стоящего.
Звук выводится через ЦАП в STM32.
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Jul 9 2018, 08:15
Сообщение #2


Знающий
****

Группа: Участник
Сообщений: 642
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(uriy @ Jul 9 2018, 08:59) *
Нашел на форуме несколько подобных тем. Но как-то все не то.
Мне нужно генерить сигналы нажатия клавиш, аварийные сигналы и другие предупреждающие сигналы.
Конечно хочется чтобы все это было благозвучным. Просто килогерц не нравится.
...
Звук выводится через ЦАП в STM32.

1. Запустить таймер на, скажем, 8kHz
2. По срабатыванию таймера выдать в ЦАП выборку из сэмпла.
3. Выборку можно взять либо из таблицы сэмплов для разных нот, либо, для периодических сигналов, вычислить математически.

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

Сообщение отредактировал KnightIgor - Jul 9 2018, 08:16
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jul 9 2018, 08:26
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 5 263
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(uriy @ Jul 9 2018, 10:59) *
Сейчас не могу найти ничего стоящего.

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

- Поищите примеры реализации полифонии, опять же для AVR и PIC ...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 9 2018, 08:50
Сообщение #4


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 625
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Ноты имеют известные частоты. А дальше комбинируйте ноты согласно гармонии. Вот и всё. Можно найти ноты любого произведения, если очень хочется.
Go to the top of the page
 
+Quote Post
_pv
сообщение Jul 9 2018, 08:50
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



ноты устроены так:
Ля первой октавы - 440Гц, всё остальное получается умножением на корень двенадцатой степени из двух.
Go to the top of the page
 
+Quote Post
k155la3
сообщение Jul 9 2018, 09:18
Сообщение #6


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

Группа: Свой
Сообщений: 1 115
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848



Цитата(uriy @ Jul 9 2018, 10:59) *
. . . .Конечно хочется чтобы все это было благозвучным. . . .

Основа благозвучности - гармоническая форма выходного сигнала. Самое простое решение (как для встроенного DAC так и внешняя его эмуляция на резисторах)
- записать таблицу синуса (достаточно четверть периода). Если нужны "навороты" сделайте формирователь формы огибающей амплитуды, как в муз. инструментах.
За "базу" можно взять аппноты, где реализуется формирование DTMF кодов (телефония). Есть аппноты и для формирования синусоидального сигнала.
Для форммирования гарм. сигнала возможно использовать и PWM + нч фильтр.

Go to the top of the page
 
+Quote Post
__inline__
сообщение Jul 9 2018, 09:35
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 253
Регистрация: 5-09-17
Пользователь №: 99 126



Как вариант - играть чип-тюны sm.gif
Гуглить 2A03, Adlib, OPL2/3. Исходников масса
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jul 9 2018, 09:47
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 5 263
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(ViKo @ Jul 9 2018, 11:50) *
Ноты имеют известные частоты. А дальше комбинируйте ноты согласно гармонии. Вот и всё. Можно найти ноты любого произведения, если очень хочется.

Увы, не выйдет так. Я пробовал. Надо быть музыкантом, наверное. Я использовал уже готовые наборы нот, заимствуя их из нескольких проектов музыкальных шкатулок ...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 9 2018, 09:50
Сообщение #9


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 625
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(kovigor @ Jul 9 2018, 12:47) *
Увы, не выйдет так. Я пробовал. Надо быть музыкантом, наверное. Я использовал уже готовые наборы нот, заимствуя их из нескольких проектов музыкальных шкатулок ...

Наверное, нужно. Хотя бы знать, что такое терция, кварта, квинта. И аккорды, как следствие. А дальше - элементарно. Небось, весь "Турецкий марш" играть не обязательно. Аккорда хватит.
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jul 9 2018, 09:55
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 5 263
Регистрация: 30-03-10
Пользователь №: 56 295



Цитата(ViKo @ Jul 9 2018, 12:50) *
Наверное, нужно. Хотя бы знать, что такое терция, кварта, квинта. И аккорды, как следствие. А дальше - элементарно. Небось, весь "Турецкий марш" играть не обязательно. Аккорда хватит.

У меня даже муз. школы за плечами нет. Попробовал, поизучал теорию. Не выходит. Тогда я просто надергал из Сети готовых мелодий ...
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jul 9 2018, 10:00
Сообщение #11


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 625
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(k155la3 @ Jul 9 2018, 12:18) *
Основа благозвучности - гармоническая форма выходного сигнала. Самое простое решение (как для встроенного DAC так и внешняя его эмуляция на резисторах)
- записать таблицу синуса (достаточно четверть периода).

Гармония в музыке - это не синусоидальная форма сигнала, а круглые отношения частот звучащих нот, одновременно или последовательно. 2:3, 3:4... Современные ноты немного не попадают в точные отношения (нет чистых интервалов), зато все полутона отстоят друг от друга на одинаковый интервал (как писали, корень 12 степени из 2, то есть, в октаве 12 полутонов).
Go to the top of the page
 
+Quote Post
kovigor
сообщение Jul 9 2018, 10:07
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 5 263
Регистрация: 30-03-10
Пользователь №: 56 295



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

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

и еще:

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

Эх, восемь лет прошло с тех пор, а я запомнил sm.gif
Go to the top of the page
 
+Quote Post
_pv
сообщение Jul 9 2018, 10:29
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 563
Регистрация: 8-04-05
Из: Nsk
Пользователь №: 3 954



https://stackoverflow.com/questions/4175334...d-starting-time
http://www.music.mcgill.ca/~ich/classes/mu...mat.html#BMA1_3
https://newt.phys.unsw.edu.au/jw/notes.html
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Jul 9 2018, 11:18
Сообщение #14


Ally
******

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



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

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

Я использую звуки генерируемые по такой формуле : http://www.wolframalpha.com/input/?i=play+...0t))*e%5E-(3*t)
Там и про ноты можно все узнать.
Go to the top of the page
 
+Quote Post
adnega
сообщение Jul 9 2018, 13:39
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 707
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Где-то месяц назад решили с дочкой (6 лет) в субботу сделать какую-нить электронную поделку. Я прикинул, что забахаем музыкальную шкатулку
на УМС8-08, бо схема там простейшая, детальки есть. Спаяли - не работает. Налаживал - толку ноль. Потом нашел и становил УМС7-05 - играет, но мелодии
там уж больно скучные, и настрой уже далеко не боевой. Я расстроен, дочка тоже... и вот на таком фоне поступил я немного эмоционально. Короче,
в той УМС8-08 по какой-то причине не работал встроенный генератор. Подаешь извне 32кГц - все играет, а кварц раскачать сама не может. Доча еще,
представитель современной молоди: "пап, а ты из этой микросхемы туда загрузи". Ага. В общем, на следующий день сделал я контроллер,
который подает 32кГц на вход, а на выходе записывает параметры ШИМ. По ним делает реверс нот и пауз. Короче там не все так тривиально,
у нот есть не только высота, получаемая с ДПКД, но и возможность нарастания, спада и удержания ноты как у OPL-синтезаторов. Нигде в Интернете
не нашел ПЗУ от этих УМС и схемы внутреннего управления, а свою уж как-то долго показалось реверсить.

Я к чему? К тому, что если где-то есть движок для проигрывания УМС-совместимого ПЗУ, то там довольно все серьезно, и можно его было бы использовать
в своих проектах для весьма сложных композиций с ШИМ-управлением (без ЦАП).
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 25th September 2018 - 02:09
Рейтинг@Mail.ru


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