Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.07.12;
Скачать: CL | DM;

Вниз

SoundRecorder A.Galilov   Найти похожие ветки 

 
Боб   (2007-11-14 19:58) [0]

Здравствуйте ВСЕ
В конфе, да и не только здесь, есть много ссылок на статью
А. Галилова (A.Galilov) на предмет аудеорекордера на API.
Классная статья- все разжевано и готовый пример.
Скачал, скомпилил (D7, w2K) - все ОК. На другом компе
(wXP) тоже работает. А на моем - нет !? (wXP, sound Card - psc703 (AGP); драйвера качал с ОФФ сайта для wXP). Все программы работают нормально; даже все игрушки. Когда запускаю программу на своем компе - она делает вид, что работает, но на самом деле процедура, получающая управление по заполнению приемного буфера получает это самое управление практически сразу по предоставлению очередного буфера; т.е. недожидаясь его заполнения. (Это я так думаю).  Если есть идеи по поводу преодоления этих
"препятствий" - буду очень благодарен.
Боб.
P.S.
Рекордер от DEAudio(C) на этом компе - без проблем, но уж очень хочется тот, который от A.Galilov. -(


 
Dimaxx ©   (2007-11-15 01:55) [1]


> sound Card - psc703 (AGP)

Ты ничего не перепутал?


 
Bob   (2007-11-15 05:37) [2]

> Dimaxx ©  
Конечно перепутал %(
Конечно PCI - извиняюсь. (Просто у меня еще и видяшкой проблемы - вот спорол)


 
Сергей М. ©   (2007-11-15 13:30) [3]


> Рекордер от DEAudio(C) на этом компе - без проблем


Значит у тебя ошибка в пргограмме.


> уж очень хочется тот, который от A.Galilov


Я не знаю, кто такой Галилов и чем уж так крут его пример, но внутри DEAudio те же самые обращения к тем же самым API-функциям, и, поскольку DEAudio заведомо работает, следует очевидно сверить два кода - код от Галилова и код из DEAudio на предмет различий.


 
Bob   (2007-11-15 13:58) [4]

>Сергей М. ©  
Наверное так и придется сделать. Хотя непонятно: одна и таже
откомпиленная прога на одном компе работает, а на другом - нет.
Может всетаки дело в карточке (или дрв. к ней)?
А у Галилова ничего крутого нет. Наоборот - все очень просто.
Кстати DEAudio - классная вещь, но по событию заполнения буфера
чтения (от микрофона) этот буфер сначала отдается всем "пользователям"
(Осцилограф, кодер/декодер, поток записи на диск) и только потом
в мою процедуру, когда с данными уже ничего не сделать (например,
отфильтровать или тормознуть запись, типа как в диктофоне).
А может я что-то не так понимаю...
Спасибо. Буду дерзать дальше %)


 
Сергей М. ©   (2007-11-15 14:23) [5]


> может я что-то не так понимаю


Конечно не понимаешь)


> с данными уже ничего не сделать


Как это нельзя ? А нафига, спрашивается, тебе эти данные переданы ?


 
Боб   (2007-11-15 20:14) [6]

> Сергей М. ©   (15.11.07 14:23) [5]
Вот и я думаю : нафига? (если сначала передаются в конверторы,
а потом - мне ?  но это на самом деле ТАК. Ну я даже нашел это
место в компонентах - ну не хочется мне их "ломать" - ну правда
хорошая вещь. А если я не прав - ну ткни пальцем дурака...
-(


 
Боб   (2007-11-15 20:19) [7]

Я извиняюсь : очень плохая связь. Сижу на "времени"
+2 часа разница во времени (у нас сейчас 22:20)
-)))


 
Боб   (2007-11-15 20:36) [8]

> Сергей М. ©  
Прошу прощения : кончается время. Завтра, если у Вас еще не пропадет
интерес, приведу кусочек кода из DEAudio.
Спасибо.


 
Bob   (2007-11-16 06:46) [9]

