Конференция "Media" » SoundRecorder A.Galilov
 
  • Боб (14.11.07 19:58) [0]
    Здравствуйте ВСЕ
    В конфе, да и не только здесь, есть много ссылок на статью
    А. Галилова (A.Galilov) на предмет аудеорекордера на API.
    Классная статья- все разжевано и готовый пример.
    Скачал, скомпилил (D7, w2K) - все ОК. На другом компе
    (wXP) тоже работает. А на моем - нет !? (wXP, sound Card - psc703 (AGP); драйвера качал с ОФФ сайта для wXP). Все программы работают нормально; даже все игрушки. Когда запускаю программу на своем компе - она делает вид, что работает, но на самом деле процедура, получающая управление по заполнению приемного буфера получает это самое управление практически сразу по предоставлению очередного буфера; т.е. недожидаясь его заполнения. (Это я так думаю).  Если есть идеи по поводу преодоления этих
    'препятствий' - буду очень благодарен.
    Боб.
    P.S.
    Рекордер от DEAudio(C) на этом компе - без проблем, но уж очень хочется тот, который от A.Galilov. -(
  • Dimaxx © (15.11.07 01:55) [1]

    > sound Card - psc703 (AGP)

    Ты ничего не перепутал?
  • Bob (15.11.07 05:37) [2]
    > Dimaxx ©  
    Конечно перепутал %(
    Конечно PCI - извиняюсь. (Просто у меня еще и видяшкой проблемы - вот спорол)
  • Сергей М. © (15.11.07 13:30) [3]

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


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


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


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

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


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


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


    Как это нельзя ? А нафига, спрашивается, тебе эти данные переданы ?
  • Боб (15.11.07 20:14) [6]
    > Сергей М. ©   (15.11.07 14:23) [5]
    Вот и я думаю : нафига? (если сначала передаются в конверторы,
    а потом - мне ?  но это на самом деле ТАК. Ну я даже нашел это
    место в компонентах - ну не хочется мне их "ломать" - ну правда
    хорошая вещь. А если я не прав - ну ткни пальцем дурака...
    -(
  • Боб (15.11.07 20:19) [7]
    Я извиняюсь : очень плохая связь. Сижу на "времени"
    +2 часа разница во времени (у нас сейчас 22:20)
    -)))
  • Боб (15.11.07 20:36) [8]
    > Сергей М. ©  
    Прошу прощения : кончается время. Завтра, если у Вас еще не пропадет
    интерес, приведу кусочек кода из DEAudio.
    Спасибо.
  • Bob (16.11.07 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;

    Можно, конечно, переставить вызов выше, но это уже как бы лопатой...
    И еще непонятно : а как пропустить запись этого буфера в файл ?
  • Сергей М. © (16.11.07 09:28) [10]

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


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


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


    Куда ушел ?)

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


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


    В какой еще файл ?
    В приведенном фрагменте кода нет ни намека на какие-то файловые операции.
  • Bob (16.11.07 13:19) [11]
    > Сергей М. ©  
    Я может быть изначально не совсем четко изложил задачу : мне нужно
    получить звук (или другой сигнал) с микрофонного входа звуковой карты,
    обработать его (например, усилить или сгладить или пропустить через
    полосовой фильтр и т.п.), принять решение о необходимости записать этот
    буфер в файл или пропустить. Т.е. речь идет не просто о Компонентах, а о
    конкретном их применении - ввод сигнала, обработка в квази-реальном времени и запись в файл в каком-либо формате. Пусть это будет "диктофон".
    Сделать это я пытаюсь на основе Demo "Recorder".

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

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


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


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


    В приведенном фрагменте нет никаких "осциллографов", "конвертеров", "записывалок на диск".
  • Сергей М. © (16.11.07 13:50) [13]

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


    Куда пропустить-то ?
  • Боб (16.11.07 21:28) [14]
    Куда пропустить-то ?
    Ну не записывать в файл, если сигнал слабый.
    Пардон - Сергей : я что-то невнятно об'ясняюсь ?
    Ну если не хочешь - ну не надо ерничать. У меня и без того проблем хватает.
    А если вспомнить с чего ветка начиналась - так вообще...
    Спасибо. Вопрос закрываю.
    Да, еще одна просьба : если встретите где-нибудь в какой-нибудь
    конфе вопрос от имени "Боб" -  не отвечайте ничего...
    Спасибо за внимание.
  • Сергей С. (16.11.07 21:35) [15]

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


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

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


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


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

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

    Засим откланиваюсь.
 
Конференция "Media" » SoundRecorder A.Galilov
Есть новые Нет новых   [134431   +10][b:0][p:0]