Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
1

Быстрое изменение частоты дискретизации имеющегося звука онлайн

05.05.2015, 20:40. Показов 1801. Ответов 8
Метки нет (Все метки)

Добрый день.
У меня задача быстрого изменения частоты дискретизации имеющегося звука он-лайн по определенному коэффициенту, которые постоянно и и быстро меняется.
Эту операцию проделываю арифметически обрабатывая байты звукового файла, не используя встроенные функции directsound. Для обработки использую разбиение звукового файла на буферы размером 5000 выборок (звук стерео, изначальная частота дискретизации 44100, 16 бит), или 20 000 байт (5000*2*2), блокирую данный кусок, беру нужные байты из звукового буфера, обрабатываю с нужным коэффициентом и разблокирую, и так по кругу (кольцевой буфер).
По расчетам, это количество выборок проигрывается примерно за 0,113 сек. (5000/44100). Но для моей задачи этого недостаточно, нужно менять звук быстрее, хотя бы по 3000 выборок за цикл. Но при установке такого размера буфера, Windows как будто не успевает его обработать, и начинает слышаться шипение.

Кто- нибудь сталкивался с подобной задачей? Кто как решал?

Добавлено через 2 часа 24 минуты
Ни у кого нет вариантов?
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2015, 20:40
Ответы с готовыми решениями:

Изменение частоты дискретизации wav
Здравствуйте. Имею wav файл, функцией = audioread(filename) считываю его. Вопрос, как можно...

Увеличение частоты дискретизации
Есть фильтр, нужно в исходную последовательность вставить нули и передать в фильтр. Подскажите,...

Порядок фильтра от частоты дискретизации
При сохранении всех требований к АЧХ синтезируемого ФНЧ (границы полос пропуска- ния и...

Вывод по изменению частоты дискретизации
Доброе утро, уважаемые форумчане! Возникла у меня такая проблема. Задан сигнал, представленный на...

8
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
05.05.2015, 22:55 2
В чём суть обработки?
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
06.05.2015, 09:54  [ТС] 3
Суть обработки в изменении скорости проигрывания по движению мышкой трэк-бара
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
06.05.2015, 10:20 4
Т. е. частота дискретизации не меняется, ты просто сами данные растягиваешь или сжимаешь? А размер буфера меняется?
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
06.05.2015, 11:35  [ТС] 5
Да. Размер выходящего буфера не меняется, просто я беру больше или меньше байтов из звукового файла.
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
06.05.2015, 12:45 6
Так проблема с самим буфером или слишком долго пересчёт идёт? Время замерял?
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
07.05.2015, 12:26  [ТС] 7
Проблема я так поняла с размером буфера. Даже если загружать в него просто данные из звукового файла без пересчета, то слышно шипение.
0
6992 / 6030 / 2738
Регистрация: 14.04.2014
Сообщений: 25,792
07.05.2015, 15:19 8
Воспроизводишь через waveOutWrite()?
0
0 / 0 / 0
Регистрация: 13.10.2009
Сообщений: 62
07.05.2015, 16:04  [ТС] 9
нет, через функцию директ саунд. Создаю буфер нужного размера, загружаю в него данные из файла. Запускаю проигрывание Play(0, 0, DSBPLAY_LOOPING). Затем по достижению события - проигрывание половины заданного буфера - подгружаю новые данные в первую половину, в то время как проигрываю вторую половину
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.05.2015, 16:04

Необходима реализация изменения частоты дискретизации на С++
Мне очень нужна помощь в области изменения частоты дискретизации с помощью различных способов...

Зависимость коэффициентов фильтра от частоты дискретизации
Здравствуйте. Допустим есть ряд чисел А1, А2, А3 среднее будет равно А1/3+А2/3+А3/3, то есть...

Быстрое преобразование Фурье (как быть если частота дискретизации 1/3600 )
Всем доброго времени суток! Опишу в кратце поставленную задачу: есть БД(база данных).в нее...

Ffmpeg. Изменения частоты дискретизации (resample) у wav файла с 44 100 Гц до 8000 Гц
Кто то сталкивался с задачей изменения частоты дискретизации при помощи Fffmpeg через wrapper...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.