> Сергей М. ©
Это вызывается по заполнении буфера.

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;

Можно, конечно, переставить вызов выше, но это уже как бы лопатой...
И еще непонятно : а как пропустить запись этого буфера в файл ?


 
Сергей М. ©   (2007-11-16 09:28) [10]


> сначала передаются в конверторы


В какие такие "конверторы" ?


> "поезд уже ушел"


Куда ушел ?)

Ты получил очередную порцию AudioData размером AudioDataSize, делай с ней что хочешь ! Чего ж тебе еще надобно, старче ?)


> как пропустить запись этого буфера в файл


В какой еще файл ?
В приведенном фрагменте кода нет ни намека на какие-то файловые операции.


 
Bob   (2007-11-16 13:19) [11]

> Сергей М. ©  
Я может быть изначально не совсем четко изложил задачу : мне нужно
получить звук (или другой сигнал) с микрофонного входа звуковой карты,
обработать его (например, усилить или сгладить или пропустить через
полосовой фильтр и т.п.), принять решение о необходимости записать этот
буфер в файл или пропустить. Т.е. речь идет не просто о Компонентах, а о
конкретном их применении - ввод сигнала, обработка в квази-реальном времени и запись в файл в каком-либо формате. Пусть это будет "диктофон".
Сделать это я пытаюсь на основе Demo "Recorder".

В привенном ранее фрагменте буфер AudioData "отдается" осциллографу,
конвертору (напр. в МР3); сконвертированный блок отдается на
запись в файл. Последней получает буфер моя процедура.
Ну обработал я его, а исходный уже превратился в МР3 и записался на диск.
Вот это и есть "поед ушел".
Спасибо за отклик.


 
Сергей М. ©   (2007-11-16 13:49) [12]


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


На здоровье, ничто этому не мешает.


> В привенном ранее фрагменте буфер AudioData "отдается" осциллографу,
>
> конвертору (напр. в МР3); сконвертированный блок отдается
> на
> запись в файл


В приведенном фрагменте нет никаких "осциллографов", "конвертеров", "записывалок на диск".


 
Сергей М. ©   (2007-11-16 13:50) [13]


> или пропустить


Куда пропустить-то ?


 
Боб   (2007-11-16 21:28) [14]

Куда пропустить-то ?
Ну не записывать в файл, если сигнал слабый.
Пардон - Сергей : я что-то невнятно об"ясняюсь ?
Ну если не хочешь - ну не надо ерничать. У меня и без того проблем хватает.
А если вспомнить с чего ветка начиналась - так вообще...
Спасибо. Вопрос закрываю.
Да, еще одна просьба : если встретите где-нибудь в какой-нибудь
конфе вопрос от имени "Боб" -  не отвечайте ничего...
Спасибо за внимание.


 
Сергей С.   (2007-11-16 21:35) [15]


> Ну не записывать в файл, если сигнал слабый


Ну и не записывай !

Тебя кто-то заставляет это делать ?)


> я что-то невнятно об"ясняюсь ?


Если ты кроме компонента аудиозахвата понахреначил на форму еще какие-то компоненты от деАудио, то так и скажи).. и не надо "ерничать", ибо эти компоненты тебе нафих не нужны для решения задачи.

А деАудио я рекомендовал тебе для изучения ЛОГИКИ, а не для слепого передира демо-примеров.

Засим откланиваюсь.



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

Текущий архив: 2009.07.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.01 c
2-1242854888
Xar
2009-05-21 01:28
2009.07.12
обращение к динамическому полю в БД


15-1241861566
xayam
2009-05-09 13:32
2009.07.12
ExtJS и форматированный вывод


2-1242884041
Int23
2009-05-21 09:34
2009.07.12
Не работает Cocreateinstance


2-1242802069
roadster
2009-05-20 10:47
2009.07.12
Зашитые в код строковые константы- как защитить их от просмотра?


3-1223562042
KirillRepin
2008-10-09 18:20
2009.07.12
Список серверов и баз данных