Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проигрывание звука
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
romanvas
Есть ли у кого-нибудь идеи, как можно с помощью подсоединённого к какому-нибудь порту платы на Atmega128 динамика проиграть wav или midi файл?
Harbinger
.wav - посредством ШИМ можно.
Mt_
Аппаратный 8-битный ШИМ неплохо, но шумы все таки можно услышить. Если нужно качество, то цап.
Ljubitel
Цитата(romanvas @ Mar 13 2006, 16:52) *
Есть ли у кого-нибудь идеи, как можно с помощью подсоединённого к какому-нибудь порту платы на Atmega128 динамика проиграть wav или midi файл?


А что там пробовать ? Wav проигрывается элементарно.
http://pol-sem.narod.ru/polymuson/polymuson.htm
ivstech
Только такой ЦАП на резисторах хуже, чем ШИМ (он будет не линейным, а как попало). Качество ШИМа получается отличное, только нужно нормальный фильтр собрать.
vet
ivstech
На tiny26, пожалуй, получится; на обычном avr-овском шиме - откровенно плохое качество, частота низковата. Хороший же фильтр будет подороже ЦАП-а.
Ljubitel
Цитата(ivstech @ Mar 14 2006, 14:06) *
Только такой ЦАП на резисторах хуже, чем ШИМ (он будет не линейным, а как попало). Качество ШИМа получается отличное, только нужно нормальный фильтр собрать.


И что ?

Изначально вопрос был "КАК можно проиграть файл ?"
Я привел пример. Вы считаете я неправильно ответил ? :-))

Если бы вопрос стоял "Как С ХОРОШИМ КАЧЕСТВОМ проиграть
файл ?" - ответ был бы другим.
Harbinger
А в самом деле, требования какие? Частота дискретизации, разрядность?
ivstech
Цитата(vet @ Mar 14 2006, 17:24) *
ivstech
На tiny26, пожалуй, получится; на обычном avr-овском шиме - откровенно плохое качество, частота низковата. Хороший же фильтр будет подороже ЦАП-а.

16КГц 8бит ATMEGA, фильтр: 1xLM324, резисторы, конденсаторы. А на Tiny26 чем отличается ШИМ?
To Lyubitel: прошу прощения. Просто я прежде чем использовать ШИМ тоже сначала собрал на резисторах, качество не устроило совершенно.
beer_warrior
Цитата
А на Tiny26 чем отличается ШИМ?

На некоторых Tiny стоит умножитель тактовой и на вход ШИМАа подается
мегагерц 25, а не тактовая, что значительно улучшает разрешение по частоте.
vet
Цитата(ivstech @ Mar 15 2006, 10:35) *
16КГц 8бит ATMEGA, фильтр: 1xLM324, резисторы, конденсаторы. А на Tiny26 чем отличается ШИМ?

В tiny26 таймер1 может тактироваться от встроенного PLL 64 МГц, что даёт частоту 8-битного ШИМ до 250 кГц.
plan
Цитата(beer_warrior @ Mar 15 2006, 13:05) *
На некоторых Tiny стоит умножитель тактовой и на вход ШИМАа подается
мегагерц 25, а не тактовая, что значительно улучшает разрешение по частоте.


Увеличение частоты тактовой на шиме позволит увеличить частоту дискретизации и даст возможность более эффективно подавить фильтром частоту шима,но динамический диапазон останеться тем же 8-10 бит.Может быть имеет смысл решить эту проблему установкой цапа (14-16 бит) с spi интерфейсом и тогда и частоту дискретизации можно задрать повыше и динамический диапазон будет достаточный
Stanislav
Дело в том, что 16-битный ШИМ "ЦАП" можно сделать и на АВР. Эта тема уже поднималась, и неоднократно. Если не нашли ничего, вот сюда посмотрите, это моё решение - 16-битный ШИМ для вывода звука на одном 8-битном таймере.
Kovrov
Я так понял реализация PWM1, PWM2 - под Т0 - это один канал аппаратный под ОС0, другой канал программный?
ну и каковы результаты? в смысле качества-разборчивости?
Evgeny_CD
Вот тут все очень подробно расписано
http://focus.ti.com/lit/an/slaa131/slaa131.pdf
Stanislav
Цитата(Kovrov @ Mar 16 2006, 11:58) *
Я так понял реализация PWM1, PWM2 - под Т0 - это один канал аппаратный под ОС0, другой канал программный?
ну и каковы результаты? в смысле качества-разборчивости?
Нет, оба канала аппаратные: один формируется с помощью регистра OCRxA, другой - OCRxB (выводы OCxA и OCxB соответственно). Режим - Fast PWM. На каждом выходе получается независимая ШИМ (16-битное число должно быть беззнаковым, ессно). Далее напряжения ШИМ складываются с коэффициентами 255/256 и 1/256 соответственно, формируя 16-битную выходную величину.
Всё это использовалось для вывода 8 кГц речи, с простой интерполяцией до 32-х кГц, субьективно качество практически не отличимо от "телефонных" 16-бит сигма-дельта ЦАП.
Подняв частоту ШИМ, можно ожидать не очень плохих результатов и при воспроизведении аудио (искажения, однако, такому способу вывода звука присущи принципиально). Необходимо только оценить выч. затраты на интерполяцию.
Существенного уменьшения искажений можно попытаться добиться применением Phase-Correct PWM. Однако, это снизит частоту и увеличит вычислительную нагрузку на процессор.
Stanislav
Цитата(Evgeny_CD @ Mar 16 2006, 13:14) *
Вот тут все очень подробно расписано
http://focus.ti.com/lit/an/slaa131/slaa131.pdf
Да, весьма похоже. Но 16 бит точности в такой схеме не получится...
Kovrov
Цитата(Stanislav @ Mar 16 2006, 19:28) *
]Нет, оба канала аппаратные: один формируется с помощью регистра OCRxA, другой - OCRxB (выводы OCxA и OCxB соответственно).

че то я в не понятках....
Разве у мег 8 битные таймера T0, T2 не один выход модулятора (oc0, oc2)?
или я ошибаюсь (просто сам не помню)...
или здесь задействаван Т1 с ocr1a,b а резолюция урезана до 8 бит?
Stanislav
Цитата(Kovrov @ Mar 16 2006, 20:27) *
Цитата(Stanislav @ Mar 16 2006, 19:28) *

]Нет, оба канала аппаратные: один формируется с помощью регистра OCRxA, другой - OCRxB (выводы OCxA и OCxB соответственно).

че то я в не понятках....
Разве у мег 8 битные таймера T0, T2 не один выход модулятора (oc0, oc2)?
или я ошибаюсь (просто сам не помню)...
или здесь задействаван Т1 с ocr1a,b а резолюция урезана до 8 бит?
Ну да, конечно. Напр. ATmega48/88/168. В общем, даташиты почитайте.
Честно говоря, я и не помню точно, какой именно таймер использовал - дело давно уже было. Но с T/C 0 должно всё работать...
Kovrov
понял! спасибо
Kovrov
Хорошо, если подитожить то хорошего "не стыдного" звука получить скоре всего не получиться
тут и объем "мелодии" тоже не последняя роль
Наверное все помнят, раньше были синклеровские звук синтезаторы типа AY8910 с которыми давали неплохие результаты... и объем мелодий был более чем приемлимый...
а что сейчас есть в этой области?
plan
Цитата(Kovrov @ Mar 17 2006, 10:47) *
Наверное все помнят, раньше были синклеровские звук синтезаторы типа AY8910 с которыми давали неплохие результаты... и объем мелодий был более чем приемлимый...

Насколько я помню в AY8910 было 3 выходных 4-битных цапа через которые собственно и выходил аудио поток.А сама мелодия синтезировалась с помошью чм модуляции.Так что качества звука там не было.Моё мнение(возможно ошибочное smile.gif):поставить внешний цап ,например по spi и в придачу какой нибуть атмелевский датафлеш для хранения аудио и всё будет ок.
vet
нет, звук был качественный. Что до 4-битных цапов, то они задавали амплитуду генераторов синусоид на всех 3 каналах. Использовать AY, как три 4-битных цапа - это было из разряда программистских ухищрений, применявшихся для проигрывания сэмплированного звукового потока - это звучало действительно плохо, но это нештатное использование AY.


PS: возможно, заинтересует - тут недавно пробегало сообщение про отечественный м/к с архитектурой 8051 и встроенным аналогом AY.
bodja74
Могу предложить обратить внимание на TDA8444,восьмиканальный 6-разрядный ЦАП c
с управлением по I2C,Тоже нужно поизвращатся для многоразрядного звука smile.gif
Но для голосовых сообщений более чем... smile.gif
Kovrov
Цитата(plan @ Mar 17 2006, 10:17) *
Насколько я помню в AY8910 было 3 выходных 4-битных цапа через которые собственно и выходил аудио поток.А сама мелодия синтезировалась с помошью чм модуляции.Так что качества звука там не было.

я так понимаю вы просто не слушали ;-)
булькание AY - было шедевром в те времена да и соотношение объем мелодии/качество было окейным

насчет 8 бит цапа и SPI - я думаю мертвому припарка
8 бит оно и в африке 8 бит -помоему самое экономичное что предложил Stanislav для голоса конечно подойдет..
Evgeny_CD
Вместо споров о разрядности - проще взять замечательную софтику GoldWave
http://www.goldwave.com/
и проверить на слух.

Клизьмы водятся в изобилии
http://astalavista.box.sk/cgi-bin/robot?sr...submit=+search+
plan
Цитата(Kovrov @ Mar 17 2006, 13:52) *
Цитата(plan @ Mar 17 2006, 10:17) *

Насколько я помню в AY8910 было 3 выходных 4-битных цапа через которые собственно и выходил аудио поток.А сама мелодия синтезировалась с помошью чм модуляции.Так что качества звука там не было.

я так понимаю вы просто не слушали ;-)
булькание AY - было шедевром в те времена да и соотношение объем мелодии/качество было окейным

Прошу прощения,но наверно Вы не слушали. Во первых AY я не предлагал использовать для вывода голоса. Во вторых - здесь насколько я понимаю идет обсуждение воспроизведения именно звуковых семплов.


Цитата(Kovrov @ Mar 17 2006, 13:52) *
насчет 8 бит цапа и SPI - я думаю мертвому припарка
8 бит оно и в африке 8 бит .

А что в африке нет 14-16 битных цапов smile.gif
Kovrov
Цитата(plan @ Mar 17 2006, 13:10) *
Прошу прощения,но наверно Вы не слушали. Во первых AY я не предлагал использовать для вывода голоса.

Я предлагал использовать AY для голоса??? blush.gif
вот новость - по крайне мере для меня!!!

насчет разрядности и дискретности тут тоже все просто..
берем wav 48000 и 32 бита - и суем в звуковой редактор
и потом делаем все возможные даунсемплинги, понижение разрядности
и слухаем...
устравивает - все ок
не устраивает - не все ок!!!
ну и скидку на то что в результате будет ещё хуже...
defunct
Кстати о птицах, кто знает какая вычислительная сложность у MP3 декодера на 1 kbps? Может быть что-то в районе 2-4kbps (а это уже неплохо для воспроизведения речи) на меге реально сделать?
plan
Цитата(Kovrov @ Mar 17 2006, 14:49) *
Я предлагал использовать AY для голоса??? blush.gif
вот новость - по крайне мере для меня!!!

