Форум программистов, компьютерный форум CyberForum.ru

Direct Sound - уровень сигнала на входе - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ использование SetClassLong со значением GCL_WNDPROC http://www.cyberforum.ru/cpp-beginners/thread497056.html
проблема с переназначением или взятием адреса оконной процедуры контрола при использовании манифеста для стиля XP Без манифеста - все как надо. Наверное, связано это с переездом контролов в другую DLL. не подскажете, что делать?
C++ Как получит заголовок окна? Хотел спросить: вот висит окно, как получить его заголовок, если допустим я знаю указатель на это окно? И еще, допустим, открыта папка. Возможно ли вообще програмно определить по окну адрес этой папки? http://www.cyberforum.ru/cpp-beginners/thread497021.html
C++ Помогите с GDI+ в Borland C++ 6
Когда в Borland C++ 6 только объявляю GDI+, компилятор выдаёт кучу ошибок в самих gdiplus header`ах. Помогите! Пожайлуста!
C++ Как включить поддержку форматов кодировок?
Уважаемые программисты подскажите пожалуйста Как включить поддержку форматов кодировок: Ниже следующий понятно как включать: Все документы Word (*.doc, *.dot, *.htm, *.html, *.url, *.rtf) Разницу следующих как включить?: Текстовые файлы (*.txt) Кодированные текстовые файлы (*.txt) Windows Write (*.wri) Разницу следующего как включить?:
C++ Использование Attach(HWND) и Detach() http://www.cyberforum.ru/cpp-beginners/thread496887.html
Привет всем! Что делают функции Attach(HWND) и Detach() объявленные в классе CWnd. В MSDN для Attach написано, что она присоединяет Windows окно к CWnd объекту, а в Detach, наоборот отоединяет дескриптор от CWnd объекта. Пишу: m_hWnd=m_static->Detach(); m_static->Attach(m_hWnd);Поидее, первая функция отсоединяет дискриптор, а потом обратно присоединяет этот дескриптор к объекту. Но при...
Visual C++ Как сделать прозрачный контекст устройства?? Рисую кругpDC->Ellipse(...);но никак не могу сделать этот круг прозрачным...Может какие-то флаги поставить надо? И с помощью ккой ф-ии?? подробнее

Показать сообщение отдельно
John Paramol
Сообщений: n/a
16.07.2011, 07:21     Direct Sound - уровень сигнала на входе
> hr = g_pWaveFile->Write( dwCaptureLength,
> (BYTE*)pbCaptureData,
> &dwDataWrote )

Если бы у меня не было того же исходника, что и у Вас, я бы долго гадал,
что же это Вы мне тут показали

> т.е. значение, например, младшего слова и будет уровнем сигнала?

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

> а отрицательная часть - это, как я догадываюсь, нижняя полуволна синусоиды?
> тогда напрашивается другой вопрос - чтобы из этого получить уровень сигнала,
> надо считать среднее за период?

Какой период Вы имеете в виду - 2*Pi, или период времени, через который
необходимо получать рассчитанный уровень сигнала?
Я имел в виду второе.
(среднее синусоиды за период 2*Pi = 0
Можно конечно попробовать выдавать не средний уровень за какое-то время, а текущий,
но при частоте дискретизации даже 8000 герц он будет меняться 8000 раз в секунду.

Длину буфера следует брать небольшой еще и по той причине, что мы берем данные, уже
поступившие на вход, значит есть некоторое опоздание
(в половину длины буфера или более).

некоторые особо въедливые могут со мной поспорить;
типа если проигрывается тишина, но смещение постоянной составляющей (DC offset)
имеет место быть, ухо не будет слышать сигнал, а наш рассчитанный уровень сигнала
будет иметь некоторое значение. Но то же самое показывает, например, WaveLab
(попробуйте и убедитесь сами). Так что мы считаем правильно.
Вот и получается, что мы можем не услышать даже самый громкий звук,
на который способна наша звуковая карта

PS. последний абзац не берите в голову
 
Текущее время: 20:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru