Вниз
Скачать: CL | DM;

Как получить последовательность байт звукового канала?   Найти похожие ветки 

 
Arthur1   (2002-12-16 15:20) [0]

Как получить последовательность 16-битных значений выходного звукового канала Sound card в формате РСМ?


 
Valentain ©   (2002-12-18 10:09) [1]

... добавлю от себя(перефразирую): как вывести непрерывный (повторяющийся в промежутке времени, без перерывов) сигнал на линейный выход карты.
На примере:
имеется, допустим, Uout:= (14501, 324, -324, -14501, 0). На выходе SB необходимо получить: (14501, 324, -324, -14501, 0, 14501, 324, -324, -14501, 0, 14501, 324, -324, ...).
С уважением...


 
Arthur1   (2002-12-18 11:41) [2]

Нет, мне НЕ вывести сигнал на линейный выход надо. Мне надо получить то, что выводят другие приложения для того, что бы можна было нарисовать кривую(амплитудную, не спектральную) за выбранный мной промежуток времени в формате РСМ с указанной (или стандартной) дискретизацией. Проще говоря нарисовать во времени кривую индикатора уровня выходного сигнала звуковой платы, если можна, то отдельно для Wav, Midi, CD и общего каналов.
Я со звуком не работал раньше, поэтому буду очень благодарен за примерчик или хотябы указание на нужную процедуру или комманду.


 
denkop ©   (2002-12-19 14:07) [3]

Если это нужно делать в реальном времени, то есть два варианта(а может и больше):
1) Записывать с выбранного выхода SB поток маленькими кусками (~0.2 сек) и анализировать каждый считанный кусочек в отдельном потоке, чтобы не останавливать основной программы. Но при этом будет задержка в отрисовке, равная величине маленького кусочка;
2) Использовать DirectSound. Читаешь первичный буфер SB и анализируешь. Работает без задержки, но не все воспроизводящие программы позволяют использовать первичный буфер для чтения, когда он занят. Таким способом можно отрисовывать кривую даже когда звук ещё не пошёл в колонки, а у тебя уже есть его кривая. Этот способ довольно геморойный.
Удачи!


 
Arthur1   (2002-12-19 17:14) [4]

Меня собственно интересует, как прочитать выходящий поток (или послебовательность байт) из SB. Т.е. конкретно команда и её параметры.


 
denkop ©   (2002-12-19 18:05) [5]

MMRESULT waveInOpen(LPHWAVEIN phwi, UINT uDeviceID, LPWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwCallbackInstance, DWORD fdwOpen);
Opens the given waveform-audio input device for recording.

Набери в Win32 SDK WaveIn и получишь гору функций для записи звука с выхода SB. На крайний случай юзай TMediaPlayer.


 
Arthur1   (2002-12-19 19:09) [6]

Если я не ошибаюсь, то таким образом я смогу получить сигнал с Wav-входа ("Line-in" или "Mic") звуковой платы, а мне нужно получить то, что выводят другие приложения, запущенные юзером, к примеру WinAmp или тот-же WindowsMediaPlayer, выводящие сигнал на "Line-Out".


 
denkop ©   (2002-12-19 23:04) [7]

У TMediaPlayer есть свойство DeviceTape, в котором и устанавливается выход с которого нужно записывать. Что каксается WaveIn, точно не помню, но там тоже есть параметр с помощью которого выбирается уство записи. Если я ничего не напутал, waveInGetDevCaps возвращает все устройства с которых можно писать, а в waveInOpen в качестве параметра uDeviceID передаётся номер устройства. Для общего канала uDeviceID=WAVE_MAPPER. В общем повторюсь: Win32 SDK Search waveIn.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
1-87885
Manulo
2003-03-13 17:00
2003.03.27
Эмуляция нажатия клавиш


3-87849
Rule
2003-03-10 21:17
2003.03.27
Необходимо поставить Фаербёрд сервер под виндой.


7-88264
Adolf
2003-02-01 17:53
2003.03.27
Restart


1-88009
---cev---
2003-03-14 10:40
2003.03.27
Поиск строки в текстовом файле


3-87802
stoper
2003-03-07 19:15
2003.03.27
Не могу внести отрицательное значение.




   Наверх