2009-07-07 7 views
2

У меня есть программа, которая загружает данные PCM с веб-сервера, который позднее использует для воспроизведения через стандартный PCM-плеер. Я хочу, чтобы пользователи могли изменять высоту данных PCM во время воспроизведения.Изменение размера файла PCM в C#

Кто-нибудь знает, как это сделать?

ответ

1

Я не знаю ни одной цифровой библиотеки обработки сигнала для C#, но это, кажется, полный образец источника для поля смещения в .net .:
http://sites.google.com/site/mikescoderama/pitch-shifting

+0

Кто-нибудь использовал этот алгоритм с успехом ?? Я не могу заставить его работать – John

2

Самое простое решение для воспроизведения звука при более высокой частоте дискретизации, чем была записана - воспроизведение файла с частотой 22 кГц на частоте 44 кГц удвоит высоту тона. Вы можете добиться того же, просто выбросив некоторые образцы из звука (плохого качества) или передискретизировав звук (хорошее качество, если используется хороший алгоритм, такой как интерполяция sinc).

Но есть зависимость - изменение высоты тона при воспроизведении с разной частотой дискретизации не только изменяет высоту тона, но и длину звука. Можно изменять продолжительность и шаг независимо, но это не так просто и требует значительного количества сингловой обработки для достижения хорошего качества. Обычно это делается в частотной области с использованием быстрых преобразований Фурье.