Форум: "Media";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];
ВнизКак получить последовательность байт звукового канала? Найти похожие ветки
← →
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 вся ветка
Форум: "Media";
Текущий архив: 2003.03.27;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c