2009-11-03 3 views
2

Как бы я мог реализовать полосовой фильтр в C#? Я использую пользовательский MediaStreamSource в Silverlight и использую синтез добавок для создания звука. Мой аудиопоток представляет собой непрерывный поток int16 шорты:Как реализовать полосовой фильтр в C#/Silverlight

//over-simplified example: 
short sample = oscillator.GetNextSample(); 
memoryStream.WriteByte((byte)(sample & 0xFF)); 
memoryStream.WriteByte((byte)(sample >> 8)); 

... где «образец» является функцией синуса вычисления (или какой-либо другой сложной комбинацией волновых форм) в пределах от short.MinValue до short.MaxValue ,

Я понятия не имею, с чего начать с полосового фильтра. Как я могу его реализовать?

ответ

1

Ах, это то, что я ищу:

Low pass filter software?

Я еще не пробовал, но это пример исходного расчета, который я надеялся найти. Похоже, мне нужно будет пересмотреть этот код для работы с Int16, а не с удвоениями, и похоже, что впереди меня много грязной работы для определения конкретных констант/коэффициентов, которые мне понадобятся, но это должно получиться я начал в правильном направлении.

0

См. Ответы this question, в частности вы можете найти Jacob's answer Полезно.

+0

Я не уверен, насколько эти ответы будут переведены на мое приложение Silverlight, поскольку они, похоже, направлены на управляемые DirectX или неуправляемые библиотеки - обе из которых недоступны в моем контексте. Я надеюсь найти более «сырые» примеры вычислений. Эти ответы могут помочь, но я посмотрю. – kindohm

0

Puhh это математика, это не правда ;-) Так что я думаю, его System.Math и читать бесплатно book

+0

Рен - не могли бы вы попытаться поставить этот файл на «лучший» бесплатный сайт для загрузки, например, http://drop.io? ссылка uploaded.to nagging меня с временем ожидания, и файл никогда не загружается. – kindohm

+0

жаль, что это не выгрузка из меня, с этого сайта http://freebooksource.com/blogroll/engineering-technology/signal-analysis-wavelets-filter-banks-time-frequency-transforms-and-applications/ –