Войти
ПрограммированиеФорумЗвук

XAudio2. Щелчки при зацикливании звука.

#0
21:27, 21 ноя. 2008

В своём проекте использую XAudio2 и столкнулся с такой проблемой:
При начале воспроизведения каких-либо звуков отчётливо слышны щелчки. Также щелчки появляются при попытки зацикливания воспроизведения, когда после последнего буфера звука сабмитится его первый буфер. Самое интересное, что щелчки не возникают при переходе между буферами, идущими друг за другом, а только разорванными.
Если начать сводить границы данных (читать файл не с начала и не до конца), то при некоторых значениях для конкретно взятого файла щелчки исчезают. Думал, что они возникают из-за несовпадения амплитуд, однако щелчки появляются и при зацикливании файла с абсолютной тишиной.
Из-за чего эти щелчки берутся и как их устранить?


#1
17:33, 22 ноя. 2008

Gardster
Найди что-нибудь вместо XAudio

#2
18:15, 22 ноя. 2008

slatazan
На данном этапе я уже не могу менять API, поэтому необходимо найти решение для данного.

#3
19:21, 22 ноя. 2008

Gardster
Есть такая фигня: в файл звука, прямо в трек, пишется инфа "копирайт", ну типа на какой студии была создана запись (имеется ввиду редактор, а не студия записи). Она же нередко грузится вместе с волной в буффер. Именно этот кусок и вызывает щелчки! Мы, например, написали спец. утилитку, с помощью которой обрабатываем звуковые файлы, для устранения этих "копирайт-щелчков".

Короче, удачи ;)

#4
20:18, 22 ноя. 2008

X-Ray Spider
Не похоже чтобы щёлкала информация копирайтов, так как если найти те значения при которых нет щелчков и после ещё сдвинуть границы, то щелчки опять появятся. Также если зациклить данный файл в программе создания аудиобанков - никаких щелчков не слышно.

#5
20:26, 22 ноя. 2008

а если тупо проиграть файл в каком-либо плеере, позволяющем проигрывать с зацикливанием?

#6
20:28, 22 ноя. 2008

cannon
В обычном плеере всё нормально, щелчков нет.

#7
20:37, 22 ноя. 2008

Gardster
Я не уверен, но м.б. в XAudio существует такое понятие, как выравнивание буффера по размеру. Скажем, если звук имеет размер 200 байт, то под него создается буффер в 256 байт, т.е. выровненный по общим правилам кратности?! И тогда именно "пустое" место начинает щелкать? Короче, всё... Я не в теме :(

#8
20:40, 22 ноя. 2008

X-Ray Spider
Пробовал создавать буфер степени двойки. На стыках всёравно слышны щелчки(((
P.S. спасибо за предположения.

#9
1:00, 23 ноя. 2008

Gardster
На неинтегрированном звуке есть щелчки?

#10
20:49, 26 ноя. 2008

outcast
Увы сейчас нет возможности проверить звук на неинтегрированных карточках. Однако на нескольких разных интегрированных щелчки есть

Во время отладки в выходные оказалось, что щелчки появляются только при воспроизведении звуков запакованных в wavebank штатной утилитой. Сейчас переписал всё на голый wav - щелчки исчезли. Причём исчезли и на тех файлах, которые паковал в банк. Однако совсем отказываться от банков не хочется. В прилагаемом SDK почти нет информации об их устройстве. Есть ли в природе описание что происходит с файлом при упаковке в банк?

#11
1:46, 27 ноя. 2008

Gardster
Когда-то сталкивался со щелчками звука - но при изменении частоты под DSound (на интегрированных картах)
Но XAudio по ощущениям более продуманная и ИМХО безглючная система, и щелчков не наблюдается.

Может в банк они с компрессией ADPCM пакуются и в этом дело?

P.S. Если не секрет, для чего банки используете? :)

#12
9:09, 27 ноя. 2008

outcast
Может быть и в нём. Последнее время мне стало казаться, что я неправильно читаю звук из банка, а з-за компрессии звук идёт не парой байт а маленькими буферами, которые щёлкают, когда я попадаю на их середину. Как вариант, в waveformatex что-то криво ставлю. Хотя сейчас всё чтение взято из примеров SDK.
P.S. В банках хочу хранить звуки мотора на разных оборотах. По диздоку звуки будут записываться каждую 1000RMP. Чтобы небыло мусорки из файлов, хотел все упаковать в один.

ПрограммированиеФорумЗвук

Тема в архиве.