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

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

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

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

- Поищите примеры реализации полифонии, опять же для AVR и PIC ...
ViKo
Ноты имеют известные частоты. А дальше комбинируйте ноты согласно гармонии. Вот и всё. Можно найти ноты любого произведения, если очень хочется.
_pv
ноты устроены так:
Ля первой октавы - 440Гц, всё остальное получается умножением на корень двенадцатой степени из двух.
k155la3
Цитата(uriy @ Jul 9 2018, 10:59) *
. . . .Конечно хочется чтобы все это было благозвучным. . . .

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

__inline__
Как вариант - играть чип-тюны sm.gif
Гуглить 2A03, Adlib, OPL2/3. Исходников масса
kovigor
Цитата(ViKo @ Jul 9 2018, 11:50) *
Ноты имеют известные частоты. А дальше комбинируйте ноты согласно гармонии. Вот и всё. Можно найти ноты любого произведения, если очень хочется.

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

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

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

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

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

и еще:

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

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

Я к чему? К тому, что если где-то есть движок для проигрывания УМС-совместимого ПЗУ, то там довольно все серьезно, и можно его было бы использовать
в своих проектах для весьма сложных композиций с ШИМ-управлением (без ЦАП).
AVI-crak
Цитата(uriy @ Jul 9 2018, 13:59) *
Мне нужно генерить сигналы нажатия клавиш, аварийные сигналы и другие предупреждающие сигналы.

Чем проще - тем надёжнее.
Для такого однообразного события достаточно сохранённых семплов. Программно их собирать достаточно сложно, и уж точно невозможно собрать мгновенно.
А для музыки имеет смысл произвести раскопки среди форматов MID. MOD. XM. S3M. iT. Для них есть открытые проекты плееров, редакторов самой музыки и готовая музыка.
k155la3
Цитата(ViKo @ Jul 9 2018, 13:00) *
Гармония в музыке - это не синусоидальная форма сигнала, а круглые отношения частот звучащих нот, одновременно или последовательно. 2:3, 3:4... Современные ноты немного не попадают в точные отношения (нет чистых интервалов), зато все полутона отстоят друг от друга на одинаковый интервал (как писали, корень 12 степени из 2, то есть, в октаве 12 полутонов).

Это понятно sm.gif
Я в том смысле, что если музыкально-частотно-корректный аккород набрать из синусоид или прямоугольников, получим "некоторую разницу" в пользу синусоид.


ViKo
Цитата(k155la3 @ Jul 10 2018, 11:48) *
Это понятно sm.gif
Я в том смысле, что если музыкально-частотно-корректный аккород набрать из синусоид или прямоугольников, получим "некоторую разницу" в пользу синусоид.

В тембре получим разницу. Еще вопрос, что красивее звучит. rolleyes.gif По мне, прямоугольник лучше. Звонче.
k155la3
Цитата(adnega @ Jul 9 2018, 16:39) *
. . . Я к чему? К тому, что если где-то есть движок для проигрывания УМС-совместимого ПЗУ, то там довольно все серьезно, и можно его было бы использовать в своих проектах для весьма сложных композиций с ШИМ-управлением (без ЦАП).

На современных процессорах, думаю, вполне возможно реализовать софт-DDS на 2-3 канала. Возможно это уже и реализовано, надо исследовать сеть, чтобы не изобретать велосипед. (софт-релиз подобия AD9832 на звуковые частоты). Это позволит реализовать и специфическую музыкальную "сетку" частот, и ампл. модуляцию.
В первых "классических" ПК вроде Amiga, Commodore использовались отдельные чипы муз. синтезаторов.
Имеет смысл посмотреть на github - возможно есть проекты по этой теме.


kovigor
Цитата(k155la3 @ Jul 10 2018, 12:02) *
Имеет смысл посмотреть на github - возможно есть проекты по этой теме.

В PC/XT использовался программируемый таймер из МП - комплекта, без всяких спец. чипов. Несмотря на это, игры звучали очень даже неплохо. До сих пор помню мелодию из DOS'овских "Диггера" и "Принца Персии" sm.gif
Obam
Цитата(ViKo @ Jul 10 2018, 11:59) *
В тембре получим разницу. Еще вопрос, что красивее звучит. rolleyes.gif По мне, прямоугольник лучше. Звонче.

Тональный с его обертонами (х2 и х4) будет приятнее.

Цитата
В PC/XT использовался программируемый таймер из МП - комплекта, без всяких спец. чипов.

Точно wink.gif разбаловались, таимеров в контроллерах не сосчитать - "чем звук извлечь?" wink.gif
Егоров
Цитата(k155la3 @ Jul 9 2018, 12:18) *
Основа благозвучности - гармоническая форма выходного сигнала. .

Это программерские заморочки с непреодолимым желанием как можно более усложнить любую задачу..
Например, форма звука кларнета - почти идеальный меандр. Скрипка - вообще набор каких-то иголок.
---
А сама тема....Среди большого набора звонков моего мобильника нет единственно нужного - звонка. Это плохо, серьезный недостаток..
ViKo
Цитата(Obam @ Jul 10 2018, 17:24) *
Тональный с его обертонами (х2 и х4) будет приятнее.

А у прямоугольника x1, x3, x5... тоже благозвучно.
AlexandrY
Цитата(Obam @ Jul 10 2018, 17:24) *
Тональный с его обертонами (х2 и х4) будет приятнее.

Это диссонансы, звучит отвратительно.
Сами послушайте - http://www.wolframalpha.com/input/?i=play+...+Hz+square+wave

Цитата(ViKo @ Jul 11 2018, 12:12) *
А у прямоугольника x1, x3, x5... тоже благозвучно.

Звучит как дешевая пищалка - http://www.wolframalpha.com/input/?i=play+...+Hz+square+wave

Треугольник лучше -
http://www.wolframalpha.com/input/?i=play+...z+triangle+wave

Забавно что от синусоиды я на слух не отличаю
http://www.wolframalpha.com/input/?i=play+...e+tone+640*5+Hz

x1 + x5 тоже звучат не очень - http://www.wolframalpha.com/input/?i=play+...n(640*5*2*pi*t)
ViKo
Цитата(AlexandrY @ Jul 11 2018, 12:32) *
Забавно что от синусоиды я на слух не отличаю

Так там гармоники от этих треугольников слишком высокочастотные. И вообще, ноты, отстоящие на октаву-другую- сливаются для слушателя в один тон.
Чтобы звук стал "очень", нужно огибающую менять, как в инструментах и как раньше вы показывали.
Ga_ry
Стоит поискать конвертер midi файлов в нужный формат или самому написать.
Где-то видел ссылку но не помню где.
Направление где-то в эту сторону
https://sparks.gogo.co.nz/midi_tone.html
AlexandrY
Цитата(Ga_ry @ Jul 11 2018, 13:11) *
Стоит поискать конвертер midi файлов в нужный формат или самому написать.
Где-то видел ссылку но не помню где.
Направление где-то в эту сторону
https://sparks.gogo.co.nz/midi_tone.html

Нашел сервис для конвертации аудизаписей в ноты - https://chordify.net
Оказывается есть уже такие.
Но хитро сделали, пока не дал денег послушать midi не дают.

Obam
Цитата(AlexandrY @ Jul 11 2018, 12:32) *
Это диссонансы, звучит отвратительно.
Сами послушайте - http://www.wolframalpha.com/input/?i=play+...+Hz+square+wave

Эт чой-та тона из трёх последовательных октав диссонансами вдруг стали?
Ну и примерчик не релевантный: "square wave" не в кассу, я речь о тональном сигнаме вёл.
Ga_ry
Вот статья на Коте конвертора midi - avr
https://radiokot.ru/circuit/digital/game/51/
Бесплатных ресурсов по midi файлам очень много.
Единственное что, надо найти какой-то миди редактор чтобы выделить нужную мелодию (дорожку), то есть отделить саму мелодию от баса, ударных и прочего аккомпанемента и обрезать ее до нужных размеров.
Простых и бесплатных миди редакторов тоже хватает, ведь тут особо ничего такого не требуется.
А конвертация аудио в миди, это по-моему немного не то что нужно топикстартеру.
k155la3
Цитата(Егоров @ Jul 10 2018, 23:44) *
(1) Это программерские заморочки с непреодолимым желанием как можно более усложнить любую задачу..
(2) А сама тема....Среди большого набора звонков моего мобильника нет единственно нужного - звонка. Это плохо, серьезный недостаток..

(1) Ну почему "заморочки". Подтверждение нажатия клавиатуры, например, очень удобная весч. Если давить кнопку раз в день - то не принципиально.
А если "тарабанить" постоянно - то тут уже лучше "благозвучно" sm.gif На прошлой неделе мучил лаб. прибор, уж больно писклявый, хотя и USA. Потребовали закрыть дверь.
Это как реклама на ТВ: есть талантливо сделанные ролики, которые не раздражают, сколько не смотри (редчайший, конечно, случай),
а есть и те, которые хочется "прибить" с полуноты и с первого раза.
sm.gif MOUSE_Laptops sm.gif
(2) Аналогично. Люблю винтаж.
ViKo
Для сигнализации нажатия на кнопку достаточно одиночного писка. Практически, короткого щелчка. Все остальное напрягает, и будет отключено пользователем. Ориентируйтесь на телефоны.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.