Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.12.20;
Скачать: CL | DM;

Вниз

Midi 2 Beep-код   Найти похожие ветки 

 
Kilkennycat ©   (2015-02-11 20:17) [80]


> У аппаратного частота слишком маленькая.

вовсе нет... ты просто не чувствуешь.
сам подумай - чем обусловлено наличие аппаратного шима? неужели разработчики занизили его б частотную характеристику, к коему нет никаких предпосылок, в угоду чему либо? размышляй объективно, что разработчики мк несколько сильнее тебя и меня вместе взятых (и это так), и невозможность извлечь правильный звук, это не их косяк, а наш.
попробуй осознать шим, что это не только частота, т.е. отношение периода к единице, но и скважность и длительность, что существует множество режимов шим, которые позволяют моделировать в какой-то степени и ам и чм модуляцию, там такие звуки можно извлекать, что просто жуть. Вся фишка именно в осознании того, как это работает.
в противном случае проще потратить 3*N+1 резисторов и собрать примитивный Цап и гнать 8(16)-битный wav


 
Inovet ©   (2015-02-11 20:32) [81]

> [80] Kilkennycat ©   (11.02.15 20:17)
> 8(16)-битный wav

на 16 надо резисторы точные и остальное тоже.


 
Kilkennycat ©   (2015-02-11 20:35) [82]


> Inovet ©   (11.02.15 20:32) [81]

ну, разрядность на точность не скоро влиять начинает, если погрешность резисторов не успевает перекрываться. можно и 5%, если допустимы высокие сопротивления


 
Inovet ©   (2015-02-11 20:36) [83]

берём километр провода отрезаем кусок 0,01 м, припаеваем, потом 0,02 м, припаеваем и заканчиваем куском 655,36 м. С частотой только проблемы возникнут.


 
Inovet ©   (2015-02-11 20:38) [84]

> [82] Kilkennycat ©   (11.02.15 20:35)
> можно и 5%

Ну можно и одинаковых кусков нарезать, но с точностью 0,001%.


 
Inovet ©   (2015-02-11 21:09) [85]

Удалено модератором


 
Дмитрий С ©   (2015-02-12 13:32) [86]

Вчера удалось получить частоту ШИМ-а в 80 KHz в режиме Fast PWM, путем большого количества проб. И я почитал даташит, на удивление, понятный для меня документ.

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


 
Дмитрий С ©   (2015-02-14 21:50) [87]

Вроде получил нормальный звук, но очень тихий. Ребят, подскажите, как сделать простой усилитель на транзисторе?


 
Kilkennycat ©   (2015-02-14 23:57) [88]

ГУГЛ


 
Дмитрий С ©   (2015-02-15 13:00) [89]


> Kilkennycat ©   (14.02.15 23:57) [88]

Тоже верно, но одних знаний недостаточно, нужен и опыт еще.

В общем собрал я простой усилитель + еще воткнул между базой транзистора и землей конденсатор на 10 микрофарад - звук стал намного лучше. Я думаю придется его подбирать.

Теперь вот большой вопрос, а как две частоты соединять? Т.е. есть два сигнала, как получить из совмещенный?


 
Kilkennycat ©   (2015-02-15 13:34) [90]

гугл микшер


 
RWolf ©   (2015-02-15 18:18) [91]

что с чем мешать? в этом аппарате два шима, что ли?


 
Inovet ©   (2015-02-15 18:58) [92]

> [91] RWolf ©   (15.02.15 18:18)
> в этом аппарате два шима, что ли?

Видать, не осилил программное смешивание.


 
Дмитрий С ©   (2015-02-15 18:58) [93]


> RWolf ©   (15.02.15 18:18) [91]

Нет, шим1. Программно смешать две частоты.

Есть 8-битный звуковой синусовидный сигнал (всегда положительный) частотой 440 Гц. Функция S1(x) возвращает значение этого сигнала, где X - шаг дискретизации.
Соответственно S1(x) может принимать значения от 0 до 255.

Есть аналогичный сигнал, но частотой, к примеру, 523 Гц, его функция S2(x).

И есть 8-битный регистр OUT, куда я кладу значение сигнала (суммарного)  каждый шаг дискретизации.

С одним сигналом (одной частотой) все получилось в порядке: получается достаточного качественный звук (приемлемый для меня, с учетом усилителя и фильтра).

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

На данный момент я добился следующих показателей:
Скорость 8-битного ШИМ-а 31250 Гц. (можно увеличить за счет разрядности шима).
Частота дискретизации 7812 Гц. (можно увеличить до примерно 15 кГц).


 
Kilkennycat ©   (2015-02-15 19:07) [94]

а я бы просто взял ARM Cortex M3 и забабахал бы мп3 проигрывание. За один день.


 
Inovet ©   (2015-02-15 19:10) [95]

> [93] Дмитрий С ©   (15.02.15 18:58)
> что один сигнал будет в 4 раза тише играть, пока остальные молчат.

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


 
Inovet ©   (2015-02-15 19:14) [96]

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


 
Дмитрий С ©   (2015-02-15 19:20) [97]


> Inovet ©   (15.02.15 19:14) [96]

Т.е. складывать и делить на их количество, правильно?

Я проанализировал проект квартета, ранее упомянутого в ветке. Там похоже так и делается.


 
Inovet ©   (2015-02-15 19:24) [98]

> [97] Дмитрий С ©   (15.02.15 19:20)
> Т.е. складывать и делить на их количество, правильно?

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


 
Kilkennycat ©   (2015-02-15 19:25) [99]


> Т.е. складывать и делить на их количество, правильно?

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


 
Inovet ©   (2015-02-15 19:28) [100]

> [99] Kilkennycat ©   (15.02.15 19:25)

Да всё правильно он говорит - тише будет, должен, а не будет, так вылезет в переполнение. А ШИМ там или другой вид модуляции - дело второе.


 
Дмитрий С ©   (2015-02-16 10:54) [101]


> Kilkennycat ©   (15.02.15 19:25) [99]

Оставим пока модуляцию, для начала нужно решить что именно модулировать.

Вот графики функций, описывающих 440 Гц и 523 Гц (100 делений по Х в секунду).
Соответственно синим и зеленым.

Оранжевым - их сумма. Наглядно видно, что сумма выходит за рамки [-1; 1] и не сложно установить, что ее рамки [-2; 2]. Но канал у нас [-1; 1], и соответственно результат надо в него как-то вписать.

http://yotx.ru/#!1/2_h/sH@1v7Rgzhf23/aH/zYv9i34gh/K/t/wPhGztgABC8BwaBDra3Dg529w/2STTsxs4p4/F0i/G4dXmxu/8PhG/sgAFA8B74bOdie@vgYHf/YJ9Ew24cMB63Lk4Zjwe7@/9A@MYOGAAE74FBoIPtrYODXeg/EL6xAwYAwXvgs52L7a2Dg939g30SDbuxc3bGeNzaumQ8biF29wEH

Остается два варианта:
А) делить на 2.
Б) найти другой способ суммирования.

Твои предложения?


 
Дмитрий С ©   (2015-02-16 11:31) [102]

Среднее арифметическое мне кажется самым хорошим вариантом.
Но возникают вопросы:
А если частот будет 4 или 50 и какие то из них будут сильными, а какие то нет, + их сила будет меняться со временем, то на сколько делить?


 
Дмитрий С ©   (2015-02-16 12:57) [103]

Послушав какие бывают мелодии и придя к выводу, что слишком затяну время и результат будет так себе. Я решил пойти по пути примерно> Kilkennycat ©   (15.02.15 19:07) [94].
Припаяю что-нибудь вроде http://amperka.ru/product/df-player-mp3-module , а через ADC буду уже "ловить" звук и подсвечивать цветы своей композиции.
Осталось только с динамиком определиться :)

Всем большое спасибо за терпение и советы!


 
Kilkennycat ©   (2015-02-17 00:08) [104]


> Дмитрий С ©   (16.02.15 12:57) [103]

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


 
KSergey ©   (2015-02-17 09:22) [105]

> Дмитрий С ©   (05.02.15 18:30) 
> Кто-нибудь встречал преобразователь Midi файла (одной из его дорожек) в код из beep и sleep ?

А вот это выделенное - сразу было в вопросе?
если да - то позор мне, не заметил ключевого момента


 
brother ©   (2015-02-17 11:14) [106]

да, тк редактировать сообщения пользователю после отправки нельзя...


 
Дмитрий С ©   (2015-04-30 13:51) [107]

В общем забил я на полифонию. Сделал обычным бипом.

Получилось вот что:

http://www.youtube.com/watch?v=aV42lAC04v4


 
RWolf ©   (2015-04-30 13:58) [108]

Как-то тихо совсем, поближе микрофон переставь, что ли.
И что за неведомые проблемы с полифонией, после такого-то обсуждения?


 
Дмитрий С ©   (2015-04-30 14:33) [109]


> RWolf ©   (30.04.15 13:58) [108]

Я не добился приемлемого качества за отведенное время. По мне так 8 МГц не хватает для полифонии.


 
Inovet ©   (2015-04-30 14:51) [110]

> [109] Дмитрий С ©   (30.04.15 14:33)
> По мне так 8 МГц не хватает для полифонии.

И как только раньше на всяких 4 МГц i8086, уж не говоря про i8080, Z80 и т.п., исхитрялись делать...


 
Inovet ©   (2015-04-30 14:54) [111]

> [107] Дмитрий С ©   (30.04.15 13:51)
> Получилось вот что:

Это что ли "Катюша" в джазовой обработке?


 
RWolf ©   (2015-04-30 15:05) [112]


> [109]

В одной моей поделке на атмеге 14 Мгц три голоса играют не напрягаясь. Можно было бы и ещё добавить.


 
Дмитрий С ©   (2015-04-30 17:31) [113]


> И как только раньше на всяких 4 МГц i8086, уж не говоря
> про i8080, Z80 и т.п., исхитрялись делать...

Может там отдельный звуковой генератор какой-то был?
Предположим 8 битный звук.
Где-то в ветке читал, что желательно, чтобы PWM успел 4 раза досчитать до конца.
256 * 4 = 1024 такта. При частота дискретизации 8000Hz, получаем 8192000 такта в секунду. Четырех МГц явно не должно хватать. Хотя на 8и можно и еще поиграться. Но это потом, в свободное время.


> В одной моей поделке на атмеге 14 Мгц три голоса играют
> не напрягаясь.

Не затруднит код показать? Интересно как сделал.


 
RWolf ©   (2015-04-30 19:50) [114]


> [113]

Код закрытый, но тут все принципы уже обсудили: прерывания по таймеру с частотой 28 кГц, нота пропускается через таблицу синусов, таблицы громкостей, получается текущее значение звукового давления в канале. Повторить для всех каналов, смешать результаты, обновить управляющий регистр ШИМ.



Страницы: 1 2 3 вся ветка

Текущий архив: 2015.12.20;
Скачать: CL | DM;

Наверх




Память: 0.69 MB
Время: 0.01 c
2-1403699566
CodeDrunk
2014-06-25 16:32
2015.12.20
Проектирование БД


2-1403498172
Sakipiel
2014-06-23 08:36
2015.12.20
не отрабатывает событие дабл клик для некоторых компонентов


15-1429741804
Юрий
2015-04-23 01:30
2015.12.20
С днем рождения ! 23 апреля 2015 четверг


2-1403613872
Dennis I. Komarov
2014-06-24 16:44
2015.12.20
function Format


15-1429522423
pavelnk
2015-04-20 12:33
2015.12.20
По Андроиду