Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
7-88271
Evgeniy_k
2003-02-02 16:41
2003.03.27
Событие


1-87944
mod
2003-03-17 14:43
2003.03.27
Создание Dll в BPascal


1-88053
zom
2003-03-14 17:38
2003.03.27
Сохранение и редактирование файлов QuickReport (*.QRT)


3-87782
Roki
2003-03-11 14:41
2003.03.27
почему обновления только в одной строке?


3-87814
Exception
2003-03-09 18:15
2003.03.27
ftMemo и Rich Text Format с RichEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский