-
Здравствуйте ВСЕ В конфе, да и не только здесь, есть много ссылок на статью А. Галилова (A.Galilov) на предмет аудеорекордера на API. Классная статья- все разжевано и готовый пример. Скачал, скомпилил (D7, w2K) - все ОК. На другом компе (wXP) тоже работает. А на моем - нет !? (wXP, sound Card - psc703 (AGP); драйвера качал с ОФФ сайта для wXP). Все программы работают нормально; даже все игрушки. Когда запускаю программу на своем компе - она делает вид, что работает, но на самом деле процедура, получающая управление по заполнению приемного буфера получает это самое управление практически сразу по предоставлению очередного буфера; т.е. недожидаясь его заполнения. (Это я так думаю). Если есть идеи по поводу преодоления этих 'препятствий' - буду очень благодарен. Боб. P.S. Рекордер от DEAudio(C) на этом компе - без проблем, но уж очень хочется тот, который от A.Galilov. -(
-
> sound Card - psc703 (AGP)
Ты ничего не перепутал?
-
> Dimaxx © Конечно перепутал %( Конечно PCI - извиняюсь. (Просто у меня еще и видяшкой проблемы - вот спорол)
-
> Рекордер от DEAudio(C) на этом компе - без проблем
Значит у тебя ошибка в пргограмме.
> уж очень хочется тот, который от A.Galilov
Я не знаю, кто такой Галилов и чем уж так крут его пример, но внутри DEAudio те же самые обращения к тем же самым API-функциям, и, поскольку DEAudio заведомо работает, следует очевидно сверить два кода - код от Галилова и код из DEAudio на предмет различий.
-
>Сергей М. © Наверное так и придется сделать. Хотя непонятно: одна и таже откомпиленная прога на одном компе работает, а на другом - нет. Может всетаки дело в карточке (или дрв. к ней)? А у Галилова ничего крутого нет. Наоборот - все очень просто. Кстати DEAudio - классная вещь, но по событию заполнения буфера чтения (от микрофона) этот буфер сначала отдается всем "пользователям" (Осцилограф, кодер/декодер, поток записи на диск) и только потом в мою процедуру, когда с данными уже ничего не сделать (например, отфильтровать или тормознуть запись, типа как в диктофоне). А может я что-то не так понимаю... Спасибо. Буду дерзать дальше %)
-
> может я что-то не так понимаю
Конечно не понимаешь)
> с данными уже ничего не сделать
Как это нельзя ? А нафига, спрашивается, тебе эти данные переданы ?
-
> Сергей М. © (15.11.07 14:23) [5] Вот и я думаю : нафига? (если сначала передаются в конверторы, а потом - мне ? но это на самом деле ТАК. Ну я даже нашел это место в компонентах - ну не хочется мне их "ломать" - ну правда хорошая вещь. А если я не прав - ну ткни пальцем дурака... -(
-
Я извиняюсь : очень плохая связь. Сижу на "времени" +2 часа разница во времени (у нас сейчас 22:20) -)))
-
> Сергей М. © Прошу прощения : кончается время. Завтра, если у Вас еще не пропадет интерес, приведу кусочек кода из DEAudio. Спасибо.
-
> Сергей М. © Это вызывается по заполнении буфера.
procedure TdeCustomAudioIn.DoAudioRecorde(AudioData:Pointer; AudioDataSize: Integer); begin FLastAudioRecorded := AudioData; FLastAudioSize := AudioDataSize; FAudioSubjectImplementor.NotifyObservers(IdeAudioSubject(Self), AudioData, AudioDataSize);
// это вызов моей процедуры обработки, а "поезд уже ушел" -(
if Assigned(FOnAudioRecorded) then OnAudioRecorded(Self, AudioData, AudioDataSize); end;
Можно, конечно, переставить вызов выше, но это уже как бы лопатой... И еще непонятно : а как пропустить запись этого буфера в файл ?
-
> сначала передаются в конверторы
В какие такие "конверторы" ?
> "поезд уже ушел"
Куда ушел ?)
Ты получил очередную порцию AudioData размером AudioDataSize, делай с ней что хочешь ! Чего ж тебе еще надобно, старче ?)
> как пропустить запись этого буфера в файл
В какой еще файл ? В приведенном фрагменте кода нет ни намека на какие-то файловые операции.
-
> Сергей М. © Я может быть изначально не совсем четко изложил задачу : мне нужно получить звук (или другой сигнал) с микрофонного входа звуковой карты, обработать его (например, усилить или сгладить или пропустить через полосовой фильтр и т.п.), принять решение о необходимости записать этот буфер в файл или пропустить. Т.е. речь идет не просто о Компонентах, а о конкретном их применении - ввод сигнала, обработка в квази-реальном времени и запись в файл в каком-либо формате. Пусть это будет "диктофон". Сделать это я пытаюсь на основе Demo "Recorder".
В привенном ранее фрагменте буфер AudioData "отдается" осциллографу, конвертору (напр. в МР3); сконвертированный блок отдается на запись в файл. Последней получает буфер моя процедура. Ну обработал я его, а исходный уже превратился в МР3 и записался на диск. Вот это и есть "поед ушел". Спасибо за отклик.
-
> мне нужно > получить звук (или другой сигнал) с микрофонного входа звуковой > карты, > обработать его (например, усилить или сгладить или пропустить > через > полосовой фильтр и т.п.), принять решение о необходимости > записать этот > буфер в файл или пропустить
На здоровье, ничто этому не мешает.
> В привенном ранее фрагменте буфер AudioData "отдается" осциллографу, > > конвертору (напр. в МР3); сконвертированный блок отдается > на > запись в файл
В приведенном фрагменте нет никаких "осциллографов", "конвертеров", "записывалок на диск".
-
> или пропустить
Куда пропустить-то ?
-
Куда пропустить-то ? Ну не записывать в файл, если сигнал слабый. Пардон - Сергей : я что-то невнятно об'ясняюсь ? Ну если не хочешь - ну не надо ерничать. У меня и без того проблем хватает. А если вспомнить с чего ветка начиналась - так вообще... Спасибо. Вопрос закрываю. Да, еще одна просьба : если встретите где-нибудь в какой-нибудь конфе вопрос от имени "Боб" - не отвечайте ничего... Спасибо за внимание.
-
> Ну не записывать в файл, если сигнал слабый
Ну и не записывай !
Тебя кто-то заставляет это делать ?)
> я что-то невнятно об'ясняюсь ?
Если ты кроме компонента аудиозахвата понахреначил на форму еще какие-то компоненты от деАудио, то так и скажи).. и не надо "ерничать", ибо эти компоненты тебе нафих не нужны для решения задачи.
А деАудио я рекомендовал тебе для изучения ЛОГИКИ, а не для слепого передира демо-примеров.
Засим откланиваюсь.
|