Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2015.12.20;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.67 MB
Время: 0.009 c
2-1403529768
Sakipiel
2014-06-23 17:22
2015.12.20
Все события на одной процедуре


2-1403717600
Sakipiel
2014-06-25 21:33
2015.12.20
как добавить элемент в наследника TCollection


15-1423150223
Дмитрий С
2015-02-05 18:30
2015.12.20
Midi 2 Beep-код


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


2-1403765627
Вася
2014-06-26 10:53
2015.12.20
Раскраска строк DBGrid относительно значения поля текущей строки





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский