Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: vs1011 щелчки при переключении треков
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Григорий2000
VS1011E При прерывании трека в произвольном месте и начале воспроизведения другого файла даже при осуществлении программного сброса появляется щелчек(иногда) думаю что это остаток от предыдущего файла в выходном буфере. Как рекомендует ANotes после останова загружаю 2048 нулей, затем softreset. Результат такой-же. Кто нибудь сталкивался или это я что-то не так делаю?
muravei
Цитата(Григорий2000 @ May 15 2009, 14:42) *
и начале воспроизведения другого файла даже при осуществлении программного сброса появляется щелчек(иногда) думаю

я думаю, что прблема чисто аналоговая, что-нибудь с перезарядом разделительных емкостей в усилителе. Я бы попробовал сделать плавный переход от последней "цифры" к первой нового трека.
Григорий2000
Дело происходит так: после остановки воспроизведения в произвольном месте фрагмента и остановки все нормально, затем перегружаю vs1011 как написано в рекомендациякх по применению изаливаю туда нули. После паузы любой длительности стартую другой файл или этот-же файл и слышу вначале "щелчек" как-будто этот отрезок остался от прошлого фрагмента в буфере но не вышел из него( FIFO не выплюнул его)/
Пока обошел проблему плавным снижением громкости в ноль перед остановом одного фрагмента, и начинаю поднимать после старта следующего, при этом щелчек происходит в районе громкости 0 и его неслышно.
muravei
Цитата(Григорий2000 @ May 17 2009, 00:39) *
слышу вначале "щелчек" как-будто этот отрезок остался от прошлого фрагмента в буфере но не вышел из него( FIFO не выплюнул его)/
Пока обошел проблему плавным снижением громкости в ноль перед остановом одного фрагмента, и начинаю поднимать после старта следующего, при этом щелчек происходит в районе громкости 0 и его неслышно.

Думаю, вы слышите переходной процесс , при переходе от нуля к первой "цифре" нового файла.
И если, просто снизите громкость в начале , щелчек тоже заглушите.
Григорий2000
Щелчек - это и есть переходной процесс)), которого не должно быть. Четко прослеживается зависимость от того в каком месте прерываемого файла произошел останов. Если это происходит в "тихой" части файла, тогда щелчка или нет, или он очень малозаметен(нет цифрового осцилла не могу посмотреть). В Случае останова на "громком" участке в большинстве случаев(не всегда) слышны как раз переходные процессы. Но нигде не видел упоминания о таком эффекте... либо о том как можно очистить выходной буфер этого декодера. Есть фраза о загрузке нулями в размере 2048 байт после остановки пакетами по 32байта по запросу от декодера и перед воспроизведением следующего файла для устранения переходных процессов, но если я все правильно делаю - это не помогает...
Кстат первая "цифра" следующего файла должна быть равна нулю( всегда пытаюсь так делать при подготовке файлов) как собственно и последняя. для нормального воспроизведения "по кругу".
muravei
Цитата(Григорий2000 @ May 17 2009, 17:11) *
Есть фраза о загрузке нулями в размере 2048 байт после остановки пакетами по 32байта по запросу от декодера и перед воспроизведением следующего файла для устранения переходных процессов, но если я все правильно делаю - это не помогает...
Кстат первая "цифра" следующего файла должна быть равна нулю

Так может попробовать "плавный переход" в размере 2048 байт от последнего значения к первому?
А какому нулю , цифровому или аналоговому? Я думаю , что "ноль" должен быть равен половине питания.
Григорий2000
самое интересное что после прерывания трека и загрузке 2048 нулей во входной буфер, я так понял что выходной буфер при этом не очищается, а очищается только входной(это mp3),
так как я вижу в ходе эксперимента может пройти сколь угодно много времени после окончания воспроизведения старого трека до начала новго трека.
И в начале этого воспроизведения выплюнется именно этот щелчек( ряд отсчетов в выходном буфере оставшийся от предыдущего трека). используя также softreset ничего изменить неудалось...
Конечно ведя речь о нуле имется ввиду не абсолютное значение выходного ЦАП.
sonycman
Кстати, не подскажете, уважаемые.
Вот только думаю заняться воспроизведением музыки с помощью VS1011e.

Файл .mp3 можно с какого места "кидать" в декодер - прямо с самого начала (вместе с заголовком, тэгами и т.д.), или заголовок необходимо откинуть и передавать только сжатый аудио поток?

Ещё вот интересно, кто-нить на АРМе типа STM32 напрямую, безо всяких декодеров, воспроизводил mp3?
Стоит ли заморачиваться с софтом, по силам ли ему такое, если учесть, что кроме самого воспроизведения он будет выполнять роль системного контроллера с доп. задачами?
sonycman
Цитата(Григорий2000 @ May 15 2009, 14:42) *
VS1011E При прерывании трека в произвольном месте и начале воспроизведения другого файла даже при осуществлении программного сброса появляется щелчек(иногда) думаю что это остаток от предыдущего файла в выходном буфере. Как рекомендует ANotes после останова загружаю 2048 нулей, затем softreset. Результат такой-же. Кто нибудь сталкивался или это я что-то не так делаю?

Такая же фигня получается.

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

Аналогично, выдача 2048 или любого другого кол-ва нулей перед загрузкой нового трека не помогает.
Однако нашёл случайно выход, не затрагивая управление громкостью - вместо нулей передаю декодеру 2 килобайта памяти программ (флеша) biggrin.gif
Пытаясь декодировать код контроллера, декодер благополучно очищает буфера ЦАПов laughing.gif

Ну а вообще, конечно, финнам за такой ляп по голове надавать нужно.
Попробую с ними связаться, может, подскажут что-то более "прямое"...
sonycman
Хе, сделал проще - не стал вообще закачивать нули перед окончанием трека.
Просто прекращаю передавать данные, и жду сотню-другую миллисекунд.
Вуаля - буфер ЦАПов очищается и они автоматически глушатся.

Получается, что при передаче 2048 нулей DSP останавливает ЦАПы до того, как они успевают вывести весь выходной буфер.
И очищает входной.

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

Вуаля - всё чистенько, при воспроизведении след. файла никаких хрипов и старых остатков yeah.gif
И не надо никаких нулевых байтов smile.gif
ILYAUL
Цитата(sonycman @ Dec 12 2009, 16:41) *
Вуаля - всё чистенько, при воспроизведении след. файла никаких хрипов и старых остатков yeah.gif
И не надо никаких нулевых байтов smile.gif

Т.е сегодня воевать финнов не будем smile3009.gif maniac.gif ?
sonycman
Цитата(ILYAUL @ Dec 12 2009, 18:11) *
Т.е сегодня воевать финнов не будем smile3009.gif maniac.gif ?

Письмо им я всё равно написал.
Интересно, что подскажут.

Жаль, нет на их сайте форума, только имэйл для помощи...

Имхо, косяк всё же за ними.
Столько лет производят свои декодеры, а до сих пор нет очистки буфера ЦАПов при софтовом сбросе!
Стыд sad.gif
sonycman
Вот что мне ответили на мой вопрос тех. саппорт VLSI:
>I think this is samples of the last track, which remains in audio DAC
>buffer untouched even after 2048 zeros and software reset.
>

Software reset clears the audio buffer, and if there is no data to be
decoded, zero samples are inserted. Software reset clears the whole
memory, so the windowing history buffer should also be cleared.


Говорят, что вся память очищается при софтовом сбросе.

Однако фактически это не так.

Интересно, такая трабла только с 1011 чипом, а другие (1033, 1053) работают ОК?
011119xx
У 1033с такой проблемы пока не заметил
sonycman
Цитата(011119xx @ Dec 15 2009, 20:02) *
У 1033с такой проблемы пока не заметил

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

У меня тоже есть 1033 - лежит в коробке в корпусе LQFP 48.
А на макетку впаял 1011 в SOIC28 - легче паять.
На плату, возможно, тоже поставлю 1033.

Но выход нашёл простой - вообще не шлю нули, просто пауза 50-100 миллисекунд и софт сброс.
Никаких шумов smile.gif

Сейчас спросил у финнов, что за дела такие и как это понимать.
Упорствуют, что память всенепременно очищается при сбросе... smile.gif

Кстати, что такое "history window buffer"?
МП41
Цитата(sonycman @ Dec 14 2009, 13:37) *
so the windowing history buffer should also be cleared

Может не зря они слово "should" применили, означающее "должно быть" в смысле "скорее всего".
011119xx
В данный момент использую VS1033C. Хотел спросить у тех кто имеет больше опыта работы с данной микрой. Какое значение нужно записывать в регистр SCI_CLOCKF при использовании кварца на 24,576МГц? Сейчас я пишу в него 0х8000. В принципе работает, но есть определенные недостатки: при регулировке громкости иногда прослушиваются щелчки, при воспроизведении мп3-файлов присутствует едва заметный шум как-будто усилитель фонит, но не всегда.
sonycman
Цитата(МП41 @ Dec 29 2009, 15:24) *
Может не зря они слово "should" применили, означающее "должно быть" в смысле "скорее всего".

Вот вот, что-то они темнят.
Вот последний ответ, когда они протестировали свою плату моим треком:

Цитата
I tested the vs1011e setup with our parallel-port adapter.
./mp3io ck2.cmd newmode.cmd koe1.mp3 z koe1.mp3 z newmodesoftreset.cmd
newmode.cmd z ~/Delerium\ -\ Angelicus\ \(Andy\ Moor\ Remix\).mp3

What it does:
CLOCKF = 0x9800 (clock-double 12.288MHz)
MODE = 0x0c00
send 120000 bytes from your file
send 2050 zeros -> this fills the partial mp3 frame and causes the
windowing history to have improper data
send 120000 bytes from your file -> causes a short snap to the sound at
start when the incorrect history data goes to output
send 2050 zeros
MODE = 0x0c04 (software reset)
MODE = 0x0c00 (new+shared mode)
send your file -> no snap


Не понятно, признают они, что проблема существует, или нет?

Цитата(011119xx @ Jan 8 2010, 11:38) *
В данный момент использую VS1033C. Хотел спросить у тех кто имеет больше опыта работы с данной микрой. Какое значение нужно записывать в регистр SCI_CLOCKF при использовании кварца на 24,576МГц? Сейчас я пишу в него 0х8000. В принципе работает, но есть определенные недостатки: при регулировке громкости иногда прослушиваются щелчки, при воспроизведении мп3-файлов присутствует едва заметный шум как-будто усилитель фонит, но не всегда.

Ну, я бы не сказал, что у меня много опыта, но попробую ответить, руководствуясь даташитом.
У вас кварц в 24.576 МГц, то есть вы устанавливаете SM CLK RANGE, входная частота делится на 2, и получается 12.288.

Записываемое вами значение 0х8000 означает XTALIЧ3.0 -> внутренняя частота будет равна 12.288 * 3 = 36.864 МГц.
Всё правильно.

Имхо, правильное значение для регистра SCI CLOCKF будет:
1. SC_MULT = 3 (12.288 * 3 = 36.864 - номинальная рабочая частота).
2. SC_ADD = 1 (3 + 1 = 4 * 12.288 = 49.152 - макс. частота при декодировании WMA).
3. SC_FREQ = 0.

В итоге получаем SCI CLOCKF = 0х9000.

Что касается шума, то шумят многие mp3 треки, плюс, естественно, внутренние шумы декодера.
Его ЦАП весьма далёк от совершенства smile.gif

Щелчки при регулировке громкости тоже норма - в 1033 отсутствует схема zero-cross detection for smooth volume change.
Есть только в 1053 smile.gif

ЗЫ: сейчас развожу плату для 1033 + STM32 + SI4700, может, кто нибудь что то посоветует?
Всё таки цифра + аналог, да ещё и радиоприёмник cranky.gif
semonoff
Была такая проблема - щелчки в звутовом тракте воспроизведения при окончании воспроизведения, начале воспроизведения, переключении (окончание одного и начале другого). Если взять "сложный 3 вариант" то избавиться от щелчков удалось следующим образом: окончить звуковой файл на нулевой амплитуде начать новый файл на нулевой амплитуде. Такие же рекомендации применяю при цифровом изменении коэффициента усиления - менять коэффициент усиления можно только при прохождении сигнала через ноль.
011119xx
На частоте 8МГц на атмеге у кого-нибудь хватает быстродействия воспроизводить треки с 320кбит/с? У меня нет.
dx40
Цитата(011119xx @ Jan 17 2010, 15:15) *
На частоте 8МГц на атмеге у кого-нибудь хватает быстродействия воспроизводить треки с 320кбит/с? У меня нет.

А в чем проблема??? Т.е. откуда эти треки берутся?
ranthunt
Вопрос немного не по теме, но все же спрошу. Тоже использую vs1011. Задумка есть после нее сделать не 2 канала а побольше, наподобие выходов как у магнитолы. 2 передних, 2 задних и саб. Сейчас использую TDA7402 которая по функционалу устраивает на 100% но есть проблемы с ней. Вся система питается от 3.3 вольта а TDA от 9!!!! вольт что крайне не вписывается в схему, при этом греется почему то (микруха точно рабочая) и больно уж она шумная (после vs1011 звук чистый а после TDA с шумами).
Вопрос в том что поставить на замену TDA7402 на 3.3 вольта с выходом на 4 канала и выходом саба.
МП41
Цитата(ranthunt @ Jun 24 2012, 21:15) *
...при этом греется почему то

У неё по документации типовое потребление составляет 50мА, при напряжении 9В мощность получается большая. Так что должна греться.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.