Я не заявлял что предложили именно Вы.
Читайте сообщения плиз повнимательнее.
beer_warrior
Цитата
Кстати о птицах, кто знает какая вычислительная сложность у MP3 декодера на 1 kbps? Может быть что-то в районе 2-4kbps (а это уже неплохо для воспроизведения речи) на меге реально сделать?

Я думаю со скоростью проблем не будет на 16-20МГц.
А вот низкая разрядность, и маленькие объемы памяти это действительно проблема.
ИМХО есть два приемлемых пути SPI ЦАП и ADPCM.

Кстати, есть еще прекрасные микросхемы АС97 кодеков - там и скорость и разрядность и микрофонные входы и переключение каналов и приличные ЦАП/АЦП
Stanislav
Цитата(defunct @ Mar 17 2006, 14:06) *
Кстати о птицах, кто знает какая вычислительная сложность у MP3 декодера на 1 kbps? Может быть что-то в районе 2-4kbps (а это уже неплохо для воспроизведения речи) на меге реально сделать?
Дело в том, что метод сжатия MP3 неприменим для получения боле-менее качественной речи с потоком 2-4 кбит/с. Для этого существуют более подходящие алгоритмы, которые реализовать на меге никак не можно. Для компрессии/декомпрессии речи телефонного качества с таким битрейтом вообще-то нужен DSP. Можно ещё попробовать на ARMе забодяжить - с MELPом или G723.1 он, по-моему, должен справиться...
Evgeny_CD
Еще есть старый добрый ADPCM. 32 кбит/сек - вполне нормально. В 20 мгц AVR с умножителем вроде должен влезть.
defunct
Цитата(Stanislav @ Mar 17 2006, 13:57) *
Для компрессии/декомпрессии речи телефонного качества с таким битрейтом вообще-то нужен DSP.

Сложно с этим несогласиться. Однако для воспроизведения требуется только декомпрессия, у которой вычислительная сложность поидее на порядок если не на несколько порядков меньше чем у компрессии (насколько я слышал).
Kovrov
да что вы все голос - голос! ADPCM в апноте есть
давайте подумаем что можно придумать для музычки?

Цитата(vet @ Mar 17 2006, 10:51) *
тут недавно пробегало сообщение про отечественный м/к с архитектурой 8051 и встроенным аналогом AY.


да, жалко что AY уже не найти...
а что можно предложить в вопросе о воспроизведения MIDI файлов?
благо то же объем у них не большой?
есть дешевые решения в сторону аппаратных миди синтезаторов?
beer_warrior
Цитата
днако для воспроизведения требуется только декомпрессия, у которой вычислительная сложность поидее на порядок если не на несколько порядков меньше чем у компрессии (насколько я слышал).

Дело в том что там сплошная матричная математика, постоянное сложение перемножение массивов. У DSP большая память с быстрым доступом, распараллеливание и все эти операции с накоплением.
В меге где это все держать? Во внешнем ОЗУ? перемножать 16-24 разрядные матрицы как? Все операции придеться эмулировать.
Ljubitel
Если уж речь зашла о качестве, может тогда
поставить VLSI и не мучаться ?
Там и MP3 и Midi и Wav и WMA и ADPCM...
"Что еще нужно чтоб встретить старость ?" (с) ;-)

http://www.vlsi.fi/vs1003/vs1003.shtml
beer_warrior
Цитата
Если уж речь зашла о качестве, может тогда
поставить VLSI и не мучаться ?

Жирновато будет, для тривиальных задач.
ADPCM и без всякой заказухи можно прекрасно отыграть.
Ljubitel
Цитата(beer_warrior @ Mar 18 2006, 03:32) *
Цитата
Если уж речь зашла о качестве, может тогда
поставить VLSI и не мучаться ?

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

Опять двадцать пять... "Вам шашечки или ехать ?" (с)
То качество подавай, то задачи "тривиальные".
Давайте тогда уж определите критерий "тривиальности"
задачи.
А то меня вот и ЦАП на резисторах устраивает.
Пробовал ШИМ... резисторы лучше ;-) Чисто IMHO.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.